openSUSE Commits
Threads by month
- ----- 2024 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
July 2019
- 2 participants
- 2045 discussions
Hello community,
here is the log from the commit of package kronometer for openSUSE:Factory checked in at 2019-07-29 17:31:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kronometer (Old)
and /work/SRC/openSUSE:Factory/.kronometer.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kronometer"
Mon Jul 29 17:31:17 2019 rev:4 rq:719467 version:2.2.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/kronometer/kronometer.changes 2019-05-22 11:17:06.810485534 +0200
+++ /work/SRC/openSUSE:Factory/.kronometer.new.4126/kronometer.changes 2019-07-29 17:31:17.734179217 +0200
@@ -1,0 +2,8 @@
+Sun Jul 28 21:55:20 UTC 2019 - wbauer(a)tmo.at
+
+- Update to 2.2.3:
+ * Fixed bug #349861 (thanks to Gaurav Shah):
+ https://bugs.kde.org/show_bug.cgi?id=349861 (kde#349861)
+ * Updated translations
+
+-------------------------------------------------------------------
Old:
----
kronometer-2.2.2.tar.xz
New:
----
kronometer-2.2.3.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kronometer.spec ++++++
--- /var/tmp/diff_new_pack.9yOlvz/_old 2019-07-29 17:31:18.306178525 +0200
+++ /var/tmp/diff_new_pack.9yOlvz/_new 2019-07-29 17:31:18.310178520 +0200
@@ -17,7 +17,7 @@
Name: kronometer
-Version: 2.2.2
+Version: 2.2.3
Release: 0
Summary: A stopwatch application by KDE
License: GPL-2.0-or-later
++++++ kronometer-2.2.2.tar.xz -> kronometer-2.2.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/CHANGELOG new/kronometer-2.2.3/CHANGELOG
--- old/kronometer-2.2.2/CHANGELOG 2019-05-19 12:48:43.000000000 +0200
+++ new/kronometer-2.2.3/CHANGELOG 2019-07-28 12:50:58.000000000 +0200
@@ -1,3 +1,7 @@
+v2.2.3
+* Fixed bug #349861 (thanks to Gaurav Shah): https://bugs.kde.org/show_bug.cgi?id=349861
+* Updated translations.
+
v2.2.2
* Updated translations.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/CMakeLists.txt new/kronometer-2.2.3/CMakeLists.txt
--- old/kronometer-2.2.2/CMakeLists.txt 2019-05-19 12:49:16.000000000 +0200
+++ new/kronometer-2.2.3/CMakeLists.txt 2019-07-28 12:51:27.000000000 +0200
@@ -4,7 +4,7 @@
set(QT_MIN_VERSION 5.9.0)
set(KF5_MIN_VERSION 5.26.0)
-set(PROJECT_VERSION 2.2.2)
+set(PROJECT_VERSION 2.2.3)
set(CMAKE_CXX_STANDARD 14)
set(CXX_STANDARD_REQUIRED ON)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/desktop/org.kde.kronometer.appdata.xml new/kronometer-2.2.3/desktop/org.kde.kronometer.appdata.xml
--- old/kronometer-2.2.2/desktop/org.kde.kronometer.appdata.xml 2019-05-19 12:48:43.000000000 +0200
+++ new/kronometer-2.2.3/desktop/org.kde.kronometer.appdata.xml 2019-07-28 12:50:58.000000000 +0200
@@ -90,6 +90,7 @@
<p xml:lang="pl">Kronometer jest programem stopera. Zapewnia podstawowe działania stopera (wstrzymanie/wznawianie/zerowanie/okrążenia), a także możliwość zapisywania czasów i wznawiania ich w czasie późniejszym. Kronometer jest częścią zbioru KDE Extragear, wewnątrz pod-modułu Utils.</p>
<p xml:lang="pt">O Kronometer é uma aplicação de cronómetros. Oferece as acções básicas de um cronómetro (pausar/prosseguir/limpar/voltas), assim como a capacidade de gravar os tempos num ficheiro e retomá-los mais tarde. O Kronometer faz parte da colecção Extragear do KDE, dentro do sub-módulo Utils.</p>
<p xml:lang="pt-BR">Kronometer é um aplicativo de cronômetro. Oferece as ações básicas de um cronômetro (pausar/continuar/reiniciar/voltas), assim como a capacidade de salvar os tempos e retomá-los mais tarde. O Kronometer é integrante da coleção Extragear do KDE, dentro do sub-módulo Utils.</p>
+ <p xml:lang="ru">Kronometer — это программный секундомер. В нём есть обычные функции (приостановка, продолжение, сброс, запоминание времени круга), а также возможность сохранить время и продолжить его измерение в будущем. Kronometer входит в группу приложений «Utils» («Утилиты») раздела приложений KDE «Extragear».</p>
<p xml:lang="sk">Kronometer je aplikácia stopiek. Poskytuje základné akcie stopiek (pauza/pokračovanie/reset/kolá), ako aj schopnosť ukladať časy a neskôr v nich pokračovať. Kronometer je súčasťou kolekcie KDE Extragear, v podmodule Utils.</p>
<p xml:lang="sl">Kronometer je časomer. Ima osnovne zmožnosti časomera (premor/nadaljuj/ponastavi/krogi), kot tudi zmožnost shranjevanja časov in kasnejše nadaljevanje. Kronometer je del zbirke KDE extragear-utils.</p>
<p xml:lang="sv">Kronometer är ett tidtagarurprogram. Det tillhandahåller grundfunktioner för tidtagning (paus, återstarta, nollställ, varvtid) samt möjlighet att spara tiderna och senare återstarta dem. Kronometer ingår i KDE:s Extragear-samling i undermodulen Utils.</p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/ast/kronometer.po new/kronometer-2.2.3/po/ast/kronometer.po
--- old/kronometer-2.2.2/po/ast/kronometer.po 2019-05-19 12:48:53.000000000 +0200
+++ new/kronometer-2.2.3/po/ast/kronometer.po 2019-07-28 12:51:06.000000000 +0200
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2016-02-13 23:46+0100\n"
"Last-Translator: enolp <enolp(a)softastur.org>\n"
"Language-Team: Asturian <>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/bs/kronometer.po new/kronometer-2.2.3/po/bs/kronometer.po
--- old/kronometer-2.2.2/po/bs/kronometer.po 2019-05-19 12:48:54.000000000 +0200
+++ new/kronometer-2.2.3/po/bs/kronometer.po 2019-07-28 12:51:08.000000000 +0200
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: Kronometer\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2015-02-24 22:48+0100\n"
"Last-Translator: Samir Ribić <megaribi(a)epn.ba>\n"
"Language-Team: Bosnian <bs(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/ca/docs/kronometer/index.docbook new/kronometer-2.2.3/po/ca/docs/kronometer/index.docbook
--- old/kronometer-2.2.2/po/ca/docs/kronometer/index.docbook 2019-05-19 12:49:09.000000000 +0200
+++ new/kronometer-2.2.3/po/ca/docs/kronometer/index.docbook 2019-07-28 12:51:21.000000000 +0200
@@ -278,8 +278,7 @@
> </para>
<para
>Traductor de la documentació: &credits.Antoni.Bella;</para
->
-&underFDL; &underGPL; </chapter>
+> &underFDL; &underGPL; </chapter>
&documentation.index;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/ca/kronometer.po new/kronometer-2.2.3/po/ca/kronometer.po
--- old/kronometer-2.2.2/po/ca/kronometer.po 2019-05-19 12:48:54.000000000 +0200
+++ new/kronometer-2.2.3/po/ca/kronometer.po 2019-07-28 12:51:08.000000000 +0200
@@ -8,8 +8,8 @@
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2018-07-07 19:06+0100\n"
"Last-Translator: Josep Ma. Ferrer <txemaq(a)gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/ca(a)valencia/kronometer.po new/kronometer-2.2.3/po/ca(a)valencia/kronometer.po
--- old/kronometer-2.2.2/po/ca(a)valencia/kronometer.po 2019-05-19 12:48:54.000000000 +0200
+++ new/kronometer-2.2.3/po/ca(a)valencia/kronometer.po 2019-07-28 12:51:08.000000000 +0200
@@ -8,8 +8,8 @@
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2018-07-07 19:06+0100\n"
"Last-Translator: Josep Ma. Ferrer <txemaq(a)gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/cs/kronometer.po new/kronometer-2.2.3/po/cs/kronometer.po
--- old/kronometer-2.2.2/po/cs/kronometer.po 2019-05-19 12:48:54.000000000 +0200
+++ new/kronometer-2.2.3/po/cs/kronometer.po 2019-07-28 12:51:08.000000000 +0200
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2017-09-12 12:13+0100\n"
"Last-Translator: Vít Pelčák <vit(a)pelcak.org>\n"
"Language-Team: Czech <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/da/kronometer.po new/kronometer-2.2.3/po/da/kronometer.po
--- old/kronometer-2.2.2/po/da/kronometer.po 2019-05-19 12:48:55.000000000 +0200
+++ new/kronometer-2.2.3/po/da/kronometer.po 2019-07-28 12:51:08.000000000 +0200
@@ -4,8 +4,8 @@
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2018-03-18 00:00+0200\n"
"Last-Translator: scootergrisen\n"
"Language-Team: Danish\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/de/kronometer.po new/kronometer-2.2.3/po/de/kronometer.po
--- old/kronometer-2.2.2/po/de/kronometer.po 2019-05-19 12:48:55.000000000 +0200
+++ new/kronometer-2.2.3/po/de/kronometer.po 2019-07-28 12:51:08.000000000 +0200
@@ -3,8 +3,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2017-11-26 13:49+0100\n"
"Last-Translator: Burkhard Lück <lueck(a)hube-lueck.de>\n"
"Language-Team: German <kde-i18n-de(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/el/kronometer.po new/kronometer-2.2.3/po/el/kronometer.po
--- old/kronometer-2.2.2/po/el/kronometer.po 2019-05-19 12:48:55.000000000 +0200
+++ new/kronometer-2.2.3/po/el/kronometer.po 2019-07-28 12:51:08.000000000 +0200
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2015-10-31 20:22+0200\n"
"Last-Translator: Stelios <sstavra(a)gmail.com>\n"
"Language-Team: Greek <kde-i18n-el(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/en_GB/kronometer.po new/kronometer-2.2.3/po/en_GB/kronometer.po
--- old/kronometer-2.2.2/po/en_GB/kronometer.po 2019-05-19 12:48:56.000000000 +0200
+++ new/kronometer-2.2.3/po/en_GB/kronometer.po 2019-07-28 12:51:09.000000000 +0200
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2017-11-26 20:54+0000\n"
"Last-Translator: Steve Allewell <steve.allewell(a)gmail.com>\n"
"Language-Team: British English <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/es/kronometer.po new/kronometer-2.2.3/po/es/kronometer.po
--- old/kronometer-2.2.2/po/es/kronometer.po 2019-05-19 12:48:56.000000000 +0200
+++ new/kronometer-2.2.3/po/es/kronometer.po 2019-07-28 12:51:09.000000000 +0200
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2017-11-22 16:59+0100\n"
"Last-Translator: Sofia Priego <spriego(a)darksylvania.net>\n"
"Language-Team: Spanish <kde-l10n-es(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/et/kronometer.po new/kronometer-2.2.3/po/et/kronometer.po
--- old/kronometer-2.2.2/po/et/kronometer.po 2019-05-19 12:48:56.000000000 +0200
+++ new/kronometer-2.2.3/po/et/kronometer.po 2019-07-28 12:51:09.000000000 +0200
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2016-08-19 00:30+0300\n"
"Last-Translator: Marek Laane <qiilaq69(a)gmail.com>\n"
"Language-Team: Estonian <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/fi/kronometer.po new/kronometer-2.2.3/po/fi/kronometer.po
--- old/kronometer-2.2.2/po/fi/kronometer.po 2019-05-19 12:48:57.000000000 +0200
+++ new/kronometer-2.2.3/po/fi/kronometer.po 2019-07-28 12:51:10.000000000 +0200
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2018-02-09 12:54+0200\n"
"Last-Translator: Tommi Nieminen <translator(a)legisign.org>\n"
"Language-Team: Finnish <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/fr/kronometer.po new/kronometer-2.2.3/po/fr/kronometer.po
--- old/kronometer-2.2.2/po/fr/kronometer.po 2019-05-19 12:48:57.000000000 +0200
+++ new/kronometer-2.2.3/po/fr/kronometer.po 2019-07-28 12:51:10.000000000 +0200
@@ -7,8 +7,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2018-07-09 17:19+0800\n"
"Last-Translator: Simon Depiets <sdepiets(a)gmail.com>\n"
"Language-Team: French <kde-francophone(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/gl/kronometer.po new/kronometer-2.2.3/po/gl/kronometer.po
--- old/kronometer-2.2.2/po/gl/kronometer.po 2019-05-19 12:48:57.000000000 +0200
+++ new/kronometer-2.2.3/po/gl/kronometer.po 2019-07-28 12:51:10.000000000 +0200
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2018-04-18 20:20+0100\n"
"Last-Translator: Adrian Chaves <adrian(a)chaves.io>\n"
"Language-Team: Galician <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/hu/kronometer.po new/kronometer-2.2.3/po/hu/kronometer.po
--- old/kronometer-2.2.2/po/hu/kronometer.po 2019-05-19 12:48:59.000000000 +0200
+++ new/kronometer-2.2.3/po/hu/kronometer.po 2019-07-28 12:51:11.000000000 +0200
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2014-02-16 19:50+0100\n"
"Last-Translator: Balázs Úr <urbalazs(a)gmail.com>\n"
"Language-Team: Hungarian <kde-l10n-hu(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/it/kronometer.po new/kronometer-2.2.3/po/it/kronometer.po
--- old/kronometer-2.2.2/po/it/kronometer.po 2019-05-19 12:48:59.000000000 +0200
+++ new/kronometer-2.2.3/po/it/kronometer.po 2019-07-28 12:51:12.000000000 +0200
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2017-07-09 20:11+0100\n"
"Last-Translator: Luigi Toscano <luigi.toscano(a)tiscali.it>\n"
"Language-Team: Italian <kde-i18n-it(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/ja/kronometer.po new/kronometer-2.2.3/po/ja/kronometer.po
--- old/kronometer-2.2.2/po/ja/kronometer.po 2019-05-19 12:48:59.000000000 +0200
+++ new/kronometer-2.2.3/po/ja/kronometer.po 2019-07-28 12:51:12.000000000 +0200
@@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2014-02-22 22:23-0800\n"
"Last-Translator: Japanese KDE translation team <kde-jp(a)kde.org>\n"
"Language-Team: Japanese <kde-jp(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/ko/kronometer.po new/kronometer-2.2.3/po/ko/kronometer.po
--- old/kronometer-2.2.2/po/ko/kronometer.po 2019-05-19 12:49:00.000000000 +0200
+++ new/kronometer-2.2.3/po/ko/kronometer.po 2019-07-28 12:51:13.000000000 +0200
@@ -5,9 +5,9 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
-"PO-Revision-Date: 2017-12-03 23:49+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
+"PO-Revision-Date: 2018-08-14 23:46+0100\n"
"Last-Translator: Shinjo Park <kde(a)peremen.name>\n"
"Language-Team: Korean <kde-kr(a)kde.org>\n"
"Language: ko\n"
@@ -20,7 +20,7 @@
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
-msgstr "Shinjo Park"
+msgstr "박신조"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/lt/kronometer.po new/kronometer-2.2.3/po/lt/kronometer.po
--- old/kronometer-2.2.2/po/lt/kronometer.po 2019-05-19 12:49:00.000000000 +0200
+++ new/kronometer-2.2.3/po/lt/kronometer.po 2019-07-28 12:51:13.000000000 +0200
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: l 10n\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2014-07-02 01:51+0000\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/nds/kronometer.po new/kronometer-2.2.3/po/nds/kronometer.po
--- old/kronometer-2.2.2/po/nds/kronometer.po 2019-05-19 12:49:02.000000000 +0200
+++ new/kronometer-2.2.3/po/nds/kronometer.po 2019-07-28 12:51:14.000000000 +0200
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2014-08-15 14:38+0200\n"
"Last-Translator: Sönke Dibbern <s_dibbern(a)web.de>\n"
"Language-Team: Low Saxon <kde-i18n-nds(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/nl/docs/kronometer/index.docbook new/kronometer-2.2.3/po/nl/docs/kronometer/index.docbook
--- old/kronometer-2.2.2/po/nl/docs/kronometer/index.docbook 2019-05-19 12:49:13.000000000 +0200
+++ new/kronometer-2.2.3/po/nl/docs/kronometer/index.docbook 2019-07-28 12:51:25.000000000 +0200
@@ -276,8 +276,7 @@
>Documentatie copyright © 2014-2016 Elvis Angelaccio <email
>elvis.angelaccio(a)kde.org</email
> </para>
-&meld.fouten;&vertaling.freek;&vertaling.ronald;&nagelezen.freek;
-&underFDL; &underGPL; </chapter>
+&meld.fouten;&vertaling.freek;&vertaling.ronald;&nagelezen.freek; &underFDL; &underGPL; </chapter>
&documentation.index;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/nl/kronometer.po new/kronometer-2.2.3/po/nl/kronometer.po
--- old/kronometer-2.2.2/po/nl/kronometer.po 2019-05-19 12:49:02.000000000 +0200
+++ new/kronometer-2.2.3/po/nl/kronometer.po 2019-07-28 12:51:14.000000000 +0200
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2017-11-22 11:04+0100\n"
"Last-Translator: Freek de Kruijf <freekdekruijf(a)kde.nl>\n"
"Language-Team: Dutch <kde-i18n-nl(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/nn/kronometer.po new/kronometer-2.2.3/po/nn/kronometer.po
--- old/kronometer-2.2.2/po/nn/kronometer.po 2019-05-19 12:49:02.000000000 +0200
+++ new/kronometer-2.2.3/po/nn/kronometer.po 2019-07-28 12:51:14.000000000 +0200
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2018-05-10 22:00+0100\n"
"Last-Translator: Øystein Steffensen-Alværvik <ystein(a)posteo.net>\n"
"Language-Team: Norwegian Nynorsk <i18n-nn(a)lister.ping.uio.no>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/pl/kronometer.po new/kronometer-2.2.3/po/pl/kronometer.po
--- old/kronometer-2.2.2/po/pl/kronometer.po 2019-05-19 12:49:03.000000000 +0200
+++ new/kronometer-2.2.3/po/pl/kronometer.po 2019-07-28 12:51:15.000000000 +0200
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2017-12-16 06:09+0100\n"
"Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz(a)gmail.com>\n"
"Language-Team: Polish <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/pt/kronometer.po new/kronometer-2.2.3/po/pt/kronometer.po
--- old/kronometer-2.2.2/po/pt/kronometer.po 2019-05-19 12:49:03.000000000 +0200
+++ new/kronometer-2.2.3/po/pt/kronometer.po 2019-07-28 12:51:15.000000000 +0200
@@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2017-11-22 14:59+0000\n"
"Last-Translator: José Nuno Coelho Pires <zepires(a)gmail.com>\n"
"Language-Team: Portuguese <kde-i18n-pt(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/pt_BR/kronometer.po new/kronometer-2.2.3/po/pt_BR/kronometer.po
--- old/kronometer-2.2.2/po/pt_BR/kronometer.po 2019-05-19 12:49:03.000000000 +0200
+++ new/kronometer-2.2.3/po/pt_BR/kronometer.po 2019-07-28 12:51:15.000000000 +0200
@@ -7,8 +7,8 @@
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2018-07-13 09:36-0300\n"
"Last-Translator: Luiz Fernando Ranghetti <elchevive(a)opensuse.org>\n"
"Language-Team: Portuguese <kde-i18n-pt_BR(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/ru/kronometer.po new/kronometer-2.2.3/po/ru/kronometer.po
--- old/kronometer-2.2.2/po/ru/kronometer.po 2019-05-19 12:49:04.000000000 +0200
+++ new/kronometer-2.2.3/po/ru/kronometer.po 2019-07-28 12:51:16.000000000 +0200
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2019-05-11 03:56+0300\n"
"Last-Translator: Alexander Potashev <aspotashev(a)gmail.com>\n"
"Language-Team: Russian <kde-russian(a)lists.kde.ru>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/sk/kronometer.po new/kronometer-2.2.3/po/sk/kronometer.po
--- old/kronometer-2.2.2/po/sk/kronometer.po 2019-05-19 12:49:04.000000000 +0200
+++ new/kronometer-2.2.3/po/sk/kronometer.po 2019-07-28 12:51:16.000000000 +0200
@@ -3,8 +3,8 @@
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2017-11-24 20:40+0100\n"
"Last-Translator: Roman Paholik <wizzardsk(a)gmail.com>\n"
"Language-Team: Slovak <kde-sk(a)linux.sk>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/sl/kronometer.po new/kronometer-2.2.3/po/sl/kronometer.po
--- old/kronometer-2.2.2/po/sl/kronometer.po 2019-05-19 12:49:04.000000000 +0200
+++ new/kronometer-2.2.3/po/sl/kronometer.po 2019-07-28 12:51:16.000000000 +0200
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2016-05-14 10:57+0200\n"
"Last-Translator: Andrej Mernik <andrejm(a)ubuntu.si>\n"
"Language-Team: Slovenian <lugos-slo(a)lugos.si>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/sv/kronometer.po new/kronometer-2.2.3/po/sv/kronometer.po
--- old/kronometer-2.2.2/po/sv/kronometer.po 2019-05-19 12:49:05.000000000 +0200
+++ new/kronometer-2.2.3/po/sv/kronometer.po 2019-07-28 12:51:17.000000000 +0200
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2017-11-26 10:54+0100\n"
"Last-Translator: Stefan Asserhäll <stefan.asserhall(a)bredband.net>\n"
"Language-Team: Swedish <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/tr/kronometer.po new/kronometer-2.2.3/po/tr/kronometer.po
--- old/kronometer-2.2.2/po/tr/kronometer.po 2019-05-19 12:49:06.000000000 +0200
+++ new/kronometer-2.2.3/po/tr/kronometer.po 2019-07-28 12:51:18.000000000 +0200
@@ -6,12 +6,12 @@
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2017-08-11 09:07+0000\n"
"Last-Translator: Kaan <kaanozdincer(a)gmail.com>\n"
"Language-Team: Turkish <kde-i18n-doc(a)kde.org>\n"
-"Language: \n"
+"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/uk/docs/kronometer/man-kronometer.1.docbook new/kronometer-2.2.3/po/uk/docs/kronometer/man-kronometer.1.docbook
--- old/kronometer-2.2.2/po/uk/docs/kronometer/man-kronometer.1.docbook 2019-05-19 12:49:16.000000000 +0200
+++ new/kronometer-2.2.3/po/uk/docs/kronometer/man-kronometer.1.docbook 2019-07-28 12:51:27.000000000 +0200
@@ -92,7 +92,7 @@
>Програму KRONOMETER створено Elvis Angelaccio <elvis.angelaccio(a)kde.org>.</para>
<para
->Цю сторінку підручника створено Joao Eriberto Mota Filho <eriberto(a)debian.org> для проекту Debian (її можна використовувати і у інших проектах).</para>
+>Цю сторінку підручника створено Joao Eriberto Mota Filho <eriberto(a)debian.org> для проєкту Debian (її можна використовувати і у інших проєктах).</para>
</refsect1>
</refentry>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/uk/kronometer.po new/kronometer-2.2.3/po/uk/kronometer.po
--- old/kronometer-2.2.2/po/uk/kronometer.po 2019-05-19 12:49:07.000000000 +0200
+++ new/kronometer-2.2.3/po/uk/kronometer.po 2019-07-28 12:51:18.000000000 +0200
@@ -7,8 +7,8 @@
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2017-11-22 18:52+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor(a)ukr.net>\n"
"Language-Team: Ukrainian <kde-i18n-uk(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/zh_CN/kronometer.po new/kronometer-2.2.3/po/zh_CN/kronometer.po
--- old/kronometer-2.2.2/po/zh_CN/kronometer.po 2019-05-19 12:49:07.000000000 +0200
+++ new/kronometer-2.2.3/po/zh_CN/kronometer.po 2019-07-28 12:51:19.000000000 +0200
@@ -5,9 +5,9 @@
msgid ""
msgstr ""
"Project-Id-Version: kdeorg\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
-"PO-Revision-Date: 2019-05-05 22:36\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
+"PO-Revision-Date: 2019-07-18 15:15\n"
"Last-Translator: Guo Yunhe (guoyunhe)\n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/po/zh_TW/kronometer.po new/kronometer-2.2.3/po/zh_TW/kronometer.po
--- old/kronometer-2.2.2/po/zh_TW/kronometer.po 2019-05-19 12:49:07.000000000 +0200
+++ new/kronometer-2.2.3/po/zh_TW/kronometer.po 2019-07-28 12:51:19.000000000 +0200
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-05-20 07:37+0200\n"
"PO-Revision-Date: 2016-09-22 20:30+0800\n"
"Last-Translator: Jeff Huang <s8321414(a)gmail.com>\n"
"Language-Team: Traditional Chinese <zh-l10n(a)linux.org.tw>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.2/src/core/stopwatch.cpp new/kronometer-2.2.3/src/core/stopwatch.cpp
--- old/kronometer-2.2.2/src/core/stopwatch.cpp 2019-05-19 12:48:43.000000000 +0200
+++ new/kronometer-2.2.3/src/core/stopwatch.cpp 2019-07-28 12:50:58.000000000 +0200
@@ -27,6 +27,12 @@
void Stopwatch::setGranularity(Granularity g)
{
m_granularity = g;
+
+ // whenever granularity is changed, also apply that granularity to the timer event
+ if (m_timerId != INACTIVE_TIMER_ID) {
+ killTimer(m_timerId);
+ m_timerId = startTimer(granularity());
+ }
}
bool Stopwatch::isRunning() const
1
0
Hello community,
here is the log from the commit of package kcm_tablet for openSUSE:Factory checked in at 2019-07-29 17:31:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kcm_tablet (Old)
and /work/SRC/openSUSE:Factory/.kcm_tablet.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kcm_tablet"
Mon Jul 29 17:31:13 2019 rev:8 rq:719466 version:3.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/kcm_tablet/kcm_tablet.changes 2019-07-08 15:11:27.591370121 +0200
+++ /work/SRC/openSUSE:Factory/.kcm_tablet.new.4126/kcm_tablet.changes 2019-07-29 17:31:14.746182831 +0200
@@ -1,0 +2,15 @@
+Sun Jul 28 22:53:45 UTC 2019 - wbauer(a)tmo.at
+
+- Update to version 3.2.0
+- Main changes:
+ * screen tablet area calculation fix (by Jason Gerecke); this
+ should finally fix or at least greatly improve calibration.
+ * GCC9 support.
+ * xlib backend removed, x11-xlib dependency removed.
+- New device definitions:
+ * CTL-4100, CTL-4100WL, CTL-6100, CTL-6100WL (by Stefano Guidoni)
+- Drop patches merged upstream:
+ * 0001-Supposedly-fix-building-with-gcc9.patch
+ * 0001-Remove-x11-xlib-dependency.patch
+
+-------------------------------------------------------------------
Old:
----
0001-Remove-x11-xlib-dependency.patch
0001-Supposedly-fix-building-with-gcc9.patch
wacomtablet-3.1.1.tar.xz
New:
----
wacomtablet-3.2.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kcm_tablet.spec ++++++
--- /var/tmp/diff_new_pack.isHnCq/_old 2019-07-29 17:31:17.126179952 +0200
+++ /var/tmp/diff_new_pack.isHnCq/_new 2019-07-29 17:31:17.134179943 +0200
@@ -19,17 +19,13 @@
%define rname wacomtablet
Name: kcm_tablet
-Version: 3.1.1
+Version: 3.2.0
Release: 0
Summary: KDE Config Module for Wacom Tablets
License: GPL-2.0-or-later
Group: System/GUI/KDE
Url: https://cgit.kde.org/wacomtablet.git/
Source: https://download.kde.org/stable/%{rname}/%{version}/%{rname}-%{version}.tar…
-# PATCH-FIX-UPSTREAM
-Patch1: 0001-Supposedly-fix-building-with-gcc9.patch
-# PATCH-FIX-UPSTREAM
-Patch2: 0001-Remove-x11-xlib-dependency.patch
BuildRequires: extra-cmake-modules
BuildRequires: pkgconfig
BuildRequires: update-desktop-files
@@ -71,7 +67,7 @@
%lang_package
%prep
-%autosetup -p1 -n %{rname}-%{version}
+%setup -n %{rname}-%{version}
%build
%cmake_kf5 -d build
++++++ wacomtablet-3.1.1.tar.xz -> wacomtablet-3.2.0.tar.xz ++++++
++++ 37990 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-json5 for openSUSE:Factory checked in at 2019-07-29 17:31:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-json5 (Old)
and /work/SRC/openSUSE:Factory/.python-json5.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-json5"
Mon Jul 29 17:31:08 2019 rev:1 rq:719461 version:0.8.5
Changes:
--------
New Changes file:
--- /dev/null 2019-07-18 00:53:00.979475821 +0200
+++ /work/SRC/openSUSE:Factory/.python-json5.new.4126/python-json5.changes 2019-07-29 17:31:08.586190280 +0200
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------
+Mon Jul 29 02:39:50 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Initial version
New:
----
pyjson5-0.8.5.tar.gz
python-json5.changes
python-json5.spec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-json5.spec ++++++
#
# spec file for package python-json5
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-json5
Version: 0.8.5
Release: 0
License: Apache-2.0
Summary: A Python implementation of the JSON5 data format
Url: https://github.com/dpranke/pyjson5
Group: Development/Languages/Python
Source: https://github.com/dpranke/pyjson5/archive/v%{version}.tar.gz#/pyjson5-%{ve…
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
BuildArch: noarch
%python_subpackages
%description
A Python implementation of the JSON5 data format.
JSON5 extends the JSON data interchange format to make it
slightly more usable as a configuration language:
* JavaScript-style comments (both single and multi-line) are legal.
* Object keys may be unquoted if they are legal ECMAScript identifiers
* Objects and arrays may end with trailing commas.
* Strings can be single-quoted, and multi-line string literals are allowed.
%prep
%setup -q -n pyjson5-%{version}
%build
%python_build
%install
%python_install
%python_expand rm -rf %{buildroot}%{$python_sitelib}/tests
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
%python_exec setup.py test
%files %{python_files}
%doc README.md
%license LICENSE
%python3_only %{_bindir}/pyjson5
%{python_sitelib}/*
%changelog
1
0
Hello community,
here is the log from the commit of package python-nbval for openSUSE:Factory checked in at 2019-07-29 17:31:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-nbval (Old)
and /work/SRC/openSUSE:Factory/.python-nbval.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-nbval"
Mon Jul 29 17:31:02 2019 rev:2 rq:719459 version:0.9.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-nbval/python-nbval.changes 2019-05-22 11:07:56.170603759 +0200
+++ /work/SRC/openSUSE:Factory/.python-nbval.new.4126/python-nbval.changes 2019-07-29 17:31:07.170191993 +0200
@@ -1,0 +2,8 @@
+Mon Jul 29 02:33:24 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Update to 0.9.2
+ * Update latex tests' output
+ * Do not compare widget views
+ * Replace deprecated warning API
+
+-------------------------------------------------------------------
Old:
----
nbval-0.9.1.tar.gz
New:
----
nbval-0.9.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-nbval.spec ++++++
--- /var/tmp/diff_new_pack.3Zhu4v/_old 2019-07-29 17:31:08.034190948 +0200
+++ /var/tmp/diff_new_pack.3Zhu4v/_new 2019-07-29 17:31:08.038190943 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-nbval
-Version: 0.9.1
+Version: 0.9.2
Release: 0
Summary: A pytest plugin to validate Jupyter notebooks
License: BSD-3-Clause
++++++ nbval-0.9.1.tar.gz -> nbval-0.9.2.tar.gz ++++++
++++ 9267 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-jupyter-datatables for openSUSE:Factory checked in at 2019-07-29 17:30:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter-datatables (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter-datatables.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter-datatables"
Mon Jul 29 17:30:58 2019 rev:3 rq:719457 version:0.3.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jupyter-datatables/python-jupyter-datatables.changes 2019-06-13 23:04:12.507348467 +0200
+++ /work/SRC/openSUSE:Factory/.python-jupyter-datatables.new.4126/python-jupyter-datatables.changes 2019-07-29 17:31:01.742198557 +0200
@@ -1,0 +2,117 @@
+Sun Jul 28 20:28:42 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Update to 0.3.1
+ * Save v0.3.0 notebook in finalized state
+ * Optimize GIF
+ * Update README.md
+ * Add v0.3.0 example notebook
+ * Sample size is not deterministic
+ * Fallback to other chart kinds
+ * [0.3.0-rc0] New minor release candidate
+ * Make the datatable static after finalization
+ * Create closure around sample size output
+ * Change naming schema of the tooltip event
+ * Optimize width of the chart canvas
+ * [0.3.0-dev2] New dev release
+ * Fix incorrect sample size log
+ * Histogram data point mapping
+ * Fix histogram not returning a chart
+ * Get rid of unnecessary console logs
+ * [0.3.0-dev1] New dev release
+ * Intercative tooltips on DataTable cell hover
+ * New graph object: Scatter
+ * New graph object: Line
+ * [0.3.0-dev0] New minor release
+ * Handle datetime index dtype
+ * Implicitly format date index
+ * Refactor DataTables configuration
+ * Pass df index to the chart factory
+ * Handle dates if used as values the same way as strings
+ * Fix error message
+ * New graph object: Histogram
+ * New graph object: CategoricalBar
+ * Refactor createDataPreview method to be modular
+ * Create Bar graph object using chartjs
+ * Do not use nlargest and nsmallest for Object dtype
+ * Load chartjs library on initialization
+ * Bump version
+ * Update issue templates
+ * Account for outliers in the sample
+ * Add issue templates
+ * Bump version
+ * Handle focus on search field correctly
+ * Sort the data before plotting
+ * Update module level docstrings
+ * Fix typo in README
+ * Bump version
+ * Include setup files in the sdist
+ * Include css and js files in sdist
+ * Add banner png and svg images
+ * Add image of Jupyter toolbar w/ Finalization button
+ * Bump version
+ * Re-upload clean jupyter-datatables.png
+ * Update README with 0.2.0 features and re-run notebook
+ * Update assets and add new GIFs
+ * Add notebook demonstrating new features for 0.2.0
+ * Bump version
+ * Fix sample size computation
+ * Bump version
+ * Include JavaScript content in package data
+ * Refactor and conform to the StandardJS style
+ * Optimize the svg-container size for 6 data columns
+ * Bump version
+ * Add margins to data previews
+ * Set fixed size to svg containers
+ * Implement data preview for time series data
+ * Get rid of the leftover raw url argument in README
+ * Add scipy to requirements
+ * Bump version
+ * Calculate sample size in a more intelligent way
+ * Implement data preview for non-numeric dtypes
+ * Bump version
+ * Fix boolean mapping
+ * Map pandas dtypes to DataTables and native JS types
+ * Register boolean type detector
+ * Bar plot preview for columns with string dtype
+ * Refactor previews to work on per-column basis
+ * Bump version
+ * Update README.md
+ * Introduce basic data type inference
+ * Do not use dots in class names
+ * Update README.md
+ * Bump version
+ * Remove duplicate notebook and update POC notebook
+ * Histogram preview
+ * [WIP] Plot histogram preview instead of bar chart
+ * Bump version
+ * Move JS code to separate script file
+ * Require jupyter-require>=0.2.1 for fixed fas icons
+ * Fix typos in README installation section
+ * Use raw links to images
+ * Add MANIFEST.in
+ * Rename main.css and move it to the python package
+ * Update README.md
+ * Require jupyter-require >= 0.2.0
+ * Setuptools
+ * Add example of wide table
+ * Add jupyter-require example image
+ * Add POC notebook
+ * Update README.md
+ * Update README.md
+ * Add padding to tables to hide scrollbar in Firefox
+ * Fix non-responsive headers and styling issues
+ * Add persistent linked scroll event handler
+ * [WIP] More fine-grained control over data preview generation
+ * Fix CSS not selector
+ * Preserve scrolling ability for data preview
+ * [XL] Refactor the whole datatable generation process
+ * Fix 2-space indentation and add style for dt-buttons
+ * Add d3 to required libraries and requirejs config
+ * [WIP] Preview for each data column
+ * Customizable alignment of body and header cells
+ * Fix missing length field and prepend buttons to table
+ * [WIP] Buttons
+ * Add .gitignore
+ * Migrate from jupyter-tools
+
+-------------------------------------------------------------------
Old:
----
jupyter-datatables-0.2.2.tar.gz
New:
----
jupyter-datatables-0.3.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter-datatables.spec ++++++
--- /var/tmp/diff_new_pack.6BDF2q/_old 2019-07-29 17:31:02.598197522 +0200
+++ /var/tmp/diff_new_pack.6BDF2q/_new 2019-07-29 17:31:02.598197522 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-jupyter-datatables
-Version: 0.2.2
+Version: 0.3.1
Release: 0
License: MIT
Summary: Jupyter Notebook extension to levarage pandas DataFrames
++++++ jupyter-datatables-0.2.2.tar.gz -> jupyter-datatables-0.3.1.tar.gz ++++++
++++ 25071 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-jupyter_sphinx for openSUSE:Factory checked in at 2019-07-29 17:30:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_sphinx (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_sphinx.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_sphinx"
Mon Jul 29 17:30:54 2019 rev:5 rq:719455 version:0.2.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jupyter_sphinx/python-jupyter_sphinx.changes 2019-05-22 11:05:27.150577667 +0200
+++ /work/SRC/openSUSE:Factory/.python-jupyter_sphinx.new.4126/python-jupyter_sphinx.changes 2019-07-29 17:30:56.986200965 +0200
@@ -1,0 +2,18 @@
+Sun Jul 28 20:37:18 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Update to 0.2.1
+ * make ThebelabSourceCell into a container with original code inside
+ * include thebelab javascript and css in source distributions
+- Update to 0.2.0
+ * reorder code to remove superfluous output
+ * specify a fallback when the metadata lacks pygments lexer
+ * Simplify ThebeSourceNode constructor
+ * Replace f-strings for compatibility
+ * Restructure nodes in setup
+ * Fix hide code for non html builders
+ * fix compatibility with latex builder
+ * Add thebelab support
+ * remove widget views for non-html builds
+ * add javascript support
+
+-------------------------------------------------------------------
Old:
----
jupyter_sphinx-0.1.4.tar.gz
New:
----
jupyter_sphinx-0.2.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_sphinx.spec ++++++
--- /var/tmp/diff_new_pack.ttejDC/_old 2019-07-29 17:30:57.694200704 +0200
+++ /var/tmp/diff_new_pack.ttejDC/_new 2019-07-29 17:30:57.694200704 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-jupyter_sphinx
-Version: 0.1.4
+Version: 0.2.1
Release: 0
Summary: Jupyter Sphinx Extensions
License: BSD-3-Clause
++++++ jupyter_sphinx-0.1.4.tar.gz -> jupyter_sphinx-0.2.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_sphinx-0.1.4/LICENSE new/jupyter_sphinx-0.2.1/LICENSE
--- old/jupyter_sphinx-0.1.4/LICENSE 2018-07-17 10:53:30.000000000 +0200
+++ new/jupyter_sphinx-0.2.1/LICENSE 2019-05-24 14:39:16.000000000 +0200
@@ -1,5 +1,5 @@
Copyright (c) 2015-2016, Brian E. Granger and Jake Vanderplas
-Copyright (c) 2016, Project Jupyter Contributors
+Copyright (c) 2016-2019, Project Jupyter Contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -26,10 +26,3 @@
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-Semver File License
-===================
-
-The semver.py file is from https://github.com/podhmo/python-semver
-which is licensed under the "MIT" license. See the semver.py file for details.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_sphinx-0.1.4/MANIFEST.in new/jupyter_sphinx-0.2.1/MANIFEST.in
--- old/jupyter_sphinx-0.1.4/MANIFEST.in 2017-03-02 16:00:39.000000000 +0100
+++ new/jupyter_sphinx-0.2.1/MANIFEST.in 2019-07-16 11:11:39.000000000 +0200
@@ -1 +1,2 @@
include LICENSE
+recursive-include jupyter_sphinx/thebelab/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_sphinx-0.1.4/PKG-INFO new/jupyter_sphinx-0.2.1/PKG-INFO
--- old/jupyter_sphinx-0.1.4/PKG-INFO 2018-08-07 01:12:06.000000000 +0200
+++ new/jupyter_sphinx-0.2.1/PKG-INFO 2019-07-16 12:22:20.000000000 +0200
@@ -1,10 +1,14 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.2
Name: jupyter_sphinx
-Version: 0.1.4
+Version: 0.2.1
Summary: Jupyter Sphinx Extensions
-Home-page: UNKNOWN
+Home-page: https://github.com/jupyter/jupyter-sphinx/
Author: Jupyter Development Team
Author-email: jupyter(a)googlegroups.com
License: BSD
+Project-URL: Bug Tracker, https://github.com/jupyter/jupyter-sphinx/issues/
+Project-URL: Documentation, https://jupyter-sphinx.readthedocs.io
+Project-URL: Source Code, https://github.com/jupyter/jupyter-sphinx/
Description: UNKNOWN
Platform: UNKNOWN
+Requires-Python: >= 3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_sphinx-0.1.4/README.md new/jupyter_sphinx-0.2.1/README.md
--- old/jupyter_sphinx-0.1.4/README.md 2018-07-17 10:58:02.000000000 +0200
+++ new/jupyter_sphinx-0.2.1/README.md 2019-05-24 14:39:16.000000000 +0200
@@ -1,7 +1,8 @@
# Jupyter Sphinx Extensions
-Jupyter-sphinx enables the rendering of Jupyter interactive widgets in sphinx
-documentation.
+``jupyter-sphinx`` enables running code embedded in Sphinx documentation and
+embedding output of that code into the resulting document. It has support
+for rich output such as images and even Jupyter interactive widgets.
## Installation
@@ -17,76 +18,11 @@
conda install jupyter_sphinx -c conda-forge
```
-## Render Jupyter Interactive Widgets `jupyter_sphinx.embed_widgets`
+## Usage
-This extension provides a means of rendering Jupyter interactive widgets within
-sphinx documentation.
+You can check out the documentation on https://jupyter-sphinx.readthedocs.io for up to date
+usage information and examples.
-It is derived from the [`altair`](https://github.com/altair-viz/altair) sphinx
-extension, which is distributed under the terms of the BSD 3-Clause license.
-
-### Enabling the extension
-
-To enable this extension, add `jupyter_sphinx.embed_widgets` to your enabled
-extensions in `conf.py`.
-
-### Directives
-
-Two directives are provided: `ipywidgets-setup` and `ipywidgets-display`.
-
-`ipywidgets-setup` code is used to set-up various options
-prior to running the display code. For example:
-
-```rst
-.. ipywidgets-setup::
-
- from ipywidgets import VBox, jsdlink, IntSlider, Button
-
-.. ipywidgets-display::
-
- s1, s2 = IntSlider(max=200, value=100), IntSlider(value=40)
- b = Button(icon='legal')
- jsdlink((s1, 'value'), (s2, 'max'))
- VBox([s1, s2, b])
-```
-
-In the case of the `ipywidgets-display` code, if the *last statement* of the
-code-block returns a widget object, it will be rendered.
-
-### Options
-
-The directives have the following options:
-
-```rst
-.. ipywidgets-setup::
- :show: # if set, then show the setup code as a code block
-
- from ipywidgets import Button
-
-.. ipywidgets-display::
- :hide-code: # if set, then hide the code and only show the widget
- :code-below: # if set, then code is below rather than above the widget
- :alt: text # alternate text when widget cannot be rendered
-
- Button()
-```
-
-### Configuration
-
-File `conf.py` has two extra (optional) configuration options:
-
- * `jupyter_sphinx_require_url`: url for `require.js` (if your theme already provides this, set it to False or '')
- * `jupyter_sphinx_embed_url`: url for the embedding, if set to None (default) a proper default will be taken from the `ipywidgets.embed` module.
-
-### Misc.
-
-- For the widgets to be succesfuly rendered, this extension requires an
- internet connection, since it depends on a cdn-served JavaScript file to be
- loaded.
-- Widgets rendered on the same page use the same widget manager. As a
- consequence, they can be linked with each other via JavaScript link widgets.
- However, no kernel is connect and therefore, interaction with the backend
- will not happen.
## License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_sphinx-0.1.4/jupyter_sphinx/_version.py new/jupyter_sphinx-0.2.1/jupyter_sphinx/_version.py
--- old/jupyter_sphinx-0.1.4/jupyter_sphinx/_version.py 2018-08-06 21:54:12.000000000 +0200
+++ new/jupyter_sphinx-0.2.1/jupyter_sphinx/_version.py 2019-07-16 12:20:22.000000000 +0200
@@ -1,2 +1,6 @@
-version_info = (0, 1, 4)
-__version__ = '.'.join(map(str, version_info))
+version_info = (0, 2, 1, 'final')
+
+_specifier_ = {'alpha': 'a', 'beta': 'b', 'candidate': 'rc', 'final': ''}
+
+__version__ = '%s.%s.%s%s'%(version_info[0], version_info[1], version_info[2],
+ '' if version_info[3]=='final' else _specifier_[version_info[3]]+str(version_info[4]))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_sphinx-0.1.4/jupyter_sphinx/embed_widgets.py new/jupyter_sphinx-0.2.1/jupyter_sphinx/embed_widgets.py
--- old/jupyter_sphinx-0.1.4/jupyter_sphinx/embed_widgets.py 2018-08-06 21:53:26.000000000 +0200
+++ new/jupyter_sphinx-0.2.1/jupyter_sphinx/embed_widgets.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,317 +0,0 @@
-"""
-Sphinx Extension for Jupyter Interactive Widgets
-================================================
-
-This extension provides a means of inserting live-rendered Jupyter
-interactive widgets within sphinx documentation.
-
-Two directives are provided: ``ipywidgets-setup`` and ``ipywidgets-display``.
-
-``ipywidgets-setup`` code is used to set-up various options
-prior to running the display code. For example::
-
- .. ipywidgets-setup::
-
- from ipywidgets import VBox, jsdlink, IntSlider, Button
-
- .. ipywidgets-display::
-
- s1, s2 = IntSlider(max=200, value=100), IntSlider(value=40)
- b = Button(icon='legal')
- jsdlink((s1, 'value'), (s2, 'max'))
- VBox([s1, s2, b])
-
-In the case of the ``ipywidgets-display`` code, if the *last statement* of the
-code-block contains a widget object, it will be rendered.
-
-Options
--------
-
-The directives have the following options::
-
- .. ipywidgets-setup::
- :show: # if set, then show the setup code as a code block
-
- from ipywidgets import Button
-
- .. pywidgets-display::
- :hide-code: # if set, then hide the code and only show the widget
- :code-below: # if set, then code is below rather than above the widget
- :alt: text # alternate text when widget cannot be rendered
-
- Button()
-"""
-
-import os
-import json
-import warnings
-import sys
-import ast
-import logging
-
-from docutils import nodes
-from docutils.parsers.rst import Directive
-from docutils.parsers.rst.directives import flag, unchanged
-
-from sphinx.locale import _
-
-from ipywidgets import Widget
-has_embed = False
-
-try:
- import ipywidgets.embed
- has_embed = True
-except ImportError:
- pass
-
-logger = logging.getLogger(__name__)
-
-def exec_then_eval(code, namespace=None):
- """Exec a code block & return evaluation of the last line"""
- namespace = namespace or {}
-
- block = ast.parse(code, mode='exec')
- if not block.body:
- return
-
- last_stm = block.body[-1]
- if isinstance(last_stm, ast.Expr):
- block.body.pop()
- last = ast.Expression(last_stm.value)
- exec(compile(block, '<string>', mode='exec'), namespace)
- return eval(compile(last, '<string>', mode='eval'), namespace)
- else:
- exec(compile(block, '<string>', mode='exec'), namespace)
-
-
-class widget(nodes.General, nodes.Element):
- pass
-
-
-class IPywidgetsSetupDirective(Directive):
- has_content = True
-
- option_spec = {
- 'show': flag
- }
-
- def run(self):
- env = self.state.document.settings.env
-
- targetid = "ipywidgets-setup-{0}".format(env.new_serialno('ipywidgets-setup'))
- targetnode = nodes.target('', '', ids=[targetid])
-
- code = '\n'.join(self.content)
-
- # Here we cache the code for use in later setup
- if not hasattr(env, 'ipywidgets_setup'):
- env.ipywidgets_setup = []
-
- env.ipywidgets_setup.append({
- 'docname': env.docname,
- 'lineno': self.lineno,
- 'code': code,
- 'target': targetnode,
- })
-
- result = [targetnode]
-
- if 'show' in self.options:
- source_literal = nodes.literal_block(code, code)
- source_literal['language'] = 'python'
- result.append(source_literal)
-
- return result
-
-def purge_widget_setup(app, env, docname):
- if not hasattr(env, 'ipywidgets_setup'):
- return
- env.ipywidgets_setup = [item for item in env.ipywidgets_setup if item['docname'] != docname]
-
-
-class IPywidgetsDisplayDirective(Directive):
-
- has_content = True
-
- option_spec = {
- 'hide-code': flag,
- 'code-below': flag,
- 'alt': unchanged,
- }
-
- def run(self):
- env = self.state.document.settings.env
-
- show_code = 'hide-code' not in self.options
- code_below = 'code-below' in self.options
-
- setupcode = '\n'.join(
- item['code']
- for item in getattr(env, 'ipywidgets_setup', [])
- if item['docname'] == env.docname
- )
-
- code = '\n'.join(self.content)
-
- if show_code:
- source_literal = nodes.literal_block(code, code)
- source_literal['language'] = 'python'
-
- # get the name of the source file we are currently processing
- rst_source = self.state_machine.document['source']
- rst_dir = os.path.dirname(rst_source)
-
- # use the source file name to construct a friendly target_id
- serialno = env.new_serialno('jupyter-widget')
- target_id = "jupyter-widget-%d" % serialno
- target_node = nodes.target('', '', ids=[target_id])
-
- # create the node in which the widget will appear;
- # this will be processed by html_visit_widget
- widget_node = widget()
- widget_node['code'] = code
- widget_node['setupcode'] = setupcode
- widget_node['relpath'] = os.path.relpath(rst_dir, env.srcdir)
- widget_node['rst_source'] = rst_source
- widget_node['rst_lineno'] = self.lineno
-
- if 'alt' in self.options:
- widget_node['alt'] = self.options['alt']
-
- result = [target_node]
-
- if code_below:
- result += [widget_node]
- if show_code:
- result += [source_literal]
- if not code_below:
- result += [widget_node]
-
- return result
-
-#------------------------------------#
-# Monkey-patching of IPython.display #
-#------------------------------------#
-
-def no_display(*objs, **kwargs):
- pass
-
-_display_function = [no_display]
-
-def _current_display(*args, **kwargs):
- return _display_function[0](*args, **kwargs)
-
-def set_display(disp):
- _display_function[0] = disp
-
-# Overwrite IPython display
-_ipython_display_module = sys.modules["IPython.display"]
-_ipython_display_module.display = _current_display
-sys.modules["IPython.display"] = _ipython_display_module
-
-def make_sphinx_display(body):
- def sphinx_display(*objs, **kwargs):
- for obj in objs:
- if isinstance(obj, Widget):
- view_spec = json.dumps(obj.get_view_spec())
- body.append('<script type="application/vnd.jupyter.widget-view+json">' + view_spec + '</script>')
-
- return sphinx_display
-
-#-------------------#
-# html visit widget #
-#-------------------#
-
-def html_visit_widget(self, node):
- # Execute the setup code, saving the global & local state
- set_display(no_display)
-
- namespace = dict()
- if node['setupcode']:
- exec(node['setupcode'], namespace)
-
- set_display(make_sphinx_display(self.body))
-
- # Execute the widget code in this context, evaluating the last line
- try:
- w = exec_then_eval(node['code'], namespace)
- except Exception as e:
- warnings.warn("ipywidgets-display: {0}:{1} Code Execution failed:"
- "{2}: {3}".format(node['rst_source'], node['rst_lineno'],
- e.__class__.__name__, str(e)))
- raise nodes.SkipNode
-
- if isinstance(w, Widget):
- view_spec = json.dumps(w.get_view_spec())
- self.body.append('<script type="application/vnd.jupyter.widget-view+json">' + view_spec + '</script>')
-
- raise nodes.SkipNode
-
-def generic_visit_widget(self, node):
- if 'alt' in node.attributes:
- self.body.append(_('[ widget: %s ]') % node['alt'])
- else:
- self.body.append(_('[ widget ]'))
- raise nodes.SkipNode
-
-def add_widget_state(app, pagename, templatename, context, doctree):
- if 'body' in context and Widget.widgets:
- state_spec = json.dumps(Widget.get_manager_state(drop_defaults=True))
- Widget.widgets = {}
- context['body'] += '<script type="application/vnd.jupyter.widget-state+json">' + state_spec + '</script>'
-
-def builder_inited(app):
- require_url = app.config.jupyter_sphinx_require_url
- # 3 cases
- # case 1: ipywidgets 6, only embed url
- # case 2: ipywidgets 7, with require
- # case 3: ipywidgets 7, no require
- # (ipywidgets6 with require is not supported, require_url is ignored)
- if has_embed:
- if require_url:
- app.add_javascript(require_url)
- else:
- if require_url:
- logger.warning('Assuming ipywidgets6, ignoring jupyter_sphinx_require_url parameter')
-
- if has_embed:
- if require_url:
- embed_url = app.config.jupyter_sphinx_embed_url or ipywidgets.embed.DEFAULT_EMBED_REQUIREJS_URL
- else:
- embed_url = app.config.jupyter_sphinx_embed_url or ipywidgets.embed.DEFAULT_EMBED_SCRIPT_URL
- else:
- embed_url = app.config.jupyter_sphinx_embed_url or 'https://unpkg.com/jupyter-js-widgets@^2.0.13/dist/embed.js'
- if embed_url:
- app.add_javascript(embed_url)
-
-def setup(app):
- """
- case 1: ipywidgets 6, only embed url
- case 2: ipywidgets 7, with require
- case 3: ipywidgets 7, no require
- """
- setup.app = app
- setup.config = app.config
- setup.confdir = app.confdir
-
- app.add_stylesheet('https://unpkg.com/font-awesome@4.5.0/css/font-awesome.min.css')
- require_url_default = 'https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js'
- app.add_config_value('jupyter_sphinx_require_url', require_url_default, 'html')
- app.add_config_value('jupyter_sphinx_embed_url', None, 'html')
-
- app.add_node(widget,
- html=(html_visit_widget, None),
- latex=(generic_visit_widget, None),
- texinfo=(generic_visit_widget, None),
- text=(generic_visit_widget, None),
- man=(generic_visit_widget, None))
-
- app.add_directive('ipywidgets-setup', IPywidgetsSetupDirective)
- app.add_directive('ipywidgets-display', IPywidgetsDisplayDirective)
- app.connect('html-page-context', add_widget_state)
- app.connect('env-purge-doc', purge_widget_setup)
- app.connect('builder-inited', builder_inited)
-
- return {
- 'version': '0.1'
- }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_sphinx-0.1.4/jupyter_sphinx/execute.py new/jupyter_sphinx-0.2.1/jupyter_sphinx/execute.py
--- old/jupyter_sphinx-0.1.4/jupyter_sphinx/execute.py 1970-01-01 01:00:00.000000000 +0100
+++ new/jupyter_sphinx-0.2.1/jupyter_sphinx/execute.py 2019-07-16 12:20:10.000000000 +0200
@@ -0,0 +1,896 @@
+"""Simple sphinx extension that executes code in jupyter and inserts output."""
+
+import os
+from itertools import groupby, count
+from operator import itemgetter
+import json
+
+import sphinx
+from sphinx.util import logging
+from sphinx.util.fileutil import copy_asset
+from sphinx.transforms import SphinxTransform
+from sphinx.errors import ExtensionError
+from sphinx.addnodes import download_reference
+from sphinx.ext.mathbase import displaymath
+
+import docutils
+from IPython.lib.lexers import IPythonTracebackLexer, IPython3Lexer
+from docutils.parsers.rst import Directive, directives
+
+import nbconvert
+from nbconvert.preprocessors.execute import executenb
+from nbconvert.preprocessors import ExtractOutputPreprocessor
+from nbconvert.writers import FilesWriter
+
+from jupyter_client.kernelspec import get_kernel_spec, NoSuchKernel
+
+import nbformat
+
+from ipywidgets import Widget
+import ipywidgets.embed
+
+from ._version import __version__
+
+
+logger = logging.getLogger(__name__)
+
+WIDGET_VIEW_MIMETYPE = 'application/vnd.jupyter.widget-view+json'
+WIDGET_STATE_MIMETYPE = 'application/vnd.jupyter.widget-state+json'
+REQUIRE_URL_DEFAULT = 'https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js'
+THEBELAB_URL_DEFAULT = 'https://unpkg.com/thebelab@^0.4.0'
+
+
+def builder_inited(app):
+ """
+ 2 cases
+ case 1: ipywidgets 7, with require
+ case 2: ipywidgets 7, no require
+ """
+ require_url = app.config.jupyter_sphinx_require_url
+ if require_url:
+ app.add_js_file(require_url)
+ embed_url = app.config.jupyter_sphinx_embed_url or ipywidgets.embed.DEFAULT_EMBED_REQUIREJS_URL
+ else:
+ embed_url = app.config.jupyter_sphinx_embed_url or ipywidgets.embed.DEFAULT_EMBED_SCRIPT_URL
+ if embed_url:
+ app.add_js_file(embed_url)
+
+ # Check if a thebelab config was specified
+ if app.config.jupyter_sphinx_thebelab_config:
+ app.add_js_file('thebelab-helper.js')
+ app.add_css_file('thebelab.css')
+
+### Directives and their associated doctree nodes
+
+class JupyterKernel(Directive):
+ """Specify a new Jupyter Kernel.
+
+ Arguments
+ ---------
+ kernel_name : str (optional)
+ The name of the kernel in which to execute future Jupyter cells, as
+ reported by executing 'jupyter kernelspec list' on the command line.
+
+ Options
+ -------
+ id : str
+ An identifier for *this kernel instance*. Used to name any output
+ files generated when executing the Jupyter cells (e.g. images
+ produced by cells, or a script containing the cell inputs).
+
+ Content
+ -------
+ None
+ """
+
+ optional_arguments = 1
+ final_argument_whitespace = False
+ has_content = False
+
+ option_spec = {
+ 'id': directives.unchanged,
+ }
+
+ def run(self):
+ return [JupyterKernelNode(
+ '',
+ kernel_name=self.arguments[0].strip() if self.arguments else '',
+ kernel_id=self.options.get('id', '').strip(),
+ )]
+
+
+class JupyterKernelNode(docutils.nodes.Element):
+ """Inserted into doctree whenever a JupyterKernel directive is encountered.
+
+ Used as a marker to signal that the following JupyterCellNodes (until the
+ next, if any, JupyterKernelNode) should be executed in a separate kernel.
+ """
+
+
+def csv_option(s):
+ return [p.strip() for p in s.split(',')] if s else []
+
+
+class JupyterCell(Directive):
+ """Define a code cell to be later executed in a Jupyter kernel.
+
+ The content of the directive is the code to execute. Code is not
+ executed when the directive is parsed, but later during a doctree
+ transformation.
+
+ Arguments
+ ---------
+ filename : str (optional)
+ If provided, a path to a file containing code.
+
+ Options
+ -------
+ hide-code : bool
+ If provided, the code will not be displayed in the output.
+ hide-output : bool
+ If provided, the cell output will not be displayed in the output.
+ code-below : bool
+ If provided, the code will be shown below the cell output.
+ raises : comma separated list of exception types
+ If provided, a comma-separated list of exception type names that
+ the cell may raise. If one of the listed execption types is raised
+ then the traceback is printed in place of the cell output. If an
+ exception of another type is raised then we raise a RuntimeError
+ when executing.
+
+ Content
+ -------
+ code : str
+ A code cell.
+ """
+
+ required_arguments = 0
+ optional_arguments = 1
+ final_argument_whitespace = True
+ has_content = True
+
+ option_spec = {
+ 'hide-code': directives.flag,
+ 'hide-output': directives.flag,
+ 'code-below': directives.flag,
+ 'raises': csv_option,
+ 'stderr': directives.flag,
+ }
+
+ def run(self):
+ if self.arguments:
+ # As per 'sphinx.directives.code.LiteralInclude'
+ env = self.state.document.settings.env
+ rel_filename, filename = env.relfn2path(self.arguments[0])
+ env.note_dependency(rel_filename)
+ if self.content:
+ logger.warning(
+ 'Ignoring inline code in Jupyter cell included from "{}"'
+ .format(rel_filename)
+ )
+ try:
+ with open(filename) as f:
+ content = [line.rstrip() for line in f.readlines()]
+ except (IOError, OSError):
+ raise IOError(
+ 'File {} not found or reading it failed'.format(filename)
+ )
+ else:
+ self.assert_has_content()
+ content = self.content
+
+ return [JupyterCellNode(
+ '',
+ docutils.nodes.literal_block(
+ text='\n'.join(content),
+ ),
+ hide_code=('hide-code' in self.options),
+ hide_output=('hide-output' in self.options),
+ code_below=('code-below' in self.options),
+ raises=self.options.get('raises'),
+ stderr=('stderr' in self.options),
+ )]
+
+
+class ThebeButton(Directive):
+ """Specify a button to activate thebelab on the page
+
+ Arguments
+ ---------
+ text : str (optional)
+ If provided, the button text to display
+
+ Content
+ -------
+ None
+ """
+
+ optional_arguments = 1
+ final_argument_whitespace = True
+ has_content = False
+
+ def run(self):
+ kwargs = {'text': self.arguments[0]} if self.arguments else {}
+ return [ThebeButtonNode(**kwargs)]
+
+
+class JupyterCellNode(docutils.nodes.container):
+ """Inserted into doctree whever a JupyterCell directive is encountered.
+
+ Contains code that will be executed in a Jupyter kernel at a later
+ doctree-transformation step.
+ """
+
+
+class JupyterWidgetViewNode(docutils.nodes.Element):
+ """Inserted into doctree whenever a Jupyter cell produces a widget as output.
+
+ Contains a unique ID for this widget; enough information for the widget
+ embedding javascript to render it, given the widget state. For non-HTML
+ outputs this doctree node is rendered generically.
+ """
+
+ def __init__(self, rawsource='', *children, **attributes):
+ super().__init__('', view_spec=attributes['view_spec'])
+
+ def html(self):
+ return ipywidgets.embed.widget_view_template.format(
+ view_spec=json.dumps(self['view_spec']))
+
+
+class JupyterWidgetStateNode(docutils.nodes.Element):
+ """Appended to doctree if any Jupyter cell produced a widget as output.
+
+ Contains the state needed to render a collection of Jupyter widgets.
+
+ Per doctree there is 1 JupyterWidgetStateNode per kernel that produced
+ Jupyter widgets when running. This is fine as (presently) the
+ 'html-manager' Javascript library, which embeds widgets, loads the state
+ from all script tags on the page of the correct mimetype.
+ """
+
+ def __init__(self, rawsource='', *children, **attributes):
+ super().__init__('', state=attributes['state'])
+
+ def html(self):
+ # TODO: render into a separate file if 'html-manager' starts fully
+ # parsing script tags, and not just grabbing their innerHTML
+ # https://github.com/jupyter-widgets/ipywidgets/blob/master/packages/html-man…
+ return ipywidgets.embed.snippet_template.format(
+ load='', widget_views='', json_data=json.dumps(self['state']))
+
+
+class ThebeSourceNode(docutils.nodes.container):
+ """Container that holds the cell source when thebelab is enabled"""
+
+ def __init__(self, rawsource='', *children, **attributes):
+ super().__init__('', **attributes)
+
+ def visit_html(self):
+ code_class = 'thebelab-code'
+ if self['hide_code']:
+ code_class += ' thebelab-hidden'
+ if self['code_below']:
+ code_class += ' thebelab-below'
+ language = self['language']
+ return '<div class="{}" data-executable="true" data-language="{}">'\
+ .format(code_class, language)
+
+ def depart_html(self):
+ return '</div>'
+
+
+class ThebeOutputNode(docutils.nodes.container):
+ """Container that holds all the output nodes when thebelab is enabled"""
+
+ def visit_html(self):
+ return '<div class="thebelab-output" data-output="true">'
+
+ def depart_html(self):
+ return '</div>'
+
+
+class ThebeButtonNode(docutils.nodes.Element):
+ """Appended to the doctree by the ThebeButton directive
+
+ Renders as a button to enable thebelab on the page.
+
+ If no ThebeButton directive is found in the document but thebelab
+ is enabled, the node is added at the bottom of the document.
+ """
+ def __init__(self, rawsource='', *children, text='Make live', **attributes):
+ super().__init__('', text=text)
+
+ def html(self):
+ text = self['text']
+ return ('<button title="Make live" class="thebelab-button" id="thebelab-activate-button" ' +
+ 'onclick="initThebelab()">{}</button>'.format(text))
+
+### Doctree transformations
+
+class ExecuteJupyterCells(SphinxTransform):
+ """Execute code cells in Jupyter kernels.
+
+ Traverses the doctree to find JupyterKernel and JupyterCell nodes,
+ then executes the code in the JupyterCell nodes in sequence, starting
+ a new kernel every time a JupyterKernel node is encountered. The output
+ from each code cell is inserted into the doctree.
+ """
+ default_priority = 180 # An early transform, idk
+
+ def apply(self):
+ doctree = self.document
+ doc_relpath = os.path.dirname(self.env.docname) # relative to src dir
+ docname = os.path.basename(self.env.docname)
+ default_kernel = self.config.jupyter_execute_default_kernel
+ default_names = default_notebook_names(docname)
+ thebe_config = self.config.jupyter_sphinx_thebelab_config
+
+ # Check if we have anything to execute.
+ if not doctree.traverse(JupyterCellNode):
+ return
+
+ if thebe_config:
+ # Add the button at the bottom if it is not present
+ if not doctree.traverse(ThebeButtonNode):
+ doctree.append(ThebeButtonNode())
+
+ add_thebelab_library(doctree, self.env)
+
+ logger.info('executing {}'.format(docname))
+ output_dir = os.path.join(output_directory(self.env), doc_relpath)
+
+ # Start new notebook whenever a JupyterKernelNode is encountered
+ jupyter_nodes = (JupyterCellNode, JupyterKernelNode)
+ nodes_by_notebook = split_on(
+ lambda n: isinstance(n, JupyterKernelNode),
+ doctree.traverse(lambda n: isinstance(n, jupyter_nodes))
+ )
+
+ for first, *nodes in nodes_by_notebook:
+ if isinstance(first, JupyterKernelNode):
+ kernel_name = first['kernel_name'] or default_kernel
+ file_name = first['kernel_id'] or next(default_names)
+ else:
+ nodes = (first, *nodes)
+ kernel_name = default_kernel
+ file_name = next(default_names)
+
+ notebook = execute_cells(
+ kernel_name,
+ [nbformat.v4.new_code_cell(node.astext()) for node in nodes],
+ self.config.jupyter_execute_kwargs,
+ )
+
+ # Raise error if cells raised exceptions and were not marked as doing so
+ for node, cell in zip(nodes, notebook.cells):
+ errors = [output for output in cell.outputs if output['output_type'] == 'error']
+ allowed_errors = node.attributes.get('raises') or []
+ raises_provided = node.attributes['raises'] is not None
+ if raises_provided and not allowed_errors: # empty 'raises': supress all errors
+ pass
+ elif errors and not any(e['ename'] in allowed_errors for e in errors):
+ raise ExtensionError('Cell raised uncaught exception:\n{}'
+ .format('\n'.join(errors[0]['traceback'])))
+
+ # Raise error if cells print to stderr
+ for node, cell in zip(nodes, notebook.cells):
+ stderr = [output for output in cell.outputs
+ if output['output_type'] == 'stream'
+ and output['name'] == 'stderr']
+ if stderr and not node.attributes['stderr']:
+ raise ExtensionError('Cell printed to stderr:\n{}'
+ .format(stderr[0]['text']))
+
+ try:
+ lexer = notebook.metadata.language_info.pygments_lexer
+ except AttributeError:
+ lexer = notebook.metadata.kernelspec.language
+
+ # Highlight the code cells now that we know what language they are
+ for node in nodes:
+ source = node.children[0]
+ source.attributes['language'] = lexer
+
+ # Write certain cell outputs (e.g. images) to separate files, and
+ # modify the metadata of the associated cells in 'notebook' to
+ # include the path to the output file.
+ write_notebook_output(notebook, output_dir, file_name)
+
+ try:
+ cm_language = notebook.metadata.language_info.codemirror_mode.name
+ except AttributeError:
+ cm_language = notebook.metadata.kernelspec.language
+
+ # Add doctree nodes for cell outputs.
+ for node, cell in zip(nodes, notebook.cells):
+ output_nodes = cell_output_to_nodes(
+ cell,
+ self.config.jupyter_execute_data_priority,
+ sphinx_abs_dir(self.env),
+ thebe_config
+ )
+ attach_outputs(output_nodes, node, thebe_config, cm_language)
+
+ if contains_widgets(notebook):
+ doctree.append(JupyterWidgetStateNode(state=get_widgets(notebook)))
+
+
+### Roles
+
+def jupyter_download_role(name, rawtext, text, lineno, inliner):
+ _, filetype = name.split(':')
+ assert filetype in ('notebook', 'script')
+ ext = '.ipynb' if filetype == 'notebook' else '.py'
+ output_dir = sphinx_abs_dir(inliner.document.settings.env)
+ download_file = text + ext
+ node = download_reference(
+ download_file, download_file,
+ reftarget=os.path.join(output_dir, download_file)
+ )
+ return [node], []
+
+
+### Utilities
+
+def blank_nb(kernel_name):
+ try:
+ spec = get_kernel_spec(kernel_name)
+ except NoSuchKernel as e:
+ raise ExtensionError('Unable to find kernel', orig_exc=e)
+ return nbformat.v4.new_notebook(metadata={
+ 'kernelspec': {
+ 'display_name': spec.display_name,
+ 'language': spec.language,
+ 'name': kernel_name,
+ }
+ })
+
+
+def split_on(pred, it):
+ """Split an iterator wherever a predicate is True."""
+
+ counter = 0
+
+ def count(x):
+ nonlocal counter
+ if pred(x):
+ counter += 1
+ return counter
+
+ # Return iterable of lists to ensure that we don't lose our
+ # place in the iterator
+ return (list(x) for _, x in groupby(it, count))
+
+
+def cell_output_to_nodes(cell, data_priority, dir, thebe_config):
+ """Convert a jupyter cell with outputs and filenames to doctree nodes.
+
+ Parameters
+ ----------
+ cell : jupyter cell
+ data_priority : list of mime types
+ Which media types to prioritize.
+ dir : string
+ Sphinx "absolute path" to the output folder, so it is a relative path
+ to the source folder prefixed with ``/``.
+ thebe_config: dict
+ Thebelab configuration object or None
+ """
+ to_add = []
+ for index, output in enumerate(cell.get('outputs', [])):
+ output_type = output['output_type']
+ if (
+ output_type == 'stream'
+ ):
+ to_add.append(docutils.nodes.literal_block(
+ text=output['text'],
+ rawsource=output['text'],
+ ))
+ elif (
+ output_type == 'error'
+ ):
+ traceback = '\n'.join(output['traceback'])
+ text = nbconvert.filters.strip_ansi(traceback)
+ to_add.append(docutils.nodes.literal_block(
+ text=text,
+ rawsource=text,
+ language='ipythontb',
+ ))
+ elif (
+ output_type in ('display_data', 'execute_result')
+ ):
+ try:
+ # First mime_type by priority that occurs in output.
+ mime_type = next(
+ x for x in data_priority if x in output['data']
+ )
+ except StopIteration:
+ continue
+ data = output['data'][mime_type]
+ if mime_type.startswith('image'):
+ # Sphinx treats absolute paths as being rooted at the source
+ # directory, so make a relative path, which Sphinx treats
+ # as being relative to the current working directory.
+ filename = os.path.basename(
+ output.metadata['filenames'][mime_type]
+ )
+ uri = os.path.join(dir, filename)
+ to_add.append(docutils.nodes.image(uri=uri))
+ elif mime_type == 'text/html':
+ to_add.append(docutils.nodes.raw(
+ text=data,
+ format='html'
+ ))
+ elif mime_type == 'text/latex':
+ to_add.append(displaymath(
+ latex=data,
+ nowrap=False,
+ number=None,
+ ))
+ elif mime_type == 'text/plain':
+ to_add.append(docutils.nodes.literal_block(
+ text=data,
+ rawsource=data,
+ ))
+ elif mime_type == 'application/javascript':
+ to_add.append(docutils.nodes.raw(
+ text='<script type="{mime_type}">{data}</script>'
+ .format(mime_type=mime_type, data=data),
+ format='html',
+ ))
+ elif mime_type == WIDGET_VIEW_MIMETYPE:
+ to_add.append(JupyterWidgetViewNode(view_spec=data))
+
+ return to_add
+
+
+def attach_outputs(output_nodes, node, thebe_config, cm_language):
+ if thebe_config:
+ source = node.children[0]
+
+ thebe_source = ThebeSourceNode(hide_code=node.attributes['hide_code'],
+ code_below=node.attributes['code_below'],
+ language=cm_language)
+ thebe_source.children = [source]
+
+ node.children = [thebe_source]
+
+ if not node.attributes['hide_output']:
+ thebe_output = ThebeOutputNode()
+ thebe_output.children = output_nodes
+ if node.attributes['code_below']:
+ node.children = [thebe_output] + node.children
+ else:
+ node.children = node.children + [thebe_output]
+ else:
+ if node.attributes['hide_code']:
+ node.children = []
+
+ if not node.attributes['hide_output']:
+ if node.attributes['code_below']:
+ node.children = output_nodes + node.children
+ else:
+ node.children = node.children + output_nodes
+
+
+def default_notebook_names(basename):
+ """Return an interator yielding notebook names based off 'basename'"""
+ yield basename
+ for i in count(1):
+ yield '_'.join((basename, str(i)))
+
+
+def execute_cells(kernel_name, cells, execute_kwargs):
+ """Execute Jupyter cells in the specified kernel and return the notebook."""
+ notebook = blank_nb(kernel_name)
+ notebook.cells = cells
+ # Modifies 'notebook' in-place
+ try:
+ executenb(notebook, **execute_kwargs)
+ except Exception as e:
+ raise ExtensionError('Notebook execution failed', orig_exc=e)
+
+ return notebook
+
+
+def get_widgets(notebook):
+ try:
+ return notebook.metadata.widgets[WIDGET_STATE_MIMETYPE]
+ except AttributeError:
+ # Don't catch KeyError, as it's a bug if 'widgets' does
+ # not contain 'WIDGET_STATE_MIMETYPE'
+ return None
+
+
+def contains_widgets(notebook):
+ widgets = get_widgets(notebook)
+ return widgets and widgets['state']
+
+
+def language_info(executor):
+ # Can only run this function inside 'setup_preprocessor'
+ assert hasattr(executor, 'kc')
+ info_msg = executor._wait_for_reply(executor.kc.kernel_info())
+ return info_msg['content']['language_info']
+
+
+def write_notebook_output(notebook, output_dir, notebook_name):
+ """Extract output from notebook cells and write to files in output_dir.
+
+ This also modifies 'notebook' in-place, adding metadata to each cell that
+ maps output mime-types to the filenames the output was saved under.
+ """
+ resources = dict(
+ unique_key=os.path.join(output_dir, notebook_name),
+ outputs={}
+ )
+
+ # Modifies 'resources' in-place
+ ExtractOutputPreprocessor().preprocess(notebook, resources)
+ # Write the cell outputs to files where we can (images and PDFs),
+ # as well as the notebook file.
+ FilesWriter(build_directory=output_dir).write(
+ nbformat.writes(notebook), resources,
+ os.path.join(output_dir, notebook_name + '.ipynb')
+ )
+ # Write a script too.
+ ext = notebook.metadata.language_info.file_extension
+ contents = '\n\n'.join(cell.source for cell in notebook.cells)
+ with open(os.path.join(output_dir, notebook_name + ext), 'w') as f:
+ f.write(contents)
+
+
+def output_directory(env):
+ # Put output images inside the sphinx build directory to avoid
+ # polluting the current working directory. We don't use a
+ # temporary directory, as sphinx may cache the doctree with
+ # references to the images that we write
+
+ # Note: we are using an implicit fact that sphinx output directories are
+ # direct subfolders of the build directory.
+ return os.path.abspath(os.path.join(
+ env.app.outdir, os.path.pardir, 'jupyter_execute'
+ ))
+
+
+def sphinx_abs_dir(env):
+ # We write the output files into
+ # output_directory / jupyter_execute / path relative to source directory
+ # Sphinx expects download links relative to source file or relative to
+ # source dir and prepended with '/'. We use the latter option.
+ return '/' + os.path.relpath(
+ os.path.abspath(os.path.join(
+ output_directory(env),
+ os.path.dirname(env.docname),
+ )),
+ os.path.abspath(env.app.srcdir)
+ )
+
+
+def add_thebelab_library(doctree, env):
+ """Adds the thebelab configuration and library to the doctree"""
+ thebe_config = env.config.jupyter_sphinx_thebelab_config
+ if isinstance(thebe_config, dict):
+ pass
+ elif isinstance(thebe_config, str):
+ if os.path.isabs(thebe_config):
+ filename = thebe_config
+ else:
+ filename = os.path.join(os.path.abspath(env.app.srcdir), thebe_config)
+
+ if not os.path.exists(filename):
+ logger.warning('The supplied thebelab configuration file does not exist')
+ return
+
+ with open(filename, 'r') as config_file:
+ try:
+ thebe_config = json.load(config_file)
+ except ValueError:
+ logger.warning('The supplied thebelab configuration file is not in JSON format.')
+ return
+ else:
+ logger.warning('The supplied thebelab configuration should be either a filename or a dictionary.')
+ return
+
+ # Force config values to make thebelab work correctly
+ thebe_config['predefinedOutput'] = True
+ thebe_config['requestKernel'] = True
+
+ # Specify the thebelab config inline, a separate file is not supported
+ doctree.append(docutils.nodes.raw(
+ text='\n<script type="text/x-thebe-config">\n{}\n</script>'
+ .format(json.dumps(thebe_config)),
+ format='html'
+ ))
+
+ # Add thebelab library after the config is specified
+ doctree.append(docutils.nodes.raw(
+ text='\n<script type="text/javascript" src="{}"></script>'
+ .format(env.config.jupyter_sphinx_thebelab_url),
+ format='html'
+ ))
+
+
+def build_finished(app, env):
+ if app.builder.format != 'html':
+ return
+
+ thebe_config = app.config.jupyter_sphinx_thebelab_config
+ if not thebe_config:
+ return
+
+ # Copy all thebelab related assets
+ src = os.path.join(os.path.dirname(__file__), 'thebelab')
+ dst = os.path.join(app.outdir, '_static')
+ copy_asset(src, dst)
+
+
+def setup(app):
+ # Configuration
+ app.add_config_value(
+ 'jupyter_execute_kwargs',
+ dict(timeout=-1, allow_errors=True, store_widget_state=True),
+ 'env'
+ )
+ app.add_config_value(
+ 'jupyter_execute_default_kernel',
+ 'python3',
+ 'env'
+ )
+ app.add_config_value(
+ 'jupyter_execute_data_priority',
+ [
+ WIDGET_VIEW_MIMETYPE,
+ 'application/javascript',
+ 'text/html',
+ 'image/svg+xml',
+ 'image/png',
+ 'image/jpeg',
+ 'text/latex',
+ 'text/plain'
+ ],
+ 'env',
+ )
+
+ # ipywidgets config
+ app.add_config_value('jupyter_sphinx_require_url', REQUIRE_URL_DEFAULT, 'html')
+ app.add_config_value('jupyter_sphinx_embed_url', None, 'html')
+
+ # thebelab config, can be either a filename or a dict
+ app.add_config_value('jupyter_sphinx_thebelab_config', None, 'html')
+
+ app.add_config_value('jupyter_sphinx_thebelab_url', THEBELAB_URL_DEFAULT, 'html')
+
+ # Used for nodes that do not need to be rendered
+ def skip(self, node):
+ raise docutils.nodes.SkipNode
+
+ # Renders the children of a container
+ render_container = (
+ lambda self, node: self.visit_container(node),
+ lambda self, node: self.depart_container(node),
+ )
+
+ # Used to render the container and its children as HTML
+ def visit_container_html(self, node):
+ self.body.append(node.visit_html())
+ self.visit_container(node)
+
+ def depart_container_html(self, node):
+ self.depart_container(node)
+ self.body.append(node.depart_html())
+
+ # Used to render an element node as HTML
+ def visit_element_html(self, node):
+ self.body.append(node.html())
+ raise docutils.nodes.SkipNode
+
+ # Used to render the ThebeSourceNode conditionally for non-HTML builders
+ def visit_thebe_source(self, node):
+ if node['hide_code']:
+ raise docutils.nodes.SkipNode
+ else:
+ self.visit_container(node)
+
+ render_thebe_source = (
+ visit_thebe_source,
+ lambda self, node: self.depart_container(node)
+ )
+
+
+ # JupyterKernelNode is just a doctree marker for the
+ # ExecuteJupyterCells transform, so we don't actually render it.
+ app.add_node(
+ JupyterKernelNode,
+ html=(skip, None),
+ latex=(skip, None),
+ textinfo=(skip, None),
+ text=(skip, None),
+ man=(skip, None),
+ )
+
+ # JupyterCellNode is a container that holds the input and
+ # any output, so we render it as a container.
+ app.add_node(
+ JupyterCellNode,
+ html=render_container,
+ latex=render_container,
+ textinfo=render_container,
+ text=render_container,
+ man=render_container,
+ )
+
+ # JupyterWidgetViewNode holds widget view JSON,
+ # but is only rendered properly in HTML documents.
+ app.add_node(
+ JupyterWidgetViewNode,
+ html=(visit_element_html, None),
+ latex=(skip, None),
+ textinfo=(skip, None),
+ text=(skip, None),
+ man=(skip, None),
+ )
+ # JupyterWidgetStateNode holds the widget state JSON,
+ # but is only rendered in HTML documents.
+ app.add_node(
+ JupyterWidgetStateNode,
+ html=(visit_element_html, None),
+ latex=(skip, None),
+ textinfo=(skip, None),
+ text=(skip, None),
+ man=(skip, None),
+ )
+
+ # ThebeSourceNode holds the source code and is rendered if
+ # hide-code is not specified. For HTML it is always rendered,
+ # but hidden using the stylesheet
+ app.add_node(
+ ThebeSourceNode,
+ html=(visit_container_html, depart_container_html),
+ latex=render_thebe_source,
+ textinfo=render_thebe_source,
+ text=render_thebe_source,
+ man=render_thebe_source,
+ )
+
+ # ThebeOutputNode holds the output of the Jupyter cells
+ # and is rendered if hide-output is not specified.
+ app.add_node(
+ ThebeOutputNode,
+ html=(visit_container_html, depart_container_html),
+ latex=render_container,
+ textinfo=render_container,
+ text=render_container,
+ man=render_container,
+ )
+
+ # ThebeButtonNode is the button that activates thebelab
+ # and is only rendered for the HTML builder
+ app.add_node(
+ ThebeButtonNode,
+ html=(visit_element_html, None),
+ latex=(skip, None),
+ textinfo=(skip, None),
+ text=(skip, None),
+ man=(skip, None),
+ )
+
+ app.add_directive('jupyter-execute', JupyterCell)
+ app.add_directive('jupyter-kernel', JupyterKernel)
+ app.add_directive('thebe-button', ThebeButton)
+ app.add_role('jupyter-download:notebook', jupyter_download_role)
+ app.add_role('jupyter-download:script', jupyter_download_role)
+ app.add_transform(ExecuteJupyterCells)
+
+ # For syntax highlighting
+ app.add_lexer('ipythontb', IPythonTracebackLexer())
+ app.add_lexer('ipython', IPython3Lexer())
+
+ app.connect('builder-inited', builder_inited)
+ app.connect('build-finished', build_finished)
+
+ return {
+ 'version': __version__,
+ 'parallel_read_safe': True,
+ }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_sphinx-0.1.4/jupyter_sphinx/thebelab/thebelab-helper.js new/jupyter_sphinx-0.2.1/jupyter_sphinx/thebelab/thebelab-helper.js
--- old/jupyter_sphinx-0.1.4/jupyter_sphinx/thebelab/thebelab-helper.js 1970-01-01 01:00:00.000000000 +0100
+++ new/jupyter_sphinx-0.2.1/jupyter_sphinx/thebelab/thebelab-helper.js 2019-07-08 18:55:30.000000000 +0200
@@ -0,0 +1,24 @@
+function initThebelab() {
+ let activateButton = document.getElementById("thebelab-activate-button");
+ if (activateButton.classList.contains('thebelab-active')) {
+ return;
+ }
+
+ // Place all outputs below the source where this was not the case
+ // to make them recognizable by thebelab
+ let codeBelows = document.getElementsByClassName('thebelab-below');
+ for(var i = 0; i < codeBelows.length; i++) {
+ let prev = codeBelows[i]
+ // Find previous sibling element, compatible with IE8
+ do prev = prev.previousSibling; while(prev && prev.nodeType !== 1);
+ swapSibling(prev, codeBelows[i])
+ }
+
+ thebelab.bootstrap();
+ activateButton.classList.add('thebelab-active')
+}
+
+function swapSibling(node1, node2) {
+ node1.parentNode.replaceChild(node1, node2);
+ node1.parentNode.insertBefore(node2, node1);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_sphinx-0.1.4/jupyter_sphinx/thebelab/thebelab.css new/jupyter_sphinx-0.2.1/jupyter_sphinx/thebelab/thebelab.css
--- old/jupyter_sphinx-0.1.4/jupyter_sphinx/thebelab/thebelab.css 1970-01-01 01:00:00.000000000 +0100
+++ new/jupyter_sphinx-0.2.1/jupyter_sphinx/thebelab/thebelab.css 2019-07-08 18:55:30.000000000 +0200
@@ -0,0 +1,37 @@
+.thebelab-cell .thebelab-input pre {
+ z-index: 0;
+}
+
+.thebelab-hidden {
+ display: none;
+}
+
+.thebelab-button {
+ position: relative;
+ display: inline-block;
+ box-sizing: border-box;
+ border: none;
+ border-radius: .1rem;
+ padding: 0 2rem;
+ margin: .5rem .1rem;
+ min-width: 64px;
+ height: 1.6rem;
+ vertical-align: middle;
+ text-align: center;
+ font-size: 0.8rem;
+ color: rgba(0, 0, 0, 0.8);
+ background-color: rgba(0, 0, 0, 0.07);
+ overflow: hidden;
+ outline: none;
+ cursor: pointer;
+ transition: background-color 0.2s;
+}
+
+.thebelab-button:hover {
+ background-color: rgba(0, 0, 0, 0.12);
+}
+
+.thebelab-button:active {
+ background-color: rgba(0, 0, 0, 0.15);
+ color: rgba(0, 0, 0, 1)
+}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_sphinx-0.1.4/jupyter_sphinx.egg-info/PKG-INFO new/jupyter_sphinx-0.2.1/jupyter_sphinx.egg-info/PKG-INFO
--- old/jupyter_sphinx-0.1.4/jupyter_sphinx.egg-info/PKG-INFO 2018-08-07 01:12:06.000000000 +0200
+++ new/jupyter_sphinx-0.2.1/jupyter_sphinx.egg-info/PKG-INFO 2019-07-16 12:22:20.000000000 +0200
@@ -1,10 +1,14 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.2
Name: jupyter-sphinx
-Version: 0.1.4
+Version: 0.2.1
Summary: Jupyter Sphinx Extensions
-Home-page: UNKNOWN
+Home-page: https://github.com/jupyter/jupyter-sphinx/
Author: Jupyter Development Team
Author-email: jupyter(a)googlegroups.com
License: BSD
+Project-URL: Bug Tracker, https://github.com/jupyter/jupyter-sphinx/issues/
+Project-URL: Documentation, https://jupyter-sphinx.readthedocs.io
+Project-URL: Source Code, https://github.com/jupyter/jupyter-sphinx/
Description: UNKNOWN
Platform: UNKNOWN
+Requires-Python: >= 3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_sphinx-0.1.4/jupyter_sphinx.egg-info/SOURCES.txt new/jupyter_sphinx-0.2.1/jupyter_sphinx.egg-info/SOURCES.txt
--- old/jupyter_sphinx-0.1.4/jupyter_sphinx.egg-info/SOURCES.txt 2018-08-07 01:12:06.000000000 +0200
+++ new/jupyter_sphinx-0.2.1/jupyter_sphinx.egg-info/SOURCES.txt 2019-07-16 12:22:20.000000000 +0200
@@ -5,9 +5,11 @@
setup.py
jupyter_sphinx/__init__.py
jupyter_sphinx/_version.py
-jupyter_sphinx/embed_widgets.py
+jupyter_sphinx/execute.py
jupyter_sphinx.egg-info/PKG-INFO
jupyter_sphinx.egg-info/SOURCES.txt
jupyter_sphinx.egg-info/dependency_links.txt
jupyter_sphinx.egg-info/requires.txt
-jupyter_sphinx.egg-info/top_level.txt
\ No newline at end of file
+jupyter_sphinx.egg-info/top_level.txt
+jupyter_sphinx/thebelab/thebelab-helper.js
+jupyter_sphinx/thebelab/thebelab.css
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_sphinx-0.1.4/jupyter_sphinx.egg-info/requires.txt new/jupyter_sphinx-0.2.1/jupyter_sphinx.egg-info/requires.txt
--- old/jupyter_sphinx-0.1.4/jupyter_sphinx.egg-info/requires.txt 2018-08-07 01:12:06.000000000 +0200
+++ new/jupyter_sphinx-0.2.1/jupyter_sphinx.egg-info/requires.txt 2019-07-16 12:22:20.000000000 +0200
@@ -1,2 +1,5 @@
-Sphinx>=0.6
-ipywidgets>=6.0.0
+Sphinx>=1.8
+ipywidgets>=7.0.0
+IPython
+nbconvert>=5.5
+nbformat
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_sphinx-0.1.4/setup.py new/jupyter_sphinx-0.2.1/setup.py
--- old/jupyter_sphinx-0.1.4/setup.py 2017-03-01 10:31:19.000000000 +0100
+++ new/jupyter_sphinx-0.2.1/setup.py 2019-07-16 12:20:10.000000000 +0200
@@ -14,7 +14,21 @@
author = 'Jupyter Development Team',
author_email = 'jupyter(a)googlegroups.com',
description = 'Jupyter Sphinx Extensions',
+ url = 'https://github.com/jupyter/jupyter-sphinx/',
+ project_urls = {
+ 'Bug Tracker': 'https://github.com/jupyter/jupyter-sphinx/issues/',
+ 'Documentation': 'https://jupyter-sphinx.readthedocs.io',
+ 'Source Code': 'https://github.com/jupyter/jupyter-sphinx/',
+ },
license = 'BSD',
packages = ['jupyter_sphinx'],
- install_requires = ['Sphinx>=0.6', 'ipywidgets>=6.0.0'],
+ install_requires = [
+ 'Sphinx>=1.8',
+ 'ipywidgets>=7.0.0',
+ 'IPython',
+ 'nbconvert>=5.5',
+ 'nbformat',
+ ],
+ python_requires = '>= 3.5',
+ package_data={'jupyter_sphinx': ['thebelab/*']},
)
1
0
Hello community,
here is the log from the commit of package python-qtconsole for openSUSE:Factory checked in at 2019-07-29 17:30:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-qtconsole (Old)
and /work/SRC/openSUSE:Factory/.python-qtconsole.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-qtconsole"
Mon Jul 29 17:30:51 2019 rev:3 rq:719453 version:4.5.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-qtconsole/python-qtconsole.changes 2019-06-13 23:03:40.943375905 +0200
+++ /work/SRC/openSUSE:Factory/.python-qtconsole.new.4126/python-qtconsole.changes 2019-07-29 17:30:51.914202843 +0200
@@ -1,0 +2,8 @@
+Mon Jul 29 02:22:01 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Update to versionn 4.5.2
+ * Remove deprecation warnings in Python 3.8
+ * Improve positioning and content of completion widget.
+ * Scroll down for output from remote commands.
+
+-------------------------------------------------------------------
Old:
----
qtconsole-4.5.1.tar.gz
New:
----
qtconsole-4.5.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-qtconsole.spec ++++++
--- /var/tmp/diff_new_pack.Oxcx4U/_old 2019-07-29 17:30:53.138202390 +0200
+++ /var/tmp/diff_new_pack.Oxcx4U/_new 2019-07-29 17:30:53.138202390 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-qtconsole
-Version: 4.5.1
+Version: 4.5.2
%define doc_ver 4.5.1
Release: 0
Summary: Jupyter Qt console
++++++ qtconsole-4.5.1.tar.gz -> qtconsole-4.5.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-4.5.1/PKG-INFO new/qtconsole-4.5.2/PKG-INFO
--- old/qtconsole-4.5.1/PKG-INFO 2019-05-27 15:10:45.000000000 +0200
+++ new/qtconsole-4.5.2/PKG-INFO 2019-07-23 13:58:17.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: qtconsole
-Version: 4.5.1
+Version: 4.5.2
Summary: Jupyter Qt console
Home-page: http://jupyter.org
Author: Jupyter Development Team
@@ -96,5 +96,5 @@
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Description-Content-Type: text/markdown
-Provides-Extra: test
Provides-Extra: doc
+Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-4.5.1/docs/source/changelog.rst new/qtconsole-4.5.2/docs/source/changelog.rst
--- old/qtconsole-4.5.1/docs/source/changelog.rst 2019-05-27 15:08:39.000000000 +0200
+++ new/qtconsole-4.5.2/docs/source/changelog.rst 2019-07-23 13:54:38.000000000 +0200
@@ -3,6 +3,15 @@
Changes in Jupyter Qt console
=============================
+.. _4.5.2:
+
+`4.5.2 on GitHub <https://github.com/jupyter/qtconsole/milestones/4.5.2>`__
+
+- Remove deprecation warnings in Python 3.8
+- Improve positioning and content of completion widget.
+- Scroll down for output from remote commands.
+
+
.. _4.5.1:
`4.5.1 on GitHub <https://github.com/jupyter/qtconsole/milestones/4.5.1>`__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-4.5.1/qtconsole/_version.py new/qtconsole-4.5.2/qtconsole/_version.py
--- old/qtconsole-4.5.1/qtconsole/_version.py 2019-05-27 15:09:58.000000000 +0200
+++ new/qtconsole-4.5.2/qtconsole/_version.py 2019-07-23 13:56:45.000000000 +0200
@@ -1,2 +1,2 @@
-version_info = (4, 5, 1)
+version_info = (4, 5, 2)
__version__ = '.'.join(map(str, version_info))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-4.5.1/qtconsole/completion_html.py new/qtconsole-4.5.2/qtconsole/completion_html.py
--- old/qtconsole-4.5.1/qtconsole/completion_html.py 2018-08-12 00:38:18.000000000 +0200
+++ new/qtconsole-4.5.2/qtconsole/completion_html.py 2019-07-23 13:49:55.000000000 +0200
@@ -296,12 +296,15 @@
r, c = self._index
self._select_index(r, c+1)
- def show_items(self, cursor, items):
+ def show_items(self, cursor, items, prefix_length=0):
""" Shows the completion widget with 'items' at the position specified
by 'cursor'.
"""
if not items :
return
+ # Move cursor to start of the prefix to replace it
+ # when a item is selected
+ cursor.movePosition(QtGui.QTextCursor.Left, n=prefix_length)
self._start_position = cursor.position()
self._consecutive_tab = 1
# Calculate the number of characters available.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-4.5.1/qtconsole/completion_plain.py new/qtconsole-4.5.2/qtconsole/completion_plain.py
--- old/qtconsole-4.5.1/qtconsole/completion_plain.py 2015-12-20 15:40:14.000000000 +0100
+++ new/qtconsole-4.5.2/qtconsole/completion_plain.py 2019-07-23 13:49:55.000000000 +0200
@@ -46,7 +46,7 @@
self._console_widget._clear_temporary_buffer()
- def show_items(self, cursor, items):
+ def show_items(self, cursor, items, prefix_length=0):
""" Shows the completion widget with 'items' at the position specified
by 'cursor'.
"""
@@ -54,4 +54,7 @@
return
self.cancel_completion()
strng = text.columnize(items)
+ # Move cursor to start of the prefix to replace it
+ # when a item is selected
+ cursor.movePosition(QtGui.QTextCursor.Left, n=prefix_length)
self._console_widget._fill_temporary_buffer(cursor, strng, html=False)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-4.5.1/qtconsole/completion_widget.py new/qtconsole-4.5.2/qtconsole/completion_widget.py
--- old/qtconsole-4.5.1/qtconsole/completion_widget.py 2016-02-22 21:48:13.000000000 +0100
+++ new/qtconsole-4.5.2/qtconsole/completion_widget.py 2019-07-23 13:49:55.000000000 +0200
@@ -1,5 +1,8 @@
"""A dropdown completer widget for the qtconsole."""
+import os
+import sys
+
from qtconsole.qt import QtCore, QtGui
@@ -17,7 +20,7 @@
"""
text_edit = console_widget._control
assert isinstance(text_edit, (QtGui.QTextEdit, QtGui.QPlainTextEdit))
- super(CompletionWidget, self).__init__()
+ super(CompletionWidget, self).__init__(parent=console_widget)
self._text_edit = text_edit
self.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
@@ -94,15 +97,18 @@
# 'CompletionWidget' interface
#--------------------------------------------------------------------------
- def show_items(self, cursor, items):
+ def show_items(self, cursor, items, prefix_length=0):
""" Shows the completion widget with 'items' at the position specified
by 'cursor'.
"""
text_edit = self._text_edit
- point = text_edit.cursorRect(cursor).bottomRight()
- point = text_edit.mapToGlobal(point)
+ point = self._get_top_left_position(cursor)
self.clear()
- self.addItems(items)
+ for item in items:
+ list_item = QtGui.QListWidgetItem()
+ list_item.setData(QtCore.Qt.UserRole, item)
+ list_item.setText(item.split('.')[-1])
+ self.addItem(list_item)
height = self.sizeHint().height()
screen_rect = QtGui.QApplication.desktop().availableGeometry(self)
if (screen_rect.size().height() + screen_rect.y() -
@@ -112,6 +118,10 @@
w = (self.sizeHintForColumn(0) +
self.verticalScrollBar().sizeHint().width())
self.setGeometry(point.x(), point.y(), w, height)
+
+ # Move cursor to start of the prefix to replace it
+ # when a item is selected
+ cursor.movePosition(QtGui.QTextCursor.Left, n=prefix_length)
self._start_position = cursor.position()
self.setCurrentRow(0)
self.raise_()
@@ -121,10 +131,29 @@
# Protected interface
#--------------------------------------------------------------------------
+ def _get_top_left_position(self, cursor):
+ """ Get top left position for this widget.
+ """
+ point = self._text_edit.cursorRect(cursor).center()
+ point_size = self._text_edit.font().pointSize()
+
+ if sys.platform == 'darwin':
+ delta = int((point_size * 1.20) ** 0.98)
+ elif os.name == 'nt':
+ delta = int((point_size * 1.20) ** 1.05)
+ else:
+ delta = int((point_size * 1.20) ** 0.98)
+
+ y = delta - (point_size / 2)
+ point.setY(point.y() + y)
+ point = self._text_edit.mapToGlobal(point)
+ return point
+
def _complete_current(self):
""" Perform the completion with the currently selected item.
"""
- self._current_text_cursor().insertText(self.currentItem().text())
+ text = self.currentItem().data(QtCore.Qt.UserRole)
+ self._current_text_cursor().insertText(text)
self.hide()
def _current_text_cursor(self):
@@ -138,8 +167,15 @@
return cursor
def _update_current(self):
- """ Updates the current item based on the current text.
+ """ Updates the current item based on the current text and the
+ position of the widget.
"""
+ # Update widget position
+ cursor = self._text_edit.textCursor()
+ point = self._get_top_left_position(cursor)
+ self.move(point)
+
+ # Update current item
prefix = self._current_text_cursor().selection().toPlainText()
if prefix:
items = self.findItems(prefix, (QtCore.Qt.MatchStartsWith |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-4.5.1/qtconsole/console_widget.py new/qtconsole-4.5.2/qtconsole/console_widget.py
--- old/qtconsole-4.5.1/qtconsole/console_widget.py 2019-05-03 11:18:26.000000000 +0200
+++ new/qtconsole-4.5.2/qtconsole/console_widget.py 2019-07-23 13:49:55.000000000 +0200
@@ -490,7 +490,7 @@
if self.paging == 'vsplit':
height = height * 2 + splitwidth
- return QtCore.QSize(width, height)
+ return QtCore.QSize(int(width), int(height))
#---------------------------------------------------------------------------
# 'ConsoleWidget' public interface
@@ -944,7 +944,7 @@
# Perform the insertion.
result = insert(cursor, input, *args, **kwargs)
-
+ self._control.moveCursor(QtGui.QTextCursor.End)
return result
def _append_block(self, block_format=None, before_prompt=False):
@@ -1022,9 +1022,8 @@
cursor.insertText(prefix)
current_pos = cursor.position()
- cursor.movePosition(QtGui.QTextCursor.Left, n=len(prefix))
- self._completion_widget.show_items(cursor, items)
-
+ self._completion_widget.show_items(cursor, items,
+ prefix_length=len(prefix))
def _fill_temporary_buffer(self, cursor, text, html=False):
"""fill the area below the active editting zone with text"""
@@ -2404,13 +2403,13 @@
maximum = document.size().height()
step = viewport_height
diff = maximum - scrollbar.maximum()
- scrollbar.setRange(0, maximum)
- scrollbar.setPageStep(step)
+ scrollbar.setRange(0, round(maximum))
+ scrollbar.setPageStep(round(step))
# Compensate for undesirable scrolling that occurs automatically due to
# maximumBlockCount() text truncation.
if diff < 0 and document.blockCount() == document.maximumBlockCount():
- scrollbar.setValue(scrollbar.value() + diff)
+ scrollbar.setValue(round(scrollbar.value() + diff))
def _custom_context_menu_requested(self, pos):
""" Shows a context menu at the given QPoint (in widget coordinates).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-4.5.1/qtconsole/manager.py new/qtconsole-4.5.2/qtconsole/manager.py
--- old/qtconsole-4.5.1/qtconsole/manager.py 2015-12-20 15:40:14.000000000 +0100
+++ new/qtconsole-4.5.2/qtconsole/manager.py 2019-07-23 13:49:55.000000000 +0200
@@ -18,7 +18,7 @@
if self._timer is None:
self._timer = QtCore.QTimer()
self._timer.timeout.connect(self.poll)
- self._timer.start(self.time_to_dead * 1000)
+ self._timer.start(round(self.time_to_dead * 1000))
def stop(self):
self._timer.stop()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-4.5.1/qtconsole/rich_jupyter_widget.py new/qtconsole-4.5.2/qtconsole/rich_jupyter_widget.py
--- old/qtconsole-4.5.1/qtconsole/rich_jupyter_widget.py 2018-11-09 21:59:15.000000000 +0100
+++ new/qtconsole-4.5.2/qtconsole/rich_jupyter_widget.py 2019-07-23 13:49:55.000000000 +0200
@@ -88,7 +88,7 @@
format = self._control.cursorForPosition(pos).charFormat()
name = format.stringProperty(QtGui.QTextFormat.ImageName)
if name:
- menu = QtGui.QMenu()
+ menu = QtGui.QMenu(self)
menu.addAction('Copy Image', lambda: self._copy_image(name))
menu.addAction('Save Image As...', lambda: self._save_image(name))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-4.5.1/qtconsole.egg-info/PKG-INFO new/qtconsole-4.5.2/qtconsole.egg-info/PKG-INFO
--- old/qtconsole-4.5.1/qtconsole.egg-info/PKG-INFO 2019-05-27 15:10:44.000000000 +0200
+++ new/qtconsole-4.5.2/qtconsole.egg-info/PKG-INFO 2019-07-23 13:58:17.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: qtconsole
-Version: 4.5.1
+Version: 4.5.2
Summary: Jupyter Qt console
Home-page: http://jupyter.org
Author: Jupyter Development Team
@@ -96,5 +96,5 @@
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Description-Content-Type: text/markdown
-Provides-Extra: test
Provides-Extra: doc
+Provides-Extra: test
1
0
Hello community,
here is the log from the commit of package python-vega for openSUSE:Factory checked in at 2019-07-29 17:30:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-vega (Old)
and /work/SRC/openSUSE:Factory/.python-vega.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-vega"
Mon Jul 29 17:30:44 2019 rev:3 rq:719451 version:2.4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-vega/python-vega.changes 2019-06-13 23:03:30.799384723 +0200
+++ /work/SRC/openSUSE:Factory/.python-vega.new.4126/python-vega.changes 2019-07-29 17:30:49.374203784 +0200
@@ -1,0 +2,11 @@
+Mon Jul 29 02:24:02 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Update to 2.4.0
+ * Update typings
+ * Update dependencies in package.json as well
+ * No need to set default style.
+- Update to 2.3.1
+ * Ad try catch around widget code
+ * Update deps
+
+-------------------------------------------------------------------
Old:
----
vega-2.3.0.tar.gz
New:
----
vega-2.4.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-vega.spec ++++++
--- /var/tmp/diff_new_pack.NfzNIL/_old 2019-07-29 17:30:51.238203094 +0200
+++ /var/tmp/diff_new_pack.NfzNIL/_new 2019-07-29 17:30:51.242203092 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-vega
-Version: 2.3.0
+Version: 2.4.0
Release: 0
Summary: An IPython/Jupyter widget for Vega 3 and Vega-Lite 2
License: BSD-3-Clause
++++++ vega-2.3.0.tar.gz -> vega-2.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vega-2.3.0/PKG-INFO new/vega-2.4.0/PKG-INFO
--- old/vega-2.3.0/PKG-INFO 2019-06-11 19:33:31.000000000 +0200
+++ new/vega-2.4.0/PKG-INFO 2019-07-04 11:13:46.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: vega
-Version: 2.3.0
+Version: 2.4.0
Summary: IPyVega: An IPython/Jupyter widget for Vega 5 and Vega-Lite 3
Home-page: http://github.com/vega/ipyvega
Author: Dominik Moritz
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vega-2.3.0/README.md new/vega-2.4.0/README.md
--- old/vega-2.3.0/README.md 2019-06-09 00:21:15.000000000 +0200
+++ new/vega-2.4.0/README.md 2019-06-14 19:33:57.000000000 +0200
@@ -4,7 +4,7 @@
IPython/Jupyter notebook module for [Vega 5](https://github.com/vega/vega), and [Vega-Lite 3](https://github.com/vega/vega-lite). Notebooks with embedded visualizations can be viewed on [GitHub](https://github.com/vega/ipyvega/blob/master/notebooks/VegaLite.ipyn… and [nbviewer](https://nbviewer.jupyter.org/github/vega/ipyvega/blob/master/note…. If you use JupyterLab (not the notebook), you don't need to install this extension since JupyterLab comes with built-in support for Vega and Vega-Lite.
-Available on [pypi](https://pypi.python.org/pypi/vega).
+Available on [pypi](https://pypi.python.org/pypi/vega) and [Conda Forge](https://anaconda.org/conda-forge/vega) as `vega`.
<img src="screenshot.png" width="500">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vega-2.3.0/package.json new/vega-2.4.0/package.json
--- old/vega-2.3.0/package.json 2019-06-11 19:30:44.000000000 +0200
+++ new/vega-2.4.0/package.json 2019-07-04 11:09:16.000000000 +0200
@@ -1,6 +1,6 @@
{
"name": "jupyter-vega",
- "version": "2.3.0",
+ "version": "2.4.0",
"description": "IPython/Jupyter notebook module for [Vega](https://vega.github.io/vega), and [Vega-Lite](https://vega.github.io/vega-lite).",
"repository": {
"type": "git",
@@ -21,16 +21,16 @@
"dependencies": {
"vega": "5.4.0",
"vega-lite": "3.3.0",
- "vega-embed": "4.2.0",
- "@jupyter-widgets/base": "^1.2.5",
+ "vega-embed": "^4.2.1",
+ "@jupyter-widgets/base": "2.0.1",
"@types/webpack-env": "*"
},
"devDependencies": {
"prettier": "^1.18.2",
- "ts-loader": "^6.0.2",
- "typescript": "^3.5.1",
- "webpack": "^4.33.0",
- "webpack-cli": "^3.3.4"
+ "ts-loader": "^6.0.4",
+ "typescript": "^3.5.2",
+ "webpack": "^4.35.2",
+ "webpack-cli": "^3.3.5"
},
"private": true
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vega-2.3.0/setup.py new/vega-2.4.0/setup.py
--- old/vega-2.3.0/setup.py 2019-06-11 19:29:53.000000000 +0200
+++ new/vega-2.4.0/setup.py 2019-07-03 02:02:38.000000000 +0200
@@ -31,6 +31,8 @@
('share/jupyter/nbextensions/jupyter-vega', [
'vega/static/index.js',
'vega/static/index.js.map',
+ 'vega/static/widget.js',
+ 'vega/static/widget.js.map',
]),
('etc/jupyter/nbconfig/notebook.d' , ['vega.json'])
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vega-2.3.0/vega/__init__.py new/vega-2.4.0/vega/__init__.py
--- old/vega-2.3.0/vega/__init__.py 2019-06-11 19:30:26.000000000 +0200
+++ new/vega-2.4.0/vega/__init__.py 2019-07-04 11:08:58.000000000 +0200
@@ -8,7 +8,7 @@
__all__ = ['Vega', 'VegaLite']
-__version__ = '2.3.0'
+__version__ = '2.4.0'
def _jupyter_nbextension_paths():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vega-2.3.0/vega/static/index.js new/vega-2.4.0/vega/static/index.js
--- old/vega-2.3.0/vega/static/index.js 2019-06-11 19:32:44.000000000 +0200
+++ new/vega-2.4.0/vega/static/index.js 2019-07-04 11:10:19.000000000 +0200
@@ -1,9 +1,9 @@
-define("nbextensions/jupyter-vega/index",["@jupyter-widgets/base"],function(t){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=13)}([function(t,e,n){"use strict";var r=function(t,e,n){return t.fields=e||[],t.fname=n,t};function i(t){return null==t?null:t.fname}function o(t){return null==t?null:t.fields}var a=function(t){throw Error(t)},u=function(t){var e,n,r,i=[],o=null,u=0,s=t.length,c="";function l(){i.push(c+t.substring(e,n)),c="",e=n+1}for(t+="",e=n=0;n<s;++n)if("\\"===(r=t[n]))c+=t.substring(e,n),e=++n;else if(r===o)l(),o=null,u=-1;else{if(o)continue;e===u&&'"'===r?(e=n+1,o=r):e===u&&"'"===r?(e=n+1,o=r):"."!==r||u?"["===r?(n>e&&l(),u=e=n+1):"]"===r&&(u||a("Access path missing open bracket: "+t),u>0&&l(),u=0,e=n+1):n>e?l():e=n+1}return u&&a("Access path missing closing bracket: "+t),o&&a("Access path missing closing quote: "+t),n>e&&(n++,l()),i},s=Array.isArray,c=function(t){return t===Object(t)},l=function(t){return"string"==typeof t};function f(t){return s(t)?"["+t.map(f)+"]":c(t)||l(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}var h=function(t,e){var n=u(t),i="return _["+n.map(f).join("][")+"];";return r(Function("_",i),[t=1===n.length?n[0]:t],e||t)},d=[],p=h("id"),g=r(function(t){return t},d,"identity"),m=r(function(){return 0},d,"zero"),v=r(function(){return 1},d,"one"),y=r(function(){return!0},d,"true"),b=r(function(){return!1},d,"false");function x(t,e,n){var r=[e].concat([].slice.call(n));console[t](...r)}var _=function(t,e){var n=t||0;return{level:function(t){return arguments.length?(n=+t,this):n},error:function(){return n>=1&&x(e||"error","ERROR",arguments),this},warn:function(){return n>=2&&x(e||"warn","WARN",arguments),this},info:function(){return n>=3&&x(e||"log","INFO",arguments),this},debug:function(){return n>=4&&x(e||"log","DEBUG",arguments),this}}},w=function(t){return t[t.length-1]},O=function(t){return null==t||""===t?null:+t};function k(t){return function(e){return t*Math.exp(e)}}function A(t){return function(e){return Math.log(t*e)}}function E(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function j(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function S(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function C(t,e,n,r){var i=n(t[0]),o=n(w(t)),a=(o-i)*e;return[r(i-a),r(o-a)]}function M(t,e){return C(t,e,O,g)}function D(t,e){var n=Math.sign(t[0]);return C(t,e,A(n),k(n))}function F(t,e,n){return C(t,e,S(n),S(1/n))}function N(t,e,n){return C(t,e,E(n),j(n))}function z(t,e,n,r,i){var o=r(t[0]),a=r(w(t)),u=null!=e?r(e):(o+a)/2;return[i(u+(o-u)*n),i(u+(a-u)*n)]}function T(t,e,n){return z(t,e,n,O,g)}function $(t,e,n){var r=Math.sign(t[0]);return z(t,e,n,A(r),k(r))}function R(t,e,n,r){return z(t,e,n,S(r),S(1/r))}function B(t,e,n,r){return z(t,e,n,E(r),j(r))}function P(t){return 1+~~(new Date(t).getMonth()/3)}function L(t){return 1+~~(new Date(t).getUTCMonth()/3)}var U=function(t){return null!=t?s(t)?t:[t]:[]},q=function(t,e,n){var r,i=t[0],o=t[1];return o<i&&(r=o,o=i,i=r),(r=o-i)>=n-e?[e,n]:[i=Math.min(Math.max(i,e),n-r),i+r]},I=function(t){return"function"==typeof t},W=function(t,e){var n,i,a,s,c,l,h,d,p,g=[],m=(t=U(t)).map(function(t,e){return null==t?null:(g.push(e),I(t)?t:u(t).map(f).join("]["))}),v=g.length-1,y=U(e),b="var u,v;return ";if(v<0)return null;for(i=0;i<=v;++i)a=m[n=g[i]],I(a)?(s="(u=this."+(l="f"+n)+"(a))",c="(v=this."+l+"(b))",(h=h||{})[l]=a):(s="(u=a["+a+"])",c="(v=b["+a+"])"),l="((v=v instanceof Date?+v:v),(u=u instanceof Date?+u:u))","descending"!==y[n]?(p=1,d=-1):(p=-1,d=1),b+="("+s+"<"+c+"||u==null)&&v!=null?"+d+":(u>v||v==null)&&u!=null?"+p+":"+l+"!==u&&v===v?"+d+":v!==v&&u===u?"+p+(n<v?":":":0");return a=Function("a","b",b+";"),h&&(a=a.bind(h)),t=t.reduce(function(t,e){return I(e)?(o(e)||[]).forEach(function(e){t[e]=1}):null!=e&&(t[e+""]=1),t},{}),r(a,Object.keys(t))},H=function(t){return I(t)?t:function(){return t}},G=function(t,e){var n,r;function i(){e(r),n=r=null}return function(e){r=e,n&&clearTimeout(n),n=setTimeout(i,t)}},Y=function(t){for(var e,n,r=1,i=arguments.length;r<i;++r)for(n in e=arguments[r])t[n]=e[n];return t},V=function(t,e){var n,r,i,o,a=0;if(t&&(n=t.length))if(null==e){for(r=t[a];null==r||r!=r;r=t[++a]);for(i=o=r;a<n;++a)null!=(r=t[a])&&(r<i&&(i=r),r>o&&(o=r))}else{for(r=e(t[a]);null==r||r!=r;r=e(t[++a]));for(i=o=r;a<n;++a)null!=(r=e(t[a]))&&(r<i&&(i=r),r>o&&(o=r))}return[i,o]},X=function(t,e){var n,r,i,o,a,u=-1,s=t.length;if(null==e){for(;++u<s;)if(null!=(r=t[u])&&r>=r){n=i=r;break}for(o=a=u;++u<s;)null!=(r=t[u])&&(n>r&&(n=r,o=u),i<r&&(i=r,a=u))}else{for(;++u<s;)if(null!=(r=e(t[u],u,t))&&r>=r){n=i=r;break}for(o=a=u;++u<s;)null!=(r=e(t[u],u,t))&&(n>r&&(n=r,o=u),i<r&&(i=r,a=u))}return[o,a]},J={},Z=function(t){var e,n,r={};function i(t){return r.hasOwnProperty(t)&&r[t]!==J}return e={size:0,empty:0,object:r,has:i,get:function(t){return i(t)?r[t]:void 0},set:function(t,n){return i(t)||(++e.size,r[t]===J&&--e.empty),r[t]=n,this},delete:function(t){return i(t)&&(--e.size,++e.empty,r[t]=J),this},clear:function(){e.size=e.empty=0,e.object=r={}},test:function(t){return arguments.length?(n=t,e):n},clean:function(){var t,i,o={},a=0;for(t in r)(i=r[t])===J||n&&n(i)||(o[t]=i,++a);e.size=a,e.empty=0,e.object=r=o}},t&&Object.keys(t).forEach(function(n){e.set(n,t[n])}),e},Q=function(t,e,n,r,i,o){if(!n&&0!==n)return o;var a,u,s=t[0],c=w(t),l=+n;return c<s&&(a=s,s=c,c=a),(a=Math.abs(e-s))<(u=Math.abs(c-e))&&a<=l?r:u<=l?i:o},K=function(t,e){var n=t.prototype=Object.create(e.prototype);return n.constructor=t,n},tt=function(t,e,n,r){var i,o=e[0],a=e[e.length-1];return o>a&&(i=o,o=a,a=i),r=void 0===r||r,((n=void 0===n||n)?o<=t:o<t)&&(r?t<=a:t<a)},et=function(t){return"boolean"==typeof t},nt=function(t){return"[object Date]"===Object.prototype.toString.call(t)},rt=function(t){return"number"==typeof t},it=function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},ot=function(t,e){t&&(t=e?U(t).map(function(t){return t.replace(/\\(.)/g,"$1")}):U(t));var n=t&&t.length?Function("_","return ''+"+t.map(function(t){return"_["+(e?f(t):u(t).map(f).join("]["))+"]"}).join("+'|'+")+";"):function(){return""};return r(n,t,"key")},at=function(t,e){const n=t[0],r=w(t),i=+e;return i?1===i?r:n+i*(r-n):n},ut=function(t,e,n,r){var i=e.length,o=n.length;if(!o)return e;if(!i)return n;for(var a=r||new e.constructor(i+o),u=0,s=0,c=0;u<i&&s<o;++c)a[c]=t(e[u],n[s])>0?n[s++]:e[u++];for(;u<i;++u,++c)a[c]=e[u];for(;s<o;++s,++c)a[c]=n[s];return a},st=function(t,e){for(var n="";--e>=0;)n+=t;return n},ct=function(t,e,n,r){var i=n||" ",o=t+"",a=e-o.length;return a<=0?o:"left"===r?st(i,a)+o:"center"===r?st(i,~~(a/2))+o+st(i,Math.ceil(a/2)):o+st(i,a)},lt=function(t){return w(t)-t[0]||0},ft=function(t){return null==t||""===t?null:!(!t||"false"===t||"0"===t)&&!!t};function ht(t){return rt(t)?t:nt(t)?t:Date.parse(t)}var dt=function(t,e){return e=e||ht,null==t||""===t?null:e(t)},pt=function(t){return null==t||""===t?null:t+""},gt=function(t){for(var e={},n=0,r=t.length;n<r;++n)e[t[n]]=!0;return e},mt=function(t,e,n,r){var i=null!=r?r:"…",o=t+"",a=o.length,u=Math.max(0,e-i.length);return a<=e?o:"left"===n?i+o.slice(a-u):"center"===n?o.slice(0,Math.ceil(u/2))+i+o.slice(a-~~(u/2)):o.slice(0,u)+i},vt=function(t,e,n){if(t){var r,i=0,o=t.length;if(e)for(;i<o;++i)(r=e(t[i]))&&n(r,i,t);else t.forEach(n)}};n.d(e,"f",function(){return r}),n.d(e,"h",function(){return i}),n.d(e,"g",function(){return o}),n.d(e,"v",function(){return p}),n.d(e,"w",function(){return g}),n.d(e,"gb",function(){return m}),n.d(e,"L",function(){return v}),n.d(e,"db",function(){return y}),n.d(e,"r",function(){return b}),n.d(e,"J",function(){return _}),n.d(e,"d",function(){return 0}),n.d(e,"b",function(){return 1}),n.d(e,"e",function(){return 2}),n.d(e,"c",function(){return 3}),n.d(e,"a",function(){return 4}),n.d(e,"N",function(){return M}),n.d(e,"O",function(){return D}),n.d(e,"P",function(){return F}),n.d(e,"Q",function(){return N}),n.d(e,"hb",function(){return T}),n.d(e,"ib",function(){return $}),n.d(e,"jb",function(){return R}),n.d(e,"kb",function(){return B}),n.d(e,"S",function(){return P}),n.d(e,"eb",function(){return L}),n.d(e,"i",function(){return U}),n.d(e,"j",function(){return q}),n.d(e,"k",function(){return W}),n.d(e,"l",function(){return H}),n.d(e,"m",function(){return G}),n.d(e,"n",function(){return a}),n.d(e,"o",function(){return Y}),n.d(e,"p",function(){return V}),n.d(e,"q",function(){return X}),n.d(e,"s",function(){return Z}),n.d(e,"t",function(){return h}),n.d(e,"u",function(){return Q}),n.d(e,"x",function(){return K}),n.d(e,"y",function(){return tt}),n.d(e,"z",function(){return s}),n.d(e,"A",function(){return et}),n.d(e,"B",function(){return nt}),n.d(e,"C",function(){return I}),n.d(e,"D",function(){return rt}),n.d(e,"E",function(){return c}),n.d(e,"F",function(){return it}),n.d(e,"G",function(){return l}),n.d(e,"H",function(){return ot}),n.d(e,"I",function(){return at}),n.d(e,"K",function(){return ut}),n.d(e,"M",function(){return ct}),n.d(e,"R",function(){return w}),n.d(e,"T",function(){return st}),n.d(e,"U",function(){return lt}),n.d(e,"V",function(){return u}),n.d(e,"W",function(){return f}),n.d(e,"X",function(){return ft}),n.d(e,"Y",function(){return dt}),n.d(e,"Z",function(){return O}),n.d(e,"bb",function(){return pt}),n.d(e,"ab",function(){return gt}),n.d(e,"cb",function(){return mt}),n.d(e,"fb",function(){return vt})},function(t,e,n){"use strict";(function(t){n.d(e,"a",function(){return i});var r=n(0);function i(e,n){const i=n&&n.property?Object(r.t)(n.property):r.w;return!Object(r.E)(e)||(o=e,"function"==typeof t&&Object(r.C)(t.isBuffer)&&t.isBuffer(o))?i(JSON.parse(e)):function(t,e){return e&&e.copy?JSON.parse(JSON.stringify(t)):t}(i(e));var o}i.responseType="json"}).call(this,n(6).Buffer)},function(t,e,n){"use strict";var r=/("(?:[^\\"]|\\.)*")|[:,]/g;t.exports=function(t,e){var n,i,o;return e=e||{},n=JSON.stringify([1],void 0,void 0===e.indent?2:e.indent).slice(2,-3),i=""===n?1/0:void 0===e.maxLength?80:e.maxLength,o=e.replacer,function t(e,a,u){var s,c,l,f,h,d,p,g,m,v,y,b;if(e&&"function"==typeof e.toJSON&&(e=e.toJSON()),void 0===(y=JSON.stringify(e,o)))return y;if(p=i-a.length-u,y.length<=p&&(m=y.replace(r,function(t,e){return e||t+" "})).length<=p)return m;if(null!=o&&(e=JSON.parse(y),o=void 0),"object"==typeof e&&null!==e){if(g=a+n,l=[],c=0,Array.isArray(e))for(v="[",s="]",p=e.length;c<p;c++)l.push(t(e[c],g,c===p-1?0:1)||"null");else for(v="{",s="}",p=(d=Object.keys(e)).length;c<p;c++)f=d[c],h=JSON.stringify(f)+": ",void 0!==(b=t(e[f],g,h.length+(c===p-1?0:1)))&&l.push(h+b);if(l.length>0)return[v,n+l.join(",\n"+g),s].join("\n"+a)}return y}(t,"",0)}},function(t,e,n){"use strict";t.exports=function(t,e){e||(e={}),"function"==typeof e&&(e={cmp:e});var n,r="boolean"==typeof e.cycles&&e.cycles,i=e.cmp&&(n=e.cmp,function(t){return function(e,r){var i={key:e,value:t[e]},o={key:r,value:t[r]};return n(i,o)}}),o=[];return function t(e){if(e&&e.toJSON&&"function"==typeof e.toJSON&&(e=e.toJSON()),void 0!==e){if("number"==typeof e)return isFinite(e)?""+e:"null";if("object"!=typeof e)return JSON.stringify(e);var n,a;if(Array.isArray(e)){for(a="[",n=0;n<e.length;n++)n&&(a+=","),a+=t(e[n])||"null";return a+"]"}if(null===e)return"null";if(-1!==o.indexOf(e)){if(r)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var u=o.push(e)-1,s=Object.keys(e).sort(i&&i(e));for(a="",n=0;n<s.length;n++){var c=s[n],l=t(e[c]);l&&(a&&(a+=","),a+=JSON.stringify(c)+":"+l)}return o.splice(u,1),"{"+a+"}"}}(t)}},function(t,e,n){(function(n){var r;e=t.exports=V,r="object"==typeof n&&n.env&&n.env.NODE_DEBUG&&/\bsemver\b/i.test(n.env.NODE_DEBUG)?function(){var t=Array.prototype.slice.call(arguments,0);t.unshift("SEMVER"),console.log.apply(console,t)}:function(){},e.SEMVER_SPEC_VERSION="2.0.0";var i=256,o=Number.MAX_SAFE_INTEGER||9007199254740991,a=e.re=[],u=e.src=[],s=0,c=s++;u[c]="0|[1-9]\\d*";var l=s++;u[l]="[0-9]+";var f=s++;u[f]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var h=s++;u[h]="("+u[c]+")\\.("+u[c]+")\\.("+u[c]+")";var d=s++;u[d]="("+u[l]+")\\.("+u[l]+")\\.("+u[l]+")";var p=s++;u[p]="(?:"+u[c]+"|"+u[f]+")";var g=s++;u[g]="(?:"+u[l]+"|"+u[f]+")";var m=s++;u[m]="(?:-("+u[p]+"(?:\\."+u[p]+")*))";var v=s++;u[v]="(?:-?("+u[g]+"(?:\\."+u[g]+")*))";var y=s++;u[y]="[0-9A-Za-z-]+";var b=s++;u[b]="(?:\\+("+u[y]+"(?:\\."+u[y]+")*))";var x=s++,_="v?"+u[h]+u[m]+"?"+u[b]+"?";u[x]="^"+_+"$";var w="[v=\\s]*"+u[d]+u[v]+"?"+u[b]+"?",O=s++;u[O]="^"+w+"$";var k=s++;u[k]="((?:<|>)?=?)";var A=s++;u[A]=u[l]+"|x|X|\\*";var E=s++;u[E]=u[c]+"|x|X|\\*";var j=s++;u[j]="[v=\\s]*("+u[E]+")(?:\\.("+u[E]+")(?:\\.("+u[E]+")(?:"+u[m]+")?"+u[b]+"?)?)?";var S=s++;u[S]="[v=\\s]*("+u[A]+")(?:\\.("+u[A]+")(?:\\.("+u[A]+")(?:"+u[v]+")?"+u[b]+"?)?)?";var C=s++;u[C]="^"+u[k]+"\\s*"+u[j]+"$";var M=s++;u[M]="^"+u[k]+"\\s*"+u[S]+"$";var D=s++;u[D]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var F=s++;u[F]="(?:~>?)";var N=s++;u[N]="(\\s*)"+u[F]+"\\s+",a[N]=new RegExp(u[N],"g");var z=s++;u[z]="^"+u[F]+u[j]+"$";var T=s++;u[T]="^"+u[F]+u[S]+"$";var $=s++;u[$]="(?:\\^)";var R=s++;u[R]="(\\s*)"+u[$]+"\\s+",a[R]=new RegExp(u[R],"g");var B=s++;u[B]="^"+u[$]+u[j]+"$";var P=s++;u[P]="^"+u[$]+u[S]+"$";var L=s++;u[L]="^"+u[k]+"\\s*("+w+")$|^$";var U=s++;u[U]="^"+u[k]+"\\s*("+_+")$|^$";var q=s++;u[q]="(\\s*)"+u[k]+"\\s*("+w+"|"+u[j]+")",a[q]=new RegExp(u[q],"g");var I=s++;u[I]="^\\s*("+u[j]+")\\s+-\\s+("+u[j]+")\\s*$";var W=s++;u[W]="^\\s*("+u[S]+")\\s+-\\s+("+u[S]+")\\s*$";var H=s++;u[H]="(<|>)?=?\\s*\\*";for(var G=0;G<35;G++)r(G,u[G]),a[G]||(a[G]=new RegExp(u[G]));function Y(t,e){if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),t instanceof V)return t;if("string"!=typeof t)return null;if(t.length>i)return null;if(!(e.loose?a[O]:a[x]).test(t))return null;try{return new V(t,e)}catch(t){return null}}function V(t,e){if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),t instanceof V){if(t.loose===e.loose)return t;t=t.version}else if("string"!=typeof t)throw new TypeError("Invalid Version: "+t);if(t.length>i)throw new TypeError("version is longer than "+i+" characters");if(!(this instanceof V))return new V(t,e);r("SemVer",t,e),this.options=e,this.loose=!!e.loose;var n=t.trim().match(e.loose?a[O]:a[x]);if(!n)throw new TypeError("Invalid Version: "+t);if(this.raw=t,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>o||this.major<0)throw new TypeError("Invalid major version");if(this.minor>o||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>o||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(function(t){if(/^[0-9]+$/.test(t)){var e=+t;if(e>=0&&e<o)return e}return t}):this.prerelease=[],this.build=n[5]?n[5].split("."):[],this.format()}e.parse=Y,e.valid=function(t,e){var n=Y(t,e);return n?n.version:null},e.clean=function(t,e){var n=Y(t.trim().replace(/^[=v]+/,""),e);return n?n.version:null},e.SemVer=V,V.prototype.format=function(){return this.version=this.major+"."+this.minor+"."+this.patch,this.prerelease.length&&(this.version+="-"+this.prerelease.join(".")),this.version},V.prototype.toString=function(){return this.version},V.prototype.compare=function(t){return r("SemVer.compare",this.version,this.options,t),t instanceof V||(t=new V(t,this.options)),this.compareMain(t)||this.comparePre(t)},V.prototype.compareMain=function(t){return t instanceof V||(t=new V(t,this.options)),J(this.major,t.major)||J(this.minor,t.minor)||J(this.patch,t.patch)},V.prototype.comparePre=function(t){if(t instanceof V||(t=new V(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;var e=0;do{var n=this.prerelease[e],i=t.prerelease[e];if(r("prerelease compare",e,n,i),void 0===n&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===n)return-1;if(n!==i)return J(n,i)}while(++e)},V.prototype.compareBuild=function(t){t instanceof V||(t=new V(t,this.options));var e=0;do{var n=this.build[e],i=t.build[e];if(r("prerelease compare",e,n,i),void 0===n&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===n)return-1;if(n!==i)return J(n,i)}while(++e)},V.prototype.inc=function(t,e){switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",e);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",e);break;case"prepatch":this.prerelease.length=0,this.inc("patch",e),this.inc("pre",e);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",e),this.inc("pre",e);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":if(0===this.prerelease.length)this.prerelease=[0];else{for(var n=this.prerelease.length;--n>=0;)"number"==typeof this.prerelease[n]&&(this.prerelease[n]++,n=-2);-1===n&&this.prerelease.push(0)}e&&(this.prerelease[0]===e?isNaN(this.prerelease[1])&&(this.prerelease=[e,0]):this.prerelease=[e,0]);break;default:throw new Error("invalid increment argument: "+t)}return this.format(),this.raw=this.version,this},e.inc=function(t,e,n,r){"string"==typeof n&&(r=n,n=void 0);try{return new V(t,n).inc(e,r).version}catch(t){return null}},e.diff=function(t,e){if(tt(t,e))return null;var n=Y(t),r=Y(e),i="";if(n.prerelease.length||r.prerelease.length){i="pre";var o="prerelease"}for(var a in n)if(("major"===a||"minor"===a||"patch"===a)&&n[a]!==r[a])return i+a;return o},e.compareIdentifiers=J;var X=/^[0-9]+$/;function J(t,e){var n=X.test(t),r=X.test(e);return n&&r&&(t=+t,e=+e),t===e?0:n&&!r?-1:r&&!n?1:t<e?-1:1}function Z(t,e,n){return new V(t,n).compare(new V(e,n))}function Q(t,e,n){return Z(t,e,n)>0}function K(t,e,n){return Z(t,e,n)<0}function tt(t,e,n){return 0===Z(t,e,n)}function et(t,e,n){return 0!==Z(t,e,n)}function nt(t,e,n){return Z(t,e,n)>=0}function rt(t,e,n){return Z(t,e,n)<=0}function it(t,e,n,r){switch(e){case"===":return"object"==typeof t&&(t=t.version),"object"==typeof n&&(n=n.version),t===n;case"!==":return"object"==typeof t&&(t=t.version),"object"==typeof n&&(n=n.version),t!==n;case"":case"=":case"==":return tt(t,n,r);case"!=":return et(t,n,r);case">":return Q(t,n,r);case">=":return nt(t,n,r);case"<":return K(t,n,r);case"<=":return rt(t,n,r);default:throw new TypeError("Invalid operator: "+e)}}function ot(t,e){if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),t instanceof ot){if(t.loose===!!e.loose)return t;t=t.value}if(!(this instanceof ot))return new ot(t,e);r("comparator",t,e),this.options=e,this.loose=!!e.loose,this.parse(t),this.semver===at?this.value="":this.value=this.operator+this.semver.version,r("comp",this)}e.rcompareIdentifiers=function(t,e){return J(e,t)},e.major=function(t,e){return new V(t,e).major},e.minor=function(t,e){return new V(t,e).minor},e.patch=function(t,e){return new V(t,e).patch},e.compare=Z,e.compareLoose=function(t,e){return Z(t,e,!0)},e.compareBuild=function(t,e,n){var r=new V(t,n),i=new V(e,n);return r.compare(i)||r.compareBuild(i)},e.rcompare=function(t,e,n){return Z(e,t,n)},e.sort=function(t,n){return t.sort(function(t,r){return e.compareBuild(t,r,n)})},e.rsort=function(t,n){return t.sort(function(t,r){return e.compareBuild(r,t,n)})},e.gt=Q,e.lt=K,e.eq=tt,e.neq=et,e.gte=nt,e.lte=rt,e.cmp=it,e.Comparator=ot;var at={};function ut(t,e){if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),t instanceof ut)return t.loose===!!e.loose&&t.includePrerelease===!!e.includePrerelease?t:new ut(t.raw,e);if(t instanceof ot)return new ut(t.value,e);if(!(this instanceof ut))return new ut(t,e);if(this.options=e,this.loose=!!e.loose,this.includePrerelease=!!e.includePrerelease,this.raw=t,this.set=t.split(/\s*\|\|\s*/).map(function(t){return this.parseRange(t.trim())},this).filter(function(t){return t.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+t);this.format()}function st(t,e){for(var n=!0,r=t.slice(),i=r.pop();n&&r.length;)n=r.every(function(t){return i.intersects(t,e)}),i=r.pop();return n}function ct(t){return!t||"x"===t.toLowerCase()||"*"===t}function lt(t,e,n,r,i,o,a,u,s,c,l,f,h){return((e=ct(n)?"":ct(r)?">="+n+".0.0":ct(i)?">="+n+"."+r+".0":">="+e)+" "+(u=ct(s)?"":ct(c)?"<"+(+s+1)+".0.0":ct(l)?"<"+s+"."+(+c+1)+".0":f?"<="+s+"."+c+"."+l+"-"+f:"<="+u)).trim()}function ft(t,e,n){for(var i=0;i<t.length;i++)if(!t[i].test(e))return!1;if(e.prerelease.length&&!n.includePrerelease){for(i=0;i<t.length;i++)if(r(t[i].semver),t[i].semver!==at&&t[i].semver.prerelease.length>0){var o=t[i].semver;if(o.major===e.major&&o.minor===e.minor&&o.patch===e.patch)return!0}return!1}return!0}function ht(t,e,n){try{e=new ut(e,n)}catch(t){return!1}return e.test(t)}function dt(t,e,n,r){var i,o,a,u,s;switch(t=new V(t,r),e=new ut(e,r),n){case">":i=Q,o=rt,a=K,u=">",s=">=";break;case"<":i=K,o=nt,a=Q,u="<",s="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ht(t,e,r))return!1;for(var c=0;c<e.set.length;++c){var l=e.set[c],f=null,h=null;if(l.forEach(function(t){t.semver===at&&(t=new ot(">=0.0.0")),f=f||t,h=h||t,i(t.semver,f.semver,r)?f=t:a(t.semver,h.semver,r)&&(h=t)}),f.operator===u||f.operator===s)return!1;if((!h.operator||h.operator===u)&&o(t,h.semver))return!1;if(h.operator===s&&a(t,h.semver))return!1}return!0}ot.prototype.parse=function(t){var e=this.options.loose?a[L]:a[U],n=t.match(e);if(!n)throw new TypeError("Invalid comparator: "+t);this.operator=void 0!==n[1]?n[1]:"","="===this.operator&&(this.operator=""),n[2]?this.semver=new V(n[2],this.options.loose):this.semver=at},ot.prototype.toString=function(){return this.value},ot.prototype.test=function(t){return r("Comparator.test",t,this.options.loose),this.semver===at||t===at||("string"==typeof t&&(t=new V(t,this.options)),it(t,this.operator,this.semver,this.options))},ot.prototype.intersects=function(t,e){if(!(t instanceof ot))throw new TypeError("a Comparator is required");var n;if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),""===this.operator)return""===this.value||(n=new ut(t.value,e),ht(this.value,n,e));if(""===t.operator)return""===t.value||(n=new ut(this.value,e),ht(t.semver,n,e));var r=!(">="!==this.operator&&">"!==this.operator||">="!==t.operator&&">"!==t.operator),i=!("<="!==this.operator&&"<"!==this.operator||"<="!==t.operator&&"<"!==t.operator),o=this.semver.version===t.semver.version,a=!(">="!==this.operator&&"<="!==this.operator||">="!==t.operator&&"<="!==t.operator),u=it(this.semver,"<",t.semver,e)&&(">="===this.operator||">"===this.operator)&&("<="===t.operator||"<"===t.operator),s=it(this.semver,">",t.semver,e)&&("<="===this.operator||"<"===this.operator)&&(">="===t.operator||">"===t.operator);return r||i||o&&a||u||s},e.Range=ut,ut.prototype.format=function(){return this.range=this.set.map(function(t){return t.join(" ").trim()}).join("||").trim(),this.range},ut.prototype.toString=function(){return this.range},ut.prototype.parseRange=function(t){var e=this.options.loose;t=t.trim();var n=e?a[W]:a[I];t=t.replace(n,lt),r("hyphen replace",t),t=t.replace(a[q],"$1$2$3"),r("comparator trim",t,a[q]),t=(t=(t=t.replace(a[N],"$1~")).replace(a[R],"$1^")).split(/\s+/).join(" ");var i=e?a[L]:a[U],o=t.split(" ").map(function(t){return function(t,e){return r("comp",t,e),t=function(t,e){return t.trim().split(/\s+/).map(function(t){return function(t,e){r("caret",t,e);var n=e.loose?a[P]:a[B];return t.replace(n,function(e,n,i,o,a){var u;return r("caret",t,e,n,i,o,a),ct(n)?u="":ct(i)?u=">="+n+".0.0 <"+(+n+1)+".0.0":ct(o)?u="0"===n?">="+n+"."+i+".0 <"+n+"."+(+i+1)+".0":">="+n+"."+i+".0 <"+(+n+1)+".0.0":a?(r("replaceCaret pr",a),u="0"===n?"0"===i?">="+n+"."+i+"."+o+"-"+a+" <"+n+"."+i+"."+(+o+1):">="+n+"."+i+"."+o+"-"+a+" <"+n+"."+(+i+1)+".0":">="+n+"."+i+"."+o+"-"+a+" <"+(+n+1)+".0.0"):(r("no pr"),u="0"===n?"0"===i?">="+n+"."+i+"."+o+" <"+n+"."+i+"."+(+o+1):">="+n+"."+i+"."+o+" <"+n+"."+(+i+1)+".0":">="+n+"."+i+"."+o+" <"+(+n+1)+".0.0"),r("caret return",u),u})}(t,e)}).join(" ")}(t,e),r("caret",t),t=function(t,e){return t.trim().split(/\s+/).map(function(t){return function(t,e){var n=e.loose?a[T]:a[z];return t.replace(n,function(e,n,i,o,a){var u;return r("tilde",t,e,n,i,o,a),ct(n)?u="":ct(i)?u=">="+n+".0.0 <"+(+n+1)+".0.0":ct(o)?u=">="+n+"."+i+".0 <"+n+"."+(+i+1)+".0":a?(r("replaceTilde pr",a),u=">="+n+"."+i+"."+o+"-"+a+" <"+n+"."+(+i+1)+".0"):u=">="+n+"."+i+"."+o+" <"+n+"."+(+i+1)+".0",r("tilde return",u),u})}(t,e)}).join(" ")}(t,e),r("tildes",t),t=function(t,e){return r("replaceXRanges",t,e),t.split(/\s+/).map(function(t){return function(t,e){t=t.trim();var n=e.loose?a[M]:a[C];return t.replace(n,function(e,n,i,o,a,u){r("xRange",t,e,n,i,o,a,u);var s=ct(i),c=s||ct(o),l=c||ct(a),f=l;return"="===n&&f&&(n=""),s?e=">"===n||"<"===n?"<0.0.0":"*":n&&f?(c&&(o=0),a=0,">"===n?(n=">=",c?(i=+i+1,o=0,a=0):(o=+o+1,a=0)):"<="===n&&(n="<",c?i=+i+1:o=+o+1),e=n+i+"."+o+"."+a):c?e=">="+i+".0.0 <"+(+i+1)+".0.0":l&&(e=">="+i+"."+o+".0 <"+i+"."+(+o+1)+".0"),r("xRange return",e),e})}(t,e)}).join(" ")}(t,e),r("xrange",t),t=function(t,e){return r("replaceStars",t,e),t.trim().replace(a[H],"")}(t,e),r("stars",t),t}(t,this.options)},this).join(" ").split(/\s+/);return this.options.loose&&(o=o.filter(function(t){return!!t.match(i)})),o=o.map(function(t){return new ot(t,this.options)},this)},ut.prototype.intersects=function(t,e){if(!(t instanceof ut))throw new TypeError("a Range is required");return this.set.some(function(n){return st(n,e)&&t.set.some(function(t){return st(t,e)&&n.every(function(n){return t.every(function(t){return n.intersects(t,e)})})})})},e.toComparators=function(t,e){return new ut(t,e).set.map(function(t){return t.map(function(t){return t.value}).join(" ").trim().split(" ")})},ut.prototype.test=function(t){if(!t)return!1;"string"==typeof t&&(t=new V(t,this.options));for(var e=0;e<this.set.length;e++)if(ft(this.set[e],t,this.options))return!0;return!1},e.satisfies=ht,e.maxSatisfying=function(t,e,n){var r=null,i=null;try{var o=new ut(e,n)}catch(t){return null}return t.forEach(function(t){o.test(t)&&(r&&-1!==i.compare(t)||(i=new V(r=t,n)))}),r},e.minSatisfying=function(t,e,n){var r=null,i=null;try{var o=new ut(e,n)}catch(t){return null}return t.forEach(function(t){o.test(t)&&(r&&1!==i.compare(t)||(i=new V(r=t,n)))}),r},e.minVersion=function(t,e){t=new ut(t,e);var n=new V("0.0.0");if(t.test(n))return n;if(n=new V("0.0.0-0"),t.test(n))return n;n=null;for(var r=0;r<t.set.length;++r){var i=t.set[r];i.forEach(function(t){var e=new V(t.semver.version);switch(t.operator){case">":0===e.prerelease.length?e.patch++:e.prerelease.push(0),e.raw=e.format();case"":case">=":n&&!Q(n,e)||(n=e);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+t.operator)}})}if(n&&t.test(n))return n;return null},e.validRange=function(t,e){try{return new ut(t,e).range||"*"}catch(t){return null}},e.ltr=function(t,e,n){return dt(t,e,"<",n)},e.gtr=function(t,e,n){return dt(t,e,">",n)},e.outside=dt,e.prerelease=function(t,e){var n=Y(t,e);return n&&n.prerelease.length?n.prerelease:null},e.intersects=function(t,e,n){return t=new ut(t,n),e=new ut(e,n),t.intersects(e)},e.coerce=function(t,e){if(t instanceof V)return t;if("string"!=typeof t)return null;var n=t.match(a[D]);if(null==n)return null;return Y(n[1]+"."+(n[2]||"0")+"."+(n[3]||"0"),e)}}).call(this,n(14))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=/\/schema\/([\w-]+)\/([\w\.\-]+)\.json$/g.exec(t).slice(1,3);return{library:e[0],version:e[1]}}},function(t,e,n){"use strict";(function(t){
+define("nbextensions/jupyter-vega/index",[],function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=12)}([function(t,e,n){"use strict";var r=function(t,e,n){return t.fields=e||[],t.fname=n,t};function i(t){return null==t?null:t.fname}function o(t){return null==t?null:t.fields}var a=function(t){throw Error(t)},u=function(t){var e,n,r,i=[],o=null,u=0,s=t.length,c="";function l(){i.push(c+t.substring(e,n)),c="",e=n+1}for(t+="",e=n=0;n<s;++n)if("\\"===(r=t[n]))c+=t.substring(e,n),e=++n;else if(r===o)l(),o=null,u=-1;else{if(o)continue;e===u&&'"'===r?(e=n+1,o=r):e===u&&"'"===r?(e=n+1,o=r):"."!==r||u?"["===r?(n>e&&l(),u=e=n+1):"]"===r&&(u||a("Access path missing open bracket: "+t),u>0&&l(),u=0,e=n+1):n>e?l():e=n+1}return u&&a("Access path missing closing bracket: "+t),o&&a("Access path missing closing quote: "+t),n>e&&(n++,l()),i},s=Array.isArray,c=function(t){return t===Object(t)},l=function(t){return"string"==typeof t};function f(t){return s(t)?"["+t.map(f)+"]":c(t)||l(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}var h=function(t,e){var n=u(t),i="return _["+n.map(f).join("][")+"];";return r(Function("_",i),[t=1===n.length?n[0]:t],e||t)},d=[],p=h("id"),g=r(function(t){return t},d,"identity"),m=r(function(){return 0},d,"zero"),v=r(function(){return 1},d,"one"),y=r(function(){return!0},d,"true"),b=r(function(){return!1},d,"false");function x(t,e,n){var r=[e].concat([].slice.call(n));console[t](...r)}var _=function(t,e){var n=t||0;return{level:function(t){return arguments.length?(n=+t,this):n},error:function(){return n>=1&&x(e||"error","ERROR",arguments),this},warn:function(){return n>=2&&x(e||"warn","WARN",arguments),this},info:function(){return n>=3&&x(e||"log","INFO",arguments),this},debug:function(){return n>=4&&x(e||"log","DEBUG",arguments),this}}},w=function(t){return t[t.length-1]},O=function(t){return null==t||""===t?null:+t};function k(t){return function(e){return t*Math.exp(e)}}function A(t){return function(e){return Math.log(t*e)}}function E(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function j(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function S(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function C(t,e,n,r){var i=n(t[0]),o=n(w(t)),a=(o-i)*e;return[r(i-a),r(o-a)]}function M(t,e){return C(t,e,O,g)}function D(t,e){var n=Math.sign(t[0]);return C(t,e,A(n),k(n))}function F(t,e,n){return C(t,e,S(n),S(1/n))}function N(t,e,n){return C(t,e,E(n),j(n))}function z(t,e,n,r,i){var o=r(t[0]),a=r(w(t)),u=null!=e?r(e):(o+a)/2;return[i(u+(o-u)*n),i(u+(a-u)*n)]}function T(t,e,n){return z(t,e,n,O,g)}function $(t,e,n){var r=Math.sign(t[0]);return z(t,e,n,A(r),k(r))}function R(t,e,n,r){return z(t,e,n,S(r),S(1/r))}function B(t,e,n,r){return z(t,e,n,E(r),j(r))}function P(t){return 1+~~(new Date(t).getMonth()/3)}function L(t){return 1+~~(new Date(t).getUTCMonth()/3)}var U=function(t){return null!=t?s(t)?t:[t]:[]},q=function(t,e,n){var r,i=t[0],o=t[1];return o<i&&(r=o,o=i,i=r),(r=o-i)>=n-e?[e,n]:[i=Math.min(Math.max(i,e),n-r),i+r]},I=function(t){return"function"==typeof t},W=function(t,e){var n,i,a,s,c,l,h,d,p,g=[],m=(t=U(t)).map(function(t,e){return null==t?null:(g.push(e),I(t)?t:u(t).map(f).join("]["))}),v=g.length-1,y=U(e),b="var u,v;return ";if(v<0)return null;for(i=0;i<=v;++i)a=m[n=g[i]],I(a)?(s="(u=this."+(l="f"+n)+"(a))",c="(v=this."+l+"(b))",(h=h||{})[l]=a):(s="(u=a["+a+"])",c="(v=b["+a+"])"),l="((v=v instanceof Date?+v:v),(u=u instanceof Date?+u:u))","descending"!==y[n]?(p=1,d=-1):(p=-1,d=1),b+="("+s+"<"+c+"||u==null)&&v!=null?"+d+":(u>v||v==null)&&u!=null?"+p+":"+l+"!==u&&v===v?"+d+":v!==v&&u===u?"+p+(n<v?":":":0");return a=Function("a","b",b+";"),h&&(a=a.bind(h)),t=t.reduce(function(t,e){return I(e)?(o(e)||[]).forEach(function(e){t[e]=1}):null!=e&&(t[e+""]=1),t},{}),r(a,Object.keys(t))},H=function(t){return I(t)?t:function(){return t}},G=function(t,e){var n,r;function i(){e(r),n=r=null}return function(e){r=e,n&&clearTimeout(n),n=setTimeout(i,t)}},Y=function(t){for(var e,n,r=1,i=arguments.length;r<i;++r)for(n in e=arguments[r])t[n]=e[n];return t},V=function(t,e){var n,r,i,o,a=0;if(t&&(n=t.length))if(null==e){for(r=t[a];null==r||r!=r;r=t[++a]);for(i=o=r;a<n;++a)null!=(r=t[a])&&(r<i&&(i=r),r>o&&(o=r))}else{for(r=e(t[a]);null==r||r!=r;r=e(t[++a]));for(i=o=r;a<n;++a)null!=(r=e(t[a]))&&(r<i&&(i=r),r>o&&(o=r))}return[i,o]},X=function(t,e){var n,r,i,o,a,u=-1,s=t.length;if(null==e){for(;++u<s;)if(null!=(r=t[u])&&r>=r){n=i=r;break}for(o=a=u;++u<s;)null!=(r=t[u])&&(n>r&&(n=r,o=u),i<r&&(i=r,a=u))}else{for(;++u<s;)if(null!=(r=e(t[u],u,t))&&r>=r){n=i=r;break}for(o=a=u;++u<s;)null!=(r=e(t[u],u,t))&&(n>r&&(n=r,o=u),i<r&&(i=r,a=u))}return[o,a]},J={},Z=function(t){var e,n,r={};function i(t){return r.hasOwnProperty(t)&&r[t]!==J}return e={size:0,empty:0,object:r,has:i,get:function(t){return i(t)?r[t]:void 0},set:function(t,n){return i(t)||(++e.size,r[t]===J&&--e.empty),r[t]=n,this},delete:function(t){return i(t)&&(--e.size,++e.empty,r[t]=J),this},clear:function(){e.size=e.empty=0,e.object=r={}},test:function(t){return arguments.length?(n=t,e):n},clean:function(){var t,i,o={},a=0;for(t in r)(i=r[t])===J||n&&n(i)||(o[t]=i,++a);e.size=a,e.empty=0,e.object=r=o}},t&&Object.keys(t).forEach(function(n){e.set(n,t[n])}),e},Q=function(t,e,n,r,i,o){if(!n&&0!==n)return o;var a,u,s=t[0],c=w(t),l=+n;return c<s&&(a=s,s=c,c=a),(a=Math.abs(e-s))<(u=Math.abs(c-e))&&a<=l?r:u<=l?i:o},K=function(t,e){var n=t.prototype=Object.create(e.prototype);return n.constructor=t,n},tt=function(t,e,n,r){var i,o=e[0],a=e[e.length-1];return o>a&&(i=o,o=a,a=i),r=void 0===r||r,((n=void 0===n||n)?o<=t:o<t)&&(r?t<=a:t<a)},et=function(t){return"boolean"==typeof t},nt=function(t){return"[object Date]"===Object.prototype.toString.call(t)},rt=function(t){return"number"==typeof t},it=function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},ot=function(t,e){t&&(t=e?U(t).map(function(t){return t.replace(/\\(.)/g,"$1")}):U(t));var n=t&&t.length?Function("_","return ''+"+t.map(function(t){return"_["+(e?f(t):u(t).map(f).join("]["))+"]"}).join("+'|'+")+";"):function(){return""};return r(n,t,"key")},at=function(t,e){const n=t[0],r=w(t),i=+e;return i?1===i?r:n+i*(r-n):n},ut=function(t,e,n,r){var i=e.length,o=n.length;if(!o)return e;if(!i)return n;for(var a=r||new e.constructor(i+o),u=0,s=0,c=0;u<i&&s<o;++c)a[c]=t(e[u],n[s])>0?n[s++]:e[u++];for(;u<i;++u,++c)a[c]=e[u];for(;s<o;++s,++c)a[c]=n[s];return a},st=function(t,e){for(var n="";--e>=0;)n+=t;return n},ct=function(t,e,n,r){var i=n||" ",o=t+"",a=e-o.length;return a<=0?o:"left"===r?st(i,a)+o:"center"===r?st(i,~~(a/2))+o+st(i,Math.ceil(a/2)):o+st(i,a)},lt=function(t){return w(t)-t[0]||0},ft=function(t){return null==t||""===t?null:!(!t||"false"===t||"0"===t)&&!!t};function ht(t){return rt(t)?t:nt(t)?t:Date.parse(t)}var dt=function(t,e){return e=e||ht,null==t||""===t?null:e(t)},pt=function(t){return null==t||""===t?null:t+""},gt=function(t){for(var e={},n=0,r=t.length;n<r;++n)e[t[n]]=!0;return e},mt=function(t,e,n,r){var i=null!=r?r:"…",o=t+"",a=o.length,u=Math.max(0,e-i.length);return a<=e?o:"left"===n?i+o.slice(a-u):"center"===n?o.slice(0,Math.ceil(u/2))+i+o.slice(a-~~(u/2)):o.slice(0,u)+i},vt=function(t,e,n){if(t){var r,i=0,o=t.length;if(e)for(;i<o;++i)(r=e(t[i]))&&n(r,i,t);else t.forEach(n)}};n.d(e,"f",function(){return r}),n.d(e,"h",function(){return i}),n.d(e,"g",function(){return o}),n.d(e,"v",function(){return p}),n.d(e,"w",function(){return g}),n.d(e,"gb",function(){return m}),n.d(e,"L",function(){return v}),n.d(e,"db",function(){return y}),n.d(e,"r",function(){return b}),n.d(e,"J",function(){return _}),n.d(e,"d",function(){return 0}),n.d(e,"b",function(){return 1}),n.d(e,"e",function(){return 2}),n.d(e,"c",function(){return 3}),n.d(e,"a",function(){return 4}),n.d(e,"N",function(){return M}),n.d(e,"O",function(){return D}),n.d(e,"P",function(){return F}),n.d(e,"Q",function(){return N}),n.d(e,"hb",function(){return T}),n.d(e,"ib",function(){return $}),n.d(e,"jb",function(){return R}),n.d(e,"kb",function(){return B}),n.d(e,"S",function(){return P}),n.d(e,"eb",function(){return L}),n.d(e,"i",function(){return U}),n.d(e,"j",function(){return q}),n.d(e,"k",function(){return W}),n.d(e,"l",function(){return H}),n.d(e,"m",function(){return G}),n.d(e,"n",function(){return a}),n.d(e,"o",function(){return Y}),n.d(e,"p",function(){return V}),n.d(e,"q",function(){return X}),n.d(e,"s",function(){return Z}),n.d(e,"t",function(){return h}),n.d(e,"u",function(){return Q}),n.d(e,"x",function(){return K}),n.d(e,"y",function(){return tt}),n.d(e,"z",function(){return s}),n.d(e,"A",function(){return et}),n.d(e,"B",function(){return nt}),n.d(e,"C",function(){return I}),n.d(e,"D",function(){return rt}),n.d(e,"E",function(){return c}),n.d(e,"F",function(){return it}),n.d(e,"G",function(){return l}),n.d(e,"H",function(){return ot}),n.d(e,"I",function(){return at}),n.d(e,"K",function(){return ut}),n.d(e,"M",function(){return ct}),n.d(e,"R",function(){return w}),n.d(e,"T",function(){return st}),n.d(e,"U",function(){return lt}),n.d(e,"V",function(){return u}),n.d(e,"W",function(){return f}),n.d(e,"X",function(){return ft}),n.d(e,"Y",function(){return dt}),n.d(e,"Z",function(){return O}),n.d(e,"bb",function(){return pt}),n.d(e,"ab",function(){return gt}),n.d(e,"cb",function(){return mt}),n.d(e,"fb",function(){return vt})},function(t,e,n){"use strict";(function(t){n.d(e,"a",function(){return i});var r=n(0);function i(e,n){const i=n&&n.property?Object(r.t)(n.property):r.w;return!Object(r.E)(e)||(o=e,"function"==typeof t&&Object(r.C)(t.isBuffer)&&t.isBuffer(o))?i(JSON.parse(e)):function(t,e){return e&&e.copy?JSON.parse(JSON.stringify(t)):t}(i(e));var o}i.responseType="json"}).call(this,n(6).Buffer)},function(t,e,n){"use strict";var r=/("(?:[^\\"]|\\.)*")|[:,]/g;t.exports=function(t,e){var n,i,o;return e=e||{},n=JSON.stringify([1],void 0,void 0===e.indent?2:e.indent).slice(2,-3),i=""===n?1/0:void 0===e.maxLength?80:e.maxLength,o=e.replacer,function t(e,a,u){var s,c,l,f,h,d,p,g,m,v,y,b;if(e&&"function"==typeof e.toJSON&&(e=e.toJSON()),void 0===(y=JSON.stringify(e,o)))return y;if(p=i-a.length-u,y.length<=p&&(m=y.replace(r,function(t,e){return e||t+" "})).length<=p)return m;if(null!=o&&(e=JSON.parse(y),o=void 0),"object"==typeof e&&null!==e){if(g=a+n,l=[],c=0,Array.isArray(e))for(v="[",s="]",p=e.length;c<p;c++)l.push(t(e[c],g,c===p-1?0:1)||"null");else for(v="{",s="}",p=(d=Object.keys(e)).length;c<p;c++)f=d[c],h=JSON.stringify(f)+": ",void 0!==(b=t(e[f],g,h.length+(c===p-1?0:1)))&&l.push(h+b);if(l.length>0)return[v,n+l.join(",\n"+g),s].join("\n"+a)}return y}(t,"",0)}},function(t,e,n){"use strict";t.exports=function(t,e){e||(e={}),"function"==typeof e&&(e={cmp:e});var n,r="boolean"==typeof e.cycles&&e.cycles,i=e.cmp&&(n=e.cmp,function(t){return function(e,r){var i={key:e,value:t[e]},o={key:r,value:t[r]};return n(i,o)}}),o=[];return function t(e){if(e&&e.toJSON&&"function"==typeof e.toJSON&&(e=e.toJSON()),void 0!==e){if("number"==typeof e)return isFinite(e)?""+e:"null";if("object"!=typeof e)return JSON.stringify(e);var n,a;if(Array.isArray(e)){for(a="[",n=0;n<e.length;n++)n&&(a+=","),a+=t(e[n])||"null";return a+"]"}if(null===e)return"null";if(-1!==o.indexOf(e)){if(r)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var u=o.push(e)-1,s=Object.keys(e).sort(i&&i(e));for(a="",n=0;n<s.length;n++){var c=s[n],l=t(e[c]);l&&(a&&(a+=","),a+=JSON.stringify(c)+":"+l)}return o.splice(u,1),"{"+a+"}"}}(t)}},function(t,e,n){(function(n){var r;e=t.exports=X,r="object"==typeof n&&n.env&&n.env.NODE_DEBUG&&/\bsemver\b/i.test(n.env.NODE_DEBUG)?function(){var t=Array.prototype.slice.call(arguments,0);t.unshift("SEMVER"),console.log.apply(console,t)}:function(){},e.SEMVER_SPEC_VERSION="2.0.0";var i=256,o=Number.MAX_SAFE_INTEGER||9007199254740991,a=e.re=[],u=e.src=[],s=0,c=s++;u[c]="0|[1-9]\\d*";var l=s++;u[l]="[0-9]+";var f=s++;u[f]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var h=s++;u[h]="("+u[c]+")\\.("+u[c]+")\\.("+u[c]+")";var d=s++;u[d]="("+u[l]+")\\.("+u[l]+")\\.("+u[l]+")";var p=s++;u[p]="(?:"+u[c]+"|"+u[f]+")";var g=s++;u[g]="(?:"+u[l]+"|"+u[f]+")";var m=s++;u[m]="(?:-("+u[p]+"(?:\\."+u[p]+")*))";var v=s++;u[v]="(?:-?("+u[g]+"(?:\\."+u[g]+")*))";var y=s++;u[y]="[0-9A-Za-z-]+";var b=s++;u[b]="(?:\\+("+u[y]+"(?:\\."+u[y]+")*))";var x=s++,_="v?"+u[h]+u[m]+"?"+u[b]+"?";u[x]="^"+_+"$";var w="[v=\\s]*"+u[d]+u[v]+"?"+u[b]+"?",O=s++;u[O]="^"+w+"$";var k=s++;u[k]="((?:<|>)?=?)";var A=s++;u[A]=u[l]+"|x|X|\\*";var E=s++;u[E]=u[c]+"|x|X|\\*";var j=s++;u[j]="[v=\\s]*("+u[E]+")(?:\\.("+u[E]+")(?:\\.("+u[E]+")(?:"+u[m]+")?"+u[b]+"?)?)?";var S=s++;u[S]="[v=\\s]*("+u[A]+")(?:\\.("+u[A]+")(?:\\.("+u[A]+")(?:"+u[v]+")?"+u[b]+"?)?)?";var C=s++;u[C]="^"+u[k]+"\\s*"+u[j]+"$";var M=s++;u[M]="^"+u[k]+"\\s*"+u[S]+"$";var D=s++;u[D]="(^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var F=s++;a[F]=new RegExp(u[D],"g");var N=s++;u[N]="(?:~>?)";var z=s++;u[z]="(\\s*)"+u[N]+"\\s+",a[z]=new RegExp(u[z],"g");var T=s++;u[T]="^"+u[N]+u[j]+"$";var $=s++;u[$]="^"+u[N]+u[S]+"$";var R=s++;u[R]="(?:\\^)";var B=s++;u[B]="(\\s*)"+u[R]+"\\s+",a[B]=new RegExp(u[B],"g");var P=s++;u[P]="^"+u[R]+u[j]+"$";var L=s++;u[L]="^"+u[R]+u[S]+"$";var U=s++;u[U]="^"+u[k]+"\\s*("+w+")$|^$";var q=s++;u[q]="^"+u[k]+"\\s*("+_+")$|^$";var I=s++;u[I]="(\\s*)"+u[k]+"\\s*("+w+"|"+u[j]+")",a[I]=new RegExp(u[I],"g");var W=s++;u[W]="^\\s*("+u[j]+")\\s+-\\s+("+u[j]+")\\s*$";var H=s++;u[H]="^\\s*("+u[S]+")\\s+-\\s+("+u[S]+")\\s*$";var G=s++;u[G]="(<|>)?=?\\s*\\*";for(var Y=0;Y<36;Y++)r(Y,u[Y]),a[Y]||(a[Y]=new RegExp(u[Y]));function V(t,e){if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),t instanceof X)return t;if("string"!=typeof t)return null;if(t.length>i)return null;if(!(e.loose?a[O]:a[x]).test(t))return null;try{return new X(t,e)}catch(t){return null}}function X(t,e){if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),t instanceof X){if(t.loose===e.loose)return t;t=t.version}else if("string"!=typeof t)throw new TypeError("Invalid Version: "+t);if(t.length>i)throw new TypeError("version is longer than "+i+" characters");if(!(this instanceof X))return new X(t,e);r("SemVer",t,e),this.options=e,this.loose=!!e.loose;var n=t.trim().match(e.loose?a[O]:a[x]);if(!n)throw new TypeError("Invalid Version: "+t);if(this.raw=t,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>o||this.major<0)throw new TypeError("Invalid major version");if(this.minor>o||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>o||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(function(t){if(/^[0-9]+$/.test(t)){var e=+t;if(e>=0&&e<o)return e}return t}):this.prerelease=[],this.build=n[5]?n[5].split("."):[],this.format()}e.parse=V,e.valid=function(t,e){var n=V(t,e);return n?n.version:null},e.clean=function(t,e){var n=V(t.trim().replace(/^[=v]+/,""),e);return n?n.version:null},e.SemVer=X,X.prototype.format=function(){return this.version=this.major+"."+this.minor+"."+this.patch,this.prerelease.length&&(this.version+="-"+this.prerelease.join(".")),this.version},X.prototype.toString=function(){return this.version},X.prototype.compare=function(t){return r("SemVer.compare",this.version,this.options,t),t instanceof X||(t=new X(t,this.options)),this.compareMain(t)||this.comparePre(t)},X.prototype.compareMain=function(t){return t instanceof X||(t=new X(t,this.options)),Z(this.major,t.major)||Z(this.minor,t.minor)||Z(this.patch,t.patch)},X.prototype.comparePre=function(t){if(t instanceof X||(t=new X(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;var e=0;do{var n=this.prerelease[e],i=t.prerelease[e];if(r("prerelease compare",e,n,i),void 0===n&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===n)return-1;if(n!==i)return Z(n,i)}while(++e)},X.prototype.compareBuild=function(t){t instanceof X||(t=new X(t,this.options));var e=0;do{var n=this.build[e],i=t.build[e];if(r("prerelease compare",e,n,i),void 0===n&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===n)return-1;if(n!==i)return Z(n,i)}while(++e)},X.prototype.inc=function(t,e){switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",e);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",e);break;case"prepatch":this.prerelease.length=0,this.inc("patch",e),this.inc("pre",e);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",e),this.inc("pre",e);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":if(0===this.prerelease.length)this.prerelease=[0];else{for(var n=this.prerelease.length;--n>=0;)"number"==typeof this.prerelease[n]&&(this.prerelease[n]++,n=-2);-1===n&&this.prerelease.push(0)}e&&(this.prerelease[0]===e?isNaN(this.prerelease[1])&&(this.prerelease=[e,0]):this.prerelease=[e,0]);break;default:throw new Error("invalid increment argument: "+t)}return this.format(),this.raw=this.version,this},e.inc=function(t,e,n,r){"string"==typeof n&&(r=n,n=void 0);try{return new X(t,n).inc(e,r).version}catch(t){return null}},e.diff=function(t,e){if(et(t,e))return null;var n=V(t),r=V(e),i="";if(n.prerelease.length||r.prerelease.length){i="pre";var o="prerelease"}for(var a in n)if(("major"===a||"minor"===a||"patch"===a)&&n[a]!==r[a])return i+a;return o},e.compareIdentifiers=Z;var J=/^[0-9]+$/;function Z(t,e){var n=J.test(t),r=J.test(e);return n&&r&&(t=+t,e=+e),t===e?0:n&&!r?-1:r&&!n?1:t<e?-1:1}function Q(t,e,n){return new X(t,n).compare(new X(e,n))}function K(t,e,n){return Q(t,e,n)>0}function tt(t,e,n){return Q(t,e,n)<0}function et(t,e,n){return 0===Q(t,e,n)}function nt(t,e,n){return 0!==Q(t,e,n)}function rt(t,e,n){return Q(t,e,n)>=0}function it(t,e,n){return Q(t,e,n)<=0}function ot(t,e,n,r){switch(e){case"===":return"object"==typeof t&&(t=t.version),"object"==typeof n&&(n=n.version),t===n;case"!==":return"object"==typeof t&&(t=t.version),"object"==typeof n&&(n=n.version),t!==n;case"":case"=":case"==":return et(t,n,r);case"!=":return nt(t,n,r);case">":return K(t,n,r);case">=":return rt(t,n,r);case"<":return tt(t,n,r);case"<=":return it(t,n,r);default:throw new TypeError("Invalid operator: "+e)}}function at(t,e){if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),t instanceof at){if(t.loose===!!e.loose)return t;t=t.value}if(!(this instanceof at))return new at(t,e);r("comparator",t,e),this.options=e,this.loose=!!e.loose,this.parse(t),this.semver===ut?this.value="":this.value=this.operator+this.semver.version,r("comp",this)}e.rcompareIdentifiers=function(t,e){return Z(e,t)},e.major=function(t,e){return new X(t,e).major},e.minor=function(t,e){return new X(t,e).minor},e.patch=function(t,e){return new X(t,e).patch},e.compare=Q,e.compareLoose=function(t,e){return Q(t,e,!0)},e.compareBuild=function(t,e,n){var r=new X(t,n),i=new X(e,n);return r.compare(i)||r.compareBuild(i)},e.rcompare=function(t,e,n){return Q(e,t,n)},e.sort=function(t,n){return t.sort(function(t,r){return e.compareBuild(t,r,n)})},e.rsort=function(t,n){return t.sort(function(t,r){return e.compareBuild(r,t,n)})},e.gt=K,e.lt=tt,e.eq=et,e.neq=nt,e.gte=rt,e.lte=it,e.cmp=ot,e.Comparator=at;var ut={};function st(t,e){if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),t instanceof st)return t.loose===!!e.loose&&t.includePrerelease===!!e.includePrerelease?t:new st(t.raw,e);if(t instanceof at)return new st(t.value,e);if(!(this instanceof st))return new st(t,e);if(this.options=e,this.loose=!!e.loose,this.includePrerelease=!!e.includePrerelease,this.raw=t,this.set=t.split(/\s*\|\|\s*/).map(function(t){return this.parseRange(t.trim())},this).filter(function(t){return t.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+t);this.format()}function ct(t,e){for(var n=!0,r=t.slice(),i=r.pop();n&&r.length;)n=r.every(function(t){return i.intersects(t,e)}),i=r.pop();return n}function lt(t){return!t||"x"===t.toLowerCase()||"*"===t}function ft(t,e,n,r,i,o,a,u,s,c,l,f,h){return((e=lt(n)?"":lt(r)?">="+n+".0.0":lt(i)?">="+n+"."+r+".0":">="+e)+" "+(u=lt(s)?"":lt(c)?"<"+(+s+1)+".0.0":lt(l)?"<"+s+"."+(+c+1)+".0":f?"<="+s+"."+c+"."+l+"-"+f:"<="+u)).trim()}function ht(t,e,n){for(var i=0;i<t.length;i++)if(!t[i].test(e))return!1;if(e.prerelease.length&&!n.includePrerelease){for(i=0;i<t.length;i++)if(r(t[i].semver),t[i].semver!==ut&&t[i].semver.prerelease.length>0){var o=t[i].semver;if(o.major===e.major&&o.minor===e.minor&&o.patch===e.patch)return!0}return!1}return!0}function dt(t,e,n){try{e=new st(e,n)}catch(t){return!1}return e.test(t)}function pt(t,e,n,r){var i,o,a,u,s;switch(t=new X(t,r),e=new st(e,r),n){case">":i=K,o=it,a=tt,u=">",s=">=";break;case"<":i=tt,o=rt,a=K,u="<",s="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(dt(t,e,r))return!1;for(var c=0;c<e.set.length;++c){var l=e.set[c],f=null,h=null;if(l.forEach(function(t){t.semver===ut&&(t=new at(">=0.0.0")),f=f||t,h=h||t,i(t.semver,f.semver,r)?f=t:a(t.semver,h.semver,r)&&(h=t)}),f.operator===u||f.operator===s)return!1;if((!h.operator||h.operator===u)&&o(t,h.semver))return!1;if(h.operator===s&&a(t,h.semver))return!1}return!0}at.prototype.parse=function(t){var e=this.options.loose?a[U]:a[q],n=t.match(e);if(!n)throw new TypeError("Invalid comparator: "+t);this.operator=void 0!==n[1]?n[1]:"","="===this.operator&&(this.operator=""),n[2]?this.semver=new X(n[2],this.options.loose):this.semver=ut},at.prototype.toString=function(){return this.value},at.prototype.test=function(t){if(r("Comparator.test",t,this.options.loose),this.semver===ut||t===ut)return!0;if("string"==typeof t)try{t=new X(t,this.options)}catch(t){return!1}return ot(t,this.operator,this.semver,this.options)},at.prototype.intersects=function(t,e){if(!(t instanceof at))throw new TypeError("a Comparator is required");var n;if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),""===this.operator)return""===this.value||(n=new st(t.value,e),dt(this.value,n,e));if(""===t.operator)return""===t.value||(n=new st(this.value,e),dt(t.semver,n,e));var r=!(">="!==this.operator&&">"!==this.operator||">="!==t.operator&&">"!==t.operator),i=!("<="!==this.operator&&"<"!==this.operator||"<="!==t.operator&&"<"!==t.operator),o=this.semver.version===t.semver.version,a=!(">="!==this.operator&&"<="!==this.operator||">="!==t.operator&&"<="!==t.operator),u=ot(this.semver,"<",t.semver,e)&&(">="===this.operator||">"===this.operator)&&("<="===t.operator||"<"===t.operator),s=ot(this.semver,">",t.semver,e)&&("<="===this.operator||"<"===this.operator)&&(">="===t.operator||">"===t.operator);return r||i||o&&a||u||s},e.Range=st,st.prototype.format=function(){return this.range=this.set.map(function(t){return t.join(" ").trim()}).join("||").trim(),this.range},st.prototype.toString=function(){return this.range},st.prototype.parseRange=function(t){var e=this.options.loose;t=t.trim();var n=e?a[H]:a[W];t=t.replace(n,ft),r("hyphen replace",t),t=t.replace(a[I],"$1$2$3"),r("comparator trim",t,a[I]),t=(t=(t=t.replace(a[z],"$1~")).replace(a[B],"$1^")).split(/\s+/).join(" ");var i=e?a[U]:a[q],o=t.split(" ").map(function(t){return function(t,e){return r("comp",t,e),t=function(t,e){return t.trim().split(/\s+/).map(function(t){return function(t,e){r("caret",t,e);var n=e.loose?a[L]:a[P];return t.replace(n,function(e,n,i,o,a){var u;return r("caret",t,e,n,i,o,a),lt(n)?u="":lt(i)?u=">="+n+".0.0 <"+(+n+1)+".0.0":lt(o)?u="0"===n?">="+n+"."+i+".0 <"+n+"."+(+i+1)+".0":">="+n+"."+i+".0 <"+(+n+1)+".0.0":a?(r("replaceCaret pr",a),u="0"===n?"0"===i?">="+n+"."+i+"."+o+"-"+a+" <"+n+"."+i+"."+(+o+1):">="+n+"."+i+"."+o+"-"+a+" <"+n+"."+(+i+1)+".0":">="+n+"."+i+"."+o+"-"+a+" <"+(+n+1)+".0.0"):(r("no pr"),u="0"===n?"0"===i?">="+n+"."+i+"."+o+" <"+n+"."+i+"."+(+o+1):">="+n+"."+i+"."+o+" <"+n+"."+(+i+1)+".0":">="+n+"."+i+"."+o+" <"+(+n+1)+".0.0"),r("caret return",u),u})}(t,e)}).join(" ")}(t,e),r("caret",t),t=function(t,e){return t.trim().split(/\s+/).map(function(t){return function(t,e){var n=e.loose?a[$]:a[T];return t.replace(n,function(e,n,i,o,a){var u;return r("tilde",t,e,n,i,o,a),lt(n)?u="":lt(i)?u=">="+n+".0.0 <"+(+n+1)+".0.0":lt(o)?u=">="+n+"."+i+".0 <"+n+"."+(+i+1)+".0":a?(r("replaceTilde pr",a),u=">="+n+"."+i+"."+o+"-"+a+" <"+n+"."+(+i+1)+".0"):u=">="+n+"."+i+"."+o+" <"+n+"."+(+i+1)+".0",r("tilde return",u),u})}(t,e)}).join(" ")}(t,e),r("tildes",t),t=function(t,e){return r("replaceXRanges",t,e),t.split(/\s+/).map(function(t){return function(t,e){t=t.trim();var n=e.loose?a[M]:a[C];return t.replace(n,function(n,i,o,a,u,s){r("xRange",t,n,i,o,a,u,s);var c=lt(o),l=c||lt(a),f=l||lt(u),h=f;return"="===i&&h&&(i=""),s=e.includePrerelease?"-0":"",c?n=">"===i||"<"===i?"<0.0.0-0":"*":i&&h?(l&&(a=0),u=0,">"===i?(i=">=",l?(o=+o+1,a=0,u=0):(a=+a+1,u=0)):"<="===i&&(i="<",l?o=+o+1:a=+a+1),n=i+o+"."+a+"."+u+s):l?n=">="+o+".0.0"+s+" <"+(+o+1)+".0.0"+s:f&&(n=">="+o+"."+a+".0"+s+" <"+o+"."+(+a+1)+".0"+s),r("xRange return",n),n})}(t,e)}).join(" ")}(t,e),r("xrange",t),t=function(t,e){return r("replaceStars",t,e),t.trim().replace(a[G],"")}(t,e),r("stars",t),t}(t,this.options)},this).join(" ").split(/\s+/);return this.options.loose&&(o=o.filter(function(t){return!!t.match(i)})),o=o.map(function(t){return new at(t,this.options)},this)},st.prototype.intersects=function(t,e){if(!(t instanceof st))throw new TypeError("a Range is required");return this.set.some(function(n){return ct(n,e)&&t.set.some(function(t){return ct(t,e)&&n.every(function(n){return t.every(function(t){return n.intersects(t,e)})})})})},e.toComparators=function(t,e){return new st(t,e).set.map(function(t){return t.map(function(t){return t.value}).join(" ").trim().split(" ")})},st.prototype.test=function(t){if(!t)return!1;if("string"==typeof t)try{t=new X(t,this.options)}catch(t){return!1}for(var e=0;e<this.set.length;e++)if(ht(this.set[e],t,this.options))return!0;return!1},e.satisfies=dt,e.maxSatisfying=function(t,e,n){var r=null,i=null;try{var o=new st(e,n)}catch(t){return null}return t.forEach(function(t){o.test(t)&&(r&&-1!==i.compare(t)||(i=new X(r=t,n)))}),r},e.minSatisfying=function(t,e,n){var r=null,i=null;try{var o=new st(e,n)}catch(t){return null}return t.forEach(function(t){o.test(t)&&(r&&1!==i.compare(t)||(i=new X(r=t,n)))}),r},e.minVersion=function(t,e){t=new st(t,e);var n=new X("0.0.0");if(t.test(n))return n;if(n=new X("0.0.0-0"),t.test(n))return n;n=null;for(var r=0;r<t.set.length;++r){var i=t.set[r];i.forEach(function(t){var e=new X(t.semver.version);switch(t.operator){case">":0===e.prerelease.length?e.patch++:e.prerelease.push(0),e.raw=e.format();case"":case">=":n&&!K(n,e)||(n=e);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+t.operator)}})}if(n&&t.test(n))return n;return null},e.validRange=function(t,e){try{return new st(t,e).range||"*"}catch(t){return null}},e.ltr=function(t,e,n){return pt(t,e,"<",n)},e.gtr=function(t,e,n){return pt(t,e,">",n)},e.outside=pt,e.prerelease=function(t,e){var n=V(t,e);return n&&n.prerelease.length?n.prerelease:null},e.intersects=function(t,e,n){return t=new st(t,n),e=new st(e,n),t.intersects(e)},e.coerce=function(t,e){if(t instanceof X)return t;"number"==typeof t&&(t=String(t));if("string"!=typeof t)return null;var n=null;if((e=e||{}).rtl){for(var r;(r=a[F].exec(t))&&(!n||n.index+n[0].length!==t.length);)n&&r.index+r[0].length===n.index+n[0].length||(n=r),a[F].lastIndex=r.index+r[1].length+r[2].length;a[F].lastIndex=-1}else n=t.match(a[D]);if(null===n)return null;return V(n[2]+"."+(n[3]||"0")+"."+(n[4]||"0"),e)}}).call(this,n(13))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=/\/schema\/([\w-]+)\/([\w\.\-]+)\.json$/g.exec(t).slice(1,3);return{library:e[0],version:e[1]}}},function(t,e,n){"use strict";(function(t){
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh <feross(a)feross.org> <http://feross.org>
* @license MIT
*/
-var r=n(16),i=n(17),o=n(18);function a(){return s.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function u(t,e){if(a()<e)throw new RangeError("Invalid typed array length");return s.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=s.prototype:(null===t&&(t=new s(e)),t.length=e),t}function s(t,e,n){if(!(s.TYPED_ARRAY_SUPPORT||this instanceof s))return new s(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return f(this,t)}return c(this,t,e,n)}function c(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r);s.TYPED_ARRAY_SUPPORT?(t=e).__proto__=s.prototype:t=h(t,e);return t}(t,e,n,r):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!s.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|p(e,n),i=(t=u(t,r)).write(e,n);i!==r&&(t=t.slice(0,i));return t}(t,e,n):function(t,e){if(s.isBuffer(e)){var n=0|d(e.length);return 0===(t=u(t,n)).length?t:(e.copy(t,0,0,n),t)}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?u(t,0):h(t,e);if("Buffer"===e.type&&o(e.data))return h(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function l(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function f(t,e){if(l(e),t=u(t,e<0?0:0|d(e)),!s.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function h(t,e){var n=e.length<0?0:0|d(e.length);t=u(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function d(t){if(t>=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|t}function p(t,e){if(s.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return L(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return U(t).length;default:if(r)return L(t).length;e=(""+e).toLowerCase(),r=!0}}function g(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function m(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=s.from(e,r)),s.isBuffer(e))return 0===e.length?-1:v(t,e,n,r,i);if("number"==typeof e)return e&=255,s.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):v(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function v(t,e,n,r,i){var o,a=1,u=t.length,s=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;a=2,u/=2,s/=2,n/=2}function c(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(i){var l=-1;for(o=n;o<u;o++)if(c(t,o)===c(e,-1===l?0:o-l)){if(-1===l&&(l=o),o-l+1===s)return l*a}else-1!==l&&(o-=o-l),l=-1}else for(n+s>u&&(n=u-s),o=n;o>=0;o--){for(var f=!0,h=0;h<s;h++)if(c(t,o+h)!==c(e,h)){f=!1;break}if(f)return o}return-1}function y(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r))>i&&(r=i):r=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var a=0;a<r;++a){var u=parseInt(e.substr(2*a,2),16);if(isNaN(u))return a;t[n+a]=u}return a}function b(t,e,n,r){return q(L(e,t.length-n),t,n,r)}function x(t,e,n,r){return q(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function _(t,e,n,r){return x(t,e,n,r)}function w(t,e,n,r){return q(U(e),t,n,r)}function O(t,e,n,r){return q(function(t,e){for(var n,r,i,o=[],a=0;a<t.length&&!((e-=2)<0);++a)n=t.charCodeAt(a),r=n>>8,i=n%256,o.push(i),o.push(r);return o}(e,t.length-n),t,n,r)}function k(t,e,n){return 0===e&&n===t.length?r.fromByteArray(t):r.fromByteArray(t.slice(e,n))}function A(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;i<n;){var o,a,u,s,c=t[i],l=null,f=c>239?4:c>223?3:c>191?2:1;if(i+f<=n)switch(f){case 1:c<128&&(l=c);break;case 2:128==(192&(o=t[i+1]))&&(s=(31&c)<<6|63&o)>127&&(l=s);break;case 3:o=t[i+1],a=t[i+2],128==(192&o)&&128==(192&a)&&(s=(15&c)<<12|(63&o)<<6|63&a)>2047&&(s<55296||s>57343)&&(l=s);break;case 4:o=t[i+1],a=t[i+2],u=t[i+3],128==(192&o)&&128==(192&a)&&128==(192&u)&&(s=(15&c)<<18|(63&o)<<12|(63&a)<<6|63&u)>65535&&s<1114112&&(l=s)}null===l?(l=65533,f=1):l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|1023&l),r.push(l),i+=f}return function(t){var e=t.length;if(e<=E)return String.fromCharCode.apply(String,t);var n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=E));return n}(r)}e.Buffer=s,e.SlowBuffer=function(t){+t!=t&&(t=0);return s.alloc(+t)},e.INSPECT_MAX_BYTES=50,s.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=a(),s.poolSize=8192,s._augment=function(t){return t.__proto__=s.prototype,t},s.from=function(t,e,n){return c(null,t,e,n)},s.TYPED_ARRAY_SUPPORT&&(s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0})),s.alloc=function(t,e,n){return function(t,e,n,r){return l(e),e<=0?u(t,e):void 0!==n?"string"==typeof r?u(t,e).fill(n,r):u(t,e).fill(n):u(t,e)}(null,t,e,n)},s.allocUnsafe=function(t){return f(null,t)},s.allocUnsafeSlow=function(t){return f(null,t)},s.isBuffer=function(t){return!(null==t||!t._isBuffer)},s.compare=function(t,e){if(!s.isBuffer(t)||!s.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,o=Math.min(n,r);i<o;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},s.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},s.concat=function(t,e){if(!o(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return s.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=s.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var a=t[n];if(!s.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(r,i),i+=a.length}return r},s.byteLength=p,s.prototype._isBuffer=!0,s.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)g(this,e,e+1);return this},s.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)g(this,e,e+3),g(this,e+1,e+2);return this},s.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)g(this,e,e+7),g(this,e+1,e+6),g(this,e+2,e+5),g(this,e+3,e+4);return this},s.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?A(this,0,t):function(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return C(this,e,n);case"utf8":case"utf-8":return A(this,e,n);case"ascii":return j(this,e,n);case"latin1":case"binary":return S(this,e,n);case"base64":return k(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return M(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}.apply(this,arguments)},s.prototype.equals=function(t){if(!s.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===s.compare(this,t)},s.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},s.prototype.compare=function(t,e,n,r,i){if(!s.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(e>>>=0),u=Math.min(o,a),c=this.slice(r,i),l=t.slice(e,n),f=0;f<u;++f)if(c[f]!==l[f]){o=c[f],a=l[f];break}return o<a?-1:a<o?1:0},s.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},s.prototype.indexOf=function(t,e,n){return m(this,t,e,n,!0)},s.prototype.lastIndexOf=function(t,e,n){return m(this,t,e,n,!1)},s.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return y(this,t,e,n);case"utf8":case"utf-8":return b(this,t,e,n);case"ascii":return x(this,t,e,n);case"latin1":case"binary":return _(this,t,e,n);case"base64":return w(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,e,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var E=4096;function j(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(127&t[i]);return r}function S(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(t[i]);return r}function C(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var i="",o=e;o<n;++o)i+=P(t[o]);return i}function M(t,e,n){for(var r=t.slice(e,n),i="",o=0;o<r.length;o+=2)i+=String.fromCharCode(r[o]+256*r[o+1]);return i}function D(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function F(t,e,n,r,i,o){if(!s.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<o)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function N(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-n,2);i<o;++i)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function z(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-n,4);i<o;++i)t[n+i]=e>>>8*(r?i:3-i)&255}function T(t,e,n,r,i,o){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function $(t,e,n,r,o){return o||T(t,0,n,4),i.write(t,e,n,r,23,4),n+4}function R(t,e,n,r,o){return o||T(t,0,n,8),i.write(t,e,n,r,52,8),n+8}s.prototype.slice=function(t,e){var n,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),s.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=s.prototype;else{var i=e-t;n=new s(i,void 0);for(var o=0;o<i;++o)n[o]=this[o+t]}return n},s.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||D(t,e,this.length);for(var r=this[t],i=1,o=0;++o<e&&(i*=256);)r+=this[t+o]*i;return r},s.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||D(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},s.prototype.readUInt8=function(t,e){return e||D(t,1,this.length),this[t]},s.prototype.readUInt16LE=function(t,e){return e||D(t,2,this.length),this[t]|this[t+1]<<8},s.prototype.readUInt16BE=function(t,e){return e||D(t,2,this.length),this[t]<<8|this[t+1]},s.prototype.readUInt32LE=function(t,e){return e||D(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},s.prototype.readUInt32BE=function(t,e){return e||D(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},s.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||D(t,e,this.length);for(var r=this[t],i=1,o=0;++o<e&&(i*=256);)r+=this[t+o]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*e)),r},s.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||D(t,e,this.length);for(var r=e,i=1,o=this[t+--r];r>0&&(i*=256);)o+=this[t+--r]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},s.prototype.readInt8=function(t,e){return e||D(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},s.prototype.readInt16LE=function(t,e){e||D(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt16BE=function(t,e){e||D(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt32LE=function(t,e){return e||D(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},s.prototype.readInt32BE=function(t,e){return e||D(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},s.prototype.readFloatLE=function(t,e){return e||D(t,4,this.length),i.read(this,t,!0,23,4)},s.prototype.readFloatBE=function(t,e){return e||D(t,4,this.length),i.read(this,t,!1,23,4)},s.prototype.readDoubleLE=function(t,e){return e||D(t,8,this.length),i.read(this,t,!0,52,8)},s.prototype.readDoubleBE=function(t,e){return e||D(t,8,this.length),i.read(this,t,!1,52,8)},s.prototype.writeUIntLE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||F(this,t,e,n,Math.pow(2,8*n)-1,0);var i=1,o=0;for(this[e]=255&t;++o<n&&(i*=256);)this[e+o]=t/i&255;return e+n},s.prototype.writeUIntBE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||F(this,t,e,n,Math.pow(2,8*n)-1,0);var i=n-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+n},s.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||F(this,t,e,1,255,0),s.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},s.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||F(this,t,e,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):N(this,t,e,!0),e+2},s.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||F(this,t,e,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):N(this,t,e,!1),e+2},s.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||F(this,t,e,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):z(this,t,e,!0),e+4},s.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||F(this,t,e,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):z(this,t,e,!1),e+4},s.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);F(this,t,e,n,i-1,-i)}var o=0,a=1,u=0;for(this[e]=255&t;++o<n&&(a*=256);)t<0&&0===u&&0!==this[e+o-1]&&(u=1),this[e+o]=(t/a>>0)-u&255;return e+n},s.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);F(this,t,e,n,i-1,-i)}var o=n-1,a=1,u=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===u&&0!==this[e+o+1]&&(u=1),this[e+o]=(t/a>>0)-u&255;return e+n},s.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||F(this,t,e,1,127,-128),s.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},s.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||F(this,t,e,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):N(this,t,e,!0),e+2},s.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||F(this,t,e,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):N(this,t,e,!1),e+2},s.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||F(this,t,e,4,2147483647,-2147483648),s.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):z(this,t,e,!0),e+4},s.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||F(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),s.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):z(this,t,e,!1),e+4},s.prototype.writeFloatLE=function(t,e,n){return $(this,t,e,!0,n)},s.prototype.writeFloatBE=function(t,e,n){return $(this,t,e,!1,n)},s.prototype.writeDoubleLE=function(t,e,n){return R(this,t,e,!0,n)},s.prototype.writeDoubleBE=function(t,e,n){return R(this,t,e,!1,n)},s.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,o=r-n;if(this===t&&n<e&&e<r)for(i=o-1;i>=0;--i)t[i+e]=this[i+n];else if(o<1e3||!s.TYPED_ARRAY_SUPPORT)for(i=0;i<o;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+o),e);return o},s.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!s.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var o;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(o=e;o<n;++o)this[o]=t;else{var a=s.isBuffer(t)?t:L(new s(t,r).toString()),u=a.length;for(o=0;o<n-e;++o)this[o+e]=a[o%u]}return this};var B=/[^+\/0-9A-Za-z-_]/g;function P(t){return t<16?"0"+t.toString(16):t.toString(16)}function L(t,e){var n;e=e||1/0;for(var r=t.length,i=null,o=[],a=0;a<r;++a){if((n=t.charCodeAt(a))>55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;o.push(n)}else if(n<2048){if((e-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function U(t){return r.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(B,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function q(t,e,n,r){for(var i=0;i<r&&!(i+n>=e.length||i>=t.length);++i)e[i+n]=t[i];return i}}).call(this,n(15))},function(t){t.exports={a:"5.4.0"}},function(e,n){e.exports=t},function(t,e,n){"use strict";n.r(e);var r={};n.r(r),n.d(r,"aggregate",function(){return po}),n.d(r,"bin",function(){return mo}),n.d(r,"collect",function(){return bo}),n.d(r,"compare",function(){return xo}),n.d(r,"countpattern",function(){return wo}),n.d(r,"cross",function(){return ko}),n.d(r,"density",function(){return Co}),n.d(r,"expression",function(){return Fo}),n.d(r,"extent",function(){return zo}),n.d(r,"facet",function(){return Ro}),n.d(r,"field",function(){return Po}),n.d(r,"filter",function(){return Uo}),n.d(r,"flatten",function(){return Io}),n.d(r,"fold",function(){return Wo}),n.d(r,"formula",function(){return Ho}),n.d(r,"generate",function(){return Go}),n.d(r,"impute",function(){return Xo}),n.d(r,"joinaggregate",function(){return Jo}),n.d(r,"kde",function(){return Qo}),n.d(r,"key",function(){return Ko}),n.d(r,"load",function(){return ea}),n.d(r,"lookup",function(){return ra}),n.d(r,"multiextent",function(){return ia}),n.d(r,"multivalues",function(){return aa}),n.d(r,"params",function(){return sa}),n.d(r,"pivot",function(){return ca}),n.d(r,"prefacet",function(){return fa}),n.d(r,"project",function(){return ha}),n.d(r,"proxy",function(){return da}),n.d(r,"relay",function(){return pa}),n.d(r,"sample",function(){return ga}),n.d(r,"sequence",function(){return ma}),n.d(r,"sieve",function(){return va}),n.d(r,"subflow",function(){return To}),n.d(r,"tupleindex",function(){return ya}),n.d(r,"values",function(){return ba}),n.d(r,"window",function(){return ka});var i={};n.r(i),n.d(i,"bound",function(){return oh}),n.d(i,"identifier",function(){return sh}),n.d(i,"mark",function(){return ch}),n.d(i,"overlap",function(){return lh}),n.d(i,"render",function(){return yh}),n.d(i,"viewlayout",function(){return Uh});var o={};n.r(o),n.d(o,"interpolate",function(){return Ip}),n.d(o,"interpolateArray",function(){return Fp}),n.d(o,"interpolateBasis",function(){return _p}),n.d(o,"interpolateBasisClosed",function(){return wp}),n.d(o,"interpolateDate",function(){return Np}),n.d(o,"interpolateDiscrete",function(){return Wp}),n.d(o,"interpolateHue",function(){return Hp}),n.d(o,"interpolateNumber",function(){return zp}),n.d(o,"interpolateObject",function(){return Tp}),n.d(o,"interpolateRound",function(){return Gp}),n.d(o,"interpolateString",function(){return qp}),n.d(o,"interpolateTransformCss",function(){return Zp}),n.d(o,"interpolateTransformSvg",function(){return Qp}),n.d(o,"interpolateZoom",function(){return eg}),n.d(o,"interpolateRgb",function(){return Sp}),n.d(o,"interpolateRgbBasis",function(){return Mp}),n.d(o,"interpolateRgbBasisClosed",function(){return Dp}),n.d(o,"interpolateHsl",function(){return rg}),n.d(o,"interpolateHslLong",function(){return ig}),n.d(o,"interpolateLab",function(){return og}),n.d(o,"interpolateHcl",function(){return ug}),n.d(o,"interpolateHclLong",function(){return sg}),n.d(o,"interpolateCubehelix",function(){return lg}),n.d(o,"interpolateCubehelixLong",function(){return fg}),n.d(o,"piecewise",function(){return hg}),n.d(o,"quantize",function(){return dg});var a={};n.r(a),n.d(a,"axisticks",function(){return Um}),n.d(a,"datajoin",function(){return qm}),n.d(a,"encode",function(){return Hm}),n.d(a,"legendentries",function(){return Km}),n.d(a,"linkpath",function(){return ov}),n.d(a,"pie",function(){return cv}),n.d(a,"scale",function(){return dv}),n.d(a,"sortitems",function(){return vv}),n.d(a,"stack",function(){return bv}),n.d(a,"validTicks",function(){return Bm});var u={};n.r(u),n.d(u,"contour",function(){return Qv}),n.d(u,"geojson",function(){return ey}),n.d(u,"geopath",function(){return _w}),n.d(u,"geopoint",function(){return ww}),n.d(u,"geoshape",function(){return Ow}),n.d(u,"graticule",function(){return kw}),n.d(u,"projection",function(){return Aw});var s={};n.r(s),n.d(s,"force",function(){return _O});var c={};n.r(c),n.d(c,"nest",function(){return Ok}),n.d(c,"pack",function(){return Ck}),n.d(c,"partition",function(){return Fk}),n.d(c,"stratify",function(){return zk}),n.d(c,"tree",function(){return Rk}),n.d(c,"treelinks",function(){return Pk}),n.d(c,"treemap",function(){return qk});var l={};n.r(l),n.d(l,"loess",function(){return Hk}),n.d(l,"regression",function(){return Yk});var f={};n.r(f),n.d(f,"voronoi",function(){return FA});var h={};n.r(h),n.d(h,"wordcloud",function(){return YA});var d={};n.r(d),n.d(d,"crossfilter",function(){return QA}),n.d(d,"resolvefilter",function(){return tE});var p={};n.r(p),n.d(p,"version",function(){return eE.a}),n.d(p,"Dataflow",function(){return Qr}),n.d(p,"EventStream",function(){return Ft}),n.d(p,"Parameters",function(){return kt}),n.d(p,"Pulse",function(){return Ur}),n.d(p,"MultiPulse",function(){return Gr}),n.d(p,"Operator",function(){return St}),n.d(p,"Transform",function(){return ei}),n.d(p,"changeset",function(){return wt}),n.d(p,"ingest",function(){return vt}),n.d(p,"isTuple",function(){return pt}),n.d(p,"definition",function(){return ii}),n.d(p,"transform",function(){return oi}),n.d(p,"transforms",function(){return ri}),n.d(p,"tupleid",function(){return gt}),n.d(p,"scale",function(){return km}),n.d(p,"scheme",function(){return $m}),n.d(p,"interpolate",function(){return Fm}),n.d(p,"interpolateColors",function(){return Cm}),n.d(p,"interpolateRange",function(){return Sm}),n.d(p,"timeInterval",function(){return pd}),n.d(p,"quantizeInterpolator",function(){return Mm}),n.d(p,"projection",function(){return vw}),n.d(p,"View",function(){return LC}),n.d(p,"expressionFunction",function(){return fC}),n.d(p,"formatLocale",function(){return Lg}),n.d(p,"timeFormatLocale",function(){return Nr}),n.d(p,"parse",function(){return xN}),n.d(p,"runtime",function(){return OC}),n.d(p,"runtimeContext",function(){return AC}),n.d(p,"bin",function(){return pi}),n.d(p,"bootstrapCI",function(){return Ui}),n.d(p,"quartiles",function(){return qi}),n.d(p,"random",function(){return mi}),n.d(p,"setRandom",function(){return vi}),n.d(p,"randomLCG",function(){return Ii}),n.d(p,"randomInteger",function(){return Wi}),n.d(p,"randomKDE",function(){return Gi}),n.d(p,"randomMixture",function(){return Yi}),n.d(p,"randomNormal",function(){return Hi}),n.d(p,"randomUniform",function(){return Vi}),n.d(p,"regressionLinear",function(){return Ki}),n.d(p,"regressionLog",function(){return to}),n.d(p,"regressionExp",function(){return eo}),n.d(p,"regressionPow",function(){return no}),n.d(p,"regressionQuad",function(){return ro}),n.d(p,"regressionPoly",function(){return io}),n.d(p,"regressionLoess",function(){return oo}),n.d(p,"sampleCurve",function(){return co}),n.d(p,"accessor",function(){return ct.f}),n.d(p,"accessorName",function(){return ct.h}),n.d(p,"accessorFields",function(){return ct.g}),n.d(p,"id",function(){return ct.v}),n.d(p,"identity",function(){return ct.w}),n.d(p,"zero",function(){return ct.gb}),n.d(p,"one",function(){return ct.L}),n.d(p,"truthy",function(){return ct.db}),n.d(p,"falsy",function(){return ct.r}),n.d(p,"logger",function(){return ct.J}),n.d(p,"None",function(){return ct.d}),n.d(p,"Error",function(){return ct.b}),n.d(p,"Warn",function(){return ct.e}),n.d(p,"Info",function(){return ct.c}),n.d(p,"Debug",function(){return ct.a}),n.d(p,"panLinear",function(){return ct.N}),n.d(p,"panLog",function(){return ct.O}),n.d(p,"panPow",function(){return ct.P}),n.d(p,"panSymlog",function(){return ct.Q}),n.d(p,"zoomLinear",function(){return ct.hb}),n.d(p,"zoomLog",function(){return ct.ib}),n.d(p,"zoomPow",function(){return ct.jb}),n.d(p,"zoomSymlog",function(){return ct.kb}),n.d(p,"quarter",function(){return ct.S}),n.d(p,"utcquarter",function(){return ct.eb}),n.d(p,"array",function(){return ct.i}),n.d(p,"clampRange",function(){return ct.j}),n.d(p,"compare",function(){return ct.k}),n.d(p,"constant",function(){return ct.l}),n.d(p,"debounce",function(){return ct.m}),n.d(p,"error",function(){return ct.n}),n.d(p,"extend",function(){return ct.o}),n.d(p,"extent",function(){return ct.p}),n.d(p,"extentIndex",function(){return ct.q}),n.d(p,"fastmap",function(){return ct.s}),n.d(p,"field",function(){return ct.t}),n.d(p,"flush",function(){return ct.u}),n.d(p,"inherits",function(){return ct.x}),n.d(p,"inrange",function(){return ct.y}),n.d(p,"isArray",function(){return ct.z}),n.d(p,"isBoolean",function(){return ct.A}),n.d(p,"isDate",function(){return ct.B}),n.d(p,"isFunction",function(){return ct.C}),n.d(p,"isNumber",function(){return ct.D}),n.d(p,"isObject",function(){return ct.E}),n.d(p,"isRegExp",function(){return ct.F}),n.d(p,"isString",function(){return ct.G}),n.d(p,"key",function(){return ct.H}),n.d(p,"lerp",function(){return ct.I}),n.d(p,"merge",function(){return ct.K}),n.d(p,"pad",function(){return ct.M}),n.d(p,"peek",function(){return ct.R}),n.d(p,"repeat",function(){return ct.T}),n.d(p,"span",function(){return ct.U}),n.d(p,"splitAccessPath",function(){return ct.V}),n.d(p,"stringValue",function(){return ct.W}),n.d(p,"toBoolean",function(){return ct.X}),n.d(p,"toDate",function(){return ct.Y}),n.d(p,"toNumber",function(){return ct.Z}),n.d(p,"toString",function(){return ct.bb}),n.d(p,"toSet",function(){return ct.ab}),n.d(p,"truncate",function(){return ct.cb}),n.d(p,"visitArray",function(){return ct.fb}),n.d(p,"loader",function(){return Tr}),n.d(p,"read",function(){return zr}),n.d(p,"inferType",function(){return Gt}),n.d(p,"inferTypes",function(){return Yt}),n.d(p,"typeParsers",function(){return It}),n.d(p,"format",function(){return xe}),n.d(p,"formats",function(){return _e}),n.d(p,"responseType",function(){return we}),n.d(p,"Bounds",function(){return hu}),n.d(p,"Gradient",function(){return bu}),n.d(p,"GroupItem",function(){return _u}),n.d(p,"ResourceLoader",function(){return ku}),n.d(p,"Item",function(){return xu}),n.d(p,"Scenegraph",function(){return Vl}),n.d(p,"Handler",function(){return rf}),n.d(p,"Renderer",function(){return uf}),n.d(p,"CanvasHandler",function(){return lf}),n.d(p,"CanvasRenderer",function(){return gf}),n.d(p,"SVGHandler",function(){return bf}),n.d(p,"SVGRenderer",function(){return Sf}),n.d(p,"SVGStringRenderer",function(){return Uf}),n.d(p,"RenderType",function(){return Yf}),n.d(p,"renderModule",function(){return Xf}),n.d(p,"intersect",function(){return Jf}),n.d(p,"Marks",function(){return Ul}),n.d(p,"boundClip",function(){return eh}),n.d(p,"boundContext",function(){return Cc}),n.d(p,"boundStroke",function(){return jc}),n.d(p,"boundItem",function(){return ql}),n.d(p,"boundMark",function(){return Wl}),n.d(p,"pathCurves",function(){return qs}),n.d(p,"pathSymbols",function(){return oc}),n.d(p,"pathRectangle",function(){return hc}),n.d(p,"pathTrail",function(){return dc}),n.d(p,"pathParse",function(){return Hs}),n.d(p,"pathRender",function(){return nc}),n.d(p,"point",function(){return nf}),n.d(p,"domCreate",function(){return Zl}),n.d(p,"domFind",function(){return Ql}),n.d(p,"domChild",function(){return Kl}),n.d(p,"domClear",function(){return tf}),n.d(p,"openTag",function(){return wf}),n.d(p,"closeTag",function(){return Of}),n.d(p,"font",function(){return Tl}),n.d(p,"fontFamily",function(){return zl}),n.d(p,"fontSize",function(){return Dl}),n.d(p,"textMetrics",function(){return El}),n.d(p,"resetSVGClipId",function(){return al}),n.d(p,"sceneEqual",function(){return rh}),n.d(p,"pathEqual",function(){return ih}),n.d(p,"sceneToJSON",function(){return Gl}),n.d(p,"sceneFromJSON",function(){return Yl}),n.d(p,"intersectPath",function(){return zc}),n.d(p,"intersectPoint",function(){return Tc}),n.d(p,"intersectRule",function(){return Rc}),n.d(p,"intersectBoxLine",function(){return Bc}),n.d(p,"sceneZOrder",function(){return Wc}),n.d(p,"sceneVisit",function(){return Hc}),n.d(p,"scenePickVisit",function(){return Gc});var g={};n.r(g),n.d(g,"INVALID_SPEC",function(){return i$}),n.d(g,"FIT_NON_SINGLE",function(){return o$}),n.d(g,"CANNOT_FIX_RANGE_STEP_WITH_FIT",function(){return a$}),n.d(g,"cannotProjectOnChannelWithoutField",function(){return u$}),n.d(g,"nearestNotSupportForContinuous",function(){return s$}),n.d(g,"selectionNotSupported",function(){return c$}),n.d(g,"selectionNotFound",function(){return l$}),n.d(g,"SCALE_BINDINGS_CONTINUOUS",function(){return f$}),n.d(g,"NO_INIT_SCALE_BINDINGS",function(){return h$}),n.d(g,"noSuchRepeatedValue",function(){return d$}),n.d(g,"columnsNotSupportByRowCol",function(){return p$}),n.d(g,"CONCAT_CANNOT_SHARE_AXIS",function(){return g$}),n.d(g,"REPEAT_CANNOT_SHARE_AXIS",function(){return m$}),n.d(g,"unrecognizedParse",function(){return v$}),n.d(g,"differentParse",function(){return y$}),n.d(g,"invalidTransformIgnored",function(){return b$}),n.d(g,"NO_FIELDS_NEEDS_AS",function(){return x$}),n.d(g,"encodingOverridden",function(){return _$}),n.d(g,"projectionOverridden",function(){return w$}),n.d(g,"primitiveChannelDef",function(){return O$}),n.d(g,"invalidFieldType",function(){return k$}),n.d(g,"nonZeroScaleUsedWithLengthMark",function(){return A$}),n.d(g,"invalidFieldTypeForCountAggregate",function(){return E$}),n.d(g,"invalidAggregate",function(){return j$}),n.d(g,"missingFieldType",function(){return S$}),n.d(g,"droppingColor",function(){return C$}),n.d(g,"emptyFieldDef",function(){return M$}),n.d(g,"latLongDeprecated",function(){return D$}),n.d(g,"LINE_WITH_VARYING_SIZE",function(){return F$}),n.d(g,"incompatibleChannel",function(){return N$}),n.d(g,"invalidEncodingChannel",function(){return z$}),n.d(g,"facetChannelShouldBeDiscrete",function(){return T$}),n.d(g,"facetChannelDropped",function(){return $$}),n.d(g,"discreteChannelCannotEncode",function(){return R$}),n.d(g,"BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL",function(){return B$}),n.d(g,"lineWithRange",function(){return P$}),n.d(g,"orientOverridden",function(){return L$}),n.d(g,"CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN",function(){return U$}),n.d(g,"cannotUseScalePropertyWithNonColor",function(){return q$}),n.d(g,"unaggregateDomainHasNoEffectForRawField",function(){return I$}),n.d(g,"unaggregateDomainWithNonSharedDomainOp",function(){return W$}),n.d(g,"unaggregatedDomainWithLogScale",function(){return H$}),n.d(g,"cannotApplySizeToNonOrientedMark",function(){return G$}),n.d(g,"rangeStepDropped",function(){return Y$}),n.d(g,"scaleTypeNotWorkWithChannel",function(){return V$}),n.d(g,"scaleTypeNotWorkWithFieldDef",function(){return X$}),n.d(g,"scalePropertyNotWorkWithScaleType",function(){return J$}),n.d(g,"scaleTypeNotWorkWithMark",function(){return Z$}),n.d(g,"mergeConflictingProperty",function(){return Q$}),n.d(g,"independentScaleMeansIndependentGuide",function(){return K$}),n.d(g,"domainSortDropped",function(){return tR}),n.d(g,"UNABLE_TO_MERGE_DOMAINS",function(){return eR}),n.d(g,"MORE_THAN_ONE_SORT",function(){return nR}),n.d(g,"INVALID_CHANNEL_FOR_AXIS",function(){return rR}),n.d(g,"cannotStackRangedMark",function(){return iR}),n.d(g,"cannotStackNonLinearScale",function(){return oR}),n.d(g,"stackNonSummativeAggregate",function(){return aR}),n.d(g,"invalidTimeUnit",function(){return uR}),n.d(g,"dayReplacedWithDate",function(){return sR}),n.d(g,"droppedDay",function(){return cR}),n.d(g,"errorBarCenterAndExtentAreNotNeeded",function(){return lR}),n.d(g,"errorBarCenterIsUsedWithWrongExtent",function(){return fR}),n.d(g,"errorBarContinuousAxisHasCustomizedAggregate",function(){return hR}),n.d(g,"errorBarCenterIsNotNeeded",function(){return dR}),n.d(g,"errorBand1DNotSupport",function(){return pR}),n.d(g,"channelRequiredForBinned",function(){return gR}),n.d(g,"domainRequiredForThresholdScale",function(){return mR});var m={};n.r(m),n.d(m,"symbols",function(){return RI}),n.d(m,"gradient",function(){return BI}),n.d(m,"labels",function(){return PI});var v={};n.r(v),n.d(v,"compile",function(){return aG}),n.d(v,"extractTransforms",function(){return sG}),n.d(v,"normalize",function(){return xL}),n.d(v,"version",function(){return cG});var y={};n.r(y),n.d(y,"excel",function(){return hG}),n.d(y,"ggplot2",function(){return dG}),n.d(y,"quartz",function(){return pG}),n.d(y,"vox",function(){return gG}),n.d(y,"dark",function(){return mG}),n.d(y,"fivethirtyeight",function(){return vG}),n.d(y,"latimes",function(){return xG});function b(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&(n[r[i]]=t[r[i]])}return n}var x="http://www.w3.org/1999/xhtml",_={svg:"http://www.w3.org/2000/svg",xhtml:x,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},w=function(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),_.hasOwnProperty(e)?{space:_[e],local:t}:t};var O=function(t){var e=w(t);return(e.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===x&&e.documentElement.namespaceURI===x?e.createElement(t):e.createElementNS(n,t)}})(e)};function k(){}var A=function(t){return null==t?k:function(){return this.querySelector(t)}};function E(){return[]}var j=function(t){return new Array(t.length)};function S(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}S.prototype={constructor:S,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var C="$";function M(t,e,n,r,i,o){for(var a,u=0,s=e.length,c=o.length;u<c;++u)(a=e[u])?(a.__data__=o[u],r[u]=a):n[u]=new S(t,o[u]);for(;u<s;++u)(a=e[u])&&(i[u]=a)}function D(t,e,n,r,i,o,a){var u,s,c,l={},f=e.length,h=o.length,d=new Array(f);for(u=0;u<f;++u)(s=e[u])&&(d[u]=c=C+a.call(s,s.__data__,u,e),c in l?i[u]=s:l[c]=s);for(u=0;u<h;++u)(s=l[c=C+a.call(t,o[u],u,o)])?(r[u]=s,s.__data__=o[u],l[c]=null):n[u]=new S(t,o[u]);for(u=0;u<f;++u)(s=e[u])&&l[d[u]]===s&&(i[u]=s)}function F(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}var N=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView};function z(t){return t.trim().split(/^|\s+/)}function T(t){return t.classList||new $(t)}function $(t){this._node=t,this._names=z(t.getAttribute("class")||"")}function R(t,e){for(var n=T(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function B(t,e){for(var n=T(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}$.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function P(){this.textContent=""}function L(){this.innerHTML=""}function U(){this.nextSibling&&this.parentNode.appendChild(this)}function q(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function I(){return null}function W(){var t=this.parentNode;t&&t.removeChild(this)}function H(){return this.parentNode.insertBefore(this.cloneNode(!1),this.nextSibling)}function G(){return this.parentNode.insertBefore(this.cloneNode(!0),this.nextSibling)}var Y={},V=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(Y={mouseenter:"mouseover",mouseleave:"mouseout"}));function X(t,e,n){return t=J(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function J(t,e,n){return function(r){var i=V;V=r;try{t.call(this,this.__data__,e,n)}finally{V=i}}}function Z(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,o=e.length;r<o;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.capture);++i?e.length=i:delete this.__on}}}function Q(t,e,n){var r=Y.hasOwnProperty(t.type)?X:J;return function(i,o,a){var u,s=this.__on,c=r(e,o,a);if(s)for(var l=0,f=s.length;l<f;++l)if((u=s[l]).type===t.type&&u.name===t.name)return this.removeEventListener(u.type,u.listener,u.capture),this.addEventListener(u.type,u.listener=c,u.capture=n),void(u.value=e);this.addEventListener(t.type,c,n),u={type:t.type,name:t.name,value:e,listener:c,capture:n},s?s.push(u):this.__on=[u]}}function K(t,e,n){var r=N(t),i=r.CustomEvent;"function"==typeof i?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}var tt=[null];function et(t,e){this._groups=t,this._parents=e}function nt(){return new et([[document.documentElement]],tt)}et.prototype=nt.prototype={constructor:et,select:function(t){"function"!=typeof t&&(t=A(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o,a,u=e[i],s=u.length,c=r[i]=new Array(s),l=0;l<s;++l)(o=u[l])&&(a=t.call(o,o.__data__,l,u))&&("__data__"in o&&(a.__data__=o.__data__),c[l]=a);return new et(r,this._parents)},selectAll:function(t){var e;"function"!=typeof t&&(t=null==(e=t)?E:function(){return this.querySelectorAll(e)});for(var n=this._groups,r=n.length,i=[],o=[],a=0;a<r;++a)for(var u,s=n[a],c=s.length,l=0;l<c;++l)(u=s[l])&&(i.push(t.call(u,u.__data__,l,s)),o.push(u));return new et(i,o)},filter:function(t){var e;"function"!=typeof t&&(e=t,t=function(){return this.matches(e)});for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o)for(var a,u=n[o],s=u.length,c=i[o]=[],l=0;l<s;++l)(a=u[l])&&t.call(a,a.__data__,l,u)&&c.push(a);return new et(i,this._parents)},data:function(t,e){if(!t)return p=new Array(this.size()),l=-1,this.each(function(t){p[++l]=t}),p;var n,r=e?D:M,i=this._parents,o=this._groups;"function"!=typeof t&&(n=t,t=function(){return n});for(var a=o.length,u=new Array(a),s=new Array(a),c=new Array(a),l=0;l<a;++l){var f=i[l],h=o[l],d=h.length,p=t.call(f,f&&f.__data__,l,i),g=p.length,m=s[l]=new Array(g),v=u[l]=new Array(g);r(f,h,m,v,c[l]=new Array(d),p,e);for(var y,b,x=0,_=0;x<g;++x)if(y=m[x]){for(x>=_&&(_=x+1);!(b=v[_])&&++_<g;);y._next=b||null}}return(u=new et(u,i))._enter=s,u._exit=c,u},enter:function(){return new et(this._enter||this._groups.map(j),this._parents)},exit:function(){return new et(this._exit||this._groups.map(j),this._parents)},join:function(t,e,n){var r=this.enter(),i=this,o=this.exit();return r="function"==typeof t?t(r):r.append(t+""),null!=e&&(i=e(i)),null==n?o.remove():n(o),r&&i?r.merge(i).order():i},merge:function(t){for(var e=this._groups,n=t._groups,r=e.length,i=n.length,o=Math.min(r,i),a=new Array(r),u=0;u<o;++u)for(var s,c=e[u],l=n[u],f=c.length,h=a[u]=new Array(f),d=0;d<f;++d)(s=c[d]||l[d])&&(h[d]=s);for(;u<r;++u)a[u]=e[u];return new et(a,this._parents)},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=F);for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o){for(var a,u=n[o],s=u.length,c=i[o]=new Array(s),l=0;l<s;++l)(a=u[l])&&(c[l]=a);c.sort(e)}return new et(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){var t=new Array(this.size()),e=-1;return this.each(function(){t[++e]=this}),t},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null},size:function(){var t=0;return this.each(function(){++t}),t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,o=e[n],a=0,u=o.length;a<u;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this},attr:function(t,e){var n=w(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==e?n.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}}:"function"==typeof e?n.local?function(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}:function(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}:n.local?function(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}:function(t,e){return function(){this.setAttribute(t,e)}})(n,e))},style:function(t,e,n){return arguments.length>1?this.each((null==e?function(t){return function(){this.style.removeProperty(t)}}:"function"==typeof e?function(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}:function(t,e,n){return function(){this.style.setProperty(t,e,n)}})(t,e,null==n?"":n)):function(t,e){return t.style.getPropertyValue(e)||N(t).getComputedStyle(t,null).getPropertyValue(e)}(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?function(t){return function(){delete this[t]}}:"function"==typeof e?function(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}:function(t,e){return function(){this[t]=e}})(t,e)):this.node()[t]},classed:function(t,e){var n=z(t+"");if(arguments.length<2){for(var r=T(this.node()),i=-1,o=n.length;++i<o;)if(!r.contains(n[i]))return!1;return!0}return this.each(("function"==typeof e?function(t,e){return function(){(e.apply(this,arguments)?R:B)(this,t)}}:e?function(t){return function(){R(this,t)}}:function(t){return function(){B(this,t)}})(n,e))},text:function(t){return arguments.length?this.each(null==t?P:("function"==typeof t?function(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}:function(t){return function(){this.textContent=t}})(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?L:("function"==typeof t?function(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}:function(t){return function(){this.innerHTML=t}})(t)):this.node().innerHTML},raise:function(){return this.each(U)},lower:function(){return this.each(q)},append:function(t){var e="function"==typeof t?t:O(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})},insert:function(t,e){var n="function"==typeof t?t:O(t),r=null==e?I:"function"==typeof e?e:A(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})},remove:function(){return this.each(W)},clone:function(t){return this.select(t?G:H)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var r,i,o=function(t){return t.trim().split(/^|\s+/).map(function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}})}(t+""),a=o.length;if(!(arguments.length<2)){for(u=e?Q:Z,null==n&&(n=!1),r=0;r<a;++r)this.each(u(o[r],e,n));return this}var u=this.node().__on;if(u)for(var s,c=0,l=u.length;c<l;++c)for(r=0,s=u[c];r<a;++r)if((i=o[r]).type===s.type&&i.name===s.name)return s.value},dispatch:function(t,e){return this.each(("function"==typeof e?function(t,e){return function(){return K(this,t,e.apply(this,arguments))}}:function(t,e){return function(){return K(this,t,e)}})(t,e))}};var rt=function(t){return"string"==typeof t?new et([[document.querySelector(t)]],[document.documentElement]):new et([[t]],tt)},it=0;function ot(){this._="@"+(++it).toString(36)}ot.prototype=function(){return new ot}.prototype={constructor:ot,get:function(t){for(var e=this._;!(e in t);)if(!(t=t.parentNode))return;return t[e]},set:function(t,e){return t[this._]=e},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};var at=n(2),ut=n.n(at),st=n(4),ct=n(0);function lt(t){var e=t||ct.w,n=[],r={};return n.add=function(t){var i=e(t);return r[i]||(r[i]=1,n.push(t)),n},n.remove=function(t){var i,o=e(t);return r[o]&&(r[o]=0,(i=n.indexOf(t))>=0&&n.splice(i,1)),n},n}var ft=async function(t,e){try{await e(t)}catch(e){t.error(e)}},ht=Symbol("vega_id"),dt=1;function pt(t){return!(!t||!gt(t))}function gt(t){return t[ht]}function mt(t,e){return t[ht]=e,t}function vt(t){var e=t===Object(t)?t:{data:t};return gt(e)?e:mt(e,dt++)}function yt(t){return bt(t,vt({}))}function bt(t,e){for(var n in t)e[n]=t[n];return e}function xt(t,e){return mt(e,gt(t))}function _t(t){return t&&t.constructor===wt}function wt(){var t=[],e=[],n=[],r=[],i=[],o=!1;return{constructor:wt,insert:function(e){for(var n=Object(ct.i)(e),r=0,i=n.length;r<i;++r)t.push(n[r]);return this},remove:function(t){for(var n=Object(ct.C)(t)?r:e,i=Object(ct.i)(t),o=0,a=i.length;o<a;++o)n.push(i[o]);return this},modify:function(t,e,r){var o={field:e,value:Object(ct.l)(r)};return Object(ct.C)(t)?(o.filter=t,i.push(o)):(o.tuple=t,n.push(o)),this},encode:function(t,e){return Object(ct.C)(t)?i.push({filter:t,field:e}):n.push({tuple:t,field:e}),this},reflow:function(){return o=!0,this},pulse:function(a,u){var s,c,l,f,h,d,p={},g={};for(s=0,c=u.length;s<c;++s)p[gt(u[s])]=1;for(s=0,c=e.length;s<c;++s)p[gt(h=e[s])]=-1;for(s=0,c=r.length;s<c;++s)f=r[s],u.forEach(function(t){f(t)&&(p[gt(t)]=-1)});for(s=0,c=t.length;s<c;++s)d=gt(h=t[s]),p[d]?p[d]=1:a.add.push(vt(t[s]));for(s=0,c=u.length;s<c;++s)h=u[s],p[gt(h)]<0&&a.rem.push(h);function m(t,e,n){n?t[e]=n(t):a.encode=e,o||(g[gt(t)]=t)}for(s=0,c=n.length;s<c;++s)h=(l=n[s]).tuple,f=l.field,(d=p[gt(h)])>0&&(m(h,f,l.value),a.modifies(f));for(s=0,c=i.length;s<c;++s)l=i[s],f=l.filter,u.forEach(function(t){f(t)&&p[gt(t)]>0&&m(t,l.field,l.value)}),a.modifies(l.field);if(o)a.mod=e.length||r.length?u.filter(function(t){return p[gt(t)]>0}):u.slice();else for(d in g)a.mod.push(g[d]);return a}}}var Ot="_:mod:_";function kt(){Object.defineProperty(this,Ot,{writable:!0,value:{}})}var At=kt.prototype;At.set=function(t,e,n,r){var i=this,o=i[t],a=i[Ot];return null!=e&&e>=0?(o[e]!==n||r)&&(o[e]=n,a[e+":"+t]=-1,a[t]=-1):(o!==n||r)&&(i[t]=n,a[t]=Object(ct.z)(n)?1+n.length:-1),i},At.modified=function(t,e){var n,r=this[Ot];if(!arguments.length){for(n in r)if(r[n])return!0;return!1}if(Object(ct.z)(t)){for(n=0;n<t.length;++n)if(r[t[n]])return!0;return!1}return null!=e&&e>=0?e+1<r[t]||!!r[e+":"+t]:!!r[t]},At.clear=function(){return this[Ot]={},this};var Et=0,jt=new kt;function St(t,e,n,r){this.id=++Et,this.value=t,this.stamp=-1,this.rank=-1,this.qrank=-1,this.flags=0,e&&(this._update=e),n&&this.parameters(n,r)}var Ct=St.prototype;function Mt(t){return function(e){var n=this.flags;return 0===arguments.length?!!(n&t):(this.flags=e?n|t:n&~t,this)}}Ct.targets=function(){return this._targets||(this._targets=lt(ct.v))},Ct.set=function(t){return this.value!==t?(this.value=t,1):0},Ct.skip=Mt(1),Ct.modified=Mt(2),Ct.parameters=function(t,e,n){e=!1!==e;var r,i,o,a,u=this,s=u._argval=u._argval||new kt,c=u._argops=u._argops||[],l=[];function f(t,n,r){r instanceof St?(r!==u&&(e&&r.targets().add(u),l.push(r)),c.push({op:r,name:t,index:n})):s.set(t,n,r)}for(r in t)if(i=t[r],"pulse"===r)Object(ct.i)(i).forEach(function(t){t instanceof St?t!==u&&(t.targets().add(u),l.push(t)):Object(ct.n)("Pulse parameters must be operator instances.")}),u.source=i;else if(Object(ct.z)(i))for(s.set(r,-1,Array(o=i.length)),a=0;a<o;++a)f(r,a,i[a]);else f(r,-1,i);return this.marshall().clear(),n&&(c.initonly=!0),l},Ct.marshall=function(t){var e,n,r,i,o,a=this._argval||jt,u=this._argops;if(u){for(n=0,r=u.length;n<r;++n)o=(i=(e=u[n]).op).modified()&&i.stamp===t,a.set(e.name,e.index,i.value,o);if(u.initonly){for(n=0;n<r;++n)(e=u[n]).op.targets().remove(this);this._argops=null,this._update=null}}return a},Ct.evaluate=function(t){var e=this._update;if(e){var n=this.marshall(t.stamp),r=e.call(this,n,t);if(n.clear(),r!==this.value)this.value=r;else if(!this.modified())return t.StopPropagation}},Ct.run=function(t){return t.stamp<=this.stamp?t.StopPropagation:(this.skip()?(this.skip(!1),e=0):e=this.evaluate(t),this.stamp=t.stamp,this.pulse=e||t);var e};var Dt=0;function Ft(t,e,n){this.id=++Dt,this.value=null,n&&(this.receive=n),t&&(this._filter=t),e&&(this._apply=e)}function Nt(t,e,n){return new Ft(t,e,n)}var zt=Ft.prototype;zt._filter=ct.db,zt._apply=ct.w,zt.targets=function(){return this._targets||(this._targets=lt(ct.v))},zt.consume=function(t){return arguments.length?(this._consume=!!t,this):!!this._consume},zt.receive=function(t){if(this._filter(t)){for(var e=this.value=this._apply(t),n=this._targets,r=n?n.length:0,i=0;i<r;++i)n[i].receive(e);this._consume&&(t.preventDefault(),t.stopPropagation())}},zt.filter=function(t){var e=Nt(t);return this.targets().add(e),e},zt.apply=function(t){var e=Nt(null,t);return this.targets().add(e),e},zt.merge=function(){var t=Nt();this.targets().add(t);for(var e=0,n=arguments.length;e<n;++e)arguments[e].targets().add(t);return t},zt.throttle=function(t){var e=-1;return this.filter(function(){var n=Date.now();return n-e>t?(e=n,1):0})},zt.debounce=function(t){var e=Nt();return this.targets().add(Nt(null,null,Object(ct.m)(t,function(t){var n=t.dataflow;e.receive(t),n&&n.run&&n.run()}))),e},zt.between=function(t,e){var n=!1;return t.targets().add(Nt(null,null,function(){n=!0})),e.targets().add(Nt(null,null,function(){n=!1})),this.filter(function(){return n})};var Tt=/^([A-Za-z]+:)?\/\//,$t="file://";async function Rt(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function Bt(t,e){e=Object(ct.o)({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,a,u;return null!=t&&"string"==typeof t||Object(ct.n)("Sanitize failure, invalid URI: "+Object(ct.W)(t)),o=Tt.test(t),(u=e.baseURL)&&!o&&(t.startsWith("/")||"/"===u[u.length-1]||(t="/"+t),t=u+t),a=(i=t.startsWith($t))||"file"===e.mode||"http"!==e.mode&&!o&&n,i?t=t.slice($t.length):t.startsWith("//")&&("file"===e.defaultProtocol?(t=t.slice(2),a=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!a}),r.href=t,e.target&&(r.target=e.target+""),e.rel&&(r.rel=e.rel+""),r}function Pt(t){return t?function(e){return new Promise(function(n,r){t.readFile(e,function(t,e){t?r(t):n(e)})})}:Lt}async function Lt(){Object(ct.n)("No file system access.")}function Ut(t){return t?async function(e,n){const r=Object(ct.o)({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Object(ct.C)(o[i])?o[i]():o.text():Object(ct.n)(o.status+""+o.statusText)}:qt}async function qt(){Object(ct.n)("No HTTP fetch method available.")}var It={boolean:ct.X,integer:ct.Z,number:ct.Z,date:ct.Y,string:ct.bb,unknown:ct.w},Wt=[function(t){return"true"===t||"false"===t||!0===t||!1===t},function(t){return Vt(t)&&(t=+t)==~~t},Vt,function(t){return!isNaN(Date.parse(t))}],Ht=["boolean","integer","number","date"];function Gt(t,e){if(!t||!t.length)return"unknown";var n,r,i,o,a=0,u=t.length,s=Wt.length,c=Wt.map(function(t,e){return e+1});for(r=0,u=t.length;r<u;++r)for(n=e?t[r][e]:t[r],i=0;i<s;++i)if(c[i]&&(null!=(o=n)&&o==o)&&!Wt[i](n)&&(c[i]=0,++a===Wt.length))return"string";return a=c.reduce(function(t,e){return 0===t?e:t},0)-1,Ht[a]}function Yt(t,e){return e.reduce(function(e,n){return e[n]=Gt(t,n),e},{})}function Vt(t){return!(isNaN(+t)||t instanceof Date)}var Xt={},Jt={},Zt=34,Qt=10,Kt=13;function te(t){return new Function("d","return {"+t.map(function(t,e){return JSON.stringify(t)+": d["+e+"]"}).join(",")+"}")}function ee(t){var e=Object.create(null),n=[];return t.forEach(function(t){for(var r in t)r in e||n.push(e[r]=r)}),n}function ne(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function re(t){var e,n=t.getUTCHours(),r=t.getUTCMinutes(),i=t.getUTCSeconds(),o=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":((e=t.getUTCFullYear())<0?"-"+ne(-e,6):e>9999?"+"+ne(e,6):ne(e,4))+"-"+ne(t.getUTCMonth()+1,2)+"-"+ne(t.getUTCDate(),2)+(o?"T"+ne(n,2)+":"+ne(r,2)+":"+ne(i,2)+"."+ne(o,3)+"Z":i?"T"+ne(n,2)+":"+ne(r,2)+":"+ne(i,2)+"Z":r||n?"T"+ne(n,2)+":"+ne(r,2)+"Z":"")}var ie=function(t){var e=new RegExp('["'+t+"\n\r]"),n=t.charCodeAt(0);function r(t,e){var r,i=[],o=t.length,a=0,u=0,s=o<=0,c=!1;function l(){if(s)return Jt;if(c)return c=!1,Xt;var e,r,i=a;if(t.charCodeAt(i)===Zt){for(;a++<o&&t.charCodeAt(a)!==Zt||t.charCodeAt(++a)===Zt;);return(e=a)>=o?s=!0:(r=t.charCodeAt(a++))===Qt?c=!0:r===Kt&&(c=!0,t.charCodeAt(a)===Qt&&++a),t.slice(i+1,e-1).replace(/""/g,'"')}for(;a<o;){if((r=t.charCodeAt(e=a++))===Qt)c=!0;else if(r===Kt)c=!0,t.charCodeAt(a)===Qt&&++a;else if(r!==n)continue;return t.slice(i,e)}return s=!0,t.slice(i,o)}for(t.charCodeAt(o-1)===Qt&&--o,t.charCodeAt(o-1)===Kt&&--o;(r=l())!==Jt;){for(var f=[];r!==Xt&&r!==Jt;)f.push(r),r=l();e&&null==(f=e(f,u++))||i.push(f)}return i}function i(e,n){return e.map(function(e){return n.map(function(t){return a(e[t])}).join(t)})}function o(e){return e.map(a).join(t)}function a(t){return null==t?"":t instanceof Date?re(t):e.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,e){var n,i,o=r(t,function(t,r){if(n)return n(t,r-1);i=t,n=e?function(t,e){var n=te(t);return function(r,i){return e(n(r),i,t)}}(t,e):te(t)});return o.columns=i||[],o},parseRows:r,format:function(e,n){return null==n&&(n=ee(e)),[n.map(a).join(t)].concat(i(e,n)).join("\n")},formatBody:function(t,e){return null==e&&(e=ee(t)),i(t,e).join("\n")},formatRows:function(t){return t.map(o).join("\n")}}},oe=ie(","),ae=(oe.parse,oe.parseRows,oe.format,oe.formatBody,oe.formatRows,ie("\t"));ae.parse,ae.parseRows,ae.format,ae.formatBody,ae.formatRows;function ue(t){const e=function(e,n){const r={delimiter:t};return se(e,n?Object(ct.o)(n,r):r)};return e.responseType="text",e}function se(t,e){return e.header&&(t=e.header.map(ct.W).join(e.delimiter)+"\n"+t),ie(e.delimiter).parse(t+"")}se.responseType="text";var ce=n(1),le=function(t){return t},fe=function(t){if(null==t)return le;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],a=t.translate[1];return function(t,u){u||(e=n=0);var s=2,c=t.length,l=new Array(c);for(l[0]=(e+=t[0])*r+o,l[1]=(n+=t[1])*i+a;s<c;)l[s]=t[s],++s;return l}},he=function(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n},de=function(t,e){return"GeometryCollection"===e.type?{type:"FeatureCollection",features:e.geometries.map(function(e){return pe(t,e)})}:pe(t,e)};function pe(t,e){var n=e.id,r=e.bbox,i=null==e.properties?{}:e.properties,o=ge(t,e);return null==n&&null==r?{type:"Feature",properties:i,geometry:o}:null==r?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function ge(t,e){var n=fe(t.transform),r=t.arcs;function i(t,e){e.length&&e.pop();for(var i=r[t<0?~t:t],o=0,a=i.length;o<a;++o)e.push(n(i[o],o));t<0&&he(e,a)}function o(t){return n(t)}function a(t){for(var e=[],n=0,r=t.length;n<r;++n)i(t[n],e);return e.length<2&&e.push(e[0]),e}function u(t){for(var e=a(t);e.length<4;)e.push(e[0]);return e}function s(t){return t.map(u)}return function t(e){var n,r=e.type;switch(r){case"GeometryCollection":return{type:r,geometries:e.geometries.map(t)};case"Point":n=o(e.coordinates);break;case"MultiPoint":n=e.coordinates.map(o);break;case"LineString":n=a(e.arcs);break;case"MultiLineString":n=e.arcs.map(a);break;case"Polygon":n=s(e.arcs);break;case"MultiPolygon":n=e.arcs.map(s);break;default:return null}return{type:r,coordinates:n}}(e)}var me=function(t,e){var n={},r={},i={},o=[],a=-1;function u(t,e){for(var r in t){var i=t[r];delete e[i.start],delete i.start,delete i.end,i.forEach(function(t){n[t<0?~t:t]=1}),o.push(i)}}return e.forEach(function(n,r){var i,o=t.arcs[n<0?~n:n];o.length<3&&!o[1][0]&&!o[1][1]&&(i=e[++a],e[a]=n,e[r]=i)}),e.forEach(function(e){var n,o,a=function(e){var n,r=t.arcs[e<0?~e:e],i=r[0];t.transform?(n=[0,0],r.forEach(function(t){n[0]+=t[0],n[1]+=t[1]})):n=r[r.length-1];return e<0?[n,i]:[i,n]}(e),u=a[0],s=a[1];if(n=i[u])if(delete i[n.end],n.push(e),n.end=s,o=r[s]){delete r[o.start];var c=o===n?n:n.concat(o);r[c.start=n.start]=i[c.end=o.end]=c}else r[n.start]=i[n.end]=n;else if(n=r[s])if(delete r[n.start],n.unshift(e),n.start=u,o=i[u]){delete i[o.end];var l=o===n?n:o.concat(n);r[l.start=o.start]=i[l.end=n.end]=l}else r[n.start]=i[n.end]=n;else r[(n=[e]).start=u]=i[n.end=s]=n}),u(i,r),u(r,i),e.forEach(function(t){n[t<0?~t:t]||o.push([t])}),o},ve=function(t){return ge(t,function(t,e,n){var r,i,o;if(arguments.length>1)r=function(t,e,n){var r,i=[],o=[];function a(t){var e=t<0?~t:t;(o[e]||(o[e]=[])).push({i:t,g:r})}function u(t){t.forEach(a)}function s(t){t.forEach(u)}return function t(e){switch(r=e,e.type){case"GeometryCollection":e.geometries.forEach(t);break;case"LineString":u(e.arcs);break;case"MultiLineString":case"Polygon":s(e.arcs);break;case"MultiPolygon":!function(t){t.forEach(s)}(e.arcs)}}(e),o.forEach(null==n?function(t){i.push(t[0].i)}:function(t){n(t[0].g,t[t.length-1].g)&&i.push(t[0].i)}),i}(0,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:me(t,r)}}.apply(this,arguments))};const ye={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function be(t,e){let n,r,i,o;return t=Object(ce.a)(t,e),e&&e.feature?(n=de,i=e.feature):e&&e.mesh?(n=ve,i=e.mesh,o=ye[e.filter]):Object(ct.n)("Missing TopoJSON feature or mesh parameter."),(r=(r=t.objects[i])?n(t,r,o):Object(ct.n)("Invalid TopoJSON object: "+i))&&r.features||[r]}be.responseType="json";const xe={dsv:se,csv:ue(","),tsv:ue("\t"),json:ce.a,topojson:be};function _e(t,e){return arguments.length>1?(xe[t]=e,this):xe.hasOwnProperty(t)?xe[t]:null}function we(t){const e=_e(t);return e&&e.responseType||"text"}var Oe=new Date,ke=new Date;function Ae(t,e,n,r){function i(e){return t(e=new Date(+e)),e}return i.floor=i,i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e<n-t?e:n},i.offset=function(t,n){return e(t=new Date(+t),null==n?1:Math.floor(n)),t},i.range=function(n,r,o){var a,u=[];if(n=i.ceil(n),o=null==o?1:Math.floor(o),!(n<r&&o>0))return u;do{u.push(a=new Date(+n)),e(n,o),t(n)}while(a<n&&n<r);return u},i.filter=function(n){return Ae(function(e){if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););})},n&&(i.count=function(e,r){return Oe.setTime(+e),ke.setTime(+r),t(Oe),t(ke),Math.floor(n(Oe,ke))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var Ee=Ae(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});Ee.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Ae(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):Ee:null};var je=Ee,Se=(Ee.range,6e4),Ce=6048e5,Me=Ae(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getUTCSeconds()}),De=Me,Fe=(Me.range,Ae(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},function(t,e){t.setTime(+t+e*Se)},function(t,e){return(e-t)/Se},function(t){return t.getMinutes()})),Ne=Fe,ze=(Fe.range,Ae(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-t.getMinutes()*Se)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getHours()})),Te=ze,$e=(ze.range,Ae(function(t){t.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Se)/864e5},function(t){return t.getDate()-1})),Re=$e;$e.range;function Be(t){return Ae(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+7*e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Se)/Ce})}var Pe=Be(0),Le=Be(1),Ue=Be(2),qe=Be(3),Ie=Be(4),We=Be(5),He=Be(6),Ge=(Pe.range,Le.range,Ue.range,qe.range,Ie.range,We.range,He.range,Ae(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())},function(t){return t.getMonth()})),Ye=Ge,Ve=(Ge.range,Ae(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()}));Ve.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ae(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)}):null};var Xe=Ve,Je=(Ve.range,Ae(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Se)},function(t,e){return(e-t)/Se},function(t){return t.getUTCMinutes()})),Ze=Je,Qe=(Je.range,Ae(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getUTCHours()})),Ke=Qe,tn=(Qe.range,Ae(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/864e5},function(t){return t.getUTCDate()-1})),en=tn;tn.range;function nn(t){return Ae(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+7*e)},function(t,e){return(e-t)/Ce})}var rn=nn(0),on=nn(1),an=nn(2),un=nn(3),sn=nn(4),cn=nn(5),ln=nn(6),fn=(rn.range,on.range,an.range,un.range,sn.range,cn.range,ln.range,Ae(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()})),hn=fn,dn=(fn.range,Ae(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()}));dn.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ae(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)}):null};var pn=dn;dn.range;function gn(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function mn(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function vn(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}var yn,bn,xn,_n,wn,On={"-":"",_:" ",0:"0"},kn=/^\s*\d+/,An=/^%/,En=/[\\^$*+?|[\]().{}]/g;function jn(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function Sn(t){return t.replace(En,"\\$&")}function Cn(t){return new RegExp("^(?:"+t.map(Sn).join("|")+")","i")}function Mn(t){for(var e={},n=-1,r=t.length;++n<r;)e[t[n].toLowerCase()]=n;return e}function Dn(t,e,n){var r=kn.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function Fn(t,e,n){var r=kn.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Nn(t,e,n){var r=kn.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function zn(t,e,n){var r=kn.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Tn(t,e,n){var r=kn.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function $n(t,e,n){var r=kn.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Rn(t,e,n){var r=kn.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Bn(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Pn(t,e,n){var r=kn.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Ln(t,e,n){var r=kn.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Un(t,e,n){var r=kn.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function qn(t,e,n){var r=kn.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function In(t,e,n){var r=kn.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Wn(t,e,n){var r=kn.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Hn(t,e,n){var r=kn.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Gn(t,e,n){var r=kn.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Yn(t,e,n){var r=An.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Vn(t,e,n){var r=kn.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Xn(t,e,n){var r=kn.exec(e.slice(n));return r?(t.Q=1e3*+r[0],n+r[0].length):-1}function Jn(t,e){return jn(t.getDate(),e,2)}function Zn(t,e){return jn(t.getHours(),e,2)}function Qn(t,e){return jn(t.getHours()%12||12,e,2)}function Kn(t,e){return jn(1+Re.count(Xe(t),t),e,3)}function tr(t,e){return jn(t.getMilliseconds(),e,3)}function er(t,e){return tr(t,e)+"000"}function nr(t,e){return jn(t.getMonth()+1,e,2)}function rr(t,e){return jn(t.getMinutes(),e,2)}function ir(t,e){return jn(t.getSeconds(),e,2)}function or(t){var e=t.getDay();return 0===e?7:e}function ar(t,e){return jn(Pe.count(Xe(t),t),e,2)}function ur(t,e){var n=t.getDay();return t=n>=4||0===n?Ie(t):Ie.ceil(t),jn(Ie.count(Xe(t),t)+(4===Xe(t).getDay()),e,2)}function sr(t){return t.getDay()}function cr(t,e){return jn(Le.count(Xe(t),t),e,2)}function lr(t,e){return jn(t.getFullYear()%100,e,2)}function fr(t,e){return jn(t.getFullYear()%1e4,e,4)}function hr(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+jn(e/60|0,"0",2)+jn(e%60,"0",2)}function dr(t,e){return jn(t.getUTCDate(),e,2)}function pr(t,e){return jn(t.getUTCHours(),e,2)}function gr(t,e){return jn(t.getUTCHours()%12||12,e,2)}function mr(t,e){return jn(1+en.count(pn(t),t),e,3)}function vr(t,e){return jn(t.getUTCMilliseconds(),e,3)}function yr(t,e){return vr(t,e)+"000"}function br(t,e){return jn(t.getUTCMonth()+1,e,2)}function xr(t,e){return jn(t.getUTCMinutes(),e,2)}function _r(t,e){return jn(t.getUTCSeconds(),e,2)}function wr(t){var e=t.getUTCDay();return 0===e?7:e}function Or(t,e){return jn(rn.count(pn(t),t),e,2)}function kr(t,e){var n=t.getUTCDay();return t=n>=4||0===n?sn(t):sn.ceil(t),jn(sn.count(pn(t),t)+(4===pn(t).getUTCDay()),e,2)}function Ar(t){return t.getUTCDay()}function Er(t,e){return jn(on.count(pn(t),t),e,2)}function jr(t,e){return jn(t.getUTCFullYear()%100,e,2)}function Sr(t,e){return jn(t.getUTCFullYear()%1e4,e,4)}function Cr(){return"+0000"}function Mr(){return"%"}function Dr(t){return+t}function Fr(t){return Math.floor(+t/1e3)}function Nr(t){return yn=function(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,u=t.months,s=t.shortMonths,c=Cn(i),l=Mn(i),f=Cn(o),h=Mn(o),d=Cn(a),p=Mn(a),g=Cn(u),m=Mn(u),v=Cn(s),y=Mn(s),b={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return s[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:Jn,e:Jn,f:er,H:Zn,I:Qn,j:Kn,L:tr,m:nr,M:rr,p:function(t){return i[+(t.getHours()>=12)]},Q:Dr,s:Fr,S:ir,u:or,U:ar,V:ur,w:sr,W:cr,x:null,X:null,y:lr,Y:fr,Z:hr,"%":Mr},x={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return s[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:dr,e:dr,f:yr,H:pr,I:gr,j:mr,L:vr,m:br,M:xr,p:function(t){return i[+(t.getUTCHours()>=12)]},Q:Dr,s:Fr,S:_r,u:wr,U:Or,V:kr,w:Ar,W:Er,x:null,X:null,y:jr,Y:Sr,Z:Cr,"%":Mr},_={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p[r[0].toLowerCase()],n+r[0].length):-1},A:function(t,e,n){var r=f.exec(e.slice(n));return r?(t.w=h[r[0].toLowerCase()],n+r[0].length):-1},b:function(t,e,n){var r=v.exec(e.slice(n));return r?(t.m=y[r[0].toLowerCase()],n+r[0].length):-1},B:function(t,e,n){var r=g.exec(e.slice(n));return r?(t.m=m[r[0].toLowerCase()],n+r[0].length):-1},c:function(t,n,r){return k(t,e,n,r)},d:Ln,e:Ln,f:Gn,H:qn,I:qn,j:Un,L:Hn,m:Pn,M:In,p:function(t,e,n){var r=c.exec(e.slice(n));return r?(t.p=l[r[0].toLowerCase()],n+r[0].length):-1},Q:Vn,s:Xn,S:Wn,u:Fn,U:Nn,V:zn,w:Dn,W:Tn,x:function(t,e,r){return k(t,n,e,r)},X:function(t,e,n){return k(t,r,e,n)},y:Rn,Y:$n,Z:Bn,"%":Yn};function w(t,e){return function(n){var r,i,o,a=[],u=-1,s=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++u<c;)37===t.charCodeAt(u)&&(a.push(t.slice(s,u)),null!=(i=On[r=t.charAt(++u)])?r=t.charAt(++u):i="e"===r?" ":"0",(o=e[r])&&(r=o(n,i)),a.push(r),s=u+1);return a.push(t.slice(s,u)),a.join("")}}function O(t,e){return function(n){var r,i,o=vn(1900);if(k(o,t,n+="",0)!=n.length)return null;if("Q"in o)return new Date(o.Q);if("p"in o&&(o.H=o.H%12+12*o.p),"V"in o){if(o.V<1||o.V>53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=mn(vn(o.y))).getUTCDay(),r=i>4||0===i?on.ceil(r):on(r),r=en.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=e(vn(o.y))).getDay(),r=i>4||0===i?Le.ceil(r):Le(r),r=Re.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?mn(vn(o.y)).getUTCDay():e(vn(o.y)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,mn(o)):e(o)}}function k(t,e,n,r){for(var i,o,a=0,u=e.length,s=n.length;a<u;){if(r>=s)return-1;if(37===(i=e.charCodeAt(a++))){if(i=e.charAt(a++),!(o=_[i in On?e.charAt(a++):i])||(r=o(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return b.x=w(n,b),b.X=w(r,b),b.c=w(e,b),x.x=w(n,x),x.X=w(r,x),x.c=w(e,x),{format:function(t){var e=w(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=O(t+="",gn);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=O(t,mn);return e.toString=function(){return t},e}}}(t),bn=yn.format,xn=yn.parse,_n=yn.utcFormat,wn=yn.utcParse,yn}Nr({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});Date.prototype.toISOString||_n("%Y-%m-%dT%H:%M:%S.%LZ");+new Date("2000-01-01T00:00:00.000Z")||wn("%Y-%m-%dT%H:%M:%S.%LZ");var zr=function(t,e,n){const r=_e((e=e||{}).type||"json");return r||Object(ct.n)("Unknown data format type: "+e.type),t=r(t,e),e.parse&&function(t,e,n){if(!t.length)return;n=n||xn;var r,i,o,a,u,s,c,l=t.columns||Object.keys(t[0]);"auto"===e&&(e=Yt(t,l));for(l=Object.keys(e),r=l.map(function(t){var r,i,o=e[t];if(o&&(0===o.indexOf("date:")||0===o.indexOf("utc:")))return("'"===(i=(r=o.split(/:(.+)?/,2))[1])[0]&&"'"===i[i.length-1]||'"'===i[0]&&'"'===i[i.length-1])&&(i=i.slice(1,-1)),"utc"===r[0]?wn(i):n(i);if(!It[o])throw Error("Illegal format pattern: "+t+":"+o);return It[o]}),a=0,s=t.length,c=l.length;a<s;++a)for(i=t[a],u=0;u<c;++u)o=l[u],i[o]=r[u](i[o])}(t,e.parse,n),t.hasOwnProperty("columns")&&delete t.columns,t};var Tr=function(t,e){return function(n){return{options:n||{},sanitize:Bt,load:Rt,fileAccess:!!e,file:Pt(e),http:Ut(t)}}}("undefined"!=typeof fetch&&fetch,null);const $r=zr;var Rr={skip:!0};function Br(t,e,n,r,i,o){var a,u,s=Object(ct.o)({},o,Rr);Object(ct.C)(n)||(n=Object(ct.l)(n)),void 0===r?a=e=>t.touch(n(e)):Object(ct.C)(r)?(u=new St(null,r,i,!1),a=e=>{u.evaluate(e);const r=n(e),i=u.value;_t(i)?t.pulse(r,i,o):t.update(r,i,s)}):a=e=>t.update(n(e),r,s),e.apply(a)}function Pr(t,e,n,r,i,o){if(void 0===r)e.targets().add(n);else{const a=o||{},u=new St(null,function(t,e){return e=Object(ct.C)(e)?e:Object(ct.l)(e),t?function(n,r){const i=e(n,r);return t.skip()||(t.skip(i!==this.value).value=i),i}:e}(n,r),i,!1);u.modified(a.force),u.rank=e.rank,e.targets().add(u),n&&(u.skip(!0),u.value=n.value,u.targets().add(n),t.connect(n,[u]))}}var Lr={};function Ur(t,e,n){this.dataflow=t,this.stamp=null==e?-1:e,this.add=[],this.rem=[],this.mod=[],this.fields=null,this.encode=n||null}var qr=Ur.prototype;function Ir(t,e){return t?function(n,r){return t(n,r)&&e(n,r)}:e}function Wr(t,e){var n=[];return Object(ct.fb)(t,e,function(t){n.push(t)}),n}function Hr(t,e){var n={};return t.visit(e,function(t){n[gt(t)]=1}),function(t){return n[gt(t)]?null:t}}function Gr(t,e,n,r){var i,o,a,u,s,c=this,l=0;for(this.dataflow=t,this.stamp=e,this.fields=null,this.encode=r||null,this.pulses=n,a=0,u=n.length;a<u;++a)if((i=n[a]).stamp===e){if(i.fields)for(s in o=c.fields||(c.fields={}),i.fields)o[s]=1;i.changed(c.ADD)&&(l|=c.ADD),i.changed(c.REM)&&(l|=c.REM),i.changed(c.MOD)&&(l|=c.MOD)}this.changes=l}qr.StopPropagation=Lr,qr.ADD=1,qr.REM=2,qr.MOD=4,qr.ADD_REM=3,qr.ADD_MOD=5,qr.ALL=7,qr.REFLOW=8,qr.SOURCE=16,qr.NO_SOURCE=32,qr.NO_FIELDS=64,qr.fork=function(t){return new Ur(this.dataflow).init(this,t)},qr.clone=function(){var t=this.fork(7);return t.add=t.add.slice(),t.rem=t.rem.slice(),t.mod=t.mod.slice(),t.source&&(t.source=t.source.slice()),t.materialize(23)},qr.addAll=function(){var t=this;return this.source&&this.source.length!==this.add.length?((t=new Ur(this.dataflow).init(this)).add=t.source,t):t},qr.init=function(t,e){var n=this;return n.stamp=t.stamp,n.encode=t.encode,!t.fields||64&e||(n.fields=t.fields),1&e?(n.addF=t.addF,n.add=t.add):(n.addF=null,n.add=[]),2&e?(n.remF=t.remF,n.rem=t.rem):(n.remF=null,n.rem=[]),4&e?(n.modF=t.modF,n.mod=t.mod):(n.modF=null,n.mod=[]),32&e?(n.srcF=null,n.source=null):(n.srcF=t.srcF,n.source=t.source),n},qr.runAfter=function(t){this.dataflow.runAfter(t)},qr.changed=function(t){var e=t||7;return 1&e&&this.add.length||2&e&&this.rem.length||4&e&&this.mod.length},qr.reflow=function(t){if(t)return this.fork(7).reflow();var e=this.add.length,n=this.source&&this.source.length;return n&&n!==e&&(this.mod=this.source,e&&this.filter(4,Hr(this,1))),this},qr.modifies=function(t){var e=Object(ct.i)(t),n=this.fields||(this.fields={});return e.forEach(function(t){n[t]=!0}),this},qr.modified=function(t){var e=this.fields;return!(!this.mod.length||!e)&&(arguments.length?Object(ct.z)(t)?t.some(function(t){return e[t]}):e[t]:!!e)},qr.filter=function(t,e){var n=this;return 1&t&&(n.addF=Ir(n.addF,e)),2&t&&(n.remF=Ir(n.remF,e)),4&t&&(n.modF=Ir(n.modF,e)),16&t&&(n.srcF=Ir(n.srcF,e)),n},qr.materialize=function(t){var e=this;return 1&(t=t||7)&&e.addF&&(e.add=Wr(e.add,e.addF),e.addF=null),2&t&&e.remF&&(e.rem=Wr(e.rem,e.remF),e.remF=null),4&t&&e.modF&&(e.mod=Wr(e.mod,e.modF),e.modF=null),16&t&&e.srcF&&(e.source=e.source.filter(e.srcF),e.srcF=null),e},qr.visit=function(t,e){var n,r,i=this,o=e;return 16&t?(Object(ct.fb)(i.source,i.srcF,o),i):(1&t&&Object(ct.fb)(i.add,i.addF,o),2&t&&Object(ct.fb)(i.rem,i.remF,o),4&t&&Object(ct.fb)(i.mod,i.modF,o),8&t&&(n=i.source)&&((r=i.add.length+i.mod.length)===n.length||(r?Object(ct.fb)(n,Hr(i,5),o):Object(ct.fb)(n,i.srcF,o))),i)};var Yr=Object(ct.x)(Gr,Ur);function Vr(t){return t.error("Dataflow already running. Use runAsync() to chain invocations."),t}Yr.fork=function(t){var e=new Ur(this.dataflow).init(this,t&this.NO_FIELDS);return void 0!==t&&(t&e.ADD&&this.visit(e.ADD,function(t){return e.add.push(t)}),t&e.REM&&this.visit(e.REM,function(t){return e.rem.push(t)}),t&e.MOD&&this.visit(e.MOD,function(t){return e.mod.push(t)})),e},Yr.changed=function(t){return this.changes&t},Yr.modified=function(t){var e=this,n=e.fields;return n&&e.changes&e.MOD?Object(ct.z)(t)?t.some(function(t){return n[t]}):n[t]:0},Yr.filter=function(){Object(ct.n)("MultiPulse does not support filtering.")},Yr.materialize=function(){Object(ct.n)("MultiPulse does not support materialization.")},Yr.visit=function(t,e){var n=this,r=n.pulses,i=r.length,o=0;if(t&n.SOURCE)for(;o<i;++o)r[o].visit(t,e);else for(;o<i;++o)r[o].stamp===n.stamp&&r[o].visit(t,e);return n};var Xr={skip:!1,force:!1};function Jr(t){var e=[];return{size:()=>e.length,peek:()=>e[0],push:n=>(e.push(n),Zr(e,0,e.length-1,t)),pop:()=>{var n,r=e.pop();return e.length?(n=e[0],e[0]=r,function(t,e,n){var r,i=e,o=t.length,a=t[e],u=1+(e<<1);for(;u<o;)(r=u+1)<o&&n(t[u],t[r])>=0&&(u=r),t[e]=t[u],u=1+((e=u)<<1);t[e]=a,Zr(t,i,e,n)}(e,0,t)):n=r,n}}}function Zr(t,e,n,r){var i,o,a;for(i=t[n];n>e&&r(i,o=t[a=n-1>>1])<0;)t[n]=o,n=a;return t[n]=i}function Qr(){this.logger(Object(ct.J)()),this.logLevel(ct.b),this._clock=0,this._rank=0;try{this._loader=Tr()}catch(t){}this._touched=lt(ct.v),this._pulses={},this._pulse=null,this._heap=Jr((t,e)=>t.qrank-e.qrank),this._postrun=[]}var Kr=Qr.prototype;function ti(t){return function(){return this._log[t].apply(this,arguments)}}function ei(t,e){St.call(this,t,null,e)}Kr.stamp=function(){return this._clock},Kr.loader=function(t){return arguments.length?(this._loader=t,this):this._loader},Kr.cleanThreshold=1e4,Kr.add=function(t,e,n,r){var i,o=1;return t instanceof St?i=t:t&&t.prototype instanceof St?i=new t:Object(ct.C)(t)?i=new St(null,t):(o=0,i=new St(t,e)),this.rank(i),o&&(r=n,n=e),n&&this.connect(i,i.parameters(n,r)),this.touch(i),i},Kr.connect=function(t,e){var n,r,i=t.rank;for(n=0,r=e.length;n<r;++n)if(i<e[n].rank)return void this.rerank(t)},Kr.rank=function(t){t.rank=++this._rank},Kr.rerank=function(t){for(var e,n,r,i=[t];i.length;)if(this.rank(e=i.pop()),n=e._targets)for(r=n.length;--r>=0;)i.push(e=n[r]),e===t&&Object(ct.n)("Cycle detected in dataflow graph.")},Kr.pulse=function(t,e,n){this.touch(t,n||Xr);var r=new Ur(this,this._clock+(this._pulse?0:1)),i=t.pulse&&t.pulse.source||[];return r.target=t,this._pulses[t.id]=e.pulse(r,i),this},Kr.touch=function(t,e){var n=e||Xr;return this._pulse?this._enqueue(t):this._touched.add(t),n.skip&&t.skip(!0),this},Kr.update=function(t,e,n){var r=n||Xr;return(t.set(e)||r.force)&&this.touch(t,r),this},Kr.changeset=wt,Kr.ingest=function(t,e,n){return this.pulse(t,this.changeset().insert($r(e,n)))},Kr.parse=$r,Kr.preload=async function(t,e,n){const r=this,i=r._pending||function(t){var e,n=new Promise(function(t){e=t});return n.requests=0,n.done=function(){0==--n.requests&&(t._pending=null,e(t))},t._pending=n}(r);i.requests+=1;const o=await r.request(e,n);return r.pulse(t,r.changeset().remove(ct.db).insert(o.data||[])),i.done(),o},Kr.request=async function(t,e){const n=this;let r,i=0;try{r=await n.loader().load(t,{context:"dataflow",response:we(e&&e.type)});try{r=$r(r,e)}catch(e){i=-2,n.warn("Data ingestion failed",t,e)}}catch(e){i=-1,n.warn("Loading failed",t,e)}return{data:r,status:i}},Kr.events=function(t,e,n,r){for(var i,o=this,a=Nt(n,r),u=function(t){t.dataflow=o;try{a.receive(t)}catch(t){o.error(t)}finally{o.run()}},s=0,c=(i="string"==typeof t&&"undefined"!=typeof document?document.querySelectorAll(t):Object(ct.i)(t)).length;s<c;++s)i[s].addEventListener(e,u);return a},Kr.on=function(t,e,n,r,i){return(t instanceof St?Pr:Br)(this,t,e,n,r,i),this},Kr.evaluate=async function(t,e,n){const r=this,i=r.logLevel();if(r._pulse)return Vr(r);if(r._pending&&await r._pending,e&&await ft(r,e),!r._touched.length)return r.info("Dataflow invoked, but nothing to do."),r;let o,a,u,s,c=++r._clock,l=0;r._pulse=new Ur(r,c,t),i>=ct.c&&(u=Date.now(),r.debug("-- START PROPAGATION ("+c+") -----")),r._touched.forEach(function(t){r._enqueue(t,!0)}),r._touched=lt(ct.v);try{for(;r._heap.size()>0;)(o=r._heap.pop()).rank===o.qrank?((a=o.run(r._getPulse(o,t))).then&&(a=await a),i>=ct.a&&r.debug(o.id,a===Lr?"STOP":a,o),a!==Lr&&(r._pulse=a,o._targets&&o._targets.forEach(t=>r._enqueue(t))),++l):r._enqueue(o,!0)}catch(t){s=t}if(r._pulses={},r._pulse=null,i>=ct.c&&(u=Date.now()-u,r.info("> Pulse "+c+": "+l+" operators; "+u+"ms")),s&&(r._postrun=[],r.error(s)),r._postrun.length){const t=r._postrun.sort((t,e)=>e.priority-t.priority);r._postrun=[];for(let e=0;e<t.length;++e)await ft(r,t[e].callback)}return n&&await ft(r,n),r},Kr.run=function(t,e,n){return this._pulse?Vr(this):(this.evaluate(t,e,n),this)},Kr.runAsync=async function(t,e,n){for(;this._running;)await this._running;const r=()=>this._running=null;return(this._running=this.evaluate(t,e,n)).then(r,r),this._running},Kr.runAfter=function(t,e,n){if(this._pulse||e)this._postrun.push({priority:n||0,callback:t});else try{t(this)}catch(t){this.error(t)}},Kr._enqueue=function(t,e){var n=!this._pulses[t.id];n&&(this._pulses[t.id]=this._pulse),(n||e)&&(t.qrank=t.rank,this._heap.push(t))},Kr._getPulse=function(t,e){var n,r=t.source,i=this._clock;return r&&Object(ct.z)(r)?new Gr(this,i,n=r.map(function(t){return t.pulse}),e):(n=this._pulses[t.id],r&&((r=r.pulse)&&r!==Lr?r.stamp===i&&n.target!==t?n=r:n.source=r.source:n.source=[]),n)},Kr.logger=function(t){return arguments.length?(this._log=t,this):this._log},Kr.error=ti("error"),Kr.warn=ti("warn"),Kr.info=ti("info"),Kr.debug=ti("debug"),Kr.logLevel=ti("level");var ni=Object(ct.x)(ei,St);ni.run=function(t){return t.stamp<=this.stamp?t.StopPropagation:(this.skip()?this.skip(!1):e=this.evaluate(t),e=e||t,this.stamp=t.stamp,e.then?e=e.then(t=>this.pulse=t):e!==t.StopPropagation&&(this.pulse=e),e);var e},ni.evaluate=function(t){var e=this.marshall(t.stamp),n=this.transform(e,t);return e.clear(),n},ni.transform=function(){};var ri={};function ii(t){var e=oi(t);return e&&e.Definition||null}function oi(t){return t=t&&t.toLowerCase(),ri.hasOwnProperty(t)?ri[t]:null}function ai(t){return t&&t.length?1===t.length?t[0]:(e=t,function(t){for(var n=e.length,r=1,i=String(e[0](t));r<n;++r)i+="|"+e[r](t);return i}):function(){return""};var e}function ui(t,e,n){return n||t+(e?"_"+e:"")}var si={values:fi({name:"values",init:"cell.store = true;",set:"cell.data.values()",idx:-1}),count:fi({name:"count",set:"cell.num"}),__count__:fi({name:"count",set:"this.missing + this.valid"}),missing:fi({name:"missing",set:"this.missing"}),valid:fi({name:"valid",set:"this.valid"}),sum:fi({name:"sum",init:"this.sum = 0;",add:"this.sum += +v;",rem:"this.sum -= v;",set:"this.sum"}),mean:fi({name:"mean",init:"this.mean = 0;",add:"var d = v - this.mean; this.mean += d / this.valid;",rem:"var d = v - this.mean; this.mean -= this.valid ? d / this.valid : this.mean;",set:"this.valid ? this.mean : undefined"}),average:fi({name:"average",set:"this.valid ? this.mean : undefined",req:["mean"],idx:1}),variance:fi({name:"variance",init:"this.dev = 0;",add:"this.dev += d * (v - this.mean);",rem:"this.dev -= d * (v - this.mean);",set:"this.valid > 1 ? this.dev / (this.valid-1) : undefined",req:["mean"],idx:1}),variancep:fi({name:"variancep",set:"this.valid > 1 ? this.dev / this.valid : undefined",req:["variance"],idx:2}),stdev:fi({name:"stdev",set:"this.valid > 1 ? Math.sqrt(this.dev / (this.valid-1)) : undefined",req:["variance"],idx:2}),stdevp:fi({name:"stdevp",set:"this.valid > 1 ? Math.sqrt(this.dev / this.valid) : undefined",req:["variance"],idx:2}),stderr:fi({name:"stderr",set:"this.valid > 1 ? Math.sqrt(this.dev / (this.valid * (this.valid-1))) : undefined",req:["variance"],idx:2}),distinct:fi({name:"distinct",set:"cell.data.distinct(this.get)",req:["values"],idx:3}),ci0:fi({name:"ci0",set:"cell.data.ci0(this.get)",req:["values"],idx:3}),ci1:fi({name:"ci1",set:"cell.data.ci1(this.get)",req:["values"],idx:3}),median:fi({name:"median",set:"cell.data.q2(this.get)",req:["values"],idx:3}),q1:fi({name:"q1",set:"cell.data.q1(this.get)",req:["values"],idx:3}),q3:fi({name:"q3",set:"cell.data.q3(this.get)",req:["values"],idx:3}),argmin:fi({name:"argmin",init:"this.argmin = undefined;",add:"if (v < this.min) this.argmin = t;",rem:"if (v <= this.min) this.argmin = undefined;",set:"this.argmin || cell.data.argmin(this.get)",req:["min"],str:["values"],idx:3}),argmax:fi({name:"argmax",init:"this.argmax = undefined;",add:"if (v > this.max) this.argmax = t;",rem:"if (v >= this.max) this.argmax = undefined;",set:"this.argmax || cell.data.argmax(this.get)",req:["max"],str:["values"],idx:3}),min:fi({name:"min",init:"this.min = undefined;",add:"if (v < this.min || this.min === undefined) this.min = v;",rem:"if (v <= this.min) this.min = NaN;",set:"this.min = (isNaN(this.min) ? cell.data.min(this.get) : this.min)",str:["values"],idx:4}),max:fi({name:"max",init:"this.max = undefined;",add:"if (v > this.max || this.max === undefined) this.max = v;",rem:"if (v >= this.max) this.max = NaN;",set:"this.max = (isNaN(this.max) ? cell.data.max(this.get) : this.max)",str:["values"],idx:4})},ci=Object.keys(si);function li(t,e){return si[t](e)}function fi(t){return function(e){var n=Object(ct.o)({init:"",add:"",rem:"",idx:0},t);return n.out=e||t.name,n}}function hi(t,e){return t.idx-e.idx}function di(t,e){var n=e||ct.w,r=function(t,e){var n,r=t.reduce(function t(n,r){function i(e){n[e]||t(n,n[e]=si[e]())}return r.req&&r.req.forEach(i),e&&r.str&&r.str.forEach(i),n},t.reduce(function(t,e){return t[e.name]=e,t},{})),i=[];for(n in r)i.push(r[n]);return i.sort(hi)}(t,!0),i="var cell = this.cell; this.valid = 0; this.missing = 0;",o="this.cell = cell; this.init();",a="if(v==null){++this.missing; return;} if(v!==v) return; ++this.valid;",u="if(v==null){--this.missing; return;} if(v!==v) return; --this.valid;",s="var cell = this.cell;";return r.forEach(function(t){i+=t.init,a+=t.add,u+=t.rem}),t.slice().sort(hi).forEach(function(t){s+="t['"+t.out+"']="+t.set+";"}),s+="return t;",(o=Function("cell",o)).prototype.init=Function(i),o.prototype.add=Function("v","t",a),o.prototype.rem=Function("v","t",u),o.prototype.set=Function("t",s),o.prototype.get=n,o.fields=t.map(function(t){return t.out}),o}var pi=function(t){var e,n,r,i,o,a,u,s,c=t.maxbins||20,l=t.base||10,f=Math.log(l),h=t.divide||[5,2],d=t.extent[0],p=t.extent[1],g=p-d||Math.abs(d)||1;if(t.step)e=t.step;else if(t.steps){for(o=g/c,a=0,u=t.steps.length;a<u&&t.steps[a]<o;++a);e=t.steps[Math.max(0,a-1)]}else{for(n=Math.ceil(Math.log(c)/f),r=t.minstep||0,e=Math.max(r,Math.pow(l,Math.round(Math.log(g)/f)-n));Math.ceil(g/e)>c;)e*=l;for(a=0,u=h.length;a<u;++a)(o=e/h[a])>=r&&g/o<=c&&(e=o)}return i=(o=Math.log(e))>=0?0:1+~~(-o/f),s=Math.pow(l,-i-1),(t.nice||void 0===t.nice)&&(d=d<(o=Math.floor(d/e+s)*e)?o-e:o,p=Math.ceil(p/e)*e),{start:d,stop:p===d?d+e:p,step:e}},gi=function*(t,e){if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(yield e);else{let n=-1;for(let r of t)null!=(r=e(r,++n,t))&&(r=+r)>=r&&(yield r)}},mi=Math.random;function vi(t){mi=t}var yi=function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN},bi=function(t){var e;return 1===t.length&&(e=t,t=function(t,n){return yi(e(t),n)}),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var o=r+i>>>1;t(e[o],n)<0?r=o+1:i=o}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var o=r+i>>>1;t(e[o],n)>0?i=o:r=o+1}return r}}};var xi=bi(yi),_i=xi.right,wi=xi.left,Oi=_i;function ki(t,e){let n,r=0,i=0,o=0;if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(o+=(n=e-i)*(e-(i+=n/++r)));else{let a=-1;for(let u of t)null!=(u=e(u,++a,t))&&(u=+u)>=u&&(o+=(n=u-i)*(u-(i+=n/++r)))}if(r>1)return o/(r-1)}var Ai=function(t,e){let n,r;if(void 0===e)for(const e of t)null!=e&&(void 0===n?e>=e&&(n=r=e):(n>e&&(n=e),r<e&&(r=e)));else{let i=-1;for(let o of t)null!=(o=e(o,++i,t))&&(void 0===n?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]};var Ei=Array.prototype,ji=(Ei.slice,Ei.map,function(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((e-t)/n)),o=new Array(i);++r<i;)o[r]=t+r*n;return o}),Si=Math.sqrt(50),Ci=Math.sqrt(10),Mi=Math.sqrt(2),Di=function(t,e,n){var r,i,o,a,u=-1;if(n=+n,(t=+t)===(e=+e)&&n>0)return[t];if((r=e<t)&&(i=t,t=e,e=i),0===(a=Fi(t,e,n))||!isFinite(a))return[];if(a>0)for(t=Math.ceil(t/a),e=Math.floor(e/a),o=new Array(i=Math.ceil(e-t+1));++u<i;)o[u]=(t+u)*a;else for(t=Math.floor(t*a),e=Math.ceil(e*a),o=new Array(i=Math.ceil(t-e+1));++u<i;)o[u]=(t-u)/a;return r&&o.reverse(),o};function Fi(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Si?10:o>=Ci?5:o>=Mi?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Si?10:o>=Ci?5:o>=Mi?2:1)}function Ni(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Si?i*=10:o>=Ci?i*=5:o>=Mi&&(i*=2),e<t?-i:i}var zi=function(t){return null===t?NaN:+t};function Ti(t,e,n=zi){if(r=t.length){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),a=+n(t[o],o,t);return a+(+n(t[o+1],o+1,t)-a)*(i-o)}}function $i(t,e,n=0,r=t.length-1,i=yi){for(;r>n;){if(r-n>600){const o=r-n+1,a=e-n+1,u=Math.log(o),s=.5*Math.exp(2*u/3),c=.5*Math.sqrt(u*s*(o-s)/o)*(a-o/2<0?-1:1);$i(t,e,Math.max(n,Math.floor(e-a*s/o+c)),Math.min(r,Math.floor(e+(o-a)*s/o+c)),i)}const o=t[e];let a=n,u=r;for(Ri(t,n,e),i(t[r],o)>0&&Ri(t,n,r);a<u;){for(Ri(t,a,u),++a,--u;i(t[a],o)<0;)++a;for(;i(t[u],o)>0;)--u}0===i(t[n],o)?Ri(t,n,u):Ri(t,++u,r),u<=e&&(n=u+1),e<=u&&(r=u-1)}return t}function Ri(t,e,n){const r=t[e];t[e]=t[n],t[n]=r}var Bi=function(t,e){if(!(t=Float64Array.from(function*(t,e){if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(yield e);else{let n=-1;for(let r of t)null!=(r=e(r,++n,t))&&(r=+r)>=r&&(yield r)}}(t,e))).length)return;const n=t.length,r=n>>1;return $i(t,r-1,0),0==(1&n)&&$i(t,r,r),Ti(t,.5)};function Pi(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n>i||void 0===n&&i>=i)&&(n=i)}return n}var Li=function(t,e){return Array.from(e,e=>t[e])};var Ui=function(t,e,n,r){if(!t.length)return[void 0,void 0];var i,o,a,u,s=Float64Array.from(gi(t,r)),c=s.length,l=e;for(a=0,u=Array(l);a<l;++a){for(i=0,o=0;o<c;++o)i+=s[~~(mi()*c)];u[a]=i/c}return[Ti(u.sort(yi),n/2),Ti(u,1-n/2)]},qi=function(t,e){var n=Float64Array.from(gi(t,e));return[Ti(n.sort(yi),.25),Ti(n,.5),Ti(n,.75)]},Ii=function(t){return function(){return(t=(1103515245*t+12345)%2147483647)/2147483647}},Wi=function(t,e){null==e&&(e=t,t=0);var n,r,i,o={};return o.min=function(t){return arguments.length?(i=r-(n=t||0),o):n},o.max=function(t){return arguments.length?(i=(r=t||0)-n,o):r},o.sample=function(){return n+Math.floor(i*mi())},o.pdf=function(t){return t===Math.floor(t)&&t>=n&&t<r?1/i:0},o.cdf=function(t){var e=Math.floor(t);return e<n?0:e>=r?1:(e-n+1)/i},o.icdf=function(t){return t>=0&&t<=1?n-1+Math.floor(t*i):NaN},o.min(t).max(e)},Hi=function(t,e){var n,r,i=NaN,o={mean:function(t){return arguments.length?(n=t||0,i=NaN,o):n},stdev:function(t){return arguments.length?(r=null==t?1:t,i=NaN,o):r},sample:function(){var t,e,o=0,a=0;if(i==i)return o=i,i=NaN,o;do{t=(o=2*mi()-1)*o+(a=2*mi()-1)*a}while(0===t||t>1);return e=Math.sqrt(-2*Math.log(t)/t),i=n+a*e*r,n+o*e*r},pdf:function(t){var e=Math.exp(Math.pow(t-n,2)/(-2*Math.pow(r,2)));return 1/(r*Math.sqrt(2*Math.PI))*e},cdf:function(t){var e,i=(t-n)/r,o=Math.abs(i);if(o>37)e=0;else{var a=Math.exp(-o*o/2);o<7.07106781186547?(e=a*((((((.0352624965998911*o+.700383064443688)*o+6.37396220353165)*o+33.912866078383)*o+112.079291497871)*o+221.213596169931)*o+220.206867912376),e/=((((((.0883883476483184*o+1.75566716318264)*o+16.064177579207)*o+86.7807322029461)*o+296.564248779674)*o+637.333633378831)*o+793.826512519948)*o+440.413735824752):e=a/(o+1/(o+2/(o+3/(o+4/(o+.65)))))/2.506628274631}return i>0?1-e:e},icdf:function(t){if(t<=0||t>=1)return NaN;var e=2*t-1,i=8*(Math.PI-3)/(3*Math.PI*(4-Math.PI)),o=2/(Math.PI*i)+Math.log(1-Math.pow(e,2))/2,a=Math.log(1-e*e)/i,u=(e>0?1:-1)*Math.sqrt(Math.sqrt(o*o-a)-o);return n+r*Math.SQRT2*u}};return o.mean(t).stdev(e)},Gi=function(t,e){var n=Hi(),r={},i=0;return r.data=function(n){return arguments.length?(t=n,i=n?n.length:0,r.bandwidth(e)):t},r.bandwidth=function(n){return arguments.length?(!(e=n)&&t&&(e=function(t){var e=t.length,n=qi(t),r=(n[2]-n[0])/1.34;return 1.06*Math.min(Math.sqrt(ki(t)),r)*Math.pow(e,-.2)}(t)),r):e},r.sample=function(){return t[~~(mi()*i)]+e*n.sample()},r.pdf=function(r){for(var o=0,a=0;a<i;++a)o+=n.pdf((r-t[a])/e);return o/e/i},r.cdf=function(r){for(var o=0,a=0;a<i;++a)o+=n.cdf((r-t[a])/e);return o/i},r.icdf=function(){throw Error("KDE icdf not supported.")},r.data(t)};var Yi=function(t,e){var n,r={},i=0;return r.weights=function(t){return arguments.length?(n=function(t){var e,n=[],r=0;for(e=0;e<i;++e)r+=n[e]=null==t[e]?1:+t[e];for(e=0;e<i;++e)n[e]/=r;return n}(e=t||[]),r):e},r.distributions=function(n){return arguments.length?(n?(i=n.length,t=n):(i=0,t=[]),r.weights(e)):t},r.sample=function(){for(var e=mi(),r=t[i-1],o=n[0],a=0;a<i-1;o+=n[++a])if(e<o){r=t[a];break}return r.sample()},r.pdf=function(e){for(var r=0,o=0;o<i;++o)r+=n[o]*t[o].pdf(e);return r},r.cdf=function(e){for(var r=0,o=0;o<i;++o)r+=n[o]*t[o].cdf(e);return r},r.icdf=function(){throw Error("Mixture icdf not supported.")},r.distributions(t).weights(e)},Vi=function(t,e){null==e&&(e=null==t?1:t,t=0);var n,r,i,o={};return o.min=function(t){return arguments.length?(i=r-(n=t||0),o):n},o.max=function(t){return arguments.length?(i=(r=t||0)-n,o):r},o.sample=function(){return n+i*mi()},o.pdf=function(t){return t>=n&&t<=r?1/i:0},o.cdf=function(t){return t<n?0:t>r?1:(t-n)/i},o.icdf=function(t){return t>=0&&t<=1?n+t*i:NaN},o.min(t).max(e)},Xi=function(t,e,n,r){const i=r-t*t,o=Math.abs(i)<1e-24?0:(n-t*e)/i;return[e-o*t,o]};function Ji(t,e,n,r){t=t.filter(t=>{let r=e(t),i=n(t);return null!=r&&(r=+r)>=r&&null!=i&&(i=+i)>=i}),r&&t.sort((t,n)=>e(t)-e(n));const i=new Float64Array(t.length),o=new Float64Array(t.length);let a=0;for(let r of t)i[a]=e(r),o[a]=n(r),++a;return[i,o]}function Zi(t,e,n,r){let i,o,a=-1,u=-1;for(let s of t)i=e(s,++a,t),o=n(s,a,t),null!=i&&(i=+i)>=i&&null!=o&&(o=+o)>=o&&r(i,o,++u)}var Qi=function(t,e,n,r,i){let o=0,a=0;return Zi(t,e,n,(t,e)=>{const n=e-i(t),u=e-r;o+=n*n,a+=u*u}),1-o/a},Ki=function(t,e,n){let r=0,i=0,o=0,a=0,u=0;Zi(t,e,n,(t,e)=>{r+=t,i+=e,o+=t*e,a+=t*t,++u});const s=Xi(r/u,i/u,o/u,a/u),c=t=>s[0]+s[1]*t;return{coef:s,predict:c,rSquared:Qi(t,e,n,i/u,c)}},to=function(t,e,n){let r=0,i=0,o=0,a=0,u=0;Zi(t,e,n,(t,e)=>{t=Math.log(t),r+=t,i+=e,o+=t*e,a+=t*t,++u});const s=Xi(r/u,i/u,o/u,a/u),c=t=>s[0]+s[1]*Math.log(t);return{coef:s,predict:c,rSquared:Qi(t,e,n,i/u,c)}},eo=function(t,e,n){let r=0,i=0,o=0,a=0,u=0,s=0;Zi(t,e,n,(t,e)=>{const n=Math.log(e),c=t*e;r+=e,o+=c,u+=t*c,i+=e*n,a+=c*n,++s});const c=Xi(o/r,i/r,a/r,u/r),l=t=>c[0]*Math.exp(c[1]*t);return c[0]=Math.exp(c[0]),{coef:c,predict:l,rSquared:Qi(t,e,n,r/s,l)}},no=function(t,e,n){let r=0,i=0,o=0,a=0,u=0,s=0;Zi(t,e,n,(t,e)=>{const n=Math.log(t),c=Math.log(e);r+=n,i+=c,o+=n*c,a+=n*n,u+=e,++s});const c=Xi(r/s,i/s,o/s,a/s),l=t=>c[0]*Math.pow(t,c[1]);return c[0]=Math.exp(c[0]),{coef:c,predict:l,rSquared:Qi(t,e,n,u/s,l)}},ro=function(t,e,n){let r=0,i=0,o=0,a=0,u=0,s=0,c=0,l=0;Zi(t,e,n,(t,e)=>{const n=t*t;r+=t,i+=e,o+=n,a+=n*t,u+=n*n,s+=t*e,c+=n*e,++l});const f=o-r*r/l,h=a-o*r/l,d=u-o*o/l,p=f*d-h*h,g=((c-=o*(i/=l))*f-(s-=r*i)*h)/p,m=(s*d-c*h)/p,v=i-m*(r/l)-g*(o/l),y=t=>g*t*t+m*t+v;return{coef:[v,m,g],predict:y,rSquared:Qi(t,e,n,i,y)}},io=function(t,e,n,r){if(1===r)return Ki(t,e,n);if(2===r)return ro(t,e,n);const[i,o]=Ji(t,e,n),a=i.length,u=[],s=[],c=r+1;let l,f,h,d,p,g=0;for(l=0;l<a;++l)g+=o[l];for(l=0;l<c;++l){for(h=0,d=0;h<a;++h)d+=Math.pow(i[h],l)*o[h];for(u.push(d),p=new Float64Array(c),f=0;f<c;++f){for(h=0,d=0;h<a;++h)d+=Math.pow(i[h],l+f);p[f]=d}s.push(p)}s.push(u);const m=function(t){const e=t.length-1,n=[];let r,i,o,a,u;for(r=0;r<e;++r){for(a=r,i=r+1;i<e;++i)Math.abs(t[r][i])>Math.abs(t[r][a])&&(a=i);for(o=r;o<e+1;++o)u=t[o][r],t[o][r]=t[o][a],t[o][a]=u;for(i=r+1;i<e;++i)for(o=e;o>=r;o--)t[o][i]-=t[o][r]*t[r][i]/t[r][r]}for(i=e-1;i>=0;--i){for(u=0,o=i+1;o<e;++o)u+=t[o][i]*n[o];n[i]=(t[e][i]-u)/t[i][i]}return n}(s),v=t=>{let e=0,n=0,r=m.length;for(;n<r;++n)e+=m[n]*Math.pow(t,n);return e};return{coef:m,predict:v,rSquared:Qi(t,e,n,g/a,v)}};var oo=function(t,e,n,r){const[i,o]=Ji(t,e,n,!0),a=i.length,u=Math.max(2,~~(r*a)),s=new Float64Array(a),c=new Float64Array(a),l=new Float64Array(a).fill(1);for(let t=-1;++t<=2;){const e=[0,u-1];for(let t=0;t<a;++t){const n=i[t],r=e[0],a=e[1],u=n-i[r]>i[a]-n?r:a;let f=0,h=0,d=0,p=0,g=0,m=1/Math.abs(i[u]-n||1);for(let t=r;t<=a;++t){const e=i[t],r=o[t],a=ao(Math.abs(n-e)*m)*l[t],u=e*a;f+=a,h+=u,d+=r*a,p+=r*u,g+=e*u}const[v,y]=Xi(h/f,d/f,p/f,g/f);s[t]=v+y*n,c[t]=Math.abs(o[t]-s[t]),uo(i,t+1,e)}if(2===t)break;const n=Bi(c);if(Math.abs(n)<1e-12)break;for(let t,e,r=0;r<a;++r)t=c[r]/(6*n),l[r]=t>=1?1e-12:(e=1-t*t)*e}return function(t,e){const n=t.length,r=[];for(let i,o=0,a=0,u=[];o<n;++o)i=t[o],u[0]===i?u[1]+=(e[o]-u[1])/++a:(a=0,u=[i,e[o]],r.push(u));return r}(i,s)};function ao(t){return(t=1-t*t*t)*t*t}function uo(t,e,n){let r=t[e],i=n[0],o=n[1]+1;if(!(o>=t.length))for(;e>i&&t[o]-r<=r-t[i];)n[0]=++i,n[1]=o,++o}const so=.1*Math.PI/180;var co=function(t,e,n,r){n=n||25,r=Math.max(n,r||200);const i=e=>[e,t(e)],o=e[0],a=e[1],u=a-o,s=u/r,c=[i(o)],l=[];if(n===r){for(let t=1;t<r;++t)c.push(i(o+t/n*u));return c.push(i(a)),c}l.push(i(a));for(let t=n;--t>0;)l.push(i(o+t/n*u));let f=c[0],h=l[l.length-1];for(;h;){const t=i((f[0]+h[0])/2);t[0]-f[0]>=s&&lo(f,t,h)>so?l.push(t):(f=h,c.push(h),l.pop()),h=l[l.length-1]}return c};function lo(t,e,n){const r=Math.atan2(n[1]-t[1],n[0]-t[0]),i=Math.atan2(e[1]-t[1],e[0]-t[0]);return Math.abs(r-i)}function fo(t){this._key=t?Object(ct.t)(t):gt,this.reset()}var ho=fo.prototype;function po(t){ei.call(this,null,t),this._adds=[],this._mods=[],this._alen=0,this._mlen=0,this._drop=!0,this._cross=!1,this._dims=[],this._dnames=[],this._measures=[],this._countOnly=!1,this._counts=null,this._prev=null,this._inputs=null,this._outputs=null}ho.reset=function(){this._add=[],this._rem=[],this._ext=null,this._get=null,this._q=null},ho.add=function(t){this._add.push(t)},ho.rem=function(t){this._rem.push(t)},ho.values=function(){if(this._get=null,0===this._rem.length)return this._add;var t,e,n,r=this._add,i=this._rem,o=this._key,a=r.length,u=i.length,s=Array(a-u),c={};for(t=0;t<u;++t)c[o(i[t])]=1;for(t=0,e=0;t<a;++t)c[o(n=r[t])]?c[o(n)]=0:s[e++]=n;return this._rem=[],this._add=s},ho.distinct=function(t){for(var e,n=this.values(),r=n.length,i={},o=0;--r>=0;)e=t(n[r])+"",i.hasOwnProperty(e)||(i[e]=1,++o);return o},ho.extent=function(t){if(this._get!==t||!this._ext){var e=this.values(),n=Object(ct.q)(e,t);this._ext=[e[n[0]],e[n[1]]],this._get=t}return this._ext},ho.argmin=function(t){return this.extent(t)[0]||{}},ho.argmax=function(t){return this.extent(t)[1]||{}},ho.min=function(t){var e=this.extent(t)[0];return null!=e?t(e):void 0},ho.max=function(t){var e=this.extent(t)[1];return null!=e?t(e):void 0},ho.quartile=function(t){return this._get===t&&this._q||(this._q=qi(this.values(),t),this._get=t),this._q},ho.q1=function(t){return this.quartile(t)[0]},ho.q2=function(t){return this.quartile(t)[1]},ho.q3=function(t){return this.quartile(t)[2]},ho.ci=function(t){return this._get===t&&this._ci||(this._ci=Ui(this.values(),1e3,.05,t),this._get=t),this._ci},ho.ci0=function(t){return this.ci(t)[0]},ho.ci1=function(t){return this.ci(t)[1]},po.Definition={type:"Aggregate",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:ci},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"drop",type:"boolean",default:!0},{name:"cross",type:"boolean",default:!1},{name:"key",type:"field"}]};var go=Object(ct.x)(po,ei);go.transform=function(t,e){var n,r=this,i=e.fork(e.NO_SOURCE|e.NO_FIELDS);return this.stamp=i.stamp,this.value&&((n=t.modified())||e.modified(this._inputs))?(this._prev=this.value,this.value=n?this.init(t):{},e.visit(e.SOURCE,function(t){r.add(t)})):(this.value=this.value||this.init(t),e.visit(e.REM,function(t){r.rem(t)}),e.visit(e.ADD,function(t){r.add(t)})),i.modifies(this._outputs),r._drop=!1!==t.drop,t.cross&&r._dims.length>1&&(r._drop=!1,this.cross()),r.changes(i)},go.cross=function(){var t=this,e=t.value,n=t._dnames,r=n.map(function(){return{}}),i=n.length;function o(t){var e,o,a,u;for(e in t)for(a=t[e].tuple,o=0;o<i;++o)r[o][u=a[n[o]]]=u}o(t._prev),o(e),function o(a,u,s){var c,l,f=n[s],h=r[s++];for(c in h)u[f]=h[c],l=a?a+"|"+c:c,s<i?o(l,u,s):e[l]||t.cell(l,u)}("",{},0)},go.init=function(t){var e=this._inputs=[],n=this._outputs=[],r={};function i(t){for(var n,i=Object(ct.i)(Object(ct.g)(t)),o=0,a=i.length;o<a;++o)r[n=i[o]]||(r[n]=1,e.push(n))}this._dims=Object(ct.i)(t.groupby),this._dnames=this._dims.map(function(t){var e=Object(ct.h)(t);return i(t),n.push(e),e}),this.cellkey=t.key?t.key:ai(this._dims),this._countOnly=!0,this._counts=[],this._measures=[];var o,a,u,s,c,l,f=t.fields||[null],h=t.ops||["count"],d=t.as||[],p=f.length,g={};for(p!==h.length&&Object(ct.n)("Unmatched number of fields and aggregate ops."),l=0;l<p;++l)o=f[l],a=h[l],null==o&&"count"!==a&&Object(ct.n)("Null aggregate field specified."),c=ui(a,s=Object(ct.h)(o),d[l]),n.push(c),"count"!==a?((u=g[s])||(i(o),(u=g[s]=[]).field=o,this._measures.push(u)),"count"!==a&&(this._countOnly=!1),u.push(li(a,c))):this._counts.push(c);return this._measures=this._measures.map(function(t){return di(t,t.field)}),{}},go.cellkey=ai(),go.cell=function(t,e){var n=this.value[t];return n?0===n.num&&this._drop&&n.stamp<this.stamp?(n.stamp=this.stamp,this._adds[this._alen++]=n):n.stamp<this.stamp&&(n.stamp=this.stamp,this._mods[this._mlen++]=n):(n=this.value[t]=this.newcell(t,e),this._adds[this._alen++]=n),n},go.newcell=function(t,e){var n={key:t,num:0,agg:null,tuple:this.newtuple(e,this._prev&&this._prev[t]),stamp:this.stamp,store:!1};if(!this._countOnly){var r,i=this._measures,o=i.length;for(n.agg=Array(o),r=0;r<o;++r)n.agg[r]=new i[r](n)}return n.store&&(n.data=new fo),n},go.newtuple=function(t,e){var n,r,i=this._dnames,o=this._dims,a={};for(n=0,r=o.length;n<r;++n)a[i[n]]=o[n](t);return e?xt(e.tuple,a):vt(a)},go.add=function(t){var e,n,r,i=this.cellkey(t),o=this.cell(i,t);if(o.num+=1,!this._countOnly)for(o.store&&o.data.add(t),n=0,r=(e=o.agg).length;n<r;++n)e[n].add(e[n].get(t),t)},go.rem=function(t){var e,n,r,i=this.cellkey(t),o=this.cell(i,t);if(o.num-=1,!this._countOnly)for(o.store&&o.data.rem(t),n=0,r=(e=o.agg).length;n<r;++n)e[n].rem(e[n].get(t),t)},go.celltuple=function(t){var e,n,r,i=t.tuple,o=this._counts;for(t.store&&t.data.values(),n=0,r=o.length;n<r;++n)i[o[n]]=t.num;if(!this._countOnly)for(n=0,r=(e=t.agg).length;n<r;++n)e[n].set(i);return i},go.changes=function(t){var e,n,r,i,o=this._adds,a=this._mods,u=this._prev,s=this._drop,c=t.add,l=t.rem,f=t.mod;if(u)for(n in u)e=u[n],s&&!e.num||l.push(e.tuple);for(r=0,i=this._alen;r<i;++r)c.push(this.celltuple(o[r])),o[r]=null;for(r=0,i=this._mlen;r<i;++r)(0===(e=a[r]).num&&s?l:f).push(this.celltuple(e)),a[r]=null;return this._alen=this._mlen=0,this._prev=null,t};function mo(t){ei.call(this,null,t)}mo.Definition={type:"Bin",metadata:{modifies:!0},params:[{name:"field",type:"field",required:!0},{name:"anchor",type:"number"},{name:"maxbins",type:"number",default:20},{name:"base",type:"number",default:10},{name:"divide",type:"number",array:!0,default:[5,2]},{name:"extent",type:"number",array:!0,length:2,required:!0},{name:"step",type:"number"},{name:"steps",type:"number",array:!0},{name:"minstep",type:"number",default:0},{name:"nice",type:"boolean",default:!0},{name:"name",type:"string"},{name:"as",type:"string",array:!0,length:2,default:["bin0","bin1"]}]};var vo=Object(ct.x)(mo,ei);vo.transform=function(t,e){var n,r=this._bins(t),i=r.start,o=r.step,a=t.as||["bin0","bin1"],u=a[0],s=a[1];return n=t.modified()?(e=e.reflow(!0)).SOURCE:e.modified(Object(ct.g)(t.field))?e.ADD_MOD:e.ADD,e.visit(n,function(t){var e=r(t);t[u]=e,t[s]=null==e?null:i+o*(1+(e-i)/o)}),e.modifies(a)},vo._bins=function(t){if(this.value&&!t.modified())return this.value;var e,n,r=t.field,i=pi(t),o=i.start,a=i.stop,u=i.step;null!=(e=t.anchor)&&(n=e-(o+u*Math.floor((e-o)/u)),o+=n,a+=n);var s=function(t){var e=r(t);return null==e?null:(e=Math.max(o,Math.min(+e,a-u)),o+u*Math.floor(1e-14+(e-o)/u))};return s.start=o,s.stop=a,s.step=u,this.value=Object(ct.f)(s,Object(ct.g)(r),t.name||"bin_"+Object(ct.h)(r))};var yo=function(t,e,n){var r=t,i=e||[],o=n||[],a={},u=0;return{add:function(t){o.push(t)},remove:function(t){a[r(t)]=++u},size:function(){return i.length},data:function(t,e){return u&&(i=i.filter(function(t){return!a[r(t)]}),a={},u=0),e&&t&&i.sort(t),o.length&&(i=t?Object(ct.K)(t,i,o.sort(t)):i.concat(o),o=[]),i}}};function bo(t){ei.call(this,[],t)}function xo(t){St.call(this,null,_o,t)}function _o(t){return this.value&&!t.modified()?this.value:Object(ct.k)(t.fields,t.orders)}function wo(t){ei.call(this,null,t)}bo.Definition={type:"Collect",metadata:{source:!0},params:[{name:"sort",type:"compare"}]},Object(ct.x)(bo,ei).transform=function(t,e){var n=e.fork(e.ALL),r=yo(gt,this.value,n.materialize(n.ADD).add),i=t.sort,o=e.changed()||i&&(t.modified("sort")||e.modified(i.fields));return n.visit(n.REM,r.remove),this.modified(o),this.value=n.source=r.data(i,o),e.source&&e.source.root&&(this.value.root=e.source.root),n},Object(ct.x)(xo,St),wo.Definition={type:"CountPattern",metadata:{generates:!0,changes:!0},params:[{name:"field",type:"field",required:!0},{name:"case",type:"enum",values:["upper","lower","mixed"],default:"mixed"},{name:"pattern",type:"string",default:'[\\w"]+'},{name:"stopwords",type:"string",default:""},{name:"as",type:"string",array:!0,length:2,default:["text","count"]}]};var Oo=Object(ct.x)(wo,ei);function ko(t){ei.call(this,null,t)}Oo.transform=function(t,e){function n(e){return function(n){for(var r,i=function(t,e,n){switch(e){case"upper":t=t.toUpperCase();break;case"lower":t=t.toLowerCase()}return t.match(n)}(u(n),t.case,o)||[],s=0,c=i.length;s<c;++s)a.test(r=i[s])||e(r)}}var r=this._parameterCheck(t,e),i=this._counts,o=this._match,a=this._stop,u=t.field,s=t.as||["text","count"],c=n(function(t){i[t]=1+(i[t]||0)}),l=n(function(t){i[t]-=1});return r?e.visit(e.SOURCE,c):(e.visit(e.ADD,c),e.visit(e.REM,l)),this._finish(e,s)},Oo._parameterCheck=function(t,e){var n=!1;return!t.modified("stopwords")&&this._stop||(this._stop=new RegExp("^"+(t.stopwords||"")+"$","i"),n=!0),!t.modified("pattern")&&this._match||(this._match=new RegExp(t.pattern||"[\\w']+","g"),n=!0),(t.modified("field")||e.modified(t.field.fields))&&(n=!0),n&&(this._counts={}),n},Oo._finish=function(t,e){var n,r,i,o=this._counts,a=this._tuples||(this._tuples={}),u=e[0],s=e[1],c=t.fork(t.NO_SOURCE|t.NO_FIELDS);for(n in o)r=a[n],i=o[n]||0,!r&&i?(a[n]=r=vt({}),r[u]=n,r[s]=i,c.add.push(r)):0===i?(r&&c.rem.push(r),o[n]=null,a[n]=null):r[s]!==i&&(r[s]=i,c.mod.push(r));return c.modifies(e)},ko.Definition={type:"Cross",metadata:{generates:!0},params:[{name:"filter",type:"expr"},{name:"as",type:"string",array:!0,length:2,default:["a","b"]}]},Object(ct.x)(ko,ei).transform=function(t,e){var n=e.fork(e.NO_SOURCE),r=this.value,i=t.as||["a","b"],o=i[0],a=i[1];return!r||e.changed(e.ADD_REM)||t.modified("as")||t.modified("filter")?(r&&(n.rem=r),r=e.materialize(e.SOURCE).source,n.add=this.value=function(t,e,n,r){for(var i,o,a=[],u={},s=t.length,c=0;c<s;++c)for(u[e]=o=t[c],i=0;i<s;++i)u[n]=t[i],r(u)&&(a.push(vt(u)),(u={})[e]=o);return a}(r,o,a,t.filter||ct.db)):n.mod=r,n.source=this.value,n.modifies(i)};var Ao={kde:Gi,mixture:Yi,normal:Hi,uniform:Vi},Eo="distributions",jo="function",So="field";function Co(t){ei.call(this,null,t)}var Mo=[{key:{function:"normal"},params:[{name:"mean",type:"number",default:0},{name:"stdev",type:"number",default:1}]},{key:{function:"uniform"},params:[{name:"min",type:"number",default:0},{name:"max",type:"number",default:1}]},{key:{function:"kde"},params:[{name:"field",type:"field",required:!0},{name:"from",type:"data"},{name:"bandwidth",type:"number",default:0}]}],Do={key:{function:"mixture"},params:[{name:"distributions",type:"param",array:!0,params:Mo},{name:"weights",type:"number",array:!0}]};function Fo(t){St.call(this,null,No,t),this.modified(!0)}function No(t){var e=t.expr;return this.value&&!t.modified("expr")?this.value:Object(ct.f)(n=>e(n,t),Object(ct.g)(e),Object(ct.h)(e))}function zo(t){ei.call(this,[void 0,void 0],t)}function To(t,e){St.call(this,t),this.parent=e}Co.Definition={type:"Density",metadata:{generates:!0},params:[{name:"extent",type:"number",array:!0,length:2},{name:"steps",type:"number"},{name:"minsteps",type:"number",default:25},{name:"maxsteps",type:"number",default:200},{name:"method",type:"string",default:"pdf",values:["pdf","cdf"]},{name:"distribution",type:"param",params:Mo.concat(Do)},{name:"as",type:"string",array:!0,default:["value","density"]}]},Object(ct.x)(Co,ei).transform=function(t,e){var n=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e.changed()||t.modified()){var r=function t(e,n){var r=e[jo];Ao.hasOwnProperty(r)||Object(ct.n)("Unknown distribution function: "+r);var i=Ao[r]();for(var o in e)o===So?i.data((e.from||n()).map(e[o])):o===Eo?i[o](e[o].map(function(e){return t(e,n)})):typeof i[o]===jo&&i[o](e[o]);return i}(t.distribution,function(t){return function(){return t.materialize(t.SOURCE).source}}(e)),i=t.steps||t.minsteps||25,o=t.steps||t.maxsteps||200,a=t.method||"pdf";"pdf"!==a&&"cdf"!==a&&Object(ct.n)("Invalid density method: "+a),t.extent||r.data||Object(ct.n)("Missing density extent parameter."),a=r[a];var u=t.as||["value","density"],s=t.extent||Object(ct.p)(r.data()),c=co(a,s,i,o).map(t=>{var e={};return e[u[0]]=t[0],e[u[1]]=t[1],vt(e)});this.value&&(n.rem=this.value),this.value=n.add=n.source=c}return n},Object(ct.x)(Fo,St),zo.Definition={type:"Extent",metadata:{},params:[{name:"field",type:"field",required:!0}]},Object(ct.x)(zo,ei).transform=function(t,e){var n,r=this.value,i=t.field,o=r[0],a=r[1];((n=e.changed()||e.modified(i.fields)||t.modified("field"))||null==o)&&(o=1/0,a=-1/0),e.visit(n?e.SOURCE:e.ADD,function(t){var e=i(t);null!=e&&((e=+e)<o&&(o=e),e>a&&(a=e))}),isFinite(o)&&isFinite(a)||(o=a=void 0),this.value=[o,a]};var $o=Object(ct.x)(To,St);function Ro(t){ei.call(this,{},t),this._keys=Object(ct.s)();var e=this._targets=[];e.active=0,e.forEach=function(t){for(var n=0,r=e.active;n<r;++n)t(e[n],n,e)}}$o.connect=function(t){return this.targets().add(t),t.source=this},$o.add=function(t){this.value.add.push(t)},$o.rem=function(t){this.value.rem.push(t)},$o.mod=function(t){this.value.mod.push(t)},$o.init=function(t){this.value.init(t,t.NO_SOURCE)},$o.evaluate=function(){return this.value};var Bo=Object(ct.x)(Ro,ei);function Po(t){St.call(this,null,Lo,t)}function Lo(t){return this.value&&!t.modified()?this.value:Object(ct.z)(t.name)?Object(ct.i)(t.name).map(function(t){return Object(ct.t)(t)}):Object(ct.t)(t.name,t.as)}function Uo(t){ei.call(this,Object(ct.s)(),t)}function qo(t,e){return t?t.map(function(t,n){return e[n]||Object(ct.h)(t)}):null}function Io(t){ei.call(this,[],t)}function Wo(t){ei.call(this,[],t)}function Ho(t){ei.call(this,null,t)}function Go(t){ei.call(this,[],t)}Bo.activate=function(t){this._targets[this._targets.active++]=t},Bo.subflow=function(t,e,n,r){var i,o,a=this.value,u=a.hasOwnProperty(t)&&a[t];return u?u.value.stamp<n.stamp&&(u.init(n),this.activate(u)):(o=r||(o=this._group[t])&&o.tuple,u=(i=n.dataflow).add(new To(n.fork(n.NO_SOURCE),this)).connect(e(i,t,o)),a[t]=u,this.activate(u)),u},Bo.transform=function(t,e){var n=e.dataflow,r=this,i=t.key,o=t.subflow,a=this._keys,u=t.modified("key");function s(t){return r.subflow(t,o,e)}return this._group=t.group||{},this._targets.active=0,e.visit(e.REM,function(t){var e=gt(t),n=a.get(e);void 0!==n&&(a.delete(e),s(n).rem(t))}),e.visit(e.ADD,function(t){var e=i(t);a.set(gt(t),e),s(e).add(t)}),u||e.modified(i.fields)?e.visit(e.MOD,function(t){var e=gt(t),n=a.get(e),r=i(t);n===r?s(r).mod(t):(a.set(e,r),s(n).rem(t),s(r).add(t))}):e.changed(e.MOD)&&e.visit(e.MOD,function(t){s(a.get(gt(t))).mod(t)}),u&&e.visit(e.REFLOW,function(t){var e=gt(t),n=a.get(e),r=i(t);n!==r&&(a.set(e,r),s(n).rem(t),s(r).add(t))}),a.empty>n.cleanThreshold&&n.runAfter(a.clean),e},Object(ct.x)(Po,St),Uo.Definition={type:"Filter",metadata:{changes:!0},params:[{name:"expr",type:"expr",required:!0}]},Object(ct.x)(Uo,ei).transform=function(t,e){var n=e.dataflow,r=this.value,i=e.fork(),o=i.add,a=i.rem,u=i.mod,s=t.expr,c=!0;function l(e){var n=gt(e),i=s(e,t),l=r.get(n);i&&l?(r.delete(n),o.push(e)):i||l?c&&i&&!l&&u.push(e):(r.set(n,1),a.push(e))}return e.visit(e.REM,function(t){var e=gt(t);r.has(e)?r.delete(e):a.push(t)}),e.visit(e.ADD,function(e){s(e,t)?o.push(e):r.set(gt(e),1)}),e.visit(e.MOD,l),t.modified()&&(c=!1,e.visit(e.REFLOW,l)),r.empty>n.cleanThreshold&&n.runAfter(r.clean),i},Io.Definition={type:"Flatten",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0}]},Object(ct.x)(Io,ei).transform=function(t,e){var n=e.fork(e.NO_SOURCE),r=t.fields,i=qo(r,t.as||[]),o=i.length;return n.rem=this.value,e.visit(e.SOURCE,function(t){for(var e,a,u,s=r.map(function(e){return e(t)}),c=s.reduce(function(t,e){return Math.max(t,e.length)},0),l=0;l<c;++l){for(a=yt(t),e=0;e<o;++e)a[i[e]]=null==(u=s[e][l])?null:u;n.add.push(a)}}),this.value=n.source=n.add,n.modifies(i)},Wo.Definition={type:"Fold",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0,length:2,default:["key","value"]}]},Object(ct.x)(Wo,ei).transform=function(t,e){var n=e.fork(e.NO_SOURCE),r=t.fields,i=r.map(ct.h),o=t.as||["key","value"],a=o[0],u=o[1],s=r.length;return n.rem=this.value,e.visit(e.SOURCE,function(t){for(var e,o=0;o<s;++o)(e=yt(t))[a]=i[o],e[u]=r[o](t),n.add.push(e)}),this.value=n.source=n.add,n.modifies(o)},Ho.Definition={type:"Formula",metadata:{modifies:!0},params:[{name:"expr",type:"expr",required:!0},{name:"as",type:"string",required:!0},{name:"initonly",type:"boolean"}]},Object(ct.x)(Ho,ei).transform=function(t,e){var n=t.expr,r=t.as,i=t.modified(),o=t.initonly?e.ADD:i?e.SOURCE:e.modified(n.fields)?e.ADD_MOD:e.ADD;return i&&(e=e.materialize().reflow(!0)),t.initonly||e.modifies(r),e.visit(o,function(e){e[r]=n(e,t)})},Object(ct.x)(Go,ei).transform=function(t,e){var n,r,i,o=this.value,a=e.fork(e.ALL),u=t.size-o.length,s=t.generator;if(u>0){for(n=[];--u>=0;)n.push(i=vt(s(t))),o.push(i);a.add=a.add.length?a.materialize(a.ADD).add.concat(n):n}else r=o.slice(0,-u),a.rem=a.rem.length?a.materialize(a.REM).rem.concat(r):r,o=o.slice(-u);return a.source=this.value=o,a};var Yo={value:"value",median:Bi,mean:function(t,e){let n=0,r=0;if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(++n,r+=e);else{let i=-1;for(let o of t)null!=(o=e(o,++i,t))&&(o=+o)>=o&&(++n,r+=o)}if(n)return r/n},min:Pi,max:function(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n<e||void 0===n&&e>=e)&&(n=e);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n<i||void 0===n&&i>=i)&&(n=i)}return n}},Vo=[];function Xo(t){ei.call(this,[],t)}function Jo(t){po.call(this,t)}Xo.Definition={type:"Impute",metadata:{changes:!0},params:[{name:"field",type:"field",required:!0},{name:"key",type:"field",required:!0},{name:"keyvals",array:!0},{name:"groupby",type:"field",array:!0},{name:"method",type:"enum",default:"value",values:["value","mean","median","max","min"]},{name:"value",default:0}]},Object(ct.x)(Xo,ei).transform=function(t,e){var n,r,i,o,a,u,s,c,l,f,h=e.fork(e.ALL),d=function(t){var e,n=t.method||Yo.value;if(null!=Yo[n])return n===Yo.value?(e=void 0!==t.value?t.value:0,function(){return e}):Yo[n];Object(ct.n)("Unrecognized imputation method: "+n)}(t),p=function(t){var e=t.field;return function(t){return t?e(t):NaN}}(t),g=Object(ct.h)(t.field),m=Object(ct.h)(t.key),v=(t.groupby||[]).map(ct.h),y=function(t,e,n,r){var i,o,a,u,s,c,l,f,h=function(t){return t(f)},d=[],p=r?r.slice():[],g={},m={};for(p.forEach(function(t,e){g[t]=e+1}),u=0,l=t.length;u<l;++u)f=t[u],c=n(f),s=g[c]||(g[c]=p.push(c)),o=(i=e?e.map(h):Vo)+"",(a=m[o])||(a=m[o]=[],d.push(a),a.values=i),a[s-1]=f;return d.domain=p,d}(e.source,t.groupby,t.key,t.keyvals),b=[],x=this.value,_=y.domain.length;for(a=0,c=y.length;a<c;++a)for(i=(n=y[a]).values,r=NaN,s=0;s<_;++s)if(null==n[s]){for(o=y.domain[s],f={_impute:!0},u=0,l=i.length;u<l;++u)f[v[u]]=i[u];f[m]=o,f[g]=isNaN(r)?r=d(n,p):r,b.push(vt(f))}return b.length&&(h.add=h.materialize(h.ADD).add.concat(b)),x.length&&(h.rem=h.materialize(h.REM).rem.concat(x)),this.value=b,h},Jo.Definition={type:"JoinAggregate",metadata:{modifies:!0},params:[{name:"groupby",type:"field",array:!0},{name:"fields",type:"field",null:!0,array:!0},{name:"ops",type:"enum",array:!0,values:ci},{name:"as",type:"string",null:!0,array:!0},{name:"key",type:"field"}]};var Zo=Object(ct.x)(Jo,po);function Qo(t){ei.call(this,null,t)}function Ko(t){St.call(this,null,ta,t)}function ta(t){return this.value&&!t.modified()?this.value:Object(ct.H)(t.fields,t.flat)}function ea(t){ei.call(this,[],t)}function na(t,e,n){n.forEach(vt);const r=e.fork(e.NO_FIELDS&e.NO_SOURCE);return r.rem=t.value,t.value=r.add=r.source=n,r}function ra(t){ei.call(this,{},t)}function ia(t){St.call(this,null,oa,t)}function oa(t){if(this.value&&!t.modified())return this.value;var e,n,r,i=1/0,o=-1/0,a=t.extents;for(e=0,n=a.length;e<n;++e)(r=a[e])[0]<i&&(i=r[0]),r[1]>o&&(o=r[1]);return[i,o]}function aa(t){St.call(this,null,ua,t)}function ua(t){return this.value&&!t.modified()?this.value:t.values.reduce(function(t,e){return t.concat(e)},[])}function sa(t){ei.call(this,null,t)}function ca(t){po.call(this,t)}Zo.transform=function(t,e){var n,r=this,i=t.modified();return r.value&&(i||e.modified(r._inputs))?(n=r.value=i?r.init(t):{},e.visit(e.SOURCE,function(t){r.add(t)})):(n=r.value=r.value||this.init(t),e.visit(e.REM,function(t){r.rem(t)}),e.visit(e.ADD,function(t){r.add(t)})),r.changes(),e.visit(e.SOURCE,function(t){Object(ct.o)(t,n[r.cellkey(t)].tuple)}),e.reflow(i).modifies(this._outputs)},Zo.changes=function(){var t,e,n=this._adds,r=this._mods;for(t=0,e=this._alen;t<e;++t)this.celltuple(n[t]),n[t]=null;for(t=0,e=this._mlen;t<e;++t)this.celltuple(r[t]),r[t]=null;this._alen=this._mlen=0},Qo.Definition={type:"KDE",metadata:{generates:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"cumulative",type:"boolean",default:!1},{name:"counts",type:"boolean",default:!1},{name:"bandwidth",type:"number",default:0},{name:"extent",type:"number",array:!0,length:2},{name:"steps",type:"number"},{name:"minsteps",type:"number",default:25},{name:"maxsteps",type:"number",default:200},{name:"as",type:"string",array:!0,default:["value","density"]}]},Object(ct.x)(Qo,ei).transform=function(t,e){var n=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e.changed()||t.modified()){const r=function(t,e,n){var r,i,o,a,u,s,c=[],l=function(t){return t(a)};if(null==e)c.push(t.map(n));else for(r={},i=0,o=t.length;i<o;++i)a=t[i],u=e.map(l),(s=r[u])||(r[u]=s=[],s.dims=u,c.push(s)),s.push(n(a));return c}(e.materialize(e.SOURCE).source,t.groupby,t.field),i=(t.groupby||[]).map(ct.h),o=t.bandwidth,a=t.cumulative?"cdf":"pdf",u=t.steps||t.minsteps||25,s=t.steps||t.maxsteps||200,c=t.as||["value","density"],l=[];"pdf"!==a&&"cdf"!==a&&Object(ct.n)("Invalid density method: "+a),r.forEach(e=>{const n=Gi(e,o)[a],r=t.counts?e.length:1,f=t.extent||Ai(e);co(n,f,u,s).forEach(t=>{const n={};for(let t=0;t<i.length;++t)n[i[t]]=e.dims[t];n[c[0]]=t[0],n[c[1]]=t[1]*r,l.push(vt(n))})}),this.value&&(n.rem=this.value),this.value=n.add=n.source=l}return n},Object(ct.x)(Ko,St),Object(ct.x)(ea,ei).transform=function(t,e){const n=e.dataflow;return t.values?na(this,e,n.parse(t.values,t.format)):n.request(t.url,t.format).then(t=>na(this,e,t.data||[]))},ra.Definition={type:"Lookup",metadata:{modifies:!0},params:[{name:"index",type:"index",params:[{name:"from",type:"data",required:!0},{name:"key",type:"field",required:!0}]},{name:"values",type:"field",array:!0},{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0},{name:"default",default:null}]},Object(ct.x)(ra,ei).transform=function(t,e){var n,r,i=e,o=t.as,a=t.fields,u=t.index,s=t.values,c=null==t.default?null:t.default,l=t.modified(),f=l?e.SOURCE:e.ADD,h=a.length;return s?(r=s.length,h>1&&!o&&Object(ct.n)('Multi-field lookup requires explicit "as" parameter.'),o&&o.length!==h*r&&Object(ct.n)('The "as" parameter has too few output field names.'),o=o||s.map(ct.h),n=function(t){for(var e,n,i=0,l=0;i<h;++i)if(null==(n=u.get(a[i](t))))for(e=0;e<r;++e,++l)t[o[l]]=c;else for(e=0;e<r;++e,++l)t[o[l]]=s[e](n)}):(o||Object(ct.n)("Missing output field names."),n=function(t){for(var e,n=0;n<h;++n)e=u.get(a[n](t)),t[o[n]]=null==e?c:e}),l?i=e.reflow(!0):f|=a.some(function(t){return e.modified(t.fields)})?e.MOD:0,e.visit(f,n),i.modifies(o)},Object(ct.x)(ia,St),Object(ct.x)(aa,St),Object(ct.x)(sa,ei),sa.prototype.transform=function(t,e){return this.modified(t.modified()),this.value=t,e.fork(e.NO_SOURCE|e.NO_FIELDS)},ca.Definition={type:"Pivot",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"value",type:"field",required:!0},{name:"op",type:"enum",values:ci,default:"sum"},{name:"limit",type:"number",default:0},{name:"key",type:"field"}]};var la=Object(ct.x)(ca,po);function fa(t){Ro.call(this,t)}function ha(t){ei.call(this,null,t)}function da(t){ei.call(this,null,t)}function pa(t){ei.call(this,null,t)}function ga(t){ei.call(this,[],t),this.count=0}function ma(t){ei.call(this,null,t)}function va(t){ei.call(this,null,t),this.modified(!0)}function ya(t){ei.call(this,Object(ct.s)(),t)}function ba(t){ei.call(this,null,t)}la._transform=la.transform,la.transform=function(t,e){return this._transform(function(t,e){var n=t.field,r=t.value,i=("count"===t.op?"__count__":t.op)||"sum",o=Object(ct.g)(n).concat(Object(ct.g)(r)),a=function(t,e,n){var r={},i=[];return n.visit(n.SOURCE,function(e){var n=t(e);r[n]||(r[n]=1,i.push(n))}),i.sort(function(t,e){return(t<e||null==t)&&null!=e?-1:(t>e||null==e)&&null!=t?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e==e?-1:e!=e&&t==t?1:0)}),e?i.slice(0,e):i}(n,t.limit||0,e);return{key:t.key,groupby:t.groupby,ops:a.map(function(){return i}),fields:a.map(function(t){return function(t,e,n,r){return Object(ct.f)(function(r){return e(r)===t?n(r):NaN},r,t+"")}(t,n,r,o)}),as:a.map(function(t){return t+""}),modified:t.modified.bind(t)}}(t,e),e)},Object(ct.x)(fa,Ro).transform=function(t,e){var n=this,r=t.subflow,i=t.field;return(t.modified("field")||i&&e.modified(Object(ct.g)(i)))&&Object(ct.n)("PreFacet does not support field modification."),this._targets.active=0,e.visit(e.MOD,function(t){var o=n.subflow(gt(t),r,e,t);i?i(t).forEach(function(t){o.mod(t)}):o.mod(t)}),e.visit(e.ADD,function(t){var o=n.subflow(gt(t),r,e,t);i?i(t).forEach(function(t){o.add(vt(t))}):o.add(t)}),e.visit(e.REM,function(t){var o=n.subflow(gt(t),r,e,t);i?i(t).forEach(function(t){o.rem(t)}):o.rem(t)}),e},ha.Definition={type:"Project",metadata:{generates:!0,changes:!0},params:[{name:"fields",type:"field",array:!0},{name:"as",type:"string",null:!0,array:!0}]},Object(ct.x)(ha,ei).transform=function(t,e){var n,r,i=t.fields,o=qo(t.fields,t.as||[]),a=i?function(t,e){return function(t,e,n,r){for(var i=0,o=n.length;i<o;++i)e[r[i]]=n[i](t);return e}(t,e,i,o)}:bt;return this.value?r=this.value:(e=e.addAll(),r=this.value={}),n=e.fork(e.NO_SOURCE),e.visit(e.REM,function(t){var e=gt(t);n.rem.push(r[e]),r[e]=null}),e.visit(e.ADD,function(t){var e=a(t,vt({}));r[gt(t)]=e,n.add.push(e)}),e.visit(e.MOD,function(t){n.mod.push(a(t,r[gt(t)]))}),n},Object(ct.x)(da,ei).transform=function(t,e){return this.value=t.value,t.modified("value")?e.fork(e.NO_SOURCE|e.NO_FIELDS):e.StopPropagation},Object(ct.x)(pa,ei).transform=function(t,e){var n,r;return this.value?r=this.value:(n=e=e.addAll(),r=this.value={}),t.derive&&(n=e.fork(e.NO_SOURCE),e.visit(e.REM,function(t){var e=gt(t);n.rem.push(r[e]),r[e]=null}),e.visit(e.ADD,function(t){var e=yt(t);r[gt(t)]=e,n.add.push(e)}),e.visit(e.MOD,function(t){n.mod.push(bt(t,r[gt(t)]))})),n},ga.Definition={type:"Sample",metadata:{},params:[{name:"size",type:"number",default:1e3}]},Object(ct.x)(ga,ei).transform=function(t,e){var n=e.fork(e.NO_SOURCE),r=t.modified("size"),i=t.size,o=this.value,a=this.count,u=0,s=o.reduce(function(t,e){return t[gt(e)]=1,t},{});function c(t){var e,r;o.length<i?o.push(t):(r=~~((a+1)*mi()))<o.length&&r>=u&&(e=o[r],s[gt(e)]&&n.rem.push(e),o[r]=t),++a}if(e.rem.length&&(e.visit(e.REM,function(t){var e=gt(t);s[e]&&(s[e]=-1,n.rem.push(t)),--a}),o=o.filter(function(t){return-1!==s[gt(t)]})),(e.rem.length||r)&&o.length<i&&e.source&&(u=a=o.length,e.visit(e.SOURCE,function(t){s[gt(t)]||c(t)}),u=-1),r&&o.length>i){for(var l=0,f=o.length-i;l<f;++l)s[gt(o[l])]=-1,n.rem.push(o[l]);o=o.slice(f)}return e.mod.length&&e.visit(e.MOD,function(t){s[gt(t)]&&n.mod.push(t)}),e.add.length&&e.visit(e.ADD,c),(e.add.length||u<0)&&(n.add=o.filter(function(t){return!s[gt(t)]})),this.count=a,this.value=n.source=o,n},ma.Definition={type:"Sequence",metadata:{changes:!0},params:[{name:"start",type:"number",required:!0},{name:"stop",type:"number",required:!0},{name:"step",type:"number",default:1},{name:"as",type:"string",default:"data"}]},Object(ct.x)(ma,ei).transform=function(t,e){if(!this.value||t.modified()){var n=e.materialize().fork(e.MOD),r=t.as||"data";return n.rem=this.value?e.rem.concat(this.value):e.rem,this.value=ji(t.start,t.stop,t.step||1).map(function(t){var e={};return e[r]=t,vt(e)}),n.add=e.add.concat(this.value),n}},Object(ct.x)(va,ei).transform=function(t,e){return this.value=e.source,e.changed()?e.fork(e.NO_SOURCE|e.NO_FIELDS):e.StopPropagation},Object(ct.x)(ya,ei).transform=function(t,e){var n=e.dataflow,r=t.field,i=this.value,o=!0;function a(t){i.set(r(t),t)}return t.modified("field")||e.modified(r.fields)?(i.clear(),e.visit(e.SOURCE,a)):e.changed()?(e.visit(e.REM,function(t){i.delete(r(t))}),e.visit(e.ADD,a)):o=!1,this.modified(o),i.empty>n.cleanThreshold&&n.runAfter(i.clean),e.fork()},Object(ct.x)(ba,ei).transform=function(t,e){(!this.value||t.modified("field")||t.modified("sort")||e.changed()||t.sort&&e.modified(t.sort.fields))&&(this.value=(t.sort?e.source.slice().sort(t.sort):e.source).map(t.field))};const xa={row_number:function(){return{next:t=>t.index+1}},rank:function(){let t;return{init:()=>t=1,next:e=>{let n=e.index,r=e.data;return n&&e.compare(r[n-1],r[n])?t=n+1:t}}},dense_rank:function(){let t;return{init:()=>t=1,next:e=>{let n=e.index,r=e.data;return n&&e.compare(r[n-1],r[n])?++t:t}}},percent_rank:function(){let t=xa.rank(),e=t.next;return{init:t.init,next:t=>(e(t)-1)/(t.data.length-1)}},cume_dist:function(){let t;return{init:()=>t=0,next:e=>{let n=e.index,r=e.data,i=e.compare;if(t<n){for(;n+1<r.length&&!i(r[n],r[n+1]);)++n;t=n}return(1+t)/r.length}}},ntile:function(t,e){(e=+e)>0||Object(ct.n)("ntile num must be greater than zero.");let n=xa.cume_dist(),r=n.next;return{init:n.init,next:t=>Math.ceil(e*r(t))}},lag:function(t,e){return e=+e||1,{next:n=>{let r=n.index-e;return r>=0?t(n.data[r]):null}}},lead:function(t,e){return e=+e||1,{next:n=>{let r=n.index+e,i=n.data;return r<i.length?t(i[r]):null}}},first_value:function(t){return{next:e=>t(e.data[e.i0])}},last_value:function(t){return{next:e=>t(e.data[e.i1-1])}},nth_value:function(t,e){return(e=+e)>0||Object(ct.n)("nth_value nth must be greater than zero."),{next:n=>{let r=n.i0+(e-1);return r<n.i1?t(n.data[r]):null}}},prev_value:function(t){let e=null;return{next:n=>{let r=t(n.data[n.index]);return null!=r?e=r:e}}},next_value:function(t){let e=null,n=-1;return{next:r=>{let i=r.data;return r.index<=n?e:(n=function(t,e,n){for(let r=e.length;n<r;++n){let r=t(e[n]);if(null!=r)return n}return-1}(t,i,r.index))<0?(n=i.length,e=null):e=t(i[n])}}}};var _a=Object.keys(xa);function wa(t){let e=this,n=Object(ct.i)(t.ops),r=Object(ct.i)(t.fields),i=Object(ct.i)(t.params),o=Object(ct.i)(t.as),a=e.outputs=[],u=e.windows=[],s={},c={},l=!0,f=[],h=[];function d(t){Object(ct.i)(Object(ct.g)(t)).forEach(t=>s[t]=1)}d(t.sort),n.forEach(function(t,e){let n=r[e],s=Object(ct.h)(n),p=ui(t,s,o[e]);if(d(n),a.push(p),xa.hasOwnProperty(t))u.push(function(t,e,n,r){let i=xa[t](e,n);return{init:i.init||ct.gb,update:function(t,e){e[r]=i.next(t)}}}(t,r[e],i[e],p));else{if(null==n&&"count"!==t&&Object(ct.n)("Null aggregate field specified."),"count"===t)return void f.push(p);l=!1;let e=c[s];e||((e=c[s]=[]).field=n,h.push(e)),e.push(li(t,p))}}),(f.length||h.length)&&(e.cell=function(t,e,n){t=t.map(t=>di(t,t.field));let r={num:0,agg:null,store:!1,count:e};if(!n)for(var i=t.length,o=r.agg=Array(i),a=0;a<i;++a)o[a]=new t[a](r);if(r.store)var u=r.data=new fo;return r.add=function(t){if(r.num+=1,!n){u&&u.add(t);for(let e=0;e<i;++e)o[e].add(o[e].get(t),t)}},r.rem=function(t){if(r.num-=1,!n){u&&u.rem(t);for(let e=0;e<i;++e)o[e].rem(o[e].get(t),t)}},r.set=function(t){let i,a;for(u&&u.values(),i=0,a=e.length;i<a;++i)t[e[i]]=r.num;if(!n)for(i=0,a=o.length;i<a;++i)o[i].set(t)},r.init=function(){r.num=0,u&&u.reset();for(let t=0;t<i;++t)o[t].init()},r}(h,f,l)),e.inputs=Object.keys(s)}const Oa=wa.prototype;function ka(t){ei.call(this,{},t),this._mlen=0,this._mods=[]}Oa.init=function(){this.windows.forEach(t=>t.init()),this.cell&&this.cell.init()},Oa.update=function(t,e){let n,r=this.cell,i=this.windows,o=t.data,a=i&&i.length;if(r){for(n=t.p0;n<t.i0;++n)r.rem(o[n]);for(n=t.p1;n<t.i1;++n)r.add(o[n]);r.set(e)}for(n=0;n<a;++n)i[n].update(t,e)},ka.Definition={type:"Window",metadata:{modifies:!0},params:[{name:"sort",type:"compare"},{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:_a.concat(ci)},{name:"params",type:"number",null:!0,array:!0},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"frame",type:"number",null:!0,array:!0,length:2,default:[null,0]},{name:"ignorePeers",type:"boolean",default:!1}]};var Aa=Object(ct.x)(ka,ei);function Ea(t,e,n){var r=n.sort,i=r&&!n.ignorePeers,o=n.frame||[null,0],a=t.data(r),u=a.length,s=0,c=i?bi(r):null,l={i0:0,i1:0,p0:0,p1:0,index:0,data:a,compare:r||Object(ct.l)(-1)};for(e.init();s<u;++s)ja(l,o,s,u),i&&Sa(l,c),e.update(l,a[s])}function ja(t,e,n,r){t.p0=t.i0,t.p1=t.i1,t.i0=null==e[0]?0:Math.max(0,n-Math.abs(e[0])),t.i1=null==e[1]?r:Math.min(r,n+Math.abs(e[1])+1),t.index=n}function Sa(t,e){var n=t.i0,r=t.i1-1,i=t.compare,o=t.data,a=o.length-1;n>0&&!i(o[n],o[n-1])&&(t.i0=e.left(o,o[n])),r<a&&!i(o[r],o[r+1])&&(t.i1=e.right(o,o[r]))}Aa.transform=function(t,e){var n,r,i=this,o=i.state,a=t.modified();this.stamp=e.stamp,o&&!a||(o=i.state=new wa(t));var u=ai(t.groupby);function s(t){return i.group(u(t))}for(a||e.modified(o.inputs)?(i.value={},e.visit(e.SOURCE,function(t){s(t).add(t)})):(e.visit(e.REM,function(t){s(t).remove(t)}),e.visit(e.ADD,function(t){s(t).add(t)})),n=0,r=i._mlen;n<r;++n)Ea(i._mods[n],o,t);return i._mlen=0,i._mods=[],e.reflow(a).modifies(o.outputs)},Aa.group=function(t){var e=this.value[t];return e||((e=this.value[t]=yo(gt)).stamp=-1),e.stamp<this.stamp&&(e.stamp=this.stamp,this._mods[this._mlen++]=e),e};const Ca="top",Ma="left",Da="right",Fa="bottom",Na="top-left",za="top-right",Ta="bottom-left",$a="bottom-right",Ra="start",Ba="middle",Pa="end",La="x",Ua="y",qa="group",Ia="axis",Wa="title",Ha="frame",Ga="scope",Ya="legend",Va="row-header",Xa="row-footer",Ja="row-title",Za="column-header",Qa="column-footer",Ka="column-title",tu="padding",eu="symbol",nu="fit",ru="fit-x",iu="fit-y",ou="pad",au="none",uu="all",su="each",cu="flush",lu="column",fu="row";function hu(t){this.clear(),t&&this.union(t)}var du=hu.prototype;du.clone=function(){return new hu(this)},du.clear=function(){return this.x1=+Number.MAX_VALUE,this.y1=+Number.MAX_VALUE,this.x2=-Number.MAX_VALUE,this.y2=-Number.MAX_VALUE,this},du.empty=function(){return this.x1===+Number.MAX_VALUE&&this.y1===+Number.MAX_VALUE&&this.x2===-Number.MAX_VALUE&&this.y2===-Number.MAX_VALUE},du.equals=function(t){return this.x1===t.x1&&this.y1===t.y1&&this.x2===t.x2&&this.y2===t.y2},du.set=function(t,e,n,r){return n<t?(this.x2=t,this.x1=n):(this.x1=t,this.x2=n),r<e?(this.y2=e,this.y1=r):(this.y1=e,this.y2=r),this},du.add=function(t,e){return t<this.x1&&(this.x1=t),e<this.y1&&(this.y1=e),t>this.x2&&(this.x2=t),e>this.y2&&(this.y2=e),this},du.expand=function(t){return this.x1-=t,this.y1-=t,this.x2+=t,this.y2+=t,this},du.round=function(){return this.x1=Math.floor(this.x1),this.y1=Math.floor(this.y1),this.x2=Math.ceil(this.x2),this.y2=Math.ceil(this.y2),this},du.translate=function(t,e){return this.x1+=t,this.x2+=t,this.y1+=e,this.y2+=e,this},du.rotate=function(t,e,n){const r=this.rotatedPoints(t,e,n);return this.clear().add(r[0],r[1]).add(r[2],r[3]).add(r[4],r[5]).add(r[6],r[7])},du.rotatedPoints=function(t,e,n){var{x1:r,y1:i,x2:o,y2:a}=this,u=Math.cos(t),s=Math.sin(t),c=e-e*u+n*s,l=n-e*s-n*u;return[u*r-s*i+c,s*r+u*i+l,u*r-s*a+c,s*r+u*a+l,u*o-s*i+c,s*o+u*i+l,u*o-s*a+c,s*o+u*a+l]},du.union=function(t){return t.x1<this.x1&&(this.x1=t.x1),t.y1<this.y1&&(this.y1=t.y1),t.x2>this.x2&&(this.x2=t.x2),t.y2>this.y2&&(this.y2=t.y2),this},du.intersect=function(t){return t.x1>this.x1&&(this.x1=t.x1),t.y1>this.y1&&(this.y1=t.y1),t.x2<this.x2&&(this.x2=t.x2),t.y2<this.y2&&(this.y2=t.y2),this},du.encloses=function(t){return t&&this.x1<=t.x1&&this.x2>=t.x2&&this.y1<=t.y1&&this.y2>=t.y2},du.alignsWith=function(t){return t&&(this.x1==t.x1||this.x2==t.x2||this.y1==t.y1||this.y2==t.y2)},du.intersects=function(t){return t&&!(this.x2<t.x1||this.x1>t.x2||this.y2<t.y1||this.y1>t.y2)},du.contains=function(t,e){return!(t<this.x1||t>this.x2||e<this.y1||e>this.y2)},du.width=function(){return this.x2-this.x1},du.height=function(){return this.y2-this.y1};var pu=0;const gu="p_";function mu(t){return t&&t.gradient}function vu(t,e,n){let r=t.id,i=t.gradient,o="radial"===i?gu:"";return r||(r=t.id="gradient_"+pu++,"radial"===i?(t.x1=yu(t.x1,.5),t.y1=yu(t.y1,.5),t.r1=yu(t.r1,0),t.x2=yu(t.x2,.5),t.y2=yu(t.y2,.5),t.r2=yu(t.r2,.5),o=gu):(t.x1=yu(t.x1,0),t.y1=yu(t.y1,0),t.x2=yu(t.x2,1),t.y2=yu(t.y2,0))),e[r]=t,"url("+(n||"")+"#"+o+r+")"}function yu(t,e){return null!=t?t:e}var bu=function(t,e){var n,r=[];return n={gradient:"linear",x1:t?t[0]:0,y1:t?t[1]:0,x2:e?e[0]:1,y2:e?e[1]:0,stops:r,stop:function(t,e){return r.push({offset:t,color:e}),n}}};function xu(t){this.mark=t,this.bounds=this.bounds||new hu}function _u(t){xu.call(this,t),this.items=this.items||[]}function wu(t,e){if("undefined"!=typeof document&&document.createElement){var n=document.createElement("canvas");if(n&&n.getContext)return n.width=t,n.height=e,n}return null}function Ou(){return"undefined"!=typeof Image?Image:null}function ku(t){this._pending=0,this._loader=t||Tr()}Object(ct.x)(_u,xu);var Au=ku.prototype;function Eu(t){t._pending+=1}function ju(t){t._pending-=1}Au.pending=function(){return this._pending},Au.sanitizeURL=function(t){var e=this;return Eu(e),e._loader.sanitize(t,{context:"href"}).then(function(t){return ju(e),t}).catch(function(){return ju(e),null})},Au.loadImage=function(t){var e=this,n=Ou();return Eu(e),e._loader.sanitize(t,{context:"image"}).then(function(t){var r=t.href;if(!r||!n)throw{url:r};var i=new n;return i.onload=function(){ju(e),i.loaded=!0},i.onerror=function(){ju(e),i.loaded=!1},i.src=r,i}).catch(function(t){return ju(e),{loaded:!1,width:0,height:0,src:t&&t.url||""}})},Au.ready=function(){var t=this;return new Promise(function(e){!function n(r){t.pending()?setTimeout(function(){n(!0)},10):e(r)}(!1)})};var Su=Math.PI,Cu=2*Su,Mu=Cu-1e-6;function Du(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Fu(){return new Du}Du.prototype=Fu.prototype={constructor:Du,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,r){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+r)},bezierCurveTo:function(t,e,n,r,i,o){this._+="C"+ +t+","+ +e+","+ +n+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(t,e,n,r,i){t=+t,e=+e,n=+n,r=+r,i=+i;var o=this._x1,a=this._y1,u=n-t,s=r-e,c=o-t,l=a-e,f=c*c+l*l;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(f>1e-6)if(Math.abs(l*u-s*c)>1e-6&&i){var h=n-o,d=r-a,p=u*u+s*s,g=h*h+d*d,m=Math.sqrt(p),v=Math.sqrt(f),y=i*Math.tan((Su-Math.acos((p+f-g)/(2*m*v)))/2),b=y/v,x=y/m;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*c)+","+(e+b*l)),this._+="A"+i+","+i+",0,0,"+ +(l*h>c*d)+","+(this._x1=t+x*u)+","+(this._y1=e+x*s)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,r,i,o){t=+t,e=+e;var a=(n=+n)*Math.cos(r),u=n*Math.sin(r),s=t+a,c=e+u,l=1^o,f=o?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+s+","+c:(Math.abs(this._x1-s)>1e-6||Math.abs(this._y1-c)>1e-6)&&(this._+="L"+s+","+c),n&&(f<0&&(f=f%Cu+Cu),f>Mu?this._+="A"+n+","+n+",0,1,"+l+","+(t-a)+","+(e-u)+"A"+n+","+n+",0,1,"+l+","+(this._x1=s)+","+(this._y1=c):f>1e-6&&(this._+="A"+n+","+n+",0,"+ +(f>=Su)+","+l+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};var Nu=Fu,zu=function(t){return function(){return t}},Tu=Math.abs,$u=Math.atan2,Ru=Math.cos,Bu=Math.max,Pu=Math.min,Lu=Math.sin,Uu=Math.sqrt,qu=1e-12,Iu=Math.PI,Wu=Iu/2,Hu=2*Iu;function Gu(t){return t>=1?Wu:t<=-1?-Wu:Math.asin(t)}function Yu(t){return t.innerRadius}function Vu(t){return t.outerRadius}function Xu(t){return t.startAngle}function Ju(t){return t.endAngle}function Zu(t){return t&&t.padAngle}function Qu(t,e,n,r,i,o,a){var u=t-n,s=e-r,c=(a?o:-o)/Uu(u*u+s*s),l=c*s,f=-c*u,h=t+l,d=e+f,p=n+l,g=r+f,m=(h+p)/2,v=(d+g)/2,y=p-h,b=g-d,x=y*y+b*b,_=i-o,w=h*g-p*d,O=(b<0?-1:1)*Uu(Bu(0,_*_*x-w*w)),k=(w*b-y*O)/x,A=(-w*y-b*O)/x,E=(w*b+y*O)/x,j=(-w*y+b*O)/x,S=k-m,C=A-v,M=E-m,D=j-v;return S*S+C*C>M*M+D*D&&(k=E,A=j),{cx:k,cy:A,x01:-l,y01:-f,x11:k*(i/_-1),y11:A*(i/_-1)}}function Ku(t){this._context=t}Ku.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var ts=function(t){return new Ku(t)};function es(t){return t[0]}function ns(t){return t[1]}var rs=function(){var t=es,e=ns,n=zu(!0),r=null,i=ts,o=null;function a(a){var u,s,c,l=a.length,f=!1;for(null==r&&(o=i(c=Nu())),u=0;u<=l;++u)!(u<l&&n(s=a[u],u,a))===f&&((f=!f)?o.lineStart():o.lineEnd()),f&&o.point(+t(s,u,a),+e(s,u,a));if(c)return o=null,c+""||null}return a.x=function(e){return arguments.length?(t="function"==typeof e?e:zu(+e),a):t},a.y=function(t){return arguments.length?(e="function"==typeof t?t:zu(+t),a):e},a.defined=function(t){return arguments.length?(n="function"==typeof t?t:zu(!!t),a):n},a.curve=function(t){return arguments.length?(i=t,null!=r&&(o=i(r)),a):i},a.context=function(t){return arguments.length?(null==t?r=o=null:o=i(r=t),a):r},a},is=function(){var t=es,e=null,n=zu(0),r=ns,i=zu(!0),o=null,a=ts,u=null;function s(s){var c,l,f,h,d,p=s.length,g=!1,m=new Array(p),v=new Array(p);for(null==o&&(u=a(d=Nu())),c=0;c<=p;++c){if(!(c<p&&i(h=s[c],c,s))===g)if(g=!g)l=c,u.areaStart(),u.lineStart();else{for(u.lineEnd(),u.lineStart(),f=c-1;f>=l;--f)u.point(m[f],v[f]);u.lineEnd(),u.areaEnd()}g&&(m[c]=+t(h,c,s),v[c]=+n(h,c,s),u.point(e?+e(h,c,s):m[c],r?+r(h,c,s):v[c]))}if(d)return u=null,d+""||null}function c(){return rs().defined(i).curve(a).context(o)}return s.x=function(n){return arguments.length?(t="function"==typeof n?n:zu(+n),e=null,s):t},s.x0=function(e){return arguments.length?(t="function"==typeof e?e:zu(+e),s):t},s.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:zu(+t),s):e},s.y=function(t){return arguments.length?(n="function"==typeof t?t:zu(+t),r=null,s):n},s.y0=function(t){return arguments.length?(n="function"==typeof t?t:zu(+t),s):n},s.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:zu(+t),s):r},s.lineX0=s.lineY0=function(){return c().x(t).y(n)},s.lineY1=function(){return c().x(t).y(r)},s.lineX1=function(){return c().x(e).y(n)},s.defined=function(t){return arguments.length?(i="function"==typeof t?t:zu(!!t),s):i},s.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),s):a},s.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),s):o},s};as(ts);function os(t){this._curve=t}function as(t){function e(e){return new os(t(e))}return e._curve=t,e}os.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};Array.prototype.slice;var us={draw:function(t,e){var n=Math.sqrt(e/Iu);t.moveTo(n,0),t.arc(0,0,n,0,Hu)}},ss=(Math.sqrt(1/3),Math.sin(Iu/10)/Math.sin(7*Iu/10)),cs=(Math.sin(Hu/10),Math.cos(Hu/10),Math.sqrt(3),Math.sqrt(3),Math.sqrt(12),function(){});function ls(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function fs(t){this._context=t}fs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ls(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ls(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function hs(t){this._context=t}hs.prototype={areaStart:cs,areaEnd:cs,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:ls(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function ds(t){this._context=t}ds.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:ls(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function ps(t,e){this._basis=new fs(t),this._beta=e}ps.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],o=e[0],a=t[n]-i,u=e[n]-o,s=-1;++s<=n;)r=s/n,this._basis.point(this._beta*t[s]+(1-this._beta)*(i+r*a),this._beta*e[s]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var gs=function t(e){function n(t){return 1===e?new fs(t):new ps(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function ms(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function vs(t,e){this._context=t,this._k=(1-e)/6}vs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:ms(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:ms(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var ys=function t(e){function n(t){return new vs(t,e)}return n.tension=function(e){return t(+e)},n}(0);function bs(t,e){this._context=t,this._k=(1-e)/6}bs.prototype={areaStart:cs,areaEnd:cs,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:ms(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var xs=function t(e){function n(t){return new bs(t,e)}return n.tension=function(e){return t(+e)},n}(0);function _s(t,e){this._context=t,this._k=(1-e)/6}_s.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:ms(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var ws=function t(e){function n(t){return new _s(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Os(t,e,n){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>qu){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,s=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/s,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/s}if(t._l23_a>qu){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*c+t._x1*t._l23_2a-e*t._l12_2a)/l,a=(a*c+t._y1*t._l23_2a-n*t._l12_2a)/l}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function ks(t,e){this._context=t,this._alpha=e}ks.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Os(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var As=function t(e){function n(t){return e?new ks(t,e):new vs(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Es(t,e){this._context=t,this._alpha=e}Es.prototype={areaStart:cs,areaEnd:cs,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Os(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var js=function t(e){function n(t){return e?new Es(t,e):new bs(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Ss(t,e){this._context=t,this._alpha=e}Ss.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Os(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Cs=function t(e){function n(t){return e?new Ss(t,e):new _s(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Ms(t){this._context=t}Ms.prototype={areaStart:cs,areaEnd:cs,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};function Ds(t){return t<0?-1:1}function Fs(t,e,n){var r=t._x1-t._x0,i=e-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(n-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(Ds(o)+Ds(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function Ns(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function zs(t,e,n){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*e,o-u,a-u*n,o,a)}function Ts(t){this._context=t}function $s(t){this._context=new Rs(t)}function Rs(t){this._context=t}function Bs(t){this._context=t}function Ps(t){var e,n,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],e=1;e<r-1;++e)i[e]=1,o[e]=4,a[e]=4*t[e]+2*t[e+1];for(i[r-1]=2,o[r-1]=7,a[r-1]=8*t[r-1]+t[r],e=1;e<r;++e)n=i[e]/o[e-1],o[e]-=n,a[e]-=n*a[e-1];for(i[r-1]=a[r-1]/o[r-1],e=r-2;e>=0;--e)i[e]=(a[e]-i[e+1])/o[e];for(o[r-1]=(t[r]+i[r-1])/2,e=0;e<r-1;++e)o[e]=2*t[e+1]-i[e+1];return[i,o]}Ts.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:zs(this,this._t0,Ns(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(e=+e,(t=+t)!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,zs(this,Ns(this,n=Fs(this,t,e)),n);break;default:zs(this,this._t0,n=Fs(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}},($s.prototype=Object.create(Ts.prototype)).point=function(t,e){Ts.prototype.point.call(this,e,t)},Rs.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,o){this._context.bezierCurveTo(e,t,r,n,o,i)}},Bs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===n)this._context.lineTo(t[1],e[1]);else for(var r=Ps(t),i=Ps(e),o=0,a=1;a<n;++o,++a)this._context.bezierCurveTo(r[0][o],i[0][o],r[1][o],i[1][o],t[a],e[a]);(this._line||0!==this._line&&1===n)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}};function Ls(t,e){this._context=t,this._t=e}Ls.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var Us={basis:{curve:function(t){return new fs(t)}},"basis-closed":{curve:function(t){return new hs(t)}},"basis-open":{curve:function(t){return new ds(t)}},bundle:{curve:gs,tension:"beta",value:.85},cardinal:{curve:ys,tension:"tension",value:0},"cardinal-open":{curve:ws,tension:"tension",value:0},"cardinal-closed":{curve:xs,tension:"tension",value:0},"catmull-rom":{curve:As,tension:"alpha",value:.5},"catmull-rom-closed":{curve:js,tension:"alpha",value:.5},"catmull-rom-open":{curve:Cs,tension:"alpha",value:.5},linear:{curve:ts},"linear-closed":{curve:function(t){return new Ms(t)}},monotone:{horizontal:function(t){return new $s(t)},vertical:function(t){return new Ts(t)}},natural:{curve:function(t){return new Bs(t)}},step:{curve:function(t){return new Ls(t,.5)}},"step-after":{curve:function(t){return new Ls(t,1)}},"step-before":{curve:function(t){return new Ls(t,0)}}};function qs(t,e,n){var r=Us.hasOwnProperty(t)&&Us[t],i=null;return r&&(i=r.curve||r[e||"vertical"],r.tension&&null!=n&&(i=i[r.tension](n))),i}var Is={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},Ws=[/([MLHVCSQTAZmlhvcsqtaz])/g,/###/,/(\d)([-+])/g,/\s|,|###/],Hs=function(t){var e,n,r,i,o,a,u,s,c,l,f,h=[];for(s=0,l=(e=t.slice().replace(Ws[0],"###$1").split(Ws[1]).slice(1)).length;s<l;++s){for(r=(n=e[s]).slice(1).trim().replace(Ws[2],"$1###$2").split(Ws[3]),i=[a=n.charAt(0)],c=0,f=r.length;c<f;++c)(o=+r[c])===o&&i.push(o);if(u=Is[a.toLowerCase()],i.length-1>u)for(c=1,f=i.length;c<f;c+=u)h.push([a].concat(i.slice(c,c+u)));else h.push(i)}return h},Gs=Math.PI/180,Ys=Math.PI/2,Vs=2*Math.PI,Xs=Math.sqrt(3)/2,Js={},Zs={},Qs=[].join;function Ks(t){var e=Qs.call(t);if(Zs[e])return Zs[e];var n=t[0],r=t[1],i=t[2],o=t[3],a=t[4],u=t[5],s=t[6],c=t[7],l=c*a,f=-s*u,h=s*a,d=c*u,p=Math.cos(i),g=Math.sin(i),m=Math.cos(o),v=Math.sin(o),y=.5*(o-i),b=Math.sin(.5*y),x=8/3*b*b/Math.sin(y),_=n+p-x*g,w=r+g+x*p,O=n+m,k=r+v,A=O+x*v,E=k-x*m;return Zs[e]=[l*_+f*w,h*_+d*w,l*A+f*E,h*A+d*E,l*O+f*k,h*O+d*k]}var tc=["l",0,0,0,0,0,0,0];function ec(t,e){var n=tc[0]=t[0];if("a"===n||"A"===n)tc[1]=e*t[1],tc[2]=e*t[2],tc[3]=t[3],tc[4]=t[4],tc[5]=t[5],tc[6]=e*t[6],tc[7]=e*t[7];else for(var r=1,i=t.length;r<i;++r)tc[r]=e*t[r];return tc}var nc=function(t,e,n,r,i){var o,a,u,s,c,l=null,f=0,h=0,d=0,p=0;null==n&&(n=0),null==r&&(r=0),null==i&&(i=1),t.beginPath&&t.beginPath();for(var g=0,m=e.length;g<m;++g){switch(o=e[g],1!==i&&(o=ec(o,i)),o[0]){case"l":f+=o[1],h+=o[2],t.lineTo(f+n,h+r);break;case"L":f=o[1],h=o[2],t.lineTo(f+n,h+r);break;case"h":f+=o[1],t.lineTo(f+n,h+r);break;case"H":f=o[1],t.lineTo(f+n,h+r);break;case"v":h+=o[1],t.lineTo(f+n,h+r);break;case"V":h=o[1],t.lineTo(f+n,h+r);break;case"m":f+=o[1],h+=o[2],t.moveTo(f+n,h+r);break;case"M":f=o[1],h=o[2],t.moveTo(f+n,h+r);break;case"c":a=f+o[5],u=h+o[6],d=f+o[3],p=h+o[4],t.bezierCurveTo(f+o[1]+n,h+o[2]+r,d+n,p+r,a+n,u+r),f=a,h=u;break;case"C":f=o[5],h=o[6],d=o[3],p=o[4],t.bezierCurveTo(o[1]+n,o[2]+r,d+n,p+r,f+n,h+r);break;case"s":a=f+o[3],u=h+o[4],d=2*f-d,p=2*h-p,t.bezierCurveTo(d+n,p+r,f+o[1]+n,h+o[2]+r,a+n,u+r),d=f+o[1],p=h+o[2],f=a,h=u;break;case"S":a=o[3],u=o[4],d=2*f-d,p=2*h-p,t.bezierCurveTo(d+n,p+r,o[1]+n,o[2]+r,a+n,u+r),f=a,h=u,d=o[1],p=o[2];break;case"q":a=f+o[3],u=h+o[4],d=f+o[1],p=h+o[2],t.quadraticCurveTo(d+n,p+r,a+n,u+r),f=a,h=u;break;case"Q":a=o[3],u=o[4],t.quadraticCurveTo(o[1]+n,o[2]+r,a+n,u+r),f=a,h=u,d=o[1],p=o[2];break;case"t":a=f+o[1],u=h+o[2],null===l[0].match(/[QqTt]/)?(d=f,p=h):"t"===l[0]?(d=2*f-s,p=2*h-c):"q"===l[0]&&(d=2*f-d,p=2*h-p),s=d,c=p,t.quadraticCurveTo(d+n,p+r,a+n,u+r),h=u,d=(f=a)+o[1],p=h+o[2];break;case"T":a=o[1],u=o[2],d=2*f-d,p=2*h-p,t.quadraticCurveTo(d+n,p+r,a+n,u+r),f=a,h=u;break;case"a":rc(t,f+n,h+r,[o[1],o[2],o[3],o[4],o[5],o[6]+f+n,o[7]+h+r]),f+=o[6],h+=o[7];break;case"A":rc(t,f+n,h+r,[o[1],o[2],o[3],o[4],o[5],o[6]+n,o[7]+r]),f=o[6],h=o[7];break;case"z":case"Z":t.closePath()}l=o}};function rc(t,e,n,r){for(var i=function(t,e,n,r,i,o,a,u,s){var c=Qs.call(arguments);if(Js[c])return Js[c];var l=a*Gs,f=Math.sin(l),h=Math.cos(l),d=h*(u-t)*.5+f*(s-e)*.5,p=h*(s-e)*.5-f*(u-t)*.5,g=d*d/((n=Math.abs(n))*n)+p*p/((r=Math.abs(r))*r);g>1&&(n*=g=Math.sqrt(g),r*=g);var m=h/n,v=f/n,y=-f/r,b=h/r,x=m*u+v*s,_=y*u+b*s,w=m*t+v*e,O=y*t+b*e,k=1/((w-x)*(w-x)+(O-_)*(O-_))-.25;k<0&&(k=0);var A=Math.sqrt(k);o==i&&(A=-A);var E=.5*(x+w)-A*(O-_),j=.5*(_+O)+A*(w-x),S=Math.atan2(_-j,x-E),C=Math.atan2(O-j,w-E)-S;C<0&&1===o?C+=Vs:C>0&&0===o&&(C-=Vs);for(var M=Math.ceil(Math.abs(C/(Ys+.001))),D=[],F=0;F<M;++F){var N=S+F*C/M,z=S+(F+1)*C/M;D[F]=[E,j,N,z,n,r,f,h]}return Js[c]=D}(r[5],r[6],r[0],r[1],r[3],r[4],r[2],e,n),o=0;o<i.length;++o){var a=Ks(i[o]);t.bezierCurveTo(a[0],a[1],a[2],a[3],a[4],a[5])}}var ic={circle:{draw:function(t,e){var n=Math.sqrt(e)/2;t.moveTo(n,0),t.arc(0,0,n,0,Vs)}},cross:{draw:function(t,e){var n=Math.sqrt(e)/2,r=n/2.5;t.moveTo(-n,-r),t.lineTo(-n,r),t.lineTo(-r,r),t.lineTo(-r,n),t.lineTo(r,n),t.lineTo(r,r),t.lineTo(n,r),t.lineTo(n,-r),t.lineTo(r,-r),t.lineTo(r,-n),t.lineTo(-r,-n),t.lineTo(-r,-r),t.closePath()}},diamond:{draw:function(t,e){var n=Math.sqrt(e)/2;t.moveTo(-n,0),t.lineTo(0,-n),t.lineTo(n,0),t.lineTo(0,n),t.closePath()}},square:{draw:function(t,e){var n=Math.sqrt(e),r=-n/2;t.rect(r,r,n,n)}},arrow:{draw:function(t,e){var n=Math.sqrt(e)/2,r=n/7,i=n/2.5,o=n/8;t.moveTo(-r,n),t.lineTo(r,n),t.lineTo(r,-o),t.lineTo(i,-o),t.lineTo(0,-n),t.lineTo(-i,-o),t.lineTo(-r,-o),t.closePath()}},wedge:{draw:function(t,e){var n=Math.sqrt(e)/2,r=Xs*n,i=r-.5773502691896257*n,o=n/4;t.moveTo(0,-r-i),t.lineTo(-o,r-i),t.lineTo(o,r-i),t.closePath()}},triangle:{draw:function(t,e){var n=Math.sqrt(e)/2,r=Xs*n,i=r-.5773502691896257*n;t.moveTo(0,-r-i),t.lineTo(-n,r-i),t.lineTo(n,r-i),t.closePath()}},"triangle-up":{draw:function(t,e){var n=Math.sqrt(e)/2,r=Xs*n;t.moveTo(0,-r),t.lineTo(-n,r),t.lineTo(n,r),t.closePath()}},"triangle-down":{draw:function(t,e){var n=Math.sqrt(e)/2,r=Xs*n;t.moveTo(0,r),t.lineTo(-n,-r),t.lineTo(n,-r),t.closePath()}},"triangle-right":{draw:function(t,e){var n=Math.sqrt(e)/2,r=Xs*n;t.moveTo(r,0),t.lineTo(-r,-n),t.lineTo(-r,n),t.closePath()}},"triangle-left":{draw:function(t,e){var n=Math.sqrt(e)/2,r=Xs*n;t.moveTo(-r,0),t.lineTo(r,-n),t.lineTo(r,n),t.closePath()}},stroke:{draw:function(t,e){var n=Math.sqrt(e)/2;t.moveTo(-n,0),t.lineTo(n,0)}}};function oc(t){return ic.hasOwnProperty(t)?ic[t]:function(t){if(!ac.hasOwnProperty(t)){var e=Hs(t);ac[t]={draw:function(t,n){nc(t,e,0,0,Math.sqrt(n)/2)}}}return ac[t]}(t)}var ac={};function uc(t){return t.x}function sc(t){return t.y}function cc(t){return t.width}function lc(t){return t.height}function fc(t){return function(){return t}}var hc=function(){var t=uc,e=sc,n=cc,r=lc,i=fc(0),o=null;function a(a,u,s){var c,l=null!=u?u:+t.call(this,a),f=null!=s?s:+e.call(this,a),h=+n.call(this,a),d=+r.call(this,a),p=+i.call(this,a);if(o||(o=c=Nu()),p<=0)o.rect(l,f,h,d);else{var g=l+h,m=f+d;o.moveTo(l+p,f),o.lineTo(g-p,f),o.quadraticCurveTo(g,f,g,f+p),o.lineTo(g,m-p),o.quadraticCurveTo(g,m,g-p,m),o.lineTo(l+p,m),o.quadraticCurveTo(l,m,l,m-p),o.lineTo(l,f+p),o.quadraticCurveTo(l,f,l+p,f),o.closePath()}if(c)return o=null,c+""||null}return a.x=function(e){return arguments.length?(t="function"==typeof e?e:fc(+e),a):t},a.y=function(t){return arguments.length?(e="function"==typeof t?t:fc(+t),a):e},a.width=function(t){return arguments.length?(n="function"==typeof t?t:fc(+t),a):n},a.height=function(t){return arguments.length?(r="function"==typeof t?t:fc(+t),a):r},a.cornerRadius=function(t){return arguments.length?(i="function"==typeof t?t:fc(+t),a):i},a.context=function(t){return arguments.length?(o=null==t?null:t,a):o},a},dc=function(){var t,e,n,r,i,o,a,u,s=null;function c(t,e,n){var r=n/2;if(i){var c=a-e,l=t-o;if(c||l){var f=Math.sqrt(c*c+l*l),h=(c/=f)*u,d=(l/=f)*u,p=Math.atan2(l,c);s.moveTo(o-h,a-d),s.lineTo(t-c*r,e-l*r),s.arc(t,e,r,p-Math.PI,p),s.lineTo(o+h,a+d),s.arc(o,a,u,p,p+Math.PI)}else s.arc(t,e,r,0,Vs);s.closePath()}else i=1;o=t,a=e,u=r}function l(o){var a,u,l,f=o.length,h=!1;for(null==s&&(s=l=Nu()),a=0;a<=f;++a)!(a<f&&r(u=o[a],a,o))===h&&(h=!h)&&(i=0),h&&c(+t(u,a,o),+e(u,a,o),+n(u,a,o));if(l)return s=null,l+""||null}return l.x=function(e){return arguments.length?(t=e,l):t},l.y=function(t){return arguments.length?(e=t,l):e},l.size=function(t){return arguments.length?(n=t,l):n},l.defined=function(t){return arguments.length?(r=t,l):r},l.context=function(t){return arguments.length?(s=null==t?null:t,l):s},l};function pc(t){return t.x||0}function gc(t){return t.y||0}function mc(t){return t.cornerRadius||0}function vc(t){return!(!1===t.defined)}var yc=function(){var t=Yu,e=Vu,n=zu(0),r=null,i=Xu,o=Ju,a=Zu,u=null;function s(){var s,c,l,f=+t.apply(this,arguments),h=+e.apply(this,arguments),d=i.apply(this,arguments)-Wu,p=o.apply(this,arguments)-Wu,g=Tu(p-d),m=p>d;if(u||(u=s=Nu()),h<f&&(c=h,h=f,f=c),h>qu)if(g>Hu-qu)u.moveTo(h*Ru(d),h*Lu(d)),u.arc(0,0,h,d,p,!m),f>qu&&(u.moveTo(f*Ru(p),f*Lu(p)),u.arc(0,0,f,p,d,m));else{var v,y,b=d,x=p,_=d,w=p,O=g,k=g,A=a.apply(this,arguments)/2,E=A>qu&&(r?+r.apply(this,arguments):Uu(f*f+h*h)),j=Pu(Tu(h-f)/2,+n.apply(this,arguments)),S=j,C=j;if(E>qu){var M=Gu(E/f*Lu(A)),D=Gu(E/h*Lu(A));(O-=2*M)>qu?(_+=M*=m?1:-1,w-=M):(O=0,_=w=(d+p)/2),(k-=2*D)>qu?(b+=D*=m?1:-1,x-=D):(k=0,b=x=(d+p)/2)}var F=h*Ru(b),N=h*Lu(b),z=f*Ru(w),T=f*Lu(w);if(j>qu){var $,R=h*Ru(x),B=h*Lu(x),P=f*Ru(_),L=f*Lu(_);if(g<Iu&&($=function(t,e,n,r,i,o,a,u){var s=n-t,c=r-e,l=a-i,f=u-o,h=f*s-l*c;if(!(h*h<qu))return[t+(h=(l*(e-o)-f*(t-i))/h)*s,e+h*c]}(F,N,P,L,R,B,z,T))){var U=F-$[0],q=N-$[1],I=R-$[0],W=B-$[1],H=1/Lu(((l=(U*I+q*W)/(Uu(U*U+q*q)*Uu(I*I+W*W)))>1?0:l<-1?Iu:Math.acos(l))/2),G=Uu($[0]*$[0]+$[1]*$[1]);S=Pu(j,(f-G)/(H-1)),C=Pu(j,(h-G)/(H+1))}}k>qu?C>qu?(v=Qu(P,L,F,N,h,C,m),y=Qu(R,B,z,T,h,C,m),u.moveTo(v.cx+v.x01,v.cy+v.y01),C<j?u.arc(v.cx,v.cy,C,$u(v.y01,v.x01),$u(y.y01,y.x01),!m):(u.arc(v.cx,v.cy,C,$u(v.y01,v.x01),$u(v.y11,v.x11),!m),u.arc(0,0,h,$u(v.cy+v.y11,v.cx+v.x11),$u(y.cy+y.y11,y.cx+y.x11),!m),u.arc(y.cx,y.cy,C,$u(y.y11,y.x11),$u(y.y01,y.x01),!m))):(u.moveTo(F,N),u.arc(0,0,h,b,x,!m)):u.moveTo(F,N),f>qu&&O>qu?S>qu?(v=Qu(z,T,R,B,f,-S,m),y=Qu(F,N,P,L,f,-S,m),u.lineTo(v.cx+v.x01,v.cy+v.y01),S<j?u.arc(v.cx,v.cy,S,$u(v.y01,v.x01),$u(y.y01,y.x01),!m):(u.arc(v.cx,v.cy,S,$u(v.y01,v.x01),$u(v.y11,v.x11),!m),u.arc(0,0,f,$u(v.cy+v.y11,v.cx+v.x11),$u(y.cy+y.y11,y.cx+y.x11),m),u.arc(y.cx,y.cy,S,$u(y.y11,y.x11),$u(y.y01,y.x01),!m))):u.arc(0,0,f,w,_,m):u.lineTo(z,T)}else u.moveTo(0,0);if(u.closePath(),s)return u=null,s+""||null}return s.centroid=function(){var n=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-Iu/2;return[Ru(r)*n,Lu(r)*n]},s.innerRadius=function(e){return arguments.length?(t="function"==typeof e?e:zu(+e),s):t},s.outerRadius=function(t){return arguments.length?(e="function"==typeof t?t:zu(+t),s):e},s.cornerRadius=function(t){return arguments.length?(n="function"==typeof t?t:zu(+t),s):n},s.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:zu(+t),s):r},s.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:zu(+t),s):i},s.endAngle=function(t){return arguments.length?(o="function"==typeof t?t:zu(+t),s):o},s.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:zu(+t),s):a},s.context=function(t){return arguments.length?(u=null==t?null:t,s):u},s}().startAngle(function(t){return t.startAngle||0}).endAngle(function(t){return t.endAngle||0}).padAngle(function(t){return t.padAngle||0}).innerRadius(function(t){return t.innerRadius||0}).outerRadius(function(t){return t.outerRadius||0}).cornerRadius(mc),bc=is().x(pc).y1(gc).y0(function(t){return(t.y||0)+(t.height||0)}).defined(vc),xc=is().y(gc).x1(pc).x0(function(t){return(t.x||0)+(t.width||0)}).defined(vc),_c=rs().x(pc).y(gc).defined(vc),wc=hc().x(pc).y(gc).width(function(t){return t.width||0}).height(function(t){return t.height||0}).cornerRadius(mc),Oc=function(){var t=zu(us),e=zu(64),n=null;function r(){var r;if(n||(n=r=Nu()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),r)return n=null,r+""||null}return r.type=function(e){return arguments.length?(t="function"==typeof e?e:zu(e),r):t},r.size=function(t){return arguments.length?(e="function"==typeof t?t:zu(+t),r):e},r.context=function(t){return arguments.length?(n=null==t?null:t,r):n},r}().type(function(t){return oc(t.shape||"circle")}).size(function(t){return null==t.size?64:t.size}),kc=dc().x(pc).y(gc).defined(vc).size(function(t){return t.size||1});function Ac(t,e,n,r){return wc.context(t)(e,n,r)}var Ec,jc=function(t,e){return e.stroke&&0!==e.opacity&&0!==e.strokeOpacity&&t.expand(null!=e.strokeWidth?+e.strokeWidth:1),t},Sc=Vs-1e-8;function Cc(t){return Ec=t,Cc}function Mc(){}function Dc(t,e){Ec.add(t,e)}Cc.beginPath=Mc,Cc.closePath=Mc,Cc.moveTo=Dc,Cc.lineTo=Dc,Cc.rect=function(t,e,n,r){Dc(t,e),Dc(t+n,e+r)},Cc.quadraticCurveTo=function(t,e,n,r){Dc(t,e),Dc(n,r)},Cc.bezierCurveTo=function(t,e,n,r,i,o){Dc(t,e),Dc(n,r),Dc(i,o)},Cc.arc=function(t,e,n,r,i,o){if(Math.abs(i-r)>Sc)return Dc(t-n,e-n),void Dc(t+n,e+n);var a,u,s,c,l=1/0,f=-1/0,h=1/0,d=-1/0;function p(t){s=n*Math.cos(t),c=n*Math.sin(t),s<l&&(l=s),s>f&&(f=s),c<h&&(h=c),c>d&&(d=c)}if(p(r),p(i),i!==r)if((r%=Vs)<0&&(r+=Vs),(i%=Vs)<0&&(i+=Vs),i<r&&(o=!o,a=r,r=i,i=a),o)for(i-=Vs,a=r-r%Ys,u=0;u<4&&a>i;++u,a-=Ys)p(a);else for(a=r-r%Ys+Ys,u=0;u<4&&a<i;++u,a+=Ys)p(a);Dc(t+l,e+h),Dc(t+f,e+d)};var Fc=(Fc=wu(1,1))?Fc.getContext("2d"):null;const Nc=new hu;function zc(t){return function(e,n){if(!Fc)return!0;t(Fc,e),Nc.clear().union(e.bounds).intersect(n).round();const{x1:r,y1:i,x2:o,y2:a}=Nc;for(let t=i;t<=a;++t)for(let e=r;e<=o;++e)if(Fc.isPointInPath(e,t))return!0;return!1}}function Tc(t,e){return e.contains(t.x||0,t.y||0)}function $c(t,e){const n=t.x||0,r=t.y||0,i=t.width||0,o=t.height||0;return e.intersects(Nc.set(n,r,n+i,r+o))}function Rc(t,e){const n=t.x||0,r=t.y||0;return Bc(e,n,r,null!=t.x2?t.x2:n,null!=t.y2?t.y2:r)}function Bc(t,e,n,r,i){const{x1:o,y1:a,x2:u,y2:s}=t,c=r-e,l=i-n;let f,h,d,p,g=0,m=1;for(p=0;p<4;++p){if(0===p&&(f=-c,h=-(o-e)),1===p&&(f=c,h=u-e),2===p&&(f=-l,h=-(a-n)),3===p&&(f=l,h=s-n),Math.abs(f)<1e-10&&h<0)return!1;if(d=h/f,f<0){if(d>m)return!1;d>g&&(g=d)}else if(f>0){if(d<g)return!1;d<m&&(m=d)}}return!0}var Pc=function(t,e,n){return mu(n)?function(t,e,n){const r=n.width(),i=n.height(),o=e.stops,a=o.length,u="radial"===e.gradient?t.createRadialGradient(n.x1+(e.x1||.5)*r,n.y1+(e.y1||.5)*i,Math.max(r,i)*(e.r1||0),n.x1+(e.x2||.5)*r,n.y1+(e.y2||.5)*i,Math.max(r,i)*(e.r2||.5)):t.createLinearGradient(n.x1+(e.x1||0)*r,n.y1+(e.y1||0)*i,n.x1+(e.x2||1)*r,n.y1+(e.y2||0)*i);for(let t=0;t<a;++t)u.addColorStop(o[t].offset,o[t].color);return u}(t,n,e.bounds):n},Lc=function(t,e,n){return(n*=null==e.fillOpacity?1:e.fillOpacity)>0&&(t.globalAlpha=n,t.fillStyle=Pc(t,e,e.fill),!0)},Uc=[],qc=function(t,e,n){var r=null!=(r=e.strokeWidth)?r:1;return!(r<=0)&&((n*=null==e.strokeOpacity?1:e.strokeOpacity)>0&&(t.globalAlpha=n,t.strokeStyle=Pc(t,e,e.stroke),t.lineWidth=r,t.lineCap=e.strokeCap||"butt",t.lineJoin=e.strokeJoin||"miter",t.miterLimit=e.strokeMiterLimit||10,t.setLineDash&&(t.setLineDash(e.strokeDash||Uc),t.lineDashOffset=e.strokeDashOffset||0),!0))};function Ic(t,e){return t.zindex-e.zindex||t.index-e.index}function Wc(t){if(!t.zdirty)return t.zitems;var e,n,r,i=t.items,o=[];for(n=0,r=i.length;n<r;++n)(e=i[n]).index=n,e.zindex&&o.push(e);return t.zdirty=!1,t.zitems=o.sort(Ic)}function Hc(t,e){var n,r,i=t.items;if(i&&i.length){var o=Wc(t);if(o&&o.length){for(n=0,r=i.length;n<r;++n)i[n].zindex||e(i[n]);i=o}for(n=0,r=i.length;n<r;++n)e(i[n])}}function Gc(t,e){var n,r,i=t.items;if(!i||!i.length)return null;var o=Wc(t);for(o&&o.length&&(i=o),r=i.length;--r>=0;)if(n=e(i[r]))return n;if(i===o)for(r=(i=t.items).length;--r>=0;)if(!i[r].zindex&&(n=e(i[r])))return n;return null}function Yc(t){return function(e,n,r){Hc(n,function(n){r&&!r.intersects(n.bounds)||Vc(t,e,n,n)})}}function Vc(t,e,n,r){var i=null==n.opacity?1:n.opacity;0!==i&&(t(e,r)||(n.fill&&Lc(e,n,i)&&e.fill(),n.stroke&&qc(e,n,i)&&e.stroke()))}function Xc(t){return t=t||ct.db,function(e,n,r,i,o,a){return r*=e.pixelRatio,i*=e.pixelRatio,Gc(n,function(n){var u=n.bounds;if((!u||u.contains(o,a))&&u)return t(e,n,r,i,o,a)?n:void 0})}}function Jc(t,e){return function(n,r,i,o){var a,u,s=Array.isArray(r)?r[0]:r,c=null==e?s.fill:e,l=s.stroke&&n.isPointInStroke;return l&&(a=s.strokeWidth,u=s.strokeCap,n.lineWidth=null!=a?a:1,n.lineCap=null!=u?u:"butt"),!t(n,r)&&(c&&n.isPointInPath(i,o)||l&&n.isPointInStroke(i,o))}}function Zc(t){return Xc(Jc(t))}function Qc(t,e){return"translate("+t+","+e+")"}function Kc(t){return"rotate("+t+")"}function tl(t){return Qc(t.x||0,t.y||0)}var el=function(t,e,n){function r(t,n){var r=n.x||0,i=n.y||0,o=n.angle||0;t.translate(r,i),o&&t.rotate(o*=Gs),t.beginPath(),e(t,n),o&&t.rotate(-o),t.translate(-r,-i)}return{type:t,tag:"path",nested:!1,attr:function(t,n){t("transform",function(t){return Qc(t.x||0,t.y||0)+(t.angle?" "+Kc(t.angle):"")}(n)),t("d",e(null,n))},bound:function(t,n){var r=n.x||0,i=n.y||0;return e(Cc(t),n),jc(t,n).translate(r,i),n.angle&&t.rotate(n.angle*Gs,r,i),t},draw:Yc(r),pick:Zc(r),isect:n||zc(r)}},nl=el("arc",function(t,e){return yc.context(t)(e)});var rl=function(t,e,n){function r(t,n){t.beginPath(),e(t,n)}var i,o=Jc(r);return{type:t,tag:"path",nested:!0,attr:function(t,n){var r=n.mark.items;r.length&&t("d",e(null,r))},bound:function(t,n){var r=n.items;return 0===r.length?t:(e(Cc(t),r),jc(t,r[0]))},draw:(i=r,function(t,e,n){!e.items.length||n&&!n.intersects(e.bounds)||Vc(i,t,e.items[0],e.items)}),pick:function(t,e,n,r,i,a){var u=e.items,s=e.bounds;return!u||!u.length||s&&!s.contains(i,a)?null:(n*=t.pixelRatio,r*=t.pixelRatio,o(t,u,n,r)?u[0]:null)},isect:Tc,tip:n}},il=rl("area",function(t,e){var n=e[0],r=n.interpolate||"linear";return("horizontal"===n.orient?xc:bc).curve(qs(r,n.orient,n.tension)).context(t)(e)},function(t,e){for(var n,r,i="horizontal"===t[0].orient?e[1]:e[0],o="horizontal"===t[0].orient?"y":"x",a=t.length,u=1/0;--a>=0;)!1!==t[a].defined&&(r=Math.abs(t[a][o]-i))<u&&(u=r,n=t[a]);return n}),ol=1;function al(){ol=1}var ul=function(t,e,n){var r=e.clip,i=t._defs,o=e.clip_id||(e.clip_id="clip"+ol++),a=i.clipping[o]||(i.clipping[o]={id:o});return Object(ct.C)(r)?a.path=r(null):(a.width=n.width||0,a.height=n.height||0),"url(#"+o+")"},sl=.5;function cl(t,e){var n=e.stroke?sl:0;t.beginPath(),Ac(t,e,n,n)}var ll=Jc(cl);var fl={type:"group",tag:"g",nested:!1,attr:function(t,e){t("transform",tl(e))},bound:function(t,e){if(!e.clip&&e.items)for(var n=e.items,r=0,i=n.length;r<i;++r)t.union(n[r].bounds);return(e.clip||e.width||e.height)&&!e.noBound&&t.add(0,0).add(e.width||0,e.height||0),jc(t,e),t.translate(e.x||0,e.y||0)},draw:function(t,e,n){var r=this;Hc(e,function(e){var i,o=e.x||0,a=e.y||0,u=e.width||0,s=e.height||0;t.save(),t.translate(o,a),(e.stroke||e.fill)&&(i=null==e.opacity?1:e.opacity)>0&&(cl(t,e),e.fill&&Lc(t,e,i)&&t.fill(),e.stroke&&qc(t,e,i)&&t.stroke()),e.clip&&(t.beginPath(),t.rect(0,0,u,s),t.clip()),n&&n.translate(-o,-a),Hc(e,function(e){r.draw(t,e,n)}),n&&n.translate(o,a),t.restore()})},pick:function(t,e,n,r,i,o){if(e.bounds&&!e.bounds.contains(i,o)||!e.items)return null;var a=this,u=n*t.pixelRatio,s=r*t.pixelRatio;return Gc(e,function(c){var l,f,h,d;if(!(d=c.bounds)||d.contains(i,o))return f=c.x||0,h=c.y||0,t.save(),t.translate(f,h),f=i-f,h=o-h,!(l=Gc(c,function(t){return function(t,e,n){return(!1!==t.interactive||"group"===t.marktype)&&t.bounds&&t.bounds.contains(e,n)}(t,f,h)?a.pick(t,n,r,f,h):null}))&&!1!==e.interactive&&(c.fill||c.stroke)&&ll(t,c,u,s)&&(l=c),t.restore(),l||null})},isect:$c,background:function(t,e){var n=e.stroke?sl:0;t("class","background"),t("d",Ac(null,e,n,n))},foreground:function(t,e,n){t("clip-path",e.clip?ul(n,e,e):null)}};function hl(t,e){var n=t.image;return n&&n.url===t.url||(n={loaded:!1,width:0,height:0},e.loadImage(t.url).then(function(e){t.image=e,t.image.url=t.url})),n}function dl(t,e){return"center"===t?e/2:"right"===t?e:0}function pl(t,e){return"middle"===t?e/2:"bottom"===t?e:0}var gl={type:"image",tag:"image",nested:!1,attr:function(t,e,n){var r=hl(e,n),i=e.x||0,o=e.y||0,a=(null!=e.width?e.width:r.width)||0,u=(null!=e.height?e.height:r.height)||0,s=!1===e.aspect?"none":"xMidYMid";i-=dl(e.align,a),o-=pl(e.baseline,u),t("href",r.src||"","http://www.w3.org/1999/xlink","xlink:href"),t("transform",Qc(i,o)),t("width",a),t("height",u),t("preserveAspectRatio",s)},bound:function(t,e){var n=e.image,r=e.x||0,i=e.y||0,o=(null!=e.width?e.width:n&&n.width)||0,a=(null!=e.height?e.height:n&&n.height)||0;return r-=dl(e.align,o),i-=pl(e.baseline,a),t.set(r,i,r+o,i+a)},draw:function(t,e,n){var r=this;Hc(e,function(e){if(!n||n.intersects(e.bounds)){var i,o,a,u,s=hl(e,r),c=e.x||0,l=e.y||0,f=(null!=e.width?e.width:s.width)||0,h=(null!=e.height?e.height:s.height)||0;c-=dl(e.align,f),l-=pl(e.baseline,h),!1!==e.aspect&&(o=s.width/s.height,a=e.width/e.height,o==o&&a==a&&o!==a&&(a<o?(l+=(h-(u=f/o))/2,h=u):(c+=(f-(u=h*o))/2,f=u))),s.loaded&&(t.globalAlpha=null!=(i=e.opacity)?i:1,t.drawImage(s,c,l,f,h))}})},pick:Xc(),isect:ct.db,get:hl,xOffset:dl,yOffset:pl},ml=rl("line",function(t,e){var n=e[0],r=n.interpolate||"linear";return _c.curve(qs(r,n.orient,n.tension)).context(t)(e)},function(t,e){for(var n,r,i=Math.pow(t[0].strokeWidth||1,2),o=t.length;--o>=0;)if(!1!==t[o].defined&&(n=t[o].x-e[0])*n+(r=t[o].y-e[1])*r<i)return t[o];return null});function vl(t,e){var n=e.path;if(null==n)return!0;var r=e.pathCache;r&&r.path===n||((e.pathCache=r=Hs(n)).path=n),nc(t,r,e.x,e.y)}var yl={type:"path",tag:"path",nested:!1,attr:function(t,e){t("transform",tl(e)),t("d",e.path)},bound:function(t,e){return vl(Cc(t),e)?t.set(0,0,0,0):jc(t,e)},draw:Yc(vl),pick:Zc(vl),isect:zc(vl)};function bl(t,e){t.beginPath(),Ac(t,e)}var xl={type:"rect",tag:"path",nested:!1,attr:function(t,e){t("d",Ac(null,e))},bound:function(t,e){var n,r;return jc(t.set(n=e.x||0,r=e.y||0,n+e.width||0,r+e.height||0),e)},draw:Yc(bl),pick:Zc(bl),isect:$c};function _l(t,e,n){var r,i,o,a;return!(!e.stroke||!qc(t,e,n))&&(r=e.x||0,i=e.y||0,o=null!=e.x2?e.x2:r,a=null!=e.y2?e.y2:i,t.beginPath(),t.moveTo(r,i),t.lineTo(o,a),!0)}var wl,Ol={type:"rule",tag:"line",nested:!1,attr:function(t,e){t("transform",tl(e)),t("x2",null!=e.x2?e.x2-(e.x||0):0),t("y2",null!=e.y2?e.y2-(e.y||0):0)},bound:function(t,e){var n,r;return jc(t.set(n=e.x||0,r=e.y||0,null!=e.x2?e.x2:n,null!=e.y2?e.y2:r),e)},draw:function(t,e,n){Hc(e,function(e){if(!n||n.intersects(e.bounds)){var r=null==e.opacity?1:e.opacity;r&&_l(t,e,r)&&t.stroke()}})},pick:Xc(function(t,e,n,r){return!!t.isPointInStroke&&_l(t,e,1)&&t.isPointInStroke(n,r)}),isect:Rc},kl=el("shape",function(t,e){return(e.mark.shape||e.shape).context(t)(e)}),Al=el("symbol",function(t,e){return Oc.context(t)(e)},Tc),El={height:Dl,measureWidth:Cl,estimateWidth:jl,width:jl,canvas:Fl};function jl(t){return wl=Dl(t),Sl(Nl(t))}function Sl(t){return~~(.8*t.length*wl)}function Cl(t){return Dl(t)<=0?0:(Fc.font=Tl(t),Ml(Nl(t)))}function Ml(t){return Fc.measureText(t).width}function Dl(t){return null!=t.fontSize?t.fontSize:11}function Fl(t){El.width=t&&Fc?Cl:jl}function Nl(t){var e=t.text;return null==e?"":t.limit>0?function(t){var e,n=+t.limit,r=t.text+"";El.width===Cl?(Fc.font=Tl(t),e=Ml):(wl=Dl(t),e=Sl);if(e(r)<n)return r;var i,o=t.ellipsis||"…",a="rtl"===t.dir,u=0,s=r.length;if(n-=e(o),a){for(;u<s;)i=u+s>>>1,e(r.slice(i))>n?u=i+1:s=i;return o+r.slice(u)}for(;u<s;)i=1+(u+s>>>1),e(r.slice(0,i))<n?u=i:s=i-1;return r.slice(0,u)+o}(t):e+""}function zl(t,e){var n=t.font;return(e&&n?String(n).replace(/"/g,"'"):n)||"sans-serif"}function Tl(t,e){return(t.fontStyle?t.fontStyle+" ":"")+(t.fontVariant?t.fontVariant+" ":"")+(t.fontWeight?t.fontWeight+" ":"")+Dl(t)+"px "+zl(t,e)}function $l(t){var e=t.baseline,n=Dl(t);return Math.round("top"===e?.79*n:"middle"===e?.3*n:"bottom"===e?-.21*n:0)}Fl(!0);var Rl={left:"start",center:"middle",right:"end"},Bl=new hu;function Pl(t){var e,n=t.x||0,r=t.y||0,i=t.radius||0;return i&&(e=(t.theta||0)-Ys,n+=i*Math.cos(e),r+=i*Math.sin(e)),Bl.x1=n,Bl.y1=r,Bl}function Ll(t,e,n){var r,i=El.height(e),o=e.align,a=Pl(e),u=a.x1,s=a.y1,c=e.dx||0,l=(e.dy||0)+$l(e)-Math.round(.8*i);if(r=El.width(e),"center"===o?c-=r/2:"right"===o&&(c-=r),t.set(c+=u,l+=s,c+r,l+i),e.angle&&!n)t.rotate(e.angle*Gs,u,s);else if(2===n)return t.rotatedPoints(e.angle*Gs,u,s);return t}var Ul={arc:nl,area:il,group:fl,image:gl,line:ml,path:yl,rect:xl,rule:Ol,shape:kl,symbol:Al,text:{type:"text",tag:"text",nested:!1,attr:function(t,e){var n,r=e.dx||0,i=(e.dy||0)+$l(e),o=Pl(e),a=o.x1,u=o.y1,s=e.angle||0;t("text-anchor",Rl[e.align]||"start"),s?(n=Qc(a,u)+" "+Kc(s),(r||i)&&(n+=" "+Qc(r,i))):n=Qc(a+r,u+i),t("transform",n)},bound:Ll,draw:function(t,e,n){Hc(e,function(e){var r,i,o,a,u;n&&!n.intersects(e.bounds)||(u=Nl(e))&&(0===(r=null==e.opacity?1:e.opacity)||e.fontSize<=0||(t.font=Tl(e),t.textAlign=e.align||"left",o=(i=Pl(e)).x1,a=i.y1,e.angle&&(t.save(),t.translate(o,a),t.rotate(e.angle*Gs),o=a=0),o+=e.dx||0,a+=(e.dy||0)+$l(e),e.fill&&Lc(t,e,r)&&t.fillText(u,o,a),e.stroke&&qc(t,e,r)&&t.strokeText(u,o,a),e.angle&&t.restore()))})},pick:Xc(function(t,e,n,r,i,o){if(e.fontSize<=0)return!1;if(!e.angle)return!0;var a=Pl(e),u=a.x1,s=a.y1,c=Ll(Bl,e,1),l=-e.angle*Gs,f=Math.cos(l),h=Math.sin(l),d=f*i-h*o+(u-f*u+h*s),p=h*i+f*o+(s-h*u-f*s);return c.contains(d,p)}),isect:function(t,e){var n=Ll(Bl,t,2);return Bc(e,n[0],n[1],n[2],n[3])||Bc(e,n[0],n[1],n[4],n[5])||Bc(e,n[4],n[5],n[6],n[7])||Bc(e,n[2],n[3],n[6],n[7])}},trail:rl("trail",function(t,e){return kc.context(t)(e)},function(t,e){for(var n,r,i=t.length;--i>=0;)if(!1!==t[i].defined&&(n=t[i].x-e[0])*n+(r=t[i].y-e[1])*r<(n=t[i].size||1)*n)return t[i];return null})},ql=function(t,e,n){var r=Ul[t.mark.marktype],i=e||r.bound;return r.nested&&(t=t.mark),i(t.bounds||(t.bounds=new hu),t,n)},Il={mark:null},Wl=function(t,e,n){var r,i,o,a,u=Ul[t.marktype],s=u.bound,c=t.items,l=c&&c.length;if(u.nested)return l?o=c[0]:(Il.mark=t,o=Il),a=ql(o,s,n),e=e&&e.union(a)||a;if(e=e||t.bounds&&t.bounds.clear()||new hu,l)for(r=0,i=c.length;r<i;++r)e.union(ql(c[r],s,n));return t.bounds=e},Hl=["marktype","name","role","interactive","clip","items","zindex","x","y","width","height","align","baseline","fill","fillOpacity","opacity","stroke","strokeOpacity","strokeWidth","strokeCap","strokeDash","strokeDashOffset","startAngle","endAngle","innerRadius","outerRadius","cornerRadius","padAngle","interpolate","tension","orient","defined","url","path","x2","y2","size","shape","text","angle","theta","radius","dx","dy","font","fontSize","fontWeight","fontStyle","fontVariant"];function Gl(t,e){return JSON.stringify(t,Hl,e)}function Yl(t){return function t(e){var n,r,i,o=e.marktype,a=e.items;if(a)for(r=0,i=a.length;r<i;++r)n=o?"mark":"group",a[r][n]=e,a[r].zindex&&(a[r][n].zdirty=!0),"group"===(o||n)&&t(a[r]);o&&Wl(e);return e}("string"==typeof t?JSON.parse(t):t)}function Vl(t){arguments.length?this.root=Yl(t):(this.root=Jl({marktype:"group",name:"root",role:"frame"}),this.root.items=[new _u(this.root)])}var Xl=Vl.prototype;function Jl(t,e){return{bounds:new hu,clip:!!t.clip,group:e,interactive:!1!==t.interactive,items:[],marktype:t.marktype,name:t.name||void 0,role:t.role||void 0,zindex:t.zindex||0}}function Zl(t,e,n){return!t&&"undefined"!=typeof document&&document.createElement&&(t=document),t?n?t.createElementNS(n,e):t.createElement(e):null}function Ql(t,e){e=e.toLowerCase();for(var n=t.childNodes,r=0,i=n.length;r<i;++r)if(n[r].tagName.toLowerCase()===e)return n[r]}function Kl(t,e,n,r){var i,o=t.childNodes[e];return o&&o.tagName.toLowerCase()===n.toLowerCase()||(i=o||null,o=Zl(t.ownerDocument,n,r),t.insertBefore(o,i)),o}function tf(t,e){for(var n=t.childNodes,r=n.length;r>e;)t.removeChild(n[--r]);return t}function ef(t){return"mark-"+t.marktype+(t.role?" role-"+t.role:"")+(t.name?" "+t.name:"")}Xl.toJSON=function(t){return Gl(this.root,t||0)},Xl.mark=function(t,e,n){var r=Jl(t,e=e||this.root.items[0]);return e.items[n]=r,r.zindex&&(r.group.zdirty=!0),r};var nf=function(t,e){var n=e.getBoundingClientRect();return[t.clientX-n.left-(e.clientLeft||0),t.clientY-n.top-(e.clientTop||0)]};function rf(t,e){this._active=null,this._handlers={},this._loader=t||Tr(),this._tooltip=e||of}function of(t,e,n,r){t.element().setAttribute("title",r||"")}var af=rf.prototype;function uf(t){this._el=null,this._bgcolor=null,this._loader=new ku(t)}af.initialize=function(t,e,n){return this._el=t,this._obj=n||null,this.origin(e)},af.element=function(){return this._el},af.canvas=function(){return this._el&&this._el.firstChild},af.origin=function(t){return arguments.length?(this._origin=t||[0,0],this):this._origin.slice()},af.scene=function(t){return arguments.length?(this._scene=t,this):this._scene},af.on=function(){},af.off=function(){},af._handlerIndex=function(t,e,n){for(var r=t?t.length:0;--r>=0;)if(t[r].type===e&&(!n||t[r].handler===n))return r;return-1},af.handlers=function(t){var e,n=this._handlers,r=[];if(t)r.push.apply(r,n[this.eventName(t)]);else for(e in n)r.push.apply(r,n[e]);return r},af.eventName=function(t){var e=t.indexOf(".");return e<0?t:t.slice(0,e)},af.handleHref=function(t,e,n){this._loader.sanitize(n,{context:"href"}).then(function(e){var n=new MouseEvent(t.type,t),r=Zl(null,"a");for(var i in e)r.setAttribute(i,e[i]);r.dispatchEvent(n)}).catch(function(){})},af.handleTooltip=function(t,e,n){if(e&&null!=e.tooltip){e=function(t,e,n,r){var i,o,a=t&&t.mark;if(a&&(i=Ul[a.marktype]).tip){for((o=nf(e,n))[0]-=r[0],o[1]-=r[1];t=t.mark.group;)o[0]-=t.x||0,o[1]-=t.y||0;t=i.tip(a.items,o)}return t}(e,t,this.canvas(),this._origin);var r=n&&e&&e.tooltip||null;this._tooltip.call(this._obj,this,t,e,r)}},af.getItemBoundingClientRect=function(t){if(e=this.canvas()){for(var e,n=e.getBoundingClientRect(),r=this._origin,i=t.bounds,o=i.x1+r[0]+n.left,a=i.y1+r[1]+n.top,u=i.width(),s=i.height();t.mark&&(t=t.mark.group);)o+=t.x||0,a+=t.y||0;return{x:o,y:a,width:u,height:s,left:o,top:a,right:o+u,bottom:a+s}}};var sf=uf.prototype;sf.initialize=function(t,e,n,r,i){return this._el=t,this.resize(e,n,r,i)},sf.element=function(){return this._el},sf.canvas=function(){return this._el&&this._el.firstChild},sf.background=function(t){return 0===arguments.length?this._bgcolor:(this._bgcolor=t,this)},sf.resize=function(t,e,n,r){return this._width=t,this._height=e,this._origin=n||[0,0],this._scale=r||1,this},sf.dirty=function(){},sf.render=function(t){var e=this;return e._call=function(){e._render(t)},e._call(),e._call=null,e},sf._render=function(){},sf.renderAsync=function(t){var e=this.render(t);return this._ready?this._ready.then(function(){return e}):Promise.resolve(e)},sf._load=function(t,e){var n=this,r=n._loader[t](e);if(!n._ready){var i=n._call;n._ready=n._loader.ready().then(function(t){t&&i(),n._ready=null})}return r},sf.sanitizeURL=function(t){return this._load("sanitizeURL",t)},sf.loadImage=function(t){return this._load("loadImage",t)};var cf="mouseout";function lf(t,e){rf.call(this,t,e),this._down=null,this._touch=null,this._first=!0}var ff=Object(ct.x)(lf,rf);function hf(t,e,n){return function(r){var i=this._active,o=this.pickEvent(r);o===i?this.fire(t,r):(i&&i.exit||this.fire(n,r),this._active=o,this.fire(e,r),this.fire(t,r))}}function df(t){return function(e){this.fire(t,e),this._active=null}}ff.initialize=function(t,e,n){var r=this._canvas=t&&Ql(t,"canvas");if(r){var i=this;this.events.forEach(function(t){r.addEventListener(t,function(e){ff[t]?ff[t].call(i,e):i.fire(t,e)})})}return rf.prototype.initialize.call(this,t,e,n)},ff.canvas=function(){return this._canvas},ff.context=function(){return this._canvas.getContext("2d")},ff.events=["keydown","keypress","keyup","dragenter","dragleave","dragover","mousedown","mouseup","mousemove","mouseout","mouseover","click","dblclick","wheel","mousewheel","touchstart","touchmove","touchend"],ff.DOMMouseScroll=function(t){this.fire("mousewheel",t)},ff.mousemove=hf("mousemove","mouseover","mouseout"),ff.dragover=hf("dragover","dragenter","dragleave"),ff.mouseout=df("mouseout"),ff.dragleave=df("dragleave"),ff.mousedown=function(t){this._down=this._active,this.fire("mousedown",t)},ff.click=function(t){this._down===this._active&&(this.fire("click",t),this._down=null)},ff.touchstart=function(t){this._touch=this.pickEvent(t.changedTouches[0]),this._first&&(this._active=this._touch,this._first=!1),this.fire("touchstart",t,!0)},ff.touchmove=function(t){this.fire("touchmove",t,!0)},ff.touchend=function(t){this.fire("touchend",t,!0),this._touch=null},ff.fire=function(t,e,n){var r,i,o=n?this._touch:this._active,a=this._handlers[t];if(e.vegaType=t,"click"===t&&o&&o.href?this.handleHref(e,o,o.href):"mousemove"!==t&&t!==cf||this.handleTooltip(e,o,t!==cf),a)for(r=0,i=a.length;r<i;++r)a[r].handler.call(this._obj,e,o)},ff.on=function(t,e){var n=this.eventName(t),r=this._handlers;return this._handlerIndex(r[n],t,e)<0&&(r[n]||(r[n]=[])).push({type:t,handler:e}),this},ff.off=function(t,e){var n=this.eventName(t),r=this._handlers[n],i=this._handlerIndex(r,t,e);return i>=0&&r.splice(i,1),this},ff.pickEvent=function(t){var e=nf(t,this._canvas),n=this._origin;return this.pick(this._scene,e[0],e[1],e[0]-n[0],e[1]-n[1])},ff.pick=function(t,e,n,r,i){var o=this.context();return Ul[t.marktype].pick.call(this,o,t,e,n,r,i)};var pf="undefined"!=typeof window&&window.devicePixelRatio||1;function gf(t){uf.call(this,t),this._redraw=!1,this._dirty=new hu}var mf=Object(ct.x)(gf,uf),vf=uf.prototype,yf=new hu;function bf(t,e){rf.call(this,t,e);var n=this;n._hrefHandler=_f(n,function(t,e){e&&e.href&&n.handleHref(t,e,e.href)}),n._tooltipHandler=_f(n,function(t,e){n.handleTooltip(t,e,t.type!==cf)})}mf.initialize=function(t,e,n,r,i,o){return this._options=o,this._canvas=wu(1,1,o&&o.type),t&&(tf(t,0).appendChild(this._canvas),this._canvas.setAttribute("class","marks")),vf.initialize.call(this,t,e,n,r,i)},mf.resize=function(t,e,n,r){return vf.resize.call(this,t,e,n,r),function(t,e,n,r,i,o){var a,u="undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&null!=t.parentNode,s=t.getContext("2d"),c=u?pf:i;for(a in t.width=e*c,t.height=n*c,o)s[a]=o[a];u&&1!==c&&(t.style.width=e+"px",t.style.height=n+"px"),s.pixelRatio=c,s.setTransform(c,0,0,c,c*r[0],c*r[1])}(this._canvas,this._width,this._height,this._origin,this._scale,this._options&&this._options.context),this._redraw=!0,this},mf.canvas=function(){return this._canvas},mf.context=function(){return this._canvas?this._canvas.getContext("2d"):null},mf.dirty=function(t){var e=function(t,e){if(null==e)return t;for(var n=yf.clear().union(t);null!=e;e=e.mark.group)n.translate(e.x||0,e.y||0);return n}(t.bounds,t.mark.group);this._dirty.union(e)},mf._render=function(t){var e=this.context(),n=this._origin,r=this._width,i=this._height,o=this._dirty;return e.save(),this._redraw||o.empty()?(this._redraw=!1,o=null):o=function(t,e,n){return e.expand(1).round(),e.translate(-n[0]%1,-n[1]%1),t.beginPath(),t.rect(e.x1,e.y1,e.width(),e.height()),t.clip(),e}(e,o,n),this.clear(-n[0],-n[1],r,i),this.draw(e,t,o),e.restore(),this._dirty.clear(),this},mf.draw=function(t,e,n){var r=Ul[e.marktype];e.clip&&function(t,e){var n=e.clip;if(t.save(),t.beginPath(),Object(ct.C)(n))n(t);else{var r=e.group;t.rect(0,0,r.width||0,r.height||0)}t.clip()}(t,e),r.draw.call(this,t,e,n),e.clip&&t.restore()},mf.clear=function(t,e,n,r){var i=this.context();i.clearRect(t,e,n,r),null!=this._bgcolor&&(i.fillStyle=this._bgcolor,i.fillRect(t,e,n,r))};var xf=Object(ct.x)(bf,rf);function _f(t,e){return function(n){var r=n.target.__data__;n.vegaType=n.type,r=Array.isArray(r)?r[0]:r,e.call(t._obj,n,r)}}function wf(t,e,n){var r,i,o="<"+t;if(e)for(r in e)null!=(i=e[r])&&(o+=" "+r+'="'+i+'"');return n&&(o+=" "+n),o+">"}function Of(t){return"</"+t+">"}xf.initialize=function(t,e,n){var r=this._svg;return r&&(r.removeEventListener("click",this._hrefHandler),r.removeEventListener("mousemove",this._tooltipHandler),r.removeEventListener(cf,this._tooltipHandler)),this._svg=r=t&&Ql(t,"svg"),r&&(r.addEventListener("click",this._hrefHandler),r.addEventListener("mousemove",this._tooltipHandler),r.addEventListener(cf,this._tooltipHandler)),rf.prototype.initialize.call(this,t,e,n)},xf.canvas=function(){return this._svg},xf.on=function(t,e){var n=this.eventName(t),r=this._handlers;if(this._handlerIndex(r[n],t,e)<0){var i={type:t,handler:e,listener:_f(this,e)};(r[n]||(r[n]=[])).push(i),this._svg&&this._svg.addEventListener(n,i.listener)}return this},xf.off=function(t,e){var n=this.eventName(t),r=this._handlers[n],i=this._handlerIndex(r,t,e);return i>=0&&(this._svg&&this._svg.removeEventListener(n,r[i].listener),r.splice(i,1)),this};var kf={version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},Af={fill:"fill",fillOpacity:"fill-opacity",stroke:"stroke",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",strokeCap:"stroke-linecap",strokeJoin:"stroke-linejoin",strokeDash:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeMiterLimit:"stroke-miterlimit",opacity:"opacity"},Ef=Object.keys(Af),jf=kf.xmlns;function Sf(t){uf.call(this,t),this._dirtyID=1,this._dirty=[],this._svg=null,this._root=null,this._defs=null}var Cf=Object(ct.x)(Sf,uf),Mf=uf.prototype;function Df(t,e,n){var r,i,o;if("radial"===e.gradient){var a=Kl(t,n++,"pattern",jf);a.setAttribute("id",gu+e.id),a.setAttribute("viewBox","0,0,1,1"),a.setAttribute("width","100%"),a.setAttribute("height","100%"),a.setAttribute("preserveAspectRatio","xMidYMid slice"),(a=Kl(a,0,"rect",jf)).setAttribute("width","1"),a.setAttribute("height","1"),a.setAttribute("fill","url("+Lf()+"#"+e.id+")"),(t=Kl(t,n++,"radialGradient",jf)).setAttribute("id",e.id),t.setAttribute("fx",e.x1),t.setAttribute("fy",e.y1),t.setAttribute("fr",e.r1),t.setAttribute("cx",e.x2),t.setAttribute("cy",e.y2),t.setAttribute("r",e.r2)}else(t=Kl(t,n++,"linearGradient",jf)).setAttribute("id",e.id),t.setAttribute("x1",e.x1),t.setAttribute("x2",e.x2),t.setAttribute("y1",e.y1),t.setAttribute("y2",e.y2);for(r=0,i=e.stops.length;r<i;++r)(o=Kl(t,r,"stop",jf)).setAttribute("offset",e.stops[r].offset),o.setAttribute("stop-color",e.stops[r].color);return tf(t,r),n}function Ff(t,e,n){var r;return(t=Kl(t,n,"clipPath",jf)).setAttribute("id",e.id),e.path?(r=Kl(t,0,"path",jf)).setAttribute("d",e.path):((r=Kl(t,0,"rect",jf)).setAttribute("x",0),r.setAttribute("y",0),r.setAttribute("width",e.width),r.setAttribute("height",e.height)),n+1}function Nf(t,e){for(;t&&t.dirty!==e;t=t.mark.group){if(t.dirty=e,!t.mark||t.mark.dirty===e)return;t.mark.dirty=e}}function zf(t,e,n,r,i){var o,a=t._svg;if(!a&&(a=Zl(o=e.ownerDocument,r,jf),t._svg=a,t.mark&&(a.__data__=t,a.__values__={fill:"default"},"g"===r))){var u=Zl(o,"path",jf);u.setAttribute("class","background"),a.appendChild(u),u.__data__=t;var s=Zl(o,"g",jf);a.appendChild(s),s.__data__=t}return(a.ownerSVGElement!==i||function(t){var e=t.mark||t.group;return e&&e.items.length>1}(t)&&a.previousSibling!==n)&&e.insertBefore(a,n?n.nextSibling:e.firstChild),a}Cf.initialize=function(t,e,n,r){return t&&(this._svg=Kl(t,0,"svg",jf),this._svg.setAttribute("class","marks"),tf(t,1),this._root=Kl(this._svg,0,"g",jf),tf(this._svg,1)),this._defs={gradient:{},clipping:{}},this.background(this._bgcolor),Mf.initialize.call(this,t,e,n,r)},Cf.background=function(t){return arguments.length&&this._svg&&this._svg.style.setProperty("background-color",t),Mf.background.apply(this,arguments)},Cf.resize=function(t,e,n,r){return Mf.resize.call(this,t,e,n,r),this._svg&&(this._svg.setAttribute("width",this._width*this._scale),this._svg.setAttribute("height",this._height*this._scale),this._svg.setAttribute("viewBox","0 0 "+this._width+" "+this._height),this._root.setAttribute("transform","translate("+this._origin+")")),this._dirty=[],this},Cf.canvas=function(){return this._svg},Cf.svg=function(){if(!this._svg)return null;var t={class:"marks",width:this._width*this._scale,height:this._height*this._scale,viewBox:"0 0 "+this._width+" "+this._height};for(var e in kf)t[e]=kf[e];var n=this._bgcolor?wf("rect",{width:this._width,height:this._height,style:"fill: "+this._bgcolor+";"})+Of("rect"):"";return wf("svg",t)+n+this._svg.innerHTML+Of("svg")},Cf._render=function(t){return this._dirtyCheck()&&(this._dirtyAll&&this._resetDefs(),this.draw(this._root,t),tf(this._root,1)),this.updateDefs(),this._dirty=[],++this._dirtyID,this},Cf.updateDefs=function(){var t,e=this._svg,n=this._defs,r=n.el,i=0;for(t in n.gradient)r||(n.el=r=Kl(e,0,"defs",jf)),i=Df(r,n.gradient[t],i);for(t in n.clipping)r||(n.el=r=Kl(e,0,"defs",jf)),i=Ff(r,n.clipping[t],i);r&&(0===i?(e.removeChild(r),n.el=null):tf(r,i))},Cf._resetDefs=function(){var t=this._defs;t.gradient={},t.clipping={}},Cf.dirty=function(t){t.dirty!==this._dirtyID&&(t.dirty=this._dirtyID,this._dirty.push(t))},Cf.isDirty=function(t){return this._dirtyAll||!t._svg||t.dirty===this._dirtyID},Cf._dirtyCheck=function(){this._dirtyAll=!0;var t=this._dirty;if(!t.length)return!0;var e,n,r,i,o,a,u,s=++this._dirtyID;for(o=0,a=t.length;o<a;++o)(n=(e=t[o]).mark).marktype!==r&&(r=n.marktype,i=Ul[r]),n.zdirty&&n.dirty!==s&&(this._dirtyAll=!1,Nf(e,s),n.items.forEach(function(t){t.dirty=s})),n.zdirty||(e.exit?(i.nested&&n.items.length?(u=n.items[0])._svg&&this._update(i,u._svg,u):e._svg&&(u=e._svg.parentNode)&&u.removeChild(e._svg),e._svg=null):(e=i.nested?n.items[0]:e)._update!==s&&(e._svg&&e._svg.ownerSVGElement?this._update(i,e._svg,e):(this._dirtyAll=!1,Nf(e,s)),e._update=s));return!this._dirtyAll},Cf.draw=function(t,e,n){if(!this.isDirty(e))return e._svg;var r,i=this,o=this._svg,a=Ul[e.marktype],u=!1===e.interactive?"none":null,s="g"===a.tag,c=null,l=0;function f(t){var e=i.isDirty(t),n=zf(t,r,c,a.tag,o);e&&(i._update(a,n,t),s&&function(t,e,n){e=e.lastChild;var r,i=0;Hc(n,function(n){r=t.draw(e,n,r),++i}),tf(e,1+i)}(i,n,t)),c=n,++l}return(r=zf(e,t,n,"g",o)).setAttribute("class",ef(e)),s||r.style.setProperty("pointer-events",u),e.clip?r.setAttribute("clip-path",ul(i,e,e.group)):r.removeAttribute("clip-path"),a.nested?e.items.length&&f(e.items[0]):Hc(e,f),tf(r,l),r};var Tf=null,$f=null,Rf={group:function(t,e,n){$f=e.__values__,Tf=e.childNodes[1],t.foreground(Pf,n,this),Tf=e.childNodes[0],t.background(Pf,n,this);var r=!1===n.mark.interactive?"none":null;r!==$f.events&&(Tf.style.setProperty("pointer-events",r),$f.events=r)},text:function(t,e,n){var r;(r=Nl(n))!==$f.text&&(e.textContent=r,$f.text=r),Bf(e,"font-family",zl(n)),Bf(e,"font-size",Dl(n)+"px"),Bf(e,"font-style",n.fontStyle),Bf(e,"font-variant",n.fontVariant),Bf(e,"font-weight",n.fontWeight)}};function Bf(t,e,n){n!==$f[e]&&(null==n?t.style.removeProperty(e):t.style.setProperty(e,n+""),$f[e]=n)}function Pf(t,e,n){e!==$f[t]&&(null!=e?n?Tf.setAttributeNS(n,t,e):Tf.setAttribute(t,e):n?Tf.removeAttributeNS(n,t):Tf.removeAttribute(t),$f[t]=e)}function Lf(){var t;return"undefined"==typeof window?"":(t=window.location).hash?t.href.slice(0,-t.hash.length):t.href}function Uf(t){uf.call(this,t),this._text={head:"",bg:"",root:"",foot:"",defs:"",body:""},this._defs={gradient:{},clipping:{}}}Cf._update=function(t,e,n){Tf=e,$f=e.__values__,t.attr(Pf,n,this);var r=Rf[t.type];r&&r.call(this,t,e,n),this.style(Tf,n)},Cf.style=function(t,e){var n,r,i,o,a;if(null!=e)for(n=0,r=Ef.length;n<r;++n)a=e[i=Ef[n]],"font"===i&&(a=zl(e)),a!==$f[i]&&(o=Af[i],null==a?"fill"===o?t.style.setProperty(o,"none"):t.style.removeProperty(o):(mu(a)&&(a=vu(a,this._defs.gradient,Lf())),t.style.setProperty(o,a+"")),$f[i]=a)};var qf,If=Object(ct.x)(Uf,uf),Wf=uf.prototype;function Hf(t,e,n,r){qf[r||t]=e}function Gf(t,e,n,r){if(null==t)return"";var i,o,a,u,s,c="";for("bgrect"===n&&!1===e.interactive&&(c+="pointer-events: none; "),"text"===n&&(c+="font-family: "+zl(t)+"; ",c+="font-size: "+Dl(t)+"px; ",t.fontStyle&&(c+="font-style: "+t.fontStyle+"; "),t.fontVariant&&(c+="font-variant: "+t.fontVariant+"; "),t.fontWeight&&(c+="font-weight: "+t.fontWeight+"; ")),i=0,o=Ef.length;i<o;++i)a=Ef[i],u=Af[a],null==(s=t[a])?"fill"===u&&(c+="fill: none; "):"transparent"!==s||"fill"!==u&&"stroke"!==u?(mu(s)&&(s=vu(s,r.gradient,"")),c+=u+": "+s+"; "):c+=u+": none; ";return c?'style="'+c.trim()+'"':null}If.resize=function(t,e,n,r){Wf.resize.call(this,t,e,n,r);var i=this._origin,o=this._text,a={class:"marks",width:this._width*this._scale,height:this._height*this._scale,viewBox:"0 0 "+this._width+" "+this._height};for(var u in kf)a[u]=kf[u];o.head=wf("svg",a);var s=this._bgcolor;return"transparent"!==s&&"none"!==s||(s=null),o.bg=s?wf("rect",{width:this._width,height:this._height,style:"fill: "+s+";"})+Of("rect"):"",o.root=wf("g",{transform:"translate("+i+")"}),o.foot=Of("g")+Of("svg"),this},If.background=function(){var t=Wf.background.apply(this,arguments);return arguments.length&&this._text.head&&this.resize(this._width,this._height,this._origin,this._scale),t},If.svg=function(){var t=this._text;return t.head+t.bg+t.defs+t.root+t.body+t.foot},If._render=function(t){return this._text.body=this.mark(t),this._text.defs=this.buildDefs(),this},If.buildDefs=function(){var t,e,n,r,i,o=this._defs,a="";for(e in o.gradient){for(i=(n=o.gradient[e]).stops,"radial"===n.gradient?(a+=wf(r="pattern",{id:gu+e,viewBox:"0,0,1,1",width:"100%",height:"100%",preserveAspectRatio:"xMidYMid slice"}),a+=wf("rect",{width:"1",height:"1",fill:"url(#"+e+")"})+Of("rect"),a+=Of(r),a+=wf(r="radialGradient",{id:e,fx:n.x1,fy:n.y1,fr:n.r1,cx:n.x2,cy:n.y2,r:n.r2})):a+=wf(r="linearGradient",{id:e,x1:n.x1,x2:n.x2,y1:n.y1,y2:n.y2}),t=0;t<i.length;++t)a+=wf("stop",{offset:i[t].offset,"stop-color":i[t].color})+Of("stop");a+=Of(r)}for(e in o.clipping)n=o.clipping[e],a+=wf("clipPath",{id:e}),n.path?a+=wf("path",{d:n.path})+Of("path"):a+=wf("rect",{x:0,y:0,width:n.width,height:n.height})+Of("rect"),a+=Of("clipPath");return a.length>0?wf("defs")+a+Of("defs"):""},If.attributes=function(t,e){return qf={},t(Hf,e,this),qf},If.href=function(t){var e,n=this,r=t.href;if(r){if(e=n._hrefs&&n._hrefs[r])return e;n.sanitizeURL(r).then(function(t){t["xlink:href"]=t.href,t.href=null,(n._hrefs||(n._hrefs={}))[r]=t})}return null},If.mark=function(t){var e,n=this,r=Ul[t.marktype],i=r.tag,o=this._defs,a="";function u(u){var s=n.href(u);s&&(a+=wf("a",s)),e="g"!==i?Gf(u,t,i,o):null,a+=wf(i,n.attributes(r.attr,u),e),"text"===i?a+=Nl(u).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"):"g"===i&&(a+=wf("path",n.attributes(r.background,u),Gf(u,t,"bgrect",o))+Of("path"),a+=wf("g",n.attributes(r.foreground,u))+n.markGroup(u)+Of("g")),a+=Of(i),s&&(a+=Of("a"))}return"g"!==i&&!1===t.interactive&&(e='style="pointer-events: none;"'),a+=wf("g",{class:ef(t),"clip-path":t.clip?ul(n,t,t.group):null},e),r.nested?t.items&&t.items.length&&u(t.items[0]):Hc(t,u),a+Of("g")},If.markGroup=function(t){var e=this,n="";return Hc(t,function(t){n+=e.mark(t)}),n};var Yf={Canvas:"canvas",PNG:"png",SVG:"svg",None:"none"},Vf={};function Xf(t,e){return t=String(t||"").toLowerCase(),arguments.length>1?(Vf[t]=e,this):Vf[t]}function Jf(t,e,n){const r=[],i=(new hu).union(e),o=t.marktype;return o?Zf(t,i,n,r):"group"===o?Qf(t,i,n,r):Object(ct.n)("Intersect scene must be mark node or group item.")}function Zf(t,e,n,r){if(function(t,e,n){return t.bounds&&e.intersects(t.bounds)&&("group"===t.marktype||!1!==t.interactive&&(!n||n(t)))}(t,e,n)){const i=t.items,o=t.marktype,a=i.length;let u=0;if("group"===o)for(;u<a;++u)Qf(i[u],e,n,r);else for(const t=Ul[o].isect;u<a;++u){let n=i[u];Kf(n,e,t)&&r.push(n)}}return r}function Qf(t,e,n,r){n&&n(t.mark)&&Kf(t,e,Ul.group.isect)&&r.push(t);const i=t.items,o=i&&i.length;if(o){const a=t.x||0,u=t.y||0;e.translate(-a,-u);for(let t=0;t<o;++t)Zf(i[t],e,n,r);e.translate(a,u)}return r}function Kf(t,e,n){const r=t.bounds;return e.encloses(r)||e.intersects(r)&&n(t,e)}Vf.canvas=Vf.png={renderer:gf,headless:gf,handler:lf},Vf.svg={renderer:Sf,headless:Uf,handler:bf},Vf.none={};var th=new hu,eh=function(t){var e=t.clip;if(Object(ct.C)(e))e(Cc(th.clear()));else{if(!e)return;th.set(0,0,t.group.width,t.group.height)}t.bounds.intersect(th)},nh=1e-9;function rh(t,e,n){return t===e||("path"===n?ih(t,e):t instanceof Date&&e instanceof Date?+t==+e:Object(ct.D)(t)&&Object(ct.D)(e)?Math.abs(t-e)<=nh:t&&e&&(Object(ct.E)(t)||Object(ct.E)(e))?null!=t&&null!=e&&function(t,e){var n,r,i=Object.keys(t),o=Object.keys(e);if(i.length!==o.length)return!1;for(i.sort(),o.sort(),r=i.length-1;r>=0;r--)if(i[r]!=o[r])return!1;for(r=i.length-1;r>=0;r--)if(n=i[r],!rh(t[n],e[n],n))return!1;return typeof t==typeof e}(t,e):t==e)}function ih(t,e){return rh(Hs(t),Hs(e))}function oh(t){ei.call(this,null,t)}function ah(t,e,n){return e(t.bounds.clear(),t,n)}Object(ct.x)(oh,ei).transform=function(t,e){var n,r=e.dataflow,i=t.mark,o=i.marktype,a=Ul[o],u=a.bound,s=i.bounds;return a.nested?(i.items.length&&r.dirty(i.items[0]),s=ah(i,u),i.items.forEach(function(t){t.bounds.clear().union(s)})):o===qa||t.modified()?(e.visit(e.MOD,function(t){r.dirty(t)}),s.clear(),i.items.forEach(function(t){s.union(ah(t,u))}),i.role===Ya&&e.reflow()):(n=e.changed(e.REM),e.visit(e.ADD,function(t){s.union(ah(t,u))}),e.visit(e.MOD,function(t){n=n||s.alignsWith(t.bounds),r.dirty(t),s.union(ah(t,u))}),n&&(s.clear(),i.items.forEach(function(t){s.union(t.bounds)}))),eh(i),e.modifies("bounds")};var uh=":vega_identifier:";function sh(t){ei.call(this,0,t)}function ch(t){ei.call(this,null,t)}function lh(t){ei.call(this,null,t)}sh.Definition={type:"Identifier",metadata:{modifies:!0},params:[{name:"as",type:"string",required:!0}]},Object(ct.x)(sh,ei).transform=function(t,e){var n=function(t){var e=t._signals[uh];e||(t._signals[uh]=e=t.add(0));return e}(e.dataflow),r=n.value,i=t.as;return e.visit(e.ADD,function(t){t[i]||(t[i]=++r)}),n.set(this.value=r),e},Object(ct.x)(ch,ei).transform=function(t,e){var n=this.value;n||((n=e.dataflow.scenegraph().mark(t.markdef,function(t){var e=t.groups,n=t.parent;return e&&1===e.size?e.get(Object.keys(e.object)[0]):e&&n?e.lookup(n):null}(t),t.index)).group.context=t.context,t.context.group||(t.context.group=n.group),n.source=this,n.clip=t.clip,n.interactive=t.interactive,this.value=n);var r=n.marktype===qa?_u:xu;return e.visit(e.ADD,function(t){r.call(t,n)}),(t.modified("clip")||t.modified("interactive"))&&(n.clip=t.clip,n.interactive=!!t.interactive,n.zdirty=!0,e.reflow()),n.items=e.source,e};var fh=Object(ct.x)(lh,ei),hh={parity:function(t){return t.filter((t,e)=>e%2?t.opacity=0:1)},greedy:function(t,e){var n;return t.filter((t,r)=>r&&dh(n.bounds,t.bounds,e)?t.opacity=0:(n=t,1))}};function dh(t,e,n){return n>Math.max(e.x1-t.x2,t.x1-e.x2,e.y1-t.y2,t.y1-e.y2)}function ph(t,e){for(var n,r=1,i=t.length,o=t[0].bounds;r<i;o=n,++r)if(dh(o,n=t[r].bounds,e))return!0}function gh(t){var e=t.bounds;return e.width()>1&&e.height()>1}function mh(t){return t.forEach(t=>t.opacity=1),t}function vh(t,e){return t.reflow(e.modified()).modifies("opacity")}function yh(t){ei.call(this,null,t)}fh.transform=function(t,e){var n,r,i,o=hh[t.method]||hh.parity,a=e.materialize(e.SOURCE).source,u=t.separation||0;if(a&&a.length){if(!t.method)return t.modified("method")&&(mh(a),e=vh(e,t)),e;if(t.sort&&(a=a.slice().sort(t.sort)),n=mh(a=a.filter(gh)),e=vh(e,t),n.length>=3&&ph(n,u)){do{n=o(n,u)}while(n.length>=3&&ph(n,u));n.length<3&&!Object(ct.R)(a).opacity&&(n.length>1&&(Object(ct.R)(n).opacity=0),Object(ct.R)(a).opacity=1)}var s,c,l,f,h;return t.boundScale&&t.boundTolerance>=0&&(s=t.boundScale,c=t.boundOrient,l=+t.boundTolerance,f=s.range(),h=new hu,c===Ca||c===Fa?h.set(f[0],-1/0,f[1],1/0):h.set(-1/0,f[0],1/0,f[1]),h.expand(l||1),r=t=>h.encloses(t.bounds),a.forEach(t=>{r(t)||(t.opacity=0)})),i=n[0].mark.bounds.clear(),a.forEach(t=>{t.opacity&&i.union(t.bounds)}),e}},Object(ct.x)(yh,ei).transform=function(t,e){var n=e.dataflow;if(e.visit(e.ALL,function(t){n.dirty(t)}),e.fields&&e.fields.zindex){var r=e.source&&e.source[0];r&&(r.mark.zdirty=!0)}};const bh=new hu;function xh(t,e,n){return t[e]===n?0:(t[e]=n,1)}const _h=.5;function wh(t){var e=t.items[0].datum.orient;return e===Ma||e===Da}function Oh(t,e,n,r){var i,o,a=e.items[0],u=a.datum,s=u.orient,c=function(t){var e=+t.grid;return[t.ticks?e++:-1,t.labels?e++:-1,e+ +t.domain]}(u),l=a.range,f=a.offset,h=a.position,d=a.minExtent,p=a.maxExtent,g=u.title&&a.items[c[2]].items[0],m=a.titlePadding,v=a.bounds,y=0,b=0;switch(bh.clear().union(v),v.clear(),(i=c[0])>-1&&v.union(a.items[i].bounds),(i=c[1])>-1&&v.union(a.items[i].bounds),s){case Ca:y=h||0,b=-f,o=Math.max(d,Math.min(p,-v.y1)),g&&(o=kh(g,o,m,0,-1,v)),v.add(0,-o).add(l,0);break;case Ma:y=-f,b=h||0,o=Math.max(d,Math.min(p,-v.x1)),g&&(o=kh(g,o,m,1,-1,v)),v.add(-o,0).add(0,l);break;case Da:y=n+f,b=h||0,o=Math.max(d,Math.min(p,v.x2)),g&&(o=kh(g,o,m,1,1,v)),v.add(0,0).add(o,l);break;case Fa:y=h||0,b=r+f,o=Math.max(d,Math.min(p,v.y2)),g&&(o=kh(g,o,m,0,1,v)),v.add(0,0).add(l,o);break;default:y=a.x,b=a.y}return jc(v.translate(y,b),a),xh(a,"x",y+_h)|xh(a,"y",b+_h)&&(a.bounds=bh,t.dirty(a),a.bounds=v,t.dirty(a)),a.mark.bounds.clear().union(v)}function kh(t,e,n,r,i,o){var a=t.bounds,u=0,s=0;return t.auto?(e+=n,r?u=(t.x||0)-(t.x=i*e):s=(t.y||0)-(t.y=i*e),a.translate(-u,-s),t.mark.bounds.set(a.x1,a.y1,a.x2,a.y2),r?(o.add(0,a.y1).add(0,a.y2),e+=a.width()):(o.add(a.x1,0).add(a.x2,0),e+=a.height())):o.union(a),e}function Ah(t){return(new hu).set(0,0,t.width||0,t.height||0)}function Eh(t){var e=t.bounds.clone();return e.empty()?e.set(0,0,0,0):e.translate(-(t.x||0),-(t.y||0))}function jh(t,e,n){var r=Object(ct.E)(t)?t[e]:t;return null!=r?r:void 0!==n?n:0}function Sh(t){return t<0?Math.ceil(-t):0}function Ch(t,e,n){var r,i,o,a,u,s,c,l,f,h,d,p=!n.nodirty,g=n.bounds===cu?Ah:Eh,m=bh.set(0,0,0,0),v=jh(n.align,lu),y=jh(n.align,fu),b=jh(n.padding,lu),x=jh(n.padding,fu),_=n.columns||e.length,w=_<0?1:Math.ceil(e.length/_),O=e.length,k=Array(O),A=Array(_),E=0,j=Array(O),S=Array(w),C=0,M=Array(O),D=Array(O),F=Array(O);for(i=0;i<_;++i)A[i]=0;for(i=0;i<w;++i)S[i]=0;for(i=0;i<O;++i)s=e[i],u=F[i]=g(s),s.x=s.x||0,M[i]=0,s.y=s.y||0,D[i]=0,o=i%_,a=~~(i/_),E=Math.max(E,c=Math.ceil(u.x2)),C=Math.max(C,l=Math.ceil(u.y2)),A[o]=Math.max(A[o],c),S[a]=Math.max(S[a],l),k[i]=b+Sh(u.x1),j[i]=x+Sh(u.y1),p&&t.dirty(e[i]);for(i=0;i<O;++i)i%_==0&&(k[i]=0),i<_&&(j[i]=0);if(v===su)for(o=1;o<_;++o){for(d=0,i=o;i<O;i+=_)d<k[i]&&(d=k[i]);for(i=o;i<O;i+=_)k[i]=d+A[o-1]}else if(v===uu){for(d=0,i=0;i<O;++i)i%_&&d<k[i]&&(d=k[i]);for(i=0;i<O;++i)i%_&&(k[i]=d+E)}else for(v=!1,o=1;o<_;++o)for(i=o;i<O;i+=_)k[i]+=A[o-1];if(y===su)for(a=1;a<w;++a){for(d=0,r=(i=a*_)+_;i<r;++i)d<j[i]&&(d=j[i]);for(i=a*_;i<r;++i)j[i]=d+S[a-1]}else if(y===uu){for(d=0,i=_;i<O;++i)d<j[i]&&(d=j[i]);for(i=_;i<O;++i)j[i]=d+C}else for(y=!1,a=1;a<w;++a)for(r=(i=a*_)+_;i<r;++i)j[i]+=S[a-1];for(f=0,i=0;i<O;++i)f=k[i]+(i%_?f:0),M[i]+=f-e[i].x;for(o=0;o<_;++o)for(h=0,i=o;i<O;i+=_)h+=j[i],D[i]+=h-e[i].y;if(v&&jh(n.center,lu)&&w>1)for(i=0;i<O;++i)(f=(u=v===uu?E:A[i%_])-F[i].x2-e[i].x-M[i])>0&&(M[i]+=f/2);if(y&&jh(n.center,fu)&&1!==_)for(i=0;i<O;++i)(h=(u=y===uu?C:S[~~(i/_)])-F[i].y2-e[i].y-D[i])>0&&(D[i]+=h/2);for(i=0;i<O;++i)m.union(F[i].translate(M[i],D[i]));switch(f=jh(n.anchor,La),h=jh(n.anchor,Ua),jh(n.anchor,lu)){case Pa:f-=m.width();break;case Ba:f-=m.width()/2}switch(jh(n.anchor,fu)){case Pa:h-=m.height();break;case Ba:h-=m.height()/2}for(f=Math.round(f),h=Math.round(h),m.clear(),i=0;i<O;++i)e[i].mark.bounds.clear();for(i=0;i<O;++i)(s=e[i]).x+=M[i]+=f,s.y+=D[i]+=h,m.union(s.mark.bounds.union(s.bounds.translate(M[i],D[i]))),p&&t.dirty(s);return m}function Mh(t,e,n){var r,i,o,a,u,s,c,l=function(t){for(var e,n,r=t.items,i=r.length,o=0,a={marks:[],rowheaders:[],rowfooters:[],colheaders:[],colfooters:[],rowtitle:null,coltitle:null};o<i;++o)if(n=(e=r[o]).items,e.marktype===qa)switch(e.role){case Ia:case Ya:break;case Va:a.rowheaders.push(...n);break;case Xa:a.rowfooters.push(...n);break;case Za:a.colheaders.push(...n);break;case Qa:a.colfooters.push(...n);break;case Ja:a.rowtitle=n[0];break;case Ka:a.coltitle=n[0];break;default:a.marks.push(...n)}return a}(e),f=l.marks,h=n.bounds===cu?Dh:Fh,d=n.offset,p=n.columns||f.length,g=p<0?1:Math.ceil(f.length/p),m=g*p;const v=Ch(t,f,n);l.rowheaders&&(s=jh(n.headerBand,fu,null),r=Th(t,l.rowheaders,f,p,g,-jh(d,"rowHeader"),Nh,0,h,"x1",0,p,1,s)),l.colheaders&&(s=jh(n.headerBand,lu,null),i=Th(t,l.colheaders,f,p,p,-jh(d,"columnHeader"),Nh,1,h,"y1",0,1,p,s)),l.rowfooters&&(s=jh(n.footerBand,fu,null),o=Th(t,l.rowfooters,f,p,g,jh(d,"rowFooter"),zh,0,h,"x2",p-1,p,1,s)),l.colfooters&&(s=jh(n.footerBand,lu,null),a=Th(t,l.colfooters,f,p,p,jh(d,"columnFooter"),zh,1,h,"y2",m-p,1,p,s)),l.rowtitle&&(u=jh(n.titleAnchor,fu),c=jh(d,"rowTitle"),c=u===Pa?o+c:r-c,s=jh(n.titleBand,fu,.5),$h(t,l.rowtitle,c,0,v,s)),l.coltitle&&(u=jh(n.titleAnchor,lu),c=jh(d,"columnTitle"),c=u===Pa?a+c:i-c,s=jh(n.titleBand,lu,.5),$h(t,l.coltitle,c,1,v,s))}function Dh(t,e){return"x1"===e?t.x||0:"y1"===e?t.y||0:"x2"===e?(t.x||0)+(t.width||0):"y2"===e?(t.y||0)+(t.height||0):void 0}function Fh(t,e){return t.bounds[e]}function Nh(t,e){return Math.floor(Math.min(t,e))}function zh(t,e){return Math.ceil(Math.max(t,e))}function Th(t,e,n,r,i,o,a,u,s,c,l,f,h,d){var p,g,m,v,y,b,x,_,w,O=n.length,k=0,A=0;if(!O)return k;for(p=l;p<O;p+=f)n[p]&&(k=a(k,s(n[p],c)));if(!e.length)return k;for(e.length>i&&(t.warn("Grid headers exceed limit: "+i),e=e.slice(0,i)),k+=o,g=0,v=e.length;g<v;++g)t.dirty(e[g]),e[g].mark.bounds.clear();for(p=l,g=0,v=e.length;g<v;++g,p+=f){for(y=(b=e[g]).mark.bounds,m=p;m>=0&&null==(x=n[m]);m-=h);u?(_=null==d?x.x:Math.round(x.bounds.x1+d*x.bounds.width()),w=k):(_=k,w=null==d?x.y:Math.round(x.bounds.y1+d*x.bounds.height())),y.union(b.bounds.translate(_-(b.x||0),w-(b.y||0))),b.x=_,b.y=w,t.dirty(b),A=a(A,y[c])}return A}function $h(t,e,n,r,i,o){if(e){t.dirty(e);var a=n,u=n;r?a=Math.round(i.x1+o*i.width()):u=Math.round(i.y1+o*i.height()),e.bounds.translate(a-(e.x||0),u-(e.y||0)),e.mark.bounds.clear().union(e.bounds),e.x=a,e.y=u,t.dirty(e)}}function Rh(t,e,n,r,i,o,a){const u=function(t,e){const n=t[e]||{};return(e,r)=>null!=n[e]?n[e]:null!=t[e]?t[e]:r}(n,e),s=(f=t,h=u("offset",0),d=-1/0,f.forEach(t=>{null!=t.offset&&(d=Math.max(d,t.offset))}),d>-1/0?d:h),c=u("anchor",Ra),l=c===Pa?1:c===Ba?.5:0;var f,h,d;const p={align:su,bounds:u("bounds",cu),columns:"vertical"===u("direction")?1:t.length,padding:u("margin",8),center:u("center"),nodirty:!0};switch(e){case Ma:p.anchor={x:Math.floor(r.x1)-s,column:Pa,y:l*(a||r.height()+2*r.y1),row:c};break;case Da:p.anchor={x:Math.ceil(r.x2)+s,y:l*(a||r.height()+2*r.y1),row:c};break;case Ca:p.anchor={y:Math.floor(i.y1)-s,row:Pa,x:l*(o||i.width()+2*i.x1),column:c};break;case Fa:p.anchor={y:Math.ceil(i.y2)+s,x:l*(o||i.width()+2*i.x1),column:c};break;case Na:p.anchor={x:s,y:s};break;case za:p.anchor={x:o-s,y:s,column:Pa};break;case Ta:p.anchor={x:s,y:a-s,row:Pa};break;case $a:p.anchor={x:o-s,y:a-s,column:Pa,row:Pa}}return p}function Bh(t,e){var n,r,i,o,a=e.items[0],u=a.datum,s=a.orient,c=a.bounds,l=a.x,f=a.y;return a._bounds?a._bounds.clear().union(c):a._bounds=c.clone(),c.clear(),function(t,e,n){var r=e.padding,i=r-n.x,o=r-n.y;if(e.datum.title){var a=e.items[1].items[0],u=a.anchor,s=e.titlePadding||0,c=r-a.x,l=r-a.y;switch(a.orient){case Ma:i+=Math.ceil(a.bounds.width())+s;break;case Da:case Fa:break;default:o+=a.fontSize+s}switch((i||o)&&Lh(t,n,i,o),a.orient){case Ma:l+=Ph(e,n,a,u,0,1);break;case Da:c+=Ph(e,n,a,Pa,1,0)+s,l+=Ph(e,n,a,u,0,1);break;case Fa:c+=Ph(e,n,a,u,1,0),l+=Ph(e,n,a,Pa,0,0,1)+s;break;default:c+=Ph(e,n,a,u,1,0)}(c||l)&&Lh(t,a,c,l),(c=Math.round(a.bounds.x1-r))<0&&(Lh(t,n,-c,0),Lh(t,a,-c,0))}else(i||o)&&Lh(t,n,i,o)}(t,a,a.items[0].items[0]),c=function(t,e){return t.items.forEach(t=>e.union(t.bounds)),e.x1=t.padding,e.y1=t.padding,e}(a,c),n=2*a.padding,r=2*a.padding,c.empty()||(n=Math.ceil(c.width()+n),r=Math.ceil(c.height()+r)),u.type===eu&&(i=a.items[0].items[0].items[0].items,o=i.reduce(function(t,e){return t[e.column]=Math.max(e.bounds.x2-e.x,t[e.column]||0),t},{}),i.forEach(function(t){t.width=o[t.column],t.height=t.bounds.y2-t.y})),s!==au&&(a.x=l=0,a.y=f=0),a.width=n,a.height=r,jc(c.set(l,f,l+n,f+r),a),a.mark.bounds.clear().union(c),a}function Ph(t,e,n,r,i,o,a){const u="symbol"!==t.datum.type,s=n.datum.vgrad,c=(!u||!o&&s||a?e:e.items[0]).bounds[i?"x2":"y2"]-t.padding,l=s&&o?c:0,f=s&&o?0:c;return Math.round(r===Ra?l:r===Pa?f:.5*c)}function Lh(t,e,n,r){e.x+=n,e.y+=r,e.bounds.translate(n,r),e.mark.bounds.translate(n,r),t.dirty(e)}function Uh(t){ei.call(this,null,t)}Object(ct.x)(Uh,ei).transform=function(t,e){var n=e.dataflow;return t.mark.items.forEach(function(e){t.layout&&Mh(n,e,t.layout),function(t,e,n){var r,i,o,a,u,s=e.items,c=Math.max(0,e.width||0),l=Math.max(0,e.height||0),f=(new hu).set(0,0,c,l),h=f.clone(),d=f.clone(),p=[];for(a=0,u=s.length;a<u;++a)switch((i=s[a]).role){case Ia:(wh(i)?h:d).union(Oh(t,i,c,l));break;case Wa:r=i;break;case Ya:p.push(Bh(t,i));break;case Ha:case Ga:case Va:case Xa:case Ja:case Za:case Qa:case Ka:h.union(i.bounds),d.union(i.bounds);break;default:f.union(i.bounds)}if(p.length){const e={};p.forEach(t=>{(o=t.orient||Da)!==au&&(e[o]||(e[o]=[])).push(t)});for(let r in e){const i=e[r];Ch(t,i,Rh(i,r,n.legends,h,d,c,l))}p.forEach(e=>{const r=e.bounds;if(r.equals(e._bounds)||(e.bounds=e._bounds,t.dirty(e),e.bounds=r,t.dirty(e)),n.autosize&&n.autosize.type===nu)switch(e.orient){case Ma:case Da:f.add(r.x1,0).add(r.x2,0);break;case Ca:case Fa:f.add(0,r.y1).add(0,r.y2)}else f.union(r)})}f.union(h).union(d),r&&f.union(function(t,e,n,r,i){var o,a=e.items[0],u=a.frame,s=a.orient,c=a.anchor,l=a.offset,f=a.bounds,h=0,d=s===Ma||s===Da?r:n,p=0,g=0;switch(u!==qa?s===Ma?(h=i.y2,d=i.y1):s===Da?(h=i.y1,d=i.y2):(h=i.x1,d=i.x2):s===Ma&&(h=r,d=0),o=c===Ra?h:c===Pa?d:(h+d)/2,bh.clear().union(f),s){case Ca:p=o,g=i.y1-l;break;case Ma:p=i.x1-l,g=o;break;case Da:p=i.x2+l,g=o;break;case Fa:p=o,g=i.y2+l;break;default:p=a.x,g=a.y}return f.translate(p-(a.x||0),g-(a.y||0)),xh(a,"x",p)|xh(a,"y",g)&&(a.bounds=bh,t.dirty(a),a.bounds=f,t.dirty(a)),e.bounds.clear().union(f)}(t,r,c,l,f));!function(t,e,n,r){var i=r.autosize||{},o=i.type,a=t._width,u=t._height,s=t.padding();if(t._autosize<1||!o)return;var c=Math.max(0,e.width||0),l=Math.max(0,Math.ceil(-n.x1)),f=Math.max(0,Math.ceil(n.x2-c)),h=Math.max(0,e.height||0),d=Math.max(0,Math.ceil(-n.y1)),p=Math.max(0,Math.ceil(n.y2-h));i.contains===tu&&(a-=s.left+s.right,u-=s.top+s.bottom);o===au?(l=0,d=0,c=a,h=u):o===nu?(c=Math.max(0,a-l-f),h=Math.max(0,u-d-p)):o===ru?(c=Math.max(0,a-l-f),u=h+d+p):o===iu?(a=c+l+f,h=Math.max(0,u-d-p)):o===ou&&(a=c+l+f,u=h+d+p);t._resizeView(a,u,c,h,[l,d],i.resize)}(t,e,f,n)}(n,e,t)}),t.modified()&&e.reflow(),e};var qh=function(t,e,n){var r=t-e+2*n;return t?r>0?r:1:0};const Ih="identity",Wh="linear",Hh="log",Gh="pow",Yh="sqrt",Vh="symlog",Xh="time",Jh="utc",Zh="sequential",Qh="diverging",Kh="quantile",td="quantize",ed="threshold",nd="ordinal",rd="point",id="band",od="bin-ordinal";function ad(t){return t===Kh}function ud(t){return function(t){return t&&t.startsWith(Zh)}(t)||function(t){return t&&t.startsWith(Qh)}(t)}function sd(t){return t===Hh||t.endsWith("-log")}function cd(t){switch(t){case Wh:case Hh:case Gh:case Yh:case Vh:case Xh:case Jh:case Zh:return!0}return!1}function ld(t){return t===od||t===nd||t===id||t===rd}function fd(t){return t===od||t===Kh||t===td||t===ed}var hd={millisecond:je,second:De,minute:Ne,hour:Te,day:Re,week:Pe,month:Ye,year:Xe},dd={millisecond:je,second:De,minute:Ze,hour:Ke,day:en,week:rn,month:hn,year:pn};function pd(t,e){const n=e===Jh?dd:hd;return n.hasOwnProperty(t)&&n[t]}var gd=function(t){return function(e){var n,r=e[0],i=e[1];return i<r&&(n=r,r=i,i=n),[t.invert(r),t.invert(i)]}},md=function(t){return function(e){var n,r,i,o,a=t.range(),u=e[0],s=e[1],c=-1;for(s<u&&(r=u,u=s,s=r),i=0,o=a.length;i<o;++i)a[i]>=u&&a[i]<=s&&(c<0&&(c=i),n=i);if(!(c<0))return u=t.invertExtent(a[c]),s=t.invertExtent(a[n]),[void 0===u[0]?u[1]:u[0],void 0===s[1]?s[0]:s[1]]}};function vd(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}function yd(t,e){switch(arguments.length){case 0:break;case 1:this.interpolator(t);break;default:this.interpolator(e).domain(t)}return this}const bd=Symbol("implicit");function xd(){var t=new Map,e=[],n=[],r=bd;function i(i){var o=i+"",a=t.get(o);if(!a){if(r!==bd)return r;t.set(o,a=e.push(i))}return n[(a-1)%n.length]}return i.domain=function(n){if(!arguments.length)return e.slice();e=[],t=new Map;for(const r of n){const n=r+"";t.has(n)||t.set(n,e.push(r))}return i},i.range=function(t){return arguments.length?(n=Array.from(t),i):n.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return xd(e,n).unknown(r)},vd.apply(i,arguments),i}var _d=function(t,e,n){t.prototype=e.prototype=n,n.constructor=t};function wd(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Od(){}var kd="\\s*([+-]?\\d+)\\s*",Ad="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",Ed="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",jd=/^#([0-9a-f]{3})$/,Sd=/^#([0-9a-f]{6})$/,Cd=new RegExp("^rgb\\("+[kd,kd,kd]+"\\)$"),Md=new RegExp("^rgb\\("+[Ed,Ed,Ed]+"\\)$"),Dd=new RegExp("^rgba\\("+[kd,kd,kd,Ad]+"\\)$"),Fd=new RegExp("^rgba\\("+[Ed,Ed,Ed,Ad]+"\\)$"),Nd=new RegExp("^hsl\\("+[Ad,Ed,Ed]+"\\)$"),zd=new RegExp("^hsla\\("+[Ad,Ed,Ed,Ad]+"\\)$"),Td={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function $d(t){var e;return t=(t+"").trim().toLowerCase(),(e=jd.exec(t))?new Ud((e=parseInt(e[1],16))>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):(e=Sd.exec(t))?Rd(parseInt(e[1],16)):(e=Cd.exec(t))?new Ud(e[1],e[2],e[3],1):(e=Md.exec(t))?new Ud(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Dd.exec(t))?Bd(e[1],e[2],e[3],e[4]):(e=Fd.exec(t))?Bd(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Nd.exec(t))?Id(e[1],e[2]/100,e[3]/100,1):(e=zd.exec(t))?Id(e[1],e[2]/100,e[3]/100,e[4]):Td.hasOwnProperty(t)?Rd(Td[t]):"transparent"===t?new Ud(NaN,NaN,NaN,0):null}function Rd(t){return new Ud(t>>16&255,t>>8&255,255&t,1)}function Bd(t,e,n,r){return r<=0&&(t=e=n=NaN),new Ud(t,e,n,r)}function Pd(t){return t instanceof Od||(t=$d(t)),t?new Ud((t=t.rgb()).r,t.g,t.b,t.opacity):new Ud}function Ld(t,e,n,r){return 1===arguments.length?Pd(t):new Ud(t,e,n,null==r?1:r)}function Ud(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function qd(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Id(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Hd(t,e,n,r)}function Wd(t,e,n,r){return 1===arguments.length?function(t){if(t instanceof Hd)return new Hd(t.h,t.s,t.l,t.opacity);if(t instanceof Od||(t=$d(t)),!t)return new Hd;if(t instanceof Hd)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),a=NaN,u=o-i,s=(o+i)/2;return u?(a=e===o?(n-r)/u+6*(n<r):n===o?(r-e)/u+2:(e-n)/u+4,u/=s<.5?o+i:2-o-i,a*=60):u=s>0&&s<1?0:a,new Hd(a,u,s,t.opacity)}(t):new Hd(t,e,n,null==r?1:r)}function Hd(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function Gd(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}_d(Od,$d,{displayable:function(){return this.rgb().displayable()},hex:function(){return this.rgb().hex()},toString:function(){return this.rgb()+""}}),_d(Ud,Ld,wd(Od,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Ud(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Ud(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},hex:function(){return"#"+qd(this.r)+qd(this.g)+qd(this.b)},toString:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}})),_d(Hd,Wd,wd(Od,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Hd(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Hd(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new Ud(Gd(t>=240?t-240:t+120,i,r),Gd(t,i,r),Gd(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var Yd=Math.PI/180,Vd=180/Math.PI,Xd=.96422,Jd=1,Zd=.82521,Qd=4/29,Kd=6/29,tp=3*Kd*Kd,ep=Kd*Kd*Kd;function np(t){if(t instanceof ip)return new ip(t.l,t.a,t.b,t.opacity);if(t instanceof fp){if(isNaN(t.h))return new ip(t.l,0,0,t.opacity);var e=t.h*Yd;return new ip(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}t instanceof Ud||(t=Pd(t));var n,r,i=sp(t.r),o=sp(t.g),a=sp(t.b),u=op((.2225045*i+.7168786*o+.0606169*a)/Jd);return i===o&&o===a?n=r=u:(n=op((.4360747*i+.3850649*o+.1430804*a)/Xd),r=op((.0139322*i+.0971045*o+.7141733*a)/Zd)),new ip(116*u-16,500*(n-u),200*(u-r),t.opacity)}function rp(t,e,n,r){return 1===arguments.length?np(t):new ip(t,e,n,null==r?1:r)}function ip(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function op(t){return t>ep?Math.pow(t,1/3):t/tp+Qd}function ap(t){return t>Kd?t*t*t:tp*(t-Qd)}function up(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function sp(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function cp(t){if(t instanceof fp)return new fp(t.h,t.c,t.l,t.opacity);if(t instanceof ip||(t=np(t)),0===t.a&&0===t.b)return new fp(NaN,0,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Vd;return new fp(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function lp(t,e,n,r){return 1===arguments.length?cp(t):new fp(t,e,n,null==r?1:r)}function fp(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}_d(ip,rp,wd(Od,{brighter:function(t){return new ip(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new ip(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return new Ud(up(3.1338561*(e=Xd*ap(e))-1.6168667*(t=Jd*ap(t))-.4906146*(n=Zd*ap(n))),up(-.9787684*e+1.9161415*t+.033454*n),up(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}})),_d(fp,lp,wd(Od,{brighter:function(t){return new fp(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new fp(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return np(this).rgb()}}));var hp=-.29227,dp=-.90649,pp=1.97294,gp=pp*dp,mp=1.78277*pp,vp=1.78277*hp- -.14861*dp;function yp(t,e,n,r){return 1===arguments.length?function(t){if(t instanceof bp)return new bp(t.h,t.s,t.l,t.opacity);t instanceof Ud||(t=Pd(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(vp*r+gp*e-mp*n)/(vp+gp-mp),o=r-i,a=(pp*(n-i)-hp*o)/dp,u=Math.sqrt(a*a+o*o)/(pp*i*(1-i)),s=u?Math.atan2(a,o)*Vd-120:NaN;return new bp(s<0?s+360:s,u,i,t.opacity)}(t):new bp(t,e,n,null==r?1:r)}function bp(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function xp(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}_d(bp,yp,wd(Od,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new bp(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new bp(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Yd,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new Ud(255*(e+n*(-.14861*r+1.78277*i)),255*(e+n*(hp*r+dp*i)),255*(e+n*(pp*r)),this.opacity)}}));var _p=function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r<e-1?t[r+2]:2*o-i;return xp((n-r/e)*e,a,i,o,u)}},wp=function(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],a=t[(r+1)%e],u=t[(r+2)%e];return xp((n-r/e)*e,i,o,a,u)}},Op=function(t){return function(){return t}};function kp(t,e){return function(n){return t+n*e}}function Ap(t,e){var n=e-t;return n?kp(t,n>180||n<-180?n-360*Math.round(n/360):n):Op(isNaN(t)?e:t)}function Ep(t){return 1==(t=+t)?jp:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):Op(isNaN(e)?n:e)}}function jp(t,e){var n=e-t;return n?kp(t,n):Op(isNaN(t)?e:t)}var Sp=function t(e){var n=Ep(e);function r(t,e){var r=n((t=Ld(t)).r,(e=Ld(e)).r),i=n(t.g,e.g),o=n(t.b,e.b),a=jp(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=o(e),t.opacity=a(e),t+""}}return r.gamma=t,r}(1);function Cp(t){return function(e){var n,r,i=e.length,o=new Array(i),a=new Array(i),u=new Array(i);for(n=0;n<i;++n)r=Ld(e[n]),o[n]=r.r||0,a[n]=r.g||0,u[n]=r.b||0;return o=t(o),a=t(a),u=t(u),r.opacity=1,function(t){return r.r=o(t),r.g=a(t),r.b=u(t),r+""}}}var Mp=Cp(_p),Dp=Cp(wp),Fp=function(t,e){var n,r=e?e.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),a=new Array(r);for(n=0;n<i;++n)o[n]=Ip(t[n],e[n]);for(;n<r;++n)a[n]=e[n];return function(t){for(n=0;n<i;++n)a[n]=o[n](t);return a}},Np=function(t,e){var n=new Date;return e-=t=+t,function(r){return n.setTime(t+e*r),n}},zp=function(t,e){return e-=t=+t,function(n){return t+e*n}},Tp=function(t,e){var n,r={},i={};for(n in null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={}),e)n in t?r[n]=Ip(t[n],e[n]):i[n]=e[n];return function(t){for(n in r)i[n]=r[n](t);return i}},$p=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Rp=new RegExp($p.source,"g");var Bp,Pp,Lp,Up,qp=function(t,e){var n,r,i,o=$p.lastIndex=Rp.lastIndex=0,a=-1,u=[],s=[];for(t+="",e+="";(n=$p.exec(t))&&(r=Rp.exec(e));)(i=r.index)>o&&(i=e.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(n=n[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,s.push({i:a,x:zp(n,r)})),o=Rp.lastIndex;return o<e.length&&(i=e.slice(o),u[a]?u[a]+=i:u[++a]=i),u.length<2?s[0]?function(t){return function(e){return t(e)+""}}(s[0].x):function(t){return function(){return t}}(e):(e=s.length,function(t){for(var n,r=0;r<e;++r)u[(n=s[r]).i]=n.x(t);return u.join("")})},Ip=function(t,e){var n,r=typeof e;return null==e||"boolean"===r?Op(e):("number"===r?zp:"string"===r?(n=$d(e))?(e=n,Sp):qp:e instanceof $d?Sp:e instanceof Date?Np:Array.isArray(e)?Fp:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?Tp:zp)(t,e)},Wp=function(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}},Hp=function(t,e){var n=Ap(+t,+e);return function(t){var e=n(t);return e-360*Math.floor(e/360)}},Gp=function(t,e){return e-=t=+t,function(n){return Math.round(t+e*n)}},Yp=180/Math.PI,Vp={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1},Xp=function(t,e,n,r,i,o){var a,u,s;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(s=t*n+e*r)&&(n-=t*s,r-=e*s),(u=Math.sqrt(n*n+r*r))&&(n/=u,r/=u,s/=u),t*r<e*n&&(t=-t,e=-e,s=-s,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*Yp,skewX:Math.atan(s)*Yp,scaleX:a,scaleY:u}};function Jp(t,e,n,r){function i(t){return t.length?t.pop()+" ":""}return function(o,a){var u=[],s=[];return o=t(o),a=t(a),function(t,r,i,o,a,u){if(t!==i||r!==o){var s=a.push("translate(",null,e,null,n);u.push({i:s-4,x:zp(t,i)},{i:s-2,x:zp(r,o)})}else(i||o)&&a.push("translate("+i+e+o+n)}(o.translateX,o.translateY,a.translateX,a.translateY,u,s),function(t,e,n,o){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),o.push({i:n.push(i(n)+"rotate(",null,r)-2,x:zp(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(o.rotate,a.rotate,u,s),function(t,e,n,o){t!==e?o.push({i:n.push(i(n)+"skewX(",null,r)-2,x:zp(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(o.skewX,a.skewX,u,s),function(t,e,n,r,o,a){if(t!==n||e!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:zp(t,n)},{i:u-2,x:zp(e,r)})}else 1===n&&1===r||o.push(i(o)+"scale("+n+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,s),o=a=null,function(t){for(var e,n=-1,r=s.length;++n<r;)u[(e=s[n]).i]=e.x(t);return u.join("")}}}var Zp=Jp(function(t){return"none"===t?Vp:(Bp||(Bp=document.createElement("DIV"),Pp=document.documentElement,Lp=document.defaultView),Bp.style.transform=t,t=Lp.getComputedStyle(Pp.appendChild(Bp),null).getPropertyValue("transform"),Pp.removeChild(Bp),t=t.slice(7,-1).split(","),Xp(+t[0],+t[1],+t[2],+t[3],+t[4],+t[5]))},"px, ","px)","deg)"),Qp=Jp(function(t){return null==t?Vp:(Up||(Up=document.createElementNS("http://www.w3.org/2000/svg","g")),Up.setAttribute("transform",t),(t=Up.transform.baseVal.consolidate())?(t=t.matrix,Xp(t.a,t.b,t.c,t.d,t.e,t.f)):Vp)},", ",")",")"),Kp=Math.SQRT2;function tg(t){return((t=Math.exp(t))+1/t)/2}var eg=function(t,e){var n,r,i=t[0],o=t[1],a=t[2],u=e[0],s=e[1],c=e[2],l=u-i,f=s-o,h=l*l+f*f;if(h<1e-12)r=Math.log(c/a)/Kp,n=function(t){return[i+t*l,o+t*f,a*Math.exp(Kp*t*r)]};else{var d=Math.sqrt(h),p=(c*c-a*a+4*h)/(2*a*2*d),g=(c*c-a*a-4*h)/(2*c*2*d),m=Math.log(Math.sqrt(p*p+1)-p),v=Math.log(Math.sqrt(g*g+1)-g);r=(v-m)/Kp,n=function(t){var e,n=t*r,u=tg(m),s=a/(2*d)*(u*(e=Kp*n+m,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(m));return[i+s*l,o+s*f,a*u/tg(Kp*n+m)]}}return n.duration=1e3*r,n};function ng(t){return function(e,n){var r=t((e=Wd(e)).h,(n=Wd(n)).h),i=jp(e.s,n.s),o=jp(e.l,n.l),a=jp(e.opacity,n.opacity);return function(t){return e.h=r(t),e.s=i(t),e.l=o(t),e.opacity=a(t),e+""}}}var rg=ng(Ap),ig=ng(jp);function og(t,e){var n=jp((t=rp(t)).l,(e=rp(e)).l),r=jp(t.a,e.a),i=jp(t.b,e.b),o=jp(t.opacity,e.opacity);return function(e){return t.l=n(e),t.a=r(e),t.b=i(e),t.opacity=o(e),t+""}}function ag(t){return function(e,n){var r=t((e=lp(e)).h,(n=lp(n)).h),i=jp(e.c,n.c),o=jp(e.l,n.l),a=jp(e.opacity,n.opacity);return function(t){return e.h=r(t),e.c=i(t),e.l=o(t),e.opacity=a(t),e+""}}}var ug=ag(Ap),sg=ag(jp);function cg(t){return function e(n){function r(e,r){var i=t((e=yp(e)).h,(r=yp(r)).h),o=jp(e.s,r.s),a=jp(e.l,r.l),u=jp(e.opacity,r.opacity);return function(t){return e.h=i(t),e.s=o(t),e.l=a(Math.pow(t,n)),e.opacity=u(t),e+""}}return n=+n,r.gamma=e,r}(1)}var lg=cg(Ap),fg=cg(jp);function hg(t,e){for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(t){var e=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return o[e](t-e)}}var dg=function(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n},pg=function(t){return function(){return t}},gg=function(t){return+t},mg=[0,1];function vg(t){return t}function yg(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:pg(isNaN(e)?NaN:.5)}function bg(t){var e,n=t[0],r=t[t.length-1];return n>r&&(e=n,n=r,r=e),function(t){return Math.max(n,Math.min(r,t))}}function xg(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i<r?(r=yg(i,r),o=n(a,o)):(r=yg(r,i),o=n(o,a)),function(t){return o(r(t))}}function _g(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<r;)i[a]=yg(t[a],t[a+1]),o[a]=n(e[a],e[a+1]);return function(e){var n=Oi(t,e,1,r)-1;return o[n](i[n](e))}}function wg(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Og(){var t,e,n,r,i,o,a=mg,u=mg,s=Ip,c=vg;function l(){return r=Math.min(a.length,u.length)>2?_g:xg,i=o=null,f}function f(e){return isNaN(e=+e)?n:(i||(i=r(a.map(t),u,s)))(t(c(e)))}return f.invert=function(n){return c(e((o||(o=r(u,a.map(t),zp)))(n)))},f.domain=function(t){return arguments.length?(a=Array.from(t,gg),c===vg||(c=bg(a)),l()):a.slice()},f.range=function(t){return arguments.length?(u=Array.from(t),l()):u.slice()},f.rangeRound=function(t){return u=Array.from(t),s=Gp,l()},f.clamp=function(t){return arguments.length?(c=t?bg(a):vg,f):c!==vg},f.interpolate=function(t){return arguments.length?(s=t,l()):s},f.unknown=function(t){return arguments.length?(n=t,f):n},function(n,r){return t=n,e=r,l()}}function kg(t,e){return Og()(t,e)}var Ag=function(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]},Eg=function(t){return(t=Ag(Math.abs(t)))?t[1]:NaN},jg=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Sg(t){return new Cg(t)}function Cg(t){if(!(e=jg.exec(t)))throw new Error("invalid format: "+t);var e;this.fill=e[1]||" ",this.align=e[2]||">",this.sign=e[3]||"-",this.symbol=e[4]||"",this.zero=!!e[5],this.width=e[6]&&+e[6],this.comma=!!e[7],this.precision=e[8]&&+e[8].slice(1),this.trim=!!e[9],this.type=e[10]||""}Sg.prototype=Cg.prototype,Cg.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Mg,Dg,Fg,Ng,zg=function(t){t:for(var e,n=t.length,r=1,i=-1;r<n;++r)switch(t[r]){case".":i=e=r;break;case"0":0===i&&(i=r),e=r;break;default:if(i>0){if(!+t[r])break t;i=0}}return i>0?t.slice(0,i)+t.slice(e+1):t},Tg=function(t,e){var n=Ag(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},$g={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return Tg(100*t,e)},r:Tg,s:function(t,e){var n=Ag(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Mg=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Ag(t,Math.max(0,e+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},Rg=function(t){return t},Bg=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],Pg=function(t){var e,n,r=t.grouping&&t.thousands?(e=t.grouping,n=t.thousands,function(t,r){for(var i=t.length,o=[],a=0,u=e[0],s=0;i>0&&u>0&&(s+u+1>r&&(u=Math.max(1,r-s)),o.push(t.substring(i-=u,i+u)),!((s+=u+1)>r));)u=e[a=(a+1)%e.length];return o.reverse().join(n)}):Rg,i=t.currency,o=t.decimal,a=t.numerals?function(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}(t.numerals):Rg,u=t.percent||"%";function s(t){var e=(t=Sg(t)).fill,n=t.align,s=t.sign,c=t.symbol,l=t.zero,f=t.width,h=t.comma,d=t.precision,p=t.trim,g=t.type;"n"===g?(h=!0,g="g"):$g[g]||(null==d&&(d=12),p=!0,g="g"),(l||"0"===e&&"="===n)&&(l=!0,e="0",n="=");var m="$"===c?i[0]:"#"===c&&/[boxX]/.test(g)?"0"+g.toLowerCase():"",v="$"===c?i[1]:/[%p]/.test(g)?u:"",y=$g[g],b=/[defgprs%]/.test(g);function x(t){var i,u,c,x=m,_=v;if("c"===g)_=y(t)+_,t="";else{var w=(t=+t)<0;if(t=y(Math.abs(t),d),p&&(t=zg(t)),w&&0==+t&&(w=!1),x=(w?"("===s?s:"-":"-"===s||"("===s?"":s)+x,_=("s"===g?Bg[8+Mg/3]:"")+_+(w&&"("===s?")":""),b)for(i=-1,u=t.length;++i<u;)if(48>(c=t.charCodeAt(i))||c>57){_=(46===c?o+t.slice(i+1):t.slice(i))+_,t=t.slice(0,i);break}}h&&!l&&(t=r(t,1/0));var O=x.length+t.length+_.length,k=O<f?new Array(f-O+1).join(e):"";switch(h&&l&&(t=r(k+t,k.length?f-_.length:1/0),k=""),n){case"<":t=x+t+_+k;break;case"=":t=x+k+t+_;break;case"^":t=k.slice(0,O=k.length>>1)+x+t+_+k.slice(O);break;default:t=k+x+t+_}return a(t)}return d=null==d?6:/[gprs]/.test(g)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),x.toString=function(){return t+""},x}return{format:s,formatPrefix:function(t,e){var n=s(((t=Sg(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Eg(e)/3))),i=Math.pow(10,-r),o=Bg[8+r/3];return function(t){return n(i*t)+o}}}};function Lg(t){return Dg=Pg(t),Fg=Dg.format,Ng=Dg.formatPrefix,Dg}Lg({decimal:".",thousands:",",grouping:[3],currency:["$",""]});var Ug=function(t,e,n,r){var i,o=Ni(t,e,n);switch((r=Sg(null==r?",f":r)).type){case"s":var a=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Eg(e)/3)))-Eg(Math.abs(t)))}(o,a))||(r.precision=i),Ng(r,a);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Eg(e)-Eg(t))+1}(o,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(t){return Math.max(0,-Eg(Math.abs(t)))}(o))||(r.precision=i-2*("%"===r.type))}return Fg(r)};function qg(t){var e=t.domain;return t.ticks=function(t){var n=e();return Di(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return Ug(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i=e(),o=0,a=i.length-1,u=i[o],s=i[a];return s<u&&(r=u,u=s,s=r,r=o,o=a,a=r),(r=Fi(u,s,n))>0?r=Fi(u=Math.floor(u/r)*r,s=Math.ceil(s/r)*r,n):r<0&&(r=Fi(u=Math.ceil(u*r)/r,s=Math.floor(s*r)/r,n)),r>0?(i[o]=Math.floor(u/r)*r,i[a]=Math.ceil(s/r)*r,e(i)):r<0&&(i[o]=Math.ceil(u*r)/r,i[a]=Math.floor(s*r)/r,e(i)),t},t}var Ig=function(t,e){var n,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a<o&&(n=r,r=i,i=n,n=o,o=a,a=n),t[r]=e.floor(o),t[i]=e.ceil(a),t};function Wg(t){return Math.log(t)}function Hg(t){return Math.exp(t)}function Gg(t){return-Math.log(-t)}function Yg(t){return-Math.exp(-t)}function Vg(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Xg(t){return function(e){return-t(-e)}}function Jg(t){var e,n,r=t(Wg,Hg),i=r.domain,o=10;function a(){return e=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}(o),n=function(t){return 10===t?Vg:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}(o),i()[0]<0?(e=Xg(e),n=Xg(n),t(Gg,Yg)):t(Wg,Hg),r}return r.base=function(t){return arguments.length?(o=+t,a()):o},r.domain=function(t){return arguments.length?(i(t),a()):i()},r.ticks=function(t){var r,a=i(),u=a[0],s=a[a.length-1];(r=s<u)&&(h=u,u=s,s=h);var c,l,f,h=e(u),d=e(s),p=null==t?10:+t,g=[];if(!(o%1)&&d-h<p){if(h=Math.round(h)-1,d=Math.round(d)+1,u>0){for(;h<d;++h)for(l=1,c=n(h);l<o;++l)if(!((f=c*l)<u)){if(f>s)break;g.push(f)}}else for(;h<d;++h)for(l=o-1,c=n(h);l>=1;--l)if(!((f=c*l)<u)){if(f>s)break;g.push(f)}}else g=Di(h,d,Math.min(d-h,p)).map(n);return r?g.reverse():g},r.tickFormat=function(t,i){if(null==i&&(i=10===o?".0e":","),"function"!=typeof i&&(i=Fg(i)),t===1/0)return i;null==t&&(t=10);var a=Math.max(1,o*t/r.ticks().length);return function(t){var r=t/n(Math.round(e(t)));return r*o<o-.5&&(r*=o),r<=a?i(t):""}},r.nice=function(){return i(Ig(i(),{floor:function(t){return n(Math.floor(e(t)))},ceil:function(t){return n(Math.ceil(e(t)))}}))},r}function Zg(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Qg(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Kg(t){var e=1,n=t(Zg(e),Qg(e));return n.constant=function(n){return arguments.length?t(Zg(e=+n),Qg(e)):e},qg(n)}function tm(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function em(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function nm(t){return t<0?-t*t:t*t}function rm(t){var e=t(vg,vg),n=1;return e.exponent=function(e){return arguments.length?1===(n=+e)?t(vg,vg):.5===n?t(em,nm):t(tm(n),tm(1/n)):n},qg(e)}function im(){var t=rm(Og());return t.copy=function(){return wg(t,im()).exponent(t.exponent())},vd.apply(t,arguments),t}var om=1e3,am=60*om,um=60*am,sm=24*um,cm=7*sm,lm=30*sm,fm=365*sm;function hm(t){return new Date(t)}function dm(t){return t instanceof Date?+t:+new Date(+t)}function pm(t,e,n,r,i,o,a,u,s){var c=kg(vg,vg),l=c.invert,f=c.domain,h=s(".%L"),d=s(":%S"),p=s("%I:%M"),g=s("%I %p"),m=s("%a %d"),v=s("%b %d"),y=s("%B"),b=s("%Y"),x=[[a,1,om],[a,5,5*om],[a,15,15*om],[a,30,30*om],[o,1,am],[o,5,5*am],[o,15,15*am],[o,30,30*am],[i,1,um],[i,3,3*um],[i,6,6*um],[i,12,12*um],[r,1,sm],[r,2,2*sm],[n,1,cm],[e,1,lm],[e,3,3*lm],[t,1,fm]];function _(u){return(a(u)<u?h:o(u)<u?d:i(u)<u?p:r(u)<u?g:e(u)<u?n(u)<u?m:v:t(u)<u?y:b)(u)}function w(e,n,r,i){if(null==e&&(e=10),"number"==typeof e){var o=Math.abs(r-n)/e,a=bi(function(t){return t[2]}).right(x,o);a===x.length?(i=Ni(n/fm,r/fm,e),e=t):a?(i=(a=x[o/x[a-1][2]<x[a][2]/o?a-1:a])[1],e=a[0]):(i=Math.max(Ni(n,r,e),1),e=u)}return null==i?e:e.every(i)}return c.invert=function(t){return new Date(l(t))},c.domain=function(t){return arguments.length?f(Array.from(t,dm)):f().map(hm)},c.ticks=function(t,e){var n,r=f(),i=r[0],o=r[r.length-1],a=o<i;return a&&(n=i,i=o,o=n),n=(n=w(t,i,o,e))?n.range(i,o+1):[],a?n.reverse():n},c.tickFormat=function(t,e){return null==e?_:s(e)},c.nice=function(t,e){var n=f();return(t=w(t,n[0],n[n.length-1],e))?f(Ig(n,t)):c},c.copy=function(){return wg(c,pm(t,e,n,r,i,o,a,u,s))},c}function gm(){var t,e,n,r,i,o=0,a=1,u=vg,s=!1;function c(e){return isNaN(e=+e)?i:u(0===n?.5:(e=(r(e)-t)*n,s?Math.max(0,Math.min(1,e)):e))}return c.domain=function(i){return arguments.length?([o,a]=i,t=r(o=+o),e=r(a=+a),n=t===e?0:1/(e-t),c):[o,a]},c.clamp=function(t){return arguments.length?(s=!!t,c):s},c.interpolator=function(t){return arguments.length?(u=t,c):u},c.unknown=function(t){return arguments.length?(i=t,c):i},function(i){return r=i,t=i(o),e=i(a),n=t===e?0:1/(e-t),c}}function mm(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function vm(){var t=qg(gm()(vg));return t.copy=function(){return mm(t,vm())},yd.apply(t,arguments)}function ym(){var t=rm(gm());return t.copy=function(){return mm(t,ym()).exponent(t.exponent())},yd.apply(t,arguments)}function bm(){var t,e,n,r,i,o,a,u=0,s=.5,c=1,l=vg,f=!1;function h(t){return isNaN(t=+t)?a:(t=.5+((t=+o(t))-e)*(t<e?r:i),l(f?Math.max(0,Math.min(1,t)):t))}return h.domain=function(a){return arguments.length?([u,s,c]=a,t=o(u=+u),e=o(s=+s),n=o(c=+c),r=t===e?0:.5/(e-t),i=e===n?0:.5/(n-e),h):[u,s,c]},h.clamp=function(t){return arguments.length?(f=!!t,h):f},h.interpolator=function(t){return arguments.length?(l=t,h):l},h.unknown=function(t){return arguments.length?(a=t,h):a},function(a){return o=a,t=a(u),e=a(s),n=a(c),r=t===e?0:.5/(e-t),i=e===n?0:.5/(n-e),h}}function xm(){var t=rm(bm());return t.copy=function(){return mm(t,xm()).exponent(t.exponent())},yd.apply(t,arguments)}function _m(){var t,e,n=xd().unknown(void 0),r=n.domain,i=n.range,o=[0,1],a=!1,u=0,s=0,c=.5;function l(){var n=r().length,l=o[1]<o[0],f=o[l-0],h=o[1-l],d=qh(n,u,s);t=(h-f)/(d||1),a&&(t=Math.floor(t)),f+=(h-f-t*(n-u))*c,e=t*(1-u),a&&(f=Math.round(f),e=Math.round(e));var p=ji(n).map(function(e){return f+t*e});return i(l?p.reverse():p)}return delete n.unknown,n.domain=function(t){return arguments.length?(r(t),l()):r()},n.range=function(t){return arguments.length?(o=[+t[0],+t[1]],l()):o.slice()},n.rangeRound=function(t){return o=[+t[0],+t[1]],a=!0,l()},n.bandwidth=function(){return e},n.step=function(){return t},n.round=function(t){return arguments.length?(a=!!t,l()):a},n.padding=function(t){return arguments.length?(s=Math.max(0,Math.min(1,t)),u=s,l()):u},n.paddingInner=function(t){return arguments.length?(u=Math.max(0,Math.min(1,t)),l()):u},n.paddingOuter=function(t){return arguments.length?(s=Math.max(0,Math.min(1,t)),l()):s},n.align=function(t){return arguments.length?(c=Math.max(0,Math.min(1,t)),l()):c},n.invertRange=function(t){if(null!=t[0]&&null!=t[1]){var n,a,u,s=+t[0],c=+t[1],l=o[1]<o[0],f=l?i().reverse():i(),h=f.length-1;if(s==s&&c==c&&(c<s&&(u=s,s=c,c=u),!(c<f[0]||s>o[1-l])))return n=Math.max(0,_i(f,s)-1),a=s===c?n:_i(f,c)-1,s-f[n]>e+1e-10&&++n,l&&(u=n,n=h-a,a=h-u),n>a?void 0:r().slice(n,a+1)}},n.invert=function(t){var e=n.invertRange([t,t]);return e?e[0]:e},n.copy=function(){return _m().domain(r()).range(o).round(a).paddingInner(u).paddingOuter(s).align(c)},l()}var wm=Array.prototype.map;var Om=Array.prototype.slice;function km(t,e){return arguments.length>1?(Am[t]=function(t,e){return function(){var n=e();return n.invertRange||(n.invertRange=n.invert?gd(n):n.invertExtent?md(n):void 0),n.type=t,n}}(t,e),this):Am.hasOwnProperty(t)?Am[t]:void 0}var Am={[Ih]:function t(e){var n;function r(t){return isNaN(t=+t)?n:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(e=Array.from(t,gg),r):e.slice()},r.unknown=function(t){return arguments.length?(n=t,r):n},r.copy=function(){return t(e).unknown(n)},e=arguments.length?Array.from(e,gg):[0,1],qg(r)},[Wh]:function t(){var e=kg(vg,vg);return e.copy=function(){return wg(e,t())},vd.apply(e,arguments),qg(e)},[Hh]:function t(){var e=Jg(Og()).domain([1,10]);return e.copy=function(){return wg(e,t()).base(e.base())},vd.apply(e,arguments),e},[Gh]:im,[Yh]:function(){return im.apply(null,arguments).exponent(.5)},[Vh]:function t(){var e=Kg(Og());return e.copy=function(){return wg(e,t()).constant(e.constant())},vd.apply(e,arguments)},[Xh]:function(){return vd.apply(pm(Xe,Ye,Pe,Re,Te,Ne,De,je,bn).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},[Jh]:function(){return vd.apply(pm(pn,hn,rn,en,Ke,Ze,De,je,_n).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},[Zh]:vm,[Zh+"-"+Wh]:vm,[Zh+"-"+Hh]:function t(){var e=Jg(gm()).domain([1,10]);return e.copy=function(){return mm(e,t()).base(e.base())},yd.apply(e,arguments)},[Zh+"-"+Gh]:ym,[Zh+"-"+Yh]:function(){return ym.apply(null,arguments).exponent(.5)},[Zh+"-"+Vh]:function t(){var e=Kg(gm());return e.copy=function(){return mm(e,t()).constant(e.constant())},yd.apply(e,arguments)},[Qh+"-"+Wh]:function t(){var e=qg(bm()(vg));return e.copy=function(){return mm(e,t())},yd.apply(e,arguments)},[Qh+"-"+Hh]:function t(){var e=Jg(bm()).domain([.1,1,10]);return e.copy=function(){return mm(e,t()).base(e.base())},yd.apply(e,arguments)},[Qh+"-"+Gh]:xm,[Qh+"-"+Yh]:function(){return xm.apply(null,arguments).exponent(.5)},[Qh+"-"+Vh]:function t(){var e=Kg(bm());return e.copy=function(){return mm(e,t()).constant(e.constant())},yd.apply(e,arguments)},[Kh]:function t(){var e,n=[],r=[],i=[];function o(){var t=0,e=Math.max(1,r.length);for(i=new Array(e-1);++t<e;)i[t-1]=Ti(n,t/e);return a}function a(t){return isNaN(t=+t)?e:r[Oi(i,t)]}return a.invertExtent=function(t){var e=r.indexOf(t);return e<0?[NaN,NaN]:[e>0?i[e-1]:n[0],e<i.length?i[e]:n[n.length-1]]},a.domain=function(t){if(!arguments.length)return n.slice();n=[];for(let e of t)null==e||isNaN(e=+e)||n.push(e);return n.sort(yi),o()},a.range=function(t){return arguments.length?(r=Array.from(t),o()):r.slice()},a.unknown=function(t){return arguments.length?(e=t,a):e},a.quantiles=function(){return i.slice()},a.copy=function(){return t().domain(n).range(r).unknown(e)},vd.apply(a,arguments)},[td]:function t(){var e,n=0,r=1,i=1,o=[.5],a=[0,1];function u(t){return t<=t?a[Oi(o,t,0,i)]:e}function s(){var t=-1;for(o=new Array(i);++t<i;)o[t]=((t+1)*r-(t-i)*n)/(i+1);return u}return u.domain=function(t){return arguments.length?([n,r]=t,n=+n,r=+r,s()):[n,r]},u.range=function(t){return arguments.length?(i=(a=Array.from(t)).length-1,s()):a.slice()},u.invertExtent=function(t){var e=a.indexOf(t);return e<0?[NaN,NaN]:e<1?[n,o[0]]:e>=i?[o[i-1],r]:[o[e-1],o[e]]},u.unknown=function(t){return arguments.length?(e=t,u):u},u.thresholds=function(){return o.slice()},u.copy=function(){return t().domain([n,r]).range(a).unknown(e)},vd.apply(qg(u),arguments)},[ed]:function t(){var e,n=[.5],r=[0,1],i=1;function o(t){return t<=t?r[Oi(n,t,0,i)]:e}return o.domain=function(t){return arguments.length?(n=Array.from(t),i=Math.min(n.length,r.length-1),o):n.slice()},o.range=function(t){return arguments.length?(r=Array.from(t),i=Math.min(n.length,r.length-1),o):r.slice()},o.invertExtent=function(t){var e=r.indexOf(t);return[n[e-1],n[e]]},o.unknown=function(t){return arguments.length?(e=t,o):e},o.copy=function(){return t().domain(n).range(r).unknown(e)},vd.apply(o,arguments)},[od]:function t(){var e=[],n=[];function r(t){return null==t||t!=t?void 0:n[(Oi(e,t)-1)%n.length]}return r.domain=function(t){return arguments.length?(e=function(t){return wm.call(t,function(t){return+t})}(t),r):e.slice()},r.range=function(t){return arguments.length?(n=Om.call(t),r):n.slice()},r.tickFormat=function(t,n){return Ug(e[0],Object(ct.R)(e),null==t?10:t,n)},r.copy=function(){return t().domain(r.domain()).range(r.range())},r},[nd]:xd,[id]:_m,[rd]:function(){return function t(e){var n=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,e.copy=function(){return t(n())},e}(_m().paddingInner(1))}};for(var Em in Am)km(Em,Am[Em]);const jm=["clamp","base","constant","exponent"];function Sm(t,e){var n=e[0],r=Object(ct.R)(e)-n;return function(e){return t(n+e*r)}}function Cm(t,e,n){return hg(Fm(e||"rgb",n),t)}function Mm(t,e){for(var n=new Array(e),r=e+1,i=0;i<e;)n[i]=t(++i/r);return n}function Dm(t,e,n){var r,i,o,a=n-e;return a&&isFinite(a)?(r=(i=t.type).indexOf("-"),i=r<0?i:i.slice(r+1),o=km(i)().domain([e,n]).range([0,1]),jm.forEach(e=>t[e]?o[e](t[e]()):0),o):Object(ct.l)(.5)}function Fm(t,e){var n=o[function(t){return"interpolate"+t.toLowerCase().split("-").map(function(t){return t[0].toUpperCase()+t.slice(1)}).join("")}(t)];return null!=e&&n&&n.gamma?n.gamma(e):n}function Nm(t){for(var e=t.length/6|0,n=new Array(e),r=0;r<e;)n[r]="#"+t.slice(6*r,6*++r);return n}function zm(t,e){for(let n in t)$m(n,e(t[n]))}const Tm={};function $m(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(Tm[t]=e,this):Tm[t]}function Rm(t,e,n){var r;return Object(ct.D)(e)&&null!=n&&(e=Math.min(e,~~(Object(ct.U)(t.domain())/n)||1)),Object(ct.E)(e)&&(r=e.step,e=e.interval),Object(ct.G)(e)&&(e=pd(e,t.type)||Object(ct.n)("Only time and utc scales accept interval strings."),r&&(e=e.every(r))),e}function Bm(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(Object(ct.R)(r));if(i>o&&(r=o,o=i,i=r),e=e.filter(function(e){return e=t(e),i<=e&&e<=o}),n>0&&e.length>1){for(var a=[e[0],Object(ct.R)(e)];e.length>n&&e.length>=3;)e=e.filter(function(t,e){return!(e%2)});e.length<3&&(e=a)}return e}function Pm(t,e){return t.bins?Bm(t,function(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(t,e){return!(e%r)})}(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function Lm(t,e,n,r){var i,o,a=t.tickFormat?t.tickFormat(e,n):n&&r===Xh?bn(n):n?Fg(n):String;if(sd(t.type)){var u=function(t){var e=Sg(t||",");if(null==e.precision){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1}return n=Fg(e),r=Fg(".1f")(1)[1],function(t){var e,i,o=n(t),a=o.indexOf(r);if(a<0)return o;for(e=function(t,e){var n,r=t.lastIndexOf("e");if(r>0)return r;for(r=t.length;--r>e;)if((n=t.charCodeAt(r))>=48&&n<=57)return r+1}(o,a),i=e<o.length?o.slice(e):"";--e>a;)if("0"!==o[e]){++e;break}return o.slice(0,e)+i}}return Fg(e);var n,r}(n);a=t.bins?u:(i=a,o=u,function(t){return i(t)?o(t):""})}return a}function Um(t){ei.call(this,null,t)}function qm(t){ei.call(this,null,t)}function Im(){return vt({})}function Wm(t){return t.exit}function Hm(t){ei.call(this,null,t)}zm({category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"},Nm),zm({blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},t=>Cm(Nm(t))),Object(ct.x)(Um,ei).transform=function(t,e){if(this.value&&!t.modified())return e.StopPropagation;var n=e.fork(e.NO_SOURCE|e.NO_FIELDS),r=this.value,i=t.scale,o=Rm(i,null==t.count?t.values?t.values.length:10:t.count,t.minstep),a=t.format||Lm(i,o,t.formatSpecifier,t.formatType),u=t.values?Bm(i,t.values,o):Pm(i,o);return r&&(n.rem=r),r=u.map(function(t,e){return vt({index:e/(u.length-1||1),value:t,label:a(t)})}),t.extra&&r.length&&r.push(vt({index:-1,extra:{value:r[0].value},label:""})),n.source=r,n.add=r,this.value=r,n},Object(ct.x)(qm,ei).transform=function(t,e){var n=e.dataflow,r=e.fork(e.NO_SOURCE|e.NO_FIELDS),i=t.item||Im,o=t.key||gt,a=this.value;return Object(ct.z)(r.encode)&&(r.encode=null),a&&(t.modified("key")||e.modified(o))&&Object(ct.n)("DataJoin does not support modified key function or fields."),a||(e=e.addAll(),this.value=a=Object(ct.s)().test(Wm),a.lookup=function(t){return a.get(o(t))}),e.visit(e.ADD,function(t){var e=o(t),n=a.get(e);n?n.exit?(a.empty--,r.add.push(n)):r.mod.push(n):(a.set(e,n=i(t)),r.add.push(n)),n.datum=t,n.exit=!1}),e.visit(e.MOD,function(t){var e=o(t),n=a.get(e);n&&(n.datum=t,r.mod.push(n))}),e.visit(e.REM,function(t){var e=o(t),n=a.get(e);t!==n.datum||n.exit||(r.rem.push(n),n.exit=!0,++a.empty)}),e.changed(e.ADD_MOD)&&r.modifies("datum"),t.clean&&a.empty>n.cleanThreshold&&n.runAfter(a.clean),r},Object(ct.x)(Hm,ei).transform=function(t,e){var n=e.fork(e.ADD_REM),r=t.mod||!1,i=t.encoders,o=e.encode;if(Object(ct.z)(o)){if(!n.changed()&&!o.every(function(t){return i[t]}))return e.StopPropagation;o=o[0],n.encode=null}var a="enter"===o,u=i.update||ct.r,s=i.enter||ct.r,c=i.exit||ct.r,l=(o&&!a?i[o]:u)||ct.r;if(e.changed(e.ADD)&&(e.visit(e.ADD,function(e){s(e,t),u(e,t)}),n.modifies(s.output),n.modifies(u.output),l!==ct.r&&l!==u&&(e.visit(e.ADD,function(e){l(e,t)}),n.modifies(l.output))),e.changed(e.REM)&&c!==ct.r&&(e.visit(e.REM,function(e){c(e,t)}),n.modifies(c.output)),a||l!==ct.r){var f=e.MOD|(t.modified()?e.REFLOW:0);a?(e.visit(f,function(e){var i=s(e,t)||r;(l(e,t)||i)&&n.mod.push(e)}),n.mod.length&&n.modifies(s.output)):e.visit(f,function(e){(l(e,t)||r)&&n.mod.push(e)}),n.mod.length&&n.modifies(l.output)}return n.changed()?n:e.StopPropagation};var Gm="symbol",Ym="discrete";const Vm={[Kh]:"quantiles",[td]:"thresholds",[ed]:"domain"},Xm={[Kh]:"quantiles",[td]:"domain"};function Jm(t,e){return t.bins?function(t){const e=t.slice(0,-1);return e.max=Object(ct.R)(t),e}(t.bins):Vm[t.type]?function(t){const e=[-1/0].concat(t);return e.max=1/0,e}(t[Vm[t.type]]()):Pm(t,e)}function Zm(t,e,n,r,i){const o=Xm[t.type]&&i!==Xh?function(t,e){var n,r=t[Xm[t.type]](),i=r.length,o=i>1?r[1]-r[0]:r[0];for(n=1;n<i;++n)o=Math.min(o,r[n]-r[n-1]);return Ug(0,o,30,e)}(t,r):Lm(t,e,r,i);return n===Gm&&function(t){return Vm[t.type]||t.bins}(t)?function(t){return function(e,n,r){var i=r[n+1]||r.max||1/0,o=Qm(e,t),a=Qm(i,t);return o&&a?o+"–"+a:a?"< "+a:"≥ "+o}}(o):n===Ym?function(t){return function(e,n){return n?t(e):null}}(o):function(t){return function(e){return t(e)}}(o)}function Qm(t,e){return isFinite(t)?e(t):null}function Km(t){ei.call(this,[],t)}Object(ct.x)(Km,ei).transform=function(t,e){if(null!=this.value&&!t.modified())return e.StopPropagation;var n,r,i,o,a=e.fork(e.NO_SOURCE|e.NO_FIELDS),u=this.value,s=t.type||Gm,c=t.scale,l=Rm(c,null==t.count?5:t.count,t.minstep),f=t.format||Zm(c,l,s,t.formatSpecifier,t.formatType),h=t.values||Jm(c,l);return u&&(a.rem=u),s===Gm?(Object(ct.C)(i=t.size)?(t.values||0!==c(h[0])||(h=h.slice(1)),o=h.reduce(function(e,n){return Math.max(e,i(n,t))},0)):i=Object(ct.l)(o=i||8),u=h.map(function(e,n){return vt({index:n,label:f(e,n,h),value:e,offset:o,size:i(e,t)})})):"gradient"===s?(n=c.domain(),r=Dm(c,n[0],Object(ct.R)(n)),h.length<3&&!t.values&&n[0]!==Object(ct.R)(n)&&(h=[n[0],Object(ct.R)(n)]),u=h.map(function(t,e){return vt({index:e,label:f(t,e,h),value:t,perc:r(t)})})):(i=h.length-1,r=function(t){var e=t.domain(),n=e.length-1,r=+e[0],i=+Object(ct.R)(e),o=i-r;if(t.type===ed){var a=n?o/n:.1;o=(i+=a)-(r-=a)}return function(t){return(t-r)/o}}(c),u=h.map(function(t,e){return vt({index:e,label:f(t,e,h),value:t,perc:e?r(t):0,perc2:e===i?1:r(h[e+1])})})),a.source=u,a.add=u,this.value=u,a};var tv=Object(ct.s)({line:av,"line-radial":function(t,e,n,r){return av(e*Math.cos(t),e*Math.sin(t),r*Math.cos(n),r*Math.sin(n))},arc:uv,"arc-radial":function(t,e,n,r){return uv(e*Math.cos(t),e*Math.sin(t),r*Math.cos(n),r*Math.sin(n))},curve:sv,"curve-radial":function(t,e,n,r){return sv(e*Math.cos(t),e*Math.sin(t),r*Math.cos(n),r*Math.sin(n))},"orthogonal-horizontal":function(t,e,n,r){return"M"+t+","+e+"V"+r+"H"+n},"orthogonal-vertical":function(t,e,n,r){return"M"+t+","+e+"H"+n+"V"+r},"orthogonal-radial":function(t,e,n,r){var i=Math.cos(t),o=Math.sin(t),a=Math.cos(n),u=Math.sin(n),s=Math.abs(n-t)>Math.PI?n<=t:n>t;return"M"+e*i+","+e*o+"A"+e+","+e+" 0 0,"+(s?1:0)+" "+e*a+","+e*u+"L"+r*a+","+r*u},"diagonal-horizontal":function(t,e,n,r){var i=(t+n)/2;return"M"+t+","+e+"C"+i+","+e+" "+i+","+r+" "+n+","+r},"diagonal-vertical":function(t,e,n,r){var i=(e+r)/2;return"M"+t+","+e+"C"+t+","+i+" "+n+","+i+" "+n+","+r},"diagonal-radial":function(t,e,n,r){var i=Math.cos(t),o=Math.sin(t),a=Math.cos(n),u=Math.sin(n),s=(e+r)/2;return"M"+e*i+","+e*o+"C"+s*i+","+s*o+" "+s*a+","+s*u+" "+r*a+","+r*u}});function ev(t){return t.source.x}function nv(t){return t.source.y}function rv(t){return t.target.x}function iv(t){return t.target.y}function ov(t){ei.call(this,{},t)}function av(t,e,n,r){return"M"+t+","+e+"L"+n+","+r}function uv(t,e,n,r){var i=n-t,o=r-e,a=Math.sqrt(i*i+o*o)/2;return"M"+t+","+e+"A"+a+","+a+" "+180*Math.atan2(o,i)/Math.PI+" 0 1 "+n+","+r}function sv(t,e,n,r){var i=n-t,o=r-e,a=.2*(i+o),u=.2*(o-i);return"M"+t+","+e+"C"+(t+a)+","+(e+u)+" "+(n+u)+","+(r-a)+" "+n+","+r}function cv(t){ei.call(this,null,t)}ov.Definition={type:"LinkPath",metadata:{modifies:!0},params:[{name:"sourceX",type:"field",default:"source.x"},{name:"sourceY",type:"field",default:"source.y"},{name:"targetX",type:"field",default:"target.x"},{name:"targetY",type:"field",default:"target.y"},{name:"orient",type:"enum",default:"vertical",values:["horizontal","vertical","radial"]},{name:"shape",type:"enum",default:"line",values:["line","arc","curve","diagonal","orthogonal"]},{name:"require",type:"signal"},{name:"as",type:"string",default:"path"}]},Object(ct.x)(ov,ei).transform=function(t,e){var n=t.sourceX||ev,r=t.sourceY||nv,i=t.targetX||rv,o=t.targetY||iv,a=t.as||"path",u=t.orient||"vertical",s=t.shape||"line",c=tv.get(s+"-"+u)||tv.get(s);return c||Object(ct.n)("LinkPath unsupported type: "+t.shape+(t.orient?"-"+t.orient:"")),e.visit(e.SOURCE,function(t){t[a]=c(n(t),r(t),i(t),o(t))}),e.reflow(t.modified()).modifies(a)},cv.Definition={type:"Pie",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"startAngle",type:"number",default:0},{name:"endAngle",type:"number",default:6.283185307179586},{name:"sort",type:"boolean",default:!1},{name:"as",type:"string",array:!0,length:2,default:["startAngle","endAngle"]}]},Object(ct.x)(cv,ei).transform=function(t,e){var n,r,i,o=t.as||["startAngle","endAngle"],a=o[0],u=o[1],s=t.field||ct.L,c=t.startAngle||0,l=null!=t.endAngle?t.endAngle:2*Math.PI,f=e.source,h=f.map(s),d=h.length,p=c,g=(l-c)/function(t,e){let n=0;if(void 0===e)for(let e of t)(e=+e)&&(n+=e);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}(h),m=ji(d);for(t.sort&&m.sort(function(t,e){return h[t]-h[e]}),n=0;n<d;++n)i=h[m[n]],(r=f[m[n]])[a]=p,r[u]=p+=i*g;return this.value=h,e.reflow(t.modified()).modifies(o)};var lv=5;function fv(t){return cd(t)&&t!==Zh}var hv=Object(ct.ab)(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma"]);function dv(t){ei.call(this,null,t),this.modified(!0)}function pv(t,e,n){sd(t)&&(Math.abs(e.reduce(function(t,e){return t+(e<0?-1:e>0?1:0)},0))!==e.length&&n.warn("Log scale domain includes zero: "+Object(ct.W)(e)));return e}function gv(t,e,n){return Object(ct.C)(t)&&(e||n)?Sm(t,mv(e||[0,1],n)):t}function mv(t,e){return e?t.slice().reverse():t}function vv(t){ei.call(this,null,t)}Object(ct.x)(dv,ei).transform=function(t,e){var n=e.dataflow,r=this.value,i=function(t){var e,n=t.type,r="";if(n===Zh)return Zh+"-"+Wh;(function(t){const e=t.type;return cd(e)&&e!==Xh&&e!==Jh&&(t.scheme||t.range&&t.range.length&&t.range.every(ct.G))})(t)&&(e=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(null!=t.domainMid):0,r=2===e?Zh+"-":3===e?Qh+"-":"");return(r+n||Wh).toLowerCase()}(t);for(i in r&&i===r.type||(this.value=r=km(i)()),t)if(!hv[i]){if("padding"===i&&fv(r.type))continue;Object(ct.C)(r[i])?r[i](t[i]):n.warn("Unsupported scale property: "+i)}return function(t,e,n){var r=e.round||!1,i=e.range;if(null!=e.rangeStep)i=function(t,e,n){t!==id&&t!==rd&&Object(ct.n)("Only band and point scales support rangeStep.");var r=(null!=e.paddingOuter?e.paddingOuter:e.padding)||0,i=t===rd?1:(null!=e.paddingInner?e.paddingInner:e.padding)||0;return[0,e.rangeStep*qh(n,i,r)]}(t.type,e,n);else if(e.scheme){if(i=function(t,e,n){var r,i,o=e.schemeExtent;Object(ct.z)(e.scheme)?i=Cm(e.scheme,e.interpolate,e.interpolateGamma):(r=e.scheme.toLowerCase(),(i=$m(r))||Object(ct.n)("Unrecognized scheme name: "+e.scheme));return n=t===ed?n+1:t===od?n-1:t===Kh||t===td?+e.schemeCount||lv:n,ud(t)?gv(i,o,e.reverse):Object(ct.C)(i)?Mm(gv(i,o),n):t===nd?i:i.slice(0,n)}(t.type,e,n),Object(ct.C)(i))return t.interpolator(i)}else if(i&&ud(t.type))return t.interpolator(Cm(mv(i,e.reverse),e.interpolate,e.interpolateGamma));i&&e.interpolate&&t.interpolate?t.interpolate(Fm(e.interpolate,e.interpolateGamma)):Object(ct.C)(t.round)?t.round(r):Object(ct.C)(t.rangeRound)&&t.interpolate(r?Gp:Ip);i&&t.range(mv(i,e.reverse))}(r,t,function(t,e,n){let r=e.bins;if(r&&!Object(ct.z)(r)){const e=(null==r.start||null==r.stop)&&t.domain(),n=null==r.start?e[0]:r.start,i=null==r.stop?Object(ct.R)(e):r.stop,o=r.step;o||Object(ct.n)("Scale bins parameter missing step property."),r=ji(n,i+o,o)}r?t.bins=r:t.bins&&delete t.bins;t.type===od&&(r?e.domain||e.domainRaw||(t.domain(r),n=r.length):t.bins=t.domain());return n}(r,t,function(t,e,n){var r=function(t,e,n){return e?(t.domain(pv(t.type,e,n)),e.length):-1}(t,e.domainRaw,n);if(r>-1)return r;var i,o,a=e.domain,u=t.type,s=e.zero||void 0===e.zero&&function(t){const e=t.type;return!t.bins&&(e===Wh||e===Gh||e===Yh)}(t);if(!a)return 0;fv(u)&&e.padding&&a[0]!==Object(ct.R)(a)&&(a=function(t,e,n,r,i,o){var a=Math.abs(Object(ct.R)(n)-n[0]),u=a/(a-2*r),s=t===Hh?Object(ct.ib)(e,null,u):t===Yh?Object(ct.jb)(e,null,u,.5):t===Gh?Object(ct.jb)(e,null,u,i||1):t===Vh?Object(ct.kb)(e,null,u,o||1):Object(ct.hb)(e,null,u);return(e=e.slice())[0]=s[0],e[e.length-1]=s[1],e}(u,a,e.range,e.padding,e.exponent,e.constant));(s||null!=e.domainMin||null!=e.domainMax||null!=e.domainMid)&&(i=(a=a.slice()).length-1||1,s&&(a[0]>0&&(a[0]=0),a[i]<0&&(a[i]=0)),null!=e.domainMin&&(a[0]=e.domainMin),null!=e.domainMax&&(a[i]=e.domainMax),null!=e.domainMid&&(((o=e.domainMid)<a[0]||o>a[i])&&n.warn("Scale domainMid exceeds domain min or max.",o),a.splice(i,0,o)));t.domain(pv(u,a,n)),u===nd&&t.unknown(e.domainImplicit?bd:void 0);e.nice&&t.nice&&t.nice(!0!==e.nice&&Rm(t,e.nice)||null);return a.length}(r,t,n))),e.fork(e.NO_SOURCE|e.NO_FIELDS)},Object(ct.x)(vv,ei).transform=function(t,e){var n=t.modified("sort")||e.changed(e.ADD)||e.modified(t.sort.fields)||e.modified("datum");return n&&e.source.sort(t.sort),this.modified(n),e};var yv=["y0","y1"];function bv(t){ei.call(this,null,t)}function xv(t,e,n,r,i){for(var o,a=(e-t.sum)/2,u=t.length,s=0;s<u;++s)(o=t[s])[r]=a,o[i]=a+=Math.abs(n(o))}function _v(t,e,n,r,i){for(var o,a=1/t.sum,u=0,s=t.length,c=0,l=0;c<s;++c)(o=t[c])[r]=u,o[i]=u=a*(l+=Math.abs(n(o)))}function wv(t,e,n,r,i){for(var o,a,u=0,s=0,c=t.length,l=0;l<c;++l)(o=+n(a=t[l]))<0?(a[r]=s,a[i]=s+=o):(a[r]=u,a[i]=u+=o)}bv.Definition={type:"Stack",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"groupby",type:"field",array:!0},{name:"sort",type:"compare"},{name:"offset",type:"enum",default:"zero",values:["zero","center","normalize"]},{name:"as",type:"string",array:!0,length:2,default:yv}]},Object(ct.x)(bv,ei).transform=function(t,e){var n,r,i,o,a=t.as||yv,u=a[0],s=a[1],c=t.field||ct.L,l="center"===t.offset?xv:"normalize"===t.offset?_v:wv;for(n=function(t,e,n,r){var i,o,a,u,s,c,l,f,h,d=[],p=function(t){return t(s)};if(null==e)d.push(t.slice());else for(i={},o=0,a=t.length;o<a;++o)s=t[o],c=e.map(p),(l=i[c])||(i[c]=l=[],d.push(l)),l.push(s);for(c=0,h=0,u=d.length;c<u;++c){for(l=d[c],o=0,f=0,a=l.length;o<a;++o)f+=Math.abs(r(l[o]));l.sum=f,f>h&&(h=f),n&&l.sort(n)}return d.max=h,d}(e.source,t.groupby,t.sort,c),r=0,i=n.length,o=n.max;r<i;++r)l(n[r],o,c,u,s);return e.reflow(t.modified()).modifies(a)};var Ov=function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN};var kv,Av;1===(kv=Ov).length&&(Av=kv,kv=function(t,e){return Ov(Av(t),e)});var Ev=function(t,e){var n,r,i,o=t.length,a=-1;if(null==e){for(;++a<o;)if(null!=(n=t[a])&&n>=n)for(r=i=n;++a<o;)null!=(n=t[a])&&(r>n&&(r=n),i<n&&(i=n))}else for(;++a<o;)if(null!=(n=e(t[a],a,t))&&n>=n)for(r=i=n;++a<o;)null!=(n=e(t[a],a,t))&&(r>n&&(r=n),i<n&&(i=n));return[r,i]},jv=Array.prototype,Sv=(jv.slice,jv.map,function(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((e-t)/n)),o=new Array(i);++r<i;)o[r]=t+r*n;return o}),Cv=Math.sqrt(50),Mv=Math.sqrt(10),Dv=Math.sqrt(2);function Fv(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Cv?i*=10:o>=Mv?i*=5:o>=Dv&&(i*=2),e<t?-i:i}var Nv=function(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1},zv=function(t,e){var n,r,i=t.length,o=-1;if(null==e){for(;++o<i;)if(null!=(n=t[o])&&n>=n)for(r=n;++o<i;)null!=(n=t[o])&&n>r&&(r=n)}else for(;++o<i;)if(null!=(n=e(t[o],o,t))&&n>=n)for(r=n;++o<i;)null!=(n=e(t[o],o,t))&&n>r&&(r=n);return r};var Tv=Array.prototype.slice,$v=function(t,e){return t-e},Rv=function(t){for(var e=0,n=t.length,r=t[n-1][1]*t[0][0]-t[n-1][0]*t[0][1];++e<n;)r+=t[e-1][1]*t[e][0]-t[e-1][0]*t[e][1];return r},Bv=function(t){return function(){return t}},Pv=function(t,e){for(var n,r=-1,i=e.length;++r<i;)if(n=Lv(t,e[r]))return n;return 0};function Lv(t,e){for(var n=e[0],r=e[1],i=-1,o=0,a=t.length,u=a-1;o<a;u=o++){var s=t[o],c=s[0],l=s[1],f=t[u],h=f[0],d=f[1];if(Uv(s,f,e))return 0;l>r!=d>r&&n<(h-c)*(r-l)/(d-l)+c&&(i=-i)}return i}function Uv(t,e,n){var r,i,o,a;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(i=t[r=+(t[0]===e[0])],o=n[r],a=e[r],i<=o&&o<=a||a<=o&&o<=i)}var qv=function(){},Iv=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]],Wv=function(){var t=1,e=1,n=Nv,r=u;function i(t){var e=n(t);if(Array.isArray(e))e=e.slice().sort($v);else{var r=Ev(t),i=r[0],a=r[1];e=Fv(i,a,e),e=Sv(Math.floor(i/e)*e,Math.floor(a/e)*e,e)}return e.map(function(e){return o(t,e)})}function o(n,i){var o=[],u=[];return function(n,r,i){var o,u,s,c,l,f,h=new Array,d=new Array;o=u=-1,c=n[0]>=r,Iv[c<<1].forEach(p);for(;++o<t-1;)s=c,c=n[o+1]>=r,Iv[s|c<<1].forEach(p);Iv[c<<0].forEach(p);for(;++u<e-1;){for(o=-1,c=n[u*t+t]>=r,l=n[u*t]>=r,Iv[c<<1|l<<2].forEach(p);++o<t-1;)s=c,c=n[u*t+t+o+1]>=r,f=l,l=n[u*t+o+1]>=r,Iv[s|c<<1|l<<2|f<<3].forEach(p);Iv[c|l<<3].forEach(p)}o=-1,l=n[u*t]>=r,Iv[l<<2].forEach(p);for(;++o<t-1;)f=l,l=n[u*t+o+1]>=r,Iv[l<<2|f<<3].forEach(p);function p(t){var e,n,r=[t[0][0]+o,t[0][1]+u],s=[t[1][0]+o,t[1][1]+u],c=a(r),l=a(s);(e=d[c])?(n=h[l])?(delete d[e.end],delete h[n.start],e===n?(e.ring.push(s),i(e.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete d[e.end],e.ring.push(s),d[e.end=l]=e):(e=h[l])?(n=d[c])?(delete h[e.start],delete d[n.end],e===n?(e.ring.push(s),i(e.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete h[e.start],e.ring.unshift(r),h[e.start=c]=e):h[c]=d[l]={start:c,end:l,ring:[r,s]}}Iv[l<<3].forEach(p)}(n,i,function(t){r(t,n,i),Rv(t)>0?o.push([t]):u.push(t)}),u.forEach(function(t){for(var e,n=0,r=o.length;n<r;++n)if(-1!==Pv((e=o[n])[0],t))return void e.push(t)}),{type:"MultiPolygon",value:i,coordinates:o}}function a(e){return 2*e[0]+e[1]*(t+1)*4}function u(n,r,i){n.forEach(function(n){var o,a=n[0],u=n[1],s=0|a,c=0|u,l=r[c*t+s];a>0&&a<t&&s===a&&(o=r[c*t+s-1],n[0]=a+(i-o)/(l-o)-.5),u>0&&u<e&&c===u&&(o=r[(c-1)*t+s],n[1]=u+(i-o)/(l-o)-.5)})}return i.contour=o,i.size=function(n){if(!arguments.length)return[t,e];var r=Math.ceil(n[0]),o=Math.ceil(n[1]);if(!(r>0&&o>0))throw new Error("invalid size");return t=r,e=o,i},i.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?Bv(Tv.call(t)):Bv(t),i):n},i.smooth=function(t){return arguments.length?(r=t?u:qv,i):r===u},i};function Hv(t,e,n){for(var r=t.width,i=t.height,o=1+(n<<1),a=0;a<i;++a)for(var u=0,s=0;u<r+n;++u)u<r&&(s+=t.data[u+a*r]),u>=n&&(u>=o&&(s-=t.data[u-o+a*r]),e.data[u-n+a*r]=s/Math.min(u+1,r-1+o-u,o))}function Gv(t,e,n){for(var r=t.width,i=t.height,o=1+(n<<1),a=0;a<r;++a)for(var u=0,s=0;u<i+n;++u)u<i&&(s+=t.data[a+u*r]),u>=n&&(u>=o&&(s-=t.data[a+(u-o)*r]),e.data[a+(u-n)*r]=s/Math.min(u+1,i-1+o-u,o))}function Yv(t){return t[0]}function Vv(t){return t[1]}function Xv(){return 1}var Jv=["size","smooth"],Zv=["x","y","weight","size","cellSize","bandwidth"];function Qv(t){ei.call(this,null,t)}Qv.Definition={type:"Contour",metadata:{generates:!0},params:[{name:"size",type:"number",array:!0,length:2,required:!0},{name:"values",type:"number",array:!0},{name:"x",type:"field"},{name:"y",type:"field"},{name:"weight",type:"field"},{name:"cellSize",type:"number"},{name:"bandwidth",type:"number"},{name:"count",type:"number"},{name:"smooth",type:"boolean"},{name:"nice",type:"boolean",default:!1},{name:"thresholds",type:"number",array:!0}]},Object(ct.x)(Qv,ei).transform=function(t,e){if(this.value&&!e.changed()&&!t.modified())return e.StopPropagation;var n,r,i,o,a=e.fork(e.NO_SOURCE|e.NO_FIELDS),u=t.count||10;return t.values?(n=Wv(),r=Jv,i=t.values):(n=function(){var t=Yv,e=Vv,n=Xv,r=960,i=500,o=20,a=2,u=3*o,s=r+2*u>>a,c=i+2*u>>a,l=Bv(20);function f(r){var i=new Float32Array(s*c),f=new Float32Array(s*c);r.forEach(function(r,o,l){var f=+t(r,o,l)+u>>a,h=+e(r,o,l)+u>>a,d=+n(r,o,l);f>=0&&f<s&&h>=0&&h<c&&(i[f+h*s]+=d)}),Hv({width:s,height:c,data:i},{width:s,height:c,data:f},o>>a),Gv({width:s,height:c,data:f},{width:s,height:c,data:i},o>>a),Hv({width:s,height:c,data:i},{width:s,height:c,data:f},o>>a),Gv({width:s,height:c,data:f},{width:s,height:c,data:i},o>>a),Hv({width:s,height:c,data:i},{width:s,height:c,data:f},o>>a),Gv({width:s,height:c,data:f},{width:s,height:c,data:i},o>>a);var d=l(i);if(!Array.isArray(d)){var p=zv(i);d=Fv(0,p,d),(d=Sv(0,Math.floor(p/d)*d,d)).shift()}return Wv().thresholds(d).size([s,c])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*a),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(g)}function g(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function m(){return s=r+2*(u=3*o)>>a,c=i+2*u>>a,f}return f.x=function(e){return arguments.length?(t="function"==typeof e?e:Bv(+e),f):t},f.y=function(t){return arguments.length?(e="function"==typeof t?t:Bv(+t),f):e},f.weight=function(t){return arguments.length?(n="function"==typeof t?t:Bv(+t),f):n},f.size=function(t){if(!arguments.length)return[r,i];var e=Math.ceil(t[0]),n=Math.ceil(t[1]);if(!(e>=0||e>=0))throw new Error("invalid size");return r=e,i=n,m()},f.cellSize=function(t){if(!arguments.length)return 1<<a;if(!((t=+t)>=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),m()},f.thresholds=function(t){return arguments.length?(l="function"==typeof t?t:Array.isArray(t)?Bv(Tv.call(t)):Bv(t),f):l},f.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=Math.round((Math.sqrt(4*t*t+1)-1)/2),m()},f}(),r=Zv,i=e.materialize(e.SOURCE).source),n.thresholds(t.thresholds||(t.nice?u:(o=u,function(t){for(var e=Ai(t),n=e[0],r=e[1]-n,i=[],a=1;a<=o;++a)i.push(n+r*a/(o+1));return i}))),r.forEach(function(e){null!=t[e]&&n[e](t[e])}),this.value&&(a.rem=this.value),i=i&&i.length?n(i).map(vt):[],this.value=a.source=a.add=i,a};var Kv="Feature",ty="FeatureCollection";function ey(t){ei.call(this,null,t)}ey.Definition={type:"GeoJSON",metadata:{},params:[{name:"fields",type:"field",array:!0,length:2},{name:"geojson",type:"field"}]},Object(ct.x)(ey,ei).transform=function(t,e){var n,r=this._features,i=this._points,o=t.fields,a=o&&o[0],u=o&&o[1],s=t.geojson,c=e.ADD;n=t.modified()||e.changed(e.REM)||e.modified(Object(ct.g)(s))||a&&e.modified(Object(ct.g)(a))||u&&e.modified(Object(ct.g)(u)),this.value&&!n||(c=e.SOURCE,this._features=r=[],this._points=i=[]),s&&e.visit(c,function(t){r.push(s(t))}),a&&u&&(e.visit(c,function(t){var e=a(t),n=u(t);null!=e&&null!=n&&(e=+e)===e&&(n=+n)===n&&i.push([e,n])}),r=r.concat({type:Kv,geometry:{type:"MultiPoint",coordinates:i}})),this.value={type:ty,features:r}};var ny=function(){return new ry};function ry(){this.reset()}ry.prototype={constructor:ry,reset:function(){this.s=this.t=0},add:function(t){oy(iy,t,this.t),oy(this,iy.s,this.s),this.s?this.t+=iy.t:this.s=iy.t},valueOf:function(){return this.s}};var iy=new ry;function oy(t,e,n){var r=t.s=e+n,i=r-e,o=r-i;t.t=e-o+(n-i)}var ay=1e-6,uy=Math.PI,sy=uy/2,cy=uy/4,ly=2*uy,fy=180/uy,hy=uy/180,dy=Math.abs,py=Math.atan,gy=Math.atan2,my=Math.cos,vy=Math.ceil,yy=Math.exp,by=(Math.floor,Math.log),xy=Math.pow,_y=Math.sin,wy=Math.sign||function(t){return t>0?1:t<0?-1:0},Oy=Math.sqrt,ky=Math.tan;function Ay(t){return t>1?0:t<-1?uy:Math.acos(t)}function Ey(t){return t>1?sy:t<-1?-sy:Math.asin(t)}function jy(){}function Sy(t,e){t&&My.hasOwnProperty(t.type)&&My[t.type](t,e)}var Cy={Feature:function(t,e){Sy(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r<i;)Sy(n[r].geometry,e)}},My={Sphere:function(t,e){e.sphere()},Point:function(t,e){t=t.coordinates,e.point(t[0],t[1],t[2])},MultiPoint:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)t=n[r],e.point(t[0],t[1],t[2])},LineString:function(t,e){Dy(t.coordinates,e,0)},MultiLineString:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)Dy(n[r],e,0)},Polygon:function(t,e){Fy(t.coordinates,e)},MultiPolygon:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)Fy(n[r],e)},GeometryCollection:function(t,e){for(var n=t.geometries,r=-1,i=n.length;++r<i;)Sy(n[r],e)}};function Dy(t,e,n){var r,i=-1,o=t.length-n;for(e.lineStart();++i<o;)r=t[i],e.point(r[0],r[1],r[2]);e.lineEnd()}function Fy(t,e){var n=-1,r=t.length;for(e.polygonStart();++n<r;)Dy(t[n],e,1);e.polygonEnd()}var Ny,zy,Ty,$y,Ry,By=function(t,e){t&&Cy.hasOwnProperty(t.type)?Cy[t.type](t,e):Sy(t,e)},Py=ny(),Ly=ny(),Uy={point:jy,lineStart:jy,lineEnd:jy,polygonStart:function(){Py.reset(),Uy.lineStart=qy,Uy.lineEnd=Iy},polygonEnd:function(){var t=+Py;Ly.add(t<0?ly+t:t),this.lineStart=this.lineEnd=this.point=jy},sphere:function(){Ly.add(ly)}};function qy(){Uy.point=Wy}function Iy(){Hy(Ny,zy)}function Wy(t,e){Uy.point=Hy,Ny=t,zy=e,Ty=t*=hy,$y=my(e=(e*=hy)/2+cy),Ry=_y(e)}function Hy(t,e){var n=(t*=hy)-Ty,r=n>=0?1:-1,i=r*n,o=my(e=(e*=hy)/2+cy),a=_y(e),u=Ry*a,s=$y*o+u*my(i),c=u*r*_y(i);Py.add(gy(c,s)),Ty=t,$y=o,Ry=a}function Gy(t){return[gy(t[1],t[0]),Ey(t[2])]}function Yy(t){var e=t[0],n=t[1],r=my(n);return[r*my(e),r*_y(e),_y(n)]}function Vy(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Xy(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function Jy(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Zy(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function Qy(t){var e=Oy(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var Ky,tb,eb,nb,rb,ib,ob,ab,ub,sb,cb=ny(),lb={point:fb,lineStart:db,lineEnd:pb,polygonStart:function(){lb.point=gb,lb.lineStart=mb,lb.lineEnd=vb,cb.reset(),Uy.polygonStart()},polygonEnd:function(){Uy.polygonEnd(),lb.point=fb,lb.lineStart=db,lb.lineEnd=pb,Py<0?(Ky=-(eb=180),tb=-(nb=90)):cb>ay?nb=90:cb<-ay&&(tb=-90),sb[0]=Ky,sb[1]=eb}};function fb(t,e){ub.push(sb=[Ky=t,eb=t]),e<tb&&(tb=e),e>nb&&(nb=e)}function hb(t,e){var n=Yy([t*hy,e*hy]);if(ab){var r=Xy(ab,n),i=Xy([r[1],-r[0],0],r);Qy(i),i=Gy(i);var o,a=t-rb,u=a>0?1:-1,s=i[0]*fy*u,c=dy(a)>180;c^(u*rb<s&&s<u*t)?(o=i[1]*fy)>nb&&(nb=o):c^(u*rb<(s=(s+360)%360-180)&&s<u*t)?(o=-i[1]*fy)<tb&&(tb=o):(e<tb&&(tb=e),e>nb&&(nb=e)),c?t<rb?yb(Ky,t)>yb(Ky,eb)&&(eb=t):yb(t,eb)>yb(Ky,eb)&&(Ky=t):eb>=Ky?(t<Ky&&(Ky=t),t>eb&&(eb=t)):t>rb?yb(Ky,t)>yb(Ky,eb)&&(eb=t):yb(t,eb)>yb(Ky,eb)&&(Ky=t)}else ub.push(sb=[Ky=t,eb=t]);e<tb&&(tb=e),e>nb&&(nb=e),ab=n,rb=t}function db(){lb.point=hb}function pb(){sb[0]=Ky,sb[1]=eb,lb.point=fb,ab=null}function gb(t,e){if(ab){var n=t-rb;cb.add(dy(n)>180?n+(n>0?360:-360):n)}else ib=t,ob=e;Uy.point(t,e),hb(t,e)}function mb(){Uy.lineStart()}function vb(){gb(ib,ob),Uy.lineEnd(),dy(cb)>ay&&(Ky=-(eb=180)),sb[0]=Ky,sb[1]=eb,ab=null}function yb(t,e){return(e-=t)<0?e+360:e}function bb(t,e){return t[0]-e[0]}function xb(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:e<t[0]||t[1]<e}var _b,wb,Ob,kb,Ab,Eb,jb,Sb,Cb,Mb,Db,Fb,Nb,zb,Tb,$b,Rb={sphere:jy,point:Bb,lineStart:Lb,lineEnd:Ib,polygonStart:function(){Rb.lineStart=Wb,Rb.lineEnd=Hb},polygonEnd:function(){Rb.lineStart=Lb,Rb.lineEnd=Ib}};function Bb(t,e){t*=hy;var n=my(e*=hy);Pb(n*my(t),n*_y(t),_y(e))}function Pb(t,e,n){Ob+=(t-Ob)/++_b,kb+=(e-kb)/_b,Ab+=(n-Ab)/_b}function Lb(){Rb.point=Ub}function Ub(t,e){t*=hy;var n=my(e*=hy);zb=n*my(t),Tb=n*_y(t),$b=_y(e),Rb.point=qb,Pb(zb,Tb,$b)}function qb(t,e){t*=hy;var n=my(e*=hy),r=n*my(t),i=n*_y(t),o=_y(e),a=gy(Oy((a=Tb*o-$b*i)*a+(a=$b*r-zb*o)*a+(a=zb*i-Tb*r)*a),zb*r+Tb*i+$b*o);wb+=a,Eb+=a*(zb+(zb=r)),jb+=a*(Tb+(Tb=i)),Sb+=a*($b+($b=o)),Pb(zb,Tb,$b)}function Ib(){Rb.point=Bb}function Wb(){Rb.point=Gb}function Hb(){Yb(Fb,Nb),Rb.point=Bb}function Gb(t,e){Fb=t,Nb=e,t*=hy,e*=hy,Rb.point=Yb;var n=my(e);zb=n*my(t),Tb=n*_y(t),$b=_y(e),Pb(zb,Tb,$b)}function Yb(t,e){t*=hy;var n=my(e*=hy),r=n*my(t),i=n*_y(t),o=_y(e),a=Tb*o-$b*i,u=$b*r-zb*o,s=zb*i-Tb*r,c=Oy(a*a+u*u+s*s),l=Ey(c),f=c&&-l/c;Cb+=f*a,Mb+=f*u,Db+=f*s,wb+=l,Eb+=l*(zb+(zb=r)),jb+=l*(Tb+(Tb=i)),Sb+=l*($b+($b=o)),Pb(zb,Tb,$b)}var Vb=function(t,e){function n(n,r){return n=t(n,r),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,r){return(n=e.invert(n,r))&&t.invert(n[0],n[1])}),n};function Xb(t,e){return[dy(t)>uy?t+Math.round(-t/ly)*ly:t,e]}function Jb(t,e,n){return(t%=ly)?e||n?Vb(Qb(t),Kb(e,n)):Qb(t):e||n?Kb(e,n):Xb}function Zb(t){return function(e,n){return[(e+=t)>uy?e-ly:e<-uy?e+ly:e,n]}}function Qb(t){var e=Zb(t);return e.invert=Zb(-t),e}function Kb(t,e){var n=my(t),r=_y(t),i=my(e),o=_y(e);function a(t,e){var a=my(e),u=my(t)*a,s=_y(t)*a,c=_y(e),l=c*n+u*r;return[gy(s*i-l*o,u*n-c*r),Ey(l*i+s*o)]}return a.invert=function(t,e){var a=my(e),u=my(t)*a,s=_y(t)*a,c=_y(e),l=c*i-s*o;return[gy(s*i+c*o,u*n+l*r),Ey(l*n-u*r)]},a}Xb.invert=Xb;var tx=function(t){function e(e){return(e=t(e[0]*hy,e[1]*hy))[0]*=fy,e[1]*=fy,e}return t=Jb(t[0]*hy,t[1]*hy,t.length>2?t[2]*hy:0),e.invert=function(e){return(e=t.invert(e[0]*hy,e[1]*hy))[0]*=fy,e[1]*=fy,e},e};function ex(t,e,n,r,i,o){if(n){var a=my(e),u=_y(e),s=r*n;null==i?(i=e+r*ly,o=e-s/2):(i=nx(a,i),o=nx(a,o),(r>0?i<o:i>o)&&(i+=r*ly));for(var c,l=i;r>0?l>o:l<o;l-=s)c=Gy([a,-u*my(l),-u*_y(l)]),t.point(c[0],c[1])}}function nx(t,e){(e=Yy(e))[0]-=t,Qy(e);var n=Ay(-e[1]);return((-e[2]<0?-n:n)+ly-ay)%ly}var rx=function(){var t,e=[];return{point:function(e,n){t.push([e,n])},lineStart:function(){e.push(t=[])},lineEnd:jy,rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}},ix=function(t,e){return dy(t[0]-e[0])<ay&&dy(t[1]-e[1])<ay};function ox(t,e,n,r){this.x=t,this.z=e,this.o=n,this.e=r,this.v=!1,this.n=this.p=null}var ax=function(t,e,n,r,i){var o,a,u=[],s=[];if(t.forEach(function(t){if(!((e=t.length-1)<=0)){var e,n,r=t[0],a=t[e];if(ix(r,a)){for(i.lineStart(),o=0;o<e;++o)i.point((r=t[o])[0],r[1]);i.lineEnd()}else u.push(n=new ox(r,t,null,!0)),s.push(n.o=new ox(r,null,n,!1)),u.push(n=new ox(a,t,null,!1)),s.push(n.o=new ox(a,null,n,!0))}}),u.length){for(s.sort(e),ux(u),ux(s),o=0,a=s.length;o<a;++o)s[o].e=n=!n;for(var c,l,f=u[0];;){for(var h=f,d=!0;h.v;)if((h=h.n)===f)return;c=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(o=0,a=c.length;o<a;++o)i.point((l=c[o])[0],l[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(d)for(c=h.p.z,o=c.length-1;o>=0;--o)i.point((l=c[o])[0],l[1]);else r(h.x,h.p.x,-1,i);h=h.p}c=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}};function ux(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r<e;)i.n=n=t[r],n.p=i,i=n;i.n=n=t[0],n.p=i}}var sx=ny(),cx=function(t,e){var n=e[0],r=e[1],i=_y(r),o=[_y(n),-my(n),0],a=0,u=0;sx.reset(),1===i?r=sy+ay:-1===i&&(r=-sy-ay);for(var s=0,c=t.length;s<c;++s)if(f=(l=t[s]).length)for(var l,f,h=l[f-1],d=h[0],p=h[1]/2+cy,g=_y(p),m=my(p),v=0;v<f;++v,d=b,g=_,m=w,h=y){var y=l[v],b=y[0],x=y[1]/2+cy,_=_y(x),w=my(x),O=b-d,k=O>=0?1:-1,A=k*O,E=A>uy,j=g*_;if(sx.add(gy(j*k*_y(A),m*w+j*my(A))),a+=E?O+k*ly:O,E^d>=n^b>=n){var S=Xy(Yy(h),Yy(y));Qy(S);var C=Xy(o,S);Qy(C);var M=(E^O>=0?-1:1)*Ey(C[2]);(r>M||r===M&&(S[0]||S[1]))&&(u+=E^O>=0?1:-1)}}return(a<-ay||a<ay&&sx<-ay)^1&u},lx=function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN};var fx=function(t){return 1===t.length&&(t=function(t){return function(e,n){return lx(t(e),n)}}(t)),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var o=r+i>>>1;t(e[o],n)<0?r=o+1:i=o}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var o=r+i>>>1;t(e[o],n)>0?i=o:r=o+1}return r}}}(lx);fx.right,fx.left;var hx=Array.prototype,dx=(hx.slice,hx.map,function(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((e-t)/n)),o=new Array(i);++r<i;)o[r]=t+r*n;return o});Math.sqrt(50),Math.sqrt(10),Math.sqrt(2);var px=function(t){for(var e,n,r,i=t.length,o=-1,a=0;++o<i;)a+=t[o].length;for(n=new Array(a);--i>=0;)for(e=(r=t[i]).length;--e>=0;)n[--a]=r[e];return n};var gx=function(t,e,n,r){return function(i){var o,a,u,s=e(i),c=rx(),l=e(c),f=!1,h={point:d,lineStart:g,lineEnd:m,polygonStart:function(){h.point=v,h.lineStart=y,h.lineEnd=b,a=[],o=[]},polygonEnd:function(){h.point=d,h.lineStart=g,h.lineEnd=m,a=px(a);var t=cx(o,r);a.length?(f||(i.polygonStart(),f=!0),ax(a,vx,t,n,i)):t&&(f||(i.polygonStart(),f=!0),i.lineStart(),n(null,null,1,i),i.lineEnd()),f&&(i.polygonEnd(),f=!1),a=o=null},sphere:function(){i.polygonStart(),i.lineStart(),n(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(e,n){t(e,n)&&i.point(e,n)}function p(t,e){s.point(t,e)}function g(){h.point=p,s.lineStart()}function m(){h.point=d,s.lineEnd()}function v(t,e){u.push([t,e]),l.point(t,e)}function y(){l.lineStart(),u=[]}function b(){v(u[0][0],u[0][1]),l.lineEnd();var t,e,n,r,s=l.clean(),h=c.result(),d=h.length;if(u.pop(),o.push(u),u=null,d)if(1&s){if((e=(n=h[0]).length-1)>0){for(f||(i.polygonStart(),f=!0),i.lineStart(),t=0;t<e;++t)i.point((r=n[t])[0],r[1]);i.lineEnd()}}else d>1&&2&s&&h.push(h.pop().concat(h.shift())),a.push(h.filter(mx))}return h}};function mx(t){return t.length>1}function vx(t,e){return((t=t.x)[0]<0?t[1]-sy-ay:sy-t[1])-((e=e.x)[0]<0?e[1]-sy-ay:sy-e[1])}var yx=gx(function(){return!0},function(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(o,a){var u=o>0?uy:-uy,s=dy(o-n);dy(s-uy)<ay?(t.point(n,r=(r+a)/2>0?sy:-sy),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),e=0):i!==u&&s>=uy&&(dy(n-i)<ay&&(n-=i*ay),dy(o-u)<ay&&(o-=u*ay),r=function(t,e,n,r){var i,o,a=_y(t-n);return dy(a)>ay?py((_y(e)*(o=my(r))*_y(n)-_y(r)*(i=my(e))*_y(t))/(i*o*a)):(e+r)/2}(n,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),e=0),t.point(n=o,r=a),i=u},lineEnd:function(){t.lineEnd(),n=r=NaN},clean:function(){return 2-e}}},function(t,e,n,r){var i;if(null==t)i=n*sy,r.point(-uy,i),r.point(0,i),r.point(uy,i),r.point(uy,0),r.point(uy,-i),r.point(0,-i),r.point(-uy,-i),r.point(-uy,0),r.point(-uy,i);else if(dy(t[0]-e[0])>ay){var o=t[0]<e[0]?uy:-uy;i=n*o/2,r.point(-o,i),r.point(0,i),r.point(o,i)}else r.point(e[0],e[1])},[-uy,-sy]);var bx=function(t){var e=my(t),n=6*hy,r=e>0,i=dy(e)>ay;function o(t,n){return my(t)*my(n)>e}function a(t,n,r){var i=[1,0,0],o=Xy(Yy(t),Yy(n)),a=Vy(o,o),u=o[0],s=a-u*u;if(!s)return!r&&t;var c=e*a/s,l=-e*u/s,f=Xy(i,o),h=Zy(i,c);Jy(h,Zy(o,l));var d=f,p=Vy(h,d),g=Vy(d,d),m=p*p-g*(Vy(h,h)-1);if(!(m<0)){var v=Oy(m),y=Zy(d,(-p-v)/g);if(Jy(y,h),y=Gy(y),!r)return y;var b,x=t[0],_=n[0],w=t[1],O=n[1];_<x&&(b=x,x=_,_=b);var k=_-x,A=dy(k-uy)<ay;if(!A&&O<w&&(b=w,w=O,O=b),A||k<ay?A?w+O>0^y[1]<(dy(y[0]-x)<ay?w:O):w<=y[1]&&y[1]<=O:k>uy^(x<=y[0]&&y[0]<=_)){var E=Zy(d,(-p+v)/g);return Jy(E,h),[y,Gy(E)]}}}function u(e,n){var i=r?t:uy-t,o=0;return e<-i?o|=1:e>i&&(o|=2),n<-i?o|=4:n>i&&(o|=8),o}return gx(o,function(t){var e,n,s,c,l;return{lineStart:function(){c=s=!1,l=1},point:function(f,h){var d,p=[f,h],g=o(f,h),m=r?g?0:u(f,h):g?u(f+(f<0?uy:-uy),h):0;if(!e&&(c=s=g)&&t.lineStart(),g!==s&&(!(d=a(e,p))||ix(e,d)||ix(p,d))&&(p[0]+=ay,p[1]+=ay,g=o(p[0],p[1])),g!==s)l=0,g?(t.lineStart(),d=a(p,e),t.point(d[0],d[1])):(d=a(e,p),t.point(d[0],d[1]),t.lineEnd()),e=d;else if(i&&e&&r^g){var v;m&n||!(v=a(p,e,!0))||(l=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||e&&ix(e,p)||t.point(p[0],p[1]),e=p,s=g,n=m},lineEnd:function(){s&&t.lineEnd(),e=null},clean:function(){return l|(c&&s)<<1}}},function(e,r,i,o){ex(o,t,n,i,e,r)},r?[0,-t]:[-uy,t-uy])},xx=function(t,e,n,r,i,o){var a,u=t[0],s=t[1],c=0,l=1,f=e[0]-u,h=e[1]-s;if(a=n-u,f||!(a>0)){if(a/=f,f<0){if(a<c)return;a<l&&(l=a)}else if(f>0){if(a>l)return;a>c&&(c=a)}if(a=i-u,f||!(a<0)){if(a/=f,f<0){if(a>l)return;a>c&&(c=a)}else if(f>0){if(a<c)return;a<l&&(l=a)}if(a=r-s,h||!(a>0)){if(a/=h,h<0){if(a<c)return;a<l&&(l=a)}else if(h>0){if(a>l)return;a>c&&(c=a)}if(a=o-s,h||!(a<0)){if(a/=h,h<0){if(a>l)return;a>c&&(c=a)}else if(h>0){if(a<c)return;a<l&&(l=a)}return c>0&&(t[0]=u+c*f,t[1]=s+c*h),l<1&&(e[0]=u+l*f,e[1]=s+l*h),!0}}}}},_x=1e9,wx=-_x;function Ox(t,e,n,r){function i(i,o){return t<=i&&i<=n&&e<=o&&o<=r}function o(i,o,u,c){var l=0,f=0;if(null==i||(l=a(i,u))!==(f=a(o,u))||s(i,o)<0^u>0)do{c.point(0===l||3===l?t:n,l>1?r:e)}while((l=(l+u+4)%4)!==f);else c.point(o[0],o[1])}function a(r,i){return dy(r[0]-t)<ay?i>0?0:3:dy(r[0]-n)<ay?i>0?2:1:dy(r[1]-e)<ay?i>0?1:0:i>0?3:2}function u(t,e){return s(t.x,e.x)}function s(t,e){var n=a(t,1),r=a(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(a){var s,c,l,f,h,d,p,g,m,v,y,b=a,x=rx(),_={point:w,lineStart:function(){_.point=O,c&&c.push(l=[]);v=!0,m=!1,p=g=NaN},lineEnd:function(){s&&(O(f,h),d&&m&&x.rejoin(),s.push(x.result()));_.point=w,m&&b.lineEnd()},polygonStart:function(){b=x,s=[],c=[],y=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=c.length;n<i;++n)for(var o,a,u=c[n],s=1,l=u.length,f=u[0],h=f[0],d=f[1];s<l;++s)o=h,a=d,f=u[s],h=f[0],d=f[1],a<=r?d>r&&(h-o)*(r-a)>(d-a)*(t-o)&&++e:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--e;return e}(),n=y&&e,i=(s=px(s)).length;(n||i)&&(a.polygonStart(),n&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&ax(s,u,e,o,a),a.polygonEnd());b=a,s=c=l=null}};function w(t,e){i(t,e)&&b.point(t,e)}function O(o,a){var u=i(o,a);if(c&&l.push([o,a]),v)f=o,h=a,d=u,v=!1,u&&(b.lineStart(),b.point(o,a));else if(u&&m)b.point(o,a);else{var s=[p=Math.max(wx,Math.min(_x,p)),g=Math.max(wx,Math.min(_x,g))],x=[o=Math.max(wx,Math.min(_x,o)),a=Math.max(wx,Math.min(_x,a))];xx(s,x,t,e,n,r)?(m||(b.lineStart(),b.point(s[0],s[1])),b.point(x[0],x[1]),u||b.lineEnd(),y=!1):u&&(b.lineStart(),b.point(o,a),y=!1)}p=o,g=a,m=u}return _}}ny();function kx(t,e,n){var r=dx(t,e-ay,n).concat(e);return function(t){return r.map(function(e){return[t,e]})}}function Ax(t,e,n){var r=dx(t,e-ay,n).concat(e);return function(t){return r.map(function(e){return[e,t]})}}function Ex(){var t,e,n,r,i,o,a,u,s,c,l,f,h=10,d=h,p=90,g=360,m=2.5;function v(){return{type:"MultiLineString",coordinates:y()}}function y(){return dx(vy(r/p)*p,n,p).map(l).concat(dx(vy(u/g)*g,a,g).map(f)).concat(dx(vy(e/h)*h,t,h).filter(function(t){return dy(t%p)>ay}).map(s)).concat(dx(vy(o/d)*d,i,d).filter(function(t){return dy(t%g)>ay}).map(c))}return v.lines=function(){return y().map(function(t){return{type:"LineString",coordinates:t}})},v.outline=function(){return{type:"Polygon",coordinates:[l(r).concat(f(a).slice(1),l(n).reverse().slice(1),f(u).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(r=+t[0][0],n=+t[1][0],u=+t[0][1],a=+t[1][1],r>n&&(t=r,r=n,n=t),u>a&&(t=u,u=a,a=t),v.precision(m)):[[r,u],[n,a]]},v.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],o=+n[0][1],i=+n[1][1],e>t&&(n=e,e=t,t=n),o>i&&(n=o,o=i,i=n),v.precision(m)):[[e,o],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],v):[h,d]},v.precision=function(h){return arguments.length?(m=+h,s=kx(o,i,90),c=Ax(e,t,m),l=kx(u,a,90),f=Ax(r,n,m),v):m},v.extentMajor([[-180,-90+ay],[180,90-ay]]).extentMinor([[-180,-80-ay],[180,80+ay]])}var jx,Sx,Cx,Mx,Dx=function(t){return t},Fx=ny(),Nx=ny(),zx={point:jy,lineStart:jy,lineEnd:jy,polygonStart:function(){zx.lineStart=Tx,zx.lineEnd=Bx},polygonEnd:function(){zx.lineStart=zx.lineEnd=zx.point=jy,Fx.add(dy(Nx)),Nx.reset()},result:function(){var t=Fx/2;return Fx.reset(),t}};function Tx(){zx.point=$x}function $x(t,e){zx.point=Rx,jx=Cx=t,Sx=Mx=e}function Rx(t,e){Nx.add(Mx*t-Cx*e),Cx=t,Mx=e}function Bx(){Rx(jx,Sx)}var Px=zx,Lx=1/0,Ux=Lx,qx=-Lx,Ix=qx;var Wx,Hx,Gx,Yx,Vx={point:function(t,e){t<Lx&&(Lx=t);t>qx&&(qx=t);e<Ux&&(Ux=e);e>Ix&&(Ix=e)},lineStart:jy,lineEnd:jy,polygonStart:jy,polygonEnd:jy,result:function(){var t=[[Lx,Ux],[qx,Ix]];return qx=Ix=-(Ux=Lx=1/0),t}},Xx=0,Jx=0,Zx=0,Qx=0,Kx=0,t_=0,e_=0,n_=0,r_=0,i_={point:o_,lineStart:a_,lineEnd:c_,polygonStart:function(){i_.lineStart=l_,i_.lineEnd=f_},polygonEnd:function(){i_.point=o_,i_.lineStart=a_,i_.lineEnd=c_},result:function(){var t=r_?[e_/r_,n_/r_]:t_?[Qx/t_,Kx/t_]:Zx?[Xx/Zx,Jx/Zx]:[NaN,NaN];return Xx=Jx=Zx=Qx=Kx=t_=e_=n_=r_=0,t}};function o_(t,e){Xx+=t,Jx+=e,++Zx}function a_(){i_.point=u_}function u_(t,e){i_.point=s_,o_(Gx=t,Yx=e)}function s_(t,e){var n=t-Gx,r=e-Yx,i=Oy(n*n+r*r);Qx+=i*(Gx+t)/2,Kx+=i*(Yx+e)/2,t_+=i,o_(Gx=t,Yx=e)}function c_(){i_.point=o_}function l_(){i_.point=h_}function f_(){d_(Wx,Hx)}function h_(t,e){i_.point=d_,o_(Wx=Gx=t,Hx=Yx=e)}function d_(t,e){var n=t-Gx,r=e-Yx,i=Oy(n*n+r*r);Qx+=i*(Gx+t)/2,Kx+=i*(Yx+e)/2,t_+=i,e_+=(i=Yx*t-Gx*e)*(Gx+t),n_+=i*(Yx+e),r_+=3*i,o_(Gx=t,Yx=e)}var p_=i_;function g_(t){this._context=t}g_.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,ly)}},result:jy};var m_,v_,y_,b_,x_,__=ny(),w_={point:jy,lineStart:function(){w_.point=O_},lineEnd:function(){m_&&k_(v_,y_),w_.point=jy},polygonStart:function(){m_=!0},polygonEnd:function(){m_=null},result:function(){var t=+__;return __.reset(),t}};function O_(t,e){w_.point=k_,v_=b_=t,y_=x_=e}function k_(t,e){b_-=t,x_-=e,__.add(Oy(b_*b_+x_*x_)),b_=t,x_=e}var A_=w_;function E_(){this._string=[]}function j_(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}E_.prototype={_radius:4.5,_circle:j_(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=j_(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}};var S_=function(t,e){var n,r,i=4.5;function o(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),By(t,n(r))),r.result()}return o.area=function(t){return By(t,n(Px)),Px.result()},o.measure=function(t){return By(t,n(A_)),A_.result()},o.bounds=function(t){return By(t,n(Vx)),Vx.result()},o.centroid=function(t){return By(t,n(p_)),p_.result()},o.projection=function(e){return arguments.length?(n=null==e?(t=null,Dx):(t=e).stream,o):t},o.context=function(t){return arguments.length?(r=null==t?(e=null,new E_):new g_(e=t),"function"!=typeof i&&r.pointRadius(i),o):e},o.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),o):i},o.projection(t).context(e)};function C_(t){return function(e){var n=new M_;for(var r in t)n[r]=t[r];return n.stream=e,n}}function M_(){}function D_(t,e,n){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),By(n,t.stream(Vx)),e(Vx.result()),null!=r&&t.clipExtent(r),t}function F_(t,e,n){return D_(t,function(n){var r=e[1][0]-e[0][0],i=e[1][1]-e[0][1],o=Math.min(r/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),a=+e[0][0]+(r-o*(n[1][0]+n[0][0]))/2,u=+e[0][1]+(i-o*(n[1][1]+n[0][1]))/2;t.scale(150*o).translate([a,u])},n)}function N_(t,e,n){return F_(t,[[0,0],e],n)}function z_(t,e,n){return D_(t,function(n){var r=+e,i=r/(n[1][0]-n[0][0]),o=(r-i*(n[1][0]+n[0][0]))/2,a=-i*n[0][1];t.scale(150*i).translate([o,a])},n)}function T_(t,e,n){return D_(t,function(n){var r=+e,i=r/(n[1][1]-n[0][1]),o=-i*n[0][0],a=(r-i*(n[1][1]+n[0][1]))/2;t.scale(150*i).translate([o,a])},n)}M_.prototype={constructor:M_,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var $_=16,R_=my(30*hy),B_=function(t,e){return+e?function(t,e){function n(r,i,o,a,u,s,c,l,f,h,d,p,g,m){var v=c-r,y=l-i,b=v*v+y*y;if(b>4*e&&g--){var x=a+h,_=u+d,w=s+p,O=Oy(x*x+_*_+w*w),k=Ey(w/=O),A=dy(dy(w)-1)<ay||dy(o-f)<ay?(o+f)/2:gy(_,x),E=t(A,k),j=E[0],S=E[1],C=j-r,M=S-i,D=y*C-v*M;(D*D/b>e||dy((v*C+y*M)/b-.5)>.3||a*h+u*d+s*p<R_)&&(n(r,i,o,a,u,s,j,S,A,x/=O,_/=O,w,g,m),m.point(j,S),n(j,S,A,x,_,w,c,l,f,h,d,p,g,m))}}return function(e){var r,i,o,a,u,s,c,l,f,h,d,p,g={point:m,lineStart:v,lineEnd:b,polygonStart:function(){e.polygonStart(),g.lineStart=x},polygonEnd:function(){e.polygonEnd(),g.lineStart=v}};function m(n,r){n=t(n,r),e.point(n[0],n[1])}function v(){l=NaN,g.point=y,e.lineStart()}function y(r,i){var o=Yy([r,i]),a=t(r,i);n(l,f,c,h,d,p,l=a[0],f=a[1],c=r,h=o[0],d=o[1],p=o[2],$_,e),e.point(l,f)}function b(){g.point=m,e.lineEnd()}function x(){v(),g.point=_,g.lineEnd=w}function _(t,e){y(r=t,e),i=l,o=f,a=h,u=d,s=p,g.point=y}function w(){n(l,f,c,h,d,p,i,o,r,a,u,s,$_,e),g.lineEnd=b,b()}return g}}(t,e):function(t){return C_({point:function(e,n){e=t(e,n),this.stream.point(e[0],e[1])}})}(t)};var P_=C_({point:function(t,e){this.stream.point(t*hy,e*hy)}});function L_(t,e,n,r){var i=my(r),o=_y(r),a=i*t,u=o*t,s=i/t,c=o/t,l=(o*n-i*e)/t,f=(o*e+i*n)/t;function h(t,r){return[a*t-u*r+e,n-u*t-a*r]}return h.invert=function(t,e){return[s*t-c*e+l,f-c*t-s*e]},h}function U_(t){return q_(function(){return t})()}function q_(t){var e,n,r,i,o,a,u,s,c,l,f=150,h=480,d=250,p=0,g=0,m=0,v=0,y=0,b=0,x=null,_=yx,w=null,O=Dx,k=.5;function A(t){return s(t[0]*hy,t[1]*hy)}function E(t){return(t=s.invert(t[0],t[1]))&&[t[0]*fy,t[1]*fy]}function j(){var t=L_(f,0,0,b).apply(null,e(p,g)),r=(b?L_:function(t,e,n){function r(r,i){return[e+t*r,n-t*i]}return r.invert=function(r,i){return[(r-e)/t,(n-i)/t]},r})(f,h-t[0],d-t[1],b);return n=Jb(m,v,y),u=Vb(e,r),s=Vb(n,u),a=B_(u,k),S()}function S(){return c=l=null,A}return A.stream=function(t){return c&&l===t?c:c=P_(function(t){return C_({point:function(e,n){var r=t(e,n);return this.stream.point(r[0],r[1])}})}(n)(_(a(O(l=t)))))},A.preclip=function(t){return arguments.length?(_=t,x=void 0,S()):_},A.postclip=function(t){return arguments.length?(O=t,w=r=i=o=null,S()):O},A.clipAngle=function(t){return arguments.length?(_=+t?bx(x=t*hy):(x=null,yx),S()):x*fy},A.clipExtent=function(t){return arguments.length?(O=null==t?(w=r=i=o=null,Dx):Ox(w=+t[0][0],r=+t[0][1],i=+t[1][0],o=+t[1][1]),S()):null==w?null:[[w,r],[i,o]]},A.scale=function(t){return arguments.length?(f=+t,j()):f},A.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],j()):[h,d]},A.center=function(t){return arguments.length?(p=t[0]%360*hy,g=t[1]%360*hy,j()):[p*fy,g*fy]},A.rotate=function(t){return arguments.length?(m=t[0]%360*hy,v=t[1]%360*hy,y=t.length>2?t[2]%360*hy:0,j()):[m*fy,v*fy,y*fy]},A.angle=function(t){return arguments.length?(b=t%360*hy,j()):b*fy},A.precision=function(t){return arguments.length?(a=B_(u,k=t*t),S()):Oy(k)},A.fitExtent=function(t,e){return F_(A,t,e)},A.fitSize=function(t,e){return N_(A,t,e)},A.fitWidth=function(t,e){return z_(A,t,e)},A.fitHeight=function(t,e){return T_(A,t,e)},function(){return e=t.apply(this,arguments),A.invert=e.invert&&E,j()}}function I_(t){var e=0,n=uy/3,r=q_(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*hy,n=t[1]*hy):[e*fy,n*fy]},i}function W_(t,e){var n=_y(t),r=(n+_y(e))/2;if(dy(r)<ay)return function(t){var e=my(t);function n(t,n){return[t*e,_y(n)/e]}return n.invert=function(t,n){return[t/e,Ey(n*e)]},n}(t);var i=1+n*(2*r-n),o=Oy(i)/r;function a(t,e){var n=Oy(i-2*r*_y(e))/r;return[n*_y(t*=r),o-n*my(t)]}return a.invert=function(t,e){var n=o-e;return[gy(t,dy(n))/r*wy(n),Ey((i-(t*t+n*n)*r*r)/(2*r))]},a}var H_=function(){return I_(W_).scale(155.424).center([0,33.6442])},G_=function(){return H_().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])};function Y_(t){return function(e,n){var r=my(e),i=my(n),o=t(r*i);return[o*i*_y(e),o*_y(n)]}}function V_(t){return function(e,n){var r=Oy(e*e+n*n),i=t(r),o=_y(i),a=my(i);return[gy(e*o,r*a),Ey(r&&n*o/r)]}}var X_=Y_(function(t){return Oy(2/(1+t))});X_.invert=V_(function(t){return 2*Ey(t/2)});var J_=Y_(function(t){return(t=Ay(t))&&t/_y(t)});J_.invert=V_(function(t){return t});function Z_(t,e){return[t,by(ky((sy+e)/2))]}Z_.invert=function(t,e){return[t,2*py(yy(e))-sy]};function Q_(t){var e,n,r,i=U_(t),o=i.center,a=i.scale,u=i.translate,s=i.clipExtent,c=null;function l(){var o=uy*a(),u=i(tx(i.rotate()).invert([0,0]));return s(null==c?[[u[0]-o,u[1]-o],[u[0]+o,u[1]+o]]:t===Z_?[[Math.max(u[0]-o,c),e],[Math.min(u[0]+o,n),r]]:[[c,Math.max(u[1]-o,e)],[n,Math.min(u[1]+o,r)]])}return i.scale=function(t){return arguments.length?(a(t),l()):a()},i.translate=function(t){return arguments.length?(u(t),l()):u()},i.center=function(t){return arguments.length?(o(t),l()):o()},i.clipExtent=function(t){return arguments.length?(null==t?c=e=n=r=null:(c=+t[0][0],e=+t[0][1],n=+t[1][0],r=+t[1][1]),l()):null==c?null:[[c,e],[n,r]]},l()}function K_(t){return ky((sy+t)/2)}function tw(t,e){var n=my(t),r=t===e?_y(t):by(n/my(e))/by(K_(e)/K_(t)),i=n*xy(K_(t),r)/r;if(!r)return Z_;function o(t,e){i>0?e<-sy+ay&&(e=-sy+ay):e>sy-ay&&(e=sy-ay);var n=i/xy(K_(e),r);return[n*_y(r*t),i-n*my(r*t)]}return o.invert=function(t,e){var n=i-e,o=wy(r)*Oy(t*t+n*n);return[gy(t,dy(n))/r*wy(n),2*py(xy(i/o,1/r))-sy]},o}function ew(t,e){return[t,e]}ew.invert=ew;function nw(t,e){var n=my(t),r=t===e?_y(t):(n-my(e))/(e-t),i=n/r+t;if(dy(r)<ay)return ew;function o(t,e){var n=i-e,o=r*t;return[n*_y(o),i-n*my(o)]}return o.invert=function(t,e){var n=i-e;return[gy(t,dy(n))/r*wy(n),i-wy(r)*Oy(t*t+n*n)]},o}var rw=1.340264,iw=-.081106,ow=893e-6,aw=.003796,uw=Oy(3)/2;function sw(t,e){var n=Ey(uw*_y(e)),r=n*n,i=r*r*r;return[t*my(n)/(uw*(rw+3*iw*r+i*(7*ow+9*aw*r))),n*(rw+iw*r+i*(ow+aw*r))]}sw.invert=function(t,e){for(var n,r=e,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=n=(r*(rw+iw*i+o*(ow+aw*i))-e)/(rw+3*iw*i+o*(7*ow+9*aw*i)))*r)*i*i,!(dy(n)<1e-12));++a);return[uw*t*(rw+3*iw*i+o*(7*ow+9*aw*i))/my(r),Ey(_y(r)/uw)]};function cw(t,e){var n=my(e),r=my(t)*n;return[n*_y(t)/r,_y(e)/r]}cw.invert=V_(py);function lw(t,e,n,r){return 1===t&&1===e&&0===n&&0===r?Dx:C_({point:function(i,o){this.stream.point(i*t+n,o*e+r)}})}function fw(t,e){var n=e*e,r=n*n;return[t*(.8707-.131979*n+r*(r*(.003971*n-.001529*r)-.013791)),e*(1.007226+n*(.015085+r*(.028874*n-.044475-.005916*r)))]}fw.invert=function(t,e){var n,r=e,i=25;do{var o=r*r,a=o*o;r-=n=(r*(1.007226+o*(.015085+a*(.028874*o-.044475-.005916*a)))-e)/(1.007226+o*(.045255+a*(.259866*o-.311325-.005916*11*a)))}while(dy(n)>ay&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]};function hw(t,e){return[my(e)*_y(t),_y(e)]}hw.invert=V_(Ey);function dw(t,e){var n=my(e),r=1+my(t)*n;return[n*_y(t)/r,_y(e)/r]}dw.invert=V_(function(t){return 2*py(t)});function pw(t,e){return[by(ky((sy+e)/2)),-t]}pw.invert=function(t,e){return[-e,2*py(yy(t))-sy]};var gw=S_(),mw=["clipAngle","clipExtent","scale","translate","center","rotate","parallels","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];function vw(t,e){if(!t||"string"!=typeof t)throw new Error("Projection type must be a name string.");return t=t.toLowerCase(),arguments.length>1?(bw[t]=function(t,e){return function n(){var r=e();return r.type=t,r.path=S_().projection(r),r.copy=r.copy||function(){var t=n();return mw.forEach(function(e){r.hasOwnProperty(e)&&t[e](r[e]())}),t.path.pointRadius(r.path.pointRadius()),t},r}}(t,e),this):bw.hasOwnProperty(t)?bw[t]:null}function yw(t){return t&&t.path||gw}var bw={albers:G_,albersusa:function(){var t,e,n,r,i,o,a=G_(),u=H_().rotate([154,0]).center([-2,58.5]).parallels([55,65]),s=H_().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(t,e){o=[t,e]}};function l(t){var e=t[0],a=t[1];return o=null,n.point(e,a),o||(r.point(e,a),o)||(i.point(e,a),o)}function f(){return t=e=null,l}return l.invert=function(t){var e=a.scale(),n=a.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?s:a).invert(t)},l.stream=function(n){return t&&e===n?t:(r=[a.stream(e=n),u.stream(n),s.stream(n)],i=r.length,t={point:function(t,e){for(var n=-1;++n<i;)r[n].point(t,e)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},l.precision=function(t){return arguments.length?(a.precision(t),u.precision(t),s.precision(t),f()):a.precision()},l.scale=function(t){return arguments.length?(a.scale(t),u.scale(.35*t),s.scale(t),l.translate(a.translate())):a.scale()},l.translate=function(t){if(!arguments.length)return a.translate();var e=a.scale(),o=+t[0],l=+t[1];return n=a.translate(t).clipExtent([[o-.455*e,l-.238*e],[o+.455*e,l+.238*e]]).stream(c),r=u.translate([o-.307*e,l+.201*e]).clipExtent([[o-.425*e+ay,l+.12*e+ay],[o-.214*e-ay,l+.234*e-ay]]).stream(c),i=s.translate([o-.205*e,l+.212*e]).clipExtent([[o-.214*e+ay,l+.166*e+ay],[o-.115*e-ay,l+.234*e-ay]]).stream(c),f()},l.fitExtent=function(t,e){return F_(l,t,e)},l.fitSize=function(t,e){return N_(l,t,e)},l.fitWidth=function(t,e){return z_(l,t,e)},l.fitHeight=function(t,e){return T_(l,t,e)},l.scale(1070)},azimuthalequalarea:function(){return U_(X_).scale(124.75).clipAngle(179.999)},azimuthalequidistant:function(){return U_(J_).scale(79.4188).clipAngle(179.999)},conicconformal:function(){return I_(tw).scale(109.5).parallels([30,30])},conicequalarea:H_,conicequidistant:function(){return I_(nw).scale(131.154).center([0,13.9389])},equirectangular:function(){return U_(ew).scale(152.63)},gnomonic:function(){return U_(cw).scale(144.049).clipAngle(60)},identity:function(){var t,e,n,r,i,o,a=1,u=0,s=0,c=1,l=1,f=Dx,h=null,d=Dx;function p(){return r=i=null,o}return o={stream:function(t){return r&&i===t?r:r=f(d(i=t))},postclip:function(r){return arguments.length?(d=r,h=t=e=n=null,p()):d},clipExtent:function(r){return arguments.length?(d=null==r?(h=t=e=n=null,Dx):Ox(h=+r[0][0],t=+r[0][1],e=+r[1][0],n=+r[1][1]),p()):null==h?null:[[h,t],[e,n]]},scale:function(t){return arguments.length?(f=lw((a=+t)*c,a*l,u,s),p()):a},translate:function(t){return arguments.length?(f=lw(a*c,a*l,u=+t[0],s=+t[1]),p()):[u,s]},reflectX:function(t){return arguments.length?(f=lw(a*(c=t?-1:1),a*l,u,s),p()):c<0},reflectY:function(t){return arguments.length?(f=lw(a*c,a*(l=t?-1:1),u,s),p()):l<0},fitExtent:function(t,e){return F_(o,t,e)},fitSize:function(t,e){return N_(o,t,e)},fitWidth:function(t,e){return z_(o,t,e)},fitHeight:function(t,e){return T_(o,t,e)}}},mercator:function(){return Q_(Z_).scale(961/ly)},naturalEarth1:function(){return U_(fw).scale(175.295)},orthographic:function(){return U_(hw).scale(249.5).clipAngle(90+ay)},stereographic:function(){return U_(dw).scale(250).clipAngle(142)},transversemercator:function(){var t=Q_(pw),e=t.center,n=t.rotate;return t.center=function(t){return arguments.length?e([-t[1],t[0]]):[(t=e())[1],-t[0]]},t.rotate=function(t){return arguments.length?n([t[0],t[1],t.length>2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)}};for(var xw in bw)vw(xw,bw[xw]);function _w(t){ei.call(this,null,t)}function ww(t){ei.call(this,null,t)}function Ow(t){ei.call(this,null,t)}function kw(t){ei.call(this,[],t),this.generator=Ex()}function Aw(t){ei.call(this,null,t),this.modified(!0)}function Ew(t,e,n){Object(ct.C)(t[e])&&t[e](n)}_w.Definition={type:"GeoPath",metadata:{modifies:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"path"}]},Object(ct.x)(_w,ei).transform=function(t,e){var n=e.fork(e.ALL),r=this.value,i=t.field||ct.w,o=t.as||"path",a=n.SOURCE;!r||t.modified()?(this.value=r=yw(t.projection),n.materialize().reflow()):a=i===ct.w||e.modified(i.fields)?n.ADD_MOD:n.ADD;var u=function(t,e){var n=t.pointRadius();t.context(null),null!=e&&t.pointRadius(e);return n}(r,t.pointRadius);return n.visit(a,function(t){t[o]=r(i(t))}),r.pointRadius(u),n.modifies(o)},ww.Definition={type:"GeoPoint",metadata:{modifies:!0},params:[{name:"projection",type:"projection",required:!0},{name:"fields",type:"field",array:!0,required:!0,length:2},{name:"as",type:"string",array:!0,length:2,default:["x","y"]}]},Object(ct.x)(ww,ei).transform=function(t,e){var n,r=t.projection,i=t.fields[0],o=t.fields[1],a=t.as||["x","y"],u=a[0],s=a[1];function c(t){var e=r([i(t),o(t)]);e?(t[u]=e[0],t[s]=e[1]):(t[u]=void 0,t[s]=void 0)}return t.modified()?e=e.materialize().reflow(!0).visit(e.SOURCE,c):(n=e.modified(i.fields)||e.modified(o.fields),e.visit(n?e.ADD_MOD:e.ADD,c)),e.modifies(a)},Ow.Definition={type:"GeoShape",metadata:{modifies:!0,nomod:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field",default:"datum"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"shape"}]},Object(ct.x)(Ow,ei).transform=function(t,e){var n=e.fork(e.ALL),r=this.value,i=t.as||"shape",o=n.ADD;return r&&!t.modified()||(this.value=r=function(t,e,n){var r=null==n?function(n){return t(e(n))}:function(r){var i=t.pointRadius(),o=t.pointRadius(n)(e(r));return t.pointRadius(i),o};return r.context=function(e){return t.context(e),r},r}(yw(t.projection),t.field||Object(ct.t)("datum"),t.pointRadius),n.materialize().reflow(),o=n.SOURCE),n.visit(o,function(t){t[i]=r}),n.modifies(i)},kw.Definition={type:"Graticule",metadata:{changes:!0},params:[{name:"extent",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMajor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMinor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"step",type:"number",array:!0,length:2},{name:"stepMajor",type:"number",array:!0,length:2,default:[90,360]},{name:"stepMinor",type:"number",array:!0,length:2,default:[10,10]},{name:"precision",type:"number",default:2.5}]},Object(ct.x)(kw,ei).transform=function(t,e){var n,r=this.value,i=this.generator;if(!r.length||t.modified())for(var o in t)Object(ct.C)(i[o])&&i[o](t[o]);return n=i(),r.length?e.mod.push(xt(r[0],n)):e.add.push(vt(n)),r[0]=n,e},Object(ct.x)(Aw,ei).transform=function(t,e){var n=this.value;return!n||t.modified("type")?(this.value=n=function(t){var e=vw((t||"mercator").toLowerCase());e||Object(ct.n)("Unrecognized projection type: "+t);return e()}(t.type),mw.forEach(function(e){null!=t[e]&&Ew(n,e,t[e])})):mw.forEach(function(e){t.modified(e)&&Ew(n,e,t[e])}),null!=t.pointRadius&&n.path.pointRadius(t.pointRadius),t.fit&&function(t,e){var n=function(t){return 1===(t=Object(ct.i)(t)).length?t[0]:{type:ty,features:t.reduce((t,e)=>t.concat(function(t){return t.type===ty?t.features:Object(ct.i)(t).filter(t=>null!=t).map(t=>t.type===Kv?t:{type:Kv,geometry:t})}(e)),[])}}(e.fit);e.extent?t.fitExtent(e.extent,n):e.size&&t.fitSize(e.size,n)}(n,t),e.fork(e.NO_SOURCE|e.NO_FIELDS)};function jw(t,e,n,r){if(isNaN(e)||isNaN(n))return t;var i,o,a,u,s,c,l,f,h,d=t._root,p={data:r},g=t._x0,m=t._y0,v=t._x1,y=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((c=e>=(o=(g+v)/2))?g=o:v=o,(l=n>=(a=(m+y)/2))?m=a:y=a,i=d,!(d=d[f=l<<1|c]))return i[f]=p,t;if(u=+t._x.call(null,d.data),s=+t._y.call(null,d.data),e===u&&n===s)return p.next=d,i?i[f]=p:t._root=p,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(c=e>=(o=(g+v)/2))?g=o:v=o,(l=n>=(a=(m+y)/2))?m=a:y=a}while((f=l<<1|c)==(h=(s>=a)<<1|u>=o));return i[h]=d,i[f]=p,t}var Sw=function(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i};function Cw(t){return t[0]}function Mw(t){return t[1]}function Dw(t,e,n){var r=new Fw(null==e?Cw:e,null==n?Mw:n,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Fw(t,e,n,r,i,o){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function Nw(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var zw=Dw.prototype=Fw.prototype;zw.copy=function(){var t,e,n=new Fw(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return n;if(!r.length)return n._root=Nw(r),n;for(t=[{source:r,target:n._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(e=r.source[i])&&(e.length?t.push({source:e,target:r.target[i]=new Array(4)}):r.target[i]=Nw(e));return n},zw.add=function(t){var e=+this._x.call(null,t),n=+this._y.call(null,t);return jw(this.cover(e,n),e,n,t)},zw.addAll=function(t){var e,n,r,i,o=t.length,a=new Array(o),u=new Array(o),s=1/0,c=1/0,l=-1/0,f=-1/0;for(n=0;n<o;++n)isNaN(r=+this._x.call(null,e=t[n]))||isNaN(i=+this._y.call(null,e))||(a[n]=r,u[n]=i,r<s&&(s=r),r>l&&(l=r),i<c&&(c=i),i>f&&(f=i));if(s>l||c>f)return this;for(this.cover(s,c).cover(l,f),n=0;n<o;++n)jw(this,a[n],u[n],t[n]);return this},zw.cover=function(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(n))i=(n=Math.floor(t))+1,o=(r=Math.floor(e))+1;else{for(var a,u,s=i-n,c=this._root;n>t||t>=i||r>e||e>=o;)switch(u=(e<r)<<1|t<n,(a=new Array(4))[u]=c,c=a,s*=2,u){case 0:i=n+s,o=r+s;break;case 1:n=i-s,o=r+s;break;case 2:i=n+s,r=o-s;break;case 3:n=i-s,r=o-s}this._root&&this._root.length&&(this._root=c)}return this._x0=n,this._y0=r,this._x1=i,this._y1=o,this},zw.data=function(){var t=[];return this.visit(function(e){if(!e.length)do{t.push(e.data)}while(e=e.next)}),t},zw.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},zw.find=function(t,e,n){var r,i,o,a,u,s,c,l=this._x0,f=this._y0,h=this._x1,d=this._y1,p=[],g=this._root;for(g&&p.push(new Sw(g,l,f,h,d)),null==n?n=1/0:(l=t-n,f=e-n,h=t+n,d=e+n,n*=n);s=p.pop();)if(!(!(g=s.node)||(i=s.x0)>h||(o=s.y0)>d||(a=s.x1)<l||(u=s.y1)<f))if(g.length){var m=(i+a)/2,v=(o+u)/2;p.push(new Sw(g[3],m,v,a,u),new Sw(g[2],i,v,m,u),new Sw(g[1],m,o,a,v),new Sw(g[0],i,o,m,v)),(c=(e>=v)<<1|t>=m)&&(s=p[p.length-1],p[p.length-1]=p[p.length-1-c],p[p.length-1-c]=s)}else{var y=t-+this._x.call(null,g.data),b=e-+this._y.call(null,g.data),x=y*y+b*b;if(x<n){var _=Math.sqrt(n=x);l=t-_,f=e-_,h=t+_,d=e+_,r=g.data}}return r},zw.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t)))return this;var e,n,r,i,o,a,u,s,c,l,f,h,d=this._root,p=this._x0,g=this._y0,m=this._x1,v=this._y1;if(!d)return this;if(d.length)for(;;){if((c=o>=(u=(p+m)/2))?p=u:m=u,(l=a>=(s=(g+v)/2))?g=s:v=s,e=d,!(d=d[f=l<<1|c]))return this;if(!d.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(n=e,h=f)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):e?(i?e[f]=i:delete e[f],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(n?n[h]=d:this._root=d),this):(this._root=i,this)},zw.removeAll=function(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this},zw.root=function(){return this._root},zw.size=function(){var t=0;return this.visit(function(e){if(!e.length)do{++t}while(e=e.next)}),t},zw.visit=function(t){var e,n,r,i,o,a,u=[],s=this._root;for(s&&u.push(new Sw(s,this._x0,this._y0,this._x1,this._y1));e=u.pop();)if(!t(s=e.node,r=e.x0,i=e.y0,o=e.x1,a=e.y1)&&s.length){var c=(r+o)/2,l=(i+a)/2;(n=s[3])&&u.push(new Sw(n,c,l,o,a)),(n=s[2])&&u.push(new Sw(n,r,l,c,a)),(n=s[1])&&u.push(new Sw(n,c,i,o,l)),(n=s[0])&&u.push(new Sw(n,r,i,c,l))}return this},zw.visitAfter=function(t){var e,n=[],r=[];for(this._root&&n.push(new Sw(this._root,this._x0,this._y0,this._x1,this._y1));e=n.pop();){var i=e.node;if(i.length){var o,a=e.x0,u=e.y0,s=e.x1,c=e.y1,l=(a+s)/2,f=(u+c)/2;(o=i[0])&&n.push(new Sw(o,a,u,l,f)),(o=i[1])&&n.push(new Sw(o,l,u,s,f)),(o=i[2])&&n.push(new Sw(o,a,f,l,c)),(o=i[3])&&n.push(new Sw(o,l,f,s,c))}r.push(e)}for(;e=r.pop();)t(e.node,e.x0,e.y0,e.x1,e.y1);return this},zw.x=function(t){return arguments.length?(this._x=t,this):this._x},zw.y=function(t){return arguments.length?(this._y=t,this):this._y};var Tw=function(t){return function(){return t}},$w=function(){return 1e-6*(Math.random()-.5)};function Rw(t){return t.x+t.vx}function Bw(t){return t.y+t.vy}function Pw(t){return t.index}function Lw(t,e){var n=t.get(e);if(!n)throw new Error("missing: "+e);return n}var Uw={value:function(){}};function qw(){for(var t,e=0,n=arguments.length,r={};e<n;++e){if(!(t=arguments[e]+"")||t in r)throw new Error("illegal type: "+t);r[t]=[]}return new Iw(r)}function Iw(t){this._=t}function Ww(t,e){for(var n,r=0,i=t.length;r<i;++r)if((n=t[r]).name===e)return n.value}function Hw(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=Uw,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=n&&t.push({name:e,value:n}),t}Iw.prototype=qw.prototype={constructor:Iw,on:function(t,e){var n,r,i=this._,o=(r=i,(t+"").trim().split(/^|\s+/).map(function(t){var e="",n=t.indexOf(".");if(n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})),a=-1,u=o.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++a<u;)if(n=(t=o[a]).type)i[n]=Hw(i[n],t.name,e);else if(null==e)for(n in i)i[n]=Hw(i[n],t.name,null);return this}for(;++a<u;)if((n=(t=o[a]).type)&&(n=Ww(i[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new Iw(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,r,i=new Array(n),o=0;o<n;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,n=(r=this._[t]).length;o<n;++o)r[o].value.apply(e,i)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(e,n)}};var Gw,Yw,Vw=qw,Xw=0,Jw=0,Zw=0,Qw=1e3,Kw=0,tO=0,eO=0,nO="object"==typeof performance&&performance.now?performance:Date,rO="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function iO(){return tO||(rO(oO),tO=nO.now()+eO)}function oO(){tO=0}function aO(){this._call=this._time=this._next=null}function uO(t,e,n){var r=new aO;return r.restart(t,e,n),r}function sO(){tO=(Kw=nO.now())+eO,Xw=Jw=0;try{!function(){iO(),++Xw;for(var t,e=Gw;e;)(t=tO-e._time)>=0&&e._call.call(null,t),e=e._next;--Xw}()}finally{Xw=0,function(){var t,e,n=Gw,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Gw=e);Yw=t,lO(r)}(),tO=0}}function cO(){var t=nO.now(),e=t-Kw;e>Qw&&(eO-=e,Kw=t)}function lO(t){Xw||(Jw&&(Jw=clearTimeout(Jw)),t-tO>24?(t<1/0&&(Jw=setTimeout(sO,t-nO.now()-eO)),Zw&&(Zw=clearInterval(Zw))):(Zw||(Kw=nO.now(),Zw=setInterval(cO,Qw)),Xw=1,rO(sO)))}aO.prototype=uO.prototype={constructor:aO,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?iO():+n)+(null==e?0:+e),this._next||Yw===this||(Yw?Yw._next=this:Gw=this,Yw=this),this._call=t,this._time=n,lO()},stop:function(){this._call&&(this._call=null,this._time=1/0,lO())}};function fO(t){return t.x}function hO(t){return t.y}var dO=10,pO=Math.PI*(3-Math.sqrt(5)),gO=function(t){var e,n=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,u=new Map,s=uO(l),c=Vw("tick","end");function l(){f(),c.call("tick",e),n<r&&(s.stop(),c.call("end",e))}function f(r){var s,c,l=t.length;void 0===r&&(r=1);for(var f=0;f<r;++f)for(n+=(o-n)*i,u.forEach(function(t){t(n)}),s=0;s<l;++s)null==(c=t[s]).fx?c.x+=c.vx*=a:(c.x=c.fx,c.vx=0),null==c.fy?c.y+=c.vy*=a:(c.y=c.fy,c.vy=0);return e}function h(){for(var e,n=0,r=t.length;n<r;++n){if((e=t[n]).index=n,null!=e.fx&&(e.x=e.fx),null!=e.fy&&(e.y=e.fy),isNaN(e.x)||isNaN(e.y)){var i=dO*Math.sqrt(n),o=n*pO;e.x=i*Math.cos(o),e.y=i*Math.sin(o)}(isNaN(e.vx)||isNaN(e.vy))&&(e.vx=e.vy=0)}}function d(e){return e.initialize&&e.initialize(t),e}return null==t&&(t=[]),h(),e={tick:f,restart:function(){return s.restart(l),e},stop:function(){return s.stop(),e},nodes:function(n){return arguments.length?(t=n,h(),u.forEach(d),e):t},alpha:function(t){return arguments.length?(n=+t,e):n},alphaMin:function(t){return arguments.length?(r=+t,e):r},alphaDecay:function(t){return arguments.length?(i=+t,e):+i},alphaTarget:function(t){return arguments.length?(o=+t,e):o},velocityDecay:function(t){return arguments.length?(a=1-t,e):1-a},force:function(t,n){return arguments.length>1?(null==n?u.delete(t):u.set(t,d(n)),e):u.get(t)},find:function(e,n,r){var i,o,a,u,s,c=0,l=t.length;for(null==r?r=1/0:r*=r,c=0;c<l;++c)(a=(i=e-(u=t[c]).x)*i+(o=n-u.y)*o)<r&&(s=u,r=a);return s},on:function(t,n){return arguments.length>1?(c.on(t,n),e):c.on(t)}}},mO={center:function(t,e){var n;function r(){var r,i,o=n.length,a=0,u=0;for(r=0;r<o;++r)a+=(i=n[r]).x,u+=i.y;for(a=a/o-t,u=u/o-e,r=0;r<o;++r)(i=n[r]).x-=a,i.y-=u}return null==t&&(t=0),null==e&&(e=0),r.initialize=function(t){n=t},r.x=function(e){return arguments.length?(t=+e,r):t},r.y=function(t){return arguments.length?(e=+t,r):e},r},collide:function(t){var e,n,r=1,i=1;function o(){for(var t,o,u,s,c,l,f,h=e.length,d=0;d<i;++d)for(o=Dw(e,Rw,Bw).visitAfter(a),t=0;t<h;++t)u=e[t],l=n[u.index],f=l*l,s=u.x+u.vx,c=u.y+u.vy,o.visit(p);function p(t,e,n,i,o){var a=t.data,h=t.r,d=l+h;if(!a)return e>s+d||i<s-d||n>c+d||o<c-d;if(a.index>u.index){var p=s-a.x-a.vx,g=c-a.y-a.vy,m=p*p+g*g;m<d*d&&(0===p&&(m+=(p=$w())*p),0===g&&(m+=(g=$w())*g),m=(d-(m=Math.sqrt(m)))/m*r,u.vx+=(p*=m)*(d=(h*=h)/(f+h)),u.vy+=(g*=m)*d,a.vx-=p*(d=1-d),a.vy-=g*d)}}}function a(t){if(t.data)return t.r=n[t.data.index];for(var e=t.r=0;e<4;++e)t[e]&&t[e].r>t.r&&(t.r=t[e].r)}function u(){if(e){var r,i,o=e.length;for(n=new Array(o),r=0;r<o;++r)i=e[r],n[i.index]=+t(i,r,e)}}return"function"!=typeof t&&(t=Tw(null==t?1:+t)),o.initialize=function(t){e=t,u()},o.iterations=function(t){return arguments.length?(i=+t,o):i},o.strength=function(t){return arguments.length?(r=+t,o):r},o.radius=function(e){return arguments.length?(t="function"==typeof e?e:Tw(+e),u(),o):t},o},nbody:function(){var t,e,n,r,i=Tw(-30),o=1,a=1/0,u=.81;function s(r){var i,o=t.length,a=Dw(t,fO,hO).visitAfter(l);for(n=r,i=0;i<o;++i)e=t[i],a.visit(f)}function c(){if(t){var e,n,o=t.length;for(r=new Array(o),e=0;e<o;++e)n=t[e],r[n.index]=+i(n,e,t)}}function l(t){var e,n,i,o,a,u=0,s=0;if(t.length){for(i=o=a=0;a<4;++a)(e=t[a])&&(n=Math.abs(e.value))&&(u+=e.value,s+=n,i+=n*e.x,o+=n*e.y);t.x=i/s,t.y=o/s}else{(e=t).x=e.data.x,e.y=e.data.y;do{u+=r[e.data.index]}while(e=e.next)}t.value=u}function f(t,i,s,c){if(!t.value)return!0;var l=t.x-e.x,f=t.y-e.y,h=c-i,d=l*l+f*f;if(h*h/u<d)return d<a&&(0===l&&(d+=(l=$w())*l),0===f&&(d+=(f=$w())*f),d<o&&(d=Math.sqrt(o*d)),e.vx+=l*t.value*n/d,e.vy+=f*t.value*n/d),!0;if(!(t.length||d>=a)){(t.data!==e||t.next)&&(0===l&&(d+=(l=$w())*l),0===f&&(d+=(f=$w())*f),d<o&&(d=Math.sqrt(o*d)));do{t.data!==e&&(h=r[t.data.index]*n/d,e.vx+=l*h,e.vy+=f*h)}while(t=t.next)}}return s.initialize=function(e){t=e,c()},s.strength=function(t){return arguments.length?(i="function"==typeof t?t:Tw(+t),c(),s):i},s.distanceMin=function(t){return arguments.length?(o=t*t,s):Math.sqrt(o)},s.distanceMax=function(t){return arguments.length?(a=t*t,s):Math.sqrt(a)},s.theta=function(t){return arguments.length?(u=t*t,s):Math.sqrt(u)},s},link:function(t){var e,n,r,i,o,a=Pw,u=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},s=Tw(30),c=1;function l(r){for(var i=0,a=t.length;i<c;++i)for(var u,s,l,f,h,d,p,g=0;g<a;++g)s=(u=t[g]).source,f=(l=u.target).x+l.vx-s.x-s.vx||$w(),h=l.y+l.vy-s.y-s.vy||$w(),f*=d=((d=Math.sqrt(f*f+h*h))-n[g])/d*r*e[g],h*=d,l.vx-=f*(p=o[g]),l.vy-=h*p,s.vx+=f*(p=1-p),s.vy+=h*p}function f(){if(r){var u,s,c=r.length,l=t.length,f=new Map(r.map((t,e)=>[a(t,e,r),t]));for(u=0,i=new Array(c);u<l;++u)(s=t[u]).index=u,"object"!=typeof s.source&&(s.source=Lw(f,s.source)),"object"!=typeof s.target&&(s.target=Lw(f,s.target)),i[s.source.index]=(i[s.source.index]||0)+1,i[s.target.index]=(i[s.target.index]||0)+1;for(u=0,o=new Array(l);u<l;++u)s=t[u],o[u]=i[s.source.index]/(i[s.source.index]+i[s.target.index]);e=new Array(l),h(),n=new Array(l),d()}}function h(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+u(t[n],n,t)}function d(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+s(t[e],e,t)}return null==t&&(t=[]),l.initialize=function(t){r=t,f()},l.links=function(e){return arguments.length?(t=e,f(),l):t},l.id=function(t){return arguments.length?(a=t,l):a},l.iterations=function(t){return arguments.length?(c=+t,l):c},l.strength=function(t){return arguments.length?(u="function"==typeof t?t:Tw(+t),h(),l):u},l.distance=function(t){return arguments.length?(s="function"==typeof t?t:Tw(+t),d(),l):s},l},x:function(t){var e,n,r,i=Tw(.1);function o(t){for(var i,o=0,a=e.length;o<a;++o)(i=e[o]).vx+=(r[o]-i.x)*n[o]*t}function a(){if(e){var o,a=e.length;for(n=new Array(a),r=new Array(a),o=0;o<a;++o)n[o]=isNaN(r[o]=+t(e[o],o,e))?0:+i(e[o],o,e)}}return"function"!=typeof t&&(t=Tw(null==t?0:+t)),o.initialize=function(t){e=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:Tw(+t),a(),o):i},o.x=function(e){return arguments.length?(t="function"==typeof e?e:Tw(+e),a(),o):t},o},y:function(t){var e,n,r,i=Tw(.1);function o(t){for(var i,o=0,a=e.length;o<a;++o)(i=e[o]).vy+=(r[o]-i.y)*n[o]*t}function a(){if(e){var o,a=e.length;for(n=new Array(a),r=new Array(a),o=0;o<a;++o)n[o]=isNaN(r[o]=+t(e[o],o,e))?0:+i(e[o],o,e)}}return"function"!=typeof t&&(t=Tw(null==t?0:+t)),o.initialize=function(t){e=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:Tw(+t),a(),o):i},o.y=function(e){return arguments.length?(t="function"==typeof e?e:Tw(+e),a(),o):t},o}},vO="forces",yO=["alpha","alphaMin","alphaTarget","velocityDecay","forces"],bO=["static","iterations"],xO=["x","y","vx","vy"];function _O(t){ei.call(this,null,t)}_O.Definition={type:"Force",metadata:{modifies:!0},params:[{name:"static",type:"boolean",default:!1},{name:"restart",type:"boolean",default:!1},{name:"iterations",type:"number",default:300},{name:"alpha",type:"number",default:1},{name:"alphaMin",type:"number",default:.001},{name:"alphaTarget",type:"number",default:0},{name:"velocityDecay",type:"number",default:.4},{name:"forces",type:"param",array:!0,params:[{key:{force:"center"},params:[{name:"x",type:"number",default:0},{name:"y",type:"number",default:0}]},{key:{force:"collide"},params:[{name:"radius",type:"number",expr:!0},{name:"strength",type:"number",default:.7},{name:"iterations",type:"number",default:1}]},{key:{force:"nbody"},params:[{name:"strength",type:"number",default:-30},{name:"theta",type:"number",default:.9},{name:"distanceMin",type:"number",default:1},{name:"distanceMax",type:"number"}]},{key:{force:"link"},params:[{name:"links",type:"data"},{name:"id",type:"field"},{name:"distance",type:"number",default:30,expr:!0},{name:"strength",type:"number",expr:!0},{name:"iterations",type:"number",default:1}]},{key:{force:"x"},params:[{name:"strength",type:"number",default:.1},{name:"x",type:"field"}]},{key:{force:"y"},params:[{name:"strength",type:"number",default:.1},{name:"y",type:"field"}]}]},{name:"as",type:"string",array:!0,modify:!1,default:xO}]};var wO=Object(ct.x)(_O,ei);function OO(t,e,n,r){var i,o,a,u,s=Object(ct.i)(e.forces);for(i=0,o=yO.length;i<o;++i)(a=yO[i])!==vO&&e.modified(a)&&t[a](e[a]);for(i=0,o=s.length;i<o;++i)u=vO+i,(a=n||e.modified(vO,i)?AO(s[i]):r&&kO(s[i],r)?t.force(u):null)&&t.force(u,a);for(o=t.numForces||0;i<o;++i)t.force(vO+i,null);return t.numForces=s.length,t}function kO(t,e){var n,r;for(n in t)if(Object(ct.C)(r=t[n])&&e.modified(Object(ct.g)(r)))return 1;return 0}function AO(t){var e,n;for(n in mO.hasOwnProperty(t.force)||Object(ct.n)("Unrecognized force: "+t.force),e=mO[t.force](),t)Object(ct.C)(e[n])&&EO(e[n],t[n],t);return e}function EO(t,e,n){t(Object(ct.C)(e)?function(t){return e(t,n)}:e)}wO.transform=function(t,e){var n,r,i=this.value,o=e.changed(e.ADD_REM),a=t.modified(yO),u=t.iterations||300;if(i?(o&&(e.modifies("index"),i.nodes(e.source)),(a||e.changed(e.MOD))&&OO(i,t,0,e)):(this.value=i=function(t,e){var n=gO(t),r=!1,i=n.stop,o=n.restart;return n.stopped=function(){return r},n.restart=function(){return r=!1,o()},n.stop=function(){return r=!0,i()},OO(n,e,!0).on("end",function(){r=!0})}(e.source,t),i.on("tick",(n=e.dataflow,r=this,function(){n.touch(r).run()})),t.static||(o=!0,i.tick()),e.modifies("index")),a||o||t.modified(bO)||e.changed()&&t.restart)if(i.alpha(Math.max(i.alpha(),t.alpha||1)).alphaDecay(1-Math.pow(i.alphaMin(),1/u)),t.static)for(i.stop();--u>=0;)i.tick();else if(i.stopped()&&i.restart(),!o)return e.StopPropagation;return this.finish(t,e)},wO.finish=function(t,e){for(var n,r=e.dataflow,i=this._argops,o=0,a=i.length;o<a;++o)if((n=i[o]).name===vO&&"link"===n.op._argval.force)for(var u,s=n.op._argops,c=0,l=s.length;c<l;++c)if("links"===s[c].name&&(u=s[c].op.source)){r.pulse(u,r.changeset().reflow());break}return e.reflow(t.modified()).modifies(xO)};var jO=function(t,e,n){var r={};return t.each(function(t){var i=t.data;n(i)&&(r[e(i)]=t)}),t.lookup=r,t};function SO(t,e){return t.parent===e.parent?1:2}function CO(t,e){return t+e.x}function MO(t,e){return Math.max(t,e.y)}function DO(t){var e=0,n=t.children,r=n&&n.length;if(r)for(;--r>=0;)e+=n[r].value;else e=1;t.value=e}function FO(t,e){var n,r,i,o,a,u=new $O(t),s=+t.value&&(u.value=t.value),c=[u];for(null==e&&(e=NO);n=c.pop();)if(s&&(n.value=+n.data.value),(i=e(n.data))&&(a=i.length))for(n.children=new Array(a),o=a-1;o>=0;--o)c.push(r=n.children[o]=new $O(i[o])),r.parent=n,r.depth=n.depth+1;return u.eachBefore(TO)}function NO(t){return t.children}function zO(t){t.data=t.data.data}function TO(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function $O(t){this.data=t,this.depth=this.height=0,this.parent=null}$O.prototype=FO.prototype={constructor:$O,count:function(){return this.eachAfter(DO)},each:function(t){var e,n,r,i,o=this,a=[o];do{for(e=a.reverse(),a=[];o=e.pop();)if(t(o),n=o.children)for(r=0,i=n.length;r<i;++r)a.push(n[r])}while(a.length);return this},eachAfter:function(t){for(var e,n,r,i=this,o=[i],a=[];i=o.pop();)if(a.push(i),e=i.children)for(n=0,r=e.length;n<r;++n)o.push(e[n]);for(;i=a.pop();)t(i);return this},eachBefore:function(t){for(var e,n,r=this,i=[r];r=i.pop();)if(t(r),e=r.children)for(n=e.length-1;n>=0;--n)i.push(e[n]);return this},sum:function(t){return this.eachAfter(function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n})},sort:function(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;for(t=n.pop(),e=r.pop();t===e;)i=t,t=n.pop(),e=r.pop();return i}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each(function(e){t.push(e)}),t},leaves:function(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t},links:function(){var t=this,e=[];return t.each(function(n){n!==t&&e.push({source:n.parent,target:n})}),e},copy:function(){return FO(this).eachBefore(zO)}};var RO=Array.prototype.slice;var BO=function(t){for(var e,n,r=0,i=(t=function(t){for(var e,n,r=t.length;r;)n=Math.random()*r--|0,e=t[r],t[r]=t[n],t[n]=e;return t}(RO.call(t))).length,o=[];r<i;)e=t[r],n&&UO(n,e)?++r:(n=IO(o=PO(o,e)),r=0);return n};function PO(t,e){var n,r;if(qO(e,t))return[e];for(n=0;n<t.length;++n)if(LO(e,t[n])&&qO(WO(t[n],e),t))return[t[n],e];for(n=0;n<t.length-1;++n)for(r=n+1;r<t.length;++r)if(LO(WO(t[n],t[r]),e)&&LO(WO(t[n],e),t[r])&&LO(WO(t[r],e),t[n])&&qO(HO(t[n],t[r],e),t))return[t[n],t[r],e];throw new Error}function LO(t,e){var n=t.r-e.r,r=e.x-t.x,i=e.y-t.y;return n<0||n*n<r*r+i*i}function UO(t,e){var n=t.r-e.r+1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function qO(t,e){for(var n=0;n<e.length;++n)if(!UO(t,e[n]))return!1;return!0}function IO(t){switch(t.length){case 1:return{x:(e=t[0]).x,y:e.y,r:e.r};case 2:return WO(t[0],t[1]);case 3:return HO(t[0],t[1],t[2])}var e}function WO(t,e){var n=t.x,r=t.y,i=t.r,o=e.x,a=e.y,u=e.r,s=o-n,c=a-r,l=u-i,f=Math.sqrt(s*s+c*c);return{x:(n+o+s/f*l)/2,y:(r+a+c/f*l)/2,r:(f+i+u)/2}}function HO(t,e,n){var r=t.x,i=t.y,o=t.r,a=e.x,u=e.y,s=e.r,c=n.x,l=n.y,f=n.r,h=r-a,d=r-c,p=i-u,g=i-l,m=s-o,v=f-o,y=r*r+i*i-o*o,b=y-a*a-u*u+s*s,x=y-c*c-l*l+f*f,_=d*p-h*g,w=(p*x-g*b)/(2*_)-r,O=(g*m-p*v)/_,k=(d*b-h*x)/(2*_)-i,A=(h*v-d*m)/_,E=O*O+A*A-1,j=2*(o+w*O+k*A),S=w*w+k*k-o*o,C=-(E?(j+Math.sqrt(j*j-4*E*S))/(2*E):S/j);return{x:r+w+O*C,y:i+k+A*C,r:C}}function GO(t,e,n){var r,i,o,a,u=t.x-e.x,s=t.y-e.y,c=u*u+s*s;c?(i=e.r+n.r,i*=i,a=t.r+n.r,i>(a*=a)?(r=(c+a-i)/(2*c),o=Math.sqrt(Math.max(0,a/c-r*r)),n.x=t.x-r*u-o*s,n.y=t.y-r*s+o*u):(r=(c+i-a)/(2*c),o=Math.sqrt(Math.max(0,i/c-r*r)),n.x=e.x+r*u-o*s,n.y=e.y+r*s+o*u)):(n.x=e.x+n.r,n.y=e.y)}function YO(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function VO(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,o=(e.y*n.r+n.y*e.r)/r;return i*i+o*o}function XO(t){this._=t,this.next=null,this.previous=null}function JO(t){if(!(i=t.length))return 0;var e,n,r,i,o,a,u,s,c,l,f;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(i>2))return e.r+n.r;GO(n,e,r=t[2]),e=new XO(e),n=new XO(n),r=new XO(r),e.next=r.previous=n,n.next=e.previous=r,r.next=n.previous=e;t:for(u=3;u<i;++u){GO(e._,n._,r=t[u]),r=new XO(r),s=n.next,c=e.previous,l=n._.r,f=e._.r;do{if(l<=f){if(YO(s._,r._)){n=s,e.next=n,n.previous=e,--u;continue t}l+=s._.r,s=s.next}else{if(YO(c._,r._)){(e=c).next=n,n.previous=e,--u;continue t}f+=c._.r,c=c.previous}}while(s!==c.next);for(r.previous=e,r.next=n,e.next=n.previous=n=r,o=VO(e);(r=r.next)!==n;)(a=VO(r))<o&&(e=r,o=a);n=e.next}for(e=[n._],r=n;(r=r.next)!==n;)e.push(r._);for(r=BO(e),u=0;u<i;++u)(e=t[u]).x-=r.x,e.y-=r.y;return r.r}function ZO(t){if("function"!=typeof t)throw new Error;return t}function QO(){return 0}var KO=function(t){return function(){return t}};function tk(t){return Math.sqrt(t.value)}function ek(t){return function(e){e.children||(e.r=Math.max(0,+t(e)||0))}}function nk(t,e){return function(n){if(r=n.children){var r,i,o,a=r.length,u=t(n)*e||0;if(u)for(i=0;i<a;++i)r[i].r+=u;if(o=JO(r),u)for(i=0;i<a;++i)r[i].r-=u;n.r=o+u}}}function rk(t){return function(e){var n=e.parent;e.r*=t,n&&(e.x=n.x+t*e.x,e.y=n.y+t*e.y)}}var ik=function(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)},ok=function(t,e,n,r,i){for(var o,a=t.children,u=-1,s=a.length,c=t.value&&(r-e)/t.value;++u<s;)(o=a[u]).y0=n,o.y1=i,o.x0=e,o.x1=e+=o.value*c},ak="$",uk={depth:-1},sk={};function ck(t){return t.id}function lk(t){return t.parentId}var fk=function(){var t=ck,e=lk;function n(n){var r,i,o,a,u,s,c,l=n.length,f=new Array(l),h={};for(i=0;i<l;++i)r=n[i],u=f[i]=new $O(r),null!=(s=t(r,i,n))&&(s+="")&&(h[c=ak+(u.id=s)]=c in h?sk:u);for(i=0;i<l;++i)if(u=f[i],null!=(s=e(n[i],i,n))&&(s+="")){if(!(a=h[ak+s]))throw new Error("missing: "+s);if(a===sk)throw new Error("ambiguous: "+s);a.children?a.children.push(u):a.children=[u],u.parent=a}else{if(o)throw new Error("multiple roots");o=u}if(!o)throw new Error("no root");if(o.parent=uk,o.eachBefore(function(t){t.depth=t.parent.depth+1,--l}).eachBefore(TO),o.parent=null,l>0)throw new Error("cycle");return o}return n.id=function(e){return arguments.length?(t=ZO(e),n):t},n.parentId=function(t){return arguments.length?(e=ZO(t),n):e},n};function hk(t,e){return t.parent===e.parent?1:2}function dk(t){var e=t.children;return e?e[0]:t.t}function pk(t){var e=t.children;return e?e[e.length-1]:t.t}function gk(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}function mk(t,e,n){return t.a.parent===e.parent?t.a:n}function vk(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}vk.prototype=Object.create($O.prototype);var yk=function(t,e,n,r,i){for(var o,a=t.children,u=-1,s=a.length,c=t.value&&(i-n)/t.value;++u<s;)(o=a[u]).x0=e,o.x1=r,o.y0=n,o.y1=n+=o.value*c},bk=(1+Math.sqrt(5))/2;function xk(t,e,n,r,i,o){for(var a,u,s,c,l,f,h,d,p,g,m,v=[],y=e.children,b=0,x=0,_=y.length,w=e.value;b<_;){s=i-n,c=o-r;do{l=y[x++].value}while(!l&&x<_);for(f=h=l,m=l*l*(g=Math.max(c/s,s/c)/(w*t)),p=Math.max(h/m,m/f);x<_;++x){if(l+=u=y[x].value,u<f&&(f=u),u>h&&(h=u),m=l*l*g,(d=Math.max(h/m,m/f))>p){l-=u;break}p=d}v.push(a={value:l,dice:s<c,children:y.slice(b,x)}),a.dice?ok(a,n,r,i,w?r+=c*l/w:o):yk(a,n,r,w?n+=s*l/w:i,o),w-=l,b=x}return v}var _k=function t(e){function n(t,n,r,i,o){xk(e,t,n,r,i,o)}return n.ratio=function(e){return t((e=+e)>1?e:1)},n}(bk),wk=function t(e){function n(t,n,r,i,o){if((a=t._squarify)&&a.ratio===e)for(var a,u,s,c,l,f=-1,h=a.length,d=t.value;++f<h;){for(s=(u=a[f]).children,c=u.value=0,l=s.length;c<l;++c)u.value+=s[c].value;u.dice?ok(u,n,r,i,r+=(o-r)*u.value/d):yk(u,n,r,n+=(i-n)*u.value/d,o),d-=u.value}else t._squarify=a=xk(e,t,n,r,i,o),a.ratio=e}return n.ratio=function(e){return t((e=+e)>1?e:1)},n}(bk);function Ok(t){ei.call(this,null,t)}function kk(t){return t.values}function Ak(){var t,e=[];return t={entries:function(t){return function t(n,r){if(++r>e.length)return n;var i,o=[];for(i in n)o.push({key:i,values:t(n[i],r)});return o}(function t(n,r){if(r>=e.length)return n;for(var i,o,a,u=-1,s=n.length,c=e[r++],l={},f={};++u<s;)(a=l[i=c(o=n[u])+""])?a.push(o):l[i]=[o];for(i in l)f[i]=t(l[i],r);return f}(t,0),0)},key:function(n){return e.push(n),t}}}function Ek(t){ei.call(this,null,t)}function jk(t,e){return t.parent===e.parent?1:2}Ok.Definition={type:"Nest",metadata:{treesource:!0,changes:!0},params:[{name:"keys",type:"field",array:!0},{name:"generate",type:"boolean"}]},Object(ct.x)(Ok,ei).transform=function(t,e){e.source||Object(ct.n)("Nest transform requires an upstream data source.");var n=t.generate,r=t.modified(),i=e.clone(),o=this.value;return(!o||r||e.changed())&&(o&&o.each(function(t){t.children&&pt(t.data)&&i.rem.push(t.data)}),this.value=o=FO({values:Object(ct.i)(t.keys).reduce(function(t,e){return t.key(e),t},Ak()).entries(i.source)},kk),n&&o.each(function(t){t.children&&(t=vt(t.data),i.add.push(t),i.source.push(t))}),jO(o,gt,gt)),i.source.root=o,i},Object(ct.x)(Ek,ei).transform=function(t,e){e.source&&e.source.root||Object(ct.n)(this.constructor.name+" transform requires a backing tree data source.");var n=this.layout(t.method),r=this.fields,i=e.source.root,o=t.as||r;t.field&&i.sum(t.field),t.sort&&i.sort(t.sort),function(t,e,n){for(var r,i=0,o=e.length;i<o;++i)(r=e[i])in n&&t[r](n[r])}(n,this.params,t),n.separation&&n.separation(!1!==t.separation?jk:ct.L);try{this.value=n(i)}catch(t){Object(ct.n)(t)}return i.each(function(t){!function(t,e,n){for(var r=t.data,i=0,o=e.length-1;i<o;++i)r[n[i]]=t[e[i]];r[n[o]]=t.children?t.children.length:0}(t,r,o)}),e.reflow(t.modified()).modifies(o).modifies("leaf")};var Sk=["x","y","r","depth","children"];function Ck(t){Ek.call(this,t)}Ck.Definition={type:"Pack",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"padding",type:"number",default:0},{name:"radius",type:"field",default:null},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:Sk.length,default:Sk}]};var Mk=Object(ct.x)(Ck,Ek);Mk.layout=function(){var t=null,e=1,n=1,r=QO;function i(i){return i.x=e/2,i.y=n/2,t?i.eachBefore(ek(t)).eachAfter(nk(r,.5)).eachBefore(rk(1)):i.eachBefore(ek(tk)).eachAfter(nk(QO,1)).eachAfter(nk(r,i.r/Math.min(e,n))).eachBefore(rk(Math.min(e,n)/(2*i.r))),i}return i.radius=function(e){return arguments.length?(t=function(t){return null==t?null:ZO(t)}(e),i):t},i.size=function(t){return arguments.length?(e=+t[0],n=+t[1],i):[e,n]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:KO(+t),i):r},i},Mk.params=["size","padding"],Mk.fields=Sk;var Dk=["x0","y0","x1","y1","depth","children"];function Fk(t){Ek.call(this,t)}Fk.Definition={type:"Partition",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"padding",type:"number",default:0},{name:"round",type:"boolean",default:!1},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:Dk.length,default:Dk}]};var Nk=Object(ct.x)(Fk,Ek);function zk(t){ei.call(this,null,t)}Nk.layout=function(){var t=1,e=1,n=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=n,i.x1=t,i.y1=e/o,i.eachBefore(function(t,e){return function(r){r.children&&ok(r,r.x0,t*(r.depth+1)/e,r.x1,t*(r.depth+2)/e);var i=r.x0,o=r.y0,a=r.x1-n,u=r.y1-n;a<i&&(i=a=(i+a)/2),u<o&&(o=u=(o+u)/2),r.x0=i,r.y0=o,r.x1=a,r.y1=u}}(e,o)),r&&i.eachBefore(ik),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(n){return arguments.length?(t=+n[0],e=+n[1],i):[t,e]},i.padding=function(t){return arguments.length?(n=+t,i):n},i},Nk.params=["size","round","padding"],Nk.fields=Dk,zk.Definition={type:"Stratify",metadata:{treesource:!0},params:[{name:"key",type:"field",required:!0},{name:"parentKey",type:"field",required:!0}]},Object(ct.x)(zk,ei).transform=function(t,e){e.source||Object(ct.n)("Stratify transform requires an upstream data source.");var n=this.value,r=t.modified(),i=e.fork(e.ALL).materialize(e.SOURCE),o=!this.value||r||e.changed(e.ADD_REM)||e.modified(t.key.fields)||e.modified(t.parentKey.fields);return i.source=i.source.slice(),o&&(n=i.source.length?jO(fk().id(t.key).parentId(t.parentKey)(i.source),t.key,ct.db):jO(fk()([{}]),t.key,t.key)),i.source.root=this.value=n,i};var Tk={tidy:function(){var t=hk,e=1,n=1,r=null;function i(i){var s=function(t){for(var e,n,r,i,o,a=new vk(t,0),u=[a];e=u.pop();)if(r=e._.children)for(e.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(n=e.children[i]=new vk(r[i],i)),n.parent=e;return(a.parent=new vk(null,0)).children=[a],a}(i);if(s.eachAfter(o),s.parent.m=-s.z,s.eachBefore(a),r)i.eachBefore(u);else{var c=i,l=i,f=i;i.eachBefore(function(t){t.x<c.x&&(c=t),t.x>l.x&&(l=t),t.depth>f.depth&&(f=t)});var h=c===l?1:t(c,l)/2,d=h-c.x,p=e/(l.x+h+d),g=n/(f.depth||1);i.eachBefore(function(t){t.x=(t.x+d)*p,t.y=t.depth*g})}return i}function o(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;if(n){!function(t){for(var e,n=0,r=0,i=t.children,o=i.length;--o>=0;)(e=i[o]).z+=n,e.m+=n,n+=e.s+(r+=e.c)}(e);var o=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-o):e.z=o}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,r){if(n){for(var i,o=e,a=e,u=n,s=o.parent.children[0],c=o.m,l=a.m,f=u.m,h=s.m;u=pk(u),o=dk(o),u&&o;)s=dk(s),(a=pk(a)).a=e,(i=u.z+f-o.z-c+t(u._,o._))>0&&(gk(mk(u,e,r),e,i),c+=i,l+=i),f+=u.m,c+=o.m,h+=s.m,l+=a.m;u&&!pk(a)&&(a.t=u,a.m+=f-l),o&&!dk(s)&&(s.t=o,s.m+=c-h,r=e)}return r}(e,i,e.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i},cluster:function(){var t=SO,e=1,n=1,r=!1;function i(i){var o,a=0;i.eachAfter(function(e){var n=e.children;n?(e.x=function(t){return t.reduce(CO,0)/t.length}(n),e.y=function(t){return 1+t.reduce(MO,0)}(n)):(e.x=o?a+=t(e,o):0,e.y=0,o=e)});var u=function(t){for(var e;e=t.children;)t=e[0];return t}(i),s=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(i),c=u.x-t(u,s)/2,l=s.x+t(s,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*e,t.y=(i.y-t.y)*n}:function(t){t.x=(t.x-c)/(l-c)*e,t.y=(1-(i.y?t.y/i.y:1))*n})}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i}},$k=["x","y","depth","children"];function Rk(t){Ek.call(this,t)}Rk.Definition={type:"Tree",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"tidy",values:["tidy","cluster"]},{name:"size",type:"number",array:!0,length:2},{name:"nodeSize",type:"number",array:!0,length:2},{name:"separation",type:"boolean",default:!0},{name:"as",type:"string",array:!0,length:$k.length,default:$k}]};var Bk=Object(ct.x)(Rk,Ek);function Pk(t){ei.call(this,[],t)}Bk.layout=function(t){var e=t||"tidy";if(Tk.hasOwnProperty(e))return Tk[e]();Object(ct.n)("Unrecognized Tree layout method: "+e)},Bk.params=["size","nodeSize"],Bk.fields=$k,Pk.Definition={type:"TreeLinks",metadata:{tree:!0,generates:!0,changes:!0},params:[]},Object(ct.x)(Pk,ei).transform=function(t,e){var n=this.value,r=e.source&&e.source.root,i=e.fork(e.NO_SOURCE),o={};return r||Object(ct.n)("TreeLinks transform requires a tree data source."),e.changed(e.ADD_REM)?(i.rem=n,e.visit(e.SOURCE,function(t){o[gt(t)]=1}),r.each(function(t){var e=t.data,n=t.parent&&t.parent.data;n&&o[gt(e)]&&o[gt(n)]&&i.add.push(vt({source:n,target:e}))}),this.value=i.add):e.changed(e.MOD)&&(e.visit(e.MOD,function(t){o[gt(t)]=1}),n.forEach(function(t){(o[gt(t.source)]||o[gt(t.target)])&&i.mod.push(t)})),i};var Lk={binary:function(t,e,n,r,i){var o,a,u=t.children,s=u.length,c=new Array(s+1);for(c[0]=a=o=0;o<s;++o)c[o+1]=a+=u[o].value;!function t(e,n,r,i,o,a,s){if(e>=n-1){var l=u[e];return l.x0=i,l.y0=o,l.x1=a,void(l.y1=s)}for(var f=c[e],h=r/2+f,d=e+1,p=n-1;d<p;){var g=d+p>>>1;c[g]<h?d=g+1:p=g}h-c[d-1]<c[d]-h&&e+1<d&&--d;var m=c[d]-f,v=r-m;if(a-i>s-o){var y=(i*v+a*m)/r;t(e,d,m,i,o,y,s),t(d,n,v,y,o,a,s)}else{var b=(o*v+s*m)/r;t(e,d,m,i,o,a,b),t(d,n,v,i,b,a,s)}}(0,s,t.value,e,n,r,i)},dice:ok,slice:yk,slicedice:function(t,e,n,r,i){(1&t.depth?yk:ok)(t,e,n,r,i)},squarify:_k,resquarify:wk},Uk=["x0","y0","x1","y1","depth","children"];function qk(t){Ek.call(this,t)}qk.Definition={type:"Treemap",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"squarify",values:["squarify","resquarify","binary","dice","slice","slicedice"]},{name:"padding",type:"number",default:0},{name:"paddingInner",type:"number",default:0},{name:"paddingOuter",type:"number",default:0},{name:"paddingTop",type:"number",default:0},{name:"paddingRight",type:"number",default:0},{name:"paddingBottom",type:"number",default:0},{name:"paddingLeft",type:"number",default:0},{name:"ratio",type:"number",default:1.618033988749895},{name:"round",type:"boolean",default:!1},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:Uk.length,default:Uk}]};var Ik=Object(ct.x)(qk,Ek);Ik.layout=function(){var t=function(){var t=_k,e=!1,n=1,r=1,i=[0],o=QO,a=QO,u=QO,s=QO,c=QO;function l(t){return t.x0=t.y0=0,t.x1=n,t.y1=r,t.eachBefore(f),i=[0],e&&t.eachBefore(ik),t}function f(e){var n=i[e.depth],r=e.x0+n,l=e.y0+n,f=e.x1-n,h=e.y1-n;f<r&&(r=f=(r+f)/2),h<l&&(l=h=(l+h)/2),e.x0=r,e.y0=l,e.x1=f,e.y1=h,e.children&&(n=i[e.depth+1]=o(e)/2,r+=c(e)-n,l+=a(e)-n,(f-=u(e)-n)<r&&(r=f=(r+f)/2),(h-=s(e)-n)<l&&(l=h=(l+h)/2),t(e,r,l,f,h))}return l.round=function(t){return arguments.length?(e=!!t,l):e},l.size=function(t){return arguments.length?(n=+t[0],r=+t[1],l):[n,r]},l.tile=function(e){return arguments.length?(t=ZO(e),l):t},l.padding=function(t){return arguments.length?l.paddingInner(t).paddingOuter(t):l.paddingInner()},l.paddingInner=function(t){return arguments.length?(o="function"==typeof t?t:KO(+t),l):o},l.paddingOuter=function(t){return arguments.length?l.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):l.paddingTop()},l.paddingTop=function(t){return arguments.length?(a="function"==typeof t?t:KO(+t),l):a},l.paddingRight=function(t){return arguments.length?(u="function"==typeof t?t:KO(+t),l):u},l.paddingBottom=function(t){return arguments.length?(s="function"==typeof t?t:KO(+t),l):s},l.paddingLeft=function(t){return arguments.length?(c="function"==typeof t?t:KO(+t),l):c},l}();return t.ratio=function(e){var n=t.tile();n.ratio&&t.tile(n.ratio(e))},t.method=function(e){Lk.hasOwnProperty(e)?t.tile(Lk[e]):Object(ct.n)("Unrecognized Treemap layout method: "+e)},t},Ik.params=["method","ratio","size","round","padding","paddingInner","paddingOuter","paddingTop","paddingRight","paddingBottom","paddingLeft"],Ik.fields=Uk;var Wk=function(t,e){var n,r,i,o,a,u,s=[],c=function(t){return t(o)};if(null==e)s.push(t);else for(n={},r=0,i=t.length;r<i;++r)o=t[r],(u=n[a=e.map(c)])||(n[a]=u=[],u.dims=a,s.push(u)),u.push(o);return s};function Hk(t){ei.call(this,null,t)}Hk.Definition={type:"Loess",metadata:{generates:!0},params:[{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"groupby",type:"field",array:!0},{name:"bandwidth",type:"number",default:.3},{name:"as",type:"string",array:!0}]},Object(ct.x)(Hk,ei).transform=function(t,e){var n=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e.changed()||t.modified()){const r=e.materialize(e.SOURCE).source,i=Wk(r,t.groupby),o=(t.groupby||[]).map(ct.h),a=o.length,u=t.as||[Object(ct.h)(t.x),Object(ct.h)(t.y)],s=[];i.forEach(e=>{oo(e,t.x,t.y,t.bandwidth||.3).forEach(t=>{const n={};for(let t=0;t<a;++t)n[o[t]]=e.dims[t];n[u[0]]=t[0],n[u[1]]=t[1],s.push(vt(n))})}),this.value&&(n.rem=this.value),this.value=n.add=n.source=s}return n};const Gk={linear:Ki,log:to,exp:eo,pow:no,quad:ro,poly:io};function Yk(t){ei.call(this,null,t)}Yk.Definition={type:"Regression",metadata:{generates:!0},params:[{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"groupby",type:"field",array:!0},{name:"method",type:"string",default:"linear",values:Object.keys(Gk)},{name:"order",type:"number",default:3},{name:"extent",type:"number",array:!0,length:2},{name:"params",type:"boolean",default:!1},{name:"as",type:"string",array:!0}]},Object(ct.x)(Yk,ei).transform=function(t,e){var n=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e.changed()||t.modified()){const r=e.materialize(e.SOURCE).source,i=Wk(r,t.groupby),o=(t.groupby||[]).map(ct.h),a=t.method||"linear",u=t.order||3,s=function(t,e){return"poly"===t?e:"quad"===t?2:1}(a,u),c=t.as||[Object(ct.h)(t.x),Object(ct.h)(t.y)],l=Gk[a],f=[];let h=t.extent;Gk.hasOwnProperty(a)||Object(ct.n)("Invalid regression method: "+a),null!=h&&"log"===a&&h[0]<=0&&(e.dataflow.warn("Ignoring extent with values <= 0 for log regression."),h=null),i.forEach(n=>{if(n.length<=s)return void e.dataflow.warn("Skipping regression with more parameters than data points.");const r=l(n,t.x,t.y,u);if(t.params)return void f.push(vt({keys:n.dims,coef:r.coef,rSquared:r.rSquared}));const i=h||Object(ct.p)(n,t.x),d=t=>{const e={};for(let t=0;t<o.length;++t)e[o[t]]=n.dims[t];e[c[0]]=t[0],e[c[1]]=t[1],f.push(vt(e))};"linear"===a?i.forEach(t=>d([t,r.predict(t)])):co(r.predict,i,25,200).forEach(d)}),this.value&&(n.rem=this.value),this.value=n.add=n.source=f}return n};var Vk=function(t){return function(){return t}};function Xk(t){return t[0]}function Jk(t){return t[1]}function Zk(){this._=null}function Qk(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function Kk(t,e){var n=e,r=e.R,i=n.U;i?i.L===n?i.L=r:i.R=r:t._=r,r.U=i,n.U=r,n.R=r.L,n.R&&(n.R.U=n),r.L=n}function tA(t,e){var n=e,r=e.L,i=n.U;i?i.L===n?i.L=r:i.R=r:t._=r,r.U=i,n.U=r,n.L=r.R,n.L&&(n.L.U=n),r.R=n}function eA(t){for(;t.L;)t=t.L;return t}Zk.prototype={constructor:Zk,insert:function(t,e){var n,r,i;if(t){if(e.P=t,e.N=t.N,t.N&&(t.N.P=e),t.N=e,t.R){for(t=t.R;t.L;)t=t.L;t.L=e}else t.R=e;n=t}else this._?(t=eA(this._),e.P=null,e.N=t,t.P=t.L=e,n=t):(e.P=e.N=null,this._=e,n=null);for(e.L=e.R=null,e.U=n,e.C=!0,t=e;n&&n.C;)n===(r=n.U).L?(i=r.R)&&i.C?(n.C=i.C=!1,r.C=!0,t=r):(t===n.R&&(Kk(this,n),n=(t=n).U),n.C=!1,r.C=!0,tA(this,r)):(i=r.L)&&i.C?(n.C=i.C=!1,r.C=!0,t=r):(t===n.L&&(tA(this,n),n=(t=n).U),n.C=!1,r.C=!0,Kk(this,r)),n=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var e,n,r,i=t.U,o=t.L,a=t.R;if(n=o?a?eA(a):o:a,i?i.L===t?i.L=n:i.R=n:this._=n,o&&a?(r=n.C,n.C=t.C,n.L=o,o.U=n,n!==a?(i=n.U,n.U=t.U,t=n.R,i.L=t,n.R=a,a.U=n):(n.U=i,i=n,t=n.R)):(r=t.C,t=n),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((e=i.R).C&&(e.C=!1,i.C=!0,Kk(this,i),e=i.R),e.L&&e.L.C||e.R&&e.R.C){e.R&&e.R.C||(e.L.C=!1,e.C=!0,tA(this,e),e=i.R),e.C=i.C,i.C=e.R.C=!1,Kk(this,i),t=this._;break}}else if((e=i.L).C&&(e.C=!1,i.C=!0,tA(this,i),e=i.L),e.L&&e.L.C||e.R&&e.R.C){e.L&&e.L.C||(e.R.C=!1,e.C=!0,Kk(this,e),e=i.L),e.C=i.C,i.C=e.L.C=!1,tA(this,i),t=this._;break}e.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var nA=Zk;function rA(t,e,n,r){var i=[null,null],o=jA.push(i)-1;return i.left=t,i.right=e,n&&oA(i,t,e,n),r&&oA(i,e,t,r),AA[t.index].halfedges.push(o),AA[e.index].halfedges.push(o),i}function iA(t,e,n){var r=[e,n];return r.left=t,r}function oA(t,e,n,r){t[0]||t[1]?t.left===n?t[1]=r:t[0]=r:(t[0]=r,t.left=e,t.right=n)}function aA(t,e,n,r,i){var o,a=t[0],u=t[1],s=a[0],c=a[1],l=0,f=1,h=u[0]-s,d=u[1]-c;if(o=e-s,h||!(o>0)){if(o/=h,h<0){if(o<l)return;o<f&&(f=o)}else if(h>0){if(o>f)return;o>l&&(l=o)}if(o=r-s,h||!(o<0)){if(o/=h,h<0){if(o>f)return;o>l&&(l=o)}else if(h>0){if(o<l)return;o<f&&(f=o)}if(o=n-c,d||!(o>0)){if(o/=d,d<0){if(o<l)return;o<f&&(f=o)}else if(d>0){if(o>f)return;o>l&&(l=o)}if(o=i-c,d||!(o<0)){if(o/=d,d<0){if(o>f)return;o>l&&(l=o)}else if(d>0){if(o<l)return;o<f&&(f=o)}return!(l>0||f<1)||(l>0&&(t[0]=[s+l*h,c+l*d]),f<1&&(t[1]=[s+f*h,c+f*d]),!0)}}}}}function uA(t,e,n,r,i){var o=t[1];if(o)return!0;var a,u,s=t[0],c=t.left,l=t.right,f=c[0],h=c[1],d=l[0],p=l[1],g=(f+d)/2,m=(h+p)/2;if(p===h){if(g<e||g>=r)return;if(f>d){if(s){if(s[1]>=i)return}else s=[g,n];o=[g,i]}else{if(s){if(s[1]<n)return}else s=[g,i];o=[g,n]}}else if(u=m-(a=(f-d)/(p-h))*g,a<-1||a>1)if(f>d){if(s){if(s[1]>=i)return}else s=[(n-u)/a,n];o=[(i-u)/a,i]}else{if(s){if(s[1]<n)return}else s=[(i-u)/a,i];o=[(n-u)/a,n]}else if(h<p){if(s){if(s[0]>=r)return}else s=[e,a*e+u];o=[r,a*r+u]}else{if(s){if(s[0]<e)return}else s=[r,a*r+u];o=[e,a*e+u]}return t[0]=s,t[1]=o,!0}function sA(t,e){var n=t.site,r=e.left,i=e.right;return n===i&&(i=r,r=n),i?Math.atan2(i[1]-r[1],i[0]-r[0]):(n===r?(r=e[1],i=e[0]):(r=e[0],i=e[1]),Math.atan2(r[0]-i[0],i[1]-r[1]))}function cA(t,e){return e[+(e.left!==t.site)]}function lA(t,e){return e[+(e.left===t.site)]}var fA,hA=[];function dA(){Qk(this),this.x=this.y=this.arc=this.site=this.cy=null}function pA(t){var e=t.P,n=t.N;if(e&&n){var r=e.site,i=t.site,o=n.site;if(r!==o){var a=i[0],u=i[1],s=r[0]-a,c=r[1]-u,l=o[0]-a,f=o[1]-u,h=2*(s*f-c*l);if(!(h>=-CA)){var d=s*s+c*c,p=l*l+f*f,g=(f*d-c*p)/h,m=(s*p-l*d)/h,v=hA.pop()||new dA;v.arc=t,v.site=i,v.x=g+a,v.y=(v.cy=m+u)+Math.sqrt(g*g+m*m),t.circle=v;for(var y=null,b=EA._;b;)if(v.y<b.y||v.y===b.y&&v.x<=b.x){if(!b.L){y=b.P;break}b=b.L}else{if(!b.R){y=b;break}b=b.R}EA.insert(y,v),y||(fA=v)}}}}function gA(t){var e=t.circle;e&&(e.P||(fA=e.N),EA.remove(e),hA.push(e),Qk(e),t.circle=null)}var mA=[];function vA(){Qk(this),this.edge=this.site=this.circle=null}function yA(t){var e=mA.pop()||new vA;return e.site=t,e}function bA(t){gA(t),kA.remove(t),mA.push(t),Qk(t)}function xA(t){var e=t.circle,n=e.x,r=e.cy,i=[n,r],o=t.P,a=t.N,u=[t];bA(t);for(var s=o;s.circle&&Math.abs(n-s.circle.x)<SA&&Math.abs(r-s.circle.cy)<SA;)o=s.P,u.unshift(s),bA(s),s=o;u.unshift(s),gA(s);for(var c=a;c.circle&&Math.abs(n-c.circle.x)<SA&&Math.abs(r-c.circle.cy)<SA;)a=c.N,u.push(c),bA(c),c=a;u.push(c),gA(c);var l,f=u.length;for(l=1;l<f;++l)c=u[l],s=u[l-1],oA(c.edge,s.site,c.site,i);s=u[0],(c=u[f-1]).edge=rA(s.site,c.site,null,i),pA(s),pA(c)}function _A(t){for(var e,n,r,i,o=t[0],a=t[1],u=kA._;u;)if((r=wA(u,a)-o)>SA)u=u.L;else{if(!((i=o-OA(u,a))>SA)){r>-SA?(e=u.P,n=u):i>-SA?(e=u,n=u.N):e=n=u;break}if(!u.R){e=u;break}u=u.R}!function(t){AA[t.index]={site:t,halfedges:[]}}(t);var s=yA(t);if(kA.insert(e,s),e||n){if(e===n)return gA(e),n=yA(e.site),kA.insert(s,n),s.edge=n.edge=rA(e.site,s.site),pA(e),void pA(n);if(n){gA(e),gA(n);var c=e.site,l=c[0],f=c[1],h=t[0]-l,d=t[1]-f,p=n.site,g=p[0]-l,m=p[1]-f,v=2*(h*m-d*g),y=h*h+d*d,b=g*g+m*m,x=[(m*y-d*b)/v+l,(h*b-g*y)/v+f];oA(n.edge,c,p,x),s.edge=rA(c,t,null,x),n.edge=rA(t,p,null,x),pA(e),pA(n)}else s.edge=rA(e.site,s.site)}}function wA(t,e){var n=t.site,r=n[0],i=n[1],o=i-e;if(!o)return r;var a=t.P;if(!a)return-1/0;var u=(n=a.site)[0],s=n[1],c=s-e;if(!c)return u;var l=u-r,f=1/o-1/c,h=l/c;return f?(-h+Math.sqrt(h*h-2*f*(l*l/(-2*c)-s+c/2+i-o/2)))/f+r:(r+u)/2}function OA(t,e){var n=t.N;if(n)return wA(n,e);var r=t.site;return r[1]===e?r[0]:1/0}var kA,AA,EA,jA,SA=1e-6,CA=1e-12;function MA(t,e){return e[1]-t[1]||e[0]-t[0]}function DA(t,e){var n,r,i,o=t.sort(MA).pop();for(jA=[],AA=new Array(t.length),kA=new nA,EA=new nA;;)if(i=fA,o&&(!i||o[1]<i.y||o[1]===i.y&&o[0]<i.x))o[0]===n&&o[1]===r||(_A(o),n=o[0],r=o[1]),o=t.pop();else{if(!i)break;xA(i.arc)}if(function(){for(var t,e,n,r,i=0,o=AA.length;i<o;++i)if((t=AA[i])&&(r=(e=t.halfedges).length)){var a=new Array(r),u=new Array(r);for(n=0;n<r;++n)a[n]=n,u[n]=sA(t,jA[e[n]]);for(a.sort(function(t,e){return u[e]-u[t]}),n=0;n<r;++n)u[n]=e[a[n]];for(n=0;n<r;++n)e[n]=u[n]}}(),e){var a=+e[0][0],u=+e[0][1],s=+e[1][0],c=+e[1][1];!function(t,e,n,r){for(var i,o=jA.length;o--;)uA(i=jA[o],t,e,n,r)&&aA(i,t,e,n,r)&&(Math.abs(i[0][0]-i[1][0])>SA||Math.abs(i[0][1]-i[1][1])>SA)||delete jA[o]}(a,u,s,c),function(t,e,n,r){var i,o,a,u,s,c,l,f,h,d,p,g,m=AA.length,v=!0;for(i=0;i<m;++i)if(o=AA[i]){for(a=o.site,u=(s=o.halfedges).length;u--;)jA[s[u]]||s.splice(u,1);for(u=0,c=s.length;u<c;)p=(d=lA(o,jA[s[u]]))[0],g=d[1],f=(l=cA(o,jA[s[++u%c]]))[0],h=l[1],(Math.abs(p-f)>SA||Math.abs(g-h)>SA)&&(s.splice(u,0,jA.push(iA(a,d,Math.abs(p-t)<SA&&r-g>SA?[t,Math.abs(f-t)<SA?h:r]:Math.abs(g-r)<SA&&n-p>SA?[Math.abs(h-r)<SA?f:n,r]:Math.abs(p-n)<SA&&g-e>SA?[n,Math.abs(f-n)<SA?h:e]:Math.abs(g-e)<SA&&p-t>SA?[Math.abs(h-e)<SA?f:t,e]:null))-1),++c);c&&(v=!1)}if(v){var y,b,x,_=1/0;for(i=0,v=null;i<m;++i)(o=AA[i])&&(x=(y=(a=o.site)[0]-t)*y+(b=a[1]-e)*b)<_&&(_=x,v=o);if(v){var w=[t,e],O=[t,r],k=[n,r],A=[n,e];v.halfedges.push(jA.push(iA(a=v.site,w,O))-1,jA.push(iA(a,O,k))-1,jA.push(iA(a,k,A))-1,jA.push(iA(a,A,w))-1)}}for(i=0;i<m;++i)(o=AA[i])&&(o.halfedges.length||delete AA[i])}(a,u,s,c)}this.edges=jA,this.cells=AA,kA=EA=jA=AA=null}DA.prototype={constructor:DA,polygons:function(){var t=this.edges;return this.cells.map(function(e){var n=e.halfedges.map(function(n){return cA(e,t[n])});return n.data=e.site.data,n})},triangles:function(){var t=[],e=this.edges;return this.cells.forEach(function(n,r){if(o=(i=n.halfedges).length)for(var i,o,a,u,s,c,l=n.site,f=-1,h=e[i[o-1]],d=h.left===l?h.right:h.left;++f<o;)a=d,d=(h=e[i[f]]).left===l?h.right:h.left,a&&d&&r<a.index&&r<d.index&&(s=a,c=d,((u=l)[0]-c[0])*(s[1]-u[1])-(u[0]-s[0])*(c[1]-u[1])<0)&&t.push([l.data,a.data,d.data])}),t},links:function(){return this.edges.filter(function(t){return t.right}).map(function(t){return{source:t.left.data,target:t.right.data}})},find:function(t,e,n){for(var r,i,o=this,a=o._found||0,u=o.cells.length;!(i=o.cells[a]);)if(++a>=u)return null;var s=t-i.site[0],c=e-i.site[1],l=s*s+c*c;do{i=o.cells[r=a],a=null,i.halfedges.forEach(function(n){var r=o.edges[n],u=r.left;if(u!==i.site&&u||(u=r.right)){var s=t-u[0],c=e-u[1],f=s*s+c*c;f<l&&(l=f,a=u.index)}})}while(null!==a);return o._found=r,null==n||l<=n*n?i.site:null}};function FA(t){ei.call(this,null,t)}FA.Definition={type:"Voronoi",metadata:{modifies:!0},params:[{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"size",type:"number",array:!0,length:2},{name:"extent",type:"array",array:!0,length:2,default:[[-1e5,-1e5],[1e5,1e5]],content:{type:"number",array:!0,length:2}},{name:"as",type:"string",default:"path"}]};var NA=Object(ct.x)(FA,ei),zA=[[-1e5,-1e5],[1e5,1e5]];NA.transform=function(t,e){var n,r,i,o,a=t.as||"path",u=e.source;for(n=function(){var t=Xk,e=Jk,n=null;function r(r){return new DA(r.map(function(n,i){var o=[Math.round(t(n,i,r)/SA)*SA,Math.round(e(n,i,r)/SA)*SA];return o.index=i,o.data=n,o}),n)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(e){return arguments.length?(t="function"==typeof e?e:Vk(+e),r):t},r.y=function(t){return arguments.length?(e="function"==typeof t?t:Vk(+t),r):e},r.extent=function(t){return arguments.length?(n=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):n&&[[n[0][0],n[0][1]],[n[1][0],n[1][1]]]},r.size=function(t){return arguments.length?(n=null==t?null:[[0,0],[+t[0],+t[1]]],r):n&&[n[1][0]-n[0][0],n[1][1]-n[0][1]]},r}().x(t.x).y(t.y),t.size?n.size(t.size):n.extent(t.extent||zA),this.value=n=n(u),r=n.polygons(),i=0,o=u.length;i<o;++i)u[i][a]=r[i]?"M"+r[i].join("L")+"Z":null;return e.reflow(t.modified()).modifies(a)};var TA=Math.PI/180,$A=64,RA=2048,BA=function(){var t,e,n,r,i,o,a,u=[256,256],s=qA,c=[],l=Math.random,f={};function h(t,e,n){for(var r,i,o,a,c,f=e.x,h=e.y,d=Math.sqrt(u[0]*u[0]+u[1]*u[1]),p=s(u),g=l()<.5?1:-1,m=-g;(r=p(m+=g))&&(i=~~r[0],o=~~r[1],!(Math.min(Math.abs(i),Math.abs(o))>=d));)if(e.x=f+i,e.y=h+o,!(e.x+e.x0<0||e.y+e.y0<0||e.x+e.x1>u[0]||e.y+e.y1>u[1]||n&&LA(e,t,u[0])||n&&(c=n,!((a=e).x+a.x1>c[0].x&&a.x+a.x0<c[1].x&&a.y+a.y1>c[0].y&&a.y+a.y0<c[1].y)))){for(var v,y=e.sprite,b=e.width>>5,x=u[0]>>5,_=e.x-(b<<4),w=127&_,O=32-w,k=e.y1-e.y0,A=(e.y+e.y0)*x+(_>>5),E=0;E<k;E++){v=0;for(var j=0;j<=b;j++)t[A+j]|=v<<O|(j<b?(v=y[E*b+j])>>>w:0);A+=x}return e.sprite=null,!0}return!1}return f.layout=function(){for(var s=function(t){t.width=t.height=1;var e=Math.sqrt(t.getContext("2d").getImageData(0,0,1,1).data.length>>2);t.width=($A<<5)/e,t.height=RA/e;var n=t.getContext("2d");return n.fillStyle=n.strokeStyle="red",n.textAlign="center",{context:n,ratio:e}}(wu()),f=function(t){var e=[],n=-1;for(;++n<t;)e[n]=0;return e}((u[0]>>5)*u[1]),d=null,p=c.length,g=-1,m=[],v=c.map(function(u){return{text:t(u),font:e(u),style:r(u),weight:i(u),rotate:o(u),size:~~n(u),padding:a(u),xoff:0,yoff:0,x1:0,y1:0,x0:0,y0:0,hasText:!1,sprite:null,datum:u}}).sort(function(t,e){return e.size-t.size});++g<p;){var y=v[g];y.x=u[0]*(l()+.5)>>1,y.y=u[1]*(l()+.5)>>1,PA(s,y,v,g),y.hasText&&h(f,y,d)&&(m.push(y),d?UA(d,y):d=[{x:y.x+y.x0,y:y.y+y.y0},{x:y.x+y.x1,y:y.y+y.y1}],y.x-=u[0]>>1,y.y-=u[1]>>1)}return m},f.words=function(t){return arguments.length?(c=t,f):c},f.size=function(t){return arguments.length?(u=[+t[0],+t[1]],f):u},f.font=function(t){return arguments.length?(e=IA(t),f):e},f.fontStyle=function(t){return arguments.length?(r=IA(t),f):r},f.fontWeight=function(t){return arguments.length?(i=IA(t),f):i},f.rotate=function(t){return arguments.length?(o=IA(t),f):o},f.text=function(e){return arguments.length?(t=IA(e),f):t},f.spiral=function(t){return arguments.length?(s=WA[t]||t,f):s},f.fontSize=function(t){return arguments.length?(n=IA(t),f):n},f.padding=function(t){return arguments.length?(a=IA(t),f):a},f.random=function(t){return arguments.length?(l=t,f):l},f};function PA(t,e,n,r){if(!e.sprite){var i=t.context,o=t.ratio;i.clearRect(0,0,($A<<5)/o,RA/o);var a,u,s,c,l,f=0,h=0,d=0,p=n.length;for(--r;++r<p;){if(e=n[r],i.save(),i.font=e.style+" "+e.weight+" "+~~((e.size+1)/o)+"px "+e.font,a=i.measureText(e.text+"m").width*o,s=e.size<<1,e.rotate){var g=Math.sin(e.rotate*TA),m=Math.cos(e.rotate*TA),v=a*m,y=a*g,b=s*m,x=s*g;a=Math.max(Math.abs(v+x),Math.abs(v-x))+31>>5<<5,s=~~Math.max(Math.abs(y+b),Math.abs(y-b))}else a=a+31>>5<<5;if(s>d&&(d=s),f+a>=$A<<5&&(f=0,h+=d,d=0),h+s>=RA)break;i.translate((f+(a>>1))/o,(h+(s>>1))/o),e.rotate&&i.rotate(e.rotate*TA),i.fillText(e.text,0,0),e.padding&&(i.lineWidth=2*e.padding,i.strokeText(e.text,0,0)),i.restore(),e.width=a,e.height=s,e.xoff=f,e.yoff=h,e.x1=a>>1,e.y1=s>>1,e.x0=-e.x1,e.y0=-e.y1,e.hasText=!0,f+=a}for(var _=i.getImageData(0,0,($A<<5)/o,RA/o).data,w=[];--r>=0;)if((e=n[r]).hasText){for(u=(a=e.width)>>5,s=e.y1-e.y0,c=0;c<s*u;c++)w[c]=0;if(null==(f=e.xoff))return;h=e.yoff;var O=0,k=-1;for(l=0;l<s;l++){for(c=0;c<a;c++){var A=u*l+(c>>5),E=_[(h+l)*($A<<5)+(f+c)<<2]?1<<31-c%32:0;w[A]|=E,O|=E}O?k=l:(e.y0++,s--,l--,h++)}e.y1=e.y0+k,e.sprite=w.slice(0,(e.y1-e.y0)*u)}}}function LA(t,e,n){n>>=5;for(var r,i=t.sprite,o=t.width>>5,a=t.x-(o<<4),u=127&a,s=32-u,c=t.y1-t.y0,l=(t.y+t.y0)*n+(a>>5),f=0;f<c;f++){r=0;for(var h=0;h<=o;h++)if((r<<s|(h<o?(r=i[f*o+h])>>>u:0))&e[l+h])return!0;l+=n}return!1}function UA(t,e){var n=t[0],r=t[1];e.x+e.x0<n.x&&(n.x=e.x+e.x0),e.y+e.y0<n.y&&(n.y=e.y+e.y0),e.x+e.x1>r.x&&(r.x=e.x+e.x1),e.y+e.y1>r.y&&(r.y=e.y+e.y1)}function qA(t){var e=t[0]/t[1];return function(t){return[e*(t*=.1)*Math.cos(t),t*Math.sin(t)]}}function IA(t){return"function"==typeof t?t:function(){return t}}var WA={archimedean:qA,rectangular:function(t){var e=4*t[0]/t[1],n=0,r=0;return function(t){var i=t<0?-1:1;switch(Math.sqrt(1+4*i*t)-i&3){case 0:n+=e;break;case 1:r+=4;break;case 2:n-=e;break;default:r-=4}return[n,r]}}},HA=["x","y","font","fontSize","fontStyle","fontWeight","angle"],GA=["text","font","rotate","fontSize","fontStyle","fontWeight"];function YA(t){ei.call(this,BA(),t)}function VA(t){return new Uint32Array(t)}function XA(t,e,n){var r=(e<257?function(t){return new Uint8Array(t)}:e<65537?function(t){return new Uint16Array(t)}:VA)(t);return n&&r.set(n),r}YA.Definition={type:"Wordcloud",metadata:{modifies:!0},params:[{name:"size",type:"number",array:!0,length:2},{name:"font",type:"string",expr:!0,default:"sans-serif"},{name:"fontStyle",type:"string",expr:!0,default:"normal"},{name:"fontWeight",type:"string",expr:!0,default:"normal"},{name:"fontSize",type:"number",expr:!0,default:14},{name:"fontSizeRange",type:"number",array:"nullable",default:[10,50]},{name:"rotate",type:"number",expr:!0,default:0},{name:"text",type:"field"},{name:"spiral",type:"string",values:["archimedean","rectangular"]},{name:"padding",type:"number",expr:!0},{name:"as",type:"string",array:!0,length:7,default:HA}]},Object(ct.x)(YA,ei).transform=function(t,e){!t.size||t.size[0]&&t.size[1]||Object(ct.n)("Wordcloud size dimensions must be non-zero.");var n=t.modified();if(n||e.changed(e.ADD_REM)||GA.some(function(n){var r=t[n];return Object(ct.C)(r)&&e.modified(r.fields)})){var r,i=e.materialize(e.SOURCE).source,o=this.value,a=t.as||HA,u=t.fontSize||14;if(Object(ct.C)(u)?r=t.fontSizeRange:u=Object(ct.l)(u),r){var s=u,c=km("sqrt")().domain(function(t,e){for(var n,r=1/0,i=-1/0,o=0,a=e.length;o<a;++o)(n=t(e[o]))<r&&(r=n),n>i&&(i=n);return[r,i]}(s,i)).range(r);u=function(t){return c(s(t))}}i.forEach(function(t){t[a[0]]=NaN,t[a[1]]=NaN,t[a[3]]=0});for(var l,f,h=o.words(i).text(t.text).size(t.size||[500,500]).padding(t.padding||1).spiral(t.spiral||"archimedean").rotate(t.rotate||0).font(t.font||"sans-serif").fontStyle(t.fontStyle||"normal").fontWeight(t.fontWeight||"normal").fontSize(u).random(mi).layout(),d=o.size(),p=d[0]>>1,g=d[1]>>1,m=0,v=h.length;m<v;++m)(f=(l=h[m]).datum)[a[0]]=l.x+p,f[a[1]]=l.y+g,f[a[2]]=l.font,f[a[3]]=l.size,f[a[4]]=l.style,f[a[5]]=l.weight,f[a[6]]=l.rotate;return e.reflow(n).modifies(a)}};var JA=function(t,e,n){var r=1<<e;return{one:r,zero:~r,range:n.slice(),bisect:t.bisect,index:t.index,size:t.size,onAdd:function(t,e){var n,i=this.bisect(this.range,t.value),o=t.index,a=i[0],u=i[1],s=o.length;for(n=0;n<a;++n)e[o[n]]|=r;for(n=u;n<s;++n)e[o[n]]|=r;return this}}};function ZA(){var t=VA(0),e=[],n=0;return{insert:function(r,i,o){if(!i.length)return[];var a,u,s,c=n,l=i.length,f=Array(l),h=VA(l);for(s=0;s<l;++s)f[s]=r(i[s]),h[s]=s;if(f=function(t,e){return t.sort.call(e,function(e,n){var r=t[e],i=t[n];return r<i?-1:r>i?1:0}),Li(t,e)}(f,h),c)a=e,u=t,e=Array(c+l),t=VA(c+l),function(t,e,n,r,i,o,a,u,s){var c,l=0,f=0;for(c=0;l<r&&f<a;++c)e[l]<i[f]?(u[c]=e[l],s[c]=n[l++]):(u[c]=i[f],s[c]=o[f++]+t);for(;l<r;++l,++c)u[c]=e[l],s[c]=n[l];for(;f<a;++f,++c)u[c]=i[f],s[c]=o[f]+t}(o,a,u,c,f,h,l,e,t);else{if(o>0)for(s=0;s<l;++s)h[s]+=o;e=f,t=h}return n=c+l,{index:h,value:f}},remove:function(r,i){var o,a,u,s=n;for(a=0;!i[t[a]]&&a<s;++a);for(u=a;a<s;++a)i[o=t[a]]||(t[u]=o,e[u]=e[a],++u);n=s-r},bisect:function(t,r){var i;return r?i=r.length:(r=e,i=n),[wi(r,t[0],0,i),_i(r,t[1],0,i)]},reindex:function(e){for(var r=0,i=n;r<i;++r)t[r]=e[t[r]]},index:function(){return t},size:function(){return n}}}function QA(t){var e,n,r,i,o;ei.call(this,(e=8,n=[],r=VA(0),i=XA(0,e),o=XA(0,e),{data:function(){return n},seen:function(){return t=r,e=n.length,r=t.length>=e?t:((i=i||new t.constructor(e)).set(t),i);var t,e,i},add:function(t){for(var e,r=0,i=n.length,o=t.length;r<o;++r)(e=t[r])._index=i++,n.push(e)},remove:function(t,e){var r,a,u,s=n.length,c=Array(s-t),l=n;for(a=0;!e[a]&&a<s;++a)c[a]=n[a],l[a]=a;for(u=a;a<s;++a)r=n[a],e[a]?l[a]=-1:(l[a]=u,i[u]=i[a],o[u]=o[a],c[u]=r,r._index=u++),i[a]=0;return n=c,l},size:function(){return n.length},curr:function(){return i},prev:function(){return o},reset:function(t){o[t]=i[t]},all:function(){return e<257?255:e<65537?65535:4294967295},set:function(t,e){i[t]|=e},clear:function(t,e){i[t]&=~e},resize:function(t,n){(t>i.length||n>e)&&(e=Math.max(n,e),i=XA(t,e,i),o=XA(t,e))}}),t),this._indices=null,this._dims=null}QA.Definition={type:"CrossFilter",metadata:{},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"query",type:"array",array:!0,required:!0,content:{type:"number",array:!0,length:2}}]};var KA=Object(ct.x)(QA,ei);function tE(t){ei.call(this,null,t)}KA.transform=function(t,e){return this._dims?t.modified("fields")||t.fields.some(function(t){return e.modified(t.fields)})?this.reinit(t,e):this.eval(t,e):this.init(t,e)},KA.init=function(t,e){for(var n,r,i=t.fields,o=t.query,a=this._indices={},u=this._dims=[],s=o.length,c=0;c<s;++c)r=a[n=i[c].fname]||(a[n]=ZA()),u.push(JA(r,c,o[c]));return this.eval(t,e)},KA.reinit=function(t,e){var n,r,i,o,a,u,s,c,l,f=e.materialize().fork(),h=t.fields,d=t.query,p=this._indices,g=this._dims,m=this.value,v=m.curr(),y=m.prev(),b=m.all(),x=f.rem=f.add,_=f.mod,w=d.length,O={};if(y.set(v),e.rem.length&&(a=this.remove(t,e,f)),e.add.length&&m.add(e.add),e.mod.length)for(u={},s=0,c=(o=e.mod).length;s<c;++s)u[o[s]._index]=1;for(s=0;s<w;++s)l=h[s],(!g[s]||t.modified("fields",s)||e.modified(l.fields))&&((n=O[i=l.fname])||(p[i]=r=ZA(),O[i]=n=r.insert(l,e.source,0)),g[s]=JA(r,s,d[s]).onAdd(n,v));for(s=0,c=m.data().length;s<c;++s)a[s]||(y[s]!==v[s]?x.push(s):u[s]&&v[s]!==b&&_.push(s));return m.mask=(1<<w)-1,f},KA.eval=function(t,e){var n=e.materialize().fork(),r=this._dims.length,i=0;return e.rem.length&&(this.remove(t,e,n),i|=(1<<r)-1),t.modified("query")&&!t.modified("fields")&&(i|=this.update(t,e,n)),e.add.length&&(this.insert(t,e,n),i|=(1<<r)-1),e.mod.length&&(this.modify(e,n),i|=(1<<r)-1),this.value.mask=i,n},KA.insert=function(t,e,n){var r,i,o,a=e.add,u=this.value,s=this._dims,c=this._indices,l=t.fields,f={},h=n.add,d=u.size(),p=d+a.length,g=s.length;u.resize(p,g),u.add(a);var m=u.curr(),v=u.prev(),y=u.all();for(r=0;r<g;++r)o=f[i=l[r].fname]||(f[i]=c[i].insert(l[r],a,d)),s[r].onAdd(o,m);for(;d<p;++d)v[d]=y,m[d]!==y&&h.push(d)},KA.modify=function(t,e){var n,r,i,o=e.mod,a=this.value,u=a.curr(),s=a.all(),c=t.mod;for(n=0,r=c.length;n<r;++n)u[i=c[n]._index]!==s&&o.push(i)},KA.remove=function(t,e,n){var r,i,o,a,u=this._indices,s=this.value,c=s.curr(),l=s.prev(),f=s.all(),h={},d=n.rem,p=e.rem;for(r=0,i=p.length;r<i;++r)h[o=p[r]._index]=1,l[o]=a=c[o],c[o]=f,a!==f&&d.push(o);for(o in u)u[o].remove(i,h);return this.reindex(e,i,h),h},KA.reindex=function(t,e,n){var r=this._indices,i=this.value;t.runAfter(function(){var t=i.remove(e,n);for(var o in r)r[o].reindex(t)})},KA.update=function(t,e,n){var r,i,o=this._dims,a=t.query,u=e.stamp,s=o.length,c=0;for(n.filters=0,i=0;i<s;++i)t.modified("query",i)&&(r=i,++c);if(1===c)c=o[r].one,this.incrementOne(o[r],a[r],n.add,n.rem);else for(i=0,c=0;i<s;++i)t.modified("query",i)&&(c|=o[i].one,this.incrementAll(o[i],a[i],u,n.add),n.rem=n.add);return c},KA.incrementAll=function(t,e,n,r){var i,o,a,u=this.value,s=u.seen(),c=u.curr(),l=u.prev(),f=t.index(),h=t.bisect(t.range),d=t.bisect(e),p=d[0],g=d[1],m=h[0],v=h[1],y=t.one;if(p<m)for(i=p,o=Math.min(m,g);i<o;++i)s[a=f[i]]!==n&&(l[a]=c[a],s[a]=n,r.push(a)),c[a]^=y;else if(p>m)for(i=m,o=Math.min(p,v);i<o;++i)s[a=f[i]]!==n&&(l[a]=c[a],s[a]=n,r.push(a)),c[a]^=y;if(g>v)for(i=Math.max(p,v),o=g;i<o;++i)s[a=f[i]]!==n&&(l[a]=c[a],s[a]=n,r.push(a)),c[a]^=y;else if(g<v)for(i=Math.max(m,g),o=v;i<o;++i)s[a=f[i]]!==n&&(l[a]=c[a],s[a]=n,r.push(a)),c[a]^=y;t.range=e.slice()},KA.incrementOne=function(t,e,n,r){var i,o,a,u=this.value.curr(),s=t.index(),c=t.bisect(t.range),l=t.bisect(e),f=l[0],h=l[1],d=c[0],p=c[1],g=t.one;if(f<d)for(i=f,o=Math.min(d,h);i<o;++i)u[a=s[i]]^=g,n.push(a);else if(f>d)for(i=d,o=Math.min(f,p);i<o;++i)u[a=s[i]]^=g,r.push(a);if(h>p)for(i=Math.max(f,p),o=h;i<o;++i)u[a=s[i]]^=g,n.push(a);else if(h<p)for(i=Math.max(d,h),o=p;i<o;++i)u[a=s[i]]^=g,r.push(a);t.range=e.slice()},tE.Definition={type:"ResolveFilter",metadata:{},params:[{name:"ignore",type:"number",required:!0,description:"A bit mask indicating which filters to ignore."},{name:"filter",type:"object",required:!0,description:"Per-tuple filter bitmaps from a CrossFilter transform."}]},Object(ct.x)(tE,ei).transform=function(t,e){var n=~(t.ignore||0),r=t.filter,i=r.mask;if(0==(i&n))return e.StopPropagation;var o=e.fork(e.ALL),a=r.data(),u=r.curr(),s=r.prev(),c=function(t){return u[t]&n?null:a[t]};return o.filter(o.MOD,c),i&i-1?(o.filter(o.ADD,function(t){var e=u[t]&n;return!e&&e^s[t]&n?a[t]:null}),o.filter(o.REM,function(t){var e=u[t]&n;return e&&!(e^e^s[t]&n)?a[t]:null})):(o.filter(o.ADD,c),o.filter(o.REM,function(t){return(u[t]&n)===i?a[t]:null})),o.filter(o.SOURCE,function(t){return c(t._index)})};var eE=n(7),nE=function(t){var e=t._signals.cursor;e||(t._signals.cursor=e=t.add({user:"default",item:null})),t.on(t.events("view","mousemove"),e,function(t,n){var r=e.value,i=r?Object(ct.G)(r)?r:r.user:"default",o=n.item&&n.item.cursor||null;return r&&i===r.user&&o==r.item?r:{user:i,item:o}}),t.add(null,function(t){var e=t.cursor,n=this.value;return Object(ct.G)(e)||(n=e.item,e=e.user),function(t){"undefined"!=typeof document&&document.body&&(document.body.style.cursor=t)}(e&&"default"!==e?e:n||e),n},{cursor:e})};function rE(t,e){var n=t._runtime.data;return n.hasOwnProperty(e)||Object(ct.n)("Unrecognized data set: "+e),n[e]}function iE(t,e){_t(e)||Object(ct.n)("Second argument to changes must be a changeset.");var n=rE(this,t);return n.modified=!0,this.pulse(n.input,e)}function oE(t){var e=t.padding();return Math.max(0,t._viewWidth+e.left+e.right)}function aE(t){var e=t.padding();return Math.max(0,t._viewHeight+e.top+e.bottom)}function uE(t){var e=t.padding(),n=t._origin;return[e.left+n[0],e.top+n[1]]}var sE=function(t,e,n){var r,i,o,a=t._renderer,u=a&&a.canvas();return u&&(o=uE(t),i=e.changedTouches?e.changedTouches[0]:e,(r=nf(i,u))[0]-=o[0],r[1]-=o[1]),e.dataflow=t,e.item=n,e.vega=function(t,e,n){var r=e?"group"===e.mark.marktype?e:e.mark.group:null;function i(t){var n,i=r;if(t)for(n=e;n;n=n.mark.group)if(n.mark.name===t){i=n;break}return i&&i.mark&&i.mark.interactive?i:{}}function o(t){if(!t)return n;Object(ct.G)(t)&&(t=i(t));for(var e=n.slice();t;)e[0]-=t.x||0,e[1]-=t.y||0,t=t.mark&&t.mark.group;return e}return{view:Object(ct.l)(t),item:Object(ct.l)(e||{}),group:i,xy:o,x:function(t){return o(t)[0]},y:function(t){return o(t)[1]}}}(t,n,r),e};var cE="view",lE="timer",fE="window",hE={trap:!1};function dE(t){return t.item}function pE(t){var e=t.item.mark.source;return e.source||e}function gE(t){return function(e,n){return n.vega.view().changeset().encode(n.item,t)}}var mE=function(t,e,n){var r=document.createElement(t);for(var i in e)r.setAttribute(i,e[i]);return null!=n&&(r.textContent=n),r},vE="vega-bind",yE="vega-bind-name",bE="vega-bind-radio",xE="vega-option-",_E=function(t,e,n){if(e){var r=n.param,i=n.state;return i||(i=n.state={elements:null,active:!1,set:null,update:function(e){e!==t.signal(r.signal)&&t.runAsync(null,function(){i.source=!0,t.signal(r.signal,e)})}},r.debounce&&(i.update=Object(ct.m)(r.debounce,i.update))),function(t,e,n,r){var i=mE("div",{class:vE});i.appendChild(mE("span",{class:yE},n.name||n.signal)),e.appendChild(i);var o=wE;switch(n.input){case"checkbox":o=OE;break;case"select":o=kE;break;case"radio":o=AE;break;case"range":o=EE}o(t,i,n,r)}(i,e,r,t.signal(r.signal)),i.active||(t.on(t._signals[r.signal],null,function(){i.source?i.source=!1:i.set(t.signal(r.signal))}),i.active=!0),i}};function wE(t,e,n,r){var i=mE("input");for(var o in n)"signal"!==o&&"element"!==o&&i.setAttribute("input"===o?"type":o,n[o]);i.setAttribute("name",n.signal),i.value=r,e.appendChild(i),i.addEventListener("input",function(){t.update(i.value)}),t.elements=[i],t.set=function(t){i.value=t}}function OE(t,e,n,r){var i={type:"checkbox",name:n.signal};r&&(i.checked=!0);var o=mE("input",i);e.appendChild(o),o.addEventListener("change",function(){t.update(o.checked)}),t.elements=[o],t.set=function(t){o.checked=!!t||null}}function kE(t,e,n,r){var i=mE("select",{name:n.signal});n.options.forEach(function(t){var e={value:t};jE(t,r)&&(e.selected=!0),i.appendChild(mE("option",e,t+""))}),e.appendChild(i),i.addEventListener("change",function(){t.update(n.options[i.selectedIndex])}),t.elements=[i],t.set=function(t){for(var e=0,r=n.options.length;e<r;++e)if(jE(n.options[e],t))return void(i.selectedIndex=e)}}function AE(t,e,n,r){var i=mE("span",{class:bE});e.appendChild(i),t.elements=n.options.map(function(e){var o=xE+n.signal+"-"+e,a={id:o,type:"radio",name:n.signal,value:e};jE(e,r)&&(a.checked=!0);var u=mE("input",a);return u.addEventListener("change",function(){t.update(e)}),i.appendChild(u),i.appendChild(mE("label",{for:o},e+"")),u}),t.set=function(e){for(var n=t.elements,r=0,i=n.length;r<i;++r)jE(n[r].value,e)&&(n[r].checked=!0)}}function EE(t,e,n,r){r=void 0!==r?r:(+n.max+ +n.min)/2;var i=n.min||Math.min(0,+r)||0,o=n.max||Math.max(100,+r)||100,a=n.step||Ni(i,o,100),u=mE("input",{type:"range",name:n.signal,min:i,max:o,step:a});u.value=r;var s=mE("label",{},+r);function c(){s.textContent=u.value,t.update(+u.value)}e.appendChild(u),e.appendChild(s),u.addEventListener("input",c),u.addEventListener("change",c),t.elements=[u],t.set=function(t){u.value=t,s.textContent=t}}function jE(t,e){return t===e||t+""==e+""}var SE=function(t,e,n,r,i,o){return(e=e||new r(t.loader())).initialize(n,oE(t),aE(t),uE(t),i,o).background(t._background)},CE=function(t,e){return e?function(){try{e.apply(this,arguments)}catch(e){t.error(e)}}:null};function ME(t,e){if("string"==typeof e){if("undefined"==typeof document)return t.error("DOM document instance not found."),null;if(!(e=document.querySelector(e)))return t.error("Signal bind element not found: "+e),null}if(e)try{e.innerHTML=""}catch(n){e=null,t.error(n)}return e}var DE=async function(t,e,n,r){const i=Xf(e),o=i&&i.headless;return o||Object(ct.n)("Unrecognized renderer type: "+e),await t.runAsync(),SE(t,null,null,o,n,r).renderAsync(t._scenegraph.root)};var FE,NE,zE,TE,$E,RE="RawCode",BE="Literal",PE="Property",LE="Identifier",UE="ArrayExpression",qE="BinaryExpression",IE="CallExpression",WE="ConditionalExpression",HE="LogicalExpression",GE="MemberExpression",YE="ObjectExpression",VE="UnaryExpression";function XE(t){this.type=t}XE.prototype.visit=function(t){var e,n,r;if(t(this))return 1;for(n=0,r=(e=function(t){switch(t.type){case UE:return t.elements;case qE:case HE:return[t.left,t.right];case IE:var e=t.arguments.slice();return e.unshift(t.callee),e;case WE:return[t.test,t.consequent,t.alternate];case GE:return[t.object,t.property];case YE:return t.properties;case PE:return[t.key,t.value];case VE:return[t.argument];case LE:case BE:case RE:default:return[]}}(this)).length;n<r;++n)if(e[n].visit(t))return 1};var JE=1,ZE=2,QE=3,KE=4,tj=5,ej=6,nj=7,rj=8;(FE={})[JE]="Boolean",FE[ZE]="<end>",FE[QE]="Identifier",FE[KE]="Keyword",FE[tj]="Null",FE[ej]="Numeric",FE[nj]="Punctuator",FE[rj]="String",FE[9]="RegularExpression";var ij="ArrayExpression",oj="BinaryExpression",aj="CallExpression",uj="ConditionalExpression",sj="Identifier",cj="Literal",lj="LogicalExpression",fj="MemberExpression",hj="ObjectExpression",dj="Property",pj="UnaryExpression",gj="Unexpected token %0",mj="Unexpected number",vj="Unexpected string",yj="Unexpected identifier",bj="Unexpected reserved word",xj="Unexpected end of input",_j="Invalid regular expression",wj="Invalid regular expression: missing /",Oj="Octal literals are not allowed in strict mode.",kj="Duplicate data property in object literal not allowed in strict mode",Aj="ILLEGAL",Ej="Disabled.",jj=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),Sj=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function Cj(t,e){if(!t)throw new Error("ASSERT: "+e)}function Mj(t){return t>=48&&t<=57}function Dj(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Fj(t){return"01234567".indexOf(t)>=0}function Nj(t){return 32===t||9===t||11===t||12===t||160===t||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function zj(t){return 10===t||13===t||8232===t||8233===t}function Tj(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||92===t||t>=128&&jj.test(String.fromCharCode(t))}function $j(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||92===t||t>=128&&Sj.test(String.fromCharCode(t))}var Rj={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function Bj(){for(var t;zE<TE&&(Nj(t=NE.charCodeAt(zE))||zj(t));)++zE}function Pj(t){var e,n,r,i=0;for(n="u"===t?4:2,e=0;e<n;++e)zE<TE&&Dj(NE[zE])?(r=NE[zE++],i=16*i+"0123456789abcdef".indexOf(r.toLowerCase())):eS({},gj,Aj);return String.fromCharCode(i)}function Lj(){var t,e,n,r;for(e=0,"}"===(t=NE[zE])&&eS({},gj,Aj);zE<TE&&Dj(t=NE[zE++]);)e=16*e+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||"}"!==t)&&eS({},gj,Aj),e<=65535?String.fromCharCode(e):(n=55296+(e-65536>>10),r=56320+(e-65536&1023),String.fromCharCode(n,r))}function Uj(){var t,e;for(t=NE.charCodeAt(zE++),e=String.fromCharCode(t),92===t&&(117!==NE.charCodeAt(zE)&&eS({},gj,Aj),++zE,(t=Pj("u"))&&"\\"!==t&&Tj(t.charCodeAt(0))||eS({},gj,Aj),e=t);zE<TE&&$j(t=NE.charCodeAt(zE));)++zE,e+=String.fromCharCode(t),92===t&&(e=e.substr(0,e.length-1),117!==NE.charCodeAt(zE)&&eS({},gj,Aj),++zE,(t=Pj("u"))&&"\\"!==t&&$j(t.charCodeAt(0))||eS({},gj,Aj),e+=t);return e}function qj(){var t,e;return t=zE,{type:1===(e=92===NE.charCodeAt(zE)?Uj():function(){var t,e;for(t=zE++;zE<TE;){if(92===(e=NE.charCodeAt(zE)))return zE=t,Uj();if(!$j(e))break;++zE}return NE.slice(t,zE)}()).length?QE:Rj.hasOwnProperty(e)?KE:"null"===e?tj:"true"===e||"false"===e?JE:QE,value:e,start:t,end:zE}}function Ij(){var t,e,n,r,i=zE,o=NE.charCodeAt(zE),a=NE[zE];switch(o){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++zE,{type:nj,value:String.fromCharCode(o),start:i,end:zE};default:if(61===(t=NE.charCodeAt(zE+1)))switch(o){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return zE+=2,{type:nj,value:String.fromCharCode(o)+String.fromCharCode(t),start:i,end:zE};case 33:case 61:return zE+=2,61===NE.charCodeAt(zE)&&++zE,{type:nj,value:NE.slice(i,zE),start:i,end:zE}}}return">>>="===(r=NE.substr(zE,4))?{type:nj,value:r,start:i,end:zE+=4}:">>>"===(n=r.substr(0,3))||"<<="===n||">>="===n?{type:nj,value:n,start:i,end:zE+=3}:a===(e=n.substr(0,2))[1]&&"+-<>&|".indexOf(a)>=0||"=>"===e?{type:nj,value:e,start:i,end:zE+=2}:"<>=!+-*%&|^/".indexOf(a)>=0?{type:nj,value:a,start:i,end:++zE}:void eS({},gj,Aj)}function Wj(){var t,e,n;if(Cj(Mj((n=NE[zE]).charCodeAt(0))||"."===n,"Numeric literal must start with a decimal digit or a decimal point"),e=zE,t="","."!==n){if(t=NE[zE++],n=NE[zE],"0"===t){if("x"===n||"X"===n)return++zE,function(t){for(var e="";zE<TE&&Dj(NE[zE]);)e+=NE[zE++];return 0===e.length&&eS({},gj,Aj),Tj(NE.charCodeAt(zE))&&eS({},gj,Aj),{type:ej,value:parseInt("0x"+e,16),start:t,end:zE}}(e);if(Fj(n))return function(t){for(var e="0"+NE[zE++];zE<TE&&Fj(NE[zE]);)e+=NE[zE++];return(Tj(NE.charCodeAt(zE))||Mj(NE.charCodeAt(zE)))&&eS({},gj,Aj),{type:ej,value:parseInt(e,8),octal:!0,start:t,end:zE}}(e);n&&Mj(n.charCodeAt(0))&&eS({},gj,Aj)}for(;Mj(NE.charCodeAt(zE));)t+=NE[zE++];n=NE[zE]}if("."===n){for(t+=NE[zE++];Mj(NE.charCodeAt(zE));)t+=NE[zE++];n=NE[zE]}if("e"===n||"E"===n)if(t+=NE[zE++],"+"!==(n=NE[zE])&&"-"!==n||(t+=NE[zE++]),Mj(NE.charCodeAt(zE)))for(;Mj(NE.charCodeAt(zE));)t+=NE[zE++];else eS({},gj,Aj);return Tj(NE.charCodeAt(zE))&&eS({},gj,Aj),{type:ej,value:parseFloat(t),start:e,end:zE}}function Hj(){var t,e,n,r;return $E=null,Bj(),t=zE,e=function(){var t,e,n,r;for(Cj("/"===(t=NE[zE]),"Regular expression literal must start with a slash"),e=NE[zE++],n=!1,r=!1;zE<TE;)if(e+=t=NE[zE++],"\\"===t)zj((t=NE[zE++]).charCodeAt(0))&&eS({},wj),e+=t;else if(zj(t.charCodeAt(0)))eS({},wj);else if(n)"]"===t&&(n=!1);else{if("/"===t){r=!0;break}"["===t&&(n=!0)}return r||eS({},wj),{value:e.substr(1,e.length-2),literal:e}}(),n=function(){var t,e,n;for(e="",n="";zE<TE&&$j((t=NE[zE]).charCodeAt(0));)++zE,"\\"===t&&zE<TE?eS({},gj,Aj):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&eS({},_j,n),{value:n,literal:e}}(),r=function(t,e){var n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,function(t,e){if(parseInt(e,16)<=1114111)return"x";eS({},_j)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch(t){eS({},_j)}try{return new RegExp(t,e)}catch(t){return null}}(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:zE}}function Gj(){var t;return Bj(),zE>=TE?{type:ZE,start:zE,end:zE}:Tj(t=NE.charCodeAt(zE))?qj():40===t||41===t||59===t?Ij():39===t||34===t?function(){var t,e,n,r,i="",o=!1;for(Cj("'"===(t=NE[zE])||'"'===t,"String literal must starts with a quote"),e=zE,++zE;zE<TE;){if((n=NE[zE++])===t){t="";break}if("\\"===n)if((n=NE[zE++])&&zj(n.charCodeAt(0)))"\r"===n&&"\n"===NE[zE]&&++zE;else switch(n){case"u":case"x":"{"===NE[zE]?(++zE,i+=Lj()):i+=Pj(n);break;case"n":i+="\n";break;case"r":i+="\r";break;case"t":i+="\t";break;case"b":i+="\b";break;case"f":i+="\f";break;case"v":i+="\v";break;default:Fj(n)?(0!==(r="01234567".indexOf(n))&&(o=!0),zE<TE&&Fj(NE[zE])&&(o=!0,r=8*r+"01234567".indexOf(NE[zE++]),"0123".indexOf(n)>=0&&zE<TE&&Fj(NE[zE])&&(r=8*r+"01234567".indexOf(NE[zE++]))),i+=String.fromCharCode(r)):i+=n}else{if(zj(n.charCodeAt(0)))break;i+=n}}return""!==t&&eS({},gj,Aj),{type:rj,value:i,octal:o,start:e,end:zE}}():46===t?Mj(NE.charCodeAt(zE+1))?Wj():Ij():Mj(t)?Wj():Ij()}function Yj(){var t;return zE=(t=$E).end,$E=Gj(),zE=t.end,t}function Vj(){var t;t=zE,$E=Gj(),zE=t}function Xj(t,e,n){var r=new XE("||"===t||"&&"===t?lj:oj);return r.operator=t,r.left=e,r.right=n,r}function Jj(t,e){var n=new XE(aj);return n.callee=t,n.arguments=e,n}function Zj(t){var e=new XE(sj);return e.name=t,e}function Qj(t){var e=new XE(cj);return e.value=t.value,e.raw=NE.slice(t.start,t.end),t.regex&&("//"===e.raw&&(e.raw="/(?:)/"),e.regex=t.regex),e}function Kj(t,e,n){var r=new XE(fj);return r.computed="["===t,r.object=e,r.property=n,r.computed||(n.member=!0),r}function tS(t,e,n){var r=new XE(dj);return r.key=e,r.value=n,r.kind=t,r}function eS(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,function(t,e){return Cj(e<r.length,"Message reference must be in range"),r[e]});throw(n=new Error(i)).index=zE,n.description=i,n}function nS(t){t.type===ZE&&eS(t,xj),t.type===ej&&eS(t,mj),t.type===rj&&eS(t,vj),t.type===QE&&eS(t,yj),t.type===KE&&eS(t,bj),eS(t,gj,t.value)}function rS(t){var e=Yj();e.type===nj&&e.value===t||nS(e)}function iS(t){return $E.type===nj&&$E.value===t}function oS(t){return $E.type===KE&&$E.value===t}function aS(){var t=[];for(zE=$E.start,rS("[");!iS("]");)iS(",")?(Yj(),t.push(null)):(t.push(yS()),iS("]")||rS(","));return Yj(),function(t){var e=new XE(ij);return e.elements=t,e}(t)}function uS(){var t;return zE=$E.start,(t=Yj()).type===rj||t.type===ej?(t.octal&&eS(t,Oj),Qj(t)):Zj(t.value)}function sS(){var t,e,n;return zE=$E.start,(t=$E).type===QE?(n=uS(),rS(":"),tS("init",n,yS())):t.type!==ZE&&t.type!==nj?(e=uS(),rS(":"),tS("init",e,yS())):void nS(t)}function cS(){var t,e,n=[],r={},i=String;for(zE=$E.start,rS("{");!iS("}");)e="$"+((t=sS()).key.type===sj?t.key.name:i(t.key.value)),Object.prototype.hasOwnProperty.call(r,e)?eS({},kj):r[e]=!0,n.push(t),iS("}")||rS(",");return rS("}"),function(t){var e=new XE(hj);return e.properties=t,e}(n)}var lS={if:1,this:1};function fS(){var t,e,n;if(iS("("))return function(){var t;return rS("("),t=bS(),rS(")"),t}();if(iS("["))return aS();if(iS("{"))return cS();if(t=$E.type,zE=$E.start,t===QE||lS[$E.value])n=Zj(Yj().value);else if(t===rj||t===ej)$E.octal&&eS($E,Oj),n=Qj(Yj());else{if(t===KE)throw new Error(Ej);t===JE?((e=Yj()).value="true"===e.value,n=Qj(e)):t===tj?((e=Yj()).value=null,n=Qj(e)):iS("/")||iS("/=")?(n=Qj(Hj()),Vj()):nS(Yj())}return n}function hS(){var t=[];if(rS("("),!iS(")"))for(;zE<TE&&(t.push(yS()),!iS(")"));)rS(",");return rS(")"),t}function dS(){var t;return zE=$E.start,function(t){return t.type===QE||t.type===KE||t.type===JE||t.type===tj}(t=Yj())||nS(t),Zj(t.value)}function pS(){var t;return rS("["),t=bS(),rS("]"),t}function gS(){var t=function(){var t;for(t=fS();;)if(iS("."))rS("."),t=Kj(".",t,dS());else if(iS("("))t=Jj(t,hS());else{if(!iS("["))break;t=Kj("[",t,pS())}return t}();if($E.type===nj&&(iS("++")||iS("--")))throw new Error(Ej);return t}function mS(){var t,e,n,r,i;if($E.type!==nj&&$E.type!==KE)e=gS();else{if(iS("++")||iS("--"))throw new Error(Ej);if(iS("+")||iS("-")||iS("~")||iS("!"))t=Yj(),e=mS(),n=t.value,r=e,(i=new XE(pj)).operator=n,i.argument=r,i.prefix=!0,e=i;else{if(oS("delete")||oS("void")||oS("typeof"))throw new Error(Ej);e=gS()}}return e}function vS(t){var e=0;if(t.type!==nj&&t.type!==KE)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11}return e}function yS(){var t,e;return t=function(){var t,e,n,r,i,o,a,u,s,c;if(t=$E,s=mS(),0===(i=vS(r=$E)))return s;for(r.prec=i,Yj(),e=[t,$E],o=[s,r,a=mS()];(i=vS($E))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),u=o.pop().value,s=o.pop(),e.pop(),n=Xj(u,s,a),o.push(n);(r=Yj()).prec=i,o.push(r),e.push($E),n=mS(),o.push(n)}for(n=o[c=o.length-1],e.pop();c>1;)e.pop(),n=Xj(o[c-1].value,o[c-2],n),c-=2;return n}(),iS("?")&&(Yj(),e=yS(),rS(":"),t=function(t,e,n){var r=new XE(uj);return r.test=t,r.consequent=e,r.alternate=n,r}(t,e,yS())),t}function bS(){var t=yS();if(iS(","))throw new Error(Ej);return t}var xS=function(t){zE=0,TE=(NE=t).length,$E=null,Vj();var e=bS();if($E.type!==ZE)throw new Error("Unexpect token after expression.");return e},_S={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"},wS=function(t){function e(e,n,r){return function(i){return function(e,n,r,i){var o=t(n[0]);return r&&(o=r+"("+o+")",0===r.lastIndexOf("new ",0)&&(o="("+o+")")),o+"."+e+(i<0?"":0===i?"()":"("+n.slice(1).map(t).join(",")+")")}(e,i,n,r)}}var n="new Date";return{isNaN:"isNaN",isFinite:"isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(e){e.length<3&&Object(ct.n)("Missing arguments to clamp function."),e.length>3&&Object(ct.n)("Too many arguments to clamp function.");var n=e.map(t);return"Math.max("+n[1]+", Math.min("+n[2]+","+n[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:n,date:e("getDate",n,0),day:e("getDay",n,0),year:e("getFullYear",n,0),month:e("getMonth",n,0),hours:e("getHours",n,0),minutes:e("getMinutes",n,0),seconds:e("getSeconds",n,0),milliseconds:e("getMilliseconds",n,0),time:e("getTime",n,0),timezoneoffset:e("getTimezoneOffset",n,0),utcdate:e("getUTCDate",n,0),utcday:e("getUTCDay",n,0),utcyear:e("getUTCFullYear",n,0),utcmonth:e("getUTCMonth",n,0),utchours:e("getUTCHours",n,0),utcminutes:e("getUTCMinutes",n,0),utcseconds:e("getUTCSeconds",n,0),utcmilliseconds:e("getUTCMilliseconds",n,0),length:e("length",null,-1),join:e("join",null),indexof:e("indexOf",null),lastindexof:e("lastIndexOf",null),slice:e("slice",null),reverse:function(e){return"("+t(e[0])+").slice().reverse()"},parseFloat:"parseFloat",parseInt:"parseInt",upper:e("toUpperCase","String",0),lower:e("toLowerCase","String",0),substring:e("substring","String"),split:e("split","String"),replace:e("replace","String"),trim:e("trim","String",0),regexp:"RegExp",test:e("test","RegExp"),if:function(e){e.length<3&&Object(ct.n)("Missing arguments to if function."),e.length>3&&Object(ct.n)("Too many arguments to if function.");var n=e.map(t);return"("+n[0]+"?"+n[1]+":"+n[2]+")"}}};const OS="intersect",kS="union";var AS="E",ES="R",jS="R-E",SS="R-LE",CS="R-RE",MS="index:unit";function DS(t,e){for(var n,r,i=e.fields,o=e.values,a=i.length,u=0;u<a;++u)if((r=i[u]).getter=ct.t.getter||Object(ct.t)(r.field),n=r.getter(t),Object(ct.B)(n)&&(n=Object(ct.Z)(n)),Object(ct.B)(o[u])&&(o[u]=Object(ct.Z)(o[u])),Object(ct.B)(o[u][0])&&(o[u]=o[u].map(ct.Z)),r.type===AS){if(Object(ct.z)(o[u])?o[u].indexOf(n)<0:n!==o[u])return!1}else if(r.type===ES){if(!Object(ct.y)(n,o[u]))return!1}else if(r.type===CS){if(!Object(ct.y)(n,o[u],!0,!1))return!1}else if(r.type===jS){if(!Object(ct.y)(n,o[u],!1,!1))return!1}else if(r.type===SS&&!Object(ct.y)(n,o[u],!1,!0))return!1;return!0}var FS={E_union:function(t,e){if(!t.length)return e;for(var n=0,r=e.length;n<r;++n)t.indexOf(e[n])<0&&t.push(e[n]);return t},E_intersect:function(t,e){return t.length?t.filter(function(t){return e.indexOf(t)>=0}):e},R_union:function(t,e){var n=Object(ct.Z)(e[0]),r=Object(ct.Z)(e[1]);return n>r&&(n=e[1],r=e[0]),t.length?(t[0]>n&&(t[0]=n),t[1]<r&&(t[1]=r),t):[n,r]},R_intersect:function(t,e){var n=Object(ct.Z)(e[0]),r=Object(ct.Z)(e[1]);return n>r&&(n=e[1],r=e[0]),t.length?r<t[0]||t[1]<n?[]:(t[0]<n&&(t[0]=n),t[1]>r&&(t[1]=r),t):[n,r]}};const NS=":",zS="@";function TS(t,e,n,r){e[0].type!==BE&&Object(ct.n)("First argument to selection functions must be a string literal.");const i=e[0].value,o=e.length>=2&&Object(ct.R)(e).value,a=zS+"unit",u=NS+i;o!==OS||r.hasOwnProperty(a)||(r[a]=n.getData(i).indataRef(n,"unit")),r.hasOwnProperty(u)||(r[u]=n.getData(i).tuplesRef())}function $S(t){const e=this.context.data[t];return e?e.values.value:[]}const RS={};function BS(t,e,n){let r=t+":"+n,i=RS[r];return i&&i[0]===e||(RS[r]=i=[e,e(n)]),i[1]}function PS(t,e){return BS("timeFormat",bn,e)(t)}var LS=new Date(2e3,0,1);function US(t,e,n){return LS.setMonth(t),LS.setDate(e),PS(LS,n)}function qS(t,e){let n;return Object(ct.C)(t)?t:Object(ct.G)(t)?(n=e.scales[t])&&n.value:void 0}function IS(t,e){return function(n,r,i){if(n){const e=qS(n,(i||this).context);return e&&e.path[t](r)}return e(r)}}const WS=IS("area",function(t){return Ly.reset(),By(t,Uy),2*Ly}),HS=IS("bounds",function(t){var e,n,r,i,o,a,u;if(nb=eb=-(Ky=tb=1/0),ub=[],By(t,lb),n=ub.length){for(ub.sort(bb),e=1,o=[r=ub[0]];e<n;++e)xb(r,(i=ub[e])[0])||xb(r,i[1])?(yb(r[0],i[1])>yb(r[0],r[1])&&(r[1]=i[1]),yb(i[0],r[1])>yb(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,e=0,r=o[n=o.length-1];e<=n;r=i,++e)i=o[e],(u=yb(r[1],i[0]))>a&&(a=u,Ky=i[0],eb=r[1])}return ub=sb=null,Ky===1/0||tb===1/0?[[NaN,NaN],[NaN,NaN]]:[[Ky,tb],[eb,nb]]}),GS=IS("centroid",function(t){_b=wb=Ob=kb=Ab=Eb=jb=Sb=Cb=Mb=Db=0,By(t,Rb);var e=Cb,n=Mb,r=Db,i=e*e+n*n+r*r;return i<1e-12&&(e=Eb,n=jb,r=Sb,wb<ay&&(e=Ob,n=kb,r=Ab),(i=e*e+n*n+r*r)<1e-12)?[NaN,NaN]:[gy(n,e)*fy,Ey(r/Oy(i))*fy]});function YS(t,e,n){try{t[e].apply(t,["EXPRESSION"].concat([].slice.call(n)))}catch(e){t.warn(e)}return n[n.length-1]}function VS(t,e){return t===e||t!=t&&e!=e||!(!Object(ct.z)(t)||!Object(ct.z)(e)||t.length!==e.length)&&function(t,e){for(let n=0,r=t.length;n<r;++n)if(!VS(t[n],e[n]))return!1;return!0}(t,e)}function XS(t){return function(e){for(let n in t)if(!VS(e[n],t[n]))return!1;return!0}}const JS={};function ZS(t){return t.data}function QS(t,e){const n=$S.call(e,t);return n.root&&n.root.lookup||JS}const KS="undefined"!=typeof window&&window||null;const tC=":",eC="@",nC="%";function rC(t,e,n,r){e[0].type!==BE&&Object(ct.n)("First argument to data functions must be a string literal.");const i=e[0].value,o=tC+i;r.hasOwnProperty(o)||(r[o]=n.getData(i).tuplesRef())}function iC(t,e,n,r){if(e[0].type===BE)oC(n,r,e[0].value);else if(e[0].type===LE)for(t in n.scales)oC(n,r,t)}function oC(t,e,n){const r=nC+n;if(!e.hasOwnProperty(r))try{e[r]=t.scaleRef(n)}catch(t){}}const aC={random:function(){return mi()},isArray:ct.z,isBoolean:ct.A,isDate:ct.B,isDefined:function(t){return void 0!==t},isNumber:ct.D,isObject:ct.E,isRegExp:ct.F,isString:ct.G,isTuple:pt,isValid:function(t){return null!=t&&t==t},toBoolean:ct.X,toDate:ct.Y,toNumber:ct.Z,toString:ct.bb,flush:ct.u,lerp:ct.I,merge:function(){var t=[].slice.call(arguments);return t.unshift({}),ct.o.apply(null,t)},pad:ct.M,peek:ct.R,span:ct.U,inrange:ct.y,truncate:ct.cb,rgb:Ld,lab:rp,hcl:lp,hsl:Wd,sequence:ji,format:function(t,e){return BS("format",Fg,e)(t)},utcFormat:function(t,e){return BS("utcFormat",_n,e)(t)},utcParse:function(t,e){return BS("utcParse",wn,e)(t)},timeFormat:PS,timeParse:function(t,e){return BS("timeParse",xn,e)(t)},monthFormat:function(t){return US(t,1,"%B")},monthAbbrevFormat:function(t){return US(t,1,"%b")},dayFormat:function(t){return US(0,2+t,"%A")},dayAbbrevFormat:function(t){return US(0,2+t,"%a")},quarter:ct.S,utcquarter:ct.eb,warn:function(){return YS(this.context.dataflow,"warn",arguments)},info:function(){return YS(this.context.dataflow,"info",arguments)},debug:function(){return YS(this.context.dataflow,"debug",arguments)},extent:ct.p,inScope:function(t){let e=this.context.group,n=!1;if(e)for(;t;){if(t===e){n=!0;break}t=t.mark.group}return n},intersect:function(t,e,n){if(!t)return[];const[r,i]=t,o=(new hu).set(r[0],r[1],i[0],i[1]);return Jf(n||this.context.dataflow.scenegraph().root,o,function(t){let e=null;if(t){const n=Object(ct.i)(t.marktype),r=Object(ct.i)(t.markname);e=t=>(!n.length||n.some(e=>t.marktype===e))&&(!r.length||r.some(e=>t.name===e))}return e}(e))},clampRange:ct.j,pinchDistance:function(t){const e=t.touches,n=e[0].clientX-e[1].clientX,r=e[0].clientY-e[1].clientY;return Math.sqrt(n*n+r*r)},pinchAngle:function(t){const e=t.touches;return Math.atan2(e[0].clientY-e[1].clientY,e[0].clientX-e[1].clientX)},screen:function(){return KS?KS.screen:{}},containerSize:function(){const t=this.context.dataflow,e=t.container&&t.container();return e?[e.clientWidth,e.clientHeight]:[void 0,void 0]},windowSize:function(){return KS?[KS.innerWidth,KS.innerHeight]:[void 0,void 0]},bandspace:function(t,e,n){return qh(t||0,e||0,n||0)},setdata:function(t,e){const n=this.context.dataflow,r=this.context.data[t].input;return n.pulse(r,n.changeset().remove(ct.db).insert(e)),1},pathShape:function(t){let e=null;return function(n){return n?nc(n,e=e||Hs(t)):t}},panLinear:ct.N,panLog:ct.O,panPow:ct.P,panSymlog:ct.Q,zoomLinear:ct.hb,zoomLog:ct.ib,zoomPow:ct.jb,zoomSymlog:ct.kb,encode:function(t,e,n){if(t){const n=this.context.dataflow,r=t.mark.source;n.pulse(r,n.changeset().encode(t,e))}return void 0!==n?n:t},modify:function(t,e,n,r,i,o){let a,u,s=this.context.dataflow,c=this.context.data[t],l=c.input,f=c.changes,h=s.stamp();if(!1===s._trigger||!(l.value.length||e||r))return 0;if((!f||f.stamp<h)&&(c.changes=f=s.changeset(),f.stamp=h,s.runAfter(function(){c.modified=!0,s.pulse(l,f).run()},!0,1)),n&&(a=!0===n?ct.db:Object(ct.z)(n)||pt(n)?n:XS(n),f.remove(a)),e&&f.insert(e),r&&(a=XS(r),l.value.some(a)?f.remove(a):f.insert(r)),i)for(u in o)f.modify(i,u,o[u]);return 1}},uC=["view","item","group","xy","x","y"],sC="event.vega.",cC="this.",lC={};function fC(t,e,n){return 1===arguments.length?aC[t]:(aC[t]=e,n&&(lC[t]=n),dC&&(dC.functions[t]=cC+t),this)}fC("bandwidth",function(t,e){const n=qS(t,(e||this).context);return n&&n.bandwidth?n.bandwidth():0},iC),fC("copy",function(t,e){const n=qS(t,(e||this).context);return n?n.copy():void 0},iC),fC("domain",function(t,e){const n=qS(t,(e||this).context);return n?n.domain():[]},iC),fC("range",function(t,e){const n=qS(t,(e||this).context);return n&&n.range?n.range():[]},iC),fC("invert",function(t,e,n){const r=qS(t,(n||this).context);return r?Object(ct.z)(e)?(r.invertRange||r.invert)(e):(r.invert||r.invertExtent)(e):void 0},iC),fC("scale",function(t,e,n){const r=qS(t,(n||this).context);return r&&void 0!==e?r(e):void 0},iC),fC("gradient",function(t,e,n,r,i){t=qS(t,(i||this).context);const o=bu(e,n);let a=t.domain(),u=a[0],s=Object(ct.R)(a),c=ct.w;return s-u?c=Dm(t,u,s):t=(t.interpolator?km("sequential")().interpolator(t.interpolator()):km("linear")().interpolate(t.interpolate()).range(t.range())).domain([u=0,s=1]),t.ticks&&(u!==(a=t.ticks(+r||15))[0]&&a.unshift(u),s!==Object(ct.R)(a)&&a.push(s)),a.forEach(e=>o.stop(c(e),t(e))),o},iC),fC("geoArea",WS,iC),fC("geoBounds",HS,iC),fC("geoCentroid",GS,iC),fC("geoShape",function(t,e,n){const r=qS(t,(n||this).context);return function(t){return r?r.path.context(t)(e):""}},iC),fC("indata",function(t,e,n){const r=this.context.data[t]["index:"+e],i=r?r.value.get(n):void 0;return i?i.count:i},function(t,e,n,r){e[0].type!==BE&&Object(ct.n)("First argument to indata must be a string literal."),e[1].type!==BE&&Object(ct.n)("Second argument to indata must be a string literal.");const i=e[0].value,o=e[1].value,a=eC+o;r.hasOwnProperty(a)||(r[a]=n.getData(i).indataRef(n,o))}),fC("data",$S,rC),fC("treePath",function(t,e,n){const r=QS(t,this),i=r[e],o=r[n];return i&&o?i.path(o).map(ZS):void 0},rC),fC("treeAncestors",function(t,e){const n=QS(t,this)[e];return n?n.ancestors().map(ZS):void 0},rC),fC("vlSelectionTest",function(t,e,n){for(var r,i,o,a,u,s=this.context.data[t],c=s?s.values.value:[],l=s?s[MS]&&s[MS].value:void 0,f=n===OS,h=c.length,d=0;d<h;++d)if(r=c[d],l&&f){if(-1===(o=(i=i||{})[a=r.unit]||0))continue;if(u=DS(e,r),i[a]=u?-1:++o,u&&1===l.size)return!0;if(!u&&o===l.get(a).count)return!1}else if(f^(u=DS(e,r)))return u;return h&&f},TS),fC("vlSelectionResolve",function(t,e){for(var n,r,i,o,a,u,s,c,l,f,h,d=this.context.data[t],p=d?d.values.value:[],g={},m={},v=p.length,y=0;y<v;++y)for(o=(n=p[y]).unit,r=n.fields,i=n.values,f=0,h=r.length;f<h;++f)a=r[f],s=(u=g[a.field]||(g[a.field]={}))[o]||(u[o]=[]),m[a.field]=c=a.type.charAt(0),l=FS[c+"_union"],u[o]=l(s,Object(ct.i)(i[f]));return e=e||kS,Object.keys(g).forEach(function(t){g[t]=Object.keys(g[t]).map(function(e){return g[t][e]}).reduce(function(n,r){return void 0===n?r:FS[m[t]+"_"+e](n,r)})}),g},TS);const hC={blacklist:["_"],whitelist:["datum","event","item"],fieldvar:"datum",globalvar:function(t){return"_["+Object(ct.W)("$"+t)+"]"},functions:function(t){const e=wS(t);uC.forEach(t=>e[t]=sC+t);for(let t in aC)e[t]=cC+t;return e},constants:_S,visitors:lC};var dC=function(t){var e=(t=t||{}).whitelist?Object(ct.ab)(t.whitelist):{},n=t.blacklist?Object(ct.ab)(t.blacklist):{},r=t.constants||_S,i=(t.functions||wS)(f),o=t.globalvar,a=t.fieldvar,u={},s={},c=0,l=Object(ct.C)(o)?o:function(t){return o+'["'+t+'"]'};function f(t){if(Object(ct.G)(t))return t;var e=h[t.type];return null==e&&Object(ct.n)("Unsupported type: "+t.type),e(t)}var h={Literal:function(t){return t.raw},Identifier:function(t){var i=t.name;return c>0?i:n.hasOwnProperty(i)?Object(ct.n)("Illegal identifier: "+i):r.hasOwnProperty(i)?r[i]:e.hasOwnProperty(i)?i:(u[i]=1,l(i))},MemberExpression:function(t){var e=!t.computed,n=f(t.object);e&&(c+=1);var r=f(t.property);return n===a&&(s[function(t){var e=t&&t.length-1;return e&&('"'===t[0]&&'"'===t[e]||"'"===t[0]&&"'"===t[e])?t.slice(1,-1):t}(r)]=1),e&&(c-=1),n+(e?"."+r:"["+r+"]")},CallExpression:function(t){"Identifier"!==t.callee.type&&Object(ct.n)("Illegal callee type: "+t.callee.type);var e=t.callee.name,n=t.arguments,r=i.hasOwnProperty(e)&&i[e];return r||Object(ct.n)("Unrecognized function: "+e),Object(ct.C)(r)?r(n):r+"("+n.map(f).join(",")+")"},ArrayExpression:function(t){return"["+t.elements.map(f).join(",")+"]"},BinaryExpression:function(t){return"("+f(t.left)+t.operator+f(t.right)+")"},UnaryExpression:function(t){return"("+t.operator+f(t.argument)+")"},ConditionalExpression:function(t){return"("+f(t.test)+"?"+f(t.consequent)+":"+f(t.alternate)+")"},LogicalExpression:function(t){return"("+f(t.left)+t.operator+f(t.right)+")"},ObjectExpression:function(t){return"{"+t.properties.map(f).join(",")+"}"},Property:function(t){c+=1;var e=f(t.key);return c-=1,e+":"+f(t.value)}};function d(t){var e={code:f(t),globals:Object.keys(u),fields:Object.keys(s)};return u={},s={},e}return d.functions=i,d.constants=r,d}(hC);function pC(t,e,n){";"!==e[e.length-1]&&(e="return("+e+");");var r=Function.apply(null,t.concat(e));return n&&n.functions?r.bind(n.functions):r}function gC(t,e){return pC(["event"],t,e)}function mC(t,e){return pC(["item","_"],t,e)}function vC(t,e,n){var r,i;for(r in n=n||{},t)i=t[r],n[r]=Object(ct.z)(i)?i.map(function(t){return yC(t,e,n)}):yC(i,e,n);return n}function yC(t,e,n){if(!t||!Object(ct.E)(t))return t;for(var r,i=0,o=bC.length;i<o;++i)if(r=bC[i],t.hasOwnProperty(r.key))return r.parse(t,e,n);return t}var bC=[{key:"$ref",parse:function(t,e){return e.get(t.$ref)||Object(ct.n)("Operator not defined: "+t.$ref)}},{key:"$key",parse:function(t,e){var n="k:"+t.$key+"_"+!!t.$flat;return e.fn[n]||(e.fn[n]=Object(ct.H)(t.$key,t.$flat))}},{key:"$expr",parse:function(t,e,n){t.$params&&vC(t.$params,e,n);var r="e:"+t.$expr+"_"+t.$name;return e.fn[r]||(e.fn[r]=Object(ct.f)(function(t,e){return pC(["datum","_"],t,e)}(t.$expr,e),t.$fields,t.$name))}},{key:"$field",parse:function(t,e){if(!t.$field)return null;var n="f:"+t.$field+"_"+t.$name;return e.fn[n]||(e.fn[n]=Object(ct.t)(t.$field,t.$name))}},{key:"$encode",parse:function(t,e){var n,r,i=t.$encode,o={};for(n in i)r=i[n],o[n]=Object(ct.f)(mC(r.$expr,e),r.$fields),o[n].output=r.$output;return o}},{key:"$compare",parse:function(t,e){var n="c:"+t.$compare+"_"+t.$order,r=Object(ct.i)(t.$compare).map(function(t){return t&&t.$tupleid?gt:t});return e.fn[n]||(e.fn[n]=Object(ct.k)(r,t.$order))}},{key:"$context",parse:function(t,e){return e}},{key:"$subflow",parse:function(t,e){var n=t.$subflow;return function(t,r,i){var o=OC(n,e.fork()),a=o.get(n.operators[0].id),u=o.signals.parent;return u&&u.set(i),a}}},{key:"$tupleid",parse:function(){return gt}}];function xC(t){return(t+"").toLowerCase()}var _C=function(t,e){"operator"!==xC(t.type)&&t.type?e.transform(t,t.type):e.operator(t,t.update?function(t,e){return pC(["_"],t,e)}(t.update,e):null)};var wC=function(t,e){var n=Object(ct.E)(n=t.source)?n.$ref:n,r=e.get(n),i=null,o=t.update,a=void 0;r||Object(ct.n)("Source not defined: "+t.source),i=t.target&&t.target.$expr?gC(t.target.$expr,e):e.get(t.target),o&&o.$expr&&(o.$params&&(a=vC(o.$params,e)),o=function(t,e){return pC(["_","event"],t,e)}(o.$expr,e)),e.update(t,r,i,o,a)},OC=function(t,e){var n=t.operators||[];return t.background&&(e.background=t.background),t.eventConfig&&(e.eventConfig=t.eventConfig),n.forEach(function(t){_C(t,e)}),n.forEach(function(t){!function(t,e){if(t.params){var n=e.get(t.id);n||Object(ct.n)("Invalid operator id: "+t.id),e.dataflow.connect(n,n.parameters(vC(t.params,e),t.react,t.initonly))}}(t,e)}),(t.streams||[]).forEach(function(t){!function(t,e){var n,r=null!=t.filter?gC(t.filter,e):void 0,i=null!=t.stream?e.get(t.stream):void 0;t.source?i=e.events(t.source,t.type,r):t.merge&&(i=(n=t.merge.map(e.get.bind(e)))[0].merge.apply(n[0],n.slice(1))),t.between&&(n=t.between.map(e.get.bind(e)),i=i.between(n[0],n[1])),t.filter&&(i=i.filter(r)),null!=t.throttle&&(i=i.throttle(+t.throttle)),null!=t.debounce&&(i=i.debounce(+t.debounce)),null==i&&Object(ct.n)("Invalid stream definition: "+JSON.stringify(t)),t.consume&&i.consume(!0),e.stream(t,i)}(t,e)}),(t.updates||[]).forEach(function(t){wC(t,e)}),e.resolve()},kC={skip:!0};var AC=function(t,e,n){return new EC(t,e,n)};function EC(t,e,n){this.dataflow=t,this.transforms=e,this.events=t.events.bind(t),this.signals={},this.scales={},this.nodes={},this.data={},this.fn={},n&&(this.functions=Object.create(n),this.functions.context=this)}function jC(t){this.dataflow=t.dataflow,this.transforms=t.transforms,this.functions=t.functions,this.events=t.events,this.signals=Object.create(t.signals),this.scales=Object.create(t.scales),this.nodes=Object.create(t.nodes),this.data=Object.create(t.data),this.fn=Object.create(t.fn),t.functions&&(this.functions=Object.create(t.functions),this.functions.context=this)}EC.prototype=jC.prototype={fork:function(){var t=new jC(this);return(this.subcontext||(this.subcontext=[])).push(t),t},get:function(t){return this.nodes[t]},set:function(t,e){return this.nodes[t]=e},add:function(t,e){var n,r=this,i=r.dataflow;if(r.set(t.id,e),"collect"===xC(t.type)&&(n=t.value)&&(n.$ingest?i.ingest(e,n.$ingest,n.$format):n.$request?i.preload(e,n.$request,n.$format):i.pulse(e,i.changeset().insert(n))),t.root&&(r.root=e),t.parent){var o=r.get(t.parent.$ref);o?(i.connect(o,[e]),e.targets().add(o)):(r.unresolved=r.unresolved||[]).push(function(){o=r.get(t.parent.$ref),i.connect(o,[e]),e.targets().add(o)})}if(t.signal&&(r.signals[t.signal]=e),t.scale&&(r.scales[t.scale]=e),t.data)for(var a in t.data)n=r.data[a]||(r.data[a]={}),t.data[a].forEach(function(t){n[t]=e})},resolve:function(){return(this.unresolved||[]).forEach(function(t){t()}),delete this.unresolved,this},operator:function(t,e){this.add(t,this.dataflow.add(t.value,e))},transform:function(t,e){this.add(t,this.dataflow.add(this.transforms[xC(e)]))},stream:function(t,e){this.set(t.id,e)},update:function(t,e,n,r,i){this.dataflow.on(e,n,r,i,t.options)},getState:function(t){var e=this,n={};if(t.signals){var r=n.signals={};Object.keys(e.signals).forEach(function(n){var i=e.signals[n];t.signals(n,i)&&(r[n]=i.value)})}if(t.data){var i=n.data={};Object.keys(e.data).forEach(function(n){var r=e.data[n];t.data(n,r)&&(i[n]=r.input.value)})}return e.subcontext&&!1!==t.recurse&&(n.subcontext=e.subcontext.map(function(e){return e.getState(t)})),n},setState:function(t){var e=this,n=e.dataflow,r=t.data,i=t.signals;Object.keys(i||{}).forEach(function(t){n.update(e.signals[t],i[t],kC)}),Object.keys(r||{}).forEach(function(t){n.pulse(e.data[t].input,n.changeset().remove(ct.db).insert(r[t]))}),(t.subcontext||[]).forEach(function(t,n){var r=e.subcontext[n];r&&r.setState(t)})}};var SC=function(t,e,n){return OC(e,AC(t,ri,n||aC))};var CC="width",MC="height",DC="padding",FC={skip:!0};function NC(t,e){var n=t.autosize(),r=t.padding();return e-(n&&n.contains===DC?r.left+r.right:0)}function zC(t,e){var n=t.autosize(),r=t.padding();return e-(n&&n.contains===DC?r.top+r.bottom:0)}function TC(t,e){return e.modified&&Object(ct.z)(e.input.value)&&t.indexOf("_:vega:_")}function $C(t,e){return!("parent"===t||e instanceof ri.proxy)}var RC=function(t,e,n,r){var i=t.element();i&&i.setAttribute("title",function(t){return null==t?"":Object(ct.z)(t)?BC(t):Object(ct.E)(t)&&!Object(ct.B)(t)?(e=t,Object.keys(e).map(function(t){var n=e[t];return t+": "+(Object(ct.z)(n)?BC(n):PC(n))}).join("\n")):t+"";var e}(r))};function BC(t){return"["+t.map(PC).join(", ")+"]"}function PC(t){return Object(ct.z)(t)?"[…]":Object(ct.E)(t)&&!Object(ct.B)(t)?"{…}":t}function LC(t,e){e=e||{},Qr.call(this),e.loader&&this.loader(e.loader),e.logger&&this.logger(e.logger),null!=e.logLevel&&this.logLevel(e.logLevel),this._el=null,this._elBind=null,this._renderType=e.renderer||Yf.Canvas,this._scenegraph=new Vl;var n=this._scenegraph.root;this._renderer=null,this._tooltip=e.tooltip||RC,this._redraw=!0,this._handler=(new lf).scene(n),this._preventDefault=!1,this._timers=[],this._eventListeners=[],this._resizeListeners=[];var r,i,o=SC(this,t,e.functions);this._runtime=o,this._signals=o.signals,this._bind=(t.bindings||[]).map(function(t){return{state:null,param:Object(ct.o)({},t)}}),o.root&&o.root.set(n),n.source=o.data.root.input,this.pulse(o.data.root.input,this.changeset().insert(n.items)),this._background=e.background||o.background||null,this._eventConfig=(r=o.eventConfig,(i=(r=Object(ct.o)({},r)).defaults)&&(Object(ct.z)(i.prevent)&&(i.prevent=Object(ct.ab)(i.prevent)),Object(ct.z)(i.allow)&&(i.allow=Object(ct.ab)(i.allow))),r),this._width=this.width(),this._height=this.height(),this._viewWidth=NC(this,this._width),this._viewHeight=zC(this,this._height),this._origin=[0,0],this._resize=0,this._autosize=1,function(t){var e=t._signals,n=e[CC],r=e[MC],i=e[DC];function o(){t._autosize=t._resize=1}t._resizeWidth=t.add(null,function(e){t._width=e.size,t._viewWidth=NC(t,e.size),o()},{size:n}),t._resizeHeight=t.add(null,function(e){t._height=e.size,t._viewHeight=zC(t,e.size),o()},{size:r});var a=t.add(null,o,{pad:i});t._resizeWidth.rank=n.rank+1,t._resizeHeight.rank=r.rank+1,a.rank=i.rank+1}(this),nE(this),e.hover&&this.hover(),e.container&&this.initialize(e.container,e.bind)}var UC=Object(ct.x)(LC,Qr);function qC(t,e){return t._signals.hasOwnProperty(e)?t._signals[e]:Object(ct.n)("Unrecognized signal name: "+Object(ct.W)(e))}function IC(t,e){var n=(t._targets||[]).filter(function(t){var n=t._update;return n&&n.handler===e});return n.length?n[0]:null}function WC(t,e,n,r){var i=IC(n,r);return i||((i=CE(this,function(){r(e,n.value)})).handler=r,t.on(n,null,i)),t}function HC(t,e,n){var r=IC(e,n);return r&&e._targets.remove(r),t}UC.evaluate=async function(t,e,n){if(await Qr.prototype.evaluate.call(this,t,e),this._redraw||this._resize)try{this._renderer&&(this._resize&&(this._resize=0,i=uE(r=this),o=oE(r),a=aE(r),r._renderer.background(r._background),r._renderer.resize(o,a,i),r._handler.origin(i),r._resizeListeners.forEach(function(t){try{t(o,a)}catch(t){r.error(t)}})),await this._renderer.renderAsync(this._scenegraph.root)),this._redraw=!1}catch(t){this.error(t)}var r,i,o,a;return n&&ft(this,n),this},UC.dirty=function(t){this._redraw=!0,this._renderer&&this._renderer.dirty(t)},UC.container=function(){return this._el},UC.scenegraph=function(){return this._scenegraph},UC.origin=function(){return this._origin.slice()},UC.signal=function(t,e,n){var r=qC(this,t);return 1===arguments.length?r.value:this.update(r,e,n)},UC.background=function(t){return arguments.length?(this._background=t,this._resize=1,this):this._background},UC.width=function(t){return arguments.length?this.signal("width",t):this.signal("width")},UC.height=function(t){return arguments.length?this.signal("height",t):this.signal("height")},UC.padding=function(t){return arguments.length?this.signal("padding",t):this.signal("padding")},UC.autosize=function(t){return arguments.length?this.signal("autosize",t):this.signal("autosize")},UC.renderer=function(t){return arguments.length?(Xf(t)||Object(ct.n)("Unrecognized renderer type: "+t),t!==this._renderType&&(this._renderType=t,this._resetRenderer()),this):this._renderType},UC.tooltip=function(t){return arguments.length?(t!==this._tooltip&&(this._tooltip=t,this._resetRenderer()),this):this._tooltip},UC.loader=function(t){return arguments.length?(t!==this._loader&&(Qr.prototype.loader.call(this,t),this._resetRenderer()),this):this._loader},UC.resize=function(){return this._autosize=1,this.touch(qC(this,"autosize"))},UC._resetRenderer=function(){this._renderer&&(this._renderer=null,this.initialize(this._el,this._elBind))},UC._resizeView=function(t,e,n,r,i,o){this.runAfter(function(a){var u=0;a._autosize=0,a.width()!==n&&(u=1,a.signal(CC,n,FC),a._resizeWidth.skip(!0)),a.height()!==r&&(u=1,a.signal(MC,r,FC),a._resizeHeight.skip(!0)),a._viewWidth!==t&&(a._resize=1,a._viewWidth=t),a._viewHeight!==e&&(a._resize=1,a._viewHeight=e),a._origin[0]===i[0]&&a._origin[1]===i[1]||(a._resize=1,a._origin=i),u&&a.run("enter"),o&&a.runAfter(t=>t.resize())},!1,1)},UC.addEventListener=function(t,e,n){var r=e;return n&&!1===n.trap||((r=CE(this,e)).raw=e),this._handler.on(t,r),this},UC.removeEventListener=function(t,e){for(var n,r,i=this._handler.handlers(t),o=i.length;--o>=0;)if(r=i[o].type,n=i[o].handler,t===r&&(e===n||e===n.raw)){this._handler.off(r,n);break}return this},UC.addResizeListener=function(t){var e=this._resizeListeners;return e.indexOf(t)<0&&e.push(t),this},UC.removeResizeListener=function(t){var e=this._resizeListeners,n=e.indexOf(t);return n>=0&&e.splice(n,1),this},UC.addSignalListener=function(t,e){return WC(this,t,qC(this,t),e)},UC.removeSignalListener=function(t,e){return HC(this,qC(this,t),e)},UC.addDataListener=function(t,e){return WC(this,t,rE(this,t).values,e)},UC.removeDataListener=function(t,e){return HC(this,rE(this,t).values,e)},UC.preventDefault=function(t){return arguments.length?(this._preventDefault=t,this):this._preventDefault},UC.timer=function(t,e){this._timers.push(function(t,e,n){var r=new aO,i=e;return null==e?(r.restart(t,e,n),r):(e=+e,n=null==n?iO():+n,r.restart(function o(a){a+=i,r.restart(o,i+=e,n),t(a)},e,n),r)}(function(e){t({timestamp:Date.now(),elapsed:e})},e))},UC.events=function(t,e,n){var r,i=this,o=new Ft(n),a=function(n,r){i.runAsync(null,()=>{t===cE&&function(t,e){var n=t._eventConfig.defaults,r=n&&n.prevent,i=n&&n.allow;return!1!==r&&!0!==i&&(!0===r||!1===i||(r?r[e]:i?!i[e]:t.preventDefault()))}(i,e)&&n.preventDefault(),o.receive(sE(i,n,r))})};if(t===lE)i.timer(a,e);else if(t===cE)i.addEventListener(e,a,hE);else if(t===fE?"undefined"!=typeof window&&(r=[window]):"undefined"!=typeof document&&(r=document.querySelectorAll(t)),r){for(var u=0,s=r.length;u<s;++u)r[u].addEventListener(e,a);i._eventListeners.push({type:e,sources:r,handler:a})}else i.warn("Can not resolve event source: "+t);return o},UC.finalize=function(){var t,e,n,r=this._tooltip,i=this._timers,o=this._eventListeners;for(t=i.length;--t>=0;)i[t].stop();for(t=o.length;--t>=0;)for(e=(n=o[t]).sources.length;--e>=0;)n.sources[e].removeEventListener(n.type,n.handler);return r&&r.call(this,this._handler,null,null,null),this},UC.hover=function(t,e){return e=[e||"update",(t=[t||"hover"])[0]],this.on(this.events("view","mouseover",dE),pE,gE(t)),this.on(this.events("view","mouseout",dE),pE,gE(e)),this},UC.data=function(t){return rE(this,t).values.value},UC.change=iE,UC.insert=function(t,e){return iE.call(this,t,wt().insert(e))},UC.remove=function(t,e){return iE.call(this,t,wt().remove(e))},UC.scale=function(t){var e=this._runtime.scales;return e.hasOwnProperty(t)||Object(ct.n)("Unrecognized scale or projection: "+t),e[t].value},UC.initialize=function(t,e){var n,r,i=this,o=i._renderType,a=Xf(o);return t=i._el=t?ME(i,t):null,a||i.error("Unrecognized renderer type: "+o),n=a.handler||lf,r=t?a.renderer:a.headless,i._renderer=r?SE(i,i._renderer,t,r):null,i._handler=function(t,e,n,r){var i=new r(t.loader(),CE(t,t.tooltip())).scene(t.scenegraph().root).initialize(n,uE(t),t);return e&&e.handlers().forEach(function(t){i.on(t.type,t.handler)}),i}(i,i._handler,t,n),i._redraw=!0,t&&(e=e?i._elBind=ME(i,e):t.appendChild(mE("div",{class:"vega-bindings"})),i._bind.forEach(function(t){t.param.element&&(t.element=ME(i,t.param.element))}),i._bind.forEach(function(t){_E(i,t.element||e,t)})),i},UC.toImageURL=async function(t,e){t!==Yf.Canvas&&t!==Yf.SVG&&t!==Yf.PNG&&Object(ct.n)("Unrecognized image type: "+t);const n=await DE(this,t,e);return t===Yf.SVG?(r=n.svg(),i=new Blob([r],{type:"image/svg+xml"}),window.URL.createObjectURL(i)):n.canvas().toDataURL("image/png");var r,i},UC.toCanvas=async function(t,e){return(await DE(this,Yf.Canvas,t,e)).canvas()},UC.toSVG=async function(t){return(await DE(this,Yf.SVG,t)).svg()},UC.getState=function(t){return this._runtime.getState(t||{data:TC,signals:$C,recurse:!0})},UC.setState=function(t){return this.runAsync(null,e=>{e._trigger=!1,e._runtime.setState(t)},t=>{t._trigger=!0}),this};var GC=function(t,e){return t=t||e.autosize,Object(ct.E)(t)?t:{type:t||"pad"}},YC=function(t,e){return t=t||e.padding,Object(ct.E)(t)?{top:VC(t.top),bottom:VC(t.bottom),left:VC(t.left),right:VC(t.right)}:{top:n=VC(t),bottom:n,left:n,right:n};var n};function VC(t){return+t||0}var XC=["value","update","init","react","bind"];function JC(t,e){Object(ct.n)(t+' for "outer" push: '+Object(ct.W)(e))}var ZC=function(t,e){var n=t.name;if("outer"===t.push)e.signals[n]||JC("No prior signal definition",n),XC.forEach(function(e){void 0!==t[e]&&JC("Invalid property ",e)});else{var r=e.addSignal(n,t.value);!1===t.react&&(r.react=!1),t.bind&&e.addBinding(n,t.bind)}},QC=function(t,e,n){var r,i,o={};try{t=Object(ct.G)(t)?t:Object(ct.W)(t)+"",r=xS(t)}catch(e){Object(ct.n)("Expression parse error: "+t)}return r.visit(function(t){if(t.type===IE){var n=t.callee.name,r=hC.visitors[n];r&&r(n,t.arguments,e,o)}}),(i=dC(r)).globals.forEach(function(t){var n="$"+t;!o.hasOwnProperty(n)&&e.getSignal(t)&&(o[n]=e.signalRef(t))}),{$expr:n?n+"return("+i.code+");":i.code,$fields:i.fields,$params:o}};function KC(t,e,n,r){this.id=-1,this.type=t,this.value=e,this.params=n,r&&(this.parent=r)}function tM(t,e,n,r){return new KC(t,e,n,r)}function eM(t,e){return tM("operator",t,e)}function nM(t){var e={$ref:t.id};return t.id<0&&(t.refs=t.refs||[]).push(e),e}var rM={$tupleid:1,toString:function(){return":_tupleid_:"}};function iM(t,e){return e?{$field:t,$name:e}:{$field:t}}var oM=iM("key");function aM(t,e){return{$compare:t,$order:e}}var uM="descending";function sM(t,e){return(t&&t.signal?"$"+t.signal:t||"")+(t&&e?"_":"")+(e&&e.signal?"$"+e.signal:e||"")}var cM="scope",lM="view";function fM(t){return t&&t.signal}function hM(t){if(fM(t))return!0;if(Object(ct.E)(t))for(var e in t)if(hM(t[e]))return!0;return!1}function dM(t,e){return null!=t?t:e}function pM(t){return t&&t.signal||t}var gM="timer";function mM(t,e){return(t.merge?vM:t.stream?yM:t.type?bM:Object(ct.n)("Invalid stream specification: "+Object(ct.W)(t)))(t,e)}function vM(t,e){var n=xM({merge:t.merge.map(t=>mM(t,e))},t,e);return e.addStream(n).id}function yM(t,e){var n=xM({stream:mM(t.stream,e)},t,e);return e.addStream(n).id}function bM(t,e){var n,r,i;return t.type===gM?(n=e.event(gM,t.throttle),t={between:t.between,filter:t.filter}):n=e.event((i=t.source)===cM?lM:i||lM,t.type),r=xM({stream:n},t,e),1===Object.keys(r).length?n:e.addStream(r).id}function xM(t,e,n){var r,i,o,a,u=e.between;return u&&(2!==u.length&&Object(ct.n)('Stream "between" parameter must have 2 entries: '+Object(ct.W)(e)),t.between=[mM(u[0],n),mM(u[1],n)]),u=e.filter?[].concat(e.filter):[],(e.marktype||e.markname||e.markrole)&&u.push((r=e.marktype,i=e.markname,o=e.markrole,(a="event.item")+(r&&"*"!==r?"&&"+a+".mark.marktype==='"+r+"'":"")+(o?"&&"+a+".mark.role==='"+o+"'":"")+(i?"&&"+a+".mark.name==='"+i+"'":""))),e.source===cM&&u.push("inScope(event.item)"),u.length&&(t.filter=QC("("+u.join(")&&(")+")").$expr),null!=(u=e.throttle)&&(t.throttle=+u),null!=(u=e.debounce)&&(t.debounce=+u),e.consume&&(t.consume=!0),t}var _M,wM,OM=function(t,e,n){return _M=e||kM,wM=n||zM,$M(t.trim()).map(RM)},kM="view",AM="[",EM="]",jM="{",SM="}",CM=":",MM=",",DM="@",FM=">",NM=/[[\]{}]/,zM={"*":1,arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1};function TM(t,e,n,r,i){for(var o,a=0,u=t.length;e<u;++e){if(o=t[e],!a&&o===n)return e;i&&i.indexOf(o)>=0?--a:r&&r.indexOf(o)>=0&&++a}return e}function $M(t){for(var e=[],n=0,r=t.length,i=0;i<r;)i=TM(t,i,MM,AM+jM,EM+SM),e.push(t.substring(n,i).trim()),n=++i;if(0===e.length)throw"Empty event selector: "+t;return e}function RM(t){return"["===t[0]?function(t){var e,n,r=t.length,i=1;if((i=TM(t,i,EM,AM,EM))===r)throw"Empty between selector: "+t;if(2!==(e=$M(t.substring(1,i))).length)throw"Between selector must have two elements: "+t;if((t=t.slice(i+1).trim())[0]!==FM)throw"Expected '>' after between selector: "+t;if(e=e.map(RM),(n=RM(t.slice(1).trim())).between)return{between:e,stream:n};n.between=e;return n}(t):function(t){var e,n,r={source:_M},i=[],o=[0,0],a=0,u=0,s=t.length,c=0;if(t[s-1]===SM){if(!((c=t.lastIndexOf(jM))>=0))throw"Unmatched right brace: "+t;try{o=function(t){var e=t.split(MM);if(!t.length||e.length>2)throw t;return e.map(function(e){var n=+e;if(n!=n)throw t;return n})}(t.substring(c+1,s-1))}catch(e){throw"Invalid throttle specification: "+t}t=t.slice(0,c).trim(),s=t.length,c=0}if(!s)throw t;t[0]===DM&&(a=++c);(e=TM(t,c,CM))<s&&(i.push(t.substring(u,e).trim()),u=c=++e);if((c=TM(t,c,AM))===s)i.push(t.substring(u,s).trim());else if(i.push(t.substring(u,c).trim()),n=[],(u=++c)===s)throw"Unmatched left bracket: "+t;for(;c<s;){if((c=TM(t,c,EM))===s)throw"Unmatched left bracket: "+t;if(n.push(t.substring(u,c).trim()),c<s-1&&t[++c]!==AM)throw"Expected left bracket: "+t;u=++c}if(!(s=i.length)||NM.test(i[s-1]))throw"Invalid event selector: "+t;s>1?(r.type=i[1],a?r.markname=i[0].slice(1):(l=i[0],wM.hasOwnProperty(l)?r.marktype=i[0]:r.source=i[0])):r.type=i[0];var l;"!"===r.type.slice(-1)&&(r.consume=!0,r.type=r.type.slice(0,-1));null!=n&&(r.filter=n);o[0]&&(r.throttle=o[0]);o[1]&&(r.debounce=o[1]);return r}(t)}var BM=function(t,e,n){var r=t.events,i=t.update,o=t.encode,a=[],u={target:n};r||Object(ct.n)("Signal update missing events specification."),Object(ct.G)(r)&&(r=OM(r,e.isSubscope()?cM:lM)),r=Object(ct.i)(r).filter(t=>t.signal||t.scale?(a.push(t),0):1),a.length>1&&(a=[PM(a)]),r.length&&a.push(r.length>1?{merge:r}:r[0]),null!=o&&(i&&Object(ct.n)("Signal encode and update are mutually exclusive."),i="encode(item(),"+Object(ct.W)(o)+")"),u.update=Object(ct.G)(i)?QC(i,e,"var datum=event.item&&event.item.datum;"):null!=i.expr?QC(i.expr,e,"var datum=event.item&&event.item.datum;"):null!=i.value?i.value:null!=i.signal?{$expr:"_.value",$params:{value:e.signalRef(i.signal)}}:Object(ct.n)("Invalid signal update specification."),t.force&&(u.options={force:!0}),a.forEach(function(t){e.addUpdate(Object(ct.o)(function(t,e){return{source:t.signal?e.signalRef(t.signal):t.scale?e.scaleRef(t.scale):mM(t,e)}}(t,e),u))})};function PM(t){return{signal:"["+t.map(t=>t.scale?'scale("'+t.scale+'")':t.signal)+"]"}}function LM(t){return function(e,n,r){return tM(t,n,e||void 0,r)}}var UM=LM("aggregate"),qM=LM("axisticks"),IM=LM("bound"),WM=LM("collect"),HM=LM("compare"),GM=LM("datajoin"),YM=LM("encode"),VM=LM("expression"),XM=(LM("extent"),LM("facet")),JM=LM("field"),ZM=LM("key"),QM=LM("legendentries"),KM=LM("load"),tD=LM("mark"),eD=LM("multiextent"),nD=LM("multivalues"),rD=LM("overlap"),iD=LM("params"),oD=LM("prefacet"),aD=LM("projection"),uD=LM("proxy"),sD=LM("relay"),cD=LM("render"),lD=LM("scale"),fD=LM("sieve"),hD=LM("sortitems"),dD=LM("viewlayout"),pD=LM("values"),gD=0;function mD(t,e){var n=t.type||"linear";(function(t){switch(t){case Ih:case Wh:case Hh:case Gh:case Yh:case Vh:case Xh:case Jh:case Zh:case Kh:case td:case ed:case nd:case rd:case id:case od:return!0}return!1})(n)||Object(ct.n)("Unrecognized scale type: "+Object(ct.W)(n)),e.addScale(t.name,{type:n,domain:void 0})}function vD(t,e){var n,r,i=e.getScale(t.name).params;for(n in i.domain=_D(t.domain,t,e),null!=t.range&&(i.range=function t(e,n,r){var i=e.range,o=n.config.range;if(i.signal)return n.signalRef(i.signal);if(Object(ct.G)(i)){if(o&&o.hasOwnProperty(i))return e=Object(ct.o)({},e,{range:o[i]}),t(e,n,r);"width"===i?i=[0,{signal:"width"}]:"height"===i?i=ld(e.type)?[0,{signal:"height"}]:[{signal:"height"},0]:Object(ct.n)("Unrecognized scale range value: "+Object(ct.W)(i))}else{if(i.scheme)return r.scheme=Object(ct.z)(i.scheme)?bD(i.scheme,n):yD(i.scheme,n),i.extent&&(r.schemeExtent=bD(i.extent,n)),void(i.count&&(r.schemeCount=yD(i.count,n)));if(i.step)return void(r.rangeStep=yD(i.step,n));if(ld(e.type)&&!Object(ct.z)(i))return _D(i,e,n);Object(ct.z)(i)||Object(ct.n)("Unsupported range type: "+Object(ct.W)(i))}return i.map(t=>(Object(ct.z)(t)?bD:yD)(t,n))}(t,e,i)),null!=t.interpolate&&function(t,e){e.interpolate=yD(t.type||t),null!=t.gamma&&(e.interpolateGamma=yD(t.gamma))}(t.interpolate,i),null!=t.nice&&(i.nice=(r=t.nice,Object(ct.E)(r)?{interval:yD(r.interval),step:yD(r.step)}:yD(r))),null!=t.bins&&(i.bins=function(t,e){return t.signal||Object(ct.z)(t)?bD(t,e):e.objectProperty(t)}(t.bins,e)),t)i.hasOwnProperty(n)||"name"===n||(i[n]=yD(t[n],e))}function yD(t,e){return Object(ct.E)(t)?t.signal?e.signalRef(t.signal):Object(ct.n)("Unsupported object: "+Object(ct.W)(t)):t}function bD(t,e){return t.signal?e.signalRef(t.signal):t.map(t=>yD(t,e))}function xD(t){Object(ct.n)("Can not find data set: "+Object(ct.W)(t))}function _D(t,e,n){if(t)return t.signal?n.signalRef(t.signal):(Object(ct.z)(t)?function(t,e,n){return t.map(function(t){return yD(t,n)})}:t.fields?function(t,e,n){var r=t.data,i=t.fields.reduce(function(t,e){return e=Object(ct.G)(e)?{data:r,field:e}:Object(ct.z)(e)||e.signal?function(t,e){var n="_:vega:_"+gD++,r=WM({});if(Object(ct.z)(t))r.value={$ingest:t};else if(t.signal){var i="setdata("+Object(ct.W)(n)+","+t.signal+")";r.params.input=e.signalRef(i)}return e.addDataPipeline(n,[r,fD({})]),{data:n,field:"data"}}(e,n):e,t.push(e),t},[]);return(ld(e.type)?function(t,e,n){var r,i,o,a;return r=n.map(function(t){var n=e.getData(t.data);return n||xD(t.data),n.countsRef(e,t.field)}),i=e.add(UM({groupby:oM,ops:["sum"],fields:[e.fieldRef("count")],as:["count"],pulse:r})),o=e.add(WM({pulse:nM(i)})),a=e.add(pD({field:oM,sort:e.sortRef(wD(t.sort,!0)),pulse:nM(o)})),nM(a)}:ad(e.type)?function(t,e,n){var r=n.map(function(t){var n=e.getData(t.data);return n||xD(t.data),n.domainRef(e,t.field)});return nM(e.add(nD({values:r})))}:function(t,e,n){var r=n.map(function(t){var n=e.getData(t.data);return n||xD(t.data),n.extentRef(e,t.field)});return nM(e.add(eD({extents:r})))})(t,n,i)}:function(t,e,n){var r=n.getData(t.data);r||xD(t.data);return ld(e.type)?r.valuesRef(n,t.field,wD(t.sort,!1)):ad(e.type)?r.domainRef(n,t.field):r.extentRef(n,t.field)})(t,e,n);null==e.domainMin&&null==e.domainMax||Object(ct.n)("No scale domain defined for domainMin/domainMax to override.")}function wD(t,e){return t&&(t.field||t.op?t.field||"count"===t.op?e&&t.field?Object(ct.n)("Multiple domain scales can not sort by field."):e&&t.op&&"count"!==t.op&&Object(ct.n)("Multiple domain scales support op count only."):Object(ct.n)("No field provided for sort aggregate op: "+t.op):Object(ct.E)(t)?t.field="key":t={field:"key"}),t}function OD(t,e,n){return Object(ct.z)(t)?t.map(function(t){return OD(t,e,n)}):Object(ct.E)(t)?t.signal?n.signalRef(t.signal):"fit"===e?t:Object(ct.n)("Unsupported parameter object: "+Object(ct.W)(t)):t}const kD="vertical",AD="start",ED="end",jD="value",SD="guide-label",CD="group-title",MD="symbol",DD="gradient",FD="discrete",ND=["size","shape","fill","stroke","strokeWidth","strokeDash","opacity"],zD={name:1,interactive:1},TD={value:0},$D={value:1};var RD=Object(ct.ab)(["rule"]),BD=Object(ct.ab)(["group","image","rect"]),PD=function(t,e){var n="";return RD[e]?n:(t.x2&&(t.x?(BD[e]&&(n+="if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;"),n+="o.width=o.x2-o.x;"):n+="o.x=o.x2-(o.width||0);"),t.xc&&(n+="o.x=o.xc-(o.width||0)/2;"),t.y2&&(t.y?(BD[e]&&(n+="if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;"),n+="o.height=o.y2-o.y;"):n+="o.y=o.y2-(o.height||0);"),t.yc&&(n+="o.y=o.yc-(o.height||0)/2;"),n)},LD=function(t,e,n,r){var i=QC(t,e);return i.$fields.forEach(function(t){r[t]=1}),Object(ct.o)(n,i.$params),i.$expr},UD=function(t,e,n,r){return function t(e,n,r,i){var o,a,u;if(e.signal)o="datum",u=LD(e.signal,n,r,i);else if(e.group||e.parent){for(a=Math.max(1,e.level||1),o="item";a-- >0;)o+=".mark.group";e.parent?(u=e.parent,o+=".datum"):u=e.group}else e.datum?(o="datum",u=e.datum):Object(ct.n)("Invalid field reference: "+Object(ct.W)(e));e.signal||(Object(ct.G)(u)?(i[u]=1,u=Object(ct.V)(u).map(ct.W).join("][")):u=t(u,n,r,i));return o+"["+u+"]"}(Object(ct.E)(t)?t:{datum:t},e,n,r)};var qD=function(t,e,n,r,i){var o,a,u,s=ID(t.scale,n,r,i);return null!=t.range?(a=s+".range()",e=0===(o=+t.range)?a+"[0]":"($="+a+","+(1===o?"$[$.length-1]":"$[0]+"+o+"*($[$.length-1]-$[0])")+")"):(void 0!==e&&(e=s+"("+e+")"),t.band&&(u=function(t,e){if(!Object(ct.G)(t))return-1;var n=e.scaleType(t);return"band"===n||"point"===n?1:0}(t.scale,n))&&(o=(a=s+".bandwidth")+"()"+(1===(o=+t.band)?"":"*"+o),u<0&&(o="("+a+"?"+o+":0)"),e=(e?e+"+":"")+o,t.extra&&(e="(datum.extra?"+s+"(datum.extra.value):"+e+")")),null==e&&(e="0")),e};function ID(t,e,n,r){var i;if(Object(ct.G)(t))i=nC+t,n.hasOwnProperty(i)||(n[i]=e.scaleRef(t)),i=Object(ct.W)(i);else{for(i in e.scales)n[nC+i]=e.scaleRef(i);i=Object(ct.W)(nC)+"+"+(t.signal?"("+LD(t.signal,e,n,r)+")":UD(t,e,n,r))}return"_["+i+"]"}var WD=function(t,e,n,r){return Object(ct.E)(t)?"("+HD(null,t,e,n,r)+")":t},HD=function(t,e,n,r,i){if(null!=e.gradient)return function(t,e,n,r){return"this.gradient("+ID(t.gradient,e,n,r)+","+Object(ct.W)(t.start)+","+Object(ct.W)(t.stop)+","+Object(ct.W)(t.count)+")"}(e,n,r,i);var o=e.signal?LD(e.signal,n,r,i):e.color?function(t,e,n,r){function i(t,i,o,a){return"this."+t+"("+[HD(null,i,e,n,r),HD(null,o,e,n,r),HD(null,a,e,n,r)].join(",")+").toString()"}return t.c?i("hcl",t.h,t.c,t.l):t.h||t.s?i("hsl",t.h,t.s,t.l):t.l||t.a?i("lab",t.l,t.a,t.b):t.r||t.g||t.b?i("rgb",t.r,t.g,t.b):null}(e.color,n,r,i):null!=e.field?UD(e.field,n,r,i):void 0!==e.value?Object(ct.W)(e.value):void 0;return null!=e.scale&&(o=qD(e,o,n,r,i)),void 0===o&&(o=null),null!=e.exponent&&(o="Math.pow("+o+","+WD(e.exponent,n,r,i)+")"),null!=e.mult&&(o+="*"+WD(e.mult,n,r,i)),null!=e.offset&&(o+="+"+WD(e.offset,n,r,i)),e.round&&(o="Math.round("+o+")"),o},GD=function(t,e,n){const r=t+"["+Object(ct.W)(e)+"]";return`$=${n};if(${r}!==$)${r}=$,m=1;`},YD=function(t,e,n,r,i){var o="";return e.forEach(function(e){var a=HD(t,e,n,r,i);o+=e.test?LD(e.test,n,r,i)+"?"+a+":":a}),":"===Object(ct.R)(o)&&(o+="null"),GD("o",t,o)};function VD(t,e,n,r){var i,o,a,u={},s="var o=item,datum=o.datum,m=0,$;";for(i in t)o=t[i],Object(ct.z)(o)?s+=YD(i,o,r,n,u):(a=HD(i,o,r,n,u),s+=GD("o",i,a));return s+=PD(t,e),{$expr:s+="return m;",$fields:Object.keys(u),$output:Object.keys(t)}}var XD="mark",JD="frame",ZD="title";function QD(t){return Object(ct.E)(t)?Object(ct.o)({},t):{value:t}}function KD(t,e,n,r){return null!=n?(Object(ct.E)(n)&&!Object(ct.z)(n)?t.update[e]=n:t[r||"enter"][e]={value:n},1):0}function tF(t,e,n){for(let n in e)KD(t,n,e[n]);for(let e in n)KD(t,e,n[e],"update")}function eF(t,e,n){for(var r in e)n&&n.hasOwnProperty(r)||(t[r]=Object(ct.o)(t[r]||{},e[r]));return t}function nF(t,e,n,r,i,o){var a,u;for(u in(o=o||{}).encoders={$encode:a={}},t=function(t,e,n,r,i){var o,a,u={};"legend"!=n&&0!==String(n).indexOf("axis")||(n=null);for(o in a=n===JD?i.group:n===XD?Object(ct.o)({},i.mark,i[e]):null)iF(o,t)||("fill"===o||"stroke"===o)&&(iF("fill",t)||iF("stroke",t))||(u[o]=rF(a[o]));return Object(ct.i)(r).forEach(function(e){var n=i.style&&i.style[e];for(var r in n)iF(r,t)||(u[r]=rF(n[r]))}),(t=Object(ct.o)({},t)).enter=Object(ct.o)(u,t.enter),t}(t,e,n,r,i.config))a[u]=VD(t[u],e,o,i);return o}function rF(t){return t&&t.signal?{signal:t.signal}:{value:t}}function iF(t,e){return e&&(e.enter&&e.enter[t]||e.update&&e.update[t])}var oF=function(t,e,n,r,i,o,a){return{type:t,name:a?a.name:void 0,role:e,style:a&&a.style||n,key:r,from:i,interactive:!(!a||!a.interactive),encode:eF(o,a,zD)}};function aF(t,e){const n=n=>dM(t[n],e[n]);return n.isVertical=n=>kD===dM(t.direction,e.direction||(n?e.symbolDirection:e.gradientDirection)),n.gradientLength=()=>dM(t.gradientLength,e.gradientLength||e.gradientWidth),n.gradientThickness=()=>dM(t.gradientThickness,e.gradientThickness||e.gradientHeight),n.entryColumns=()=>dM(t.columns,dM(e.columns,+n.isVertical(!0))),n}function uF(t,e){var n=e&&(e.update&&e.update[t]||e.enter&&e.enter[t]);return n&&n.signal?n:n?n.value:null}function sF(t,e,n){return`item.anchor === "${AD}" ? ${t} : item.anchor === "${ED}" ? ${e} : ${n}`}const cF=sF(Object(ct.W)("left"),Object(ct.W)("right"),Object(ct.W)("center"));var lF="group",fF="text",hF=function(t,e,n,r){var i,o,a,u,s,c,l=aF(t,n),f=l.isVertical(),h=l.gradientThickness(),d=l.gradientLength();return f?(a=[0,1],u=[0,0],s=h,c=d):(a=[0,0],u=[1,0],s=d,c=h),tF(i={enter:o={opacity:TD,x:TD,y:TD,width:QD(s),height:QD(c)},update:Object(ct.o)({},o,{opacity:$D,fill:{gradient:e,start:a,stop:u}}),exit:{opacity:TD}},{stroke:l("gradientStrokeColor"),strokeWidth:l("gradientStrokeWidth")},{opacity:l("gradientOpacity")}),oF("rect","legend-gradient",null,void 0,void 0,i,r)},dF=function(t,e,n,r,i){var o,a,u,s,c,l,f=aF(t,n),h=f.isVertical(),d=f.gradientThickness(),p=f.gradientLength(),g="";return h?(u="y",c="y2",s="x",l="width",g="1-"):(u="x",c="x2",s="y",l="height"),(a={opacity:TD,fill:{scale:e,field:jD}})[u]={signal:g+"datum.perc",mult:p},a[s]=TD,a[c]={signal:g+"datum.perc2",mult:p},a[l]=QD(d),tF(o={enter:a,update:Object(ct.o)({},a,{opacity:$D}),exit:{opacity:TD}},{stroke:f("gradientStrokeColor"),strokeWidth:f("gradientStrokeWidth")},{opacity:f("gradientOpacity")}),oF("rect","legend-band",null,jD,i,o,r)};var pF=function(t,e,n,r){var i,o,a,u,s,c=aF(t,e),l=c.isVertical(),f=QD(c.gradientThickness()),h=c.gradientLength(),d=c("labelOverlap"),p=c("labelSeparation"),g="";return tF(i={enter:o={opacity:TD},update:a={opacity:$D,text:{field:"label"}},exit:{opacity:TD}},{fill:c("labelColor"),fillOpacity:c("labelOpacity"),font:c("labelFont"),fontSize:c("labelFontSize"),fontStyle:c("labelFontStyle"),fontWeight:c("labelFontWeight"),limit:dM(t.labelLimit,e.gradientLabelLimit)}),l?(o.align={value:"left"},o.baseline=a.baseline={signal:'datum.perc<=0?"bottom":datum.perc>=1?"top":"middle"'},u="y",s="x",g="1-"):(o.align=a.align={signal:'datum.perc<=0?"left":datum.perc>=1?"right":"center"'},o.baseline={value:"top"},u="x",s="y"),o[u]=a[u]={signal:g+"datum.perc",mult:h},o[s]=a[s]=f,f.offset=dM(t.labelOffset,e.gradientLabelOffset)||0,t=oF(fF,"legend-label",SD,jD,r,i,n),d&&(t.overlap={separation:p,method:d,order:"datum.index"}),t},gF=function(t,e,n,r,i,o,a,u){return{type:lF,name:n,role:t,style:e,from:r,interactive:i||!1,encode:o,marks:a,layout:u}},mF=function(t,e,n,r,i){var o,a,u,s,c,l,f,h=aF(t,e),d=n.entries,p=!(!d||!d.interactive),g=d?d.name:void 0,m=h("clipHeight"),v=h("symbolOffset"),y={data:"value"},b={},x=`${i} ? datum.offset : datum.size`,_=m?QD(m):{field:"size"},w="datum.index",O=`max(1, ${i})`;return _.mult=.5,b={enter:o={opacity:TD,x:{signal:x,mult:.5,offset:v},y:_},update:a={opacity:$D,x:o.x,y:o.y},exit:{opacity:TD}},t.fill||tF(b,{fill:e.symbolBaseFillColor,stroke:e.symbolBaseStrokeColor}),tF(b,{fill:h("symbolFillColor"),shape:h("symbolType"),size:h("symbolSize"),stroke:h("symbolStrokeColor"),strokeDash:h("symbolDash"),strokeDashOffset:h("symbolDashOffset"),strokeWidth:h("symbolStrokeWidth")},{opacity:h("symbolOpacity")}),ND.forEach(function(e){t[e]&&(a[e]=o[e]={scale:t[e],field:jD})}),s=oF("symbol","legend-symbol",null,jD,y,b,n.symbols),m&&(s.clip=!0),(u=QD(v)).offset=h("labelOffset"),tF(b={enter:o={opacity:TD,x:{signal:x,offset:u},y:_},update:a={opacity:$D,text:{field:"label"},x:o.x,y:o.y},exit:{opacity:TD}},{align:h("labelAlign"),baseline:h("labelBaseline"),fill:h("labelColor"),fillOpacity:h("labelOpacity"),font:h("labelFont"),fontSize:h("labelFontSize"),fontStyle:h("labelFontStyle"),fontWeight:h("labelFontWeight"),limit:h("labelLimit")}),c=oF(fF,"legend-label",SD,jD,y,b,n.labels),b={enter:{noBound:{value:!m},width:TD,height:m?QD(m):TD,opacity:TD},exit:{opacity:TD},update:a={opacity:$D,row:{signal:null},column:{signal:null}}},h.isVertical(!0)?(l=`ceil(item.mark.items.length / ${O})`,a.row.signal=`${w}%${l}`,a.column.signal=`floor(${w} / ${l})`,f={field:["row",w]}):(a.row.signal=`floor(${w} / ${O})`,a.column.signal=`${w} % ${O}`,f={field:w}),a.column.signal=`${i}?${a.column.signal}:${w}`,(t=gF("scope",null,g,r={facet:{data:r,name:"value",groupby:"index"}},p,eF(b,d,zD),[s,c])).sort=f,t};const vF='item.orient === "left"',yF='item.orient === "right"',bF=`(${vF} || ${yF})`,xF=`datum.vgrad && ${bF}`,_F=sF('"top"','"bottom"','"middle"'),wF=`datum.vgrad && ${yF} ? (${sF('"right"','"left"','"center"')}) : (${bF} && !(datum.vgrad && ${vF})) ? "left" : ${cF}`,OF=`item._anchor || (${bF} ? "middle" : "start")`,kF=`${xF} ? (${vF} ? -90 : 90) : 0`,AF=`${bF} ? (datum.vgrad ? (${yF} ? "bottom" : "top") : ${_F}) : "top"`;var EF=function(t,e){var n;return Object(ct.E)(t)&&(t.signal?n=t.signal:t.path?n="pathShape("+jF(t.path)+")":t.sphere&&(n="geoShape("+jF(t.sphere)+', {type: "Sphere"})')),n?e.signalRef(n):!!t};function jF(t){return Object(ct.E)(t)&&t.signal?t.signal:Object(ct.W)(t)}var SF=function(t){var e=t.role||"";return e.indexOf("axis")&&e.indexOf("legend")?t.type===lF?"scope":e||XD:e},CF=function(t){return{marktype:t.type,name:t.name||void 0,role:t.role||SF(t),zindex:+t.zindex||void 0}},MF=function(t,e){return t&&t.signal?e.signalRef(t.signal):!1!==t},DF=function(t,e){var n=ii(t.type);n||Object(ct.n)("Unrecognized transform type: "+Object(ct.W)(t.type));var r=tM(n.type.toLowerCase(),null,FF(n,t,e));return t.signal&&e.addSignal(t.signal,e.proxy(r)),r.metadata=n.metadata||{},r};function FF(t,e,n){var r,i,o,a={};for(i=0,o=t.params.length;i<o;++i)a[(r=t.params[i]).name]=NF(r,e,n);return a}function NF(t,e,n){var r=t.type,i=e[t.name];return"index"===r?function(t,e,n){Object(ct.G)(e.from)||Object(ct.n)('Lookup "from" parameter must be a string literal.');return n.getData(e.from).lookupRef(n,e.key)}(0,e,n):void 0!==i?"param"===r?function(t,e,n){var r=e[t.name];return t.array?(Object(ct.z)(r)||Object(ct.n)("Expected an array of sub-parameters. Instead: "+Object(ct.W)(r)),r.map(function(e){return TF(t,e,n)})):TF(t,r,n)}(t,e,n):"projection"===r?n.projectionRef(e[t.name]):t.array&&!fM(i)?i.map(function(e){return zF(t,e,n)}):zF(t,i,n):void(t.required&&Object(ct.n)("Missing required "+Object(ct.W)(e.type)+" parameter: "+Object(ct.W)(t.name)))}function zF(t,e,n){var r=t.type;if(fM(e))return $F(r)?Object(ct.n)("Expression references can not be signals."):RF(r)?n.fieldRef(e):BF(r)?n.compareRef(e):n.signalRef(e.signal);var i,o=t.expr||RF(r);return o&&((i=e)&&i.expr)?n.exprRef(e.expr,e.as):o&&function(t){return t&&t.field}(e)?iM(e.field,e.as):$F(r)?QC(e,n):function(t){return"data"===t}(r)?nM(n.getData(e).values):RF(r)?iM(e):BF(r)?n.compareRef(e):e}function TF(t,e,n){var r,i,o,a,u;for(a=0,u=t.params.length;a<u;++a){for(o in(i=t.params[a]).key)if(i.key[o]!==e[o]){i=null;break}if(i)break}return i||Object(ct.n)("Unsupported parameter: "+Object(ct.W)(e)),r=Object(ct.o)(FF(i,e,n),i.key),nM(n.add(iD(r)))}function $F(t){return"expr"===t}function RF(t){return"field"===t}function BF(t){return"compare"===t}function PF(t,e){return t.$ref?t:t.data&&t.data.$ref?t.data:nM(e.getData(t.data).output)}function LF(t,e,n,r,i){this.scope=t,this.input=e,this.output=n,this.values=r,this.aggregate=i,this.index={}}LF.fromEntries=function(t,e){var n=e.length,r=1,i=e[0],o=e[n-1],a=e[n-2],u=null;for(i&&"load"===i.type&&(i=e[1]),t.add(e[0]);r<n;++r)e[r].params.pulse=nM(e[r-1]),t.add(e[r]),"aggregate"===e[r].type&&(u=e[r]);return new LF(t,i,a,o,u)};var UF=LF.prototype;function qF(t){return Object(ct.G)(t)?t:null}function IF(t,e,n){var r,i=sM(n.op,n.field);if(e.ops){for(var o=0,a=e.as.length;o<a;++o)if(e.as[o]===i)return}else e.ops=["count"],e.fields=[null],e.as=["count"];n.op&&(e.ops.push((r=n.op.signal)?t.signalRef(r):n.op),e.fields.push(t.fieldRef(n.field)),e.as.push(i))}function WF(t,e,n,r,i,o,a){var u,s,c=e[n]||(e[n]={}),l=function(t){return Object(ct.E)(t)?(t.order===uM?"-":"+")+sM(t.op,t.field):""}(o),f=qF(i);if(null!=f&&(t=e.scope,u=c[f+=l?"|"+l:""]),!u){var h=o?{field:oM,pulse:e.countsRef(t,i,o)}:{field:t.fieldRef(i),pulse:nM(e.output)};l&&(h.sort=t.sortRef(o)),s=t.add(tM(r,void 0,h)),a&&(e.index[i]=s),u=nM(s),null!=f&&(c[f]=u)}return u}UF.countsRef=function(t,e,n){var r,i,o,a=this.counts||(this.counts={}),u=qF(e);return null!=u&&(t=this.scope,r=a[u]),r?n&&n.field&&IF(t,r.agg.params,n):(o={groupby:t.fieldRef(e,"key"),pulse:nM(this.output)},n&&n.field&&IF(t,o,n),i=t.add(UM(o)),r=t.add(WM({pulse:nM(i)})),r={agg:i,ref:nM(r)},null!=u&&(a[u]=r)),r.ref},UF.tuplesRef=function(){return nM(this.values)},UF.extentRef=function(t,e){return WF(t,this,"extent","extent",e,!1)},UF.domainRef=function(t,e){return WF(t,this,"domain","values",e,!1)},UF.valuesRef=function(t,e,n){return WF(t,this,"vals","values",e,n||!0)},UF.lookupRef=function(t,e){return WF(t,this,"lookup","tupleindex",e,!1)},UF.indataRef=function(t,e){return WF(t,this,"indata","tupleindex",e,!0,!0)};var HF=function(t,e,n){var r,i,o=t.remove,a=t.insert,u=t.toggle,s=t.modify,c=t.values,l=e.add(eM());r="if("+t.trigger+',modify("'+n+'",'+[a,o,u,s,c].map(function(t){return null==t?"null":t}).join(",")+"),0)",i=QC(r,e),l.update=i.$expr,l.params=i.$params},GF=function(t,e){var n,r,i,o,a,u,s,c,l,f,h,d,p,g,m=SF(t),v=t.type===lF,y=t.from&&t.from.facet,b=t.layout||"scope"===m||m===JD,x=m===XD||b||y,_=t.overlap;i=function(t,e,n){var r,i,o,a,u;return t?(r=t.facet)&&(e||Object(ct.n)("Only group marks can be faceted."),null!=r.field?a=u=PF(r,n):(t.data?u=nM(n.getData(t.data).aggregate):((o=DF(Object(ct.o)({type:"aggregate",groupby:Object(ct.i)(r.groupby)},r.aggregate),n)).params.key=n.keyRef(r.groupby),o.params.pulse=PF(r,n),a=u=nM(n.add(o))),i=n.keyRef(r.groupby,!0))):a=nM(n.add(WM(null,[{}]))),a||(a=PF(t,n)),{key:i,pulse:a,parent:u}}(t.from,v,e),f=nM(r=e.add(GM({key:i.key||(t.key?iM(t.key):void 0),pulse:i.pulse,clean:!v}))),r=o=e.add(WM({pulse:f})),r=e.add(tD({markdef:CF(t),interactive:MF(t.interactive,e),clip:EF(t.clip,e),context:{$context:!0},groups:e.lookup(),parent:e.signals.parent?e.signalRef("parent"):null,index:e.markpath(),pulse:nM(r)})),h=nM(r),(r=a=e.add(YM(nF(t.encode,t.type,m,t.style,e,{mod:!1,pulse:h})))).params.parent=e.encode(),t.transform&&t.transform.forEach(function(t){const n=DF(t,e),i=n.metadata;(i.generates||i.changes)&&Object(ct.n)("Mark transforms should not generate new data."),i.nomod||(a.params.mod=!0),n.params.pulse=nM(r),e.add(r=n)}),t.sort&&(r=e.add(hD({sort:e.compareRef(t.sort,!0),pulse:nM(r)}))),d=nM(r),(y||b)&&(p=nM(b=e.add(dD({layout:e.objectProperty(t.layout),legends:e.legends,mark:h,pulse:d})))),g=nM(u=e.add(IM({mark:h,pulse:p||d}))),v&&(x&&((n=e.operators).pop(),b&&n.pop()),e.pushState(d,p||g,f),y?function(t,e,n){var r,i,o,a,u=t.from.facet,s=u.name,c=PF(u,e);u.name||Object(ct.n)("Facet must have a name: "+Object(ct.W)(u)),u.data||Object(ct.n)("Facet must reference a data set: "+Object(ct.W)(u)),u.field?a=e.add(oD({field:e.fieldRef(u.field),pulse:c})):u.groupby?a=e.add(XM({key:e.keyRef(u.groupby),group:nM(e.proxy(n.parent)),pulse:c})):Object(ct.n)("Facet must specify groupby or field: "+Object(ct.W)(u)),i=(r=e.fork()).add(WM()),o=r.add(fD({pulse:nM(i)})),r.addData(s,new LF(r,i,i,o)),r.addSignal("parent",null),a.params.subflow={$subflow:oN(t,r).toRuntime()}}(t,e,i):x?function(t,e,n){var r=e.add(oD({pulse:n.pulse})),i=e.fork();i.add(fD()),i.addSignal("parent",null),r.params.subflow={$subflow:oN(t,i).toRuntime()}}(t,e,i):oN(t,e),e.popState(),x&&(b&&n.push(b),n.push(u))),_&&(g=function(t,e,n){var r,i=t.method,o=t.bound,a=t.separation,u={separation:fM(a)?n.signalRef(a.signal):a,method:fM(i)?n.signalRef(i.signal):i,pulse:e};t.order&&(u.sort=n.compareRef({field:t.order}));o&&(r=o.tolerance,u.boundTolerance=fM(r)?n.signalRef(r.signal):+r,u.boundScale=n.scaleRef(o.scale),u.boundOrient=o.orient);return nM(n.add(rD(u)))}(_,g,e)),s=e.add(cD({pulse:g})),c=e.add(fD({pulse:nM(s)},void 0,e.parent())),null!=t.name&&(l=t.name,e.addData(l,new LF(e,o,s,c)),t.on&&t.on.forEach(function(t){(t.insert||t.remove||t.toggle)&&Object(ct.n)("Marks only support modify triggers."),HF(t,e,l)}))};var YF=function(t,e){var n,r,i,o,a,u,s,c,l,f=e.config.legend,h=t.encode||{},d=h.legend||{},p=d.name||void 0,g=d.interactive,m=d.style,v=aF(t,f),y=ND.reduce(function(e,n){return e||t[n]},0);return y||Object(ct.n)("Missing valid scale for legend."),a=function(t,e){var n=t.type||MD;t.type||1!==function(t){return ND.reduce(function(e,n){return e+(t[n]?1:0)},0)}(t)||!t.fill&&!t.stroke||(n=cd(e)?DD:fd(e)?FD:MD);return n!==DD?n:fd(e)?FD:DD}(t,e.scaleType(y)),u={title:null!=t.title,type:a,vgrad:"symbol"!==a&&v.isVertical()},s=nM(e.add(WM(null,[u]))),d=eF(function(t,e){var n={enter:{},update:{}};return tF(n,{orient:t("orient"),offset:t("offset"),padding:t("padding"),titlePadding:t("titlePadding"),cornerRadius:t("cornerRadius"),fill:t("fillColor"),stroke:t("strokeColor"),strokeWidth:e.strokeWidth,strokeDash:e.strokeDash,x:t("legendX"),y:t("legendY")}),n}(v,f),d,zD),n={enter:{x:{value:0},y:{value:0}}},c=nM(e.add(QM(i={type:a,scale:e.scaleRef(y),count:e.objectProperty(t.tickCount),values:e.objectProperty(t.values),minstep:e.property(t.tickMinStep),formatType:e.property(t.formatType),formatSpecifier:e.property(t.format)}))),a===DD?(o=[hF(t,y,f,h.gradient),pF(t,f,h.labels,c)],i.count=i.count||e.signalRef(`max(2,2*floor((${pM(v.gradientLength())})/100))`)):a===FD?o=[dF(t,y,f,h.gradient,c),pF(t,f,h.labels,c)]:(r=function(t,e){const n=aF(t,e);return{align:n("gridAlign"),columns:n.entryColumns(),center:{row:!0,column:!1},padding:{row:n("rowPadding"),column:n("columnPadding")}}}(t,f),o=[mF(t,f,h,c,pM(r.columns))],i.size=function(t,e,n){var r=pM(VF("size",t,n)),i=pM(VF("strokeWidth",t,n)),o=pM(function(t,e,n){return uF("fontSize",t)||function(t,e,n){var r=e.config.style[n];return r&&r[t]}("fontSize",e,n)}(n[1].encode,e,SD));return QC(`max(ceil(sqrt(${r})+${i}),${o})`,e)}(t,e,o[0].marks)),o=[gF("legend-entry",null,null,s,g,n,o,r)],u.title&&o.push(function(t,e,n,r){var i,o=aF(t,e);return tF(i={enter:{opacity:TD},update:{opacity:$D,x:{field:{group:"padding"}},y:{field:{group:"padding"}}},exit:{opacity:TD}},{orient:o("titleOrient"),_anchor:o("titleAnchor"),anchor:{signal:OF},angle:{signal:kF},align:{signal:wF},baseline:{signal:AF},text:t.title,fill:o("titleColor"),fillOpacity:o("titleOpacity"),font:o("titleFont"),fontSize:o("titleFontSize"),fontStyle:o("titleFontStyle"),fontWeight:o("titleFontWeight"),limit:o("titleLimit")},{align:o("titleAlign"),baseline:o("titleBaseline")}),oF(fF,"legend-title","guide-title",null,r,i,n)}(t,f,h.title,s)),l=gF("legend",m,p,s,g,d,o),t.zindex&&(l.zindex=t.zindex),GF(l,e)};function VF(t,e,n){return e[t]?`scale("${e[t]}",datum)`:uF(t,n[0].encode)}const XF='item.orient==="left"?-90:item.orient==="right"?90:0',JF='item.orient==="bottom"?"top":"bottom"';var ZF=function(t,e){t=Object(ct.G)(t)?{text:t}:t;var n,r,i=e.config.title,o=Object(ct.o)({},t.encode);return n=nM(e.add(WM(null,[{}]))),o.name=t.name,o.interactive=t.interactive,r=function(t,e,n,r){var i,o=aF(t,e),a={value:0},u=t.text;return tF(i={enter:{opacity:a},update:{opacity:{value:1}},exit:{opacity:a}},{text:u,orient:o("orient"),anchor:o("anchor"),align:{signal:cF},angle:{signal:XF},baseline:{signal:JF},dx:o("dx"),dy:o("dy"),fill:o("color"),font:o("font"),fontSize:o("fontSize"),fontStyle:o("fontStyle"),fontWeight:o("fontWeight"),frame:o("frame"),limit:o("limit"),offset:o("offset")||0},{align:o("align"),angle:o("angle"),baseline:o("baseline")}),oF(fF,ZD,t.style||CD,null,r,i,n)}(t,i,o,n),t.zindex&&(r.zindex=t.zindex),GF(r,e)};function QF(t,e){var n=[];t.transform&&t.transform.forEach(function(t){n.push(DF(t,e))}),t.on&&t.on.forEach(function(n){HF(n,e,t.name)}),e.addDataPipeline(t.name,function(t,e,n){var r,i,o,a,u,s=[],c=null,l=!1,f=!1;t.values?hM(t.values)||hM(t.format)?(s.push(tN(e,t)),s.push(c=KF())):s.push(c=KF({$ingest:t.values,$format:t.format})):t.url?hM(t.url)||hM(t.format)?(s.push(tN(e,t)),s.push(c=KF())):s.push(c=KF({$request:t.url,$format:t.format})):t.source&&(c=r=Object(ct.i)(t.source).map(function(t){return nM(e.getData(t).output)}),s.push(null));for(i=0,o=n.length;i<o;++i)a=n[i],u=a.metadata,c||u.source||s.push(c=KF()),s.push(a),u.generates&&(f=!0),u.modifies&&!f&&(l=!0),u.source?c=a:u.changes&&(c=null);r&&(o=r.length-1,s[0]=sD({derive:l,pulse:o?r:r[0]}),(l||o)&&s.splice(1,0,KF()));c||s.push(KF());return s.push(fD({})),s}(t,e,n))}function KF(t){var e=WM({},t);return e.metadata={source:!0},e}function tN(t,e){return KM({url:e.url?t.property(e.url):void 0,values:e.values?t.property(e.values):void 0,format:t.objectProperty(e.format)})}function eN(t,e){return{scale:t.scale,range:e}}var nN=function(t,e,n,r){var i,o,a,u,s,c,l,f,h,d=aF(t,e),p=t.orient,g=t.gridScale,m="left"===p||"top"===p?1:-1,v=function(t,e){if(1===e);else if(Object(ct.E)(t)){for(var n=t=Object(ct.o)({},t);null!=n.mult;){if(!Object(ct.E)(n.mult))return n.mult*=e,t;n=n.mult=Object(ct.o)({},n.mult)}n.mult=e}else t=e*(t||0);return t}(t.offset,m);return tF(i={enter:o={opacity:TD},update:u={opacity:$D},exit:a={opacity:TD}},{stroke:d("gridColor"),strokeDash:d("gridDash"),strokeDashOffset:d("gridDashOffset"),strokeOpacity:d("gridOpacity"),strokeWidth:d("gridWidth")}),s={scale:t.scale,field:jD,band:d("bandPosition"),round:d("tickRound"),extra:d("tickExtra"),offset:d("tickOffset")},"top"===p||"bottom"===p?(c="x",l="y",h="height"):(c="y",l="x",h="width"),f=l+"2",u[c]=o[c]=a[c]=s,g?(u[l]=o[l]={scale:g,range:0,mult:m,offset:v},u[f]=o[f]={scale:g,range:1,mult:m,offset:v}):(u[l]=o[l]={value:0,offset:v},u[f]=o[f]={signal:h,mult:m,offset:v}),oF("rule","axis-grid",null,jD,r,i,n)};function rN(t,e,n,r,i){return{signal:'flush(range("'+t+'"), scale("'+t+'", datum.value), '+e+","+n+","+r+","+i+")"}}var iN=function(t,e){var n,r,i,o,a,u,s=function(t,e){var n=e.config,r=t.orient,i="top"===r||"bottom"===r?n.axisX:n.axisY,o=n["axis"+r[0].toUpperCase()+r.slice(1)],a="band"===e.scaleType(t.scale)&&n.axisBand;return i||o||a?Object(ct.o)({},n.axis,i,o,a):n.axis}(t,e),c=t.encode||{},l=c.axis||{},f=l.name||void 0,h=l.interactive,d=l.style,p=aF(t,s);return n={orient:t.orient,ticks:!!p("ticks"),labels:!!p("labels"),grid:!!p("grid"),domain:!!p("domain"),title:null!=t.title},r=nM(e.add(WM({},[n]))),l=eF({update:{offset:QD(p("offset")||0),position:QD(dM(t.position,0)),titlePadding:QD(p("titlePadding")),minExtent:QD(p("minExtent")),maxExtent:QD(p("maxExtent")),range:{signal:`abs(span(range("${t.scale}")))`}}},c.axis,zD),i=nM(e.add(qM({scale:e.scaleRef(t.scale),extra:e.property(p("tickExtra")),count:e.objectProperty(t.tickCount),values:e.objectProperty(t.values),minstep:e.property(t.tickMinStep),formatType:e.property(t.formatType),formatSpecifier:e.property(t.format)}))),u=[],n.grid&&u.push(nN(t,s,c.grid,i)),n.ticks&&(o=p("tickSize"),u.push(function(t,e,n,r,i){var o,a,u,s,c,l,f=aF(t,e),h=t.orient,d="left"===h||"top"===h?-1:1;return tF(o={enter:a={opacity:TD},update:s={opacity:$D},exit:u={opacity:TD}},{stroke:f("tickColor"),strokeDash:f("tickDash"),strokeDashOffset:f("tickDashOffset"),strokeOpacity:f("tickOpacity"),strokeWidth:f("tickWidth")}),(c=QD(i)).mult=d,l={scale:t.scale,field:jD,band:f("bandPosition"),round:f("tickRound"),extra:f("tickExtra"),offset:f("tickOffset")},"top"===h||"bottom"===h?(s.y=a.y=TD,s.y2=a.y2=c,s.x=a.x=u.x=l):(s.x=a.x=TD,s.x2=a.x2=c,s.y=a.y=u.y=l),oF("rule","axis-tick",null,jD,r,o,n)}(t,s,c.ticks,i,o))),n.labels&&(o=n.ticks?o:0,u.push(function(t,e,n,r,i){var o,a,u,s,c,l,f,h,d,p,g=aF(t,e),m=t.orient,v="left"===m||"top"===m?-1:1,y="top"===m||"bottom"===m,b=t.scale,x=pM(g("labelFlush")),_=pM(g("labelFlushOffset")),w=0===x||!!x,O=g("labelAlign"),k=g("labelBaseline");return(u=QD(i)).mult=v,u.offset=QD(g("labelPadding")||0),u.offset.mult=v,s={scale:b,field:jD,band:.5,offset:g("tickOffset")},y?(c=O||(w?rN(b,x,'"left"','"right"','"center"'):"center"),l=k||("top"===m?"bottom":"top"),f=!O):(c=O||("right"===m?"left":"right"),l=k||(w?rN(b,x,'"top"','"bottom"','"middle"'):"middle"),f=!k),f=f&&w&&_?rN(b,x,"-"+_,_,0):null,tF(o={enter:a={opacity:TD,x:y?s:u,y:y?u:s},update:{opacity:$D,text:{field:"label"},x:a.x,y:a.y},exit:{opacity:TD,x:a.x,y:a.y}},{[y?"dx":"dy"]:f,align:c,baseline:l,angle:g("labelAngle"),fill:g("labelColor"),fillOpacity:g("labelOpacity"),font:g("labelFont"),fontSize:g("labelFontSize"),fontWeight:g("labelFontWeight"),fontStyle:g("labelFontStyle"),limit:g("labelLimit")}),h=g("labelBound"),d=g("labelOverlap"),p=g("labelSeparation"),t=oF(fF,"axis-label",SD,jD,r,o,n),(d||h)&&(t.overlap={separation:p,method:d,order:"datum.index",bound:h?{scale:b,orient:m,tolerance:h}:null}),t}(t,s,c.labels,i,o))),n.domain&&u.push(function(t,e,n,r){var i,o,a,u,s,c,l=aF(t,e),f=t.orient;return tF(i={enter:o={opacity:TD},update:a={opacity:$D},exit:{opacity:TD}},{stroke:l("domainColor"),strokeDash:l("domainDash"),strokeDashOffset:l("domainDashOffset"),strokeWidth:l("domainWidth"),strokeOpacity:l("domainOpacity")}),"top"===f||"bottom"===f?(u="x",c="y"):(u="y",c="x"),s=u+"2",o[c]=TD,a[u]=o[u]=eN(t,0),a[s]=o[s]=eN(t,1),oF("rule","axis-domain",null,null,r,i,n)}(t,s,c.domain,r)),n.title&&u.push(function(t,e,n,r){var i,o,a,u,s=aF(t,e),c=t.orient,l="left"===c||"top"===c?-1:1,f="top"===c||"bottom"===c;return i={enter:o={opacity:TD,anchor:QD(s("titleAnchor")),align:{signal:cF}},update:a=Object(ct.o)({},o,{opacity:$D,text:QD(t.title)}),exit:{opacity:TD}},u={signal:`lerp(range("${t.scale}"), ${sF(0,1,.5)})`},f?(a.x=u,o.angle={value:0},o.baseline={value:"top"===c?"bottom":"top"}):(a.y=u,o.angle={value:90*l},o.baseline={value:"bottom"}),tF(i,{angle:s("titleAngle"),baseline:s("titleBaseline"),fill:s("titleColor"),fillOpacity:s("titleOpacity"),font:s("titleFont"),fontSize:s("titleFontSize"),fontStyle:s("titleFontStyle"),fontWeight:s("titleFontWeight"),limit:s("titleLimit")},{align:s("titleAlign")}),!KD(i,"x",s("titleX"),"update")&&!f&&!iF("x",n)&&(i.enter.auto={value:!0}),!KD(i,"y",s("titleY"),"update")&&f&&!iF("y",n)&&(i.enter.auto={value:!0}),oF(fF,"axis-title","guide-title",null,r,i,n)}(t,s,c.title,r)),a=gF("axis",d,f,r,h,l,u),t.zindex&&(a.zindex=t.zindex),GF(a,e)},oN=function(t,e,n){var r=Object(ct.i)(t.signals),i=Object(ct.i)(t.scales);return n||r.forEach(function(t){ZC(t,e)}),Object(ct.i)(t.projections).forEach(function(t){!function(t,e){var n={};for(var r in t)"name"!==r&&(n[r]=OD(t[r],r,e));e.addProjection(t.name,n)}(t,e)}),i.forEach(function(t){mD(t,e)}),Object(ct.i)(t.data).forEach(function(t){QF(t,e)}),i.forEach(function(t){vD(t,e)}),r.forEach(function(t){!function(t,e){var n=e.getSignal(t.name),r=t.update;t.init&&(r?Object(ct.n)("Signals can not include both init and update expressions."):(r=t.init,n.initonly=!0)),r&&(r=QC(r,e),n.update=r.$expr,n.params=r.$params),t.on&&t.on.forEach(function(t){BM(t,e,n.id)})}(t,e)}),Object(ct.i)(t.axes).forEach(function(t){iN(t,e)}),Object(ct.i)(t.marks).forEach(function(t){GF(t,e)}),Object(ct.i)(t.legends).forEach(function(t){YF(t,e)}),t.title&&ZF(t.title,e),e.parseLambdas(),e},aN=Object(ct.ab)(["width","height","padding","autosize"]);function uN(t){this.config=t,this.bindings=[],this.field={},this.signals={},this.lambdas={},this.scales={},this.events={},this.data={},this.streams=[],this.updates=[],this.operators=[],this.background=null,this.eventConfig=null,this._id=0,this._subid=0,this._nextsub=[0],this._parent=[],this._encode=[],this._lookup=[],this._markpath=[]}function sN(t){this.config=t.config,this.legends=t.legends,this.field=Object.create(t.field),this.signals=Object.create(t.signals),this.lambdas=Object.create(t.lambdas),this.scales=Object.create(t.scales),this.events=Object.create(t.events),this.data=Object.create(t.data),this.streams=[],this.updates=[],this.operators=[],this._id=0,this._subid=++t._nextsub[0],this._nextsub=t._nextsub,this._parent=t._parent.slice(),this._encode=t._encode.slice(),this._lookup=t._lookup.slice(),this._markpath=t._markpath}var cN=uN.prototype=sN.prototype;function lN(t){return(Object(ct.z)(t)?function(t){for(var e,n="[",r=0,i=t.length;r<i;++r)e=t[r],n+=(r>0?",":"")+(Object(ct.E)(e)?e.signal||lN(e):Object(ct.W)(e));return n+"]"}:function(t){var e,n,r="{",i=0;for(e in t)n=t[e],r+=(++i>1?",":"")+Object(ct.W)(e)+":"+(Object(ct.E)(n)?n.signal||lN(n):Object(ct.W)(n));return r+"}"})(t)}cN.fork=function(){return new sN(this)},cN.isSubscope=function(){return this._subid>0},cN.toRuntime=function(){return this.finish(),{background:this.background,operators:this.operators,streams:this.streams,updates:this.updates,bindings:this.bindings,eventConfig:this.eventConfig}},cN.id=function(){return(this._subid?this._subid+":":0)+this._id++},cN.add=function(t){return this.operators.push(t),t.id=this.id(),t.refs&&(t.refs.forEach(function(e){e.$ref=t.id}),t.refs=null),t},cN.proxy=function(t){var e=t instanceof KC?nM(t):t;return this.add(uD({value:e}))},cN.addStream=function(t){return this.streams.push(t),t.id=this.id(),t},cN.addUpdate=function(t){return this.updates.push(t),t},cN.finish=function(){var t,e;for(t in this.root&&(this.root.root=!0),this.signals)this.signals[t].signal=t;for(t in this.scales)this.scales[t].scale=t;function n(t,e,n){var r;t&&((r=t.data||(t.data={}))[e]||(r[e]=[])).push(n)}for(t in this.data)for(var r in n((e=this.data[t]).input,t,"input"),n(e.output,t,"output"),n(e.values,t,"values"),e.index)n(e.index[r],t,"index:"+r);return this},cN.pushState=function(t,e,n){this._encode.push(nM(this.add(fD({pulse:t})))),this._parent.push(e),this._lookup.push(n?nM(this.proxy(n)):null),this._markpath.push(-1)},cN.popState=function(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this._markpath.pop()},cN.parent=function(){return Object(ct.R)(this._parent)},cN.encode=function(){return Object(ct.R)(this._encode)},cN.lookup=function(){return Object(ct.R)(this._lookup)},cN.markpath=function(){var t=this._markpath;return++t[t.length-1]},cN.fieldRef=function(t,e){if(Object(ct.G)(t))return iM(t,e);t.signal||Object(ct.n)("Unsupported field reference: "+Object(ct.W)(t));var n,r=t.signal,i=this.field[r];return i||(n={name:this.signalRef(r)},e&&(n.as=e),this.field[r]=i=nM(this.add(JM(n)))),i},cN.compareRef=function(t,e){function n(t){return fM(t)?(i=!0,r.signalRef(t.signal)):function(t){return t&&t.expr}(t)?(i=!0,r.exprRef(t.expr)):t}var r=this,i=!1,o=Object(ct.i)(t.field).map(n),a=Object(ct.i)(t.order).map(n);return e&&o.push(rM),i?nM(this.add(HM({fields:o,orders:a}))):aM(o,a)},cN.keyRef=function(t,e){var n=this.signals,r=!1;return t=Object(ct.i)(t).map(function(t){return fM(t)?(r=!0,nM(n[t.signal])):t}),r?nM(this.add(ZM({fields:t,flat:e}))):function(t,e){var n={$key:t};return e&&(n.$flat=!0),n}(t,e)},cN.sortRef=function(t){if(!t)return t;var e=[sM(t.op,t.field),rM],n=t.order||"ascending";return n.signal?nM(this.add(HM({fields:e,orders:[n=this.signalRef(n.signal),n]}))):aM(e,[n,n])},cN.event=function(t,e){var n=t+":"+e;if(!this.events[n]){var r=this.id();this.streams.push({id:r,source:t,type:e}),this.events[n]=r}return this.events[n]},cN.addSignal=function(t,e){this.signals.hasOwnProperty(t)&&Object(ct.n)("Duplicate signal name: "+Object(ct.W)(t));var n=e instanceof KC?e:this.add(eM(e));return this.signals[t]=n},cN.getSignal=function(t){return this.signals[t]||Object(ct.n)("Unrecognized signal name: "+Object(ct.W)(t)),this.signals[t]},cN.signalRef=function(t){return this.signals[t]?nM(this.signals[t]):(this.lambdas.hasOwnProperty(t)||(this.lambdas[t]=this.add(eM(null))),nM(this.lambdas[t]))},cN.parseLambdas=function(){for(var t=Object.keys(this.lambdas),e=0,n=t.length;e<n;++e){var r=t[e],i=QC(r,this),o=this.lambdas[r];o.params=i.$params,o.update=i.$expr}},cN.property=function(t){return t&&t.signal?this.signalRef(t.signal):t},cN.objectProperty=function(t){return t&&Object(ct.E)(t)?this.signalRef(t.signal||lN(t)):t},cN.exprRef=function(t,e){var n={expr:QC(t,this)};return e&&(n.expr.$name=e),nM(this.add(VM(n)))},cN.addBinding=function(t,e){this.bindings||Object(ct.n)("Nested signals do not support binding: "+Object(ct.W)(t)),this.bindings.push(Object(ct.o)({signal:t},e))},cN.addScaleProj=function(t,e){this.scales.hasOwnProperty(t)&&Object(ct.n)("Duplicate scale or projection name: "+Object(ct.W)(t)),this.scales[t]=this.add(e)},cN.addScale=function(t,e){this.addScaleProj(t,lD(e))},cN.addProjection=function(t,e){this.addScaleProj(t,aD(e))},cN.getScale=function(t){return this.scales[t]||Object(ct.n)("Unrecognized scale name: "+Object(ct.W)(t)),this.scales[t]},cN.projectionRef=cN.scaleRef=function(t){return nM(this.getScale(t))},cN.projectionType=cN.scaleType=function(t){return this.getScale(t).params.type},cN.addData=function(t,e){return this.data.hasOwnProperty(t)&&Object(ct.n)("Duplicate data set name: "+Object(ct.W)(t)),this.data[t]=e},cN.getData=function(t){return this.data[t]||Object(ct.n)("Undefined data set name: "+Object(ct.W)(t)),this.data[t]},cN.addDataPipeline=function(t,e){return this.data.hasOwnProperty(t)&&Object(ct.n)("Duplicate data set name: "+Object(ct.W)(t)),this.addData(t,LF.fromEntries(this,e))};var fN=function(t){return(t||[]).reduce((t,e)=>{for(var n in e){var r="legend"===n?{layout:1}:"style"===n||null;hN(t,n,e[n],r)}return t},{padding:0,autosize:"pad",background:null,events:{defaults:{allow:["wheel"]}},group:null,mark:null,arc:{fill:mN},area:{fill:mN},image:null,line:{stroke:mN,strokeWidth:gN},path:{stroke:mN},rect:{fill:mN},rule:{stroke:vN},shape:{stroke:mN},symbol:{fill:mN,size:64},text:{fill:vN,font:dN,fontSize:11},style:{"guide-label":{fill:vN,font:dN,fontSize:10},"guide-title":{fill:vN,font:dN,fontSize:11,fontWeight:"bold"},"group-title":{fill:vN,font:dN,fontSize:13,fontWeight:"bold"},point:{size:pN,strokeWidth:gN,shape:"circle"},circle:{size:pN,strokeWidth:gN},square:{size:pN,strokeWidth:gN,shape:"square"},cell:{fill:"transparent",stroke:bN}},title:{orient:"top",anchor:"middle",offset:4},axis:{minExtent:0,maxExtent:200,bandPosition:.5,domain:!0,domainWidth:1,domainColor:yN,grid:!1,gridWidth:1,gridColor:bN,labels:!0,labelAngle:0,labelLimit:180,labelPadding:2,ticks:!0,tickColor:yN,tickOffset:0,tickRound:!0,tickSize:5,tickWidth:1,titlePadding:4},axisBand:{tickOffset:-1},legend:{orient:"right",padding:0,gridAlign:"each",columnPadding:10,rowPadding:2,symbolDirection:"vertical",gradientDirection:"vertical",gradientLength:200,gradientThickness:16,gradientStrokeColor:bN,gradientStrokeWidth:0,gradientLabelOffset:2,labelAlign:"left",labelBaseline:"middle",labelLimit:160,labelOffset:4,labelOverlap:!0,symbolType:"circle",symbolSize:100,symbolOffset:0,symbolStrokeWidth:1.5,symbolBaseFillColor:"transparent",symbolBaseStrokeColor:yN,titleLimit:180,titleOrient:"top",titlePadding:5,layout:{offset:18,direction:"horizontal",left:{direction:"vertical"},right:{direction:"vertical"}}},range:{category:{scheme:"tableau10"},ordinal:{scheme:"blues"},heatmap:{scheme:"yellowgreenblue"},ramp:{scheme:"blues"},diverging:{scheme:"blueorange",extent:[1,0]},symbol:["circle","square","triangle-up","cross","diamond","triangle-right","triangle-down","triangle-left"]}})};function hN(t,e,n,r){var i,o;if(Object(ct.E)(n)&&!Object(ct.z)(n))for(i in o=Object(ct.E)(t[e])?t[e]:t[e]={},n)r&&(!0===r||r[i])?hN(o,i,n[i]):o[i]=n[i];else t[e]=n}var dN="sans-serif",pN=30,gN=2,mN="#4c78a8",vN="#000",yN="#888",bN="#ddd";var xN=function(t,e){return Object(ct.E)(t)||Object(ct.n)("Input Vega specification must be an object."),function(t,e){var n,r,i,o,a,u=e.config;return e.background=t.background||u.background,e.eventConfig=u.events,a=nM(e.root=e.add(eM())),e.addSignal("width",t.width||0),e.addSignal("height",t.height||0),e.addSignal("padding",YC(t.padding,u)),e.addSignal("autosize",GC(t.autosize,u)),e.legends=e.objectProperty(u.legend&&u.legend.layout),Object(ct.i)(t.signals).forEach(function(t){aN[t.name]||ZC(t,e)}),r=e.add(WM()),i=eF({enter:{x:{value:0},y:{value:0}},update:{width:{signal:"width"},height:{signal:"height"}}},t.encode),i=e.add(YM(nF(i,lF,JD,t.style,e,{pulse:nM(r)}))),o=e.add(dD({layout:e.objectProperty(t.layout),legends:e.legends,autosize:e.signalRef("autosize"),mark:a,pulse:nM(i)})),e.operators.pop(),e.pushState(nM(i),nM(o),null),oN(t,e,!0),e.operators.push(o),n=e.add(IM({mark:a,pulse:nM(o)})),n=e.add(cD({pulse:nM(n)})),n=e.add(fD({pulse:nM(n)})),e.addData("root",new LF(e,r,r,n)),e}(t,new uN(fN([e,t.config]))).toRuntime()};Object(ct.o)(ri,r,i,a,u,s,c,l,f,h,d);var _N=n(10),wN=n(11),ON=n.n(wN),kN=n(12),AN=n.n(kN),EN=n(3),jN=n.n(EN);function SN(t){return!!t.or}function CN(t){return!!t.and}function MN(t){return!!t.not}function DN(t,e){return MN(t)?{not:DN(t.not,e)}:CN(t)?{and:t.and.map(t=>DN(t,e))}:SN(t)?{or:t.or.map(t=>DN(t,e))}:e(t)}const FN=AN.a,NN=ON.a;function zN(t,e){const n={};for(const r of e)t.hasOwnProperty(r)&&(n[r]=t[r]);return n}function TN(t,e){const n=Object.assign({},t);for(const t of e)delete n[t];return n}Set.prototype.toJSON=function(){return`Set(${[...this].map(t=>jN()(t)).join(",")})`};const $N=jN.a;function RN(t){if(Object(ct.D)(t))return t;const e=Object(ct.G)(t)?t:jN()(t);if(e.length<250)return e;let n=0;for(let t=0;t<e.length;t++){n=(n<<5)-n+e.charCodeAt(t),n&=n}return n}function BN(t){return!1===t||null===t}function PN(t,e){return t.indexOf(e)>-1}function LN(t,e){let n=0;for(const[r,i]of t.entries())if(e(i,r,n++))return!0;return!1}function UN(t,e){let n=0;for(const[r,i]of t.entries())if(!e(i,r,n++))return!1;return!0}function qN(t){return[].concat(...t)}function IN(t,...e){for(const n of e)t=WN(t,n);return t}function WN(t,e){if("object"!=typeof e||null===e)return t;for(const n in e)e.hasOwnProperty(n)&&void 0!==e[n]&&("object"!=typeof e[n]||Object(ct.z)(e[n])||null===e[n]?t[n]=e[n]:"object"!=typeof t[n]||null===t[n]?t[n]=IN(Object(ct.z)(e[n].constructor)?[]:{},e[n]):IN(t[n],e[n]));return t}function HN(t,e){const n=[],r={};let i;for(const o of t)(i=e(o))in r||(r[i]=1,n.push(o));return n}function GN(t,e){for(const n of t)if(e.has(n))return!0;return!1}function YN(t){const e=new Set;for(const n of t){const t=Object(ct.V)(n).map((t,e)=>0===e?t:`[${t}]`);t.map((e,n)=>t.slice(0,n+1).join("")).forEach(t=>e.add(t))}return e}function VN(t,e){return GN(YN(t),YN(e))}const XN=Object.keys;function JN(t){const e=[];for(const n in t)t.hasOwnProperty(n)&&e.push(t[n]);return e}function ZN(t){return XN(t)}function QN(t){return!0===t||!1===t}function KN(t){const e=t.replace(/\W/g,"_");return(t.match(/^\d+/)?"_":"")+e}function tz(t,e){return MN(t)?"!("+tz(t.not,e)+")":CN(t)?"("+t.and.map(t=>tz(t,e)).join(") && (")+")":SN(t)?"("+t.or.map(t=>tz(t,e)).join(") || (")+")":e(t)}function ez(t,e){if(0===e.length)return!0;const n=e.shift();return ez(t[n],e)&&delete t[n],0===XN(t).length}function nz(t){return t.charAt(0).toUpperCase()+t.substr(1)}function rz(t,e="datum"){const n=Object(ct.V)(t),r=[];for(let t=1;t<=n.length;t++){const i=`[${n.slice(0,t).map(ct.W).join("][")}]`;r.push(`${e}${i}`)}return r.join(" && ")}function iz(t){return`${Object(ct.V)(t).map(t=>t.replace(".","\\.")).join("\\.")}`}function oz(t){return`${Object(ct.V)(t).join(".")}`}function az(t){return t?Object(ct.V)(t).length:0}function uz(...t){for(const e of t)if(void 0!==e)return e}let sz=42;function cz(t){const e=++sz;return t?String(t)+e:e}function lz(t){return(t%360+360)%360}const fz="area",hz="bar",dz="line",pz="point",gz="rect",mz="rule",vz="text",yz="tick",bz="trail",xz="circle",_z="square",wz="geoshape",Oz={area:1,bar:1,line:1,point:1,text:1,tick:1,trail:1,rect:1,geoshape:1,rule:1,circle:1,square:1};function kz(t){return PN(["line","area","trail"],t)}const Az=ZN(Oz);function Ez(t){return t.type}Object(ct.ab)(Az);const jz=[].concat(["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit"],["fill","fillOpacity"]),Sz=["filled","color","tooltip"];function Cz(t){return!!t.mark}class Mz{constructor(t,e){this.name=t,this.run=e}hasMatchingType(t){return!!Cz(t)&&(Ez(e=t.mark)?e.type:e)===this.name;var e}}const Dz={argmax:1,argmin:1,average:1,count:1,distinct:1,max:1,mean:1,median:1,min:1,missing:1,q1:1,q3:1,ci0:1,ci1:1,stderr:1,stdev:1,stdevp:1,sum:1,valid:1,values:1,variance:1,variancep:1};function Fz(t){return!!t&&!!t.argmin}function Nz(t){return!!t&&!!t.argmax}ZN(Dz);function zz(t){return Object(ct.G)(t)&&!!Dz[t]}const Tz=["count","valid","missing","distinct"];function $z(t){return t&&Object(ct.G)(t)&&PN(Tz,t)}const Rz=["count","sum","distinct","valid","missing"],Bz=Object(ct.ab)(["mean","average","median","q1","q3","min","max"]),Pz="row",Lz="column",Uz="facet",qz="x",Iz="y",Wz="x2",Hz="y2",Gz="latitude",Yz="longitude",Vz="latitude2",Xz="longitude2",Jz="color",Zz="fill",Qz="stroke",Kz="shape",tT="size",eT="opacity",nT="fillOpacity",rT="strokeOpacity",iT="strokeWidth",oT="text",aT="order",uT="detail",sT="key",cT="tooltip",lT="href";const fT={longitude:1,longitude2:1,latitude:1,latitude2:1},hT=ZN(fT),dT=Object.assign({x:1,y:1,x2:1,y2:1},fT,{color:1,fill:1,stroke:1,opacity:1,fillOpacity:1,strokeOpacity:1,strokeWidth:1,size:1,shape:1,order:1,text:1,detail:1,key:1,tooltip:1,href:1});function pT(t){return"color"===t||"fill"===t||"stroke"===t}const gT={row:1,column:1,facet:1},mT=ZN(gT),vT=Object.assign({},dT,gT),yT=ZN(vT),{order:bT,detail:xT}=vT,_T=b(vT,["order","detail"]),{order:wT,detail:OT,row:kT,column:AT,facet:ET}=vT,jT=b(vT,["order","detail","row","column","facet"]);ZN(_T),ZN(jT);function ST(t){return!!jT[t]}function CT(t){return!!vT[t]}const MT=["x2","y2","latitude2","longitude2"];function DT(t){return FT(t)!==t}function FT(t){switch(t){case"x2":return"x";case"y2":return"y";case"latitude2":return"latitude";case"longitude2":return"longitude"}return t}ZN(dT);const{x:NT,y:zT,x2:TT,y2:$T,latitude:RT,longitude:BT,latitude2:PT,longitude2:LT}=dT,UT=b(dT,["x","y","x2","y2","latitude","longitude","latitude2","longitude2"]),qT=ZN(UT),IT={x:1,y:1},WT=ZN(IT),{text:HT,tooltip:GT,href:YT,detail:VT,key:XT,order:JT}=UT,ZT=b(UT,["text","tooltip","href","detail","key","order"]),QT=ZN(ZT);const KT=Object.assign({},IT,ZT),t$=ZN(KT);function e$(t){return!!KT[t]}function n$(t,e){return function(t){switch(t){case Jz:case Zz:case Qz:case uT:case sT:case cT:case lT:case aT:case eT:case nT:case rT:case iT:case Uz:case Pz:case Lz:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",rect:"always",line:"always",trail:"always",area:"always",text:"always",geoshape:"always"};case qz:case Iz:case Gz:case Yz:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",rect:"always",line:"always",trail:"always",area:"always",text:"always"};case Wz:case Hz:case Vz:case Xz:return{rule:"always",bar:"always",rect:"always",area:"always",circle:"binned",point:"binned",square:"binned",tick:"binned"};case tT:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",text:"always",line:"always",trail:"always"};case Kz:return{point:"always",geoshape:"always"};case oT:return{text:"always"}}}(t)[e]}function r$(t){switch(t){case qz:case Iz:case tT:case iT:case eT:case nT:case rT:case Wz:case Hz:return;case Uz:case Pz:case Lz:case Kz:case oT:case cT:case lT:return"discrete";case Jz:case Zz:case Qz:return"flexible";case Gz:case Yz:case Vz:case Xz:case uT:case sT:case aT:return}throw new Error("rangeType not implemented for "+t)}const i$="Invalid spec",o$='Autosize "fit" only works for single views and layered views.',a$='Cannot use a fixed value of "rangeStep" when "autosize" is "fit".';function u$(t){return`Cannot project a selection on encoding channel "${t}", which has no field.`}function s$(t){return`The "nearest" transform is not supported for ${t} marks.`}function c$(t){return`Selection not supported for ${t} yet`}function l$(t){return`Cannot find a selection named "${t}"`}const f$="Scale bindings are currently only supported for scales with unbinned, continuous domains.",h$="Selections bound to scales cannot be separately initialized.";function d$(t){return`Unknown repeated value "${t}".`}function p$(t){return`The "columns" property cannot be used when "${t}" has nested row/column.`}const g$="Axes cannot be shared in concatenated views yet (https://github.com/vega/vega-lite/issues/2415)",m$="Axes cannot be shared in repeated views yet (https://github.com/vega/vega-lite/issues/2415)";function v$(t){return`Unrecognized parse "${t}".`}function y$(t,e,n){return`An ancestor parsed field "${t}" as ${n} but a child wants to parse the field as ${e}.`}function b$(t){return`Ignoring an invalid transform: ${$N(t)}.`}const x$='If "from.fields" is not specified, "as" has to be a string that specifies the key to be used for the data from the secondary source.';function _$(t){return`Layer's shared ${t.join(",")} channel ${1===t.length?"is":"are"} overriden`}function w$(t){const{parentProjection:e,projection:n}=t;return`Layer's shared projection ${$N(e)} is overridden by a child projection ${$N(n)}.`}function O$(t,e,n){return`Channel ${t} is a ${e}. Converted to {value: ${$N(n)}}.`}function k$(t){return`Invalid field type "${t}"`}function A$(t,e,n){return`A ${n.scaleType?`${n.scaleType} scale`:n.zeroFalse?"scale with zero=false":"scale with custom domain that excludes zero"} is used to encode ${t}'s ${e}. This can be misleading as the ${"x"===e?"width":"height"} of the ${t} can be arbitrary based on the scale domain. You may want to use point mark instead.`}function E$(t,e){return`Invalid field type "${t}" for aggregate: "${e}", using "quantitative" instead.`}function j$(t){return`Invalid aggregation operator "${t}"`}function S$(t,e){return`Missing type for channel "${t}", using "${e}" instead.`}function C$(t,e){const{fill:n,stroke:r}=e;return`Dropping color ${t} as the plot also has `+(n&&r?"fill and stroke":n?"fill":"stroke")}function M$(t,e){return`Dropping ${$N(t)} from channel "${e}" since it does not contain data field or value.`}function D$(t,e,n){return`${t}-encoding with type ${e} is deprecated. Replacing with ${n}-encoding.`}const F$="Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.";function N$(t,e,n){return`${t} dropped as it is incompatible with "${e}"${n?` when ${n}`:""}.`}function z$(t){return`${t}-encoding is dropped as ${t} is not a valid encoding channel.`}function T$(t){return`${t} encoding should be discrete (ordinal / nominal / binned).`}function $$(t){return`Facet encoding dropped as ${t.join(" and ")} ${t.length>1?"are":"is"} also specified.`}function R$(t,e){return`Using discrete channel "${t}" to encode "${e}" field can be misleading as it does not encode ${"ordinal"===e?"order":"magnitude"}.`}const B$="Bar mark should not be used with point scale when rangeStep is null. Please use band scale instead.";function P$(t,e){return`Line mark is for continuous lines and thus cannot be used with ${t&&e?"x2 and y2":t?"x2":"y2"}. We will use the rule mark (line segments) instead.`}function L$(t,e){return`Specified orient "${t}" overridden with "${e}"`}const U$="custom domain scale cannot be unioned with default field-based domain";function q$(t){return`Cannot use the scale property "${t}" with non-color channel.`}function I$(t){return`Using unaggregated domain with raw field has no effect (${$N(t)}).`}function W$(t){return`Unaggregated domain not applicable for "${t}" since it produces values outside the origin domain of the source data.`}function H$(t){return`Unaggregated domain is currently unsupported for log scale (${$N(t)}).`}function G$(t){return`Cannot apply size to non-oriented mark "${t}".`}function Y$(t){return`rangeStep for "${t}" is dropped as top-level ${"x"===t?"width":"height"} is provided.`}function V$(t,e,n){return`Channel "${t}" does not work with "${e}" scale. We are using "${n}" scale instead.`}function X$(t,e){return`FieldDef does not work with "${t}" scale. We are using "${e}" scale instead.`}function J$(t,e,n){return`${n}-scale's "${e}" is dropped as it does not work with ${t} scale.`}function Z$(t,e){return`Scale type "${e}" does not work with mark "${t}".`}function Q$(t,e,n,r){return`Conflicting ${e.toString()} property "${t.toString()}" (${$N(n)} and ${$N(r)}). Using ${$N(n)}.`}function K$(t){return`Setting the scale to be independent for "${t}" means we also have to set the guide (axis or legend) to be independent.`}function tR(t){return`Dropping sort property ${$N(t)} as unioned domains only support boolean or op 'count'.`}const eR="Unable to merge domains",nR="Domains that should be unioned has conflicting sort properties. Sort will be set to true.",rR="Invalid channel for axis.";function iR(t){return`Cannot stack "${t}" if there is already "${t}2"`}function oR(t){return`Cannot stack non-linear scale (${t})`}function aR(t){return`Stacking is applied even though the aggregate function is non-summative ("${t}")`}function uR(t,e){return`Invalid ${t}: ${$N(e)}`}function sR(t){return`Time unit "${t}" is not supported. We are replacing it with ${t.replace("day","date")}.`}function cR(t){return`Dropping day from datetime ${$N(t)} as day cannot be combined with other units.`}function lR(t,e){return`${e?"extent ":""}${e&&t?"and ":""}${t?"center ":""}${e&&t?"are ":"is "}not needed when data are aggregated.`}function fR(t,e,n){return`${t} is not usually used with ${e} for ${n}.`}function hR(t,e){return`Continuous axis should not have customized aggregation function ${t}; ${e} already agregates the axis.`}function dR(t,e){return`Center is not needed to be specified in ${e} when extent is ${t}.`}function pR(t){return`1D error band does not support ${t}`}function gR(t){return`Channel ${t} is required for "binned" bin`}function mR(t){return`Domain for ${t} is required for threshold scale`}const vR=g,yR=Object(ct.J)(ct.e);let bR=yR;function xR(){return bR=yR}function _R(...t){bR.warn.apply(bR,arguments)}const wR=2006;function OR(t){return!!(t&&(t.year||t.quarter||t.month||t.date||t.day||t.hours||t.minutes||t.seconds||t.milliseconds))}const kR=["january","february","march","april","may","june","july","august","september","october","november","december"],AR=kR.map(t=>t.substr(0,3)),ER=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],jR=ER.map(t=>t.substr(0,3));function SR(t,e=!1){const n=[];if(e&&void 0!==t.day&&XN(t).length>1&&(_R(vR.droppedDay(t)),delete(t=NN(t)).day),void 0!==t.year?n.push(t.year):void 0!==t.day?n.push(wR):n.push(0),void 0!==t.month){const r=e?function(t){if(Object(ct.D)(t))return(t-1).toString();{const e=t.toLowerCase(),n=kR.indexOf(e);if(-1!==n)return n+"";const r=e.substr(0,3),i=AR.indexOf(r);if(-1!==i)return i+"";throw new Error(vR.invalidTimeUnit("month",t))}}(t.month):t.month;n.push(r)}else if(void 0!==t.quarter){const r=e?function(t){if(Object(ct.D)(t))return t>4&&_R(vR.invalidTimeUnit("quarter",t)),(t-1).toString();throw new Error(vR.invalidTimeUnit("quarter",t))}(t.quarter):t.quarter;n.push(r+"*3")}else n.push(0);if(void 0!==t.date)n.push(t.date);else if(void 0!==t.day){const r=e?function(t){if(Object(ct.D)(t))return t%7+"";{const e=t.toLowerCase(),n=ER.indexOf(e);if(-1!==n)return n+"";const r=e.substr(0,3),i=jR.indexOf(r);if(-1!==i)return i+"";throw new Error(vR.invalidTimeUnit("day",t))}}(t.day):t.day;n.push(r+"+1")}else n.push(1);for(const e of["hours","minutes","seconds","milliseconds"])void 0!==t[e]?n.push(t[e]):n.push(0);return t.utc?`utc(${n.join(", ")})`:`datetime(${n.join(", ")})`}function CR(t){return!!t.row||!!t.column}function MR(t){return void 0!==t.facet}var DR;!function(t){t.YEAR="year",t.MONTH="month",t.DAY="day",t.DATE="date",t.HOURS="hours",t.MINUTES="minutes",t.SECONDS="seconds",t.MILLISECONDS="milliseconds",t.YEARMONTH="yearmonth",t.YEARMONTHDATE="yearmonthdate",t.YEARMONTHDATEHOURS="yearmonthdatehours",t.YEARMONTHDATEHOURSMINUTES="yearmonthdatehoursminutes",t.YEARMONTHDATEHOURSMINUTESSECONDS="yearmonthdatehoursminutesseconds",t.MONTHDATE="monthdate",t.MONTHDATEHOURS="monthdatehours",t.HOURSMINUTES="hoursminutes",t.HOURSMINUTESSECONDS="hoursminutesseconds",t.MINUTESSECONDS="minutesseconds",t.SECONDSMILLISECONDS="secondsmilliseconds",t.QUARTER="quarter",t.YEARQUARTER="yearquarter",t.QUARTERMONTH="quartermonth",t.YEARQUARTERMONTH="yearquartermonth",t.UTCYEAR="utcyear",t.UTCMONTH="utcmonth",t.UTCDAY="utcday",t.UTCDATE="utcdate",t.UTCHOURS="utchours",t.UTCMINUTES="utcminutes",t.UTCSECONDS="utcseconds",t.UTCMILLISECONDS="utcmilliseconds",t.UTCYEARMONTH="utcyearmonth",t.UTCYEARMONTHDATE="utcyearmonthdate",t.UTCYEARMONTHDATEHOURS="utcyearmonthdatehours",t.UTCYEARMONTHDATEHOURSMINUTES="utcyearmonthdatehoursminutes",t.UTCYEARMONTHDATEHOURSMINUTESSECONDS="utcyearmonthdatehoursminutesseconds",t.UTCMONTHDATE="utcmonthdate",t.UTCMONTHDATEHOURS="utcmonthdatehours",t.UTCHOURSMINUTES="utchoursminutes",t.UTCHOURSMINUTESSECONDS="utchoursminutesseconds",t.UTCMINUTESSECONDS="utcminutesseconds",t.UTCSECONDSMILLISECONDS="utcsecondsmilliseconds",t.UTCQUARTER="utcquarter",t.UTCYEARQUARTER="utcyearquarter",t.UTCQUARTERMONTH="utcquartermonth",t.UTCYEARQUARTERMONTH="utcyearquartermonth"}(DR||(DR={}));const FR={year:1,quarter:1,month:1,day:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},NR=ZN(FR);const zR={utcyear:1,utcquarter:1,utcmonth:1,utcday:1,utcdate:1,utchours:1,utcminutes:1,utcseconds:1,utcmilliseconds:1};const TR={utcyearquarter:1,utcyearquartermonth:1,utcyearmonth:1,utcyearmonthdate:1,utcyearmonthdatehours:1,utcyearmonthdatehoursminutes:1,utcyearmonthdatehoursminutesseconds:1,utcquartermonth:1,utcmonthdate:1,utcmonthdatehours:1,utchoursminutes:1,utchoursminutesseconds:1,utcminutesseconds:1,utcsecondsmilliseconds:1},$R=Object.assign({},zR,TR);function RR(t){return!!$R[t]}const BR=Object.assign({},FR,zR,{yearquarter:1,yearquartermonth:1,yearmonth:1,yearmonthdate:1,yearmonthdatehours:1,yearmonthdatehoursminutes:1,yearmonthdatehoursminutesseconds:1,quartermonth:1,monthdate:1,monthdatehours:1,hoursminutes:1,hoursminutesseconds:1,minutesseconds:1,secondsmilliseconds:1},TR);ZN(BR);function PR(t,e){const n=t.indexOf(e);return n>-1&&(e!==DR.SECONDS||0===n||"i"!==t.charAt(n-1))}function LR(t,e){const n=rz(e),r=RR(t)?"utc":"";return SR(NR.reduce((e,i)=>(PR(t,i)&&(e[i]=function(t){return t===DR.QUARTER?`(${r}quarter(${n})-1)`:`${r}${t}(${n})`}(i)),e),{}))}function UR(t,e){if(!t)return;const n=[],r=PR(t,DR.YEAR);PR(t,DR.MONTH)&&n.push(!1!==e?"%b":"%B"),PR(t,DR.DAY)?n.push(e?"%a":"%A"):PR(t,DR.DATE)&&n.push("%d"+(r?",":"")),r&&n.push(e?"%y":"%Y");const i=[];PR(t,DR.HOURS)&&i.push("%H"),PR(t,DR.MINUTES)&&i.push("%M"),PR(t,DR.SECONDS)&&i.push("%S"),PR(t,DR.MILLISECONDS)&&i.push("%L");const o=[];return n.length>0&&o.push(n.join(" ")),i.length>0&&o.push(i.join(":")),o}function qR(t){return"day"!==t&&t.indexOf("day")>=0?(_R(vR.dayReplacedWithDate(t)),t.replace("day","date")):t}const IR={quantitative:1,ordinal:1,temporal:1,nominal:1,geojson:1};const WR="quantitative",HR="ordinal",GR="temporal",YR="nominal",VR="geojson";function XR(t){const{field:e,timeUnit:n,bin:r,aggregate:i}=t;return Object.assign({},n?{timeUnit:n}:{},r?{bin:r}:{},i?{aggregate:i}:{},{field:e})}function JR(t){return!!t&&!!t.condition}function ZR(t){return!!t&&!!t.condition&&!Object(ct.z)(t.condition)&&QR(t.condition)}function QR(t){return!(!t||!t.field&&"count"!==t.aggregate)}function KR(t){return!!t&&(!!t.field&&!!t.type||"count"===t.aggregate)}function tB(t){return QR(t)&&Object(ct.G)(t.field)}function eB(t){return t&&"value"in t&&void 0!==t.value}function nB(t){return!(!t||!t.scale&&!t.sort)}function rB(t){return!(!t||!t.axis&&!t.stack&&!t.impute)}function iB(t){return!!t&&!!t.legend}function oB(t){return!!t&&!!t.format}function aB(t,e={}){let n=t.field;const r=e.prefix;let i=e.suffix,o="";if(function(t){return"count"===t.aggregate}(t))n=function(t){return 0===t.indexOf("__")}(a="count")?a:`__${a}`;else{let r;if(!e.nofn)if(function(t){return!!t.op}(t))r=t.op;else{const{bin:a,aggregate:u,timeUnit:s}=t;EB(a)?(r=AB(a),i=(e.binSuffix||"")+(e.suffix||"")):u?Nz(u)?(o=`.${n}`,n=`argmax_${u.argmax}`):Fz(u)?(o=`.${n}`,n=`argmin_${u.argmin}`):r=String(u):s&&(r=String(s))}r&&(n=n?`${r}_${n}`:r)}var a;return i&&(n=`${n}_${i}`),r&&(n=`${r}_${n}`),e.forAs?n:e.expr?function(t,e="datum"){return`${e}[${Object(ct.W)(Object(ct.V)(t).join("."))}]`}(n,e.expr)+o:iz(n)+o}function uB(t){return!function(t){switch(t.type){case"nominal":case"ordinal":case"geojson":return!0;case"quantitative":return!!t.bin;case"temporal":return!1}throw new Error(vR.invalidFieldType(t.type))}(t)}function sB(t,e){const{field:n,bin:r,timeUnit:i,aggregate:o}=t;if("count"===o)return e.countTitle;if(EB(r))return`${n} (binned)`;if(i){return`${n} (${function(t){return NR.reduce((e,n)=>PR(t,n)?[...e,n]:e,[])}(i).join("-")})`}return o?Nz(o)?`${n} for max ${o.argmax}`:Fz(o)?`${n} for min ${o.argmin}`:`${nz(o)} of ${n}`:n}const cB=(t,e)=>{switch(e.fieldTitle){case"plain":return t.field;case"functional":return function(t){const{aggregate:e,bin:n,timeUnit:r,field:i}=t;if(Nz(e))return`${i} for argmax(${e.argmax})`;if(Fz(e))return`${i} for argmin(${e.argmin})`;const o=e||r||EB(n)&&"bin";return o?o.toUpperCase()+"("+i+")":i}(t);default:return sB(t,e)}};let lB=cB;function fB(t){lB=t}function hB(t,e,{allowDisabling:n,includeDefault:r=!0}){const i=(dB(t)||{}).title,o=r?pB(t,e):void 0;return n?uz(i,t.title,o):i||t.title||o}function dB(t){return rB(t)&&t.axis?t.axis:iB(t)&&t.legend?t.legend:(e=t)&&e.header&&t.header?t.header:void 0;var e}function pB(t,e){return lB(t,e)}function gB(t){return QR(t)?t:ZR(t)?t.condition:void 0}function mB(t){return QR(t)?t:ZR(t)?t.condition:void 0}function vB(t,e){if(Object(ct.G)(t)||Object(ct.D)(t)||Object(ct.A)(t)){const n=Object(ct.G)(t)?"string":Object(ct.D)(t)?"number":"boolean";return _R(vR.primitiveChannelDef(e,n,t)),{value:t}}return QR(t)?yB(t,e):ZR(t)?Object.assign({},t,{condition:yB(t.condition,e)}):t}function yB(t,e){const{aggregate:n,timeUnit:r,bin:i}=t;if(n&&!zz(n)&&!Nz(n)&&!Fz(n)){const{aggregate:e}=t,r=b(t,["aggregate"]);_R(vR.invalidAggregate(n)),t=r}if(r&&(t=Object.assign({},t,{timeUnit:qR(r)})),EB(i)&&(t=Object.assign({},t,{bin:bB(i,e)})),jB(i)&&!PN(WT,e)&&_R(`Channel ${e} should not be used with "binned" bin`),KR(t)){const{type:e}=t,r=function(t){if(t)switch(t=t.toLowerCase()){case"q":case WR:return"quantitative";case"t":case GR:return"temporal";case"o":case HR:return"ordinal";case"n":case YR:return"nominal";case VR:return"geojson"}}(e);e!==r&&(t=Object.assign({},t,{type:r})),"quantitative"!==e&&$z(n)&&(_R(vR.invalidFieldTypeForCountAggregate(e,n)),t=Object.assign({},t,{type:"quantitative"}))}else if(!DT(e)){const n=function(t,e){if(t.timeUnit)return"temporal";if(EB(t.bin))return"quantitative";switch(r$(e)){case"continuous":return"quantitative";case"discrete":case"flexible":return"nominal";default:return"quantitative"}}(t,e);_R(vR.missingFieldType(e,n)),t=Object.assign({},t,{type:n})}if(KR(t)){const{compatible:n,warning:r}=function(t,e){const n=t.type;if("geojson"===n&&"shape"!==e)return{compatible:!1,warning:`Channel ${e} should not be used with a geojson data.`};switch(e){case"row":case"column":case"facet":return uB(t)?{compatible:!1,warning:vR.facetChannelShouldBeDiscrete(e)}:xB;case"x":case"y":case"color":case"fill":case"stroke":case"text":case"detail":case"key":case"tooltip":case"href":return xB;case"longitude":case"longitude2":case"latitude":case"latitude2":return n!==WR?{compatible:!1,warning:`Channel ${e} should be used with a quantitative field only, not ${t.type} field.`}:xB;case"opacity":case"fillOpacity":case"strokeOpacity":case"strokeWidth":case"size":case"x2":case"y2":return"nominal"!==n||t.sort?xB:{compatible:!1,warning:`Channel ${e} should not be used with an unsorted discrete field.`};case"shape":return PN(["ordinal","nominal","geojson"],t.type)?xB:{compatible:!1,warning:"Shape channel should be used with only either discrete or geojson data."};case"order":return"nominal"!==t.type||"sort"in t?xB:{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}}throw new Error("channelCompatability not implemented for channel "+e)}(t,e);n||_R(r)}return t}function bB(t,e){return Object(ct.A)(t)?{maxbins:CB(e)}:"binned"===t?{binned:!0}:t.maxbins||t.step?t:Object.assign({},t,{maxbins:CB(e)})}const xB={compatible:!0};function _B(t){const e=rB(t)&&t.axis&&t.axis.formatType||iB(t)&&t.legend&&t.legend.formatType||oB(t)&&t.formatType;return"time"===e||!e&&function(t){return"temporal"===t.type||!!t.timeUnit}(t)}function wB(t,{timeUnit:e,type:n,time:r,undefinedIfExprNotRequired:i}){let o;var a;return OR(t)?o=SR(t,!0):(Object(ct.G)(t)||Object(ct.D)(t))&&(e||"temporal"===n)&&(o=function(t){return!!FR[t]}(e)?SR({[e]:t},!0):function(t){return!!zR[t]}(e)?wB(t,{timeUnit:(a=e,a.substr(3))}):`datetime(${JSON.stringify(t)})`),o?r?`time(${o})`:o:i?void 0:JSON.stringify(t)}function OB(t,e){const{timeUnit:n,type:r}=t;return e.map(t=>{const e=wB(t,{timeUnit:n,type:r,undefinedIfExprNotRequired:!0});return void 0!==e?{signal:e}:t})}function kB(t,e){return EB(t.bin)?e$(e)&&PN(["ordinal","nominal"],t.type):(console.warn("Only use this method with binned field defs"),!1)}function AB(t){return Object(ct.A)(t)&&(t=bB(t,void 0)),"bin"+XN(t).map(e=>KN(`_${e}_${t[e]}`)).join("")}function EB(t){return!0===t||SB(t)&&!t.binned}function jB(t){return"binned"===t||SB(t)&&t.binned}function SB(t){return Object(ct.E)(t)}function CB(t){switch(t){case Pz:case Lz:case tT:case Jz:case Zz:case Qz:case iT:case eT:case nT:case rT:case Kz:return 6;default:return 10}}function MB(t,e){const n=t&&t[e];return!!n&&(Object(ct.z)(n)?LN(n,t=>!!t.field):QR(n)||ZR(n))}function DB(t){return LN(yT,e=>{if(MB(t,e)){const n=t[e];if(Object(ct.z)(n))return LN(n,t=>!!t.aggregate);{const t=gB(n);return t&&!!t.aggregate}}return!1})}function FB(t,e){const n=[],r=[],i=[],o=[],a={};return TB(t,(u,s)=>{if(QR(u)){const{field:c,aggregate:l,timeUnit:f,bin:h}=u,d=b(u,["field","aggregate","timeUnit","bin"]);if(l||f||h){const t=dB(u),p=t&&t.title;let g=aB(u,{forAs:!0});const m=Object.assign({},p?[]:{title:hB(u,e,{allowDisabling:!0})},d,{field:g}),v="x"===s||"y"===s;if(l){let t;if(Nz(l)?(t="argmax",g=aB({aggregate:"argmax",field:l.argmax},{forAs:!0}),m.field=`${g}.${c}`):Fz(l)?(t="argmin",g=aB({aggregate:"argmin",field:l.argmin},{forAs:!0}),m.field=`${g}.${c}`):"boxplot"!==l&&"errorbar"!==l&&"errorband"!==l&&(t=l),t){const e={op:t,as:g};c&&(e.field=c),o.push(e)}}else if(KR(u)&&EB(h)){if(r.push({bin:h,field:c,as:g}),n.push(aB(u,{binSuffix:"end"})),kB(u,s)&&n.push(aB(u,{binSuffix:"range"})),v){const t={field:g+"_end"};a[s+"2"]=t}m.bin="binned",DT(s)||(m.type="quantitative")}else if(f){i.push({timeUnit:f,field:c,as:g});const t=UR(f,e.axis.shortTimeLabels).join(" "),n=KR(u)&&u.type!==GR&&"time";"text"===s||"tooltip"===s?(m.format=m.format||t,n&&(m.formatType=n)):!function(t){return!!UT[t]}(s)?v&&(m.axis=Object.assign({format:t},n?{formatType:n}:{},m.axis)):m.legend=Object.assign({format:t},n?{formatType:n}:{},m.legend)}l||n.push(g),a[s]=m}else n.push(c),a[s]=t[s]}else a[s]=t[s]}),{bins:r,timeUnits:i,aggregate:o,groupby:n,encoding:a}}function NB(t,e){return XN(t).reduce((n,r)=>{if(!CT(r))return _R(vR.invalidEncodingChannel(r)),n;if(!function(t,e,n){const r=n$(e,n);if(!r)return!1;if("binned"===r){const n=t["x2"===e?"x":"y"];return!(!QR(n)||!QR(t[e])||"binned"!==n.bin)}return!0}(t,r,e))return _R(vR.incompatibleChannel(r,e)),n;if("size"===r&&"line"===e){const e=mB(t[r]);if(e&&e.aggregate)return _R(vR.LINE_WITH_VARYING_SIZE),n}if("color"===r&&("fill"in t||"stroke"in t))return _R(vR.droppingColor("encoding",{fill:"fill"in t,stroke:"stroke"in t})),n;const i=t[r];if("detail"===r||"order"===r&&!Object(ct.z)(i)&&!eB(i)||"tooltip"===r&&Object(ct.z)(i))i&&(n[r]=(Object(ct.z)(i)?i:[i]).reduce((t,e)=>(QR(e)?t.push(yB(e,r)):_R(vR.emptyFieldDef(e,r)),t),[]));else{if("tooltip"===r&&null===i)n[r]=null;else if(!QR(i)&&!eB(i)&&!JR(i))return _R(vR.emptyFieldDef(i,r)),n;n[r]=vB(i,r)}return n},{})}function zB(t){const e=[];for(const n of XN(t))if(MB(t,n)){const r=t[n];(Object(ct.z)(r)?r:[r]).forEach(t=>{QR(t)?e.push(t):ZR(t)&&e.push(t.condition)})}return e}function TB(t,e,n){if(t)for(const r of XN(t)){const i=t[r];Object(ct.z)(i)?i.forEach(t=>{e.call(n,t,r)}):e.call(n,i,r)}}function $B(t,e,n,r){return t?XN(t).reduce((n,i)=>{const o=t[i];return Object(ct.z)(o)?o.reduce((t,n)=>e.call(r,t,n,i),n):e.call(r,n,o,i)},n):n}function RB(t,e,n,r=!0){return{tooltip:[...t.map(({fieldPrefix:t,titlePrefix:n})=>({field:t+e.field,type:e.type,title:n+(r?" of "+e.field:"")})),...zB(n)]}}function BB(t,e,n,r,i){const{scale:o,axis:a}=n;return({partName:u,mark:s,positionPrefix:c,endPositionPrefix:l,extraEncoding:f={}})=>{const h=a&&void 0!==a.title?void 0:void 0!==n.title?n.title:n.field;return PB(t,u,i,{mark:s,encoding:Object.assign({[e]:Object.assign({field:c+"_"+n.field,type:n.type},h?{title:h}:{},o?{scale:o}:{},a?{axis:a}:{})},Object(ct.G)(l)?{[e+"2"]:{field:l+"_"+n.field,type:n.type}}:{},r,f)})}}function PB(t,e,n,r){const{clip:i,color:o,opacity:a}=t,u=t.type;return t[e]||void 0===t[e]&&n[e]?[Object.assign({},r,{mark:Object.assign({},n[e],i?{clip:i}:{},o?{color:o}:{},a?{opacity:a}:{},Ez(r.mark)?r.mark:{type:r.mark},{style:`${u}-${e}`},Object(ct.A)(t[e])?{}:t[e])})]:[]}function LB(t,e,n){const{encoding:r}=t,i="vertical"===e?"y":"x",o=r[i],a=r[i+"2"],u=r[i+"Error"],s=r[i+"Error2"];return{continuousAxisChannelDef:UB(o,n),continuousAxisChannelDef2:UB(a,n),continuousAxisChannelDefError:UB(u,n),continuousAxisChannelDefError2:UB(s,n),continuousAxis:i}}function UB(t,e){if(t&&t.aggregate){const{aggregate:n}=t,r=b(t,["aggregate"]);return n!==e&&_R(vR.errorBarContinuousAxisHasCustomizedAggregate(n,e)),r}return t}function qB(t,e){const{mark:n,encoding:r}=t;if(QR(r.x)&&uB(r.x)){if(QR(r.y)&&uB(r.y)){if(void 0===r.x.aggregate&&r.y.aggregate===e)return"vertical";if(void 0===r.y.aggregate&&r.x.aggregate===e)return"horizontal";if(r.x.aggregate===e&&r.y.aggregate===e)throw new Error("Both x and y cannot have aggregate");return Ez(n)&&n.orient?n.orient:"vertical"}return"horizontal"}if(QR(r.y)&&uB(r.y))return"vertical";throw new Error("Need a valid continuous axis for "+e+"s")}const IB="boxplot",WB=XN({box:1,median:1,outliers:1,rule:1,ticks:1}),HB=new Mz(IB,YB);function GB(t){return Object(ct.D)(t)?"tukey":t}function YB(t,{config:e}){const{mark:n,encoding:r,selection:i,projection:o}=t,a=b(t,["mark","encoding","selection","projection"]),u=Ez(n)?n:{type:n};i&&_R(vR.selectionNotSupported("boxplot"));const s=u.extent||e.boxplot.extent,c=uz(u.size,e.boxplot.size),l=GB(s),{transform:f,continuousAxisChannelDef:h,continuousAxis:d,groupby:p,aggregate:g,encodingWithoutContinuousAxis:m,ticksOrient:v,customTooltipWithoutAggregatedField:y}=function(t,e,n){const r=qB(t,IB),{continuousAxisChannelDef:i,continuousAxis:o}=LB(t,r,IB),a=i.field,u=GB(e),s=[...VB(a),{op:"median",field:a,as:"mid_box_"+a},{op:"min",field:a,as:("min-max"===u?"lower_whisker_":"min_")+a},{op:"max",field:a,as:("min-max"===u?"upper_whisker_":"max_")+a}],c="min-max"===u||"tukey"===u?[]:[{calculate:`datum["upper_box_${a}"] - datum["lower_box_${a}"]`,as:"iqr_"+a},{calculate:`min(datum["upper_box_${a}"] + datum["iqr_${a}"] * ${e}, datum["max_${a}"])`,as:"upper_whisker_"+a},{calculate:`max(datum["lower_box_${a}"] - datum["iqr_${a}"] * ${e}, datum["min_${a}"])`,as:"lower_whisker_"+a}],l=t.encoding,f=o,h=(l[f],b(l,["symbol"==typeof f?f:f+""])),{customTooltipWithoutAggregatedField:d,filteredEncoding:p}=function(t){const{tooltip:e}=t,n=b(t,["tooltip"]);if(!e)return{filteredEncoding:t};let r,i;return Object(ct.z)(e)?(e.forEach(t=>{t.aggregate?(r||(r=[]),r.push(t)):(i||(i=[]),i.push(t))}),r&&(n.tooltip=r)):e.aggregate?n.tooltip=e:i=e,Object(ct.z)(i)&&1===i.length&&(i=i[0]),{customTooltipWithoutAggregatedField:i,filteredEncoding:n}}(h),{bins:g,timeUnits:m,aggregate:v,groupby:y,encoding:x}=FB(p,n),_="vertical"===r?"horizontal":"vertical";return{transform:[...g,...m,{aggregate:[...v,...s],groupby:y},...c],groupby:y,aggregate:v,continuousAxisChannelDef:i,continuousAxis:o,encodingWithoutContinuousAxis:x,ticksOrient:_,customTooltipWithoutAggregatedField:d}}(t,s,e),{color:x,size:_}=m,w=b(m,["color","size"]),O=t=>BB(u,d,h,t,e.boxplot),k=O(w),A=O(m),E=O(Object.assign({},w,_?{size:_}:{})),j=RB([{fieldPrefix:"min-max"===l?"upper_whisker_":"max_",titlePrefix:"Max"},{fieldPrefix:"upper_box_",titlePrefix:"Q3"},{fieldPrefix:"mid_box_",titlePrefix:"Median"},{fieldPrefix:"lower_box_",titlePrefix:"Q1"},{fieldPrefix:"min-max"===l?"lower_whisker_":"min_",titlePrefix:"Min"}],h,m),S={type:"tick",color:"black",opacity:1,orient:v},C="min-max"===l?j:RB([{fieldPrefix:"upper_whisker_",titlePrefix:"Upper Whisker"},{fieldPrefix:"lower_whisker_",titlePrefix:"Lower Whisker"}],h,m),M=[...k({partName:"rule",mark:"rule",positionPrefix:"lower_whisker",endPositionPrefix:"lower_box",extraEncoding:C}),...k({partName:"rule",mark:"rule",positionPrefix:"upper_box",endPositionPrefix:"upper_whisker",extraEncoding:C}),...k({partName:"ticks",mark:S,positionPrefix:"lower_whisker",extraEncoding:C}),...k({partName:"ticks",mark:S,positionPrefix:"upper_whisker",extraEncoding:C})],D=[..."tukey"!==l?M:[],...A({partName:"box",mark:Object.assign({type:"bar"},c?{size:c}:{}),positionPrefix:"lower_box",endPositionPrefix:"upper_box",extraEncoding:j}),...E({partName:"median",mark:Object.assign({type:"tick"},Object(ct.E)(e.boxplot.median)&&e.boxplot.median.color?{color:e.boxplot.median.color}:{},c?{size:c}:{},{orient:v}),positionPrefix:"mid_box",extraEncoding:j})];let F;if("min-max"!==l){const t=`datum["lower_box_${h.field}"]`,n=`datum["upper_box_${h.field}"]`,r=`(${n} - ${t})`,i=`${t} - ${s} * ${r}`,o=`${n} + ${s} * ${r}`,a=`datum["${h.field}"]`,c={joinaggregate:VB(h.field),groupby:p};let f=void 0;"tukey"===l&&(f={transform:[{filter:`(${i} <= ${a}) && (${a} <= ${o})`},{aggregate:[{op:"min",field:h.field,as:"lower_whisker_"+h.field},{op:"max",field:h.field,as:"upper_whisker_"+h.field},{op:"min",field:"lower_box_"+h.field,as:"lower_box_"+h.field},{op:"max",field:"upper_box_"+h.field,as:"upper_box_"+h.field},...g],groupby:p}],layer:M});const{tooltip:m}=w,v=b(w,["tooltip"]),x=PB(u,"outliers",e.boxplot,{transform:[{filter:`(${a} < ${i}) || (${a} > ${o})`}],mark:"point",encoding:Object.assign({[d]:{field:h.field,type:h.type}},v,y?{tooltip:y}:{})})[0];x&&f?F={transform:[c],layer:[x,f]}:x?(F=x).transform.unshift(c):f&&(F=f).transform.unshift(c)}return F?Object.assign({},a,{layer:[...F?[F]:[],{transform:f,layer:D}]}):Object.assign({},a,{transform:(a.transform||[]).concat(f),layer:D})}function VB(t){return[{op:"q1",field:t,as:"lower_box_"+t},{op:"q3",field:t,as:"upper_box_"+t}]}const XB="errorbar",JB=XN({ticks:1,rule:1}),ZB=new Mz(XB,QB);function QB(t,{config:e}){const{transform:n,continuousAxisChannelDef:r,continuousAxis:i,encodingWithoutContinuousAxis:o,ticksOrient:a,markDef:u,outerSpec:s,tooltipEncoding:c}=tP(t,XB,e),l=BB(u,i,r,o,e.errorbar),f={type:"tick",orient:a};return Object.assign({},s,{transform:n,layer:[...l({partName:"ticks",mark:f,positionPrefix:"lower",extraEncoding:c}),...l({partName:"ticks",mark:f,positionPrefix:"upper",extraEncoding:c}),...l({partName:"rule",mark:"rule",positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:c})]})}function KB(t,e){const{encoding:n}=t;if(function(t){return(QR(t.x)||QR(t.y))&&!QR(t.x2)&&!QR(t.y2)&&!QR(t.xError)&&!QR(t.xError2)&&!QR(t.yError)&&!QR(t.yError2)}(n))return{orient:qB(t,e),inputType:"raw"};const r=function(t){return QR(t.x2)||QR(t.y2)}(n),i=function(t){return QR(t.xError)||QR(t.xError2)||QR(t.yError)||QR(t.yError2)}(n),o=n.x,a=n.y;if(r){if(i)throw new Error(e+" cannot be both type aggregated-upper-lower and aggregated-error");const t=n.x2,r=n.y2;if(QR(t)&&QR(r))throw new Error(e+" cannot have both x2 and y2");if(QR(t)){if(QR(o)&&uB(o))return{orient:"horizontal",inputType:"aggregated-upper-lower"};throw new Error("Both x and x2 have to be quantitative in "+e)}if(QR(r)){if(QR(a)&&uB(a))return{orient:"vertical",inputType:"aggregated-upper-lower"};throw new Error("Both y and y2 have to be quantitative in "+e)}throw new Error("No ranged axis")}{const t=n.xError,r=n.xError2,i=n.yError,u=n.yError2;if(QR(r)&&!QR(t))throw new Error(e+" cannot have xError2 without xError");if(QR(u)&&!QR(i))throw new Error(e+" cannot have yError2 without yError");if(QR(t)&&QR(i))throw new Error(e+" cannot have both xError and yError with both are quantiative");if(QR(t)){if(QR(o)&&uB(o))return{orient:"horizontal",inputType:"aggregated-error"};throw new Error("All x, xError, and xError2 (if exist) have to be quantitative")}if(QR(i)){if(QR(a)&&uB(a))return{orient:"vertical",inputType:"aggregated-error"};throw new Error("All y, yError, and yError2 (if exist) have to be quantitative")}throw new Error("No ranged axis")}}function tP(t,e,n){const{mark:r,encoding:i,selection:o,projection:a}=t,u=b(t,["mark","encoding","selection","projection"]),s=Ez(r)?r:{type:r};o&&_R(vR.selectionNotSupported(e));const{orient:c,inputType:l}=KB(t,e),{continuousAxisChannelDef:f,continuousAxisChannelDef2:h,continuousAxisChannelDefError:d,continuousAxisChannelDefError2:p,continuousAxis:g}=LB(t,c,e),{errorBarSpecificAggregate:m,postAggregateCalculates:v,tooltipSummary:y,tooltipTitleWithFieldName:x}=function(t,e,n,r,i,o,a,u){let s=[],c=[];const l=e.field;let f,h=!1;if("raw"===o){const e=t.center?t.center:t.extent?"iqr"===t.extent?"median":"mean":u.errorbar.center,n=t.extent?t.extent:"mean"===e?"stderr":"iqr";if("median"===e!=("iqr"===n)&&_R(vR.errorBarCenterIsUsedWithWrongExtent(e,n,a)),"stderr"===n||"stdev"===n)s=[{op:n,field:l,as:"extent_"+l},{op:e,field:l,as:"center_"+l}],c=[{calculate:`datum["center_${l}"] + datum["extent_${l}"]`,as:"upper_"+l},{calculate:`datum["center_${l}"] - datum["extent_${l}"]`,as:"lower_"+l}],f=[{fieldPrefix:"center_",titlePrefix:nz(e)},{fieldPrefix:"upper_",titlePrefix:eP(e,n,"+")},{fieldPrefix:"lower_",titlePrefix:eP(e,n,"-")}],h=!0;else{let e,r,i;t.center&&t.extent&&_R(vR.errorBarCenterIsNotNeeded(t.extent,a)),"ci"===n?(e="mean",r="ci0",i="ci1"):(e="median",r="q1",i="q3"),s=[{op:r,field:l,as:"lower_"+l},{op:i,field:l,as:"upper_"+l},{op:e,field:l,as:"center_"+l}],f=[{fieldPrefix:"upper_",titlePrefix:hB({field:l,aggregate:i,type:"quantitative"},u,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:hB({field:l,aggregate:r,type:"quantitative"},u,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:hB({field:l,aggregate:e,type:"quantitative"},u,{allowDisabling:!1})}]}}else{(t.center||t.extent)&&_R(vR.errorBarCenterAndExtentAreNotNeeded(t.center,t.extent)),"aggregated-upper-lower"===o?(f=[],c=[{calculate:`datum["${n.field}"]`,as:"upper_"+l},{calculate:`datum["${l}"]`,as:"lower_"+l}]):"aggregated-error"===o&&(f=[{fieldPrefix:"",titlePrefix:l}],c=[{calculate:`datum["${l}"] + datum["${r.field}"]`,as:"upper_"+l}],i?c.push({calculate:`datum["${l}"] + datum["${i.field}"]`,as:"lower_"+l}):c.push({calculate:`datum["${l}"] - datum["${r.field}"]`,as:"lower_"+l}));for(const t of c)f.push({fieldPrefix:t.as.substring(0,6),titlePrefix:t.calculate.replace(new RegExp('datum\\[\\"',"g"),"").replace(new RegExp('\\"\\]',"g"),"")})}return{postAggregateCalculates:c,errorBarSpecificAggregate:s,tooltipSummary:f,tooltipTitleWithFieldName:h}}(s,f,h,d,p,l,e,n),_=g,w=(i[_],"x"===g?"x2":"y2"),O=(i[w],"x"===g?"xError":"yError"),k=(i[O],"x"===g?"xError2":"yError2"),A=(i[k],b(i,["symbol"==typeof _?_:_+"","symbol"==typeof w?w:w+"","symbol"==typeof O?O:O+"","symbol"==typeof k?k:k+""])),{bins:E,timeUnits:j,aggregate:S,groupby:C,encoding:M}=FB(A,n),D=[...S,...m],F="raw"!==l?[]:C,N=RB(y,f,M,x);return{transform:[...u.transform||[],...E,...j,...D.length?[{aggregate:D,groupby:F}]:[],...v],groupby:F,continuousAxisChannelDef:f,continuousAxis:g,encodingWithoutContinuousAxis:M,ticksOrient:"vertical"===c?"horizontal":"vertical",markDef:s,outerSpec:u,tooltipEncoding:N}}function eP(t,e,n){return nz(t)+" "+n+" "+e}const nP="errorband",rP=XN({band:1,borders:1}),iP=new Mz(nP,oP);function oP(t,{config:e}){const{transform:n,continuousAxisChannelDef:r,continuousAxis:i,encodingWithoutContinuousAxis:o,markDef:a,outerSpec:u,tooltipEncoding:s}=tP(t,nP,e),c=a,l=BB(c,i,r,o,e.errorband),f=void 0!==t.encoding.x&&void 0!==t.encoding.y;let h={type:f?"area":"rect"},d={type:f?"line":"rule"};const p=Object.assign({},c.interpolate?{interpolate:c.interpolate}:{},c.tension&&c.interpolate?{interpolate:c.tension}:{});return f?(h=Object.assign({},h,p),d=Object.assign({},d,p)):c.interpolate?_R(vR.errorBand1DNotSupport("interpolate")):c.tension&&_R(vR.errorBand1DNotSupport("tension")),Object.assign({},u,{transform:n,layer:[...l({partName:"band",mark:h,positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:s}),...l({partName:"borders",mark:d,positionPrefix:"lower",extraEncoding:s}),...l({partName:"borders",mark:d,positionPrefix:"upper",extraEncoding:s})]})}const aP={};function uP(t,e,n){const r=new Mz(t,e);aP[t]={normalizer:r,parts:n}}uP(IB,YB,WB),uP(XB,QB,JB),uP(nP,oP,rP);const sP=["shortTimeLabels"],cP=["gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength"],lP={clipHeight:1,columnPadding:1,columns:1,cornerRadius:1,direction:1,fillColor:1,format:1,formatType:1,gradientLength:1,gradientOpacity:1,gradientStrokeColor:1,gradientStrokeWidth:1,gradientThickness:1,gridAlign:1,labelAlign:1,labelBaseline:1,labelColor:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labelSeparation:1,legendX:1,legendY:1,offset:1,orient:1,padding:1,rowPadding:1,strokeColor:1,symbolDash:1,symbolDashOffset:1,symbolFillColor:1,symbolOffset:1,symbolOpacity:1,symbolSize:1,symbolStrokeColor:1,symbolStrokeWidth:1,symbolType:1,tickCount:1,tickMinStep:1,title:1,titleAlign:1,titleAnchor:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1},fP=Object.assign({},lP,{opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,encode:1}),hP=ZN(lP),dP=ZN(fP);var pP;!function(t){t.LINEAR="linear",t.LOG="log",t.POW="pow",t.SQRT="sqrt",t.SYMLOG="symlog",t.TIME="time",t.UTC="utc",t.QUANTILE="quantile",t.QUANTIZE="quantize",t.THRESHOLD="threshold",t.BIN_ORDINAL="bin-ordinal",t.ORDINAL="ordinal",t.POINT="point",t.BAND="band"}(pP||(pP={}));const gP={linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"},mP=XN(gP);function vP(t,e){const n=gP[t],r=gP[e];return n===r||"ordinal-position"===n&&"time"===r||"ordinal-position"===r&&"time"===n}const yP={linear:0,log:1,pow:1,sqrt:1,symlog:1,time:0,utc:0,point:10,band:11,ordinal:0,"bin-ordinal":0,quantile:0,quantize:0,threshold:0};function bP(t){return yP[t]}const xP=["linear","log","pow","sqrt","symlog","time","utc"],_P=Object(ct.ab)(xP),wP=Object(ct.ab)(["quantile","quantize","threshold"]),OP=xP.concat(["quantile","quantize","threshold"]),kP=Object(ct.ab)(OP),AP=Object(ct.ab)(["ordinal","bin-ordinal","point","band"]);function EP(t){return t in AP}function jP(t){return t in kP}function SP(t){return t in _P}function CP(t){return t in wP}const MP={textXRangeStep:90,rangeStep:20,pointPadding:.5,barBandPaddingInner:.1,rectBandPaddingInner:0,minBandSize:2,minFontSize:8,maxFontSize:40,minOpacity:.3,maxOpacity:.8,minSize:9,minStrokeWidth:1,maxStrokeWidth:4,quantileCount:4,quantizeCount:4};function DP(t){return t&&t.selection}const FP={type:1,domain:1,range:1,rangeStep:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1},{type:NP,domain:zP,range:TP,rangeStep:$P,scheme:RP}=(ZN(FP),FP),BP=ZN(b(FP,["type","domain","range","rangeStep","scheme"]));!function(){const t={};for(const e of yT)for(const n of XN(IR))for(const r of mP){const i=IP(e,n);qP(e,r)&&UP(r,n)&&(t[i]=t[i]||[],t[i].push(r))}}();function PP(t,e){switch(e){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!PN(["point","band","identity"],t);case"bins":return!PN(["point","band","identity","ordinal"],t);case"round":return SP(t)||"band"===t||"point"===t;case"padding":return SP(t)||PN(["point","band"],t);case"paddingOuter":case"rangeStep":return PN(["point","band"],t);case"paddingInner":return"band"===t;case"clamp":return SP(t);case"nice":return SP(t)||"quantize"===t||"threshold"===t;case"exponent":return"pow"===t;case"base":return"log"===t;case"constant":return"symlog"===t;case"zero":return jP(t)&&!PN(["log","time","utc","threshold","quantile"],t)}throw new Error(`Invalid scale property ${e}.`)}function LP(t,e){switch(e){case"interpolate":case"scheme":return pT(t)?void 0:vR.cannotUseScalePropertyWithNonColor(t);case"type":case"bins":case"domain":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeStep":case"reverse":case"round":case"clamp":case"zero":return}throw new Error(`Invalid scale property "${e}".`)}function UP(t,e){return PN([HR,YR],e)?void 0===t||EP(t):e===GR?PN([pP.TIME,pP.UTC,void 0],t):e!==WR||PN([pP.LOG,pP.POW,pP.SQRT,pP.SYMLOG,pP.QUANTILE,pP.QUANTIZE,pP.THRESHOLD,pP.LINEAR,void 0],t)}function qP(t,e){switch(t){case qz:case Iz:return SP(e)||PN(["band","point"],e);case tT:case iT:case eT:case nT:case rT:return SP(e)||CP(e)||PN(["band","point"],e);case Jz:case Zz:case Qz:return"band"!==e;case Kz:return"ordinal"===e}return!1}function IP(t,e){return t+"_"+e}const WP="_vgsid_";function HP(t){return"interval"===t.type}const GP={single:{on:"click",fields:[WP],resolve:"global",empty:"all",clear:"dblclick"},multi:{on:"click",fields:[WP],toggle:"event.shiftKey",resolve:"global",empty:"all",clear:"dblclick"},interval:{on:"[mousedown, window:mouseup] > window:mousemove!",encodings:["x","y"],translate:"[mousedown, window:mouseup] > window:mousemove!",zoom:"wheel!",mark:{fill:"#333",fillOpacity:.125,stroke:"white"},resolve:"global",clear:"dblclick"}};function YP(t){return void 0!==t.concat}function VP(t){return void 0!==t.vconcat}function XP(t){return void 0!==t.hconcat}function JP(t){return void 0!==t.repeat}const ZP=ZN({align:1,bounds:1,center:1,columns:1,spacing:1});function QP(t){const{anchor:e,frame:n,offset:r,orient:i,color:o}=t,a=b(t,["anchor","frame","offset","orient","color"]);return{mark:Object.assign({},a,o?{fill:o}:{}),nonMark:Object.assign({},e?{anchor:e}:{},n?{frame:n}:{},r?{offset:r}:{},i?{orient:i}:{})}}const KP={padding:5,timeFormat:"%b %d, %Y",countTitle:"Count of Records",invalidValues:"filter",view:{width:200,height:200},mark:{color:"#4c78a8",tooltip:{content:"encoding"}},area:{},bar:{binSpacing:1,continuousBandSize:5},circle:{},geoshape:{},line:{},point:{},rect:{},rule:{color:"black"},square:{},text:{color:"black"},tick:{thickness:1},trail:{},boxplot:{size:14,extent:1.5,box:{},median:{color:"white"},outliers:{},rule:{},ticks:null},errorbar:{center:"mean",rule:!0,ticks:!1},errorband:{band:{opacity:.3},borders:!1},scale:MP,projection:{},axis:{},axisX:{},axisY:{},axisLeft:{},axisRight:{},axisTop:{},axisBottom:{},axisBand:{},legend:{gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64},header:{titlePadding:10,labelPadding:10},headerColumn:{},headerRow:{},headerFacet:{},selection:GP,style:{},title:{},facet:{spacing:20},repeat:{spacing:20},concat:{spacing:20}};function tL(t){return IN(NN(KP),t)}const eL=["view",...Az],nL=["padding","facet","concat","repeat","numberFormat","timeFormat","countTitle","header","stack","scale","selection","invalidValues","overlay"],rL=Object.assign({view:["width","height"]},{area:["line","point"],bar:["binSpacing","continuousBandSize","discreteBandSize"],line:["point"],text:["shortTimeLabels"],tick:["bandSize","thickness"]});function iL(t){t=NN(t);for(const e of nL)delete t[e];if(t.axis)for(const e of sP)delete t.axis[e];if(t.legend){for(const e of sP)delete t.legend[e];for(const e of cP)delete t.legend[e]}if(t.mark)for(const e of Sz)delete t.mark[e];for(const e of eL){for(const n of Sz)delete t[e][n];const n=rL[e];if(n)for(const r of n)delete t[e][r];oL(t,e)}for(const e of XN(aP))delete t[e];oL(t,"title","group-title");for(const e in t)Object(ct.E)(t[e])&&0===XN(t[e]).length&&delete t[e];return XN(t).length>0?t:void 0}function oL(t,e,n,r){const i="title"===e?QP(t.title).mark:r?t[e][r]:t[e];"view"===e&&(n="cell");const o=Object.assign({},i,t.style[e]);XN(o).length>0&&(t.style[n||e]=o),r||delete t[e]}function aL(t){return void 0!==t.layer}class uL{map(t,e){return MR(t)?this.mapFacet(t,e):JP(t)?this.mapRepeat(t,e):XP(t)?this.mapHConcat(t,e):VP(t)?this.mapVConcat(t,e):YP(t)?this.mapConcat(t,e):this.mapLayerOrUnit(t,e)}mapLayerOrUnit(t,e){if(aL(t))return this.mapLayer(t,e);if(Cz(t))return this.mapUnit(t,e);throw new Error(vR.INVALID_SPEC)}mapLayer(t,e){return Object.assign({},t,{layer:t.layer.map(t=>this.mapLayerOrUnit(t,e))})}mapHConcat(t,e){return Object.assign({},t,{hconcat:t.hconcat.map(t=>this.map(t,e))})}mapVConcat(t,e){return Object.assign({},t,{vconcat:t.vconcat.map(t=>this.map(t,e))})}mapConcat(t,e){const{concat:n}=t,r=b(t,["concat"]);return Object.assign({},r,{concat:n.map(t=>this.map(t,e))})}mapFacet(t,e){return Object.assign({},t,{spec:this.map(t.spec,e)})}mapRepeat(t,e){return Object.assign({},t,{spec:this.map(t.spec,e)})}}const sL={zero:1,center:1,normalize:1};const cL=[hz,fz,mz,pz,xz,_z,dz,vz,yz],lL=[hz,fz];function fL(t,e,n,r={}){const i=Ez(t)?t.type:t;if(!PN(cL,i))return null;const o=function(t){const e=t.x,n=t.y;if(QR(e)&&QR(n))if("quantitative"===e.type&&"quantitative"===n.type){if(e.stack)return"x";if(n.stack)return"y";if(!!e.aggregate!=!!n.aggregate)return e.aggregate?"x":"y"}else{if("quantitative"===e.type)return"x";if("quantitative"===n.type)return"y"}else{if(QR(e)&&"quantitative"===e.type)return"x";if(QR(n)&&"quantitative"===n.type)return"y"}}(e);if(!o)return null;const a=e[o],u=tB(a)?aB(a,{}):void 0,s="x"===o?"y":"x",c=e[s],l=tB(c)?aB(c,{}):void 0,f=qT.reduce((t,n)=>{if("tooltip"!==n&&MB(e,n)){const r=e[n];(Object(ct.z)(r)?r:[r]).forEach(e=>{const r=mB(e);if(r.aggregate)return;const i=tB(r)?aB(r,{}):void 0;(!i||i!==l&&i!==u)&&t.push({channel:n,fieldDef:r})})}return t},[]);if(0===f.length)return null;let h;if(!(h=void 0!==a.stack?Object(ct.A)(a.stack)?a.stack?"zero":null:a.stack:PN(lL,i)?uz(n,"zero"):n)||!sL[h])return null;if(a.scale&&a.scale.type&&a.scale.type!==pP.LINEAR){if(r.disallowNonLinearStack)return null;_R(vR.cannotStackNonLinearScale(a.scale.type))}return MB(e,o===qz?Wz:Hz)?(void 0!==a.stack&&_R(vR.cannotStackRangedMark(o)),null):(a.aggregate&&!PN(Rz,a.aggregate)&&_R(vR.stackNonSummativeAggregate(a.aggregate)),{groupbyChannel:c?s:void 0,fieldChannel:o,impute:kz(i),stackBy:f,offset:h})}function hL(t){const{point:e,line:n}=t,r=b(t,["point","line"]);return XN(r).length>1?r:r.type}function dL(t){for(const e of["line","area","rule","trail"])t[e]&&(t=Object.assign({},t,{[e]:TN(t[e],["point","line"])}));return t}function pL(t,e={},n){return"transparent"===t.point?{opacity:0}:t.point?Object(ct.E)(t.point)?t.point:{}:void 0!==t.point?null:e.point||n.shape?Object(ct.E)(e.point)?e.point:{}:void 0}function gL(t,e={}){return t.line?!0===t.line?{}:t.line:void 0!==t.line?null:e.line?!0===e.line?{}:e.line:void 0}class mL{constructor(){this.name="path-overlay"}hasMatchingType(t,e){if(Cz(t)){const{mark:n,encoding:r}=t,i=Ez(n)?n:{type:n};switch(i.type){case"line":case"rule":case"trail":return!!pL(i,e[i.type],r);case"area":return!!pL(i,e[i.type],r)||!!gL(i,e[i.type])}}return!1}run(t,e,n){const{config:r}=e,{selection:i,projection:o,encoding:a,mark:u}=t,s=b(t,["selection","projection","encoding","mark"]),c=Ez(u)?u:{type:u},l=pL(c,r[c.type],a),f="area"===c.type&&gL(c,r[c.type]),h=[Object.assign({},i?{selection:i}:{},{mark:hL(Object.assign({},c,"area"===c.type?{opacity:.7}:{})),encoding:TN(a,["shape"])})],d=fL(c,a,r?r.stack:void 0);let p=a;if(d){const{fieldChannel:t,offset:e}=d;p=Object.assign({},a,{[t]:Object.assign({},a[t],e?{stack:e}:{})})}return f&&h.push(Object.assign({},o?{projection:o}:{},{mark:Object.assign({type:"line"},zN(c,["clip","interpolate","tension"]),f),encoding:p})),l&&h.push(Object.assign({},o?{projection:o}:{},{mark:Object.assign({type:"point",opacity:1,filled:!0},zN(c,["clip"]),l),encoding:p})),n(Object.assign({},s,{layer:h}),Object.assign({},e,{config:dL(r)}))}}class vL{constructor(){this.name="RuleForRangedLine"}hasMatchingType(t){if(Cz(t)){const{encoding:e,mark:n}=t;if("line"===n)for(const t of MT){const n=e[FT(t)];if(e[t]&&QR(n)&&"binned"!==n.bin)return!0}}return!1}run(t,e,n){const{encoding:r}=t;return _R(vR.lineWithRange(!!r.x2,!!r.y2)),n(Object.assign({},t,{mark:"rule"}),e)}}function yL(t){const{parentEncoding:e,encoding:n}=t;if(e&&n){const t=XN(e).reduce((t,e)=>(n[e]&&t.push(e),t),[]);t.length>0&&_R(vR.encodingOverridden(t))}const r=Object.assign({},e||{},n||{});return XN(r).length>0?r:void 0}function bL(t){const{parentProjection:e,projection:n}=t;return e&&n&&_R(vR.projectionOverridden({parentProjection:e,projection:n})),n||e}function xL(t,e){return void 0===e&&(e=tL(t.config)),function(t,e={}){return _L.map(t,{config:e})}(t,e)}const _L=new class extends uL{constructor(){super(...arguments),this.nonFacetUnitNormalizers=[HB,ZB,iP,new mL,new vL]}map(t,e){if(Cz(t)){const n=MB(t.encoding,Pz),r=MB(t.encoding,Lz),i=MB(t.encoding,Uz);if(n||r||i)return this.mapFacetedUnit(t,e)}return super.map(t,e)}mapUnit(t,e){const{parentEncoding:n,parentProjection:r}=e;if(n||r)return this.mapUnitWithParentEncodingOrProjection(t,e);const i=this.mapLayerOrUnit.bind(this);for(const n of this.nonFacetUnitNormalizers)if(n.hasMatchingType(t,e.config))return n.run(t,e,i);return t}mapRepeat(t,e){const{repeat:n}=t;return!Object(ct.z)(n)&&t.columns&&(t=TN(t,["columns"]),_R(vR.columnsNotSupportByRowCol("repeat"))),Object.assign({},t,{spec:this.map(t.spec,e)})}mapFacet(t,e){const{facet:n}=t;return CR(n)&&t.columns&&(t=TN(t,["columns"]),_R(vR.columnsNotSupportByRowCol("facet"))),super.mapFacet(t,e)}mapUnitWithParentEncodingOrProjection(t,e){const{encoding:n,projection:r}=t,{parentEncoding:i,parentProjection:o,config:a}=e,u=bL({parentProjection:o,projection:r}),s=yL({parentEncoding:i,encoding:n});return this.mapUnit(Object.assign({},t,u?{projection:u}:{},s?{encoding:s}:{}),{config:a})}mapFacetedUnit(t,e){const n=t.encoding,{row:r,column:i,facet:o}=n,a=b(n,["row","column","facet"]),{mark:u,width:s,projection:c,height:l,selection:f,encoding:h}=t,d=b(t,["mark","width","projection","height","selection","encoding"]);return o&&(r||i)&&_R(vR.facetChannelDropped([...r?[Pz]:[],...i?[Lz]:[]])),this.mapFacet(Object.assign({},d,{facet:r||i?Object.assign({},r?{row:r}:{},i?{column:i}:{}):o,spec:Object.assign({},c?{projection:c}:{},{mark:u},s?{width:s}:{},l?{height:l}:{},{encoding:a},f?{selection:f}:{})}),e)}mapLayer(t,e){var{parentEncoding:n,parentProjection:r}=e,i=b(e,["parentEncoding","parentProjection"]);const{encoding:o,projection:a}=t,u=b(t,["encoding","projection"]),s=Object.assign({},i,{parentEncoding:yL({parentEncoding:n,encoding:o}),parentProjection:bL({parentProjection:r,projection:a})});return super.mapLayer(u,s)}};function wL(t){return Object(ct.G)(t)?{type:t}:t||{}}const OL=["background","padding"];function kL(t){return OL.reduce((e,n)=>(t&&void 0!==t[n]&&(e[n]=t[n]),e),{})}function AL(t){return!!t.url}function EL(t){return!!t.values}function jL(t){return!(!t.name||AL(t)||EL(t)||SL(t))}function SL(t){return t&&(CL(t)||ML(t)||DL(t))}function CL(t){return!!t.sequence}function ML(t){return!!t.sphere}function DL(t){return!!t.graticule}const FL="main",NL="raw";function zL(t){return t&&!!t.field&&void 0!==t.equal}function TL(t){return t&&!!t.field&&void 0!==t.lt}function $L(t){return t&&!!t.field&&void 0!==t.lte}function RL(t){return t&&!!t.field&&void 0!==t.gt}function BL(t){return t&&!!t.field&&void 0!==t.gte}function PL(t){return!!(t&&t.field&&Object(ct.z)(t.range)&&2===t.range.length)}function LL(t){return t&&!!t.field&&(Object(ct.z)(t.oneOf)||Object(ct.z)(t.in))}function UL(t){return LL(t)||zL(t)||PL(t)||TL(t)||RL(t)||$L(t)||BL(t)}function qL(t,e){return wB(t,{timeUnit:e,time:!0})}function IL(t,e=!0){const{field:n,timeUnit:r}=t,i=r?"time("+LR(r,n)+")":aB(t,{expr:"datum"});if(zL(t))return i+"==="+qL(t.equal,r);if(TL(t)){return`${i}<${qL(t.lt,r)}`}if(RL(t)){return`${i}>${qL(t.gt,r)}`}if($L(t)){return`${i}<=${qL(t.lte,r)}`}if(BL(t)){return`${i}>=${qL(t.gte,r)}`}if(LL(t))return`indexof([${function(t,e){return t.map(t=>qL(t,e))}(t.oneOf,r).join(",")}], ${i}) !== -1`;if(function(t){return t&&!!t.field&&void 0!==t.valid}(t))return t.valid?`${i}!==null&&!isNaN(${i})`:`${i}===null||isNaN(${i})`;if(PL(t)){const n=t.range[0],o=t.range[1];if(null!==n&&null!==o&&e)return"inrange("+i+", ["+qL(n,r)+", "+qL(o,r)+"])";const a=[];return null!==n&&a.push(`${i} >= ${qL(n,r)}`),null!==o&&a.push(`${i} <= ${qL(o,r)}`),a.length>0?a.join(" && "):"true"}throw new Error(`Invalid field predicate: ${JSON.stringify(t)}`)}function WL(t){return UL(t)&&t.timeUnit?Object.assign({},t,{timeUnit:qR(t.timeUnit)}):t}function HL(t){return void 0!==t.filter}function GL(t){return void 0!==t.lookup}function YL(t){return void 0!==t.sample}function VL(t){return void 0!==t.window}function XL(t){return void 0!==t.joinaggregate}function JL(t){return void 0!==t.flatten}function ZL(t){return void 0!==t.calculate}function QL(t){return!!t.bin}function KL(t){return void 0!==t.impute}function tU(t){return void 0!==t.timeUnit}function eU(t){return void 0!==t.aggregate}function nU(t){return void 0!==t.stack}function rU(t){return void 0!==t.fold}function iU(t){return!!t.signal}function oU(t){return!!t.step}function aU(t){return!Object(ct.z)(t)&&("field"in t&&"data"in t)}const uU=ZN({opacity:1,fill:1,fillOpacity:1,stroke:1,strokeCap:1,strokeWidth:1,strokeOpacity:1,strokeDash:1,strokeDashOffset:1,strokeJoin:1,strokeMiterLimit:1,size:1,shape:1,interpolate:1,tension:1,orient:1,align:1,baseline:1,text:1,dir:1,dx:1,dy:1,ellipsis:1,limit:1,radius:1,theta:1,angle:1,font:1,fontSize:1,fontWeight:1,fontStyle:1,cursor:1,href:1,tooltip:1,cornerRadius:1,x:1,y:1,x2:1,y2:1}),sU=["domain","grid","labels","ticks","title"],cU={grid:"grid",gridColor:"grid",gridDash:"grid",gridOpacity:"grid",gridScale:"grid",gridWidth:"grid",orient:"main",bandPosition:"both",domain:"main",domainColor:"main",domainOpacity:"main",domainWidth:"main",format:"main",formatType:"main",labelAlign:"main",labelAngle:"main",labelBaseline:"main",labelBound:"main",labelColor:"main",labelFlush:"main",labelFlushOffset:"main",labelFont:"main",labelFontSize:"main",labelFontWeight:"main",labelLimit:"main",labelOpacity:"main",labelOverlap:"main",labelPadding:"main",labels:"main",maxExtent:"main",minExtent:"main",offset:"main",position:"main",tickColor:"main",tickExtra:"main",tickOffset:"both",tickOpacity:"main",tickRound:"main",ticks:"main",tickSize:"main",title:"main",titleAlign:"main",titleAngle:"main",titleBaseline:"main",titleColor:"main",titleFont:"main",titleFontSize:"main",titleFontWeight:"main",titleLimit:"main",titleOpacity:"main",titlePadding:"main",titleX:"main",titleY:"main",tickWidth:"both",tickCount:"both",values:"both",scale:"both",zindex:"both"},lU={orient:1,bandPosition:1,domain:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid:1,gridColor:1,gridDash:1,gridDashOffset:1,gridOpacity:1,gridWidth:1,labelAlign:1,labelAngle:1,labelBaseline:1,labelBound:1,labelColor:1,labelFlush:1,labelFlushOffset:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position:1,tickColor:1,tickCount:1,tickDash:1,tickDashOffset:1,tickExtra:1,tickMinStep:1,tickOffset:1,tickOpacity:1,tickRound:1,ticks:1,tickSize:1,tickWidth:1,title:1,titleAlign:1,titleAnchor:1,titleAngle:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,values:1,zindex:1},fU=Object.assign({},lU,{encoding:1});const hU=ZN(Object.assign({gridScale:1,scale:1},lU,{encode:1}));ZN(fU);function dU(t,e,n,r={header:!1}){const i=t.combine(),{orient:o,scale:a,title:u,zindex:s}=i,c=b(i,["orient","scale","title","zindex"]);if(XN(c).forEach(t=>{const n=cU[t];n&&n!==e&&"both"!==n&&delete c[t]}),"grid"===e){if(!c.grid)return;if(c.encode){const{grid:t}=c.encode;c.encode=Object.assign({},t?{grid:t}:{}),0===XN(c.encode).length&&delete c.encode}return Object.assign({scale:a,orient:o},c,{domain:!1,labels:!1,maxExtent:0,minExtent:0,ticks:!1,zindex:uz(s,0)})}{if(!r.header&&t.mainExtracted)return;if(c.encode){for(const e of sU)t.hasAxisPart(e)||delete c.encode[e];0===XN(c.encode).length&&delete c.encode}const e=function(t,e){return Object(ct.z)(t)?t.map(t=>pB(t,e)).join(", "):t}(u,n);return Object.assign({scale:a,orient:o,grid:!1},e?{title:e}:{},c,{zindex:uz(s,1)})}}function pU(t){const{axes:e}=t.component;for(const n of WT)if(e[n])for(const r of e[n])if(!r.get("gridScale")){const e="x"===n?"height":"width";return[{name:e,update:t.getSizeSignalRef(e).signal}]}return[]}const gU={titleAlign:"align",titleAnchor:"anchor",titleAngle:"angle",titleBaseline:"baseline",titleColor:"color",titleFont:"font",titleFontSize:"fontSize",titleFontWeight:"fontWeight",titleLimit:"limit",titleOrient:"orient",titlePadding:"offset"},mU={labelAlign:"align",labelAnchor:"anchor",labelAngle:"angle",labelColor:"color",labelFont:"font",labelFontSize:"fontSize",labelLimit:"limit",labelOrient:"orient",labelPadding:"offset"},vU=XN(gU),yU=XN(mU),bU="mean";function xU(t){return!(!t||"count"!==t.op&&!t.field)}function _U(t){return!!t&&Object(ct.z)(t)}function wU(t,e,n,r,i){const o=[..."band"===i?["axisBand"]:[],"x"===n?"axisX":"axisY",...r?["axis"+r.substr(0,1).toUpperCase()+r.substr(1)]:[],"axis"];for(const n of o)if(e[n]&&void 0!==e[n][t])return e[n][t]}function OU(t,e){if(void 0!==t)return t=lz(t),"top"===e||"bottom"===e?t<=45||315<=t?"top"===e?"bottom":"top":135<=t&&t<=225?"top"===e?"top":"bottom":"middle":t<=45||315<=t||135<=t&&t<=225?"middle":45<=t&&t<=135?"left"===e?"top":"bottom":"left"===e?"bottom":"top"}function kU(t,e){if(void 0!==t)return t=lz(t),"top"===e||"bottom"===e?t%180==0?"center":0<t&&t<180?"top"===e?"right":"left":"top"===e?"left":"right":(t+90)%180==0?"center":90<=t&&t<270?"left"===e?"left":"right":"left"===e?"right":"left"}function AU(t){switch(t){case qz:return"bottom";case Iz:return"left"}throw new Error(vR.INVALID_CHANNEL_FOR_AXIS)}function EU(t){return[].concat(t.type,t.style||[])}function jU(t,e,n,{vgChannel:r}={}){return uz(r?SU(t,e,n.style):void 0,SU(t,e,n.style),r?n[e.type][r]:void 0,n[e.type][t],r?n.mark[r]:n.mark[t])}function SU(t,e,n){const r=EU(e);let i;for(const e of r){const r=n[e],o=t;r&&void 0!==r[o]&&(i=r[o])}return i}function CU(t,e,n,r){if(_B(t)){const i=nB(t)&&t.scale&&t.scale.type===pP.UTC;return{signal:zU(aB(t,{expr:n}),t.timeUnit,e,r.text.shortTimeLabels,r.timeFormat,i,!0)}}{const i=MU(t,e,r);if(EB(t.bin)){return{signal:NU(aB(t,{expr:n}),aB(t,{expr:n,binSuffix:"end"}),i,r)}}return"quantitative"===t.type?{signal:`${DU(aB(t,{expr:n,binSuffix:"range"}),i)}`}:{signal:`''+${aB(t,{expr:n})}`}}}function MU(t,e,n){return e||(t.type===WR?n.numberFormat:void 0)}function DU(t,e){return`format(${t}, "${e||""}")`}function FU(t,e,n){return DU(t,e||n.numberFormat)}function NU(t,e,n,r){return`${t} === null || isNaN(${t}) ? "null" : ${FU(t,n,r)} + " - " + ${FU(e,n,r)}`}function zU(t,e,n,r,i,o,a=!1){return!e||n?(n=n||i)||a?`${o?"utc":"time"}Format(${t}, '${n}')`:void 0:function(t,e,n,r){if(!t)return;const i=UR(t,n);let o="";return PR(t,DR.QUARTER)&&(o=`'Q' + quarter(${e})`),i.length>0&&(o&&(o+=" + ' ' + "),o+=r?`utcFormat(${e}, '${i.join(" ")}')`:`timeFormat(${e}, '${i.join(" ")}')`),o||void 0}(e,t,r,o)}function TU(t,e){return(Object(ct.z)(t)?t:[t]).reduce((t,n)=>(t.field.push(aB(n,e)),t.order.push(n.sort||"ascending"),t),{field:[],order:[]})}function $U(t,e){const n=[...t];return e.forEach(t=>{for(const e of n)if($N(e)===$N(t))return;n.push(t)}),n}function RU(t,e){return t!==e&&e?t?t+", "+e:e:t}function BU(t,e){if(Object(ct.z)(t.value)&&Object(ct.z)(e.value))return{explicit:t.explicit,value:$U(t.value,e.value)};if(!Object(ct.z)(t.value)&&!Object(ct.z)(e.value))return{explicit:t.explicit,value:RU(t.value,e.value)};throw new Error("It should never reach here")}class PU{constructor(t,e){this.debugName=e,this._children=[],this._parent=null,t&&(this.parent=t)}clone(){throw new Error("Cannot clone node")}hash(){return void 0===this._hash&&(this._hash=cz()),this._hash}producedFields(){return new Set}dependentFields(){return new Set}get parent(){return this._parent}set parent(t){this._parent=t,t&&t.addChild(this)}get children(){return this._children}numChildren(){return this._children.length}addChild(t,e){this._children.indexOf(t)>-1?console.warn("Attempt to add the same child twice."):void 0!==e?this._children.splice(e,0,t):this._children.push(t)}removeChild(t){const e=this._children.indexOf(t);return this._children.splice(e,1),e}remove(){let t=this._parent.removeChild(this);for(const e of this._children)e._parent=this._parent,this._parent.addChild(e,t++)}insertAsParentOf(t){const e=t.parent;e.removeChild(this),this.parent=e,t.parent=this}swapWithParent(){const t=this._parent,e=t.parent;for(const e of this._children)e.parent=t;this._children=[],t.removeChild(this),t.parent.removeChild(t),this.parent=e,t.parent=this}}class LU extends PU{constructor(t,e,n,r){super(t,e),this.type=n,this.refCounts=r,this._source=this._name=e,!this.refCounts||this._name in this.refCounts||(this.refCounts[this._name]=0)}clone(){const t=new this.constructor;return t.debugName="clone_"+this.debugName,t._source=this._source,t._name="clone_"+this._name,t.type=this.type,t.refCounts=this.refCounts,t.refCounts[t._name]=0,t}getSource(){return this.refCounts[this._name]++,this._source}isRequired(){return!!this.refCounts[this._name]}setSource(t){this._source=t}}function UU(t){const e=xS(t),n=new Set;return e.visit(t=>{"MemberExpression"===t.type&&function t(e){return"MemberExpression"===e.object.type?t(e.object):"datum"===e.object.name}(t)&&n.add(function t(e){const n=[];return"Identifier"===e.type?[e.name]:"Literal"===e.type?[e.value]:("MemberExpression"===e.type&&(n.push(...t(e.object)),n.push(...t(e.property))),n)}(t).slice(1).join("."))}),n}class qU extends PU{constructor(t,e){super(t),this.transform=e,this._dependentFields=UU(this.transform.calculate)}clone(){return new qU(null,NN(this.transform))}static parseAllForSortIndex(t,e){return e.forEachFieldDef((e,n)=>{if(nB(e)&&_U(e.sort)){const{field:r,timeUnit:i}=e,o=e.sort,a=o.map((t,e)=>`${IL({field:r,timeUnit:i,equal:t})} ? ${e} : `).join("")+o.length;t=new qU(t,{calculate:a,as:IU(e,n,{forAs:!0})})}}),t}producedFields(){return new Set([this.transform.as])}dependentFields(){return this._dependentFields}assemble(){return{type:"formula",expr:this.transform.calculate,as:this.transform.as}}hash(){return`Calculate ${RN(this.transform)}`}}function IU(t,e,n){return aB(t,Object.assign({prefix:e,suffix:"sort_index"},n||{}))}function WU(t,e){return PN(["top","bottom"],e)?"column":PN(["left","right"],e)?"row":"row"===t?"row":"column"}function HU(t,e,n,r){const i="row"===r?n.headerRow:"column"===r?n.headerColumn:n.headerFacet;return uz(e&&e.header?e.header[t]:void 0,i[t],n.header[t])}function GU(t,e,n,r){const i={};for(const o of t){const t=HU(o,e,n,r);void 0!==t&&(i[o]=t)}return i}const YU=["row","column"],VU=["header","footer"];function XU(t,e){const n=t.component.layoutHeaders[e].title,r=t.config?t.config:void 0,i=t.component.layoutHeaders[e].facetFieldDef?t.component.layoutHeaders[e].facetFieldDef:void 0,{titleAnchor:o,titleAngle:a,titleOrient:u}=GU(["titleAnchor","titleAngle","titleOrient"],i,r,e),s=WU(e,u);return{name:`${e}-title`,type:"group",role:`${s}-title`,title:Object.assign({text:n},"row"===e?{orient:"left"}:{},{style:"guide-title"},ZU(a,s),JU(s,a,o),iq(r,i,e,vU,gU))}}function JU(t,e,n="middle"){switch(n){case"start":return{align:"left"};case"end":return{align:"right"}}const r=kU(e,"row"===t?"left":"top");return r?{align:r}:{}}function ZU(t,e){const n=OU(t,"row"===e?"left":"top");return n?{baseline:n}:{}}function QU(t,e){const n=t.component.layoutHeaders[e],r=[];for(const i of VU)if(n[i])for(const o of n[i])r.push(eq(t,e,i,n,o));return r}function KU(t,e){const{sort:n}=t;return xU(n)?{field:aB(n,{expr:"datum"}),order:n.order||"ascending"}:Object(ct.z)(n)?{field:IU(t,e,{expr:"datum"}),order:"ascending"}:{field:aB(t,{expr:"datum"}),order:n||"ascending"}}function tq(t,e,n){const{format:r,labelAngle:i,labelAnchor:o,labelOrient:a}=GU(["format","labelAngle","labelAnchor","labelOrient"],t,n,e),u=WU(e,a);return Object.assign({text:CU(t,r,"parent",n)},"row"===e?{orient:"left"}:{},{style:"guide-label",frame:"group"},ZU(i,u),JU(u,i,o),iq(n,t,e,yU,mU))}function eq(t,e,n,r,i){if(i){let o=null;const{facetFieldDef:a}=r,u=t.config?t.config:void 0;if(a&&i.labels){const{labelOrient:t}=GU(["labelOrient"],a,u,e);("row"===e&&!PN(["top","bottom"],t)||"column"===e&&!PN(["left","right"],t))&&(o=tq(a,e,u))}const s=eH(t)&&!CR(t.facet),c=i.axes,l=c&&c.length>0;if(o||l){const u="row"===e?"height":"width";return Object.assign({name:t.getName(`${e}_${n}`),type:"group",role:`${e}-${n}`},r.facetFieldDef?{from:{data:t.getName(e+"_domain")},sort:KU(a,e)}:{},l&&s?{from:{data:t.getName(`facet_domain_${e}`)}}:{},o?{title:o}:{},i.sizeSignal?{encode:{update:{[u]:i.sizeSignal}}}:{},l?{axes:c}:{})}}return null}const nq={column:{start:0,end:1},row:{start:1,end:0}};function rq(t,e){return nq[e][t]}function iq(t,e,n,r,i){const o={};for(const a of r){if(!i[a])continue;const r=HU(a,e,t,n);void 0!==r&&(o[i[a]]=r)}return o}function oq(t){return[...aq(t,"width"),...aq(t,"height")]}function aq(t,e){const n="width"===e?"x":"y",r=t.component.layoutSize.get(e);if(!r||"merged"===r)return[];const i=t.getSizeSignalRef(e).signal;if("range-step"===r){const e=t.getScaleComponent(n);if(e){const r=e.get("type"),o=e.get("range");if(EP(r)&&oU(o)){const r=t.scaleName(n);if(eH(t.parent)){if("independent"===t.parent.component.resolve.scale[n])return[uq(r,o)]}return[uq(r,o),{name:i,update:sq(r,e,`domain('${r}').length`)}]}}throw new Error("layout size is range step although there is no rangeStep.")}return[{name:i,value:r}]}function uq(t,e){return{name:t+"_step",value:e.step}}function sq(t,e,n){const r=e.get("type"),i=e.get("padding"),o=uz(e.get("paddingOuter"),i);let a=e.get("paddingInner");return`bandspace(${n}, ${a="band"===r?void 0!==a?a:i:1}, ${o}) * ${t}_step`}class cq extends PU{constructor(t,e){super(t),this.formula=e}clone(){return new cq(null,NN(this.formula))}static makeFromEncoding(t,e){const n=e.reduceFieldDef((t,e)=>{if(e.timeUnit){const n=aB(e,{forAs:!0});t[n]={as:n,timeUnit:e.timeUnit,field:e.field}}return t},{});return 0===XN(n).length?null:new cq(t,n)}static makeFromTransform(t,e){return new cq(t,{[e.field]:{as:e.as,timeUnit:e.timeUnit,field:e.field}})}merge(t){this.formula=Object.assign({},this.formula,t.formula),t.remove()}producedFields(){return new Set(JN(this.formula).map(t=>t.as))}dependentFields(){return new Set(JN(this.formula).map(t=>t.field))}hash(){return`TimeUnit ${RN(this.formula)}`}assemble(){return JN(this.formula).map(t=>({type:"formula",as:t.as,expr:LR(t.timeUnit,t.field)}))}}var lq={has:t=>"interval"===t.type&&"global"===t.resolve&&t.bind&&"scales"===t.bind,parse:(t,e,n)=>{const r=KN(n.name),i=n.scales=[];for(const e of n.project.items){const n=e.channel;if(!e$(n))continue;const o=t.getScaleComponent(n),a=o?o.get("type"):void 0;if(o&&jP(a)){if(o.set("domainRaw",{signal:rz(e.field,r)},!0),i.push(e),t.repeater&&t.repeater.row===t.repeater.column){t.getScaleComponent(n===qz?Iz:qz).set("domainRaw",{signal:rz(e.field,r)},!0)}}else _R(vR.SCALE_BINDINGS_CONTINUOUS)}},topLevelSignals:(t,e,n)=>{const r=e.scales.filter(t=>!n.filter(e=>e.name===t.signals.data).length);if(!t.parent||!r.length)return n;const i=n.filter(t=>t.name===e.name)[0],o=i.update;if(o.indexOf(kq)>=0)i.update=`{${r.map(t=>`${Object(ct.W)(t.field)}: ${t.signals.data}`).join(", ")}}`;else for(const t of r){const e=`, ${Object(ct.W)(t.field)}: ${t.signals.data}`;o.indexOf(e)<0&&(i.update=o.substring(0,o.length-1)+e+"}")}return n.concat(r.map(t=>({name:t.signals.data})))},signals:(t,e,n)=>{if(t.parent)for(const t of e.scales){const e=n.filter(e=>e.name===t.signals.data)[0];e.push="outer",delete e.value,delete e.update}return n}};function fq(t,e){return`domain(${Object(ct.W)(t.scaleName(e))})`}const hq="_tuple_fields";class dq{constructor(...t){this.items=t,this.has={}}}const pq="_scale_trigger",gq={signals:(t,e)=>{const n=e.name,r=n+hq,i=lq.has(e),o=[],a=[],u=[];if(e.translate&&!i){const t=`!event.item || event.item.mark.name !== ${Object(ct.W)(n+"_brush")}`;mq(e,(e,n)=>{const r=n.between[0].filter||(n.between[0].filter=[]);r.indexOf(t)<0&&r.push(t)})}e.project.items.forEach((n,r)=>{const i=n.channel;if(i!==qz&&i!==Iz)return void _R("Interval selections only support x and y encoding channels.");const s=e.init?e.init[r]:null,c=function(t,e,n,r){const i=n.channel,o=n.signals.visual,a=n.signals.data,u=lq.has(e),s=Object(ct.W)(t.scaleName(i)),c=t.getScaleComponent(i),l=c?c.get("type"):void 0,f=t=>`scale(${s}, ${t})`,h=t.getSizeSignalRef(i===qz?"width":"height").signal,d=`${i}(unit)`,p=mq(e,(t,e)=>[...t,{events:e.between[0],update:`[${d}, ${d}]`},{events:e,update:`[${o}[0], clamp(${d}, 0, ${h})]`}]);return p.push({events:{signal:e.name+pq},update:jP(l)?`[${f(`${a}[0]`)}, ${f(`${a}[1]`)}]`:"[0, 0]"}),u?[{name:a,on:[]}]:[Object.assign({name:o},r?{init:Iq(r,f)}:{value:[]},{on:p}),Object.assign({name:a},r?{init:Iq(r)}:{},{on:[{events:{signal:o},update:`${o}[0] === ${o}[1] ? null : invert(${s}, ${o})`}]})]}(t,e,n,s),l=n.signals.data,f=n.signals.visual,h=Object(ct.W)(t.scaleName(i)),d=jP(t.getScaleComponent(i).get("type"))?"+":"";o.push(...c),a.push(l),u.push({scaleName:t.scaleName(i),expr:`(!isArray(${l}) || `+`(${d}invert(${h}, ${f})[0] === ${d}${l}[0] && `+`${d}invert(${h}, ${f})[1] === ${d}${l}[1]))`})}),i||o.push({name:n+pq,value:{},on:[{events:u.map(t=>({scale:t.scaleName})),update:u.map(t=>t.expr).join(" && ")+` ? ${n+pq} : {}`}]});const s=e.init,c=`unit: ${jq(t)}, fields: ${r}, values`;return o.concat(Object.assign({name:n+_q},s?{init:`{${c}: ${Iq(s)}}`}:{},{on:[{events:[{signal:a.join(" || ")}],update:a.join(" && ")+` ? {${c}: [${a}]} : null`}]}))},modifyExpr:(t,e)=>{return e.name+_q+", "+("global"===e.resolve?"true":`{unit: ${jq(t)}}`)},marks:(t,e,n)=>{const r=e.name,{x:i,y:o}=e.project.has,a=i&&i.signals.visual,u=o&&o.signals.visual,s=`data(${Object(ct.W)(e.name+xq)})`;if(lq.has(e))return n;const c={x:void 0!==i?{signal:`${a}[0]`}:{value:0},y:void 0!==o?{signal:`${u}[0]`}:{value:0},x2:void 0!==i?{signal:`${a}[1]`}:{field:{group:"width"}},y2:void 0!==o?{signal:`${u}[1]`}:{field:{group:"height"}}};if("global"===e.resolve)for(const e of XN(c))c[e]=[Object.assign({test:`${s}.length && ${s}[0].unit === ${jq(t)}`},c[e]),{value:0}];const l=e.mark,{fill:f,fillOpacity:h}=l,d=b(l,["fill","fillOpacity"]),p=XN(d).reduce((t,e)=>(t[e]=[{test:[void 0!==i&&`${a}[0] !== ${a}[1]`,void 0!==o&&`${u}[0] !== ${u}[1]`].filter(t=>t).join(" && "),value:d[e]},{value:null}],t),{});return[{name:r+"_brush_bg",type:"rect",clip:!0,encode:{enter:{fill:{value:f},fillOpacity:{value:h}},update:c}},...n,{name:r+"_brush",type:"rect",clip:!0,encode:{enter:{fill:{value:"transparent"}},update:Object.assign({},c,p)}}]}};function mq(t,e){return t.events.reduce((t,n)=>n.between?e(t,n):(_R(`${n} is not an ordered event stream for interval selections`),t),[])}function vq(t,e){const n=e.name,r=n+hq,i=e.project,o="(item().isVoronoi ? datum.datum : datum)",a=i.items.map(e=>{const n=t.fieldDef(e.channel);return n&&n.bin?`[${rz(t.vgField(e.channel,{}),o)}, `+`${rz(t.vgField(e.channel,{binSuffix:"end"}),o)}]`:`${rz(e.field,o)}`}).join(", "),u=`unit: ${jq(t)}, fields: ${r}, values`,s=[{name:n+_q,on:[{events:e.events,update:`datum && item().mark.marktype !== 'group' ? {${u}: [${a}]} : null`,force:!0}]}];if(e.init){const t=e.init.map(t=>{const e=Iq(t);return`{${u}: ${e}}`});s.push({name:`${n}_init`,init:`modify(${Object(ct.W)(e.name+xq)}, [${t}])`})}return s}const yq={signals:vq,modifyExpr:(t,e)=>{return e.name+_q+", "+("global"===e.resolve?"null":`{unit: ${jq(t)}}`)}};const bq={signals:vq,modifyExpr:(t,e)=>{return e.name+_q+", "+("global"===e.resolve?"true":`{unit: ${jq(t)}}`)}};const xq="_store",_q="_tuple",wq="_modify",Oq="_selection_domain_",kq="vlSelectionResolve",Aq={single:bq,multi:yq,interval:gq};function Eq(t,e){const n=t.component.selection;for(const t in n)if(n.hasOwnProperty(t)){const r=n[t];e(r,Aq[r.type])}}function jq(t){let e=Object(ct.W)(t.name);const n=function(t){let e=t.parent;for(;e&&!eH(e);)e=e.parent;return e}(t);if(n){const{facet:t}=n;for(const r of mT)t[r]&&(e+=` + '__facet_${r}_' + (${rz(n.vgField(r),"facet")})`)}return e}function Sq(t){let e=!1;return Eq(t,t=>{e=e||t.project.items.some(t=>t.field===WP)}),e}var Cq={has:t=>"interval"!==t.type&&t.nearest,marks:(t,e,n)=>{const{x:r,y:i}=e.project.has,o=t.mark;if(kz(o))return _R(vR.nearestNotSupportForContinuous(o)),n;const a={name:t.getName("voronoi"),type:"path",from:{data:t.getName("marks")},encode:{update:Object.assign({fill:{value:"transparent"},strokeWidth:{value:.35},stroke:{value:"transparent"},isVoronoi:{value:!0}},mI(t,{reactiveGeom:!0}))},transform:[{type:"voronoi",x:{expr:r||!r&&!i?"datum.datum.x || 0":"0"},y:{expr:i||!r&&!i?"datum.datum.y || 0":"0"},size:[t.getSizeSignalRef("width"),t.getSizeSignalRef("height")]}]};let u=0,s=!1;return n.forEach((e,n)=>{const r=e.name||"";r===t.component.mark[0].name?u=n:r.indexOf("voronoi")>=0&&(s=!0)}),s||n.splice(u+1,0,a),n}};var Mq={has:t=>"single"===t.type&&"global"===t.resolve&&t.bind&&"scales"!==t.bind,topLevelSignals:(t,e,n)=>{const r=e.name,i=e.project,o=e.bind,a=e.init&&e.init[0],u=Cq.has(e)?"(item().isVoronoi ? datum.datum : datum)":"datum";return i.items.forEach((t,i)=>{const s=KN(`${r}_${t.field}`);n.filter(t=>t.name===s).length||n.unshift(Object.assign({name:s},a?{init:Iq(a[i])}:{value:null},{on:[{events:e.events,update:`datum && item().mark.marktype !== 'group' ? ${rz(t.field,u)} : null`}],bind:o[t.field]||o[t.channel]||o}))}),n},signals:(t,e,n)=>{const r=e.name,i=e.project,o=n.filter(t=>t.name===r+_q)[0],a=r+hq,u=i.items.map(t=>KN(`${r}_${t.field}`)),s=u.map(t=>`${t} !== null`).join(" && ");return u.length&&(o.update=`${s} ? {fields: ${a}, values: [${u.join(", ")}]} : null`),delete o.value,delete o.on,n}};var Dq={has:t=>"multi"===t.type&&t.toggle,signals:(t,e,n)=>n.concat({name:e.name+"_toggle",value:!1,on:[{events:e.events,update:e.toggle}]}),modifyExpr:(t,e)=>{const n=e.name+_q,r=e.name+"_toggle";return`${r} ? null : ${n}, `+("global"===e.resolve?`${r} ? null : true, `:`${r} ? null : {unit: ${jq(t)}}, `)+`${r} ? ${n} : null`}};const Fq={has:t=>!1!==t.clear,parse:(t,e,n)=>{e.clear&&(n.clear=OM(e.clear,"scope"))},topLevelSignals:(t,e,n)=>(Mq.has(e)&&e.project.items.forEach(t=>{const r=n.findIndex(n=>n.name===KN(`${e.name}_${t.field}`));-1!==r&&n[r].on.push({events:e.clear,update:"null"})}),n),signals:(t,e,n)=>{function r(t,r){-1!==t&&n[t].on&&n[t].on.push({events:e.clear,update:r})}if("interval"===e.type)e.project.items.forEach(t=>{const e=n.findIndex(e=>e.name===t.signals.visual);if(r(e,"[0, 0]"),-1===e){r(n.findIndex(e=>e.name===t.signals.data),"null")}});else{let t=n.findIndex(t=>t.name===e.name+_q);r(t,"null"),Dq.has(e)&&r(t=n.findIndex(t=>t.name===e.name+"_toggle"),"false")}return n}};const Nq="_translate_anchor",zq="_translate_delta",Tq={has:t=>"interval"===t.type&&t.translate,signals:(t,e,n)=>{const r=e.name,i=lq.has(e),o=r+Nq,{x:a,y:u}=e.project.has;let s=OM(e.translate,"scope");return i||(s=s.map(t=>(t.between[0].markname=r+"_brush",t))),n.push({name:o,value:{},on:[{events:s.map(t=>t.between[0]),update:"{x: x(unit), y: y(unit)"+(void 0!==a?", extent_x: "+(i?fq(t,qz):`slice(${a.signals.visual})`):"")+(void 0!==u?", extent_y: "+(i?fq(t,Iz):`slice(${u.signals.visual})`):"")+"}"}]},{name:r+zq,value:{},on:[{events:s,update:`{x: ${o}.x - x(unit), y: ${o}.y - y(unit)}`}]}),void 0!==a&&$q(t,e,a,"width",n),void 0!==u&&$q(t,e,u,"height",n),n}};function $q(t,e,n,r,i){const o=e.name,a=o+Nq,u=o+zq,s=n.channel,c=lq.has(e),l=i.filter(t=>t.name===n.signals[c?"data":"visual"])[0],f=t.getSizeSignalRef(r).signal,h=t.getScaleComponent(s),d=h.get("type"),p=`${a}.extent_${s}`,g=`${c?"log"===d?"panLog":"pow"===d?"panPow":"panLinear":"panLinear"}(${p}, ${`${c&&s===qz?"-":""}${u}.${s} / `+(c?`${f}`:`span(${p})`)}`+(c&&"pow"===d?`, ${h.get("exponent")||1}`:"")+")";l.on.push({events:{signal:u},update:c?g:`clampRange(${g}, 0, ${f})`})}const Rq="_zoom_anchor",Bq="_zoom_delta",Pq={has:t=>"interval"===t.type&&t.zoom,signals:(t,e,n)=>{const r=e.name,i=lq.has(e),o=r+Bq,{x:a,y:u}=e.project.has,s=Object(ct.W)(t.scaleName(qz)),c=Object(ct.W)(t.scaleName(Iz));let l=OM(e.zoom,"scope");return i||(l=l.map(t=>(t.markname=r+"_brush",t))),n.push({name:r+Rq,on:[{events:l,update:i?"{"+[s?`x: invert(${s}, x(unit))`:"",c?`y: invert(${c}, y(unit))`:""].filter(t=>!!t).join(", ")+"}":"{x: x(unit), y: y(unit)}"}]},{name:o,on:[{events:l,force:!0,update:"pow(1.001, event.deltaY * pow(16, event.deltaMode))"}]}),void 0!==a&&Lq(t,e,a,"width",n),void 0!==u&&Lq(t,e,u,"height",n),n}};function Lq(t,e,n,r,i){const o=e.name,a=n.channel,u=lq.has(e),s=i.filter(t=>t.name===n.signals[u?"data":"visual"])[0],c=t.getSizeSignalRef(r).signal,l=t.getScaleComponent(a),f=l.get("type"),h=u?fq(t,a):s.name,d=o+Bq,p=`${u?"log"===f?"zoomLog":"pow"===f?"zoomPow":"zoomLinear":"zoomLinear"}(${h}, ${`${o}${Rq}.${a}`}, ${d}`+(u&&"pow"===f?`, ${l.get("exponent")||1}`:"")+")";s.on.push({events:{signal:d},update:u?p:`clampRange(${p}, 0, ${c})`})}const Uq=[{has:()=>!0,parse:(t,e,n)=>{const r=n.name,i=n.project||(n.project=new dq),o={},a={},u=new Set,s=(t,e)=>{const n="visual"===e?t.channel:t.field;let i=KN(`${r}_${n}`);for(let t=1;u.has(i);t++)i=KN(`${r}_${n}_${t}`);return u.add(i),{[e]:i}};if(!e.fields&&!e.encodings){const n=t.config.selection[e.type];if(e.init)for(const t of Object(ct.i)(e.init))for(const r of XN(t))ST(r)?(e.encodings||(e.encodings=[])).push(r):HP(e)?(_R('Interval selections should be initialized using "x" and/or "y" keys.'),e.encodings=n.encodings):(e.fields||(e.fields=[])).push(r);else e.encodings=n.encodings,e.fields=n.fields}for(const t of e.fields||[]){const e={type:"E",field:t};e.signals=Object.assign({},s(e,"data")),i.items.push(e)}for(const r of e.encodings||[]){const e=t.fieldDef(r);if(e){let u=e.field;if(e.timeUnit&&(a[u=t.vgField(r)]={as:u,field:e.field,timeUnit:e.timeUnit}),!o[u]){let a="E";if("interval"===n.type){jP(t.getScaleComponent(r).get("type"))&&(a="R")}else e.bin&&(a="R-RE");const c={field:u,channel:r,type:a};c.signals=Object.assign({},s(c,"data"),s(c,"visual")),i.items.push(o[u]=c),i.has[r]=o[u]}}else _R(vR.cannotProjectOnChannelWithoutField(r))}if(e.init)if(lq.has(n))_R(vR.NO_INIT_SCALE_BINDINGS);else{const t=t=>i.items.map(e=>void 0!==t[e.channel]?t[e.channel]:t[e.field]);if(HP(e))n.init=t(e.init);else{const r=Object(ct.z)(e.init)?e.init:[e.init];n.init=r.map(t)}}XN(a).length&&(i.timeUnit=new cq(null,a))},signals:(t,e,n)=>{const r=e.name+hq;return n.filter(t=>t.name===r).length?n:n.concat({name:r,value:e.project.items.map(t=>{const{signals:e}=t;return b(t,["signals"])})})}},Dq,lq,Tq,Pq,Mq,Cq,Fq];function qq(t,e){for(const n of Uq)n.has(t)&&e(n)}function Iq(t,e=ct.w){if(Object(ct.z)(t)){return`[${t.map(t=>Iq(t,e)).join(", ")}]`}return OR(t)?e(SR(t)):e(JSON.stringify(t))}function Wq(t,e){return Eq(t,(n,r)=>{e=r.marks?r.marks(t,n,e):e,qq(n,r=>{r.marks&&(e=r.marks(t,n,e))})}),e}function Hq(t,e,n){const r=[];const i=tz(e,function(e){const i=KN(e),o=t.getSelectionComponent(i,e),a=Object(ct.W)(i+xq);if(o.project.timeUnit){const e=n||t.component.data.raw,r=o.project.timeUnit.clone();e.parent?r.insertAsParentOf(e):e.parent=r}return"none"!==o.empty&&r.push(a),`vlSelectionTest(${a}, datum`+("global"===o.resolve?")":`, ${Object(ct.W)(o.resolve)})`)});return(r.length?"!("+r.map(t=>`length(data(${t}))`).join(" || ")+") || ":"")+`(${i})`}function Gq(t,e,n){return tz(e,e=>Object(ct.G)(e)?e:function(t){return t&&t.selection}(e)?Hq(t,e.selection,n):IL(e))}function Yq(t){const{channel:e,channelDef:n,mark:r,scale:i}=t,o=nI(t);return QR(n)&&!$z(n.aggregate)&&i&&SP(i.get("type"))&&!1===i.get("zero")?Vq({fieldDef:n,channel:e,mark:r,ref:o}):o}function Vq({fieldDef:t,channel:e,mark:n,ref:r}){return kz(n)?r:[Xq(t,e),r]}function Xq(t,e){const n=Jq(t,!0),r="x"===FT(e)?{value:0}:{field:{group:"height"}};return Object.assign({test:n},r)}function Jq(t,e=!0){return`${t=Object(ct.G)(t)?t:aB(t,{expr:"datum"})} ${e?"===":"!=="} null ${e?"||":"&&"} ${e?"":"!"}isNaN(${t})`}function Zq(t,e){const n=e[t+"Offset"];if(n)return n}function Qq({channel:t,fieldDef:e,scaleName:n,mark:r,side:i,offset:o}){return Vq({fieldDef:e,channel:t,mark:r,ref:Kq(e,n,{binSuffix:"start"===i?void 0:"end"},o?{offset:o}:{})})}function Kq(t,e,n,r){const i=Object.assign({},e?{scale:e}:{},{field:aB(t,n)});if(r){const{offset:t,band:e}=r;return Object.assign({},i,t?{offset:t}:{},e?{band:e}:{})}return i}function tI(t,e=!0){return{scale:t,band:e}}function eI({scaleName:t,fieldDef:e,fieldDef2:n,offset:r}){const i=aB(e,{expr:"datum"}),o=void 0!==n?aB(n,{expr:"datum"}):aB(e,{binSuffix:"end",expr:"datum"});return Object.assign({signal:`scale("${t}", (${i} + ${o}) / 2)`},r?{offset:r}:{})}function nI({channel:t,channelDef:e,channel2Def:n,scaleName:r,scale:i,stack:o,offset:a,defaultRef:u}){if(e){if(QR(e)){if(KR(e)){if(EB(e.bin))return PN([qz,Iz],t)&&e.type===WR?o&&o.impute?Kq(e,r,{binSuffix:"mid"},{offset:a}):eI({scaleName:r,fieldDef:e,offset:a}):Kq(e,r,kB(e,t)?{binSuffix:"range"}:{},{offset:a});if(jB(e.bin)){if(QR(n))return eI({scaleName:r,fieldDef:e,fieldDef2:n,offset:a});{const e=t===qz?Wz:Hz;_R(vR.channelRequiredForBinned(e))}}}if(i){const t=i.get("type");if(EP(t))return Kq(e,r,{binSuffix:"range"},"band"===t?{band:.5,offset:a}:{offset:a})}return Kq(e,r,{},{offset:a})}if(eB(e)){const n=e.value,r=a?{offset:a}:{};return PN(["x","x2"],t)&&"width"===n?Object.assign({field:{group:"width"}},r):PN(["y","y2"],t)&&"height"===n?Object.assign({field:{group:"height"}},r):Object.assign({value:n},r)}}return Object(ct.C)(u)?u():u}function rI(t,e,{reactiveGeom:n}){const r=[],i={};function o(o,a){const u=FT(a);a!==u&&(o=Object.assign({},o,{type:t[u].type}));const s=hB(o,e,{allowDisabling:!1}),c=iI(o,e,n?"datum.datum":"datum").signal;i[s]||r.push(`${Object(ct.W)(s)}: ${c}`),i[s]=!0}return TB(t,(t,e)=>{QR(t)?o(t,e):ZR(t)&&o(t.condition,e)}),r.length?{signal:`{${r.join(", ")}}`}:void 0}function iI(t,e,n="datum"){if(t){if(eB(t))return{value:t.value};if(KR(t))return CU(t,oB(r=t)&&r.format?r.format:(dB(r)||{}).format,n,e)}var r}function oI(t){return Object.assign({},t,{mult:.5})}function aI({markDef:t,config:e,defaultRef:n,channel:r,scaleName:i,scale:o,mark:a,checkBarAreaWithoutZero:u}){return()=>{const s=FT(r),c=uz(t[r],jU(r,t,e));if(void 0!==c)return{value:c};if(Object(ct.G)(n)){if(i){const t=o.get("type");if(PN([pP.LOG,pP.TIME,pP.UTC],t))!u||"bar"!==a&&"area"!==a||_R(vR.nonZeroScaleUsedWithLengthMark(a,s,{scaleType:t}));else{if(o.domainDefinitelyIncludesZero)return{scale:i,value:0};!u||"bar"!==a&&"area"!==a||_R(vR.nonZeroScaleUsedWithLengthMark(a,s,{zeroFalse:!1===o.explicit.zero}))}}return"zeroOrMin"===n?"x"===s?{value:0}:{field:{group:"height"}}:"x"===s?{field:{group:"width"}}:{value:0}}return n}}function uI(t){return"transparent"!==t&&null!=t}function sI(t){const{markDef:e,encoding:n,config:r}=t,{filled:i,type:o}=e,a={fill:jU("fill",e,r),stroke:jU("stroke",e,r),color:jU("color",e,r)},u=PN(["bar","point","circle","square","geoshape"],o)?"transparent":void 0,s=uz(e.fill,a.fill,u),c=uz(e.stroke,a.stroke),l=i?"fill":"stroke",f=Object.assign({},s?{fill:{value:s}}:{},c?{stroke:{value:c}}:{});return n.fill||n.stroke?(e.color&&_R(vR.droppingColor("property",{fill:"fill"in n,stroke:"stroke"in n})),Object.assign({},pI("fill",t,{defaultValue:uz(s,u)}),pI("stroke",t,{defaultValue:c}))):n.color?Object.assign({},f,pI("color",t,{vgChannel:l,defaultValue:uz(e[l],e.color,a[l],a.color,i?u:void 0)})):uI(e.fill)||uI(e.stroke)?(e.color&&_R(vR.droppingColor("property",{fill:"fill"in e,stroke:"stroke"in e})),f):e.color?Object.assign({},f,{[l]:{value:e.color}}):uI(a.fill)||uI(a.stroke)?f:a.color?Object.assign({},u?{fill:{value:"transparent"}}:{},{[l]:{value:a.color}}):{}}function cI(t,e){const{fill:n,stroke:r}=sI(t);return Object.assign({},function(t,e){return uU.reduce((n,r)=>(void 0!==t[r]&&"ignore"!==e[r]&&(n[r]={value:t[r]}),n),{})}(t.markDef,e),lI(t,"fill",n),lI(t,"stroke",r),pI("opacity",t),pI("fillOpacity",t),pI("strokeOpacity",t),pI("strokeWidth",t),mI(t),vI(t,"href"))}function lI(t,e,n){const{config:r,mark:i}=t;if("hide"===r.invalidValues&&n&&!kz(i)){const r=hI(t,{invalid:!0,channels:t$});if(r)return{[e]:[{test:r,value:null},...Object(ct.i)(n)]}}return n?{[e]:n}:{}}function fI(t,e){if(void 0!==e)return{[t]:{value:e}}}function hI(t,{invalid:e=!1,channels:n}){const r=n.reduce((e,n)=>{const r=t.getScaleComponent(n);if(r){const i=r.get("type"),o=t.vgField(n,{expr:"datum"});o&&jP(i)&&(e[o]=!0)}return e},{}),i=XN(r);if(i.length>0){const t=e?"||":"&&";return i.map(t=>Jq(t,e)).join(` ${t} `)}}function dI(t){if(t.config.invalidValues){const e=hI(t,{channels:["x","y"]});if(e)return{defined:{signal:e}}}return{}}function pI(t,e,n={}){const{markDef:r,encoding:i,config:o}=e,{vgChannel:a=t}=n;let{defaultRef:u,defaultValue:s}=n;void 0===u&&(s=s||(a===t?r[t]:uz(r[t],r[a],jU(t,r,o,{vgChannel:a}))),u=s?{value:s}:void 0);const c=i[t];return gI(e,c,a,n=>nI({channel:t,channelDef:n,scaleName:e.scaleName(t),scale:e.getScaleComponent(t),stack:null,defaultRef:u}))}function gI(t,e,n,r){const i=e&&e.condition,o=r(e);if(i){return{[n]:[...(Object(ct.z)(i)?i:[i]).map(e=>{const n=r(e),i=function(t){return t.selection}(e)?Hq(t,e.selection):Gq(t,e.test);return Object.assign({test:i},n)}),...void 0!==o?[o]:[]]}}return void 0!==o?{[n]:o}:{}}function mI(t,e={}){const{encoding:n,markDef:r,config:i}=t,o=n.tooltip;return Object(ct.z)(o)?{tooltip:rI({tooltip:o},i,e)}:gI(t,o,"tooltip",o=>{const a=iI(o,t.config,e.reactiveGeom?"datum.datum":"datum");if(a)return a;if(null===o)return;const u=uz(r.tooltip,jU("tooltip",r,i));return Object(ct.G)(u)?{value:u}:Object(ct.E)(u)?"encoding"===u.content?rI(n,i,e):{signal:"datum"}:void 0})}function vI(t,e="text"){const n=t.encoding[e];return gI(t,n,e,e=>iI(e,t.config))}function yI(t,e,n,r){const i=n.scaleName(e),o="x"===e?"width":"height";if(n.encoding.size||void 0!==n.markDef.size||r&&void 0!==r.value){if(n.markDef.orient){const a={[e+"c"]:Kq(t,i,{},{band:.5})};if(mB(n.encoding.size))return Object.assign({},a,pI("size",n,{vgChannel:o}));if(eB(n.encoding.size))return Object.assign({},a,pI("size",n,{vgChannel:o}));if(void 0!==n.markDef.size)return Object.assign({},a,{[o]:{value:n.markDef.size}});if(r&&void 0!==r.value)return Object.assign({},a,{[o]:r})}else _R(vR.cannotApplySizeToNonOrientedMark(n.markDef.type))}return{[e]:Kq(t,i,{binSuffix:"range"},{}),[o]:r||tI(i)}}function bI({fieldDef:t,fieldDef2:e,channel:n,scaleName:r,mark:i,spacing:o=0,reverse:a}){const u={x:a?o:0,x2:a?0:o,y:a?0:o,y2:a?o:0},s=n===qz?Wz:Hz;return EB(t.bin)?{[s]:Qq({channel:n,fieldDef:t,scaleName:r,mark:i,side:"start",offset:u[`${n}2`]}),[n]:Qq({channel:n,fieldDef:t,scaleName:r,mark:i,side:"end",offset:u[n]})}:jB(t.bin)&&QR(e)?{[s]:Kq(t,r,{},{offset:u[`${n}2`]}),[n]:Kq(e,r,{},{offset:u[n]})}:void _R(vR.channelRequiredForBinned(s))}function xI(t,e,n,r){const{encoding:i,mark:o,markDef:a,config:u,stack:s}=e,c=i[t],l=i[t===qz?Wz:Hz],f=e.scaleName(t),h=e.getScaleComponent(t),d=Zq(t,e.markDef);return{[r||t]:c||!i.latitude&&!i.longitude?function(t){const{channel:e,channelDef:n,scaleName:r,stack:i,offset:o}=t;return QR(n)&&i&&e===i.fieldChannel?Kq(n,r,{suffix:"end"},{offset:o}):Yq(t)}({channel:t,channelDef:c,channel2Def:l,scaleName:f,scale:h,stack:s,mark:o,offset:d,defaultRef:aI({markDef:a,config:u,defaultRef:n,channel:t,scaleName:f,scale:h,mark:o,checkBarAreaWithoutZero:!l})}):{field:e.getName(t)}}}function _I(t,e,n){const{encoding:r,mark:i,markDef:o,stack:a,config:u}=t,s="x2"===n?"x":"y",c=r[s],l=t.scaleName(s),f=t.getScaleComponent(s),h=Zq(n,t.markDef),d=c||!r.latitude&&!r.longitude?function({channel:t,channelDef:e,channel2Def:n,scaleName:r,scale:i,stack:o,mark:a,offset:u,defaultRef:s}){return QR(e)&&o&&t.charAt(0)===o.fieldChannel.charAt(0)?Kq(e,r,{suffix:"start"},{offset:u}):Yq({channel:t,channelDef:n,scaleName:r,scale:i,stack:o,mark:a,offset:u,defaultRef:s})}({channel:n,channelDef:c,channel2Def:r[n],scaleName:l,scale:f,stack:a,mark:i,offset:h,defaultRef:aI({markDef:o,config:u,defaultRef:e,channel:n,scaleName:l,scale:f,mark:i,checkBarAreaWithoutZero:!r[n]})}):{field:t.getName(n)};return{[n]:d}}function wI(t,e){return XN(t).reduce((n,r)=>{const i=t[r];return Object.assign({},n,gI(e,i,r,t=>({value:t.value})))},{})}function OI(t,e){if(iH(e)||eH(e))return"shared";if(rH(e)||nH(e))return PN(WT,t)?"independent":"shared";throw new Error("invalid model type for resolve")}function kI(t,e){const n=t.scale[e],r=PN(WT,e)?"axis":"legend";return"independent"===n?("shared"===t[r][e]&&_R(vR.independentScaleMeansIndependentGuide(e)),"independent"):t[r][e]||"shared"}class AI{constructor(t={},e={}){this.explicit=t,this.implicit=e}clone(){return new AI(NN(this.explicit),NN(this.implicit))}combine(){return Object.assign({},this.explicit,this.implicit)}get(t){return uz(this.explicit[t],this.implicit[t])}getWithExplicit(t){return void 0!==this.explicit[t]?{explicit:!0,value:this.explicit[t]}:void 0!==this.implicit[t]?{explicit:!1,value:this.implicit[t]}:{explicit:!1,value:void 0}}setWithExplicit(t,e){void 0!==e.value&&this.set(t,e.value,e.explicit)}set(t,e,n){return delete this[n?"implicit":"explicit"][t],this[n?"explicit":"implicit"][t]=e,this}copyKeyFromSplit(t,e){void 0!==e.explicit[t]?this.set(t,e.explicit[t],!0):void 0!==e.implicit[t]&&this.set(t,e.implicit[t],!1)}copyKeyFromObject(t,e){void 0!==e[t]&&this.set(t,e[t],!0)}copyAll(t){for(const e of XN(t.combine())){const n=t.getWithExplicit(e);this.setWithExplicit(e,n)}}}function EI(t){return{explicit:!0,value:t}}function jI(t){return{explicit:!1,value:t}}function SI(t){return(e,n,r,i)=>{const o=t(e.value,n.value);return o>0?e:o<0?n:CI(e,n,r,i)}}function CI(t,e,n,r){return t.explicit&&e.explicit&&_R(vR.mergeConflictingProperty(n,r,t.value,e.value)),t}function MI(t,e,n,r,i=CI){return void 0===t||void 0===t.value?e:t.explicit&&!e.explicit?t:e.explicit&&!t.explicit?e:$N(t.value)===$N(e.value)?t:i(t,e,n,r)}class DI extends AI{}function FI(t){const{legend:e}=t;return uz(e.type,NI(t))}function NI({channel:t,timeUnit:e,scaleType:n,alwaysReturn:r}){if(pT(t)){if(PN(["quarter","month","day"],e))return"symbol";if(SP(n))return r?"gradient":void 0}return r?"symbol":void 0}function zI({legend:t,legendConfig:e,timeUnit:n,channel:r,scaleType:i}){const o=uz(t.orient,e.orient,"right"),a=FI({legend:t,channel:r,timeUnit:n,scaleType:i,alwaysReturn:!0});return uz(t.direction,e[a?"gradientDirection":"symbolDirection"],function(t,e){switch(t){case"top":case"bottom":return"horizontal";case"left":case"right":case"none":case void 0:return;default:return"gradient"===e?"horizontal":void 0}}(o,a))}function TI(t,e,n,r){return{signal:`clamp(${t.getSizeSignalRef(e).signal}, ${n}, ${r})`}}function $I(t,e,n){const r=e.getScaleComponent(n).get("type");return uz(t.get("type"),NI({channel:n,scaleType:r,alwaysReturn:!0}))}function RI(t,e,n,r,i){if("symbol"!==$I(i,n,r))return;let o=Object.assign({},function(t,e,n){for(const r of n){const n=jU(r,e.markDef,e.config);void 0!==n&&(t[r]={value:n})}return t}({},n,jz),sI(n));switch(n.mark){case hz:case yz:case vz:o.shape={value:"square"};break;case xz:case _z:o.shape={value:n.mark}}const{markDef:a,encoding:u,config:s}=n,c=a.filled,l=LI(u.opacity)||a.opacity;if(o.fill)if("fill"===r||c&&r===Jz)delete o.fill;else if(o.fill.field)i.get("symbolFillColor")?delete o.fill:(o.fill={value:s.legend.symbolBaseFillColor||"black"},o.fillOpacity={value:l||1});else if(Object(ct.z)(o.fill)){const t=UI(u.fill||u.color)||a.fill||c&&a.color;t&&(o.fill={value:t})}if(o.stroke)if("stroke"===r||!c&&r===Jz)delete o.stroke;else if(o.stroke.field)delete o.stroke;else if(Object(ct.z)(o.stroke)){const t=uz(UI(u.stroke||u.color),a.stroke,c?a.color:void 0);t&&(o.stroke={value:t})}if(r!==Kz){const t=UI(u.shape)||a.shape;t&&(o.shape={value:t})}return r!==eT&&l&&(o.opacity={value:l}),o=Object.assign({},o,e),XN(o).length>0?o:void 0}function BI(t,e,n,r,i){if("gradient"!==$I(i,n,r))return;let o={};const a=LI(n.encoding.opacity)||n.markDef.opacity;return a&&(o.opacity={value:a}),o=Object.assign({},o,e),XN(o).length>0?o:void 0}function PI(t,e,n,r){const i=n.legend(r),o=n.config;let a={};if(_B(t)){const a=n.getScaleComponent(r).get("type")===pP.UTC,u=zU("datum.value",t.timeUnit,i.format,o.legend.shortTimeLabels,o.timeFormat,a);e=Object.assign({},u?{text:{signal:u}}:{},e)}return a=Object.assign({},a,e),XN(a).length>0?a:void 0}function LI(t){return qI(t,(t,e)=>Math.max(t,e.value))}function UI(t){return qI(t,(t,e)=>uz(t,e.value))}function qI(t,e){return function(t){return!!t&&!!t.condition&&(Object(ct.z)(t.condition)||eB(t.condition))}(t)?(Object(ct.z)(t.condition)?t.condition:[t.condition]).reduce(e,t.value):eB(t)?t.value:void 0}function II(t){tH(t)?t.component.legends=function(t){const{encoding:e}=t;return[Jz,Zz,Qz,iT,tT,Kz,eT,nT,rT].reduce((n,r)=>{const i=e[r];return!t.legend(r)||!t.getScaleComponent(r)||QR(i)&&r===Kz&&i.type===VR||(n[r]=function(t,e){const n=t.fieldDef(e),r=t.legend(e),i=new DI({},function(t,e){const n=t.scaleName(Jz);if("color"===e)return t.markDef.filled?{fill:n}:{stroke:n};return{[e]:t.scaleName(e)}}(t,e));for(const o of hP){const a=HI(o,r,e,t);if(void 0!==a){const e=WI(a,o,r,n);(e||void 0===t.config.legend[o])&&i.set(o,a,e)}}const o=r.encoding||{},a=["labels","legend","title","symbols","gradient"].reduce((r,a)=>{const u=wI(o[a]||{},t),s=m[a]?m[a](n,u,t,e,i):u;return void 0!==s&&XN(s).length>0&&(r[a]={update:s}),r},{});XN(a).length>0&&i.set("encode",a,!!r.encoding);return i}(t,r)),n},{})}(t):t.component.legends=function(t){const{legends:e,resolve:n}=t.component;for(const r of t.children)II(r),XN(r.component.legends).forEach(i=>{n.legend[i]=kI(t.component.resolve,i),"shared"===n.legend[i]&&(e[i]=GI(e[i],r.component.legends[i]),e[i]||(n.legend[i]="independent",delete e[i]))});return XN(e).forEach(e=>{for(const r of t.children)r.component.legends[e]&&"shared"===n.legend[e]&&delete r.component.legends[e]}),e}(t)}function WI(t,e,n,r){switch(e){case"values":return!!n.values;case"title":if("title"===e&&t===r.title)return!0}return t===n[e]}function HI(t,e,n,r){const{encoding:i,mark:o}=r,a=mB(i[n]),u=r.config.legend,{timeUnit:s}=a,c=r.getScaleComponent(n).get("type");switch(t){case"direction":return zI({legend:e,legendConfig:u,timeUnit:s,channel:n,scaleType:c});case"format":if(_B(a))return;return MU(a,e.format,r.config);case"formatType":if(_B(a))return;return e.formatType;case"gradientLength":return uz(e.gradientLength,u.gradientLength,function({legend:t,legendConfig:e,model:n,channel:r,scaleType:i}){const{gradientHorizontalMaxLength:o,gradientHorizontalMinLength:a,gradientVerticalMaxLength:u,gradientVerticalMinLength:s}=e;if("horizontal"===zI({legend:t,legendConfig:e,channel:r,scaleType:i})){const r=uz(t.orient,e.orient);return"top"===r||"bottom"===r?TI(n,"width",a,o):a}return TI(n,"height",s,u)}({model:r,legend:e,legendConfig:u,channel:n,scaleType:c}));case"labelOverlap":return uz(e.labelOverlap,function(t){if(PN(["quantile","threshold","log"],t))return"greedy"}(c));case"symbolType":return uz(e.symbolType,function(t){return"line"===t?"stroke":"circle"}(o));case"title":return hB(a,r.config,{allowDisabling:!0})||void 0;case"type":return FI({legend:e,channel:n,timeUnit:s,scaleType:c,alwaysReturn:!1});case"values":return function(t,e){const n=t.values;if(n)return OB(e,n)}(e,a)}return e[t]}function GI(t,e){if(!t)return e.clone();const n=t.getWithExplicit("orient"),r=e.getWithExplicit("orient");if(n.explicit&&r.explicit&&n.value!==r.value)return;let i=!1;for(const n of dP){const r=MI(t.getWithExplicit(n),e.getWithExplicit(n),n,"legend",(t,e)=>{switch(n){case"symbolType":return YI(t,e);case"title":return BU(t,e);case"type":return i=!0,jI("symbol")}return CI(t,e,n,"legend")});t.setWithExplicit(n,r)}return i&&(((t.implicit||{}).encode||{}).gradient&&ez(t.implicit,["encode","gradient"]),((t.explicit||{}).encode||{}).gradient&&ez(t.explicit,["encode","gradient"])),t}function YI(t,e){return"circle"===e.value?e:t}function VI(t){const e=t.component.legends,n={};for(const r of XN(e)){const i=t.getScaleComponent(r),o=$N(i.domains);if(n[o])for(const t of n[o]){GI(t,e[r])||n[o].push(e[r])}else n[o]=[e[r].clone()]}return qN(JN(n)).map(t=>{const e=t.combine();if(e.encode&&e.encode.symbols){const t=e.encode.symbols.update;!t.fill||"transparent"===t.fill.value||t.stroke||e.stroke||(t.stroke={value:"transparent"}),e.fill&&delete t.fill}return e})}function XI(t){return iH(t)||rH(t)||nH(t)?function(t){return t.children.reduce((t,e)=>t.concat(e.assembleProjections()),JI(t))}(t):JI(t)}function JI(t){const e=t.component.projection;if(!e||e.merged)return[];const n=e.combine(),{name:r}=n,i=b(n,["name"]);if(e.data){const n={signal:`[${e.size.map(t=>t.signal).join(", ")}]`},o=e.data.reduce((e,n)=>{const r=iU(n)?n.signal:`data('${t.lookupDataSource(n)}')`;return PN(e,r)||e.push(r),e},[]);if(o.length<=0)throw new Error("Projection's fit didn't find any data sources");return[Object.assign({name:r,size:n,fit:{signal:o.length>1?`[${o.join(", ")}]`:o[0]}},i)]}return[Object.assign({name:r},{translate:{signal:"[width / 2, height / 2]"}},i)]}const ZI=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];class QI extends AI{constructor(t,e,n,r){super(Object.assign({},e),{name:t}),this.specifiedProjection=e,this.size=n,this.data=r,this.merged=!1}get isFit(){return!!this.data}}function KI(t){t.component.projection=tH(t)?function(t){if(t.hasProjection){const e=t.specifiedProjection,n=!(e&&(null!=e.scale||null!=e.translate)),r=n?[t.getSizeSignalRef("width"),t.getSizeSignalRef("height")]:void 0,i=n?function(t){const e=[];[[Yz,Gz],[Xz,Vz]].forEach(n=>{(t.channelHasField(n[0])||t.channelHasField(n[1]))&&e.push({signal:t.getName(`geojson_${e.length}`)})}),t.channelHasField(Kz)&&t.fieldDef(Kz).type===VR&&e.push({signal:t.getName(`geojson_${e.length}`)});0===e.length&&e.push(t.requestDataName(FL));return e}(t):void 0;return new QI(t.projectionName(!0),Object.assign({},t.config.projection||{},e||{}),r,i)}return}(t):function(t){if(0===t.children.length)return;let e;t.children.forEach(t=>KI(t));const n=UN(t.children,t=>{const n=t.component.projection;if(n){if(e){const t=function(t,e){const n=UN(ZI,n=>!t.explicit.hasOwnProperty(n)&&!e.explicit.hasOwnProperty(n)||!(!t.explicit.hasOwnProperty(n)||!e.explicit.hasOwnProperty(n)||$N(t.get(n))!==$N(e.get(n))));if($N(t.size)===$N(e.size)){if(n)return t;if($N(t.explicit)===$N({}))return e;if($N(e.explicit)===$N({}))return t}return null}(e,n);return t&&(e=t),!!t}return e=n,!0}return!0});if(e&&n){const n=t.projectionName(!0),r=new QI(n,e.specifiedProjection,e.size,NN(e.data));return t.children.forEach(t=>{const e=t.component.projection;e&&(e.isFit&&r.data.push(...t.component.projection.data),t.renameProjection(e.get("name"),n),e.merged=!0)}),r}return}(t)}class tW extends PU{constructor(t){let e;if(super(null),SL(t=t||{name:"source"})||(e=t.format?Object.assign({},TN(t.format,["parse"])):{}),EL(t))this._data={values:t.values};else if(AL(t)){if(this._data={url:t.url},!e.type){let n=/(?:\.([^.]+))?$/.exec(t.url)[1];PN(["json","csv","tsv","dsv","topojson"],n)||(n="json"),e.type=n}}else ML(t)?this._data={values:[{type:"Sphere"}]}:(jL(t)||SL(t))&&(this._data={});this._generator=SL(t),t.name&&(this._name=t.name),e&&XN(e).length>0&&(this._data.format=e)}get data(){return this._data}hasName(){return!!this._name}get isGenerator(){return this._generator}get dataName(){return this._name}set dataName(t){this._name=t}set parent(t){throw new Error("Source nodes have to be roots.")}remove(){throw new Error("Source nodes are roots and cannot be removed.")}hash(){throw new Error("Cannot hash sources")}assemble(){return Object.assign({name:this._name},this._data,{transform:[]})}}function eW(t){for(const e of t){for(const t of e.children)if(t.parent!==e)return console.error("Dataflow graph is inconsistent.",e,t),!1;if(!eW(e.children))return!1}return!0}class nW{constructor(){this._mutated=!1}setMutated(){this._mutated=!0}get mutatedFlag(){return this._mutated}}class rW extends nW{constructor(){super(),this._continue=!1}setContinue(){this._continue=!0}get continueFlag(){return this._continue}get flags(){return{continueFlag:this.continueFlag,mutatedFlag:this.mutatedFlag}}set flags({continueFlag:t,mutatedFlag:e}){t&&this.setContinue(),e&&this.setMutated()}reset(){}optimizeNextFromLeaves(t){if(t instanceof tW)return!1;const e=t.parent,{continueFlag:n}=this.run(t);return n&&this.optimizeNextFromLeaves(e),this.mutatedFlag}}class iW extends nW{}function oW(t,e,n,r){if(KR(n)&&EB(n.bin))t.add(aB(n,{})),t.add(aB(n,{binSuffix:"end"})),kB(n,e)&&t.add(aB(n,{binSuffix:"range"}));else if(function(t){switch(t){case Gz:case Vz:case Yz:case Xz:return!0}return!1}(e)){const n=function(t){switch(t){case Gz:return"y";case Vz:return"y2";case Yz:return"x";case Xz:return"x2"}}(e);t.add(r.getName(n))}else t.add(aB(n));return t}class aW extends PU{constructor(t,e,n){super(t),this.dimensions=e,this.measures=n}clone(){return new aW(null,new Set(this.dimensions),NN(this.measures))}get groupBy(){return this.dimensions}static makeFromEncoding(t,e){let n=!1;e.forEachFieldDef(t=>{t.aggregate&&(n=!0)});const r={},i=new Set;return n?(e.forEachFieldDef((t,n)=>{const{aggregate:o,field:a}=t;if(o)if("count"===o)r["*"]=r["*"]||{},r["*"].count=new Set([aB(t,{forAs:!0})]);else{if(Fz(o)||Nz(o)){const t=Fz(o)?"argmin":"argmax",e=o[t];r[e]=r[e]||{},r[e][t]=new Set([aB({op:t,field:e},{forAs:!0})])}else r[a]=r[a]||{},r[a][o]=new Set([aB(t,{forAs:!0})]);e$(n)&&"unaggregated"===e.scaleDomain(n)&&(r[a]=r[a]||{},r[a].min=new Set([aB({field:a,aggregate:"min"},{forAs:!0})]),r[a].max=new Set([aB({field:a,aggregate:"max"},{forAs:!0})]))}else oW(i,n,t,e)}),i.size+XN(r).length===0?null:new aW(t,i,r)):null}static makeFromTransform(t,e){const n=new Set,r={};for(const t of e.aggregate){const{op:e,field:n,as:i}=t;e&&("count"===e?(r["*"]=r["*"]||{},r["*"].count=new Set([i||aB(t,{forAs:!0})])):(r[n]=r[n]||{},r[n][e]=new Set([i||aB(t,{forAs:!0})])))}for(const t of e.groupby||[])n.add(t);return n.size+XN(r).length===0?null:new aW(t,n,r)}merge(t){return function(t,e){if(t.size!==e.size)return!1;for(const n of t)if(!e.has(n))return!1;return!0}(this.dimensions,t.dimensions)?(function(t,e){for(const n of XN(e)){const r=e[n];for(const e of XN(r))n in t?t[n][e]=new Set([...t[n][e]||[],...r[e]]):t[n]={[e]:r[e]}}}(this.measures,t.measures),!0):(function(...t){bR.debug.apply(bR,arguments)}("different dimensions, cannot merge"),!1)}addDimensions(t){t.forEach(this.dimensions.add,this.dimensions)}dependentFields(){return new Set([...this.dimensions,...XN(this.measures)])}producedFields(){const t=new Set;for(const e of XN(this.measures))for(const n of XN(this.measures[e])){const r=this.measures[e][n];0===r.size?t.add(`${n}_${e}`):r.forEach(t.add,t)}return t}hash(){return`Aggregate ${RN({dimensions:this.dimensions,measures:this.measures})}`}assemble(){const t=[],e=[],n=[];for(const r of XN(this.measures))for(const i of XN(this.measures[r]))for(const o of this.measures[r][i])n.push(o),t.push(i),e.push("*"===r?null:iz(r));return{type:"aggregate",groupby:[...this.dimensions],ops:t,fields:e,as:n}}}function uW(t,e,n){let r;r=function(t){return"as"in t}(t)?Object(ct.G)(t.as)?[t.as,`${t.as}_end`]:[t.as[0],t.as[1]]:[aB(t,{forAs:!0}),aB(t,{binSuffix:"end",forAs:!0})];const i=bB(e,void 0)||{},o=function(t,e){return`${AB(t)}_${e}`}(i,t.field),{signal:a,extentSignal:u}=function(t,e){return{signal:t.getName(`${e}_bins`),extentSignal:t.getName(`${e}_extent`)}}(n,o);return{key:o,binComponent:Object.assign({bin:i,field:t.field,as:[r]},a?{signal:a}:{},u?{extentSignal:u}:{})}}class sW extends PU{constructor(t,e){super(t),this.bins=e}clone(){return new sW(null,NN(this.bins))}static makeFromEncoding(t,e){const n=e.reduceFieldDef((t,n,r)=>{if(KR(n)&&EB(n.bin)){const{key:i,binComponent:o}=uW(n,n.bin,e);t[i]=Object.assign({},o,t[i],function(t,e,n,r){if(kB(e,n)){const i=tH(t)&&(t.axis(n)||t.legend(n))||{},o=aB(e,{expr:"datum"}),a=aB(e,{expr:"datum",binSuffix:"end"});return{formulaAs:aB(e,{binSuffix:"range",forAs:!0}),formula:NU(o,a,i.format,r)}}return{}}(e,n,r,e.config))}return t},{});return 0===XN(n).length?null:new sW(t,n)}static makeFromTransform(t,e,n){const{key:r,binComponent:i}=uW(e,e.bin,n);return new sW(t,{[r]:i})}merge(t,e){for(const n of XN(t.bins))n in this.bins?(e(t.bins[n].signal,this.bins[n].signal),this.bins[n].as=HN([...this.bins[n].as,...t.bins[n].as],RN)):this.bins[n]=t.bins[n];for(const e of t.children)t.removeChild(e),e.parent=this;t.remove()}producedFields(){return new Set(qN(qN(JN(this.bins).map(t=>t.as))))}dependentFields(){return new Set(JN(this.bins).map(t=>t.field))}hash(){return`Bin ${RN(this.bins)}`}assemble(){return qN(JN(this.bins).map(t=>{const e=[],[n,...r]=t.as,i=Object.assign({type:"bin",field:t.field,as:n,signal:t.signal},t.bin);!t.bin.extent&&t.extentSignal&&(e.push({type:"extent",field:t.field,signal:t.extentSignal}),i.extent={signal:t.extentSignal}),e.push(i);for(const t of r)for(let r=0;r<2;r++)e.push({type:"formula",expr:aB({field:n[r]},{expr:"datum"}),as:t[r]});return t.formula&&e.push({type:"formula",expr:t.formula,as:t.formulaAs}),e}))}}class cW extends PU{constructor(t,e,n,r){super(t),this.model=e,this.name=n,this.data=r;for(const t of mT){const n=e.facet[t];if(n){const{bin:r,sort:i}=n;this[t]=Object.assign({name:e.getName(`${t}_domain`),fields:[aB(n),...EB(r)?[aB(n,{binSuffix:"end"})]:[]]},xU(i)?{sortField:i}:Object(ct.z)(i)?{sortIndexField:IU(n,t)}:{})}}this.childModel=e.child}hash(){let t="Facet";for(const e of mT)this[e]&&(t+=` ${e.charAt(0)}:${RN(this[e])}`);return t}get fields(){const t=[];for(const e of mT)this[e]&&this[e].fields&&t.push(...this[e].fields);return t}getSource(){return this.name}getChildIndependentFieldsWithStep(){const t={};for(const e of["x","y"]){const n=this.childModel.component.scales[e];if(n&&!n.merged){const r=n.get("type"),i=n.get("range");if(EP(r)&&oU(i)){const n=$W(RW(this.childModel,e));n?t[e]=n:_R("Unknown field for ${channel}. Cannot calculate view size.")}}}return t}assembleRowColumnHeaderData(t,e,n){const r={row:"y",column:"x"}[t],i=[],o=[],a=[];n&&n[r]&&(e?(i.push(`distinct_${n[r]}`),o.push("max")):(i.push(n[r]),o.push("distinct")),a.push(`distinct_${n[r]}`));const{sortField:u,sortIndexField:s}=this[t];if(u){const{op:t=bU,field:e}=u;i.push(e),o.push(t),a.push(aB(u,{forAs:!0}))}else s&&(i.push(s),o.push("max"),a.push(s));return{name:this[t].name,source:e||this.data,transform:[Object.assign({type:"aggregate",groupby:this[t].fields},i.length?{fields:i,ops:o,as:a}:{})]}}assembleFacetHeaderData(t){const{columns:e}=this.model.layout,{layoutHeaders:n}=this.model.component,r=[],i={};for(const t of YU){for(const e of VU){const r=n[t]&&n[t][e]||[];for(const e of r)if(e.axes&&e.axes.length>0){i[t]=!0;break}}if(i[t]){const n=`length(data("${this.facet.name}"))`,i="row"===t?e?{signal:`ceil(${n} / ${e})`}:1:e?{signal:`min(${n}, ${e})`}:{signal:n};r.push({name:`${this.facet.name}_${t}`,transform:[{type:"sequence",start:0,stop:i}]})}}const{row:o,column:a}=i;return(o||a)&&r.unshift(this.assembleRowColumnHeaderData("facet",null,t)),r}assemble(){const t=[];let e=null;const n=this.getChildIndependentFieldsWithStep(),{column:r,row:i,facet:o}=this;if(r&&i&&(n.x||n.y)){e=`cross_${this.column.name}_${this.row.name}`;const r=[].concat(n.x||[],n.y||[]),i=r.map(()=>"distinct");t.push({name:e,source:this.data,transform:[{type:"aggregate",groupby:this.fields,fields:r,ops:i}]})}for(const r of[Lz,Pz])this[r]&&t.push(this.assembleRowColumnHeaderData(r,e,n));if(o){const e=this.assembleFacetHeaderData(n);e&&t.push(...e)}return t}}class lW extends PU{constructor(t,e,n){super(t),this.model=e,this.filter=n,this.expr=Gq(this.model,this.filter,this),this._dependentFields=UU(this.expr)}clone(){return new lW(null,this.model,NN(this.filter))}dependentFields(){return this._dependentFields}assemble(){return{type:"filter",expr:this.expr}}hash(){return`Filter ${this.expr}`}}function fW(t){return"'"===t[0]&&"'"===t[t.length-1]||'"'===t[0]&&'"'===t[t.length-1]?t.slice(1,-1):t}class hW extends PU{clone(){return new hW(null,NN(this._parse))}constructor(t,e){super(t),this._parse=e}hash(){return`Parse ${RN(this._parse)}`}static makeExplicit(t,e,n){let r={};const i=e.data;return!SL(i)&&i&&i.format&&i.format.parse&&(r=i.format.parse),this.makeWithAncestors(t,r,{},n)}static makeImplicitFromFilterTransform(t,e,n){const r={};return function t(e,n){if(MN(e))t(e.not,n);else if(CN(e))for(const r of e.and)t(r,n);else if(SN(e))for(const r of e.or)t(r,n);else n(e)}(e.filter,t=>{if(UL(t)){let e=null;zL(t)?e=t.equal:PL(t)?e=t.range[0]:LL(t)&&(e=(t.oneOf||t.in)[0]),e&&(OR(e)?r[t.field]="date":Object(ct.D)(e)?r[t.field]="number":Object(ct.G)(e)&&(r[t.field]="string")),t.timeUnit&&(r[t.field]="date")}}),0===XN(r).length?null:this.makeWithAncestors(t,{},r,n)}static makeImplicitFromEncoding(t,e,n){const r={};function i(t){var e;_B(t)?r[t.field]="date":function(t){return"quantitative"===t.type||EB(t.bin)}(t)&&((e=t.aggregate)&&Object(ct.G)(e)&&PN(["min","max"],e))?r[t.field]="number":az(t.field)>1?t.field in r||(r[t.field]="flatten"):nB(t)&&xU(t.sort)&&az(t.sort.field)>1&&(t.sort.field in r||(r[t.sort.field]="flatten"))}return(tH(e)||eH(e))&&e.forEachFieldDef((t,n)=>{if(KR(t))i(t);else{const r=FT(n);if(r===n)throw new Error(`Non-secondary channel ${n} must have type in its field definition ${JSON.stringify(t)}`);{const n=e.fieldDef(r);i(Object.assign({},t,{type:n.type}))}}}),this.makeWithAncestors(t,{},r,n)}static makeWithAncestors(t,e,n,r){for(const t of XN(n)){const e=r.getWithExplicit(t);void 0!==e.value&&(e.explicit||e.value===n[t]||"derived"===e.value||"flatten"===n[t]?delete n[t]:_R(vR.differentParse(t,n[t],e.value)))}for(const t of XN(e)){const n=r.get(t);void 0!==n&&(n===e[t]?delete e[t]:_R(vR.differentParse(t,e[t],n)))}const i=new AI(e,n);r.copyAll(i);const o={};for(const t of XN(i.combine())){const e=i.get(t);null!==e&&(o[t]=e)}return 0===XN(o).length||r.parseNothing?null:new hW(t,o)}get parse(){return this._parse}merge(t){this._parse=Object.assign({},this._parse,t.parse),t.remove()}assembleFormatParse(){const t={};for(const e of XN(this._parse)){const n=this._parse[e];1===az(e)&&(t[e]=n)}return t}producedFields(){return new Set(XN(this._parse))}dependentFields(){return new Set(XN(this._parse))}assembleTransforms(t=!1){return XN(this._parse).filter(e=>!t||az(e)>1).map(t=>{const e=function(t,e){const n=rz(t);if("number"===e)return`toNumber(${n})`;if("boolean"===e)return`toBoolean(${n})`;if("string"===e)return`toString(${n})`;if("date"===e)return`toDate(${n})`;if("flatten"===e)return n;if(0===e.indexOf("date:"))return`timeParse(${n},'${fW(e.slice(5,e.length))}')`;if(0===e.indexOf("utc:"))return`utcParse(${n},'${fW(e.slice(4,e.length))}')`;return _R(vR.unrecognizedParse(e)),null}(t,this._parse[t]);return e?{type:"formula",expr:e,as:oz(t)}:null}).filter(t=>null!==t)}}class dW extends PU{constructor(t,e){super(t),this.transform=e}clone(){return new dW(null,NN(this.transform))}addDimensions(t){this.transform.groupby=HN(this.transform.groupby.concat(t),t=>t)}dependentFields(){const t=new Set;return this.transform.groupby.forEach(e=>t.add(e)),this.transform.joinaggregate.map(t=>t.field).filter(t=>void 0!==t).forEach(e=>t.add(e)),t}producedFields(){return new Set(this.transform.joinaggregate.map(this.getDefaultName))}getDefaultName(t){return t.as||aB(t)}hash(){return`JoinAggregateTransform ${RN(this.transform)}`}assemble(){const t=[],e=[],n=[];for(const r of this.transform.joinaggregate)e.push(r.op),n.push(this.getDefaultName(r)),t.push(void 0===r.field?null:r.field);const r=this.transform.groupby;return Object.assign({type:"joinaggregate",as:n,ops:e,fields:t},void 0!==r?{groupby:r}:{})}}class pW extends PU{clone(){return new pW(null,NN(this._stack))}constructor(t,e){super(t),this._stack=e}static makeFromTransform(t,e){const{stack:n,groupby:r,as:i,offset:o="zero"}=e,a=[],u=[];if(void 0!==e.sort)for(const t of e.sort)a.push(t.field),u.push(uz(t.order,"ascending"));const s={field:a,order:u};let c;return c=function(t){return Object(ct.z)(t)&&t.every(t=>Object(ct.G)(t))&&t.length>1}(i)?i:Object(ct.G)(i)?[i,i+"_end"]:[e.stack+"_start",e.stack+"_end"],new pW(t,{stackField:n,groupby:r,offset:o,sort:s,facetby:[],as:c})}static makeFromEncoding(t,e){const n=e.stack,{encoding:r}=e;if(!n)return null;let i;if(n.groupbyChannel){i=mB(r[n.groupbyChannel])}const o=function(t){return t.stack.stackBy.reduce((t,e)=>{const n=aB(e.fieldDef);return n&&t.push(n),t},[])}(e),a=e.encoding.order;let u;return u=Object(ct.z)(a)||QR(a)?TU(a):o.reduce((t,e)=>(t.field.push(e),t.order.push("descending"),t),{field:[],order:[]}),new pW(t,{dimensionFieldDef:i,stackField:e.vgField(n.fieldChannel),facetby:[],stackby:o,sort:u,offset:n.offset,impute:n.impute,as:[e.vgField(n.fieldChannel,{suffix:"start",forAs:!0}),e.vgField(n.fieldChannel,{suffix:"end",forAs:!0})]})}get stack(){return this._stack}addDimensions(t){this._stack.facetby.push(...t)}dependentFields(){const t=new Set;t.add(this._stack.stackField),this.getGroupbyFields().forEach(t.add),this._stack.facetby.forEach(t.add);const e=this._stack.sort.field;return Object(ct.z)(e)?e.forEach(t.add):t.add(e),t}producedFields(){return new Set(this._stack.as)}hash(){return`Stack ${RN(this._stack)}`}getGroupbyFields(){const{dimensionFieldDef:t,impute:e,groupby:n}=this._stack;return t?t.bin?e?[aB(t,{binSuffix:"mid"})]:[aB(t,{}),aB(t,{binSuffix:"end"})]:[aB(t)]:n||[]}assemble(){const t=[],{facetby:e,dimensionFieldDef:n,stackField:r,stackby:i,sort:o,offset:a,impute:u,as:s}=this._stack;return u&&n&&(n.bin&&t.push({type:"formula",expr:"("+aB(n,{expr:"datum"})+"+"+aB(n,{expr:"datum",binSuffix:"end"})+")/2",as:aB(n,{binSuffix:"mid",forAs:!0})}),t.push({type:"impute",field:r,groupby:[...i,...e],key:aB(n,{binSuffix:"mid"}),method:"value",value:0})),t.push({type:"stack",groupby:[...this.getGroupbyFields(),...e],field:r,sort:o,as:s,offset:a}),t}}class gW extends PU{constructor(t,e){super(t),this.transform=e}clone(){return new gW(null,NN(this.transform))}addDimensions(t){this.transform.groupby=HN(this.transform.groupby.concat(t),t=>t)}dependentFields(){const t=new Set;return this.transform.groupby.forEach(e=>t.add(e)),this.transform.sort.forEach(e=>t.add(e.field)),this.transform.window.map(t=>t.field).filter(t=>void 0!==t).forEach(e=>t.add(e)),t}producedFields(){return new Set(this.transform.window.map(this.getDefaultName))}getDefaultName(t){return t.as||aB(t)}hash(){return`WindowTransform ${RN(this.transform)}`}assemble(){const t=[],e=[],n=[],r=[];for(const i of this.transform.window)e.push(i.op),n.push(this.getDefaultName(i)),r.push(void 0===i.param?null:i.param),t.push(void 0===i.field?null:i.field);const i=this.transform.frame,o=this.transform.groupby;if(i&&null===i[0]&&null===i[1]&&e.every(t=>zz(t)))return Object.assign({type:"joinaggregate",as:n,ops:e,fields:t},void 0!==o?{groupby:o}:{});const a=[],u=[];if(void 0!==this.transform.sort)for(const t of this.transform.sort)a.push(t.field),u.push(t.order||"ascending");const s={field:a,order:u},c=this.transform.ignorePeers;return Object.assign({type:"window",params:r,as:n,ops:e,fields:t,sort:s},void 0!==c?{ignorePeers:c}:{},void 0!==o?{groupby:o}:{},void 0!==i?{frame:i}:{})}}class mW extends rW{run(t){const e=t.parent;if(t instanceof hW){if(e instanceof tW)return this.flags;if(e.numChildren()>1)return this.setContinue(),this.flags;if(e instanceof hW)this.setMutated(),e.merge(t);else{if(VN(e.producedFields(),t.dependentFields()))return this.setContinue(),this.flags;this.setMutated(),t.swapWithParent()}}return this.setContinue(),this.flags}}class vW extends iW{mergeNodes(t,e){const n=e.shift();for(const r of e)t.removeChild(r),r.parent=n,r.remove()}run(t){const e=t.children.map(t=>t.hash()),n={};for(let r=0;r<e.length;r++)void 0===n[e[r]]?n[e[r]]=[t.children[r]]:n[e[r]].push(t.children[r]);for(const e of XN(n))n[e].length>1&&(this.setMutated(),this.mergeNodes(t,n[e]));for(const e of t.children)this.run(e);return this.mutatedFlag}}class yW extends rW{run(t){return t instanceof LU||t.numChildren()>0||t instanceof cW?this.flags:(this.setMutated(),t.remove(),this.flags)}}class bW extends rW{constructor(){super(...arguments),this.fields=new Set}run(t){if(this.setContinue(),t instanceof cq){const e=t.producedFields();GN(e,this.fields)?(this.setMutated(),t.remove()):this.fields=new Set([...this.fields,...e])}return this.flags}reset(){this.fields.clear()}}function xW(t){if(t instanceof cW)if(1!==t.numChildren()||t.children[0]instanceof LU){const n=t.model.component.data.main;!function t(e){if(e instanceof LU&&e.type===FL&&1===e.numChildren()){const n=e.children[0];n instanceof cW||(n.swapWithParent(),t(e))}}(n);const r=(e=t,function t(n){if(!(n instanceof cW)){const r=n.clone();if(r instanceof LU){const t=AW+r.getSource();r.setSource(t),e.model.component.data.outputNodes[t]=r}else(r instanceof aW||r instanceof pW||r instanceof gW||r instanceof dW)&&r.addDimensions(e.fields);return qN(n.children.map(t)).forEach(t=>t.parent=r),[r]}return qN(n.children.map(t))}),i=qN(t.children.map(r));for(const t of i)t.parent=n}else{const e=t.children[0];(e instanceof aW||e instanceof pW||e instanceof gW||e instanceof dW)&&e.addDimensions(t.fields),e.swapWithParent(),xW(t)}else t.children.map(xW);var e}class _W extends iW{run(t){t instanceof LU&&!t.isRequired()&&(this.setMutated(),t.remove());for(const e of t.children)this.run(e);return this.mutatedFlag}}class wW extends rW{run(t){const e=t.parent,n=e.children.filter(t=>t instanceof hW);if(n.length>1){const t={};for(const e of n){const n=e.parse;for(const e of XN(n))void 0===t[e]?t[e]=n[e]:t[e]!==n[e]&&delete t[e]}if(0!==XN(t).length){this.setMutated();const r=new hW(e,t);for(const i of n){for(const e of XN(t))delete i.parse[e];e.removeChild(i),i.parent=r,0===XN(i.parse).length&&i.remove()}}}return this.setContinue(),this.flags}}class OW extends rW{run(t){const e=t.parent,n=e.children.filter(t=>t instanceof aW),r={};for(const t of n){const e=RN(XN(t.groupBy).sort());e in r||(r[e]=[]),r[e].push(t)}for(const t of XN(r)){const n=r[t];if(n.length>1){const t=n.pop();for(const r of n)t.merge(r)&&(e.removeChild(r),r.parent=t,r.remove(),this.setMutated())}}return this.setContinue(),this.flags}}class kW extends rW{constructor(t){super(),this.model=t}run(t){const e=t.parent,n=!(e instanceof tW||e instanceof lW||e instanceof hW),r=[],i=[];for(const t of e.children)t instanceof sW&&(n&&!VN(e.producedFields(),t.dependentFields())?r.push(t):i.push(t));if(r.length>0){const t=r.pop();for(const e of r)t.merge(e,this.model.renameSignal.bind(this.model));this.setMutated(),e instanceof sW?e.merge(t,this.model.renameSignal.bind(this.model)):t.swapWithParent()}if(i.length>1){const t=i.pop();for(const e of i)t.merge(e,this.model.renameSignal.bind(this.model));this.setMutated()}return this.setContinue(),this.flags}}const AW="scale_",EW=5;function jW(t){const e=[];return t.forEach(function t(n){0===n.numChildren()?e.push(n):n.children.forEach(t)}),e}function SW(t){return t}function CW(t,e,n){return e.map(e=>{if(t instanceof rW){const n=t.optimizeNextFromLeaves(e);return t.reset(),n}return t.run(e)}).some(SW)||n}function MW(t,e){let n=t.sources,r=!1;return r=CW(new _W,n,r),n=n.filter(t=>t.numChildren()>0),r=CW(new yW,jW(n),r),n=n.filter(t=>t.numChildren()>0),r=CW(new mW,jW(n),r),r=CW(new kW(e),jW(n),r),r=CW(new bW,jW(n),r),r=CW(new wW,jW(n),r),r=CW(new OW,jW(n),r),r=CW(new vW,n,r),t.sources=n,r}class DW{constructor(t){Object.defineProperty(this,"signal",{enumerable:!0,get:t})}static fromName(t,e){return new DW(()=>t(e))}}function FW(t){tH(t)?function(t){const e=t.specifiedScales,n=t.component.scales;XN(n).forEach(r=>{const i=e[r],o=i?i.domain:void 0,a=function(t,e){const n=t.getScaleComponent(e).get("type"),r=function(t,e,n,r){if("unaggregated"===t){const{valid:t,reason:r}=TW(e,n);if(!t)return void _R(r)}else if(void 0===t&&r.useUnaggregatedDomain){const{valid:t}=TW(e,n);if(t)return"unaggregated"}return t}(t.scaleDomain(e),t.fieldDef(e),n,t.config.scale);r!==t.scaleDomain(e)&&(t.specifiedScales[e]=Object.assign({},t.specifiedScales[e],{domain:r}));if("x"===e&&t.channelHasField("x2"))return t.channelHasField("x")?NW(n,r,t,"x").concat(NW(n,r,t,"x2")):NW(n,r,t,"x2");if("y"===e&&t.channelHasField("y2"))return t.channelHasField("y")?NW(n,r,t,"y").concat(NW(n,r,t,"y2")):NW(n,r,t,"y2");return NW(n,r,t,e)}(t,r),u=n[r];if(u.domains=a,DP(o)&&u.set("domainRaw",{signal:Oq+RN(o)},!0),t.component.data.isFaceted){let e=t;for(;!eH(e)&&e.parent;)e=e.parent;const n=e.component.resolve.scale[r];if("shared"===n)for(const t of a)aU(t)&&(t.data=AW+t.data.replace(AW,""))}})}(t):function(t){for(const e of t.children)FW(e);const e=t.component.scales;XN(e).forEach(n=>{let r,i=null;for(const e of t.children){const t=e.component.scales[n];if(t){r=void 0===r?t.domains:r.concat(t.domains);const e=t.get("domainRaw");i&&e&&i.signal!==e.signal&&_R("The same selection must be used to override scale domains in a layered view."),i=e}}e[n].domains=r,i&&e[n].set("domainRaw",i,!0)})}(t)}function NW(t,e,n,r){const i=n.fieldDef(r);if(e&&"unaggregated"!==e&&!DP(e)){const{type:t,timeUnit:n}=i;return"temporal"===t||n?function(t,e,n){return t.map(t=>({signal:`{data: ${wB(t,{timeUnit:n,type:e})}}`}))}(e,t,n):[e]}const o=n.stack;if(o&&r===o.fieldChannel){if("normalize"===o.offset)return[[0,1]];const t=n.requestDataName(FL);return[{data:t,field:n.vgField(r,{suffix:"start"})},{data:t,field:n.vgField(r,{suffix:"end"})}]}const a=e$(r)?function(t,e,n){if(!EP(n))return;const r=t.fieldDef(e),i=r.sort;if(_U(i))return{op:"min",field:IU(r,e),order:"ascending"};const o=null!==t.stack;if(xU(i))return zW(i,o);if(function(t){return!!t&&!!t.encoding}(i)){const{encoding:e,order:n}=i,{aggregate:r,field:a}=t.fieldDef(e),u={op:r,field:a,order:n};return zW(u,o)}if("descending"===i)return{op:"min",field:t.vgField(e),order:"descending"};if(PN(["ascending",void 0],i))return!0;return}(n,r,t):void 0;if("unaggregated"===e){const t=n.requestDataName(FL),{field:e}=i;return[{data:t,field:aB({field:e,aggregate:"min"})},{data:t,field:aB({field:e,aggregate:"max"})}]}if(EB(i.bin)){if(EP(t))return"bin-ordinal"===t?[]:[{data:QN(a)?n.requestDataName(FL):n.requestDataName(NL),field:n.vgField(r,kB(i,r)?{binSuffix:"range"}:{}),sort:!0!==a&&Object(ct.E)(a)?a:{field:n.vgField(r,{}),op:"min"}}];if(EB(i.bin)){const t=n.getName(aB(i,{suffix:"bins"}));return[new DW(()=>{const e=n.getSignalName(t);return`[${e}.start, ${e}.stop]`})]}return[{data:n.requestDataName(FL),field:n.vgField(r,{})}]}return a?[{data:QN(a)?n.requestDataName(FL):n.requestDataName(NL),field:n.vgField(r),sort:a}]:[{data:n.requestDataName(FL),field:n.vgField(r)}]}function zW(t,e){const{op:n,field:r,order:i}=t;return Object.assign({op:n||(e?"sum":bU)},r?{field:iz(r)}:{},i?{order:i}:{})}function TW(t,e){const{aggregate:n,type:r}=t;return n?Object(ct.G)(n)&&!Bz[n]?{valid:!1,reason:vR.unaggregateDomainWithNonSharedDomainOp(n)}:"quantitative"===r&&"log"===e?{valid:!1,reason:vR.unaggregatedDomainWithLogScale(t)}:{valid:!0}:{valid:!1,reason:vR.unaggregateDomainHasNoEffectForRawField(t)}}function $W(t){if(aU(t)&&Object(ct.G)(t.field))return t.field;if(function(t){return!Object(ct.z)(t)&&"fields"in t&&!("data"in t)}(t)){let e;for(const n of t.fields)if(aU(n)&&Object(ct.G)(n.field))if(e){if(e!==n.field)return _R("Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect."),e}else e=n.field;return _R("Detected faceted independent scales that union domain of identical fields from different source detected. We will assume that this is the same field from a different fork of the same data source. However, if this is not case, the result view size maybe incorrect."),e}if(function(t){return!Object(ct.z)(t)&&"fields"in t&&"data"in t}(t)){_R("Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.");const e=t.fields[0];return Object(ct.G)(e)?e:void 0}}function RW(t,e){return function(t){const e=HN(t.map(t=>{if(aU(t)){const{sort:e}=t;return b(t,["sort"])}return t}),RN),n=HN(t.map(t=>{if(aU(t)){const e=t.sort;return void 0===e||QN(e)||("count"===e.op&&delete e.field,"ascending"===e.order&&delete e.order),e}}).filter(t=>void 0!==t),RN);if(0===e.length)return;if(1===e.length){const e=t[0];if(aU(e)&&n.length>0){let t=n[0];return n.length>1&&(_R(vR.MORE_THAN_ONE_SORT),t=!0),Object.assign({},e,{sort:t})}return e}const r=HN(n.map(t=>QN(t)?t:"count"===t.op?t:(_R(vR.domainSortDropped(t)),!0)),RN);let i;1===r.length?i=r[0]:r.length>1&&(_R(vR.MORE_THAN_ONE_SORT),i=!0);const o=HN(t.map(t=>aU(t)?t.data:null),t=>t);if(1===o.length&&null!==o[0])return Object.assign({data:o[0],fields:e.map(t=>t.field)},i?{sort:i}:{});return Object.assign({fields:e},i?{sort:i}:{})}(t.component.scales[e].domains.map(e=>(aU(e)&&(e.data=t.lookupDataSource(e.data)),e)))}function BW(t){return XN(t.component.scales).reduce((e,n)=>{const r=t.component.scales[n];if(r.merged)return e;const i=r.combine();let{domainRaw:o}=i;const{name:a,type:u,domainRaw:s,range:c}=i,l=b(i,["name","type","domainRaw","range"]),f=function(t,e,n){if(("x"===n||"y"===n)&&oU(t))return{step:{signal:e+"_step"}};return t}(i.range,a,n);o&&function(t){return t.signal.indexOf(Oq)>=0}(o)&&(o=function(t,e){const n=JSON.parse(e.signal.replace(Oq,"")),r=KN(n.selection),i=n.encoding;let o=n.field,a=t.component.selection&&t.component.selection[r];if(!a){if(a=t.getSelectionComponent(r,n.selection),i||o){if(i&&!o){const t=a.project.items.filter(t=>t.channel===i);!t.length||t.length>1?(o=a.project.items[0].field,_R((t.length?"Multiple ":"No ")+`matching ${Object(ct.W)(i)} encoding found for selection ${Object(ct.W)(n.selection)}. `+`Using "field": ${Object(ct.W)(o)}.`)):o=t[0].field}}else o=a.project.items[0].field,a.project.items.length>1&&_R('A "field" or "encoding" must be specified when using a selection as a scale domain. '+`Using "field": ${Object(ct.W)(o)}.`);return{signal:rz(o,r)}}return _R('Use "bind": "scales" to setup a binding for scales and selections within the same view.'),{signal:"null"}}(t,o));const h=RW(t,n);return e.push(Object.assign({name:a,type:u},h?{domain:h}:{},o?{domainRaw:o}:{},{range:f},l)),e},[])}class PW extends AI{constructor(t,e){super({},{name:t}),this.merged=!1,this.domains=[],this.setWithExplicit("type",e)}get domainDefinitelyIncludesZero(){if(!1!==this.get("zero"))return!0;const t=this.domains;return!!Object(ct.z)(t)&&LN(t,t=>Object(ct.z)(t)&&2===t.length&&t[0]<=0&&t[1]>=0)}}const LW=["range","rangeStep","scheme"];function UW(t){return"x"===t?"width":"y"===t?"height":void 0}function qW(t){const e=t.component.scales;t$.forEach(n=>{const r=e[n];if(!r)return;const i=t.getScaleComponent(n),o=t.specifiedScales[n],a=t.fieldDef(n),u=UW(n);let s=u?!!t.component.layoutSize.get(u):void 0;const c=i.get("type"),l=PN(["point","band"],c)||!!o.rangeStep;u&&t.fit&&!s&&l&&(_R(vR.CANNOT_FIX_RANGE_STEP_WITH_FIT),s=!0);const f=function(t){const e=[];for(const n of WT){const r=IW(t,n);void 0!==r&&e.push(r)}return e}(t),h=function(t,e,n,r,i,o,a,u,s,c,l){const f=s||null===i.rangeStep;for(const e of LW)if(void 0!==i[e]){const r=PP(n,e),o=LP(t,e);if(r)if(o)_R(o);else switch(e){case"range":return EI(i[e]);case"scheme":return EI(WW(i[e]));case"rangeStep":{const n=i[e];if(null!==n){if(!s)return EI({step:n});_R(vR.rangeStepDropped(t))}}}else _R(vR.scalePropertyNotWorkWithScaleType(n,e,t))}return jI(function(t,e,n,r,i,o,a,u,s,c,l){switch(t){case qz:case Iz:if(PN(["point","band"],n)&&!c)if(t===qz&&"text"===a){if(i.scale.textXRangeStep)return{step:i.scale.textXRangeStep}}else if(i.scale.rangeStep)return{step:i.scale.rangeStep};return t===Iz&&jP(n)?[DW.fromName(e,u),0]:[0,DW.fromName(e,u)];case tT:{const e=function(t,e,n){if(e)return 0;switch(t){case"bar":case"tick":return n.scale.minBandSize;case"line":case"trail":case"rule":return n.scale.minStrokeWidth;case"text":return n.scale.minFontSize;case"point":case"square":case"circle":return n.scale.minSize}throw new Error(vR.incompatibleChannel("size",t))}(a,o,i),r=function(t,e,n){const r=n.scale;switch(t){case"bar":case"tick":{if(void 0!==n.scale.maxBandSize)return n.scale.maxBandSize;const t=GW(e,n.scale);return Object(ct.D)(t)?t-1:new DW(()=>`${t.signal} - 1`)}case"line":case"trail":case"rule":return n.scale.maxStrokeWidth;case"text":return n.scale.maxFontSize;case"point":case"square":case"circle":{if(n.scale.maxSize)return n.scale.maxSize;const t=GW(e,r);return Object(ct.D)(t)?Math.pow(HW*t,2):new DW(()=>`pow(${HW} * ${t.signal}, 2)`)}}throw new Error(vR.incompatibleChannel("size",t))}(a,s,i);return CP(n)?function(t,e,n){const r=()=>{const r=iU(e)?e.signal:e,i=`(${r} - ${t}) / (${n} - 1)`;return`sequence(${t}, ${e} + ${i}, ${i})`};return iU(e)?new DW(r):{signal:r()}}(e,r,function(t,e,n,r){switch(t){case"quantile":return e.scale.quantileCount;case"quantize":return e.scale.quantizeCount;case"threshold":return void 0!==n&&Object(ct.z)(n)?n.length+1:(_R(vR.domainRequiredForThresholdScale(r)),3)}}(n,i,l,t)):[e,r]}case iT:return[i.scale.minStrokeWidth,i.scale.maxStrokeWidth];case Kz:return"symbol";case Jz:case Zz:case Qz:return"ordinal"===n?"nominal"===r?"category":"ordinal":"rect"===a||"geoshape"===a?"heatmap":"ramp";case eT:case nT:case rT:return[i.scale.minOpacity,i.scale.maxOpacity]}throw new Error(`Scale range undefined for channel ${t}`)}(t,e,n,r,o,a,u,c,l,f,i.domain))}(n,t.getSignalName.bind(t),c,a.type,o,t.config,r.get("zero"),t.mark,s,t.getName(u),f);r.setWithExplicit("range",h)})}function IW(t,e){const n=t.getScaleComponent(e);if(!n)return;const r=n.get("type"),i=t.fieldDef(e);if(EP(r)){const t=n&&n.get("range");if(t&&oU(t)&&Object(ct.D)(t.step))return t.step}else if(i&&i.bin&&EB(i.bin)){const n=t.getName(aB(i,{suffix:"bins"})),r=UW(e),o=t.getName(r);return new DW(()=>{const e=t.getSignalName(n),r=`(${e}.stop - ${e}.start) / ${e}.step`;return`${t.getSignalName(o)} / (${r})`})}}function WW(t){return function(t){return t&&!!t.name}(t)?Object.assign({scheme:t.name},TN(t,["name"])):{scheme:t}}const HW=.95;function GW(t,e){if(t.length>0){let e=1/0;for(const n of t)iU(n)?e=void 0:void 0!==e&&n<e&&(e=n);return void 0!==e?e:new DW(()=>{return`min(${t.map(t=>iU(t)?t.signal:t).join(", ")})`})}return e.rangeStep?e.rangeStep:21}function YW(t,e){tH(t)?function(t,e){const n=t.component.scales;XN(n).forEach(r=>{const i=t.specifiedScales[r],o=n[r],a=t.getScaleComponent(r),u=t.fieldDef(r),s=t.config,c=i[e],l=a.get("type"),f=PP(l,e),h=LP(r,e);if(void 0!==c&&(f?h&&_R(h):_R(vR.scalePropertyNotWorkWithScaleType(l,e,r))),f&&void 0===h)if(void 0!==c)o.copyKeyFromObject(e,i);else{const n=function(t,e,n,r,i,o,a,u,s,c){const l=c.scale,{type:f,sort:h}=r;switch(t){case"bins":return function(t,e){const n=e.bin;if(EB(n)){const n=t.getName(aB(e,{suffix:"bins"}));return new DW(()=>t.getSignalName(n))}if(jB(n)&&SB(n)&&void 0!==n.step)return{step:n.step};return}(e,r);case"interpolate":return function(t,e){if(PN([Jz,Zz,Qz],t)&&"nominal"!==e)return"hcl";return}(n,f);case"nice":return function(t,e,n){if(n.bin||PN([pP.TIME,pP.UTC],t))return;return!!PN([qz,Iz],e)||void 0}(i,n,r);case"padding":return function(t,e,n,r,i,o){if(PN([qz,Iz],t)){if(SP(e)){if(void 0!==n.continuousPadding)return n.continuousPadding;const{type:e,orient:a}=i;if("bar"===e&&!r.bin&&("vertical"===a&&"x"===t||"horizontal"===a&&"y"===t))return o.continuousBandSize}if(e===pP.POINT)return n.pointPadding}return}(n,i,l,r,s,c.bar);case"paddingInner":return function(t,e,n,r){if(void 0!==t)return;if(PN([qz,Iz],e)){const{bandPaddingInner:t,barBandPaddingInner:e,rectBandPaddingInner:i}=r;return uz(t,"bar"===n?e:i)}return}(o,n,s.type,l);case"paddingOuter":return function(t,e,n,r,i,o){if(void 0!==t)return;if(PN([qz,Iz],e)&&n===pP.BAND){const{bandPaddingOuter:t,barBandPaddingOuter:e,rectBandPaddingOuter:n}=o;return uz(t,"bar"===r?e:n,i/2)}return}(o,n,i,s.type,a,l);case"reverse":return function(t,e){if(jP(t)&&"descending"===e)return!0;return}(i,h);case"zero":return function(t,e,n,r,i){if(n&&"unaggregated"!==n&&jP(i)){if(Object(ct.z)(n)){const t=n[0],e=n[n.length-1];if(t<=0&&e>=0)return!0}return!1}if("size"===t&&"quantitative"===e.type&&!CP(i))return!0;if(!e.bin&&PN([qz,Iz],t)){const{orient:e,type:n}=r;return!PN(["bar","area","line","trail"],n)||!("horizontal"===e&&"y"===t||"vertical"===e&&"x"===t)}return!1}(n,r,u,s,i)}return l[t]}(e,t,r,u,a.get("type"),a.get("padding"),a.get("paddingInner"),i.domain,t.markDef,s);void 0!==n&&o.set(e,n,!1)}})}(t,e):XW(t,e)}function VW(t){tH(t)?qW(t):XW(t,"range")}function XW(t,e){const n=t.component.scales;for(const n of t.children)"range"===e?VW(n):YW(n,e);XN(n).forEach(r=>{let i;for(const n of t.children){const t=n.component.scales[r];if(t){i=MI(i,t.getWithExplicit(e),e,"scale",SI((t,n)=>{switch(e){case"range":return t.step&&n.step?t.step-n.step:0}return 0}))}}n[r].setWithExplicit(e,i)})}function JW(t,e,n,r){const i=function(t,e,n){switch(e.type){case"nominal":case"ordinal":if(pT(t)||"discrete"===r$(t))return"shape"===t&&"ordinal"===e.type&&_R(vR.discreteChannelCannotEncode(t,"ordinal")),"ordinal";if(PN(["x","y"],t)){if(PN(["rect","bar","rule"],n))return"band";if("bar"===n)return"band"}return"point";case"temporal":return pT(t)?"time":"discrete"===r$(t)?(_R(vR.discreteChannelCannotEncode(t,"temporal")),"ordinal"):"time";case"quantitative":return pT(t)?EB(e.bin)?"bin-ordinal":"linear":"discrete"===r$(t)?(_R(vR.discreteChannelCannotEncode(t,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(vR.invalidFieldType(e.type))}(e,n,r),{type:o}=t;return e$(e)?void 0!==o?qP(e,o)?UP(o,n.type)?o:(_R(vR.scaleTypeNotWorkWithFieldDef(o,i)),i):(_R(vR.scaleTypeNotWorkWithChannel(e,o,i)),i):i:null}function ZW(t){tH(t)?t.component.scales=function(t){const{encoding:e,mark:n}=t;return t$.reduce((r,i)=>{let o,a;const u=e[i];if(QR(u)&&n===wz&&i===Kz&&u.type===VR)return r;if(QR(u)?(o=u,a=u.scale):ZR(u)&&(o=u.condition,a=u.condition.scale),o&&null!==a&&!1!==a){const e=JW(a=a||{},i,o,n);r[i]=new PW(t.scaleName(i+"",!0),{value:e,explicit:a.type===e})}return r},{})}(t):t.component.scales=function(t){const e=t.component.scales={},n={},r=t.component.resolve;for(const e of t.children)ZW(e),XN(e.component.scales).forEach(i=>{if(r.scale[i]=r.scale[i]||OI(i,t),"shared"===r.scale[i]){const t=n[i],o=e.component.scales[i].getWithExplicit("type");t?vP(t.value,o.value)?n[i]=MI(t,o,"type","scale",QW):(r.scale[i]="independent",delete n[i]):n[i]=o}});return XN(n).forEach(r=>{const i=t.scaleName(r,!0),o=n[r];e[r]=new PW(i,o);for(const e of t.children){const t=e.component.scales[r];t&&(e.renameScale(t.get("name"),i),t.merged=!0)}}),e}(t)}const QW=SI((t,e)=>bP(t)-bP(e));class KW{constructor(){this.nameMap={}}rename(t,e){this.nameMap[t]=e}has(t){return void 0!==this.nameMap[t]}get(t){for(;this.nameMap[t]&&t!==this.nameMap[t];)t=this.nameMap[t];return t}}function tH(t){return t&&"unit"===t.type}function eH(t){return t&&"facet"===t.type}function nH(t){return t&&"repeat"===t.type}function rH(t){return t&&"concat"===t.type}function iH(t){return t&&"layer"===t.type}class oH{constructor(t,e,n,r,i,o,a,u){this.type=e,this.parent=n,this.config=i,this.repeater=o,this.view=u,this.children=[],this.correctDataNames=t=>(t.from&&t.from.data&&(t.from.data=this.lookupDataSource(t.from.data)),t.from&&t.from.facet&&t.from.facet.data&&(t.from.facet.data=this.lookupDataSource(t.from.facet.data)),t),this.parent=n,this.config=i,this.repeater=o,this.name=t.name||r,this.title=Object(ct.G)(t.title)?{text:t.title}:t.title,this.scaleNameMap=n?n.scaleNameMap:new KW,this.projectionNameMap=n?n.projectionNameMap:new KW,this.signalNameMap=n?n.signalNameMap:new KW,this.data=t.data,this.description=t.description,this.transforms=(t.transform||[]).map(t=>HL(t)?{filter:DN(t.filter,WL)}:t),this.layout=Cz(t)||aL(t)?{}:function(t,e,n){const r=n[e],i={},{spacing:o,columns:a}=r;void 0!==o&&(i.spacing=o),void 0!==a&&(MR(t)&&!CR(t.facet)||JP(t)&&Object(ct.z)(t.repeat)||YP(t))&&(i.columns=a);for(const e of ZP)if(void 0!==t[e])if("spacing"===e){const n=t[e];i[e]=Object(ct.D)(n)?n:{row:n.row||o,column:n.column||o}}else i[e]=t[e];return i}(t,e,i),this.component={data:{sources:n?n.component.data.sources:[],outputNodes:n?n.component.data.outputNodes:{},outputNodeRefCounts:n?n.component.data.outputNodeRefCounts:{},isFaceted:MR(t)||n&&n.component.data.isFaceted&&!t.data},layoutSize:new AI,layoutHeaders:{row:{},column:{},facet:{}},mark:null,resolve:Object.assign({scale:{},axis:{},legend:{}},a?NN(a):{}),selection:null,scales:null,projection:null,axes:{},legends:{}}}get width(){return this.getSizeSignalRef("width")}get height(){return this.getSizeSignalRef("height")}initSize(t){const{width:e,height:n}=t;e&&this.component.layoutSize.set("width",e,!0),n&&this.component.layoutSize.set("height",n,!0)}parse(){this.parseScale(),this.parseLayoutSize(),this.renameTopLevelLayoutSizeSignal(),this.parseSelections(),this.parseProjection(),this.parseData(),this.parseAxesAndHeaders(),this.parseLegends(),this.parseMarkGroup()}parseScale(){!function(t){ZW(t),FW(t);for(const e of BP)YW(t,e);VW(t)}(this)}parseProjection(){KI(this)}renameTopLevelLayoutSizeSignal(){"width"!==this.getName("width")&&this.renameSignal(this.getName("width"),"width"),"height"!==this.getName("height")&&this.renameSignal(this.getName("height"),"height")}parseLegends(){II(this)}assembleGroupStyle(){if("unit"===this.type||"layer"===this.type)return this.view&&this.view.style||"cell"}assembleEncodeFromView(t){const{style:e}=t,n=b(t,["style"]),r={};for(const t in n)if(n.hasOwnProperty(t)){const e=n[t];void 0!==e&&(r[t]={value:e})}return r}assembleGroupEncodeEntry(t){let e=void 0;return this.view&&(e=this.assembleEncodeFromView(this.view)),t||"unit"!==this.type&&"layer"!==this.type?e:Object.assign({width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height")},e||{})}assembleLayout(){if(!this.layout)return;const t=this.layout,{spacing:e}=t,n=b(t,["spacing"]),{component:r,config:i}=this,o=function(t,e){const n={};for(const r of mT){const i=t[r];if(i&&i.facetFieldDef){const{titleAnchor:t,titleOrient:o}=GU(["titleAnchor","titleOrient"],i.facetFieldDef,e,r),a=WU(r,o),u=rq(t,a);void 0!==u&&(n[a]=u)}}return XN(n).length>0?n:void 0}(r.layoutHeaders,i);return Object.assign({padding:e},this.assembleDefaultLayout(),n,o?{titleBand:o}:{})}assembleDefaultLayout(){return{}}assembleHeaderMarks(){const{layoutHeaders:t}=this.component;let e=[];for(const n of mT)t[n].title&&e.push(XU(this,n));for(const t of YU)e=e.concat(QU(this,t));return e}assembleAxes(){return function(t,e){const{x:n=[],y:r=[]}=t;return[...n.map(t=>dU(t,"main",e)),...n.map(t=>dU(t,"grid",e)),...r.map(t=>dU(t,"main",e)),...r.map(t=>dU(t,"grid",e))].filter(t=>t)}(this.component.axes,this.config)}assembleLegends(){return VI(this)}assembleProjections(){return XI(this)}assembleTitle(){const t=this.title||{},{encoding:e}=t,n=b(t,["encoding"]),r=Object.assign({},QP(this.config.title).nonMark,n,e?{encode:{update:e}}:{});if(r.text)return PN(["unit","layer"],this.type)?PN(["middle",void 0],r.anchor)&&(r.frame=r.frame||"group"):r.anchor=r.anchor||"start",XN(r).length>0?r:void 0}assembleGroup(t=[]){const e={};(t=t.concat(this.assembleSignals())).length>0&&(e.signals=t);const n=this.assembleLayout();n&&(e.layout=n),e.marks=[].concat(this.assembleHeaderMarks(),this.assembleMarks());const r=!this.parent||eH(this.parent)?function t(e){return iH(e)||rH(e)||nH(e)?e.children.reduce((e,n)=>e.concat(t(n)),BW(e)):BW(e)}(this):[];r.length>0&&(e.scales=r);const i=this.assembleAxes();i.length>0&&(e.axes=i);const o=this.assembleLegends();return o.length>0&&(e.legends=o),e}hasDescendantWithFieldOnChannel(t){for(const e of this.children)if(tH(e)){if(e.channelHasField(t))return!0}else if(e.hasDescendantWithFieldOnChannel(t))return!0;return!1}getName(t){return KN((this.name?this.name+"_":"")+t)}requestDataName(t){const e=this.getName(t),n=this.component.data.outputNodeRefCounts;return n[e]=(n[e]||0)+1,e}getSizeSignalRef(t){if(eH(this.parent)){const e="width"===t?"x":"y",n=this.component.scales[e];if(n&&!n.merged){const t=n.get("type"),r=n.get("range");if(EP(t)&&oU(r)){const t=n.get("name"),r=$W(RW(this,e));if(r){return{signal:sq(t,n,aB({aggregate:"distinct",field:r},{expr:"datum"}))}}return _R("Unknown field for ${channel}. Cannot calculate view size."),null}}}return{signal:this.signalNameMap.get(this.getName(t))}}lookupDataSource(t){const e=this.component.data.outputNodes[t];return e?e.getSource():t}getSignalName(t){return this.signalNameMap.get(t)}renameSignal(t,e){this.signalNameMap.rename(t,e)}renameScale(t,e){this.scaleNameMap.rename(t,e)}renameProjection(t,e){this.projectionNameMap.rename(t,e)}scaleName(t,e){return e?this.getName(t):CT(t)&&e$(t)&&this.component.scales[t]||this.scaleNameMap.has(this.getName(t))?this.scaleNameMap.get(this.getName(t)):void 0}projectionName(t){return t?this.getName("projection"):this.component.projection&&!this.component.projection.merged||this.projectionNameMap.has(this.getName("projection"))?this.projectionNameMap.get(this.getName("projection")):void 0}getScaleComponent(t){if(!this.component.scales)throw new Error("getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().");const e=this.component.scales[t];return e&&!e.merged?e:this.parent?this.parent.getScaleComponent(t):void 0}getSelectionComponent(t,e){let n=this.component.selection[t];if(!n&&this.parent&&(n=this.parent.getSelectionComponent(t,e)),!n)throw new Error(vR.selectionNotFound(e));return n}}class aH extends oH{vgField(t,e={}){const n=this.fieldDef(t);if(n)return aB(n,e)}reduceFieldDef(t,e,n){return $B(this.getMapping(),(e,n,r)=>{const i=gB(n);return i?t(e,i,r):e},e,n)}forEachFieldDef(t,e){TB(this.getMapping(),(e,n)=>{const r=gB(e);r&&t(r,n)},e)}}class uH extends PU{constructor(t,e){super(t),this.fieldDefs=e}clone(){return new uH(null,Object.assign({},this.fieldDefs))}static make(t,e){const{config:n,mark:r}=e;if("filter"!==n.invalidValues)return null;const i=e.reduceFieldDef((t,n,i)=>{const o=e$(i)&&e.getScaleComponent(i);if(o){!jP(o.get("type"))||n.aggregate||kz(r)||(t[n.field]=n)}return t},{});return XN(i).length?new uH(t,i):null}get filter(){return this.fieldDefs}assemble(){const t=XN(this.filter).reduce((t,e)=>{const n=this.fieldDefs[e],r=aB(n,{expr:"datum"});return null!==n&&(t.push(`${r} !== null`),t.push(`!isNaN(${r})`)),t},[]);return t.length>0?{type:"filter",expr:t.join(" && ")}:null}}class sH extends PU{constructor(t,e){super(t),this.transform=e,this.transform=NN(e);const{flatten:n,as:r=[]}=this.transform;this.transform.as=n.map((t,e)=>r[e]||t)}clone(){return new sH(this.parent,NN(this.transform))}producedFields(){return new Set(this.transform.as)}hash(){return`FlattenTransform ${RN(this.transform)}`}assemble(){const{flatten:t,as:e}=this.transform;return{type:"flatten",fields:t,as:e}}}class cH extends PU{constructor(t,e){super(t),this.transform=e,this.transform=NN(e);const n=this.transform.as||[void 0,void 0];this.transform.as=[n[0]||"key",n[1]||"value"]}clone(){return new cH(null,NN(this.transform))}producedFields(){return new Set(this.transform.as)}hash(){return`FoldTransform ${RN(this.transform)}`}assemble(){const{fold:t,as:e}=this.transform;return{type:"fold",fields:t,as:e}}}class lH extends PU{constructor(t,e,n,r){super(t),this.fields=e,this.geojson=n,this.signal=r}clone(){return new lH(null,NN(this.fields),this.geojson,this.signal)}static parseAll(t,e){if(e.component.projection&&!e.component.projection.isFit)return t;let n=0;if([[Yz,Gz],[Xz,Vz]].forEach(r=>{const i=r.map(t=>e.channelHasField(t)?e.fieldDef(t).field:eB(e.encoding[t])?{expr:e.encoding[t].value+""}:void 0);(i[0]||i[1])&&(t=new lH(t,i,null,e.getName(`geojson_${n++}`)))}),e.channelHasField(Kz)){const r=e.fieldDef(Kz);r.type===VR&&(t=new lH(t,null,r.field,e.getName(`geojson_${n++}`)))}return t}assemble(){return Object.assign({type:"geojson"},this.fields?{fields:this.fields}:{},this.geojson?{geojson:this.geojson}:{},{signal:this.signal})}}class fH extends PU{constructor(t,e,n,r){super(t),this.projection=e,this.fields=n,this.as=r}clone(){return new fH(null,this.projection,NN(this.fields),NN(this.as))}static parseAll(t,e){return e.projectionName()?([[Yz,Gz],[Xz,Vz]].forEach(n=>{const r=n.map(t=>e.channelHasField(t)?e.fieldDef(t).field:eB(e.encoding[t])?{expr:e.encoding[t].value+""}:void 0),i=n[0]===Xz?"2":"";(r[0]||r[1])&&(t=new fH(t,e.projectionName(),r,[e.getName("x"+i),e.getName("y"+i)]))}),t):t}assemble(){return{type:"geopoint",projection:this.projection,fields:this.fields,as:this.as}}}class hH extends PU{constructor(t,e){super(t),this.params=e}clone(){return new hH(null,this.params)}assemble(){return Object.assign({type:"graticule"},!0===this.params?{}:this.params)}}class dH extends PU{clone(){return new dH(null)}constructor(t){super(t)}producedFields(){return new Set([WP])}hash(){return"Identifier"}assemble(){return{type:"identifier",as:WP}}}function pH(t,e){const{config:n,encoding:r,markDef:i}=t,o=i.orient,a=r.size,u="x"===e?"horizontal"===o:"vertical"===o,s="x"===e?"x2":"y2",c=r[e],l=r[s],f=t.scaleName(e),h=t.getScaleComponent(e),d=uz(i.binSpacing,n.bar.binSpacing),p=h?h.get("reverse"):void 0;if(QR(c)&&jB(c.bin))return bI({fieldDef:c,fieldDef2:l,channel:e,mark:"bar",scaleName:f,spacing:d,reverse:p});if(u||l)return Object.assign({},xI(e,t,"zeroOrMin"),_I(t,"zeroOrMin",s));{const r="x"===e?"width":"height";if(QR(c)){const o=h.get("type");if(EB(c.bin)&&!a&&!EP(o))return bI({fieldDef:c,channel:e,scaleName:f,mark:"bar",spacing:d,reverse:p});if(o===pP.BAND)return yI(c,e,t,gH(i,r,f,h,n))}return function(t,e,n,r){const i="x"===t?"xc":"yc",o="x"===t?"width":"height";return Object.assign({},xI(t,e,n,i),pI("size",e,{defaultRef:r,vgChannel:o}))}(e,t,oI(t[r]),gH(i,r,f,h,n))}}function gH(t,e,n,r,i){const o=uz(t[e],t.size,jU("size",t,i,{vgChannel:e}));if(void 0!==o)return{value:o};if(r){const t=r.get("type");if("point"!==t&&"band"!==t)return{value:i.bar.continuousBandSize};if(void 0!==i.bar.discreteBandSize)return{value:i.bar.discreteBandSize};if(t!==pP.POINT)return tI(n);{const t=r.get("range");if(oU(t)&&Object(ct.D)(t.step))return{value:t.step-1};_R(vR.BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL)}}return{value:uz(i.bar.discreteBandSize,i.scale.rangeStep?i.scale.rangeStep-1:void 0,20)}}function mH(t,e){const{config:n,width:r,height:i}=t;return Object.assign({},cI(t,{size:"include",orient:"ignore"}),xI("x",t,oI(r)),xI("y",t,oI(i)),pI("size",t),function(t,e,n){if(n)return{shape:{value:n}};return pI("shape",t)}(t,0,e))}function vH(t,e){const n="x"===e?"x2":"y2",r=t.encoding[e],i=t.encoding[n],o=t.getScaleComponent(e),a=o?o.get("type"):void 0,u=t.scaleName(e);if(QR(r)&&(EB(r.bin)||jB(r.bin)))return bI({fieldDef:r,fieldDef2:i,channel:e,mark:"rect",scaleName:u,spacing:0,reverse:o.get("reverse")});if(QR(r)&&o&&EP(a)){if(a===pP.BAND)return yI(r,e,t);throw new Error(vR.scaleTypeNotWorkWithMark(gz,a))}return Object.assign({},xI(e,t,"zeroOrMax"),_I(t,"zeroOrMin",n))}function yH(t){const{config:e,markDef:n}=t,{orient:r}=n,i="horizontal"===r?"width":"height",o=t.getScaleComponent("horizontal"===r?"x":"y"),a=uz(n[i],n.size,jU("size",n,e,{vgChannel:i}),e.tick.bandSize);if(void 0!==a)return a;{const t=o?o.get("range"):void 0,n=t&&oU(t)?t.step:e.scale.rangeStep;if("number"!=typeof n)throw new Error("Function does not handle non-numeric rangeStep");return 3*n/4}}const bH={area:{vgMark:"area",encodeEntry:t=>Object.assign({},cI(t,{size:"ignore",orient:"include"}),xI("x",t,"zeroOrMin"),xI("y",t,"zeroOrMin"),_I(t,"zeroOrMin","horizontal"===t.markDef.orient?"x2":"y2"),dI(t))},bar:{vgMark:"rect",encodeEntry:t=>Object.assign({},cI(t,{size:"ignore",orient:"ignore"}),pH(t,"x"),pH(t,"y"))},circle:{vgMark:"symbol",encodeEntry:t=>mH(t,"circle")},geoshape:{vgMark:"shape",encodeEntry:t=>Object.assign({},cI(t,{size:"ignore",orient:"ignore"})),postEncodingTransform:t=>{const{encoding:e}=t,n=e.shape;return[Object.assign({type:"geoshape",projection:t.projectionName()},n&&QR(n)&&n.type===VR?{field:aB(n,{expr:"datum"})}:{})]}},line:{vgMark:"line",encodeEntry:t=>{const{width:e,height:n}=t;return Object.assign({},cI(t,{size:"ignore",orient:"ignore"}),xI("x",t,oI(e)),xI("y",t,oI(n)),pI("size",t,{vgChannel:"strokeWidth"}),dI(t))}},point:{vgMark:"symbol",encodeEntry:t=>mH(t)},rect:{vgMark:"rect",encodeEntry:t=>Object.assign({},cI(t,{size:"ignore",orient:"ignore"}),vH(t,"x"),vH(t,"y"))},rule:{vgMark:"rule",encodeEntry:t=>{const{markDef:e,width:n,height:r}=t,i=e.orient;return t.encoding.x||t.encoding.y||t.encoding.latitude||t.encoding.longitude?Object.assign({},cI(t,{size:"ignore",orient:"ignore"}),xI("x",t,"horizontal"===i?"zeroOrMin":oI(n)),xI("y",t,"vertical"===i?"zeroOrMin":oI(r)),"vertical"!==i?_I(t,"zeroOrMax","x2"):{},"horizontal"!==i?_I(t,"zeroOrMax","y2"):{},pI("size",t,{vgChannel:"strokeWidth"})):{}}},square:{vgMark:"symbol",encodeEntry:t=>mH(t,"square")},text:{vgMark:"text",encodeEntry:t=>{const{config:e,encoding:n,width:r,height:i}=t;return Object.assign({},cI(t,{size:"ignore",orient:"ignore"}),xI("x",t,oI(r)),xI("y",t,oI(i)),vI(t),pI("size",t,{vgChannel:"fontSize"}),fI("align",function(t,e,n){if(void 0===(t.align||jU("align",t,n)))return"center";return}(t.markDef,0,e)),fI("baseline",function(t,e,n){if(void 0===(t.baseline||jU("baseline",t,n)))return"middle";return}(t.markDef,0,e)))}},tick:{vgMark:"rect",encodeEntry:t=>{const{config:e,markDef:n,width:r,height:i}=t,o=n.orient,a="horizontal"===o?"width":"height",u="horizontal"===o?"height":"width";return Object.assign({},cI(t,{size:"ignore",orient:"ignore"}),xI("x",t,oI(r),"xc"),xI("y",t,oI(i),"yc"),pI("size",t,{defaultValue:yH(t),vgChannel:a}),{[u]:{value:uz(n.thickness,e.tick.thickness)}})}},trail:{vgMark:"trail",encodeEntry:t=>{const{width:e,height:n}=t;return Object.assign({},cI(t,{size:"include",orient:"ignore"}),xI("x",t,oI(e)),xI("y",t,oI(n)),pI("size",t),dI(t))}}};function xH(t){return PN([dz,fz,bz],t.mark)?function(t){const e=OH(t.mark,t.encoding),n=wH(t,{fromPrefix:e.length>0?_H:""});return e.length>0?[{name:t.getName("pathgroup"),type:"group",from:{facet:{name:_H+t.requestDataName(FL),data:t.requestDataName(FL),groupby:e}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:n}]:n}(t):wH(t)}const _H="faceted_path_";function wH(t,e={fromPrefix:""}){const n=t.mark,r=uz(t.markDef.clip,function(t){const e=t.getScaleComponent("x"),n=t.getScaleComponent("y");return!!(e&&e.get("domainRaw")||n&&n.get("domainRaw"))||void 0}(t),function(t){const e=t.component.projection;return!(!e||e.isFit)||void 0}(t)),i=EU(t.markDef),o=t.encoding.key,a=function(t){const{encoding:e,stack:n,mark:r,markDef:i,config:o}=t,a=e.order;if(!(!Object(ct.z)(a)&&eB(a)&&BN(a.value)||!a&&BN(i.order)||BN(jU("order",i,o)))){if((Object(ct.z)(a)||QR(a))&&!n)return TU(a,{expr:"datum"});if(kz(r)){const n=e["horizontal"===i.orient?"y":"x"];if(QR(n)){const e=n.sort;return{field:xU(e)?aB({aggregate:DB(t.encoding)?e.op:void 0,field:e.field},{expr:"datum"}):aB(n,{binSuffix:t.stack&&t.stack.impute?"mid":void 0,expr:"datum"}),order:"descending"}}}}}(t),u=bH[n].postEncodingTransform?bH[n].postEncodingTransform(t):null;return[Object.assign({name:t.getName("marks"),type:bH[n].vgMark},r?{clip:!0}:{},i?{style:i}:{},o?{key:{field:o.field}}:{},a?{sort:a}:{},{from:{data:e.fromPrefix+t.requestDataName(FL)},encode:{update:bH[n].encodeEntry(t)}},u?{transform:u}:{})]}function OH(t,e){return XN(e).reduce((n,r)=>{switch(r){case"x":case"y":case"order":case"href":case"x2":case"y2":case"latitude":case"longitude":case"latitude2":case"longitude2":case"text":case"shape":case"tooltip":return n;case"detail":case"key":{const t=e[r];return(Object(ct.z)(t)||QR(t))&&(Object(ct.z)(t)?t:[t]).forEach(t=>{t.aggregate||n.push(aB(t,{}))}),n}case"size":if("trail"===t)return n;case"color":case"fill":case"stroke":case"opacity":case"fillOpacity":case"strokeOpacity":case"strokeWidth":{const t=mB(e[r]);return t&&!t.aggregate&&n.push(aB(t,{})),n}default:throw new Error(`Bug: Channel ${r} unimplemented for line mark`)}},[])}class kH extends PU{constructor(t,e){super(t),this.transform=e}clone(){return new kH(null,NN(this.transform))}producedFields(){return new Set([this.transform.impute])}processSequence(t){const{start:e=0,stop:n,step:r}=t;return{signal:`sequence(${[e,n,...r?[r]:[]].join(",")})`}}static makeFromTransform(t,e){return new kH(t,e)}static makeFromEncoding(t,e){const n=e.encoding,r=n.x,i=n.y;if(QR(r)&&QR(i)){const o=r.impute?r:i.impute?i:void 0;if(void 0===o)return;const a=r.impute?i:i.impute?r:void 0,{method:u,value:s,frame:c,keyvals:l}=o.impute,f=OH(e.mark,n);return new kH(t,Object.assign({impute:o.field,key:a.field},u?{method:u}:{},void 0!==s?{value:s}:{},c?{frame:c}:{},void 0!==l?{keyvals:l}:{},f.length?{groupby:f}:{}))}return null}hash(){return`Impute ${RN(this.transform)}`}assemble(){const{impute:t,key:e,keyvals:n,method:r,groupby:i,value:o,frame:a=[null,null]}=this.transform,u=Object.assign({type:"impute",field:t,key:e},n?{keyvals:(s=n,s&&void 0!==s.start&&void 0!==s.stop?this.processSequence(n):n)}:{},{method:"value"},i?{groupby:i}:{},{value:null});var s;let c;if(r&&"value"!==r){c=[Object.assign({type:"window",as:[`imputed_${t}_value`],ops:[r],fields:[t],frame:a,ignorePeers:!1},i?{groupby:i}:{}),{type:"formula",expr:`datum.${t} === null ? datum.imputed_${t}_value : datum.${t}`,as:t}]}else{c=[{type:"formula",expr:`datum.${t} === null ? ${o} : datum.${t}`,as:t}]}return[u,...c]}}class AH extends AI{constructor(t={},e={},n=!1){super(t,e),this.explicit=t,this.implicit=e,this.parseNothing=n}clone(){const t=super.clone();return t.parseNothing=this.parseNothing,t}}class EH extends PU{constructor(t,e,n){super(t),this.transform=e,this.secondary=n}clone(){return new EH(null,NN(this.transform),this.secondary)}static make(t,e,n,r){const i=e.component.data.sources;let o=HH(n.from.data,i);o||(o=new tW(n.from.data),i.push(o));const a=e.getName(`lookup_${r}`),u=new LU(o,a,"lookup",e.component.data.outputNodeRefCounts);return e.component.data.outputNodes[a]=u,new EH(t,n,u.getSource())}producedFields(){return new Set(this.transform.from.fields||(this.transform.as instanceof Array?this.transform.as:[this.transform.as]))}hash(){return`Lookup ${RN({transform:this.transform,secondary:this.secondary})}`}assemble(){let t;if(this.transform.from.fields)t=Object.assign({values:this.transform.from.fields},this.transform.as?{as:this.transform.as instanceof Array?this.transform.as:[this.transform.as]}:{});else{let e=this.transform.as;Object(ct.G)(e)||(_R(vR.NO_FIELDS_NEEDS_AS),e="_lookup"),t={as:[e]}}return Object.assign({type:"lookup",from:this.secondary,key:this.transform.from.key,fields:[this.transform.lookup]},t,this.transform.default?{default:this.transform.default}:{})}}class jH extends PU{constructor(t,e){super(t),this.transform=e}clone(){return new jH(null,NN(this.transform))}hash(){return`SampleTransform ${RN(this.transform)}`}assemble(){return{type:"sample",size:this.transform.sample}}}class SH extends PU{constructor(t,e){super(t),this.params=e}clone(){return new SH(null,this.params)}assemble(){return Object.assign({type:"sequence"},this.params)}}function CH(t){let e=0;return function n(r,i){r instanceof tW&&!r.isGenerator&&!AL(r.data)&&(t.push(i),i={name:null,source:i.name,transform:[]});if(r instanceof hW&&(r.parent instanceof tW&&!i.source?(i.format=Object.assign({},i.format||{},{parse:r.assembleFormatParse()}),i.transform.push(...r.assembleTransforms(!0))):i.transform.push(...r.assembleTransforms())),r instanceof cW)return i.name||(i.name=`data_${e++}`),!i.source||i.transform.length>0?(t.push(i),r.data=i.name):r.data=i.source,void r.assemble().forEach(e=>t.push(e));(r instanceof hH||r instanceof SH||r instanceof uH||r instanceof lW||r instanceof qU||r instanceof fH||r instanceof lH||r instanceof aW||r instanceof EH||r instanceof gW||r instanceof dW||r instanceof cH||r instanceof sH||r instanceof dH||r instanceof jH)&&i.transform.push(r.assemble()),(r instanceof sW||r instanceof cq||r instanceof kH||r instanceof pW)&&(i.transform=i.transform.concat(r.assemble())),r instanceof LU&&(i.source&&0===i.transform.length?r.setSource(i.source):r.parent instanceof LU?r.setSource(i.name):(i.name||(i.name=`data_${e++}`),r.setSource(i.name),1===r.numChildren()&&(t.push(i),i={name:null,source:i.name,transform:[]})));switch(r.numChildren()){case 0:r instanceof LU&&(!i.source||i.transform.length>0)&&t.push(i);break;case 1:n(r.children[0],i);break;default:{i.name||(i.name=`data_${e++}`);let o=i.name;!i.source||i.transform.length>0?t.push(i):o=i.source,r.children.forEach(t=>{n(t,{name:null,source:o,transform:[]})});break}}}}function MH(t,e){if(t.channelHasField(e)){const n=t.facet[e],r=HU("title",null,t.config,e);let i=hB(n,t.config,{allowDisabling:!0,includeDefault:void 0===r||!!r});t.child.component.layoutHeaders[e].title&&(i+=" / "+t.child.component.layoutHeaders[e].title,t.child.component.layoutHeaders[e].title=null);const o=PN(["bottom","right"],HU("labelOrient",n,t.config,e))?"footer":"header";t.component.layoutHeaders[e]={title:i,facetFieldDef:n,[o]:"facet"===e?[]:[DH(t,e,!0)]}}}function DH(t,e,n){const r="row"===e?"height":"width";return{labels:n,sizeSignal:t.child.component.layoutSize.get(r)?t.child.getSizeSignalRef(r):void 0,axes:[]}}function FH(t,e){const{child:n}=t;if(n.component.axes[e]){const{layoutHeaders:i,resolve:o}=t.component;if(o.axis[e]=kI(o,e),"shared"===o.axis[e]){const o="x"===e?"column":"row",a=i[o];for(const i of n.component.axes[e]){const e="top"===(r=i.get("orient"))||"left"===r?"header":"footer";a[e]=a[e]||[DH(t,o,!1)];const n=dU(i,"main",t.config,{header:!0});a[e][0].axes.push(n),i.mainExtracted=!0}}}var r}function NH(t){$H(t);const e=t.component.layoutSize;e.setWithExplicit("width",RH(t,"width")),e.setWithExplicit("height",RH(t,"height"))}const zH=NH,TH={vconcat:"width",hconcat:"height"};function $H(t){for(const e of t.children)e.parseLayoutSize()}function RH(t,e){const n="width"===e?"x":"y",r=t.component.resolve;let i;for(const o of t.children){const t=o.component.layoutSize.getWithExplicit(e),a=r.scale[n];if("independent"===a&&"range-step"===t.value){i=void 0;break}if(i){if("independent"===a&&i.value!==t.value){i=void 0;break}i=MI(i,t,e,"")}else i=t}if(i){for(const n of t.children)t.renameSignal(n.getName(e),t.getName(e)),n.component.layoutSize.set(e,"merged",!1);return i}return{explicit:!1,value:void 0}}function BH(t,e){const n="width"===e?"x":"y",r=t.config,i=t.getScaleComponent(n);if(i){const t=i.get("type"),n=i.get("range");return EP(t)&&oU(n)?"range-step":r.view[e]}return t.hasProjection?r.view[e]:"width"===e&&"text"===t.mark?r.scale.textXRangeStep:r.scale.rangeStep||MP.rangeStep}function PH(t,e){return(n=t.field)&&!Object(ct.G)(n)&&"repeat"in n?t.field.repeat in e?Object.assign({},t,{field:e[t.field.repeat]}):void _R(vR.noSuchRepeatedValue(t.field.repeat)):t;var n}function LH(t,e){if(void 0!==(t=PH(t,e))){if(null===t)return null;if(function(t){return KR(t)&&!!t.sort}(t)&&xU(t.sort)){const n=PH(t.sort,e);t=Object.assign({},t,n?{sort:n}:{})}return t}}function UH(t,e){if(!QR(t)){if(ZR(t)){const n=LH(t.condition,e);if(n)return Object.assign({},t,{condition:n});{const{condition:e}=t;return b(t,["condition"])}}return t}{const n=LH(t,e);if(n)return n;if(JR(t))return{condition:t.condition}}}function qH(t,e){const n={};for(const r in t)if(t.hasOwnProperty(r)){const i=t[r];if(Object(ct.z)(i))n[r]=i.map(t=>UH(t,e)).filter(t=>t);else{const t=UH(i,e);void 0!==t&&(n[r]=t)}}return n}function IH(t,e,n){return aB(e,Object.assign({suffix:`by_${aB(t)}`},n||{}))}class WH extends aH{constructor(t,e,n,r,i){super(t,"facet",e,n,i,r,t.resolve),this.child=oG(t.spec,this,this.getName("child"),void 0,r,i,!1),this.children=[this.child];const o=function(t,e){return CR(t)?qH(t,e):LH(t,e)}(t.facet,r);this.facet=this.initFacet(o)}initFacet(t){return CR(t)?$B(t,(t,e,n)=>PN([Pz,Lz],n)?void 0===e.field?(_R(vR.emptyFieldDef(e,n)),t):(t[n]=vB(e,n),t):(_R(vR.incompatibleChannel(n,"facet")),t),{}):{facet:vB(t,"facet")}}channelHasField(t){return!!this.facet[t]}fieldDef(t){return this.facet[t]}parseData(){this.component.data=GH(this),this.child.parseData()}parseLayoutSize(){$H(this)}parseSelections(){this.child.parseSelections(),this.component.selection=this.child.component.selection}parseMarkGroup(){this.child.parseMarkGroup()}parseAxesAndHeaders(){this.child.parseAxesAndHeaders(),function(t){for(const e of mT)MH(t,e);FH(t,"x"),FH(t,"y")}(this)}assembleSelectionTopLevelSignals(t){return this.child.assembleSelectionTopLevelSignals(t)}assembleSignals(){return this.child.assembleSignals(),[]}assembleSelectionData(t){return this.child.assembleSelectionData(t)}getHeaderLayoutMixins(){const t={};for(const e of mT)for(const n of VU){const r=this.component.layoutHeaders[e],i=r[n],{facetFieldDef:o}=r;if(o){const n=HU("titleOrient",o,this.config,e);if(PN(["right","bottom"],n)){const r=WU(e,n);t.titleAnchor=t.titleAnchor||{},t.titleAnchor[r]="end"}}if(i&&i[0]){const i="row"===e?"height":"width",o="header"===n?"headerBand":"footerBand";"facet"===e||this.child.component.layoutSize.get(i)||(t[o]=t[o]||{},t[o][e]=.5),r.title&&(t.offset=t.offset||{},t.offset["row"===e?"rowTitle":"columnTitle"]=10)}}return t}assembleDefaultLayout(){const{column:t,row:e}=this.facet,n=t?this.columnDistinctSignal():e?1:void 0;let r="all";return(e||"independent"!==this.component.resolve.scale.x)&&(t||"independent"!==this.component.resolve.scale.y)||(r="none"),Object.assign({},this.getHeaderLayoutMixins(),n?{columns:n}:{},{bounds:"full",align:r})}assembleLayoutSignals(){return this.child.assembleLayoutSignals()}columnDistinctSignal(){if(!(this.parent&&this.parent instanceof WH)){return{signal:`length(data('${this.getName("column_domain")}'))`}}}assembleGroup(t){return this.parent&&this.parent instanceof WH?Object.assign({},this.channelHasField("column")?{encode:{update:{columns:{field:aB(this.facet.column,{prefix:"distinct"})}}}}:{},super.assembleGroup(t)):super.assembleGroup(t)}getCardinalityAggregateForChild(){const t=[],e=[],n=[];if(this.child instanceof WH){if(this.child.channelHasField("column")){const r=aB(this.child.facet.column);t.push(r),e.push("distinct"),n.push(`distinct_${r}`)}}else for(const r of["x","y"]){const i=this.child.component.scales[r];if(i&&!i.merged){const o=i.get("type"),a=i.get("range");if(EP(o)&&oU(a)){const i=$W(RW(this.child,r));i?(t.push(i),e.push("distinct"),n.push(`distinct_${i}`)):_R("Unknown field for ${channel}. Cannot calculate view size.")}}}return{fields:t,ops:e,as:n}}assembleFacet(){const{name:t,data:e}=this.component.data.facetRoot,{row:n,column:r}=this.facet,{fields:i,ops:o,as:a}=this.getCardinalityAggregateForChild(),u=[];for(const t of mT){const e=this.facet[t];if(e){u.push(aB(e));const{bin:s,sort:c}=e;if(EB(s)&&u.push(aB(e,{binSuffix:"end"})),xU(c)){const{field:t,op:u=bU}=c,s=IH(e,c);n&&r?(i.push(s),o.push("max"),a.push(s)):(i.push(t),o.push(u),a.push(s))}else if(Object(ct.z)(c)){const n=IU(e,t);i.push(n),o.push("max"),a.push(n)}}}const s=!!n&&!!r;return Object.assign({name:t,data:e,groupby:u},s||i.length?{aggregate:Object.assign({},s?{cross:s}:{},i.length?{fields:i,ops:o,as:a}:{})}:{})}facetSortFields(t){const{facet:e}=this,n=e[t];return n?xU(n.sort)?[IH(n,n.sort,{expr:"datum"})]:Object(ct.z)(n.sort)?[IU(n,t,{expr:"datum"})]:[aB(n,{expr:"datum"})]:[]}facetSortOrder(t){const{facet:e}=this,n=e[t];if(n){const{sort:t}=n;return[(xU(t)?t.order:!Object(ct.z)(t)&&t)||"ascending"]}return[]}assembleLabelTitle(){const{facet:t,config:e}=this;if(t.facet)return tq(t.facet,"facet",e);const n={row:["top","bottom"],column:["left","right"]};for(const r of YU)if(t[r]){const i=HU("labelOrient",t[r],e,r);if(PN(n[r],i))return tq(t[r],r,e)}}assembleMarks(){const{child:t}=this,e=function(t){const e=[],n=CH(e);return t.children.forEach(e=>n(e,{source:t.name,name:null,transform:[]})),e}(this.component.data.facetRoot),n=t.assembleGroupEncodeEntry(!1),r=this.assembleLabelTitle()||t.assembleTitle(),i=t.assembleGroupStyle();return[Object.assign({name:this.getName("cell"),type:"group"},r?{title:r}:{},i?{style:i}:{},{from:{facet:this.assembleFacet()},sort:{field:qN(mT.map(t=>this.facetSortFields(t))),order:qN(mT.map(t=>this.facetSortOrder(t)))}},e.length>0?{data:e}:{},n?{encode:{update:n}}:{},t.assembleGroup(function(t,e){if(t.component.selection&&XN(t.component.selection).length){const n=Object(ct.W)(t.getName("cell"));e.unshift({name:"facet",value:{},on:[{events:OM("mousemove","scope"),update:`isTuple(facet) ? facet : group(${n}).datum`}]})}return e}(this,[])))]}getMapping(){return this.facet}}function HH(t,e){for(const n of e){const e=n.data;if((!t.name||!n.hasName()||t.name===n.dataName)&&!(t.format&&t.format.mesh&&e.format&&e.format.feature))if(EL(t)&&EL(e)){if(FN(t.values,e.values))return n}else if(AL(t)&&AL(e)){if(t.url===e.url)return n}else if(jL(t)&&t.name===n.dataName)return n}return null}function GH(t){let e=function(t,e){if(t.data||!t.parent){const n=HH(t.data,e);if(n)return SL(t.data)||(n.data.format=IN({},t.data.format,n.data.format)),!n.hasName()&&t.data.name&&(n.dataName=t.data.name),n;{const n=new tW(t.data);return e.push(n),n}}return t.parent.component.data.facetRoot?t.parent.component.data.facetRoot:t.parent.component.data.main}(t,t.component.data.sources);const{outputNodes:n,outputNodeRefCounts:r}=t.component.data,i=t.parent?t.parent.component.data.ancestorParse.clone():new AH,o=t.data;SL(o)?(CL(o)?e=new SH(e,o.sequence):DL(o)&&(e=new hH(e,o.graticule)),i.parseNothing=!0):o&&o.format&&null===o.format.parse&&(i.parseNothing=!0),e=hW.makeExplicit(e,t,i)||e,!Sq(t)||!tH(t)&&!iH(t)||t.parent&&iH(t.parent)||(e=new dH(e));const a=t.parent&&iH(t.parent);(tH(t)||eH(t))&&a&&(e=sW.makeFromEncoding(e,t)||e),t.transforms.length>0&&(e=function(t,e,n){let r=0;for(const i of e.transforms){let o,a=void 0;if(ZL(i))o=t=new qU(t,i),a="derived";else if(HL(i))o=t=hW.makeImplicitFromFilterTransform(t,i,n)||t,t=new lW(t,e,i.filter);else if(QL(i))o=t=sW.makeFromTransform(t,i,e),a="number";else if(tU(i))o=t=cq.makeFromTransform(t,i),a="date",void 0===n.getWithExplicit(i.field).value&&(t=new hW(t,{[i.field]:a}),n.set(i.field,a,!1));else if(eU(i))o=t=aW.makeFromTransform(t,i),a="number",Sq(e)&&(t=new dH(t));else if(GL(i))o=t=EH.make(t,e,i,r++),a="derived";else if(VL(i))o=t=new gW(t,i),a="number";else if(XL(i))o=t=new dW(t,i),a="number";else if(nU(i))o=t=pW.makeFromTransform(t,i),a="derived";else if(rU(i))o=t=new cH(t,i),a="derived";else if(JL(i))o=t=new sH(t,i),a="derived";else if(YL(i))t=new jH(t,i);else{if(!KL(i)){_R(vR.invalidTransformIgnored(i));continue}o=t=kH.makeFromTransform(t,i),a="derived"}if(o&&void 0!==a)for(const t of o.producedFields())n.set(t,a,!1)}return t}(e,t,i)),e=hW.makeImplicitFromEncoding(e,t,i)||e,tH(t)&&(e=lH.parseAll(e,t),e=fH.parseAll(e,t)),(tH(t)||eH(t))&&(a||(e=sW.makeFromEncoding(e,t)||e),e=cq.makeFromEncoding(e,t)||e,e=qU.parseAllForSortIndex(e,t));const u=t.getName(NL),s=new LU(e,u,NL,r);if(n[u]=s,e=s,tH(t)){const n=aW.makeFromEncoding(e,t);n&&(e=n,Sq(t)&&(e=new dH(e))),e=kH.makeFromEncoding(e,t)||e,e=pW.makeFromEncoding(e,t)||e}tH(t)&&(e=uH.make(e,t)||e);const c=t.getName(FL),l=new LU(e,c,FL,r);n[c]=l,e=l;let f=null;if(eH(t)){const r=t.getName("facet");e=function(t,e){const{row:n,column:r}=e;if(n&&r){let e=null;for(const i of[n,r])if(xU(i.sort)){const{field:n,op:r=bU}=i.sort;t=e=new dW(t,{joinaggregate:[{op:r,field:n,as:IH(i,i.sort,{forAs:!0})}],groupby:[aB(i)]})}return e}return null}(e=qU.parseAllForSortIndex(e,t),t.facet)||e,f=new cW(e,t,r,l.getSource()),n[r]=f,e=f}return Object.assign({},t.component.data,{outputNodes:n,outputNodeRefCounts:r,raw:s,main:l,facetRoot:f,ancestorParse:i})}class YH extends oH{constructor(t,e,n,r,i,o,a){super(t,e,n,r,i,o,a)}parseData(){this.component.data=GH(this),this.children.forEach(t=>{t.parseData()})}parseSelections(){this.component.selection={};for(const t of this.children)t.parseSelections(),XN(t.component.selection).forEach(e=>{this.component.selection[e]=t.component.selection[e]})}parseMarkGroup(){for(const t of this.children)t.parseMarkGroup()}parseAxesAndHeaders(){for(const t of this.children)t.parseAxesAndHeaders()}assembleSelectionTopLevelSignals(t){return this.children.reduce((t,e)=>e.assembleSelectionTopLevelSignals(t),t)}assembleSignals(){return this.children.forEach(t=>t.assembleSignals()),[]}assembleLayoutSignals(){return this.children.reduce((t,e)=>[...t,...e.assembleLayoutSignals()],oq(this))}assembleSelectionData(t){return this.children.reduce((t,e)=>e.assembleSelectionData(t),t)}assembleMarks(){return this.children.map(t=>{const e=t.assembleTitle(),n=t.assembleGroupStyle(),r=t.assembleGroupEncodeEntry(!1);return Object.assign({type:"group",name:t.getName("group")},e?{title:e}:{},n?{style:n}:{},r?{encode:{update:r}}:{},t.assembleGroup())})}}class VH extends YH{constructor(t,e,n,r,i){super(t,"concat",e,n,i,r,t.resolve),t.resolve&&t.resolve.axis&&("shared"===t.resolve.axis.x||"shared"===t.resolve.axis.y)&&_R(vR.CONCAT_CANNOT_SHARE_AXIS),this.concatType=VP(t)?"vconcat":XP(t)?"hconcat":"concat",this.children=this.getChildren(t).map((t,e)=>oG(t,this,this.getName("concat_"+e),void 0,r,i,!1))}getChildren(t){return VP(t)?t.vconcat:XP(t)?t.hconcat:t.concat}parseLayoutSize(){!function(t){$H(t);const e=t.component.layoutSize,n=TH[t.concatType];n&&e.setWithExplicit(n,RH(t,n))}(this)}parseAxisGroup(){return null}assembleDefaultLayout(){return Object.assign({},"vconcat"===this.concatType?{columns:1}:{},{bounds:"full",align:"each"})}}class XH extends AI{constructor(t={},e={},n=!1){super(),this.explicit=t,this.implicit=e,this.mainExtracted=n}clone(){return new XH(NN(this.explicit),NN(this.implicit),this.mainExtracted)}hasAxisPart(t){return"axis"===t||("grid"===t||"title"===t?!!this.get(t):!(!1===(e=this.get(t))||null===e));var e}}const JH={bottom:"top",top:"bottom",left:"right",right:"left"};function ZH(t,e){if(!t)return e.map(t=>t.clone());{if(t.length!==e.length)return;const n=t.length;for(let r=0;r<n;r++){const n=t[r],i=e[r];if(!!n!=!!i)return;if(n&&i){const e=n.getWithExplicit("orient"),o=i.getWithExplicit("orient");if(e.explicit&&o.explicit&&e.value!==o.value)return;t[r]=QH(n,i)}}}return t}function QH(t,e){for(const n of hU){const r=MI(t.getWithExplicit(n),e.getWithExplicit(n),n,"axis",(t,e)=>{switch(n){case"title":return BU(t,e);case"gridScale":return{explicit:t.explicit,value:uz(t.value,e.value)}}return CI(t,e,n,"axis")});t.setWithExplicit(n,r)}return t}function KH(t,e){const n="x"===e?"x2":"y2",r=t.fieldDef(e),i=t.fieldDef(n),o=r?r.title:void 0,a=i?i.title:void 0;return o&&a?RU(o,a):o||(a||(void 0!==o?o:void 0!==a?a:void 0))}function tG(t,e){const n=e.axis(t),r=new XH;hU.forEach(i=>{const o=function(t,e,n,r){const i=r.fieldDef(n),o=function(t,e,n,r){if(void 0!==e.labelAngle)return lz(e.labelAngle);{const e=wU("labelAngle",t.config,n,AU(n),t.getScaleComponent(n).get("type"));return void 0!==e?lz(e):n===qz&&PN([YR,HR],r.type)?270:void 0}}(r,e,n,i),a=uz(e.orient,AU(n));switch(t){case"scale":return r.scaleName(n);case"gridScale":return function(t,e){const n="x"===e?"y":"x";if(t.getScaleComponent(n))return t.scaleName(n)}(r,n);case"format":if(_B(i))return;return MU(i,e.format,r.config);case"formatType":if(_B(i))return;return e.formatType;case"grid":if(jB(r.fieldDef(n).bin))return!1;{const t=r.getScaleComponent(n).get("type");return uz(e.grid,function(t,e){return!EP(t)&&!EB(e.bin)}(t,i))}case"labelAlign":return uz(e.labelAlign,kU(o,a));case"labelAngle":return o;case"labelBaseline":return uz(e.labelBaseline,OU(o,a));case"labelFlush":return uz(e.labelFlush,function(t,e){if("x"===e&&PN(["quantitative","temporal"],t.type))return!0}(i,n));case"labelOverlap":{const t=r.getScaleComponent(n).get("type");return uz(e.labelOverlap,function(t,e){if("nominal"!==t.type)return"log"!==e||"greedy"}(i,t))}case"orient":return a;case"tickCount":{const t=r.getScaleComponent(n).get("type"),o="x"===n?"width":"y"===n?"height":void 0,a=o?r.getSizeSignalRef(o):void 0;return uz(e.tickCount,function({fieldDef:t,scaleType:e,size:n}){if(!EP(e)&&"log"!==e&&!PN(["month","hours","day","quarter"],t.timeUnit))return EB(t.bin)?{signal:`ceil(${n.signal}/10)`}:{signal:`ceil(${n.signal}/40)`}}({fieldDef:i,scaleType:t,size:a}))}case"title":{const t="x"===n?"x2":"y2",o=r.fieldDef(t);return uz(e.title,KH(r,n),$U([XR(i)],o?[XR(o)]:[]))}case"values":return function(t,e,n){const r=t.values;if(r)return OB(n,r)}(e,0,i)}return u=t,fU[u]?e[t]:void 0;var u}(i,n,t,e);if(void 0!==o){const a=function(t,e,n,r,i){switch(e){case"titleAngle":case"labelAngle":return t===lz(n[e]);case"values":return!!n.values;case"encode":return!!n.encoding||!!n.labelAngle;case"title":if(t===KH(r,i))return!0}return t===n[e]}(o,i,n,e,t),u=wU(i,e.config,t,r.get("orient"),e.getScaleComponent(t).get("type"));a||void 0===u?r.set(i,o,a):PN(["grid","orient"],i)&&u&&r.set(i,u,!1)}});const i=n.encoding||{},o=sU.reduce((n,o)=>{if(!r.hasAxisPart(o))return n;const a=wI(i[o]||{},e),u="labels"===o?function(t,e,n){const r=t.fieldDef(e)||("x"===e?t.fieldDef("x2"):"y"===e?t.fieldDef("y2"):void 0),i=t.axis(e),o=t.config;let a={};if(_B(r)){const n=t.getScaleComponent(e).get("type")===pP.UTC,u=zU("datum.value",r.timeUnit,i.format,o.axis.shortTimeLabels,null,n);u&&(a.text={signal:u})}return a=Object.assign({},a,n),0===XN(a).length?void 0:a}(e,t,a):a;return void 0!==u&&XN(u).length>0&&(n[o]={update:u}),n},{});return XN(o).length>0&&r.set("encode",o,!!n.encoding||void 0!==n.labelAngle),r}function eG(t,e,n){const r=Ez(t)?Object.assign({},t):{type:t},i=r.orient||jU("orient",r,n);return r.orient=function(t,e,n){switch(t){case pz:case xz:case _z:case vz:case gz:return}const{x:r,y:i,x2:o,y2:a}=e;switch(t){case hz:if(QR(r)&&jB(r.bin))return"vertical";if(QR(i)&&jB(i.bin))return"horizontal";if(a||o){if(n)return n;if(!o&&QR(r)&&r.type===WR&&!EB(r.bin))return"horizontal";if(!a&&QR(i)&&i.type===WR&&!EB(i.bin))return"vertical"}case mz:if(o&&a)return;case fz:if(a)return QR(i)&&jB(i.bin)?"horizontal":"vertical";if(o)return QR(r)&&jB(r.bin)?"vertical":"horizontal";if(t===mz){if(e.x&&!e.y)return"vertical";if(e.y&&!e.x)return"horizontal"}case dz:case yz:{const r=QR(e.x)&&uB(e.x),i=QR(e.y)&&uB(e.y);if(r&&!i)return"tick"!==t?"horizontal":"vertical";if(!r&&i)return"tick"!==t?"vertical":"horizontal";if(r&&i){const r=e.x,i=e.y,o=r.type===GR,a=i.type===GR;return o&&!a?"tick"!==t?"vertical":"horizontal":!o&&a?"tick"!==t?"horizontal":"vertical":!r.aggregate&&i.aggregate?"tick"!==t?"vertical":"horizontal":r.aggregate&&!i.aggregate?"tick"!==t?"horizontal":"vertical":n||"vertical"}return n||void 0}}return"vertical"}(r.type,e,i),void 0!==i&&i!==r.orient&&_R(vR.orientOverridden(r.orient,i)),void 0===uz(r.opacity,jU("opacity",r,n))&&(r.opacity=function(t,e){if(PN([pz,yz,xz,_z],t)&&!DB(e))return.7;return}(r.type,e)),void 0===r.filled&&(r.filled=function(t,e){const n=jU("filled",t,e),r=t.type;return uz(n,r!==pz&&r!==dz&&r!==mz)}(r,n)),void 0===(r.cursor||jU("cursor",r,n))&&(r.cursor=function(t,e,n){if(e.href||t.href||jU("href",t,n))return"pointer";return t.cursor}(r,e,n)),r}class nG extends aH{constructor(t,e,n,r={},i,o,a){super(t,"unit",e,n,o,i,void 0,t.view),this.fit=a,this.specifiedScales={},this.specifiedAxes={},this.specifiedLegends={},this.specifiedProjection={},this.selection={},this.children=[],this.initSize(Object.assign({},r,t.width?{width:t.width}:{},t.height?{height:t.height}:{}));const u=Ez(t.mark)?t.mark.type:t.mark,s=this.encoding=NB(function(t,e){return qH(t,e)}(t.encoding||{},i),u);this.markDef=eG(t.mark,s,o),this.stack=fL(u,s,this.config.stack),this.specifiedScales=this.initScales(u,s),this.specifiedAxes=this.initAxes(s),this.specifiedLegends=this.initLegend(s),this.specifiedProjection=t.projection,this.selection=t.selection}get hasProjection(){const{encoding:t}=this,e=this.mark===wz,n=t&&hT.some(e=>QR(t[e]));return e||n}scaleDomain(t){const e=this.specifiedScales[t];return e?e.domain:void 0}axis(t){return this.specifiedAxes[t]}legend(t){return this.specifiedLegends[t]}initScales(t,e){return t$.reduce((t,n)=>{let r,i;const o=e[n];return QR(o)?(r=o,i=o.scale):ZR(o)&&(r=o.condition,i=o.condition.scale),r&&(t[n]=i||{}),t},{})}initAxes(t){return[qz,Iz].reduce((e,n)=>{const r=t[n];if(QR(r)||n===qz&&QR(t.x2)||n===Iz&&QR(t.y2)){const t=QR(r)?r.axis:null;null!==t&&(e[n]=Object.assign({},t))}return e},{})}initLegend(t){return QT.reduce((e,n)=>{const r=t[n];if(r){const t=QR(r)?r.legend:ZR(r)?r.condition.legend:null;null!==t&&!1!==t&&function(t){switch(t){case Jz:case Zz:case Qz:case tT:case Kz:case eT:return!0;case nT:case rT:case iT:return!1}}(n)&&(e[n]=Object.assign({},t))}return e},{})}parseData(){this.component.data=GH(this)}parseLayoutSize(){!function(t){const e=t.component.layoutSize;if(!e.explicit.width){const n=BH(t,"width");e.set("width",n,!1)}if(!e.explicit.height){const n=BH(t,"height");e.set("height",n,!1)}}(this)}parseSelections(){this.component.selection=function(t,e){const n={},r=t.config.selection;e&&(e=NN(e));for(let i in e){if(!e.hasOwnProperty(i))continue;const o=e[i],a=r[o.type],{fields:u,encodings:s}=a,c=b(a,["fields","encodings"]);for(const t in c)"encodings"===t&&o.fields||"fields"===t&&o.encodings||("mark"===t&&(o[t]=Object.assign({},c[t],o[t])),void 0!==o[t]&&!0!==o[t]||(o[t]=c[t]||o[t]));const l=n[i=KN(i)]=Object.assign({},o,{name:i,events:Object(ct.G)(o.on)?OM(o.on,"scope"):o.on});qq(l,e=>{e.parse&&e.parse(t,o,l)})}return n}(this,this.selection)}parseMarkGroup(){this.component.mark=xH(this)}parseAxesAndHeaders(){var t;this.component.axes=(t=this,WT.reduce((e,n)=>(t.component.scales[n]&&t.axis(n)&&(e[n]=[tG(n,t)]),e),{}))}assembleSelectionTopLevelSignals(t){return function(t,e){let n=!1;Eq(t,(r,i)=>{const o=r.name,a=Object(ct.W)(o+xq);e.filter(t=>t.name===o).length||e.push({name:r.name,update:`${kq}(${a}`+("global"===r.resolve?")":`, ${Object(ct.W)(r.resolve)})`)}),n=!0,i.topLevelSignals&&(e=i.topLevelSignals(t,r,e)),qq(r,n=>{n.topLevelSignals&&(e=n.topLevelSignals(t,r,e))})}),n&&(e.filter(t=>"unit"===t.name).length||e.unshift({name:"unit",value:{},on:[{events:"mousemove",update:"isTuple(group()) ? group() : unit"}]}));return e}(this,t)}assembleSignals(){return[...pU(this),...(t=this,e=[],Eq(t,(n,r)=>{const i=n.name;let o=r.modifyExpr(t,n);e.push(...r.signals(t,n)),qq(n,r=>{r.signals&&(e=r.signals(t,n,e)),r.modifyExpr&&(o=r.modifyExpr(t,n,o))}),e.push({name:i+wq,update:`modify(${Object(ct.W)(n.name+xq)}, ${o})`})}),e)];var t,e}assembleSelectionData(t){return function(t,e){return Eq(t,t=>{e.filter(e=>e.name===t.name+xq).length||e.push({name:t.name+xq})}),e}(this,t)}assembleLayout(){return null}assembleLayoutSignals(){return oq(this)}assembleMarks(){let t=this.component.mark||[];return this.parent&&iH(this.parent)||(t=Wq(this,t)),t.map(this.correctDataNames)}getMapping(){return this.encoding}get mark(){return this.markDef.type}channelHasField(t){return MB(this.encoding,t)}fieldDef(t){return mB(this.encoding[t])}}class rG extends oH{constructor(t,e,n,r,i,o,a){super(t,"layer",e,n,o,i,t.resolve,t.view);const u=Object.assign({},r,t.width?{width:t.width}:{},t.height?{height:t.height}:{});this.initSize(u),this.children=t.layer.map((t,e)=>{if(aL(t))return new rG(t,this,this.getName("layer_"+e),u,i,o,a);if(Cz(t))return new nG(t,this,this.getName("layer_"+e),u,i,o,a);throw new Error(vR.INVALID_SPEC)})}parseData(){this.component.data=GH(this);for(const t of this.children)t.parseData()}parseLayoutSize(){NH(this)}parseSelections(){this.component.selection={};for(const t of this.children)t.parseSelections(),XN(t.component.selection).forEach(e=>{this.component.selection[e]=t.component.selection[e]})}parseMarkGroup(){for(const t of this.children)t.parseMarkGroup()}parseAxesAndHeaders(){!function(t){const{axes:e,resolve:n}=t.component,r={top:0,bottom:0,right:0,left:0};for(const r of t.children){r.parseAxesAndHeaders();for(const i of XN(r.component.axes))n.axis[i]=kI(t.component.resolve,i),"shared"===n.axis[i]&&(e[i]=ZH(e[i],r.component.axes[i]),e[i]||(n.axis[i]="independent",delete e[i]))}for(const i of[qz,Iz]){for(const o of t.children)if(o.component.axes[i]){if("independent"===n.axis[i]){e[i]=(e[i]||[]).concat(o.component.axes[i]);for(const t of o.component.axes[i]){const{value:e,explicit:n}=t.getWithExplicit("orient");if(r[e]>0&&!n){const n=JH[e];r[e]>r[n]&&t.set("orient",n,!1)}r[e]++}}delete o.component.axes[i]}if("independent"===n.axis[i]&&e[i]&&e[i].length>1)for(const t of e[i])t.get("grid")&&!t.explicit.grid&&(t.implicit.grid=!1)}}(this)}assembleSelectionTopLevelSignals(t){return this.children.reduce((t,e)=>e.assembleSelectionTopLevelSignals(t),t)}assembleSignals(){return this.children.reduce((t,e)=>t.concat(e.assembleSignals()),pU(this))}assembleLayoutSignals(){return this.children.reduce((t,e)=>t.concat(e.assembleLayoutSignals()),oq(this))}assembleSelectionData(t){return this.children.reduce((t,e)=>e.assembleSelectionData(t),t)}assembleTitle(){let t=super.assembleTitle();if(t)return t;for(const e of this.children)if(t=e.assembleTitle())return t}assembleLayout(){return null}assembleMarks(){return function(t,e){for(const n of t.children)tH(n)&&(e=Wq(n,e));return e}(this,qN(this.children.map(t=>t.assembleMarks())))}assembleLegends(){return this.children.reduce((t,e)=>t.concat(e.assembleLegends()),VI(this))}}class iG extends YH{constructor(t,e,n,r,i){super(t,"repeat",e,n,i,r,t.resolve),t.resolve&&t.resolve.axis&&("shared"===t.resolve.axis.x||"shared"===t.resolve.axis.y)&&_R(vR.REPEAT_CANNOT_SHARE_AXIS),this.repeat=t.repeat,this.children=this._initChildren(t,this.repeat,r,i)}_initChildren(t,e,n,r){const i=[],o=!Object(ct.z)(e)&&e.row||[n?n.row:null],a=!Object(ct.z)(e)&&e.column||[n?n.column:null],u=Object(ct.z)(e)&&e||[n?n.repeat:null];for(const e of u)for(const n of o)for(const o of a){const a=(e?`__repeat_repeat_${e}`:"")+(n?`__repeat_row_${n}`:"")+(o?`__repeat_column_${o}`:""),u={repeat:e,row:n,column:o};i.push(oG(t.spec,this,this.getName("child"+a),void 0,u,r,!1))}return i}parseLayoutSize(){zH(this)}assembleDefaultLayout(){const{repeat:t}=this,e=Object(ct.z)(t)?void 0:t.column?t.column.length:1;return Object.assign({},e?{columns:e}:{},{bounds:"full",align:"all"})}}function oG(t,e,n,r,i,o,a){if(MR(t))return new WH(t,e,n,i,o);if(aL(t))return new rG(t,e,n,r,i,o,a);if(Cz(t))return new nG(t,e,n,r,i,o,a);if(JP(t))return new iG(t,e,n,i,o);if(function(t){return VP(t)||XP(t)||YP(t)}(t))return new VH(t,e,n,i,o);throw new Error(vR.INVALID_SPEC)}function aG(t,e={}){var n;e.logger&&(n=e.logger,bR=n),e.fieldTitle&&fB(e.fieldTitle);try{const n=tL(IN({},e.config,t.config)),r=xL(t,n),i=function(t,e,n=!0){const r=Object.assign({type:"pad"},wL(e),wL(t));return"fit"===r.type&&(n||(_R(vR.FIT_NON_SINGLE),r.type="pad")),r}(t.autosize,n.autosize,aL(r)||Cz(r)),o=oG(r,null,"",void 0,void 0,n,"fit"===i.type);return o.parse(),function(t,e){eW(t.sources);let n=0,r=0;for(let r=0;r<EW&&MW(t,e);r++)n++;t.sources.map(xW);for(let n=0;n<EW&&MW(t,e);n++)r++;eW(t.sources),Math.max(n,r)===EW&&_R(`Maximum optimization runs(${EW}) reached.`)}(o.component.data,o),function(t,e,n={},r){const i=t.config?iL(t.config):void 0,o=[].concat(t.assembleSelectionData([]),function(t,e){const n=[],r=CH(n);let i=0;t.sources.forEach(t=>{t.hasName()||(t.dataName=`source_${i++}`);const e=t.assemble();r(t,e)}),n.forEach(t=>{0===t.transform.length&&delete t.transform});let o=0;for(const[t,e]of n.entries())0!==(e.transform||[]).length||e.source||n.splice(o++,0,n.splice(t,1)[0]);for(const e of n)for(const n of e.transform||[])"lookup"===n.type&&(n.from=t.outputNodes[n.from].getSource());for(const t of n)t.name in e&&(t.values=e[t.name]);return n}(t.component.data,n)),a=t.assembleProjections(),u=t.assembleTitle(),s=t.assembleGroupStyle(),c=t.assembleGroupEncodeEntry(!0);let l=t.assembleLayoutSignals();return l=l.filter(t=>"width"!==t.name&&"height"!==t.name||void 0===t.value||(e[t.name]=+t.value,!1)),{spec:Object.assign({$schema:"https://vega.github.io/schema/vega/v5.json"},t.description?{description:t.description}:{},e,u?{title:u}:{},s?{style:s}:{},c?{encode:{update:c}}:{},{data:o},a.length>0?{projections:a}:{},t.assembleGroup([...l,...t.assembleSelectionTopLevelSignals([])]),i?{config:i}:{},r?{usermeta:r}:{})}}(o,function(t,e,n){return Object.assign({autosize:1===XN(n).length&&n.type?n.type:n},kL(e),kL(t))}(t,n,i),t.datasets,t.usermeta)}finally{e.logger&&xR(),e.fieldTitle&&fB(cB)}}const uG=new class extends uL{mapUnit(t,{config:e}){if(t.encoding){const{encoding:n,transform:r}=t,{bins:i,timeUnits:o,aggregate:a,groupby:u,encoding:s}=FB(n,e),c=[...r||[],...i,...o,...a.length?[{aggregate:a,groupby:u}]:[]];return Object.assign({},t,c.length>0?{transform:c}:{},{encoding:s})}return t}};function sG(t,e){return uG.map(t,{config:e})}const cG=_N.version;var lG=n(5),fG=n.n(lG);var hG={background:"#fff",arc:{fill:"#4572a7"},area:{fill:"#4572a7"},line:{stroke:"#4572a7",strokeWidth:2},path:{stroke:"#4572a7"},rect:{fill:"#4572a7"},shape:{stroke:"#4572a7"},symbol:{fill:"#4572a7",strokeWidth:1.5,size:50},axis:{bandPosition:.5,grid:!0,gridColor:"#000000",gridOpacity:1,gridWidth:.5,labelPadding:10,tickSize:5,tickWidth:.5},axisBand:{grid:!1,tickExtra:!0},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:50,symbolType:"square"},range:{category:["#4572a7","#aa4643","#8aa453","#71598e","#4598ae","#d98445","#94aace","#d09393","#b9cc98","#a99cbc"]}};var dG={group:{fill:"#e5e5e5"},arc:{fill:"#000"},area:{fill:"#000"},line:{stroke:"#000"},path:{stroke:"#000"},rect:{fill:"#000"},shape:{stroke:"#000"},symbol:{fill:"#000",size:40},axis:{domain:!1,grid:!0,gridColor:"#FFFFFF",gridOpacity:1,labelColor:"#7F7F7F",labelPadding:4,tickColor:"#7F7F7F",tickSize:5.67,titleFontSize:16,titleFontWeight:"normal"},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:40},range:{category:["#000000","#7F7F7F","#1A1A1A","#999999","#333333","#B0B0B0","#4D4D4D","#C9C9C9","#666666","#DCDCDC"]}};var pG={background:"#f9f9f9",arc:{fill:"#ab5787"},area:{fill:"#ab5787"},line:{stroke:"#ab5787"},path:{stroke:"#ab5787"},rect:{fill:"#ab5787"},shape:{stroke:"#ab5787"},symbol:{fill:"#ab5787",size:30},axis:{domainColor:"#979797",domainWidth:.5,gridWidth:.2,labelColor:"#979797",tickColor:"#979797",tickWidth:.2,titleColor:"#979797"},axisBand:{grid:!1},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0},legend:{labelFontSize:11,padding:1,symbolSize:30,symbolType:"square"},range:{category:["#ab5787","#51b2e5","#703c5c","#168dd9","#d190b6","#00609f","#d365ba","#154866","#666666","#c4c4c4"]}};var gG={background:"#fff",arc:{fill:"#3e5c69"},area:{fill:"#3e5c69"},line:{stroke:"#3e5c69"},path:{stroke:"#3e5c69"},rect:{fill:"#3e5c69"},shape:{stroke:"#3e5c69"},symbol:{fill:"#3e5c69"},axis:{domainWidth:.5,grid:!0,labelPadding:2,tickSize:5,tickWidth:.5,titleFontWeight:"normal"},axisBand:{grid:!1},axisX:{gridWidth:.2},axisY:{gridDash:[3],gridWidth:.4},legend:{labelFontSize:11,padding:1,symbolType:"square"},range:{category:["#3e5c69","#6793a6","#182429","#0570b0","#3690c0","#74a9cf","#a6bddb","#e2ddf2"]}};var mG={background:"#333",title:{color:"#fff"},style:{"guide-label":{fill:"#fff"},"guide-title":{fill:"#fff"}},axis:{domainColor:"#fff",gridColor:"#888",tickColor:"#fff"}};var vG={arc:{fill:"#30a2da"},area:{fill:"#30a2da"},axisBand:{grid:!1},axisBottom:{domain:!1,domainColor:"#333",domainWidth:3,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,titleFontSize:14,titlePadding:10},axisLeft:{domainColor:"#cbcbcb",domainWidth:1,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,ticks:!0,titleFontSize:14,titlePadding:10},axisRight:{domainColor:"#333",domainWidth:1,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,ticks:!0,titleFontSize:14,titlePadding:10},axisTop:{domain:!1,domainColor:"#333",domainWidth:3,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,titleFontSize:14,titlePadding:10},background:"#f0f0f0",group:{fill:"#f0f0f0"},legend:{labelColor:"#333",labelFontSize:11,padding:1,symbolSize:30,symbolType:"square",titleColor:"#333",titleFontSize:14,titlePadding:10},line:{stroke:"#30a2da",strokeWidth:2},path:{stroke:"#30a2da",strokeWidth:.5},rect:{fill:"#30a2da"},range:{category:["#30a2da","#fc4f30","#e5ae38","#6d904f","#8b8b8b","#b96db8","#ff9e27","#56cc60","#52d2ca","#52689e","#545454","#9fe4f8"],diverging:["#cc0020","#e77866","#f6e7e1","#d6e8ed","#91bfd9","#1d78b5"],heatmap:["#d6e8ed","#cee0e5","#91bfd9","#549cc6","#1d78b5"]},symbol:{filled:!0,shape:"circle"},shape:{stroke:"#30a2da"},style:{bar:{binSpacing:2,fill:"#30a2da",stroke:null}},title:{anchor:"start",fontSize:24,fontWeight:600,offset:20}};const yG="Benton Gothic Bold, sans",bG={"category-6":["#ec8431","#829eb1","#c89d29","#3580b1","#adc839","#ab7fb4"],"fire-7":["#fbf2c7","#f9e39c","#f8d36e","#f4bb6a","#e68a4f","#d15a40","#ab4232"],"fireandice-6":["#e68a4f","#f4bb6a","#f9e39c","#dadfe2","#a6b7c6","#849eae"],"ice-7":["#edefee","#dadfe2","#c4ccd2","#a6b7c6","#849eae","#607785","#47525d"]};var xG={background:"#ffffff",title:{anchor:"start",font:yG,fontColor:"#000000",fontSize:22,fontWeight:"normal"},arc:{fill:"#82c6df"},area:{fill:"#82c6df"},line:{stroke:"#82c6df",strokeWidth:2},path:{stroke:"#82c6df"},rect:{fill:"#82c6df"},shape:{stroke:"#82c6df"},symbol:{fill:"#82c6df",size:30},axis:{labelFont:"Benton Gothic, sans",labelFontSize:11.5,labelFontWeight:"normal",titleFont:yG,titleFontSize:13,titleFontWeight:"normal"},axisX:{labelAngle:0,labelPadding:4,tickSize:3},axisY:{labelBaseline:"middle",maxExtent:45,minExtent:45,tickSize:2,titleAlign:"left",titleAngle:0,titleX:-45,titleY:-11},legend:{labelFont:"Benton Gothic, sans",labelFontSize:11.5,symbolType:"square",titleFont:yG,titleFontSize:13,titleFontWeight:"normal"},range:{category:bG["category-6"],diverging:bG["fireandice-6"],heatmap:bG["fire-7"],ordinal:bG["fire-7"],ramp:bG["fire-7"]}},_G="#vg-tooltip-element {\n visibility: hidden;\n padding: 8px;\n position: fixed;\n z-index: 1000;\n font-family: sans-serif;\n font-size: 11px;\n border-radius: 3px;\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);\n /* The default theme is the light theme. */\n background-color: rgba(255, 255, 255, 0.95);\n border: 1px solid #d9d9d9;\n color: black; }\n #vg-tooltip-element.visible {\n visibility: visible; }\n #vg-tooltip-element h2 {\n margin-top: 0;\n margin-bottom: 10px;\n font-size: 13px; }\n #vg-tooltip-element table {\n border-spacing: 0; }\n #vg-tooltip-element table tr {\n border: none; }\n #vg-tooltip-element table tr td {\n overflow: hidden;\n text-overflow: ellipsis;\n padding-top: 2px;\n padding-bottom: 2px; }\n #vg-tooltip-element table tr td.key {\n color: #808080;\n max-width: 150px;\n text-align: right;\n padding-right: 4px; }\n #vg-tooltip-element table tr td.value {\n display: block;\n max-width: 300px;\n max-height: 7em;\n text-align: left; }\n #vg-tooltip-element.dark-theme {\n background-color: rgba(32, 32, 32, 0.9);\n border: 1px solid #f5f5f5;\n color: white; }\n #vg-tooltip-element.dark-theme td.key {\n color: #bfbfbf; }\n";const wG="vg-tooltip-element",OG={offsetX:10,offsetY:10,id:wG,styleId:"vega-tooltip-style",theme:"light",disableDefaultStyle:!1,sanitize:function(t){return String(t).replace(/&/g,"&").replace(/</g,"<")},maxDepth:2};var kG=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&(n[r[i]]=t[r[i]])}return n};function AG(t,e){return JSON.stringify(t,function(t){const e=[];return function(n,r){if("object"!=typeof r||null===r)return r;const i=e.indexOf(this)+1;return e.length=i,e.length>t?"[Object]":e.indexOf(r)>=0?"[Circular]":(e.push(r),r)}}(e))}class EG{constructor(t){this.options=Object.assign({},OG,t);const e=this.options.id;if(this.call=this.tooltip_handler.bind(this),!this.options.disableDefaultStyle&&!document.getElementById(this.options.styleId)){const t=document.createElement("style");t.setAttribute("id",this.options.styleId),t.innerHTML=function(t){if(!/^[A-Za-z]+[-:.\w]*$/.test(t))throw new Error("Invalid HTML ID");return _G.toString().replace(wG,t)}(e);const n=document.head;n.childNodes.length>0?n.insertBefore(t,n.childNodes[0]):n.appendChild(t)}this.el=document.getElementById(e),this.el||(this.el=document.createElement("div"),this.el.setAttribute("id",e),this.el.classList.add("vg-tooltip"),document.body.appendChild(this.el))}tooltip_handler(t,e,n,r){if(null==r||""===r)return void this.el.classList.remove("visible",`${this.options.theme}-theme`);this.el.innerHTML=function(t,e,n){if(Object(ct.z)(t))return`[${t.map(t=>e(Object(ct.G)(t)?t:AG(t,n))).join(", ")}]`;if(Object(ct.E)(t)){let r="";const i=t,{title:o}=i,a=kG(i,["title"]);o&&(r+=`<h2>${e(o)}</h2>`);const u=Object.keys(a);if(u.length>0){r+="<table>";for(const t of u){let i=a[t];Object(ct.E)(i)&&(i=AG(i,n)),r+=`<tr><td class="key">${e(t)}:</td><td class="value">${e(i)}</td></tr>`}r+="</table>"}return r||"{}"}return e(t)}(r,this.options.sanitize,this.options.maxDepth),this.el.classList.add("visible",`${this.options.theme}-theme`);const{x:i,y:o}=function(t,e,n,r){let i=t.clientX+n;i+e.width>window.innerWidth&&(i=+t.clientX-n-e.width);let o=t.clientY+r;return o+e.height>window.innerHeight&&(o=+t.clientY-r-e.height),{x:i,y:o}}(e,this.el.getBoundingClientRect(),this.options.offsetX,this.options.offsetY);this.el.setAttribute("style",`top: ${o}px; left: ${i}px`)}}var jG=function(t,e,n){const r=t.open(e),i=250;let o=~~(1e4/i);t.addEventListener("message",function e(n){n.source===r&&(o=0,t.removeEventListener("message",e,!1))},!1),setTimeout(function t(){o<=0||(r.postMessage(n,"*"),setTimeout(t,i),o-=1)},i)},SG='.vega-embed {\n position: relative;\n display: inline-block;\n padding-right: 38px; }\n .vega-embed details:not([open]) > :not(summary) {\n display: none !important; }\n .vega-embed summary {\n list-style: none;\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n padding: 6px;\n z-index: 1000;\n background: white;\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\n color: #1b1e23;\n border: 1px solid #aaa;\n border-radius: 999px;\n opacity: 0.2;\n transition: opacity 0.4s ease-in;\n outline: none;\n cursor: pointer; }\n .vega-embed summary::-webkit-details-marker {\n display: none; }\n .vega-embed details[open] summary {\n opacity: 0.7; }\n .vega-embed:hover summary,\n .vega-embed:focus summary {\n opacity: 1 !important;\n transition: opacity 0.2s ease; }\n .vega-embed .vega-actions {\n position: absolute;\n top: 35px;\n right: -9px;\n display: flex;\n flex-direction: column;\n padding-bottom: 8px;\n padding-top: 8px;\n border-radius: 4px;\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\n border: 1px solid #d9d9d9;\n background: white;\n animation-duration: 0.15s;\n animation-name: scale-in;\n animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5); }\n .vega-embed .vega-actions a {\n padding: 8px 16px;\n font-family: sans-serif;\n font-size: 14px;\n font-weight: 600;\n white-space: nowrap;\n color: #434a56;\n text-decoration: none; }\n .vega-embed .vega-actions a:hover {\n background-color: #f7f7f9;\n color: black; }\n .vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\n content: "";\n display: inline-block;\n position: absolute; }\n .vega-embed .vega-actions::before {\n left: auto;\n right: 14px;\n top: -16px;\n border: 8px solid #0000;\n border-bottom-color: #d9d9d9; }\n .vega-embed .vega-actions::after {\n left: auto;\n right: 15px;\n top: -14px;\n border: 7px solid #0000;\n border-bottom-color: #fff; }\n\n.vega-embed-wrapper {\n max-width: 100%;\n overflow: scroll;\n padding-right: 14px; }\n\n@keyframes scale-in {\n from {\n opacity: 0;\n transform: scale(0.6); }\n to {\n opacity: 1;\n transform: scale(1); } }\n';function CG(t,e){if("object"!=typeof e||null===e)return t;for(const n in e)e.hasOwnProperty(n)&&void 0!==e[n]&&("object"!=typeof e[n]||Object(ct.z)(e[n])||null===e[n]?t[n]=e[n]:"object"!=typeof t[n]||null===t[n]?t[n]=MG(Object(ct.z)(e[n].constructor)?[]:{},e[n]):MG(t[n],e[n]));return t}function MG(t,...e){for(const n of e)t=CG(t,n);return t}String.prototype.startsWith||(String.prototype.startsWith=function(t,e){return this.substr(!e||e<0?0:+e,t.length)===t}),n.d(e,"vega",function(){return DG}),n.d(e,"vl",function(){return FG}),n.d(e,"guessMode",function(){return PG}),n.d(e,"default",function(){return LG});const DG=p,FG=v,NG={CLICK_TO_VIEW_ACTIONS:"Click to view actions",COMPILED_ACTION:"View Compiled Vega",EDITOR_ACTION:"Open in Vega Editor",PNG_ACTION:"Save as PNG",SOURCE_ACTION:"View Source",SVG_ACTION:"Save as SVG"},zG={vega:"Vega","vega-lite":"Vega-Lite"},TG={vega:DG.version,"vega-lite":FG?FG.version:"not available"},$G={vega:t=>t,"vega-lite":(t,e)=>FG.compile(t,{config:e}).spec},RG='\n<svg viewBox="0 0 16 16" fill="currentColor" stroke="none" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" width="14" height="14">\n <circle r="2" cy="8" cx="2"></circle>\n <circle r="2" cy="8" cx="8"></circle>\n <circle r="2" cy="8" cx="14"></circle>\n</svg>';function BG(t,e,n,r){const i=`<html><head>${e}</head><body><pre><code class="json">`,o=`</code></pre>${n}</body></html>`,a=window.open("");a.document.write(i+t+o),a.document.title=`${zG[r]} JSON Source`}function PG(t,e){if(t.$schema){const n=fG()(t.$schema);e&&e!==n.library&&console.warn(`The given visualization spec is written in ${zG[n.library]}, but mode argument sets ${zG[e]||e}.`);const r=n.library;return Object(st.satisfies)(TG[r],`^${n.version.slice(1)}`)||console.warn(`The input spec uses ${r} ${n.version}, but the current version of ${zG[r]} is ${TG[r]}.`),r}return"mark"in t||"encoding"in t||"layer"in t||"hconcat"in t||"vconcat"in t||"facet"in t||"repeat"in t?"vega-lite":"marks"in t||"signals"in t||"scales"in t||"axes"in t?"vega":e||"vega"}function LG(t,e,n={}){return r=this,i=void 0,a=function*(){const r=(i=n.loader)&&"load"in i?n.loader:DG.loader(n.loader);var i;if(DG.isString(e)){const i=yield r.load(e);return LG(t,JSON.parse(i),n)}const o=(n=MG(n,e.usermeta&&e.usermeta.embedOptions)).patch||n.onBeforeParse,a=!0===n.actions||!1===n.actions?n.actions:MG({},{export:{svg:!0,png:!0},source:!0,compiled:!0,editor:!0},n.actions||{}),u=Object.assign({},NG,n.i18n),s=n.renderer||"canvas",c=n.logLevel||DG.Warn,l=n.downloadFileName||"visualization";let f=n.config||{};if(DG.isString(f)){const i=yield r.load(f);return LG(t,e,Object.assign({},n,{config:JSON.parse(i)}))}if(!1!==n.defaultStyle){const t="vega-embed-style";if(!document.getElementById(t)){const e=document.createElement("style");e.id=t,e.innerText=void 0===n.defaultStyle||!0===n.defaultStyle?(SG||"").toString():n.defaultStyle,document.head.appendChild(e)}}n.theme&&(f=MG({},y[n.theme],f));const h=PG(e,n.mode);let d=$G[h](e,f);if("vega-lite"===h&&d.$schema){const t=fG()(d.$schema);Object(st.satisfies)(TG.vega,`^${t.version.slice(1)}`)||console.warn(`The compiled spec uses Vega ${t.version}, but current version is ${TG.vega}.`)}const p=rt(t).classed("vega-embed",!0).html("");if(o)if(o instanceof Function)d=o(d);else if(DG.isString(o)){const t=yield r.load(o);d=MG(d,JSON.parse(t))}else d=MG(d,o);const g=DG.parse(d,"vega-lite"===h?{}:f),m=new DG.View(g,{loader:r,logLevel:c,renderer:s});if(!1!==n.tooltip){let t;t="function"==typeof n.tooltip?n.tooltip:new EG(!0===n.tooltip?{}:n.tooltip).call,m.tooltip(t)}let{hover:v}=n;if(void 0===v&&(v="vega-lite"!==h),v){const{hoverSet:t,updateSet:e}="boolean"==typeof v?{}:v;m.hover(t,e)}if(n&&(n.width&&m.width(n.width),n.height&&m.height(n.height),n.padding&&m.padding(n.padding)),yield m.initialize(t).runAsync(),!1!==a){let t=p;if(!1!==n.defaultStyle){const e=p.append("details").attr("title",u.CLICK_TO_VIEW_ACTIONS);t=e,e.insert("summary").html(RG);const n=e.node();document.addEventListener("click",t=>{n.contains(t.target)||n.removeAttribute("open")})}const r=t.insert("div").attr("class","vega-actions");if(!0===a||!1!==a.export)for(const t of["svg","png"])if(!0===a||!0===a.export||a.export[t]){const e=u[`${t.toUpperCase()}_ACTION`];r.append("a").text(e).attr("href","#").attr("target","_blank").attr("download",`${l}.${t}`).on("mousedown",function(){m.toImageURL(t,n.scaleFactor).then(t=>{this.href=t}).catch(t=>{throw t}),V.preventDefault()})}if(!0!==a&&!1===a.source||r.append("a").text(u.SOURCE_ACTION).attr("href","#").on("mousedown",()=>{BG(ut()(e),n.sourceHeader||"",n.sourceFooter||"",h),V.preventDefault()}),"vega-lite"!==h||!0!==a&&!1===a.compiled||r.append("a").text(u.COMPILED_ACTION).attr("href","#").on("mousedown",()=>{BG(ut()(d),n.sourceHeader||"",n.sourceFooter||"","vega"),V.preventDefault()}),!0===a||!1!==a.editor){const t=n.editorUrl||"https://vega.github.io/editor/";r.append("a").text(u.EDITOR_ACTION).attr("href","#").on("mousedown",()=>{jG(window,t,{config:f,mode:h,renderer:s,spec:ut()(e)}),V.preventDefault()})}}return{view:m,spec:e,vgSpec:d}},new((o=void 0)||(o=Promise))(function(t,e){function n(t){try{s(a.next(t))}catch(t){e(t)}}function u(t){try{s(a.throw(t))}catch(t){e(t)}}function s(e){e.done?t(e.value):new o(function(t){t(e.value)}).then(n,u)}s((a=a.apply(r,i||[])).next())});var r,i,o,a}},function(t){t.exports={name:"vega-lite",author:'Dominik Moritz, Kanit "Ham" Wongsuphasawat, Arvind Satyanarayan, Jeffrey Heer',version:"3.3.0",collaborators:["Kanit Wongsuphasawat <kanitw(a)gmail.com> (http://kanitw.yellowpigz.com)","Dominik Moritz <domoritz(a)cs.washington.edu> (https://www.domoritz.de)","Arvind Satyanarayan (https://arvindsatya.com/)","Jeffrey Heer (https://jheer.org)"],homepage:"https://vega.github.io/vega-lite/",description:"Vega-Lite is a concise high-level language for interactive visualization.",main:"build/vega-lite.js",unpkg:"build/vega-lite.min.js",jsdelivr:"build/vega-lite.min.js",module:"build/src/index",types:"build/src/index.d.ts",bin:{vl2png:"./bin/vl2png",vl2svg:"./bin/vl2svg",vl2vg:"./bin/vl2vg"},directories:{test:"test"},scripts:{build:"npm run build:only","build:only":"npm run tsc:src && rollup -c",postbuild:"terser build/vega-lite.js -cm --source-map content=build/vega-lite.js.map,filename=build/vega-lite.min.js.map -o build/vega-lite.min.js && npm run schema","build:examples":"npm run build:only","postbuild:examples":"npm run data && TZ=America/Los_Angeles scripts/build-examples.sh","build:examples-full":"npm run build:only","postbuild:examples-full":"TZ=America/Los_Angeles scripts/build-examples.sh 1","build:example":"TZ=America/Los_Angeles scripts/build-example.sh","build:toc":"npm run data && bundle exec jekyll build -q && scripts/generate-toc","build:site":"npm run tsc:site && rollup -c site/rollup.config.js","build:versions":"scripts/update-version.sh",clean:"rm -rf build && rm -f examples/compiled/*.png && find site/examples ! -name 'index.md' -type f -delete",data:"rsync -r node_modules/vega-datasets/data/* data",deploy:"scripts/deploy.sh","deploy:gh":"scripts/deploy-gh.sh","deploy:schema":"scripts/deploy-schema.sh",schema:"mkdir -p build && node --stack-size=5000 ./node_modules/.bin/ts-json-schema-generator --no-type-check --path src/index.ts --type TopLevelSpec > build/vega-lite-schema.json && npm run renameschema && cp build/vega-lite-schema.json _data/",renameschema:"scripts/rename-schema.sh",presite:"npm run data && npm run build:site && npm run build:toc && npm run build:versions && scripts/create-example-pages",site:"bundle exec jekyll serve --incremental","tsc:src":"tsc -b src/tsconfig.src.json","tsc:site":"tsc -b site/tsconfig.site.json",prettierbase:"prettier '{src,test,test-runtime,site,typings}/**/*.{md,css}'",eslintbase:"eslint '{src,test,test-runtime,site,typings}/**/*.{ts,js}'",format:"npm run eslintbase -- --fix && npm run prettierbase -- --write",lint:"npm run eslintbase && npm run prettierbase -- --check",test:"jest test/ && npm run lint && npm run schema && jest examples/ && npm run test:runtime","test:inspect":"node --inspect-brk ./node_modules/.bin/jest --runInBand test","test:runtime":"TZ=America/Los_Angeles jest test-runtime/","test:runtime:generate":"rm -Rf test-runtime/resources && VL_GENERATE_TESTS=true npm run test:runtime","watch:build":"npm run build:only && concurrently --kill-others -n Typescript,Rollup 'npm run tsc:src -- -w' 'rollup -c -w'","watch:site":"concurrently --kill-others -n Typescript,Rollup 'npm run tsc:site -- -w' 'rollup -c site/rollup.config.js -w'","watch:test":"jest --watch"},repository:{type:"git",url:"https://github.com/vega/vega-lite.git"},license:"BSD-3-Clause",bugs:{url:"https://github.com/vega/vega-lite/issues"},devDependencies:{"@types/chai":"^4.1.7","@types/d3":"^5.7.2","@types/highlight.js":"^9.12.3","@types/jest":"^24.0.13","@types/jest-environment-puppeteer":"^4.0.0","@types/mkdirp":"^0.5.2","@types/node":"^12.0.2","@types/puppeteer":"^1.12.4","@typescript-eslint/eslint-plugin":"^1.9.0","@typescript-eslint/parser":"^1.9.0",ajv:"^6.10.0",chai:"^4.2.0",cheerio:"^1.0.0-rc.2",codecov:"^3.5.0",concurrently:"^4.1.0",d3:"^5.9.2",eslint:"^5.16.0","eslint-config-prettier":"^4.3.0","eslint-plugin-prettier":"^3.1.0","highlight.js":"^9.15.6","http-server":"^0.11.1",jest:"^24.8.0","jest-puppeteer":"^4.1.1",mkdirp:"^0.5.1",prettier:"^1.17.1",puppeteer:"^1.16.0",rollup:"^1.12.1","rollup-plugin-commonjs":"^10.0.0","rollup-plugin-json":"^4.0.0","rollup-plugin-node-resolve":"^5.0.0","rollup-plugin-sourcemaps":"^0.4.2","rollup-plugin-terser":"^5.0.0","svg2png-many":"^0.0.7",terser:"^4.0.0","ts-jest":"^24.0.2","ts-json-schema-generator":"^0.42.0",typescript:"^3.4.5","vega-cli":"^5.4.0","vega-datasets":"^1.25.0","vega-embed":"^4.2.0","vega-tooltip":"^0.17.0","yaml-front-matter":"^4.0.0"},dependencies:{"@types/clone":"~0.1.30","@types/fast-json-stable-stringify":"^2.0.0",clone:"~2.1.2","fast-deep-equal":"~2.0.1","fast-json-stable-stringify":"~2.0.0","json-stringify-pretty-compact":"~2.0.0",tslib:"~1.9.3","vega-event-selector":"~2.0.0","vega-expression":"~2.6.0","vega-typings":"0.7.1","vega-util":"~1.10.0",yargs:"~13.2.4"},peerDependencies:{vega:"^5.4.0"},jest:{preset:"jest-puppeteer",transform:{"^.+\\.tsx?$":"ts-jest"},testRegex:"(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",moduleFileExtensions:["ts","tsx","js","jsx","json","node"],testPathIgnorePatterns:["<rootDir>/node_modules","<rootDir>/build","<rootDir>/_site","<rootDir>/src"],coverageDirectory:"./coverage/",collectCoverage:!1}}},function(t,e,n){(function(e){var n=function(){"use strict";function t(t,e){return null!=e&&t instanceof e}var n,r,i;try{n=Map}catch(t){n=function(){}}try{r=Set}catch(t){r=function(){}}try{i=Promise}catch(t){i=function(){}}function o(a,s,c,l,f){"object"==typeof s&&(c=s.depth,l=s.prototype,f=s.includeNonEnumerable,s=s.circular);var h=[],d=[],p=void 0!==e;return void 0===s&&(s=!0),void 0===c&&(c=1/0),function a(c,g){if(null===c)return null;if(0===g)return c;var m,v;if("object"!=typeof c)return c;if(t(c,n))m=new n;else if(t(c,r))m=new r;else if(t(c,i))m=new i(function(t,e){c.then(function(e){t(a(e,g-1))},function(t){e(a(t,g-1))})});else if(o.__isArray(c))m=[];else if(o.__isRegExp(c))m=new RegExp(c.source,u(c)),c.lastIndex&&(m.lastIndex=c.lastIndex);else if(o.__isDate(c))m=new Date(c.getTime());else{if(p&&e.isBuffer(c))return m=e.allocUnsafe?e.allocUnsafe(c.length):new e(c.length),c.copy(m),m;t(c,Error)?m=Object.create(c):void 0===l?(v=Object.getPrototypeOf(c),m=Object.create(v)):(m=Object.create(l),v=l)}if(s){var y=h.indexOf(c);if(-1!=y)return d[y];h.push(c),d.push(m)}for(var b in t(c,n)&&c.forEach(function(t,e){var n=a(e,g-1),r=a(t,g-1);m.set(n,r)}),t(c,r)&&c.forEach(function(t){var e=a(t,g-1);m.add(e)}),c){var x;v&&(x=Object.getOwnPropertyDescriptor(v,b)),x&&null==x.set||(m[b]=a(c[b],g-1))}if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(c);for(b=0;b<_.length;b++){var w=_[b];(!(k=Object.getOwnPropertyDescriptor(c,w))||k.enumerable||f)&&(m[w]=a(c[w],g-1),k.enumerable||Object.defineProperty(m,w,{enumerable:!1}))}}if(f){var O=Object.getOwnPropertyNames(c);for(b=0;b<O.length;b++){var k,A=O[b];(k=Object.getOwnPropertyDescriptor(c,A))&&k.enumerable||(m[A]=a(c[A],g-1),Object.defineProperty(m,A,{enumerable:!1}))}}return m}(a,c)}function a(t){return Object.prototype.toString.call(t)}function u(t){var e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),e}return o.clonePrototype=function(t){if(null===t)return null;var e=function(){};return e.prototype=t,new e},o.__objToStr=a,o.__isDate=function(t){return"object"==typeof t&&"[object Date]"===a(t)},o.__isArray=function(t){return"object"==typeof t&&"[object Array]"===a(t)},o.__isRegExp=function(t){return"object"==typeof t&&"[object RegExp]"===a(t)},o.__getRegExpFlags=u,o}();t.exports&&(t.exports=n)}).call(this,n(6).Buffer)},function(t,e,n){"use strict";var r=Array.isArray,i=Object.keys,o=Object.prototype.hasOwnProperty;t.exports=function t(e,n){if(e===n)return!0;if(e&&n&&"object"==typeof e&&"object"==typeof n){var a,u,s,c=r(e),l=r(n);if(c&&l){if((u=e.length)!=n.length)return!1;for(a=u;0!=a--;)if(!t(e[a],n[a]))return!1;return!0}if(c!=l)return!1;var f=e instanceof Date,h=n instanceof Date;if(f!=h)return!1;if(f&&h)return e.getTime()==n.getTime();var d=e instanceof RegExp,p=n instanceof RegExp;if(d!=p)return!1;if(d&&p)return e.toString()==n.toString();var g=i(e);if((u=g.length)!==i(n).length)return!1;for(a=u;0!=a--;)if(!o.call(n,g[a]))return!1;for(a=u;0!=a--;)if(!t(e[s=g[a]],n[s]))return!1;return!0}return e!=e&&n!=n}},function(t,e,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)},i=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))(function(i,o){function a(t){try{s(r.next(t))}catch(t){o(t)}}function u(t){try{s(r.throw(t))}catch(t){o(t)}}function s(t){t.done?i(t.value):new n(function(e){e(t.value)}).then(a,u)}s((r=r.apply(t,e||[])).next())})},o=this&&this.__generator||function(t,e){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(o){return function(u){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=e.call(t,a)}catch(t){o=[6,t],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,u])}}},a=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var u=a(n(9)),s=n(9);function c(t,e){throw t.innerHTML='<div class="error">\n <p>Javascript Error: '+e.message+"</p>\n <p>This usually means there's a typo in your chart specification.\n See the JavaScript console for the full traceback.</p>\n </div>",e}e.vegaEmbed=s.default,e.render=function(t,e,n,i,o){var a=function(t,e){for(var n=0;n<e.length;n++){var r=e[n];if(r.metadata&&r.metadata["jupyter-vega"]===t&&void 0!==r.data["image/png"])return n}return-1}(t,o.outputs),s=function(t,e){for(var n=0;n<e.length;n++){var r=e[n];if(r.metadata&&r.metadata["jupyter-vega"]===t&&void 0!==r.data["application/javascript"])return n}return-1}(t,o.outputs);if(!(a>-1&&s>-1&&a===s+1)){var l=document.getElementById(t.substring(1));u.default(l,e,r({loader:{http:{credentials:"same-origin"}}},i,{mode:n})).then(function(e){e.view.toImageURL("png").then(function(e){if(void 0!==o){var n={data:{"image/png":e.split(",")[1]},metadata:{"jupyter-vega":t},output_type:"display_data"};o.outputs.push(n)}}).catch(function(t){return c(l,t)})}).catch(function(t){return c(l,t)})}};var l=null;n.m[8]&&(l=n(8).DOMWidgetView.extend({render:function(){var t=this;this.viewElement=document.createElement("div"),this.el.appendChild(this.viewElement),this.errorElement=document.createElement("div"),this.errorElement.style.color="red",this.el.appendChild(this.errorElement);var e=function(){t.view&&(t.view.finalize(),t.view=null);var e=JSON.parse(t.model.get("_spec_source")),n=JSON.parse(t.model.get("_opt_source"));null!=e&&u.default(t.viewElement,e,r({loader:{http:{credentials:"same-origin"}}},n)).then(function(e){var n=e.view;t.view=n,t.send({type:"display"})}).catch(function(t){return console.error(t)})},n=function(e){return i(t,void 0,void 0,function(){var t,n,r;return o(this,function(i){switch(i.label){case 0:if(null==this.view)throw new Error("Internal error: no view attached to widget");return t=new Function("datum","return ("+(e.remove||"false")+")"),n=e.insert||[],r=this.view.changeset().insert(n).remove(t),[4,this.view.change(e.key,r).runAsync()];case 1:return i.sent(),[2]}})})};this.model.on("change:_spec_source",e),this.model.on("change:_opt_source",e),this.model.on("msg:custom",function(e){var r=function(t){return"update"!=t.type?null:t}(e);null!=r&&function(e){return i(t,void 0,void 0,function(){var t,r,i;return o(this,function(o){switch(o.label){case 0:t=0,r=e.updates,o.label=1;case 1:return t<r.length?(i=r[t],[4,n(i)]):[3,4];case 2:o.sent(),o.label=3;case 3:return t++,[3,1];case 4:return[2]}})})}(r).catch(function(e){t.errorElement.textContent=""+e,console.error(e)})}),e()}}));e.VegaWidget=l},function(t,e){var n,r,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function u(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(t){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var s,c=[],l=!1,f=-1;function h(){l&&s&&(l=!1,s.length?c=s.concat(c):f=-1,c.length&&d())}function d(){if(!l){var t=u(h);l=!0;for(var e=c.length;e;){for(s=c,c=[];++f<e;)s&&s[f].run();f=-1,e=c.length}s=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function g(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];c.push(new p(t,e)),1!==c.length||l||u(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=g,i.addListener=g,i.once=g,i.off=g,i.removeListener=g,i.removeAllListeners=g,i.emit=g,i.prependListener=g,i.prependOnceListener=g,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";e.byteLength=function(t){var e=c(t),n=e[0],r=e[1];return 3*(n+r)/4-r},e.toByteArray=function(t){for(var e,n=c(t),r=n[0],a=n[1],u=new o(function(t,e,n){return 3*(e+n)/4-n}(0,r,a)),s=0,l=a>0?r-4:r,f=0;f<l;f+=4)e=i[t.charCodeAt(f)]<<18|i[t.charCodeAt(f+1)]<<12|i[t.charCodeAt(f+2)]<<6|i[t.charCodeAt(f+3)],u[s++]=e>>16&255,u[s++]=e>>8&255,u[s++]=255&e;2===a&&(e=i[t.charCodeAt(f)]<<2|i[t.charCodeAt(f+1)]>>4,u[s++]=255&e);1===a&&(e=i[t.charCodeAt(f)]<<10|i[t.charCodeAt(f+1)]<<4|i[t.charCodeAt(f+2)]>>2,u[s++]=e>>8&255,u[s++]=255&e);return u},e.fromByteArray=function(t){for(var e,n=t.length,i=n%3,o=[],a=0,u=n-i;a<u;a+=16383)o.push(l(t,a,a+16383>u?u:a+16383));1===i?(e=t[n-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===i&&(e=(t[n-2]<<8)+t[n-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"="));return o.join("")};for(var r=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=0,s=a.length;u<s;++u)r[u]=a[u],i[a.charCodeAt(u)]=u;function c(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");return-1===n&&(n=e),[n,n===e?0:4-n%4]}function l(t,e,n){for(var i,o,a=[],u=e;u<n;u+=3)i=(t[u]<<16&16711680)+(t[u+1]<<8&65280)+(255&t[u+2]),a.push(r[(o=i)>>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return a.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,n,r,i){var o,a,u=8*i-r-1,s=(1<<u)-1,c=s>>1,l=-7,f=n?i-1:0,h=n?-1:1,d=t[e+f];for(f+=h,o=d&(1<<-l)-1,d>>=-l,l+=u;l>0;o=256*o+t[e+f],f+=h,l-=8);for(a=o&(1<<-l)-1,o>>=-l,l+=r;l>0;a=256*a+t[e+f],f+=h,l-=8);if(0===o)o=1-c;else{if(o===s)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,r),o-=c}return(d?-1:1)*a*Math.pow(2,o-r)},e.write=function(t,e,n,r,i,o){var a,u,s,c=8*o-i-1,l=(1<<c)-1,f=l>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:o-1,p=r?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(u=isNaN(e)?1:0,a=l):(a=Math.floor(Math.log(e)/Math.LN2),e*(s=Math.pow(2,-a))<1&&(a--,s*=2),(e+=a+f>=1?h/s:h*Math.pow(2,1-f))*s>=2&&(a++,s/=2),a+f>=l?(u=0,a=l):a+f>=1?(u=(e*s-1)*Math.pow(2,i),a+=f):(u=e*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;t[n+d]=255&u,d+=p,u/=256,i-=8);for(a=a<<i|u,c+=i;c>0;t[n+d]=255&a,d+=p,a/=256,c-=8);t[n+d-p]|=128*g}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}}])});
+var r=n(15),i=n(16),o=n(17);function a(){return s.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function u(t,e){if(a()<e)throw new RangeError("Invalid typed array length");return s.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=s.prototype:(null===t&&(t=new s(e)),t.length=e),t}function s(t,e,n){if(!(s.TYPED_ARRAY_SUPPORT||this instanceof s))return new s(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return f(this,t)}return c(this,t,e,n)}function c(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r);s.TYPED_ARRAY_SUPPORT?(t=e).__proto__=s.prototype:t=h(t,e);return t}(t,e,n,r):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!s.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|p(e,n),i=(t=u(t,r)).write(e,n);i!==r&&(t=t.slice(0,i));return t}(t,e,n):function(t,e){if(s.isBuffer(e)){var n=0|d(e.length);return 0===(t=u(t,n)).length?t:(e.copy(t,0,0,n),t)}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?u(t,0):h(t,e);if("Buffer"===e.type&&o(e.data))return h(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function l(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function f(t,e){if(l(e),t=u(t,e<0?0:0|d(e)),!s.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function h(t,e){var n=e.length<0?0:0|d(e.length);t=u(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function d(t){if(t>=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|t}function p(t,e){if(s.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return U(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return q(t).length;default:if(r)return U(t).length;e=(""+e).toLowerCase(),r=!0}}function g(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return M(this,e,n);case"utf8":case"utf-8":return E(this,e,n);case"ascii":return S(this,e,n);case"latin1":case"binary":return C(this,e,n);case"base64":return A(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function m(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function v(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=s.from(e,r)),s.isBuffer(e))return 0===e.length?-1:y(t,e,n,r,i);if("number"==typeof e)return e&=255,s.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):y(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function y(t,e,n,r,i){var o,a=1,u=t.length,s=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;a=2,u/=2,s/=2,n/=2}function c(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(i){var l=-1;for(o=n;o<u;o++)if(c(t,o)===c(e,-1===l?0:o-l)){if(-1===l&&(l=o),o-l+1===s)return l*a}else-1!==l&&(o-=o-l),l=-1}else for(n+s>u&&(n=u-s),o=n;o>=0;o--){for(var f=!0,h=0;h<s;h++)if(c(t,o+h)!==c(e,h)){f=!1;break}if(f)return o}return-1}function b(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r))>i&&(r=i):r=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var a=0;a<r;++a){var u=parseInt(e.substr(2*a,2),16);if(isNaN(u))return a;t[n+a]=u}return a}function x(t,e,n,r){return I(U(e,t.length-n),t,n,r)}function _(t,e,n,r){return I(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function w(t,e,n,r){return _(t,e,n,r)}function O(t,e,n,r){return I(q(e),t,n,r)}function k(t,e,n,r){return I(function(t,e){for(var n,r,i,o=[],a=0;a<t.length&&!((e-=2)<0);++a)n=t.charCodeAt(a),r=n>>8,i=n%256,o.push(i),o.push(r);return o}(e,t.length-n),t,n,r)}function A(t,e,n){return 0===e&&n===t.length?r.fromByteArray(t):r.fromByteArray(t.slice(e,n))}function E(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;i<n;){var o,a,u,s,c=t[i],l=null,f=c>239?4:c>223?3:c>191?2:1;if(i+f<=n)switch(f){case 1:c<128&&(l=c);break;case 2:128==(192&(o=t[i+1]))&&(s=(31&c)<<6|63&o)>127&&(l=s);break;case 3:o=t[i+1],a=t[i+2],128==(192&o)&&128==(192&a)&&(s=(15&c)<<12|(63&o)<<6|63&a)>2047&&(s<55296||s>57343)&&(l=s);break;case 4:o=t[i+1],a=t[i+2],u=t[i+3],128==(192&o)&&128==(192&a)&&128==(192&u)&&(s=(15&c)<<18|(63&o)<<12|(63&a)<<6|63&u)>65535&&s<1114112&&(l=s)}null===l?(l=65533,f=1):l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|1023&l),r.push(l),i+=f}return function(t){var e=t.length;if(e<=j)return String.fromCharCode.apply(String,t);var n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=j));return n}(r)}e.Buffer=s,e.SlowBuffer=function(t){+t!=t&&(t=0);return s.alloc(+t)},e.INSPECT_MAX_BYTES=50,s.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=a(),s.poolSize=8192,s._augment=function(t){return t.__proto__=s.prototype,t},s.from=function(t,e,n){return c(null,t,e,n)},s.TYPED_ARRAY_SUPPORT&&(s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0})),s.alloc=function(t,e,n){return function(t,e,n,r){return l(e),e<=0?u(t,e):void 0!==n?"string"==typeof r?u(t,e).fill(n,r):u(t,e).fill(n):u(t,e)}(null,t,e,n)},s.allocUnsafe=function(t){return f(null,t)},s.allocUnsafeSlow=function(t){return f(null,t)},s.isBuffer=function(t){return!(null==t||!t._isBuffer)},s.compare=function(t,e){if(!s.isBuffer(t)||!s.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,o=Math.min(n,r);i<o;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},s.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},s.concat=function(t,e){if(!o(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return s.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=s.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var a=t[n];if(!s.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(r,i),i+=a.length}return r},s.byteLength=p,s.prototype._isBuffer=!0,s.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)m(this,e,e+1);return this},s.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)m(this,e,e+3),m(this,e+1,e+2);return this},s.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)m(this,e,e+7),m(this,e+1,e+6),m(this,e+2,e+5),m(this,e+3,e+4);return this},s.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?E(this,0,t):g.apply(this,arguments)},s.prototype.equals=function(t){if(!s.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===s.compare(this,t)},s.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},s.prototype.compare=function(t,e,n,r,i){if(!s.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(e>>>=0),u=Math.min(o,a),c=this.slice(r,i),l=t.slice(e,n),f=0;f<u;++f)if(c[f]!==l[f]){o=c[f],a=l[f];break}return o<a?-1:a<o?1:0},s.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},s.prototype.indexOf=function(t,e,n){return v(this,t,e,n,!0)},s.prototype.lastIndexOf=function(t,e,n){return v(this,t,e,n,!1)},s.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return b(this,t,e,n);case"utf8":case"utf-8":return x(this,t,e,n);case"ascii":return _(this,t,e,n);case"latin1":case"binary":return w(this,t,e,n);case"base64":return O(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,t,e,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var j=4096;function S(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(127&t[i]);return r}function C(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(t[i]);return r}function M(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var i="",o=e;o<n;++o)i+=L(t[o]);return i}function D(t,e,n){for(var r=t.slice(e,n),i="",o=0;o<r.length;o+=2)i+=String.fromCharCode(r[o]+256*r[o+1]);return i}function F(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function N(t,e,n,r,i,o){if(!s.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<o)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function z(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-n,2);i<o;++i)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function T(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-n,4);i<o;++i)t[n+i]=e>>>8*(r?i:3-i)&255}function $(t,e,n,r,i,o){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function R(t,e,n,r,o){return o||$(t,0,n,4),i.write(t,e,n,r,23,4),n+4}function B(t,e,n,r,o){return o||$(t,0,n,8),i.write(t,e,n,r,52,8),n+8}s.prototype.slice=function(t,e){var n,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),s.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=s.prototype;else{var i=e-t;n=new s(i,void 0);for(var o=0;o<i;++o)n[o]=this[o+t]}return n},s.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||F(t,e,this.length);for(var r=this[t],i=1,o=0;++o<e&&(i*=256);)r+=this[t+o]*i;return r},s.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||F(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},s.prototype.readUInt8=function(t,e){return e||F(t,1,this.length),this[t]},s.prototype.readUInt16LE=function(t,e){return e||F(t,2,this.length),this[t]|this[t+1]<<8},s.prototype.readUInt16BE=function(t,e){return e||F(t,2,this.length),this[t]<<8|this[t+1]},s.prototype.readUInt32LE=function(t,e){return e||F(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},s.prototype.readUInt32BE=function(t,e){return e||F(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},s.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||F(t,e,this.length);for(var r=this[t],i=1,o=0;++o<e&&(i*=256);)r+=this[t+o]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*e)),r},s.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||F(t,e,this.length);for(var r=e,i=1,o=this[t+--r];r>0&&(i*=256);)o+=this[t+--r]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},s.prototype.readInt8=function(t,e){return e||F(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},s.prototype.readInt16LE=function(t,e){e||F(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt16BE=function(t,e){e||F(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt32LE=function(t,e){return e||F(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},s.prototype.readInt32BE=function(t,e){return e||F(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},s.prototype.readFloatLE=function(t,e){return e||F(t,4,this.length),i.read(this,t,!0,23,4)},s.prototype.readFloatBE=function(t,e){return e||F(t,4,this.length),i.read(this,t,!1,23,4)},s.prototype.readDoubleLE=function(t,e){return e||F(t,8,this.length),i.read(this,t,!0,52,8)},s.prototype.readDoubleBE=function(t,e){return e||F(t,8,this.length),i.read(this,t,!1,52,8)},s.prototype.writeUIntLE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||N(this,t,e,n,Math.pow(2,8*n)-1,0);var i=1,o=0;for(this[e]=255&t;++o<n&&(i*=256);)this[e+o]=t/i&255;return e+n},s.prototype.writeUIntBE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||N(this,t,e,n,Math.pow(2,8*n)-1,0);var i=n-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+n},s.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,1,255,0),s.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},s.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):z(this,t,e,!0),e+2},s.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):z(this,t,e,!1),e+2},s.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):T(this,t,e,!0),e+4},s.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):T(this,t,e,!1),e+4},s.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);N(this,t,e,n,i-1,-i)}var o=0,a=1,u=0;for(this[e]=255&t;++o<n&&(a*=256);)t<0&&0===u&&0!==this[e+o-1]&&(u=1),this[e+o]=(t/a>>0)-u&255;return e+n},s.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);N(this,t,e,n,i-1,-i)}var o=n-1,a=1,u=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===u&&0!==this[e+o+1]&&(u=1),this[e+o]=(t/a>>0)-u&255;return e+n},s.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,1,127,-128),s.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},s.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):z(this,t,e,!0),e+2},s.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):z(this,t,e,!1),e+2},s.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,4,2147483647,-2147483648),s.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):T(this,t,e,!0),e+4},s.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),s.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):T(this,t,e,!1),e+4},s.prototype.writeFloatLE=function(t,e,n){return R(this,t,e,!0,n)},s.prototype.writeFloatBE=function(t,e,n){return R(this,t,e,!1,n)},s.prototype.writeDoubleLE=function(t,e,n){return B(this,t,e,!0,n)},s.prototype.writeDoubleBE=function(t,e,n){return B(this,t,e,!1,n)},s.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,o=r-n;if(this===t&&n<e&&e<r)for(i=o-1;i>=0;--i)t[i+e]=this[i+n];else if(o<1e3||!s.TYPED_ARRAY_SUPPORT)for(i=0;i<o;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+o),e);return o},s.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!s.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var o;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(o=e;o<n;++o)this[o]=t;else{var a=s.isBuffer(t)?t:U(new s(t,r).toString()),u=a.length;for(o=0;o<n-e;++o)this[o+e]=a[o%u]}return this};var P=/[^+\/0-9A-Za-z-_]/g;function L(t){return t<16?"0"+t.toString(16):t.toString(16)}function U(t,e){var n;e=e||1/0;for(var r=t.length,i=null,o=[],a=0;a<r;++a){if((n=t.charCodeAt(a))>55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;o.push(n)}else if(n<2048){if((e-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function q(t){return r.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(P,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function I(t,e,n,r){for(var i=0;i<r&&!(i+n>=e.length||i>=t.length);++i)e[i+n]=t[i];return i}}).call(this,n(14))},function(t){t.exports={a:"5.4.0"}},function(t,e,n){"use strict";n.r(e);var r={};n.r(r),n.d(r,"aggregate",function(){return Ro}),n.d(r,"bin",function(){return Po}),n.d(r,"collect",function(){return qo}),n.d(r,"compare",function(){return Io}),n.d(r,"countpattern",function(){return Ho}),n.d(r,"cross",function(){return Yo}),n.d(r,"density",function(){return Qo}),n.d(r,"expression",function(){return ea}),n.d(r,"extent",function(){return ra}),n.d(r,"facet",function(){return aa}),n.d(r,"field",function(){return sa}),n.d(r,"filter",function(){return la}),n.d(r,"flatten",function(){return ha}),n.d(r,"fold",function(){return da}),n.d(r,"formula",function(){return pa}),n.d(r,"generate",function(){return ga}),n.d(r,"impute",function(){return ya}),n.d(r,"joinaggregate",function(){return ba}),n.d(r,"kde",function(){return _a}),n.d(r,"key",function(){return wa}),n.d(r,"load",function(){return ka}),n.d(r,"lookup",function(){return Ea}),n.d(r,"multiextent",function(){return ja}),n.d(r,"multivalues",function(){return Ca}),n.d(r,"params",function(){return Da}),n.d(r,"pivot",function(){return Fa}),n.d(r,"prefacet",function(){return za}),n.d(r,"project",function(){return Ta}),n.d(r,"proxy",function(){return $a}),n.d(r,"relay",function(){return Ra}),n.d(r,"sample",function(){return Ba}),n.d(r,"sequence",function(){return Pa}),n.d(r,"sieve",function(){return La}),n.d(r,"subflow",function(){return ia}),n.d(r,"tupleindex",function(){return Ua}),n.d(r,"values",function(){return qa}),n.d(r,"window",function(){return Ya});var i={};n.r(i),n.d(i,"bound",function(){return Sh}),n.d(i,"identifier",function(){return Dh}),n.d(i,"mark",function(){return Fh}),n.d(i,"overlap",function(){return Nh}),n.d(i,"render",function(){return Uh}),n.d(i,"viewlayout",function(){return ld});var o={};n.r(o),n.d(o,"interpolate",function(){return dg}),n.d(o,"interpolateArray",function(){return ng}),n.d(o,"interpolateBasis",function(){return Hp}),n.d(o,"interpolateBasisClosed",function(){return Gp}),n.d(o,"interpolateDate",function(){return rg}),n.d(o,"interpolateDiscrete",function(){return pg}),n.d(o,"interpolateHue",function(){return gg}),n.d(o,"interpolateNumber",function(){return ig}),n.d(o,"interpolateObject",function(){return og}),n.d(o,"interpolateRound",function(){return mg}),n.d(o,"interpolateString",function(){return hg}),n.d(o,"interpolateTransformCss",function(){return _g}),n.d(o,"interpolateTransformSvg",function(){return wg}),n.d(o,"interpolateZoom",function(){return Ag}),n.d(o,"interpolateRgb",function(){return Qp}),n.d(o,"interpolateRgbBasis",function(){return tg}),n.d(o,"interpolateRgbBasisClosed",function(){return eg}),n.d(o,"interpolateHsl",function(){return jg}),n.d(o,"interpolateHslLong",function(){return Sg}),n.d(o,"interpolateLab",function(){return Cg}),n.d(o,"interpolateHcl",function(){return Dg}),n.d(o,"interpolateHclLong",function(){return Fg}),n.d(o,"interpolateCubehelix",function(){return zg}),n.d(o,"interpolateCubehelixLong",function(){return Tg}),n.d(o,"piecewise",function(){return $g}),n.d(o,"quantize",function(){return Rg});var a={};n.r(a),n.d(a,"axisticks",function(){return hv}),n.d(a,"datajoin",function(){return dv}),n.d(a,"encode",function(){return mv}),n.d(a,"legendentries",function(){return kv}),n.d(a,"linkpath",function(){return Mv}),n.d(a,"pie",function(){return zv}),n.d(a,"scale",function(){return Bv}),n.d(a,"sortitems",function(){return qv}),n.d(a,"stack",function(){return Wv}),n.d(a,"validTicks",function(){return cv});var u={};n.r(u),n.d(u,"contour",function(){return Oy}),n.d(u,"geojson",function(){return Ey}),n.d(u,"geopath",function(){return Vw}),n.d(u,"geopoint",function(){return Xw}),n.d(u,"geoshape",function(){return Jw}),n.d(u,"graticule",function(){return Zw}),n.d(u,"projection",function(){return Qw});var s={};n.r(s),n.d(s,"force",function(){return XO});var c={};n.r(c),n.d(c,"nest",function(){return Qk}),n.d(c,"pack",function(){return iA}),n.d(c,"partition",function(){return uA}),n.d(c,"stratify",function(){return cA}),n.d(c,"tree",function(){return hA}),n.d(c,"treelinks",function(){return pA}),n.d(c,"treemap",function(){return vA});var l={};n.r(l),n.d(l,"loess",function(){return xA}),n.d(l,"regression",function(){return wA});var f={};n.r(f),n.d(f,"voronoi",function(){return uE});var h={};n.r(h),n.d(h,"wordcloud",function(){return wE});var d={};n.r(d),n.d(d,"crossfilter",function(){return jE}),n.d(d,"resolvefilter",function(){return CE});var p={};n.r(p),n.d(p,"version",function(){return ME.a}),n.d(p,"Dataflow",function(){return xi}),n.d(p,"EventStream",function(){return Kt}),n.d(p,"Parameters",function(){return Ht}),n.d(p,"Pulse",function(){return ci}),n.d(p,"MultiPulse",function(){return pi}),n.d(p,"Operator",function(){return Xt}),n.d(p,"Transform",function(){return Oi}),n.d(p,"changeset",function(){return It}),n.d(p,"ingest",function(){return Bt}),n.d(p,"isTuple",function(){return Tt}),n.d(p,"definition",function(){return Ei}),n.d(p,"transform",function(){return ji}),n.d(p,"transforms",function(){return Ai}),n.d(p,"tupleid",function(){return $t}),n.d(p,"scale",function(){return Xm}),n.d(p,"scheme",function(){return uv}),n.d(p,"interpolate",function(){return rv}),n.d(p,"interpolateColors",function(){return tv}),n.d(p,"interpolateRange",function(){return Km}),n.d(p,"timeInterval",function(){return Rd}),n.d(p,"quantizeInterpolator",function(){return ev}),n.d(p,"projection",function(){return Ww}),n.d(p,"View",function(){return gM}),n.d(p,"expressionFunction",function(){return LC}),n.d(p,"formatLocale",function(){return lm}),n.d(p,"timeFormatLocale",function(){return ei}),n.d(p,"parse",function(){return XN}),n.d(p,"runtime",function(){return QC}),n.d(p,"runtimeContext",function(){return tM}),n.d(p,"bin",function(){return $i}),n.d(p,"bootstrapCI",function(){return co}),n.d(p,"quartiles",function(){return lo}),n.d(p,"random",function(){return Bi}),n.d(p,"setRandom",function(){return Pi}),n.d(p,"randomLCG",function(){return fo}),n.d(p,"randomInteger",function(){return ho}),n.d(p,"randomKDE",function(){return go}),n.d(p,"randomMixture",function(){return vo}),n.d(p,"randomNormal",function(){return po}),n.d(p,"randomUniform",function(){return yo}),n.d(p,"regressionLinear",function(){return Oo}),n.d(p,"regressionLog",function(){return ko}),n.d(p,"regressionExp",function(){return Ao}),n.d(p,"regressionPow",function(){return Eo}),n.d(p,"regressionQuad",function(){return jo}),n.d(p,"regressionPoly",function(){return So}),n.d(p,"regressionLoess",function(){return Co}),n.d(p,"sampleCurve",function(){return No}),n.d(p,"accessor",function(){return Mt.f}),n.d(p,"accessorName",function(){return Mt.h}),n.d(p,"accessorFields",function(){return Mt.g}),n.d(p,"id",function(){return Mt.v}),n.d(p,"identity",function(){return Mt.w}),n.d(p,"zero",function(){return Mt.gb}),n.d(p,"one",function(){return Mt.L}),n.d(p,"truthy",function(){return Mt.db}),n.d(p,"falsy",function(){return Mt.r}),n.d(p,"logger",function(){return Mt.J}),n.d(p,"None",function(){return Mt.d}),n.d(p,"Error",function(){return Mt.b}),n.d(p,"Warn",function(){return Mt.e}),n.d(p,"Info",function(){return Mt.c}),n.d(p,"Debug",function(){return Mt.a}),n.d(p,"panLinear",function(){return Mt.N}),n.d(p,"panLog",function(){return Mt.O}),n.d(p,"panPow",function(){return Mt.P}),n.d(p,"panSymlog",function(){return Mt.Q}),n.d(p,"zoomLinear",function(){return Mt.hb}),n.d(p,"zoomLog",function(){return Mt.ib}),n.d(p,"zoomPow",function(){return Mt.jb}),n.d(p,"zoomSymlog",function(){return Mt.kb}),n.d(p,"quarter",function(){return Mt.S}),n.d(p,"utcquarter",function(){return Mt.eb}),n.d(p,"array",function(){return Mt.i}),n.d(p,"clampRange",function(){return Mt.j}),n.d(p,"compare",function(){return Mt.k}),n.d(p,"constant",function(){return Mt.l}),n.d(p,"debounce",function(){return Mt.m}),n.d(p,"error",function(){return Mt.n}),n.d(p,"extend",function(){return Mt.o}),n.d(p,"extent",function(){return Mt.p}),n.d(p,"extentIndex",function(){return Mt.q}),n.d(p,"fastmap",function(){return Mt.s}),n.d(p,"field",function(){return Mt.t}),n.d(p,"flush",function(){return Mt.u}),n.d(p,"inherits",function(){return Mt.x}),n.d(p,"inrange",function(){return Mt.y}),n.d(p,"isArray",function(){return Mt.z}),n.d(p,"isBoolean",function(){return Mt.A}),n.d(p,"isDate",function(){return Mt.B}),n.d(p,"isFunction",function(){return Mt.C}),n.d(p,"isNumber",function(){return Mt.D}),n.d(p,"isObject",function(){return Mt.E}),n.d(p,"isRegExp",function(){return Mt.F}),n.d(p,"isString",function(){return Mt.G}),n.d(p,"key",function(){return Mt.H}),n.d(p,"lerp",function(){return Mt.I}),n.d(p,"merge",function(){return Mt.K}),n.d(p,"pad",function(){return Mt.M}),n.d(p,"peek",function(){return Mt.R}),n.d(p,"repeat",function(){return Mt.T}),n.d(p,"span",function(){return Mt.U}),n.d(p,"splitAccessPath",function(){return Mt.V}),n.d(p,"stringValue",function(){return Mt.W}),n.d(p,"toBoolean",function(){return Mt.X}),n.d(p,"toDate",function(){return Mt.Y}),n.d(p,"toNumber",function(){return Mt.Z}),n.d(p,"toString",function(){return Mt.bb}),n.d(p,"toSet",function(){return Mt.ab}),n.d(p,"truncate",function(){return Mt.cb}),n.d(p,"visitArray",function(){return Mt.fb}),n.d(p,"loader",function(){return ri}),n.d(p,"read",function(){return ni}),n.d(p,"inferType",function(){return de}),n.d(p,"inferTypes",function(){return pe}),n.d(p,"typeParsers",function(){return le}),n.d(p,"format",function(){return qe}),n.d(p,"formats",function(){return Ie}),n.d(p,"responseType",function(){return We}),n.d(p,"Bounds",function(){return Tu}),n.d(p,"Gradient",function(){return qu}),n.d(p,"GroupItem",function(){return Wu}),n.d(p,"ResourceLoader",function(){return Yu}),n.d(p,"Item",function(){return Iu}),n.d(p,"Scenegraph",function(){return yf}),n.d(p,"Handler",function(){return jf}),n.d(p,"Renderer",function(){return Mf}),n.d(p,"CanvasHandler",function(){return Nf}),n.d(p,"CanvasRenderer",function(){return Bf}),n.d(p,"SVGHandler",function(){return qf}),n.d(p,"SVGRenderer",function(){return Zf}),n.d(p,"SVGStringRenderer",function(){return lh}),n.d(p,"RenderType",function(){return mh}),n.d(p,"renderModule",function(){return yh}),n.d(p,"intersect",function(){return bh}),n.d(p,"Marks",function(){return ff}),n.d(p,"boundClip",function(){return kh}),n.d(p,"boundContext",function(){return Qc}),n.d(p,"boundStroke",function(){return Jc}),n.d(p,"boundItem",function(){return hf}),n.d(p,"boundMark",function(){return pf}),n.d(p,"pathCurves",function(){return fc}),n.d(p,"pathSymbols",function(){return Sc}),n.d(p,"pathRectangle",function(){return Tc}),n.d(p,"pathTrail",function(){return $c}),n.d(p,"pathParse",function(){return pc}),n.d(p,"pathRender",function(){return Ac}),n.d(p,"point",function(){return Ef}),n.d(p,"domCreate",function(){return _f}),n.d(p,"domFind",function(){return wf}),n.d(p,"domChild",function(){return Of}),n.d(p,"domClear",function(){return kf}),n.d(p,"openTag",function(){return Hf}),n.d(p,"closeTag",function(){return Gf}),n.d(p,"font",function(){return of}),n.d(p,"fontFamily",function(){return rf}),n.d(p,"fontSize",function(){return tf}),n.d(p,"textMetrics",function(){return Xl}),n.d(p,"resetSVGClipId",function(){return Cl}),n.d(p,"sceneEqual",function(){return Eh}),n.d(p,"pathEqual",function(){return jh}),n.d(p,"sceneToJSON",function(){return mf}),n.d(p,"sceneFromJSON",function(){return vf}),n.d(p,"intersectPath",function(){return rl}),n.d(p,"intersectPoint",function(){return il}),n.d(p,"intersectRule",function(){return al}),n.d(p,"intersectBoxLine",function(){return ul}),n.d(p,"sceneZOrder",function(){return dl}),n.d(p,"sceneVisit",function(){return pl}),n.d(p,"scenePickVisit",function(){return gl});var g={};n.r(g),n.d(g,"INVALID_SPEC",function(){return N$}),n.d(g,"FIT_NON_SINGLE",function(){return z$}),n.d(g,"CANNOT_FIX_RANGE_STEP_WITH_FIT",function(){return T$}),n.d(g,"cannotProjectOnChannelWithoutField",function(){return $$}),n.d(g,"nearestNotSupportForContinuous",function(){return R$}),n.d(g,"selectionNotSupported",function(){return B$}),n.d(g,"selectionNotFound",function(){return P$}),n.d(g,"SCALE_BINDINGS_CONTINUOUS",function(){return L$}),n.d(g,"NO_INIT_SCALE_BINDINGS",function(){return U$}),n.d(g,"noSuchRepeatedValue",function(){return q$}),n.d(g,"columnsNotSupportByRowCol",function(){return I$}),n.d(g,"CONCAT_CANNOT_SHARE_AXIS",function(){return W$}),n.d(g,"REPEAT_CANNOT_SHARE_AXIS",function(){return H$}),n.d(g,"unrecognizedParse",function(){return G$}),n.d(g,"differentParse",function(){return Y$}),n.d(g,"invalidTransformIgnored",function(){return V$}),n.d(g,"NO_FIELDS_NEEDS_AS",function(){return X$}),n.d(g,"encodingOverridden",function(){return J$}),n.d(g,"projectionOverridden",function(){return Z$}),n.d(g,"primitiveChannelDef",function(){return Q$}),n.d(g,"invalidFieldType",function(){return K$}),n.d(g,"nonZeroScaleUsedWithLengthMark",function(){return tR}),n.d(g,"invalidFieldTypeForCountAggregate",function(){return eR}),n.d(g,"invalidAggregate",function(){return nR}),n.d(g,"missingFieldType",function(){return rR}),n.d(g,"droppingColor",function(){return iR}),n.d(g,"emptyFieldDef",function(){return oR}),n.d(g,"latLongDeprecated",function(){return aR}),n.d(g,"LINE_WITH_VARYING_SIZE",function(){return uR}),n.d(g,"incompatibleChannel",function(){return sR}),n.d(g,"invalidEncodingChannel",function(){return cR}),n.d(g,"facetChannelShouldBeDiscrete",function(){return lR}),n.d(g,"facetChannelDropped",function(){return fR}),n.d(g,"discreteChannelCannotEncode",function(){return hR}),n.d(g,"BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL",function(){return dR}),n.d(g,"lineWithRange",function(){return pR}),n.d(g,"orientOverridden",function(){return gR}),n.d(g,"CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN",function(){return mR}),n.d(g,"cannotUseScalePropertyWithNonColor",function(){return vR}),n.d(g,"unaggregateDomainHasNoEffectForRawField",function(){return yR}),n.d(g,"unaggregateDomainWithNonSharedDomainOp",function(){return bR}),n.d(g,"unaggregatedDomainWithLogScale",function(){return xR}),n.d(g,"cannotApplySizeToNonOrientedMark",function(){return _R}),n.d(g,"rangeStepDropped",function(){return wR}),n.d(g,"scaleTypeNotWorkWithChannel",function(){return OR}),n.d(g,"scaleTypeNotWorkWithFieldDef",function(){return kR}),n.d(g,"scalePropertyNotWorkWithScaleType",function(){return AR}),n.d(g,"scaleTypeNotWorkWithMark",function(){return ER}),n.d(g,"mergeConflictingProperty",function(){return jR}),n.d(g,"independentScaleMeansIndependentGuide",function(){return SR}),n.d(g,"domainSortDropped",function(){return CR}),n.d(g,"UNABLE_TO_MERGE_DOMAINS",function(){return MR}),n.d(g,"MORE_THAN_ONE_SORT",function(){return DR}),n.d(g,"INVALID_CHANNEL_FOR_AXIS",function(){return FR}),n.d(g,"cannotStackRangedMark",function(){return NR}),n.d(g,"cannotStackNonLinearScale",function(){return zR}),n.d(g,"stackNonSummativeAggregate",function(){return TR}),n.d(g,"invalidTimeUnit",function(){return $R}),n.d(g,"dayReplacedWithDate",function(){return RR}),n.d(g,"droppedDay",function(){return BR}),n.d(g,"errorBarCenterAndExtentAreNotNeeded",function(){return PR}),n.d(g,"errorBarCenterIsUsedWithWrongExtent",function(){return LR}),n.d(g,"errorBarContinuousAxisHasCustomizedAggregate",function(){return UR}),n.d(g,"errorBarCenterIsNotNeeded",function(){return qR}),n.d(g,"errorBand1DNotSupport",function(){return IR}),n.d(g,"channelRequiredForBinned",function(){return WR}),n.d(g,"domainRequiredForThresholdScale",function(){return HR});var m={};n.r(m),n.d(m,"symbols",function(){return hW}),n.d(m,"gradient",function(){return dW}),n.d(m,"labels",function(){return pW});var v={};n.r(v),n.d(v,"compile",function(){return TG}),n.d(v,"extractTransforms",function(){return RG}),n.d(v,"normalize",function(){return XL}),n.d(v,"version",function(){return BG});var y={};n.r(y),n.d(y,"excel",function(){return UG}),n.d(y,"ggplot2",function(){return qG}),n.d(y,"quartz",function(){return IG}),n.d(y,"vox",function(){return WG}),n.d(y,"dark",function(){return HG}),n.d(y,"fivethirtyeight",function(){return GG}),n.d(y,"latimes",function(){return XG});function b(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&(n[r[i]]=t[r[i]])}return n}var x="http://www.w3.org/1999/xhtml",_={svg:"http://www.w3.org/2000/svg",xhtml:x,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},w=function(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),_.hasOwnProperty(e)?{space:_[e],local:t}:t};var O=function(t){var e=w(t);return(e.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===x&&e.documentElement.namespaceURI===x?e.createElement(t):e.createElementNS(n,t)}})(e)};function k(){}var A=function(t){return null==t?k:function(){return this.querySelector(t)}};function E(){return[]}var j=function(t){return new Array(t.length)};function S(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}S.prototype={constructor:S,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var C="$";function M(t,e,n,r,i,o){for(var a,u=0,s=e.length,c=o.length;u<c;++u)(a=e[u])?(a.__data__=o[u],r[u]=a):n[u]=new S(t,o[u]);for(;u<s;++u)(a=e[u])&&(i[u]=a)}function D(t,e,n,r,i,o,a){var u,s,c,l={},f=e.length,h=o.length,d=new Array(f);for(u=0;u<f;++u)(s=e[u])&&(d[u]=c=C+a.call(s,s.__data__,u,e),c in l?i[u]=s:l[c]=s);for(u=0;u<h;++u)(s=l[c=C+a.call(t,o[u],u,o)])?(r[u]=s,s.__data__=o[u],l[c]=null):n[u]=new S(t,o[u]);for(u=0;u<f;++u)(s=e[u])&&l[d[u]]===s&&(i[u]=s)}function F(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function N(t){return function(){this.removeAttribute(t)}}function z(t){return function(){this.removeAttributeNS(t.space,t.local)}}function T(t,e){return function(){this.setAttribute(t,e)}}function $(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function R(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function B(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}var P=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView};function L(t){return function(){this.style.removeProperty(t)}}function U(t,e,n){return function(){this.style.setProperty(t,e,n)}}function q(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function I(t,e){return t.style.getPropertyValue(e)||P(t).getComputedStyle(t,null).getPropertyValue(e)}function W(t){return function(){delete this[t]}}function H(t,e){return function(){this[t]=e}}function G(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function Y(t){return t.trim().split(/^|\s+/)}function V(t){return t.classList||new X(t)}function X(t){this._node=t,this._names=Y(t.getAttribute("class")||"")}function J(t,e){for(var n=V(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function Z(t,e){for(var n=V(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function Q(t){return function(){J(this,t)}}function K(t){return function(){Z(this,t)}}function tt(t,e){return function(){(e.apply(this,arguments)?J:Z)(this,t)}}X.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function et(){this.textContent=""}function nt(t){return function(){this.textContent=t}}function rt(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function it(){this.innerHTML=""}function ot(t){return function(){this.innerHTML=t}}function at(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function ut(){this.nextSibling&&this.parentNode.appendChild(this)}function st(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function ct(){return null}function lt(){var t=this.parentNode;t&&t.removeChild(this)}function ft(){return this.parentNode.insertBefore(this.cloneNode(!1),this.nextSibling)}function ht(){return this.parentNode.insertBefore(this.cloneNode(!0),this.nextSibling)}var dt={},pt=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(dt={mouseenter:"mouseover",mouseleave:"mouseout"}));function gt(t,e,n){return t=mt(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function mt(t,e,n){return function(r){var i=pt;pt=r;try{t.call(this,this.__data__,e,n)}finally{pt=i}}}function vt(t){return t.trim().split(/^|\s+/).map(function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}})}function yt(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,o=e.length;r<o;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.capture);++i?e.length=i:delete this.__on}}}function bt(t,e,n){var r=dt.hasOwnProperty(t.type)?gt:mt;return function(i,o,a){var u,s=this.__on,c=r(e,o,a);if(s)for(var l=0,f=s.length;l<f;++l)if((u=s[l]).type===t.type&&u.name===t.name)return this.removeEventListener(u.type,u.listener,u.capture),this.addEventListener(u.type,u.listener=c,u.capture=n),void(u.value=e);this.addEventListener(t.type,c,n),u={type:t.type,name:t.name,value:e,listener:c,capture:n},s?s.push(u):this.__on=[u]}}function xt(t,e,n){var r=P(t),i=r.CustomEvent;"function"==typeof i?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}var _t=[null];function wt(t,e){this._groups=t,this._parents=e}function Ot(){return new wt([[document.documentElement]],_t)}wt.prototype=Ot.prototype={constructor:wt,select:function(t){"function"!=typeof t&&(t=A(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o,a,u=e[i],s=u.length,c=r[i]=new Array(s),l=0;l<s;++l)(o=u[l])&&(a=t.call(o,o.__data__,l,u))&&("__data__"in o&&(a.__data__=o.__data__),c[l]=a);return new wt(r,this._parents)},selectAll:function(t){var e;"function"!=typeof t&&(t=null==(e=t)?E:function(){return this.querySelectorAll(e)});for(var n=this._groups,r=n.length,i=[],o=[],a=0;a<r;++a)for(var u,s=n[a],c=s.length,l=0;l<c;++l)(u=s[l])&&(i.push(t.call(u,u.__data__,l,s)),o.push(u));return new wt(i,o)},filter:function(t){var e;"function"!=typeof t&&(e=t,t=function(){return this.matches(e)});for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o)for(var a,u=n[o],s=u.length,c=i[o]=[],l=0;l<s;++l)(a=u[l])&&t.call(a,a.__data__,l,u)&&c.push(a);return new wt(i,this._parents)},data:function(t,e){if(!t)return p=new Array(this.size()),l=-1,this.each(function(t){p[++l]=t}),p;var n,r=e?D:M,i=this._parents,o=this._groups;"function"!=typeof t&&(n=t,t=function(){return n});for(var a=o.length,u=new Array(a),s=new Array(a),c=new Array(a),l=0;l<a;++l){var f=i[l],h=o[l],d=h.length,p=t.call(f,f&&f.__data__,l,i),g=p.length,m=s[l]=new Array(g),v=u[l]=new Array(g);r(f,h,m,v,c[l]=new Array(d),p,e);for(var y,b,x=0,_=0;x<g;++x)if(y=m[x]){for(x>=_&&(_=x+1);!(b=v[_])&&++_<g;);y._next=b||null}}return(u=new wt(u,i))._enter=s,u._exit=c,u},enter:function(){return new wt(this._enter||this._groups.map(j),this._parents)},exit:function(){return new wt(this._exit||this._groups.map(j),this._parents)},join:function(t,e,n){var r=this.enter(),i=this,o=this.exit();return r="function"==typeof t?t(r):r.append(t+""),null!=e&&(i=e(i)),null==n?o.remove():n(o),r&&i?r.merge(i).order():i},merge:function(t){for(var e=this._groups,n=t._groups,r=e.length,i=n.length,o=Math.min(r,i),a=new Array(r),u=0;u<o;++u)for(var s,c=e[u],l=n[u],f=c.length,h=a[u]=new Array(f),d=0;d<f;++d)(s=c[d]||l[d])&&(h[d]=s);for(;u<r;++u)a[u]=e[u];return new wt(a,this._parents)},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=F);for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o){for(var a,u=n[o],s=u.length,c=i[o]=new Array(s),l=0;l<s;++l)(a=u[l])&&(c[l]=a);c.sort(e)}return new wt(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){var t=new Array(this.size()),e=-1;return this.each(function(){t[++e]=this}),t},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null},size:function(){var t=0;return this.each(function(){++t}),t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,o=e[n],a=0,u=o.length;a<u;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this},attr:function(t,e){var n=w(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==e?n.local?z:N:"function"==typeof e?n.local?B:R:n.local?$:T)(n,e))},style:function(t,e,n){return arguments.length>1?this.each((null==e?L:"function"==typeof e?q:U)(t,e,null==n?"":n)):I(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?W:"function"==typeof e?G:H)(t,e)):this.node()[t]},classed:function(t,e){var n=Y(t+"");if(arguments.length<2){for(var r=V(this.node()),i=-1,o=n.length;++i<o;)if(!r.contains(n[i]))return!1;return!0}return this.each(("function"==typeof e?tt:e?Q:K)(n,e))},text:function(t){return arguments.length?this.each(null==t?et:("function"==typeof t?rt:nt)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?it:("function"==typeof t?at:ot)(t)):this.node().innerHTML},raise:function(){return this.each(ut)},lower:function(){return this.each(st)},append:function(t){var e="function"==typeof t?t:O(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})},insert:function(t,e){var n="function"==typeof t?t:O(t),r=null==e?ct:"function"==typeof e?e:A(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})},remove:function(){return this.each(lt)},clone:function(t){return this.select(t?ht:ft)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var r,i,o=vt(t+""),a=o.length;if(!(arguments.length<2)){for(u=e?bt:yt,null==n&&(n=!1),r=0;r<a;++r)this.each(u(o[r],e,n));return this}var u=this.node().__on;if(u)for(var s,c=0,l=u.length;c<l;++c)for(r=0,s=u[c];r<a;++r)if((i=o[r]).type===s.type&&i.name===s.name)return s.value},dispatch:function(t,e){return this.each(("function"==typeof e?function(t,e){return function(){return xt(this,t,e.apply(this,arguments))}}:function(t,e){return function(){return xt(this,t,e)}})(t,e))}};var kt=function(t){return"string"==typeof t?new wt([[document.querySelector(t)]],[document.documentElement]):new wt([[t]],_t)},At=0;function Et(){this._="@"+(++At).toString(36)}Et.prototype=function(){return new Et}.prototype={constructor:Et,get:function(t){for(var e=this._;!(e in t);)if(!(t=t.parentNode))return;return t[e]},set:function(t,e){return t[this._]=e},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};var jt=n(2),St=n.n(jt),Ct=n(4),Mt=n(0);function Dt(t){var e=t||Mt.w,n=[],r={};return n.add=function(t){var i=e(t);return r[i]||(r[i]=1,n.push(t)),n},n.remove=function(t){var i,o=e(t);return r[o]&&(r[o]=0,(i=n.indexOf(t))>=0&&n.splice(i,1)),n},n}var Ft=async function(t,e){try{await e(t)}catch(e){t.error(e)}},Nt=Symbol("vega_id"),zt=1;function Tt(t){return!(!t||!$t(t))}function $t(t){return t[Nt]}function Rt(t,e){return t[Nt]=e,t}function Bt(t){var e=t===Object(t)?t:{data:t};return $t(e)?e:Rt(e,zt++)}function Pt(t){return Lt(t,Bt({}))}function Lt(t,e){for(var n in t)e[n]=t[n];return e}function Ut(t,e){return Rt(e,$t(t))}function qt(t){return t&&t.constructor===It}function It(){var t=[],e=[],n=[],r=[],i=[],o=!1;return{constructor:It,insert:function(e){for(var n=Object(Mt.i)(e),r=0,i=n.length;r<i;++r)t.push(n[r]);return this},remove:function(t){for(var n=Object(Mt.C)(t)?r:e,i=Object(Mt.i)(t),o=0,a=i.length;o<a;++o)n.push(i[o]);return this},modify:function(t,e,r){var o={field:e,value:Object(Mt.l)(r)};return Object(Mt.C)(t)?(o.filter=t,i.push(o)):(o.tuple=t,n.push(o)),this},encode:function(t,e){return Object(Mt.C)(t)?i.push({filter:t,field:e}):n.push({tuple:t,field:e}),this},reflow:function(){return o=!0,this},pulse:function(a,u){var s,c,l,f,h,d,p={},g={};for(s=0,c=u.length;s<c;++s)p[$t(u[s])]=1;for(s=0,c=e.length;s<c;++s)p[$t(h=e[s])]=-1;for(s=0,c=r.length;s<c;++s)f=r[s],u.forEach(function(t){f(t)&&(p[$t(t)]=-1)});for(s=0,c=t.length;s<c;++s)d=$t(h=t[s]),p[d]?p[d]=1:a.add.push(Bt(t[s]));for(s=0,c=u.length;s<c;++s)h=u[s],p[$t(h)]<0&&a.rem.push(h);function m(t,e,n){n?t[e]=n(t):a.encode=e,o||(g[$t(t)]=t)}for(s=0,c=n.length;s<c;++s)h=(l=n[s]).tuple,f=l.field,(d=p[$t(h)])>0&&(m(h,f,l.value),a.modifies(f));for(s=0,c=i.length;s<c;++s)l=i[s],f=l.filter,u.forEach(function(t){f(t)&&p[$t(t)]>0&&m(t,l.field,l.value)}),a.modifies(l.field);if(o)a.mod=e.length||r.length?u.filter(function(t){return p[$t(t)]>0}):u.slice();else for(d in g)a.mod.push(g[d]);return a}}}var Wt="_:mod:_";function Ht(){Object.defineProperty(this,Wt,{writable:!0,value:{}})}var Gt=Ht.prototype;Gt.set=function(t,e,n,r){var i=this,o=i[t],a=i[Wt];return null!=e&&e>=0?(o[e]!==n||r)&&(o[e]=n,a[e+":"+t]=-1,a[t]=-1):(o!==n||r)&&(i[t]=n,a[t]=Object(Mt.z)(n)?1+n.length:-1),i},Gt.modified=function(t,e){var n,r=this[Wt];if(!arguments.length){for(n in r)if(r[n])return!0;return!1}if(Object(Mt.z)(t)){for(n=0;n<t.length;++n)if(r[t[n]])return!0;return!1}return null!=e&&e>=0?e+1<r[t]||!!r[e+":"+t]:!!r[t]},Gt.clear=function(){return this[Wt]={},this};var Yt=0,Vt=new Ht;function Xt(t,e,n,r){this.id=++Yt,this.value=t,this.stamp=-1,this.rank=-1,this.qrank=-1,this.flags=0,e&&(this._update=e),n&&this.parameters(n,r)}var Jt=Xt.prototype;function Zt(t){return function(e){var n=this.flags;return 0===arguments.length?!!(n&t):(this.flags=e?n|t:n&~t,this)}}Jt.targets=function(){return this._targets||(this._targets=Dt(Mt.v))},Jt.set=function(t){return this.value!==t?(this.value=t,1):0},Jt.skip=Zt(1),Jt.modified=Zt(2),Jt.parameters=function(t,e,n){e=!1!==e;var r,i,o,a,u=this,s=u._argval=u._argval||new Ht,c=u._argops=u._argops||[],l=[];function f(t,n,r){r instanceof Xt?(r!==u&&(e&&r.targets().add(u),l.push(r)),c.push({op:r,name:t,index:n})):s.set(t,n,r)}for(r in t)if(i=t[r],"pulse"===r)Object(Mt.i)(i).forEach(function(t){t instanceof Xt?t!==u&&(t.targets().add(u),l.push(t)):Object(Mt.n)("Pulse parameters must be operator instances.")}),u.source=i;else if(Object(Mt.z)(i))for(s.set(r,-1,Array(o=i.length)),a=0;a<o;++a)f(r,a,i[a]);else f(r,-1,i);return this.marshall().clear(),n&&(c.initonly=!0),l},Jt.marshall=function(t){var e,n,r,i,o,a=this._argval||Vt,u=this._argops;if(u){for(n=0,r=u.length;n<r;++n)o=(i=(e=u[n]).op).modified()&&i.stamp===t,a.set(e.name,e.index,i.value,o);if(u.initonly){for(n=0;n<r;++n)(e=u[n]).op.targets().remove(this);this._argops=null,this._update=null}}return a},Jt.evaluate=function(t){var e=this._update;if(e){var n=this.marshall(t.stamp),r=e.call(this,n,t);if(n.clear(),r!==this.value)this.value=r;else if(!this.modified())return t.StopPropagation}},Jt.run=function(t){return t.stamp<=this.stamp?t.StopPropagation:(this.skip()?(this.skip(!1),e=0):e=this.evaluate(t),this.stamp=t.stamp,this.pulse=e||t);var e};var Qt=0;function Kt(t,e,n){this.id=++Qt,this.value=null,n&&(this.receive=n),t&&(this._filter=t),e&&(this._apply=e)}function te(t,e,n){return new Kt(t,e,n)}var ee=Kt.prototype;ee._filter=Mt.db,ee._apply=Mt.w,ee.targets=function(){return this._targets||(this._targets=Dt(Mt.v))},ee.consume=function(t){return arguments.length?(this._consume=!!t,this):!!this._consume},ee.receive=function(t){if(this._filter(t)){for(var e=this.value=this._apply(t),n=this._targets,r=n?n.length:0,i=0;i<r;++i)n[i].receive(e);this._consume&&(t.preventDefault(),t.stopPropagation())}},ee.filter=function(t){var e=te(t);return this.targets().add(e),e},ee.apply=function(t){var e=te(null,t);return this.targets().add(e),e},ee.merge=function(){var t=te();this.targets().add(t);for(var e=0,n=arguments.length;e<n;++e)arguments[e].targets().add(t);return t},ee.throttle=function(t){var e=-1;return this.filter(function(){var n=Date.now();return n-e>t?(e=n,1):0})},ee.debounce=function(t){var e=te();return this.targets().add(te(null,null,Object(Mt.m)(t,function(t){var n=t.dataflow;e.receive(t),n&&n.run&&n.run()}))),e},ee.between=function(t,e){var n=!1;return t.targets().add(te(null,null,function(){n=!0})),e.targets().add(te(null,null,function(){n=!1})),this.filter(function(){return n})};var ne=/^([A-Za-z]+:)?\/\//,re="file://";async function ie(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function oe(t,e){e=Object(Mt.o)({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,a,u;return null!=t&&"string"==typeof t||Object(Mt.n)("Sanitize failure, invalid URI: "+Object(Mt.W)(t)),o=ne.test(t),(u=e.baseURL)&&!o&&(t.startsWith("/")||"/"===u[u.length-1]||(t="/"+t),t=u+t),a=(i=t.startsWith(re))||"file"===e.mode||"http"!==e.mode&&!o&&n,i?t=t.slice(re.length):t.startsWith("//")&&("file"===e.defaultProtocol?(t=t.slice(2),a=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!a}),r.href=t,e.target&&(r.target=e.target+""),e.rel&&(r.rel=e.rel+""),r}function ae(t){return t?function(e){return new Promise(function(n,r){t.readFile(e,function(t,e){t?r(t):n(e)})})}:ue}async function ue(){Object(Mt.n)("No file system access.")}function se(t){return t?async function(e,n){const r=Object(Mt.o)({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Object(Mt.C)(o[i])?o[i]():o.text():Object(Mt.n)(o.status+""+o.statusText)}:ce}async function ce(){Object(Mt.n)("No HTTP fetch method available.")}var le={boolean:Mt.X,integer:Mt.Z,number:Mt.Z,date:Mt.Y,string:Mt.bb,unknown:Mt.w},fe=[function(t){return"true"===t||"false"===t||!0===t||!1===t},function(t){return ge(t)&&(t=+t)==~~t},ge,function(t){return!isNaN(Date.parse(t))}],he=["boolean","integer","number","date"];function de(t,e){if(!t||!t.length)return"unknown";var n,r,i,o,a=0,u=t.length,s=fe.length,c=fe.map(function(t,e){return e+1});for(r=0,u=t.length;r<u;++r)for(n=e?t[r][e]:t[r],i=0;i<s;++i)if(c[i]&&(null!=(o=n)&&o==o)&&!fe[i](n)&&(c[i]=0,++a===fe.length))return"string";return a=c.reduce(function(t,e){return 0===t?e:t},0)-1,he[a]}function pe(t,e){return e.reduce(function(e,n){return e[n]=de(t,n),e},{})}function ge(t){return!(isNaN(+t)||t instanceof Date)}var me={},ve={},ye=34,be=10,xe=13;function _e(t){return new Function("d","return {"+t.map(function(t,e){return JSON.stringify(t)+": d["+e+"]"}).join(",")+"}")}function we(t){var e=Object.create(null),n=[];return t.forEach(function(t){for(var r in t)r in e||n.push(e[r]=r)}),n}function Oe(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function ke(t){var e,n=t.getUTCHours(),r=t.getUTCMinutes(),i=t.getUTCSeconds(),o=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":((e=t.getUTCFullYear())<0?"-"+Oe(-e,6):e>9999?"+"+Oe(e,6):Oe(e,4))+"-"+Oe(t.getUTCMonth()+1,2)+"-"+Oe(t.getUTCDate(),2)+(o?"T"+Oe(n,2)+":"+Oe(r,2)+":"+Oe(i,2)+"."+Oe(o,3)+"Z":i?"T"+Oe(n,2)+":"+Oe(r,2)+":"+Oe(i,2)+"Z":r||n?"T"+Oe(n,2)+":"+Oe(r,2)+"Z":"")}var Ae=function(t){var e=new RegExp('["'+t+"\n\r]"),n=t.charCodeAt(0);function r(t,e){var r,i=[],o=t.length,a=0,u=0,s=o<=0,c=!1;function l(){if(s)return ve;if(c)return c=!1,me;var e,r,i=a;if(t.charCodeAt(i)===ye){for(;a++<o&&t.charCodeAt(a)!==ye||t.charCodeAt(++a)===ye;);return(e=a)>=o?s=!0:(r=t.charCodeAt(a++))===be?c=!0:r===xe&&(c=!0,t.charCodeAt(a)===be&&++a),t.slice(i+1,e-1).replace(/""/g,'"')}for(;a<o;){if((r=t.charCodeAt(e=a++))===be)c=!0;else if(r===xe)c=!0,t.charCodeAt(a)===be&&++a;else if(r!==n)continue;return t.slice(i,e)}return s=!0,t.slice(i,o)}for(t.charCodeAt(o-1)===be&&--o,t.charCodeAt(o-1)===xe&&--o;(r=l())!==ve;){for(var f=[];r!==me&&r!==ve;)f.push(r),r=l();e&&null==(f=e(f,u++))||i.push(f)}return i}function i(e,n){return e.map(function(e){return n.map(function(t){return a(e[t])}).join(t)})}function o(e){return e.map(a).join(t)}function a(t){return null==t?"":t instanceof Date?ke(t):e.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,e){var n,i,o=r(t,function(t,r){if(n)return n(t,r-1);i=t,n=e?function(t,e){var n=_e(t);return function(r,i){return e(n(r),i,t)}}(t,e):_e(t)});return o.columns=i||[],o},parseRows:r,format:function(e,n){return null==n&&(n=we(e)),[n.map(a).join(t)].concat(i(e,n)).join("\n")},formatBody:function(t,e){return null==e&&(e=we(t)),i(t,e).join("\n")},formatRows:function(t){return t.map(o).join("\n")}}},Ee=Ae(","),je=(Ee.parse,Ee.parseRows,Ee.format,Ee.formatBody,Ee.formatRows,Ae("\t"));je.parse,je.parseRows,je.format,je.formatBody,je.formatRows;function Se(t){const e=function(e,n){const r={delimiter:t};return Ce(e,n?Object(Mt.o)(n,r):r)};return e.responseType="text",e}function Ce(t,e){return e.header&&(t=e.header.map(Mt.W).join(e.delimiter)+"\n"+t),Ae(e.delimiter).parse(t+"")}Ce.responseType="text";var Me=n(1),De=function(t){return t},Fe=function(t){if(null==t)return De;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],a=t.translate[1];return function(t,u){u||(e=n=0);var s=2,c=t.length,l=new Array(c);for(l[0]=(e+=t[0])*r+o,l[1]=(n+=t[1])*i+a;s<c;)l[s]=t[s],++s;return l}},Ne=function(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n},ze=function(t,e){return"GeometryCollection"===e.type?{type:"FeatureCollection",features:e.geometries.map(function(e){return Te(t,e)})}:Te(t,e)};function Te(t,e){var n=e.id,r=e.bbox,i=null==e.properties?{}:e.properties,o=$e(t,e);return null==n&&null==r?{type:"Feature",properties:i,geometry:o}:null==r?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function $e(t,e){var n=Fe(t.transform),r=t.arcs;function i(t,e){e.length&&e.pop();for(var i=r[t<0?~t:t],o=0,a=i.length;o<a;++o)e.push(n(i[o],o));t<0&&Ne(e,a)}function o(t){return n(t)}function a(t){for(var e=[],n=0,r=t.length;n<r;++n)i(t[n],e);return e.length<2&&e.push(e[0]),e}function u(t){for(var e=a(t);e.length<4;)e.push(e[0]);return e}function s(t){return t.map(u)}return function t(e){var n,r=e.type;switch(r){case"GeometryCollection":return{type:r,geometries:e.geometries.map(t)};case"Point":n=o(e.coordinates);break;case"MultiPoint":n=e.coordinates.map(o);break;case"LineString":n=a(e.arcs);break;case"MultiLineString":n=e.arcs.map(a);break;case"Polygon":n=s(e.arcs);break;case"MultiPolygon":n=e.arcs.map(s);break;default:return null}return{type:r,coordinates:n}}(e)}var Re=function(t,e){var n={},r={},i={},o=[],a=-1;function u(t,e){for(var r in t){var i=t[r];delete e[i.start],delete i.start,delete i.end,i.forEach(function(t){n[t<0?~t:t]=1}),o.push(i)}}return e.forEach(function(n,r){var i,o=t.arcs[n<0?~n:n];o.length<3&&!o[1][0]&&!o[1][1]&&(i=e[++a],e[a]=n,e[r]=i)}),e.forEach(function(e){var n,o,a=function(e){var n,r=t.arcs[e<0?~e:e],i=r[0];t.transform?(n=[0,0],r.forEach(function(t){n[0]+=t[0],n[1]+=t[1]})):n=r[r.length-1];return e<0?[n,i]:[i,n]}(e),u=a[0],s=a[1];if(n=i[u])if(delete i[n.end],n.push(e),n.end=s,o=r[s]){delete r[o.start];var c=o===n?n:n.concat(o);r[c.start=n.start]=i[c.end=o.end]=c}else r[n.start]=i[n.end]=n;else if(n=r[s])if(delete r[n.start],n.unshift(e),n.start=u,o=i[u]){delete i[o.end];var l=o===n?n:o.concat(n);r[l.start=o.start]=i[l.end=n.end]=l}else r[n.start]=i[n.end]=n;else r[(n=[e]).start=u]=i[n.end=s]=n}),u(i,r),u(r,i),e.forEach(function(t){n[t<0?~t:t]||o.push([t])}),o},Be=function(t){return $e(t,Pe.apply(this,arguments))};function Pe(t,e,n){var r,i,o;if(arguments.length>1)r=function(t,e,n){var r,i=[],o=[];function a(t){var e=t<0?~t:t;(o[e]||(o[e]=[])).push({i:t,g:r})}function u(t){t.forEach(a)}function s(t){t.forEach(u)}return function t(e){switch(r=e,e.type){case"GeometryCollection":e.geometries.forEach(t);break;case"LineString":u(e.arcs);break;case"MultiLineString":case"Polygon":s(e.arcs);break;case"MultiPolygon":!function(t){t.forEach(s)}(e.arcs)}}(e),o.forEach(null==n?function(t){i.push(t[0].i)}:function(t){n(t[0].g,t[t.length-1].g)&&i.push(t[0].i)}),i}(0,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:Re(t,r)}}const Le={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function Ue(t,e){let n,r,i,o;return t=Object(Me.a)(t,e),e&&e.feature?(n=ze,i=e.feature):e&&e.mesh?(n=Be,i=e.mesh,o=Le[e.filter]):Object(Mt.n)("Missing TopoJSON feature or mesh parameter."),(r=(r=t.objects[i])?n(t,r,o):Object(Mt.n)("Invalid TopoJSON object: "+i))&&r.features||[r]}Ue.responseType="json";const qe={dsv:Ce,csv:Se(","),tsv:Se("\t"),json:Me.a,topojson:Ue};function Ie(t,e){return arguments.length>1?(qe[t]=e,this):qe.hasOwnProperty(t)?qe[t]:null}function We(t){const e=Ie(t);return e&&e.responseType||"text"}var He=new Date,Ge=new Date;function Ye(t,e,n,r){function i(e){return t(e=new Date(+e)),e}return i.floor=i,i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e<n-t?e:n},i.offset=function(t,n){return e(t=new Date(+t),null==n?1:Math.floor(n)),t},i.range=function(n,r,o){var a,u=[];if(n=i.ceil(n),o=null==o?1:Math.floor(o),!(n<r&&o>0))return u;do{u.push(a=new Date(+n)),e(n,o),t(n)}while(a<n&&n<r);return u},i.filter=function(n){return Ye(function(e){if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););})},n&&(i.count=function(e,r){return He.setTime(+e),Ge.setTime(+r),t(He),t(Ge),Math.floor(n(He,Ge))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var Ve=Ye(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});Ve.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Ye(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):Ve:null};var Xe=Ve,Je=(Ve.range,6e4),Ze=6048e5,Qe=Ye(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getUTCSeconds()}),Ke=Qe,tn=(Qe.range,Ye(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},function(t,e){t.setTime(+t+e*Je)},function(t,e){return(e-t)/Je},function(t){return t.getMinutes()})),en=tn,nn=(tn.range,Ye(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-t.getMinutes()*Je)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getHours()})),rn=nn,on=(nn.range,Ye(function(t){t.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Je)/864e5},function(t){return t.getDate()-1})),an=on;on.range;function un(t){return Ye(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+7*e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Je)/Ze})}var sn=un(0),cn=un(1),ln=un(2),fn=un(3),hn=un(4),dn=un(5),pn=un(6),gn=(sn.range,cn.range,ln.range,fn.range,hn.range,dn.range,pn.range,Ye(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())},function(t){return t.getMonth()})),mn=gn,vn=(gn.range,Ye(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()}));vn.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ye(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)}):null};var yn=vn,bn=(vn.range,Ye(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Je)},function(t,e){return(e-t)/Je},function(t){return t.getUTCMinutes()})),xn=bn,_n=(bn.range,Ye(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getUTCHours()})),wn=_n,On=(_n.range,Ye(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/864e5},function(t){return t.getUTCDate()-1})),kn=On;On.range;function An(t){return Ye(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+7*e)},function(t,e){return(e-t)/Ze})}var En=An(0),jn=An(1),Sn=An(2),Cn=An(3),Mn=An(4),Dn=An(5),Fn=An(6),Nn=(En.range,jn.range,Sn.range,Cn.range,Mn.range,Dn.range,Fn.range,Ye(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()})),zn=Nn,Tn=(Nn.range,Ye(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()}));Tn.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ye(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)}):null};var $n=Tn;Tn.range;function Rn(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Bn(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Pn(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}var Ln,Un,qn,In,Wn,Hn={"-":"",_:" ",0:"0"},Gn=/^\s*\d+/,Yn=/^%/,Vn=/[\\^$*+?|[\]().{}]/g;function Xn(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function Jn(t){return t.replace(Vn,"\\$&")}function Zn(t){return new RegExp("^(?:"+t.map(Jn).join("|")+")","i")}function Qn(t){for(var e={},n=-1,r=t.length;++n<r;)e[t[n].toLowerCase()]=n;return e}function Kn(t,e,n){var r=Gn.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function tr(t,e,n){var r=Gn.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function er(t,e,n){var r=Gn.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function nr(t,e,n){var r=Gn.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function rr(t,e,n){var r=Gn.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function ir(t,e,n){var r=Gn.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function or(t,e,n){var r=Gn.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function ar(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function ur(t,e,n){var r=Gn.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function sr(t,e,n){var r=Gn.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function cr(t,e,n){var r=Gn.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function lr(t,e,n){var r=Gn.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function fr(t,e,n){var r=Gn.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function hr(t,e,n){var r=Gn.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function dr(t,e,n){var r=Gn.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function pr(t,e,n){var r=Gn.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function gr(t,e,n){var r=Yn.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function mr(t,e,n){var r=Gn.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function vr(t,e,n){var r=Gn.exec(e.slice(n));return r?(t.Q=1e3*+r[0],n+r[0].length):-1}function yr(t,e){return Xn(t.getDate(),e,2)}function br(t,e){return Xn(t.getHours(),e,2)}function xr(t,e){return Xn(t.getHours()%12||12,e,2)}function _r(t,e){return Xn(1+an.count(yn(t),t),e,3)}function wr(t,e){return Xn(t.getMilliseconds(),e,3)}function Or(t,e){return wr(t,e)+"000"}function kr(t,e){return Xn(t.getMonth()+1,e,2)}function Ar(t,e){return Xn(t.getMinutes(),e,2)}function Er(t,e){return Xn(t.getSeconds(),e,2)}function jr(t){var e=t.getDay();return 0===e?7:e}function Sr(t,e){return Xn(sn.count(yn(t),t),e,2)}function Cr(t,e){var n=t.getDay();return t=n>=4||0===n?hn(t):hn.ceil(t),Xn(hn.count(yn(t),t)+(4===yn(t).getDay()),e,2)}function Mr(t){return t.getDay()}function Dr(t,e){return Xn(cn.count(yn(t),t),e,2)}function Fr(t,e){return Xn(t.getFullYear()%100,e,2)}function Nr(t,e){return Xn(t.getFullYear()%1e4,e,4)}function zr(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Xn(e/60|0,"0",2)+Xn(e%60,"0",2)}function Tr(t,e){return Xn(t.getUTCDate(),e,2)}function $r(t,e){return Xn(t.getUTCHours(),e,2)}function Rr(t,e){return Xn(t.getUTCHours()%12||12,e,2)}function Br(t,e){return Xn(1+kn.count($n(t),t),e,3)}function Pr(t,e){return Xn(t.getUTCMilliseconds(),e,3)}function Lr(t,e){return Pr(t,e)+"000"}function Ur(t,e){return Xn(t.getUTCMonth()+1,e,2)}function qr(t,e){return Xn(t.getUTCMinutes(),e,2)}function Ir(t,e){return Xn(t.getUTCSeconds(),e,2)}function Wr(t){var e=t.getUTCDay();return 0===e?7:e}function Hr(t,e){return Xn(En.count($n(t),t),e,2)}function Gr(t,e){var n=t.getUTCDay();return t=n>=4||0===n?Mn(t):Mn.ceil(t),Xn(Mn.count($n(t),t)+(4===$n(t).getUTCDay()),e,2)}function Yr(t){return t.getUTCDay()}function Vr(t,e){return Xn(jn.count($n(t),t),e,2)}function Xr(t,e){return Xn(t.getUTCFullYear()%100,e,2)}function Jr(t,e){return Xn(t.getUTCFullYear()%1e4,e,4)}function Zr(){return"+0000"}function Qr(){return"%"}function Kr(t){return+t}function ti(t){return Math.floor(+t/1e3)}function ei(t){return Ln=function(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,u=t.months,s=t.shortMonths,c=Zn(i),l=Qn(i),f=Zn(o),h=Qn(o),d=Zn(a),p=Qn(a),g=Zn(u),m=Qn(u),v=Zn(s),y=Qn(s),b={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return s[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:yr,e:yr,f:Or,H:br,I:xr,j:_r,L:wr,m:kr,M:Ar,p:function(t){return i[+(t.getHours()>=12)]},Q:Kr,s:ti,S:Er,u:jr,U:Sr,V:Cr,w:Mr,W:Dr,x:null,X:null,y:Fr,Y:Nr,Z:zr,"%":Qr},x={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return s[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:Tr,e:Tr,f:Lr,H:$r,I:Rr,j:Br,L:Pr,m:Ur,M:qr,p:function(t){return i[+(t.getUTCHours()>=12)]},Q:Kr,s:ti,S:Ir,u:Wr,U:Hr,V:Gr,w:Yr,W:Vr,x:null,X:null,y:Xr,Y:Jr,Z:Zr,"%":Qr},_={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p[r[0].toLowerCase()],n+r[0].length):-1},A:function(t,e,n){var r=f.exec(e.slice(n));return r?(t.w=h[r[0].toLowerCase()],n+r[0].length):-1},b:function(t,e,n){var r=v.exec(e.slice(n));return r?(t.m=y[r[0].toLowerCase()],n+r[0].length):-1},B:function(t,e,n){var r=g.exec(e.slice(n));return r?(t.m=m[r[0].toLowerCase()],n+r[0].length):-1},c:function(t,n,r){return k(t,e,n,r)},d:sr,e:sr,f:pr,H:lr,I:lr,j:cr,L:dr,m:ur,M:fr,p:function(t,e,n){var r=c.exec(e.slice(n));return r?(t.p=l[r[0].toLowerCase()],n+r[0].length):-1},Q:mr,s:vr,S:hr,u:tr,U:er,V:nr,w:Kn,W:rr,x:function(t,e,r){return k(t,n,e,r)},X:function(t,e,n){return k(t,r,e,n)},y:or,Y:ir,Z:ar,"%":gr};function w(t,e){return function(n){var r,i,o,a=[],u=-1,s=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++u<c;)37===t.charCodeAt(u)&&(a.push(t.slice(s,u)),null!=(i=Hn[r=t.charAt(++u)])?r=t.charAt(++u):i="e"===r?" ":"0",(o=e[r])&&(r=o(n,i)),a.push(r),s=u+1);return a.push(t.slice(s,u)),a.join("")}}function O(t,e){return function(n){var r,i,o=Pn(1900);if(k(o,t,n+="",0)!=n.length)return null;if("Q"in o)return new Date(o.Q);if("p"in o&&(o.H=o.H%12+12*o.p),"V"in o){if(o.V<1||o.V>53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=Bn(Pn(o.y))).getUTCDay(),r=i>4||0===i?jn.ceil(r):jn(r),r=kn.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=e(Pn(o.y))).getDay(),r=i>4||0===i?cn.ceil(r):cn(r),r=an.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?Bn(Pn(o.y)).getUTCDay():e(Pn(o.y)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,Bn(o)):e(o)}}function k(t,e,n,r){for(var i,o,a=0,u=e.length,s=n.length;a<u;){if(r>=s)return-1;if(37===(i=e.charCodeAt(a++))){if(i=e.charAt(a++),!(o=_[i in Hn?e.charAt(a++):i])||(r=o(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return b.x=w(n,b),b.X=w(r,b),b.c=w(e,b),x.x=w(n,x),x.X=w(r,x),x.c=w(e,x),{format:function(t){var e=w(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=O(t+="",Rn);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=O(t,Bn);return e.toString=function(){return t},e}}}(t),Un=Ln.format,qn=Ln.parse,In=Ln.utcFormat,Wn=Ln.utcParse,Ln}ei({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});Date.prototype.toISOString||In("%Y-%m-%dT%H:%M:%S.%LZ");+new Date("2000-01-01T00:00:00.000Z")||Wn("%Y-%m-%dT%H:%M:%S.%LZ");var ni=function(t,e,n){const r=Ie((e=e||{}).type||"json");return r||Object(Mt.n)("Unknown data format type: "+e.type),t=r(t,e),e.parse&&function(t,e,n){if(!t.length)return;n=n||qn;var r,i,o,a,u,s,c,l=t.columns||Object.keys(t[0]);"auto"===e&&(e=pe(t,l));for(l=Object.keys(e),r=l.map(function(t){var r,i,o=e[t];if(o&&(0===o.indexOf("date:")||0===o.indexOf("utc:")))return("'"===(i=(r=o.split(/:(.+)?/,2))[1])[0]&&"'"===i[i.length-1]||'"'===i[0]&&'"'===i[i.length-1])&&(i=i.slice(1,-1)),"utc"===r[0]?Wn(i):n(i);if(!le[o])throw Error("Illegal format pattern: "+t+":"+o);return le[o]}),a=0,s=t.length,c=l.length;a<s;++a)for(i=t[a],u=0;u<c;++u)o=l[u],i[o]=r[u](i[o])}(t,e.parse,n),t.hasOwnProperty("columns")&&delete t.columns,t};var ri=function(t,e){return function(n){return{options:n||{},sanitize:oe,load:ie,fileAccess:!!e,file:ae(e),http:se(t)}}}("undefined"!=typeof fetch&&fetch,null);const ii=ni;var oi={skip:!0};function ai(t,e,n,r,i,o){var a,u,s=Object(Mt.o)({},o,oi);Object(Mt.C)(n)||(n=Object(Mt.l)(n)),void 0===r?a=e=>t.touch(n(e)):Object(Mt.C)(r)?(u=new Xt(null,r,i,!1),a=e=>{u.evaluate(e);const r=n(e),i=u.value;qt(i)?t.pulse(r,i,o):t.update(r,i,s)}):a=e=>t.update(n(e),r,s),e.apply(a)}function ui(t,e,n,r,i,o){if(void 0===r)e.targets().add(n);else{const a=o||{},u=new Xt(null,function(t,e){return e=Object(Mt.C)(e)?e:Object(Mt.l)(e),t?function(n,r){const i=e(n,r);return t.skip()||(t.skip(i!==this.value).value=i),i}:e}(n,r),i,!1);u.modified(a.force),u.rank=e.rank,e.targets().add(u),n&&(u.skip(!0),u.value=n.value,u.targets().add(n),t.connect(n,[u]))}}var si={};function ci(t,e,n){this.dataflow=t,this.stamp=null==e?-1:e,this.add=[],this.rem=[],this.mod=[],this.fields=null,this.encode=n||null}var li=ci.prototype;function fi(t,e){return t?function(n,r){return t(n,r)&&e(n,r)}:e}function hi(t,e){var n=[];return Object(Mt.fb)(t,e,function(t){n.push(t)}),n}function di(t,e){var n={};return t.visit(e,function(t){n[$t(t)]=1}),function(t){return n[$t(t)]?null:t}}function pi(t,e,n,r){var i,o,a,u,s,c=this,l=0;for(this.dataflow=t,this.stamp=e,this.fields=null,this.encode=r||null,this.pulses=n,a=0,u=n.length;a<u;++a)if((i=n[a]).stamp===e){if(i.fields)for(s in o=c.fields||(c.fields={}),i.fields)o[s]=1;i.changed(c.ADD)&&(l|=c.ADD),i.changed(c.REM)&&(l|=c.REM),i.changed(c.MOD)&&(l|=c.MOD)}this.changes=l}li.StopPropagation=si,li.ADD=1,li.REM=2,li.MOD=4,li.ADD_REM=3,li.ADD_MOD=5,li.ALL=7,li.REFLOW=8,li.SOURCE=16,li.NO_SOURCE=32,li.NO_FIELDS=64,li.fork=function(t){return new ci(this.dataflow).init(this,t)},li.clone=function(){var t=this.fork(7);return t.add=t.add.slice(),t.rem=t.rem.slice(),t.mod=t.mod.slice(),t.source&&(t.source=t.source.slice()),t.materialize(23)},li.addAll=function(){var t=this;return this.source&&this.source.length!==this.add.length?((t=new ci(this.dataflow).init(this)).add=t.source,t):t},li.init=function(t,e){var n=this;return n.stamp=t.stamp,n.encode=t.encode,!t.fields||64&e||(n.fields=t.fields),1&e?(n.addF=t.addF,n.add=t.add):(n.addF=null,n.add=[]),2&e?(n.remF=t.remF,n.rem=t.rem):(n.remF=null,n.rem=[]),4&e?(n.modF=t.modF,n.mod=t.mod):(n.modF=null,n.mod=[]),32&e?(n.srcF=null,n.source=null):(n.srcF=t.srcF,n.source=t.source),n},li.runAfter=function(t){this.dataflow.runAfter(t)},li.changed=function(t){var e=t||7;return 1&e&&this.add.length||2&e&&this.rem.length||4&e&&this.mod.length},li.reflow=function(t){if(t)return this.fork(7).reflow();var e=this.add.length,n=this.source&&this.source.length;return n&&n!==e&&(this.mod=this.source,e&&this.filter(4,di(this,1))),this},li.modifies=function(t){var e=Object(Mt.i)(t),n=this.fields||(this.fields={});return e.forEach(function(t){n[t]=!0}),this},li.modified=function(t){var e=this.fields;return!(!this.mod.length||!e)&&(arguments.length?Object(Mt.z)(t)?t.some(function(t){return e[t]}):e[t]:!!e)},li.filter=function(t,e){var n=this;return 1&t&&(n.addF=fi(n.addF,e)),2&t&&(n.remF=fi(n.remF,e)),4&t&&(n.modF=fi(n.modF,e)),16&t&&(n.srcF=fi(n.srcF,e)),n},li.materialize=function(t){var e=this;return 1&(t=t||7)&&e.addF&&(e.add=hi(e.add,e.addF),e.addF=null),2&t&&e.remF&&(e.rem=hi(e.rem,e.remF),e.remF=null),4&t&&e.modF&&(e.mod=hi(e.mod,e.modF),e.modF=null),16&t&&e.srcF&&(e.source=e.source.filter(e.srcF),e.srcF=null),e},li.visit=function(t,e){var n,r,i=this,o=e;return 16&t?(Object(Mt.fb)(i.source,i.srcF,o),i):(1&t&&Object(Mt.fb)(i.add,i.addF,o),2&t&&Object(Mt.fb)(i.rem,i.remF,o),4&t&&Object(Mt.fb)(i.mod,i.modF,o),8&t&&(n=i.source)&&((r=i.add.length+i.mod.length)===n.length||(r?Object(Mt.fb)(n,di(i,5),o):Object(Mt.fb)(n,i.srcF,o))),i)};var gi=Object(Mt.x)(pi,ci);function mi(t){return t.error("Dataflow already running. Use runAsync() to chain invocations."),t}gi.fork=function(t){var e=new ci(this.dataflow).init(this,t&this.NO_FIELDS);return void 0!==t&&(t&e.ADD&&this.visit(e.ADD,function(t){return e.add.push(t)}),t&e.REM&&this.visit(e.REM,function(t){return e.rem.push(t)}),t&e.MOD&&this.visit(e.MOD,function(t){return e.mod.push(t)})),e},gi.changed=function(t){return this.changes&t},gi.modified=function(t){var e=this,n=e.fields;return n&&e.changes&e.MOD?Object(Mt.z)(t)?t.some(function(t){return n[t]}):n[t]:0},gi.filter=function(){Object(Mt.n)("MultiPulse does not support filtering.")},gi.materialize=function(){Object(Mt.n)("MultiPulse does not support materialization.")},gi.visit=function(t,e){var n=this,r=n.pulses,i=r.length,o=0;if(t&n.SOURCE)for(;o<i;++o)r[o].visit(t,e);else for(;o<i;++o)r[o].stamp===n.stamp&&r[o].visit(t,e);return n};var vi={skip:!1,force:!1};function yi(t){var e=[];return{size:()=>e.length,peek:()=>e[0],push:n=>(e.push(n),bi(e,0,e.length-1,t)),pop:()=>{var n,r=e.pop();return e.length?(n=e[0],e[0]=r,function(t,e,n){var r,i=e,o=t.length,a=t[e],u=1+(e<<1);for(;u<o;)(r=u+1)<o&&n(t[u],t[r])>=0&&(u=r),t[e]=t[u],u=1+((e=u)<<1);t[e]=a,bi(t,i,e,n)}(e,0,t)):n=r,n}}}function bi(t,e,n,r){var i,o,a;for(i=t[n];n>e&&r(i,o=t[a=n-1>>1])<0;)t[n]=o,n=a;return t[n]=i}function xi(){this.logger(Object(Mt.J)()),this.logLevel(Mt.b),this._clock=0,this._rank=0;try{this._loader=ri()}catch(t){}this._touched=Dt(Mt.v),this._pulses={},this._pulse=null,this._heap=yi((t,e)=>t.qrank-e.qrank),this._postrun=[]}var _i=xi.prototype;function wi(t){return function(){return this._log[t].apply(this,arguments)}}function Oi(t,e){Xt.call(this,t,null,e)}_i.stamp=function(){return this._clock},_i.loader=function(t){return arguments.length?(this._loader=t,this):this._loader},_i.cleanThreshold=1e4,_i.add=function(t,e,n,r){var i,o=1;return t instanceof Xt?i=t:t&&t.prototype instanceof Xt?i=new t:Object(Mt.C)(t)?i=new Xt(null,t):(o=0,i=new Xt(t,e)),this.rank(i),o&&(r=n,n=e),n&&this.connect(i,i.parameters(n,r)),this.touch(i),i},_i.connect=function(t,e){var n,r,i=t.rank;for(n=0,r=e.length;n<r;++n)if(i<e[n].rank)return void this.rerank(t)},_i.rank=function(t){t.rank=++this._rank},_i.rerank=function(t){for(var e,n,r,i=[t];i.length;)if(this.rank(e=i.pop()),n=e._targets)for(r=n.length;--r>=0;)i.push(e=n[r]),e===t&&Object(Mt.n)("Cycle detected in dataflow graph.")},_i.pulse=function(t,e,n){this.touch(t,n||vi);var r=new ci(this,this._clock+(this._pulse?0:1)),i=t.pulse&&t.pulse.source||[];return r.target=t,this._pulses[t.id]=e.pulse(r,i),this},_i.touch=function(t,e){var n=e||vi;return this._pulse?this._enqueue(t):this._touched.add(t),n.skip&&t.skip(!0),this},_i.update=function(t,e,n){var r=n||vi;return(t.set(e)||r.force)&&this.touch(t,r),this},_i.changeset=It,_i.ingest=function(t,e,n){return this.pulse(t,this.changeset().insert(ii(e,n)))},_i.parse=ii,_i.preload=async function(t,e,n){const r=this,i=r._pending||function(t){var e,n=new Promise(function(t){e=t});return n.requests=0,n.done=function(){0==--n.requests&&(t._pending=null,e(t))},t._pending=n}(r);i.requests+=1;const o=await r.request(e,n);return r.pulse(t,r.changeset().remove(Mt.db).insert(o.data||[])),i.done(),o},_i.request=async function(t,e){const n=this;let r,i=0;try{r=await n.loader().load(t,{context:"dataflow",response:We(e&&e.type)});try{r=ii(r,e)}catch(e){i=-2,n.warn("Data ingestion failed",t,e)}}catch(e){i=-1,n.warn("Loading failed",t,e)}return{data:r,status:i}},_i.events=function(t,e,n,r){for(var i,o=this,a=te(n,r),u=function(t){t.dataflow=o;try{a.receive(t)}catch(t){o.error(t)}finally{o.run()}},s=0,c=(i="string"==typeof t&&"undefined"!=typeof document?document.querySelectorAll(t):Object(Mt.i)(t)).length;s<c;++s)i[s].addEventListener(e,u);return a},_i.on=function(t,e,n,r,i){return(t instanceof Xt?ui:ai)(this,t,e,n,r,i),this},_i.evaluate=async function(t,e,n){const r=this,i=r.logLevel();if(r._pulse)return mi(r);if(r._pending&&await r._pending,e&&await Ft(r,e),!r._touched.length)return r.info("Dataflow invoked, but nothing to do."),r;let o,a,u,s,c=++r._clock,l=0;r._pulse=new ci(r,c,t),i>=Mt.c&&(u=Date.now(),r.debug("-- START PROPAGATION ("+c+") -----")),r._touched.forEach(function(t){r._enqueue(t,!0)}),r._touched=Dt(Mt.v);try{for(;r._heap.size()>0;)(o=r._heap.pop()).rank===o.qrank?((a=o.run(r._getPulse(o,t))).then&&(a=await a),i>=Mt.a&&r.debug(o.id,a===si?"STOP":a,o),a!==si&&(r._pulse=a,o._targets&&o._targets.forEach(t=>r._enqueue(t))),++l):r._enqueue(o,!0)}catch(t){s=t}if(r._pulses={},r._pulse=null,i>=Mt.c&&(u=Date.now()-u,r.info("> Pulse "+c+": "+l+" operators; "+u+"ms")),s&&(r._postrun=[],r.error(s)),r._postrun.length){const t=r._postrun.sort((t,e)=>e.priority-t.priority);r._postrun=[];for(let e=0;e<t.length;++e)await Ft(r,t[e].callback)}return n&&await Ft(r,n),r},_i.run=function(t,e,n){return this._pulse?mi(this):(this.evaluate(t,e,n),this)},_i.runAsync=async function(t,e,n){for(;this._running;)await this._running;const r=()=>this._running=null;return(this._running=this.evaluate(t,e,n)).then(r,r),this._running},_i.runAfter=function(t,e,n){if(this._pulse||e)this._postrun.push({priority:n||0,callback:t});else try{t(this)}catch(t){this.error(t)}},_i._enqueue=function(t,e){var n=!this._pulses[t.id];n&&(this._pulses[t.id]=this._pulse),(n||e)&&(t.qrank=t.rank,this._heap.push(t))},_i._getPulse=function(t,e){var n,r=t.source,i=this._clock;return r&&Object(Mt.z)(r)?new pi(this,i,n=r.map(function(t){return t.pulse}),e):(n=this._pulses[t.id],r&&((r=r.pulse)&&r!==si?r.stamp===i&&n.target!==t?n=r:n.source=r.source:n.source=[]),n)},_i.logger=function(t){return arguments.length?(this._log=t,this):this._log},_i.error=wi("error"),_i.warn=wi("warn"),_i.info=wi("info"),_i.debug=wi("debug"),_i.logLevel=wi("level");var ki=Object(Mt.x)(Oi,Xt);ki.run=function(t){return t.stamp<=this.stamp?t.StopPropagation:(this.skip()?this.skip(!1):e=this.evaluate(t),e=e||t,this.stamp=t.stamp,e.then?e=e.then(t=>this.pulse=t):e!==t.StopPropagation&&(this.pulse=e),e);var e},ki.evaluate=function(t){var e=this.marshall(t.stamp),n=this.transform(e,t);return e.clear(),n},ki.transform=function(){};var Ai={};function Ei(t){var e=ji(t);return e&&e.Definition||null}function ji(t){return t=t&&t.toLowerCase(),Ai.hasOwnProperty(t)?Ai[t]:null}function Si(t){return t&&t.length?1===t.length?t[0]:(e=t,function(t){for(var n=e.length,r=1,i=String(e[0](t));r<n;++r)i+="|"+e[r](t);return i}):function(){return""};var e}function Ci(t,e,n){return n||t+(e?"_"+e:"")}var Mi={values:Ni({name:"values",init:"cell.store = true;",set:"cell.data.values()",idx:-1}),count:Ni({name:"count",set:"cell.num"}),__count__:Ni({name:"count",set:"this.missing + this.valid"}),missing:Ni({name:"missing",set:"this.missing"}),valid:Ni({name:"valid",set:"this.valid"}),sum:Ni({name:"sum",init:"this.sum = 0;",add:"this.sum += +v;",rem:"this.sum -= v;",set:"this.sum"}),mean:Ni({name:"mean",init:"this.mean = 0;",add:"var d = v - this.mean; this.mean += d / this.valid;",rem:"var d = v - this.mean; this.mean -= this.valid ? d / this.valid : this.mean;",set:"this.valid ? this.mean : undefined"}),average:Ni({name:"average",set:"this.valid ? this.mean : undefined",req:["mean"],idx:1}),variance:Ni({name:"variance",init:"this.dev = 0;",add:"this.dev += d * (v - this.mean);",rem:"this.dev -= d * (v - this.mean);",set:"this.valid > 1 ? this.dev / (this.valid-1) : undefined",req:["mean"],idx:1}),variancep:Ni({name:"variancep",set:"this.valid > 1 ? this.dev / this.valid : undefined",req:["variance"],idx:2}),stdev:Ni({name:"stdev",set:"this.valid > 1 ? Math.sqrt(this.dev / (this.valid-1)) : undefined",req:["variance"],idx:2}),stdevp:Ni({name:"stdevp",set:"this.valid > 1 ? Math.sqrt(this.dev / this.valid) : undefined",req:["variance"],idx:2}),stderr:Ni({name:"stderr",set:"this.valid > 1 ? Math.sqrt(this.dev / (this.valid * (this.valid-1))) : undefined",req:["variance"],idx:2}),distinct:Ni({name:"distinct",set:"cell.data.distinct(this.get)",req:["values"],idx:3}),ci0:Ni({name:"ci0",set:"cell.data.ci0(this.get)",req:["values"],idx:3}),ci1:Ni({name:"ci1",set:"cell.data.ci1(this.get)",req:["values"],idx:3}),median:Ni({name:"median",set:"cell.data.q2(this.get)",req:["values"],idx:3}),q1:Ni({name:"q1",set:"cell.data.q1(this.get)",req:["values"],idx:3}),q3:Ni({name:"q3",set:"cell.data.q3(this.get)",req:["values"],idx:3}),argmin:Ni({name:"argmin",init:"this.argmin = undefined;",add:"if (v < this.min) this.argmin = t;",rem:"if (v <= this.min) this.argmin = undefined;",set:"this.argmin || cell.data.argmin(this.get)",req:["min"],str:["values"],idx:3}),argmax:Ni({name:"argmax",init:"this.argmax = undefined;",add:"if (v > this.max) this.argmax = t;",rem:"if (v >= this.max) this.argmax = undefined;",set:"this.argmax || cell.data.argmax(this.get)",req:["max"],str:["values"],idx:3}),min:Ni({name:"min",init:"this.min = undefined;",add:"if (v < this.min || this.min === undefined) this.min = v;",rem:"if (v <= this.min) this.min = NaN;",set:"this.min = (isNaN(this.min) ? cell.data.min(this.get) : this.min)",str:["values"],idx:4}),max:Ni({name:"max",init:"this.max = undefined;",add:"if (v > this.max || this.max === undefined) this.max = v;",rem:"if (v >= this.max) this.max = NaN;",set:"this.max = (isNaN(this.max) ? cell.data.max(this.get) : this.max)",str:["values"],idx:4})},Di=Object.keys(Mi);function Fi(t,e){return Mi[t](e)}function Ni(t){return function(e){var n=Object(Mt.o)({init:"",add:"",rem:"",idx:0},t);return n.out=e||t.name,n}}function zi(t,e){return t.idx-e.idx}function Ti(t,e){var n=e||Mt.w,r=function(t,e){var n,r=t.reduce(function t(n,r){function i(e){n[e]||t(n,n[e]=Mi[e]())}return r.req&&r.req.forEach(i),e&&r.str&&r.str.forEach(i),n},t.reduce(function(t,e){return t[e.name]=e,t},{})),i=[];for(n in r)i.push(r[n]);return i.sort(zi)}(t,!0),i="var cell = this.cell; this.valid = 0; this.missing = 0;",o="this.cell = cell; this.init();",a="if(v==null){++this.missing; return;} if(v!==v) return; ++this.valid;",u="if(v==null){--this.missing; return;} if(v!==v) return; --this.valid;",s="var cell = this.cell;";return r.forEach(function(t){i+=t.init,a+=t.add,u+=t.rem}),t.slice().sort(zi).forEach(function(t){s+="t['"+t.out+"']="+t.set+";"}),s+="return t;",(o=Function("cell",o)).prototype.init=Function(i),o.prototype.add=Function("v","t",a),o.prototype.rem=Function("v","t",u),o.prototype.set=Function("t",s),o.prototype.get=n,o.fields=t.map(function(t){return t.out}),o}var $i=function(t){var e,n,r,i,o,a,u,s,c=t.maxbins||20,l=t.base||10,f=Math.log(l),h=t.divide||[5,2],d=t.extent[0],p=t.extent[1],g=p-d||Math.abs(d)||1;if(t.step)e=t.step;else if(t.steps){for(o=g/c,a=0,u=t.steps.length;a<u&&t.steps[a]<o;++a);e=t.steps[Math.max(0,a-1)]}else{for(n=Math.ceil(Math.log(c)/f),r=t.minstep||0,e=Math.max(r,Math.pow(l,Math.round(Math.log(g)/f)-n));Math.ceil(g/e)>c;)e*=l;for(a=0,u=h.length;a<u;++a)(o=e/h[a])>=r&&g/o<=c&&(e=o)}return i=(o=Math.log(e))>=0?0:1+~~(-o/f),s=Math.pow(l,-i-1),(t.nice||void 0===t.nice)&&(d=d<(o=Math.floor(d/e+s)*e)?o-e:o,p=Math.ceil(p/e)*e),{start:d,stop:p===d?d+e:p,step:e}},Ri=function*(t,e){if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(yield e);else{let n=-1;for(let r of t)null!=(r=e(r,++n,t))&&(r=+r)>=r&&(yield r)}},Bi=Math.random;function Pi(t){Bi=t}var Li=function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN},Ui=function(t){var e;return 1===t.length&&(e=t,t=function(t,n){return Li(e(t),n)}),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var o=r+i>>>1;t(e[o],n)<0?r=o+1:i=o}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var o=r+i>>>1;t(e[o],n)>0?i=o:r=o+1}return r}}};var qi=Ui(Li),Ii=qi.right,Wi=qi.left,Hi=Ii;function Gi(t,e){let n,r=0,i=0,o=0;if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(o+=(n=e-i)*(e-(i+=n/++r)));else{let a=-1;for(let u of t)null!=(u=e(u,++a,t))&&(u=+u)>=u&&(o+=(n=u-i)*(u-(i+=n/++r)))}if(r>1)return o/(r-1)}var Yi=function(t,e){let n,r;if(void 0===e)for(const e of t)null!=e&&(void 0===n?e>=e&&(n=r=e):(n>e&&(n=e),r<e&&(r=e)));else{let i=-1;for(let o of t)null!=(o=e(o,++i,t))&&(void 0===n?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]};var Vi=Array.prototype,Xi=(Vi.slice,Vi.map,function(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((e-t)/n)),o=new Array(i);++r<i;)o[r]=t+r*n;return o}),Ji=Math.sqrt(50),Zi=Math.sqrt(10),Qi=Math.sqrt(2),Ki=function(t,e,n){var r,i,o,a,u=-1;if(n=+n,(t=+t)===(e=+e)&&n>0)return[t];if((r=e<t)&&(i=t,t=e,e=i),0===(a=to(t,e,n))||!isFinite(a))return[];if(a>0)for(t=Math.ceil(t/a),e=Math.floor(e/a),o=new Array(i=Math.ceil(e-t+1));++u<i;)o[u]=(t+u)*a;else for(t=Math.floor(t*a),e=Math.ceil(e*a),o=new Array(i=Math.ceil(t-e+1));++u<i;)o[u]=(t-u)/a;return r&&o.reverse(),o};function to(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Ji?10:o>=Zi?5:o>=Qi?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Ji?10:o>=Zi?5:o>=Qi?2:1)}function eo(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Ji?i*=10:o>=Zi?i*=5:o>=Qi&&(i*=2),e<t?-i:i}var no=function(t){return null===t?NaN:+t};function ro(t,e,n=no){if(r=t.length){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),a=+n(t[o],o,t);return a+(+n(t[o+1],o+1,t)-a)*(i-o)}}function io(t,e,n=0,r=t.length-1,i=Li){for(;r>n;){if(r-n>600){const o=r-n+1,a=e-n+1,u=Math.log(o),s=.5*Math.exp(2*u/3),c=.5*Math.sqrt(u*s*(o-s)/o)*(a-o/2<0?-1:1);io(t,e,Math.max(n,Math.floor(e-a*s/o+c)),Math.min(r,Math.floor(e+(o-a)*s/o+c)),i)}const o=t[e];let a=n,u=r;for(oo(t,n,e),i(t[r],o)>0&&oo(t,n,r);a<u;){for(oo(t,a,u),++a,--u;i(t[a],o)<0;)++a;for(;i(t[u],o)>0;)--u}0===i(t[n],o)?oo(t,n,u):oo(t,++u,r),u<=e&&(n=u+1),e<=u&&(r=u-1)}return t}function oo(t,e,n){const r=t[e];t[e]=t[n],t[n]=r}var ao=function(t,e){if(!(t=Float64Array.from(function*(t,e){if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(yield e);else{let n=-1;for(let r of t)null!=(r=e(r,++n,t))&&(r=+r)>=r&&(yield r)}}(t,e))).length)return;const n=t.length,r=n>>1;return io(t,r-1,0),0==(1&n)&&io(t,r,r),ro(t,.5)};function uo(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n>i||void 0===n&&i>=i)&&(n=i)}return n}var so=function(t,e){return Array.from(e,e=>t[e])};var co=function(t,e,n,r){if(!t.length)return[void 0,void 0];var i,o,a,u,s=Float64Array.from(Ri(t,r)),c=s.length,l=e;for(a=0,u=Array(l);a<l;++a){for(i=0,o=0;o<c;++o)i+=s[~~(Bi()*c)];u[a]=i/c}return[ro(u.sort(Li),n/2),ro(u,1-n/2)]},lo=function(t,e){var n=Float64Array.from(Ri(t,e));return[ro(n.sort(Li),.25),ro(n,.5),ro(n,.75)]},fo=function(t){return function(){return(t=(1103515245*t+12345)%2147483647)/2147483647}},ho=function(t,e){null==e&&(e=t,t=0);var n,r,i,o={};return o.min=function(t){return arguments.length?(i=r-(n=t||0),o):n},o.max=function(t){return arguments.length?(i=(r=t||0)-n,o):r},o.sample=function(){return n+Math.floor(i*Bi())},o.pdf=function(t){return t===Math.floor(t)&&t>=n&&t<r?1/i:0},o.cdf=function(t){var e=Math.floor(t);return e<n?0:e>=r?1:(e-n+1)/i},o.icdf=function(t){return t>=0&&t<=1?n-1+Math.floor(t*i):NaN},o.min(t).max(e)},po=function(t,e){var n,r,i=NaN,o={mean:function(t){return arguments.length?(n=t||0,i=NaN,o):n},stdev:function(t){return arguments.length?(r=null==t?1:t,i=NaN,o):r},sample:function(){var t,e,o=0,a=0;if(i==i)return o=i,i=NaN,o;do{t=(o=2*Bi()-1)*o+(a=2*Bi()-1)*a}while(0===t||t>1);return e=Math.sqrt(-2*Math.log(t)/t),i=n+a*e*r,n+o*e*r},pdf:function(t){var e=Math.exp(Math.pow(t-n,2)/(-2*Math.pow(r,2)));return 1/(r*Math.sqrt(2*Math.PI))*e},cdf:function(t){var e,i=(t-n)/r,o=Math.abs(i);if(o>37)e=0;else{var a=Math.exp(-o*o/2);o<7.07106781186547?(e=a*((((((.0352624965998911*o+.700383064443688)*o+6.37396220353165)*o+33.912866078383)*o+112.079291497871)*o+221.213596169931)*o+220.206867912376),e/=((((((.0883883476483184*o+1.75566716318264)*o+16.064177579207)*o+86.7807322029461)*o+296.564248779674)*o+637.333633378831)*o+793.826512519948)*o+440.413735824752):e=a/(o+1/(o+2/(o+3/(o+4/(o+.65)))))/2.506628274631}return i>0?1-e:e},icdf:function(t){if(t<=0||t>=1)return NaN;var e=2*t-1,i=8*(Math.PI-3)/(3*Math.PI*(4-Math.PI)),o=2/(Math.PI*i)+Math.log(1-Math.pow(e,2))/2,a=Math.log(1-e*e)/i,u=(e>0?1:-1)*Math.sqrt(Math.sqrt(o*o-a)-o);return n+r*Math.SQRT2*u}};return o.mean(t).stdev(e)},go=function(t,e){var n=po(),r={},i=0;return r.data=function(n){return arguments.length?(t=n,i=n?n.length:0,r.bandwidth(e)):t},r.bandwidth=function(n){return arguments.length?(!(e=n)&&t&&(e=mo(t)),r):e},r.sample=function(){return t[~~(Bi()*i)]+e*n.sample()},r.pdf=function(r){for(var o=0,a=0;a<i;++a)o+=n.pdf((r-t[a])/e);return o/e/i},r.cdf=function(r){for(var o=0,a=0;a<i;++a)o+=n.cdf((r-t[a])/e);return o/i},r.icdf=function(){throw Error("KDE icdf not supported.")},r.data(t)};function mo(t){var e=t.length,n=lo(t),r=(n[2]-n[0])/1.34;return 1.06*Math.min(Math.sqrt(Gi(t)),r)*Math.pow(e,-.2)}var vo=function(t,e){var n,r={},i=0;function o(t){var e,n=[],r=0;for(e=0;e<i;++e)r+=n[e]=null==t[e]?1:+t[e];for(e=0;e<i;++e)n[e]/=r;return n}return r.weights=function(t){return arguments.length?(n=o(e=t||[]),r):e},r.distributions=function(n){return arguments.length?(n?(i=n.length,t=n):(i=0,t=[]),r.weights(e)):t},r.sample=function(){for(var e=Bi(),r=t[i-1],o=n[0],a=0;a<i-1;o+=n[++a])if(e<o){r=t[a];break}return r.sample()},r.pdf=function(e){for(var r=0,o=0;o<i;++o)r+=n[o]*t[o].pdf(e);return r},r.cdf=function(e){for(var r=0,o=0;o<i;++o)r+=n[o]*t[o].cdf(e);return r},r.icdf=function(){throw Error("Mixture icdf not supported.")},r.distributions(t).weights(e)},yo=function(t,e){null==e&&(e=null==t?1:t,t=0);var n,r,i,o={};return o.min=function(t){return arguments.length?(i=r-(n=t||0),o):n},o.max=function(t){return arguments.length?(i=(r=t||0)-n,o):r},o.sample=function(){return n+i*Bi()},o.pdf=function(t){return t>=n&&t<=r?1/i:0},o.cdf=function(t){return t<n?0:t>r?1:(t-n)/i},o.icdf=function(t){return t>=0&&t<=1?n+t*i:NaN},o.min(t).max(e)},bo=function(t,e,n,r){const i=r-t*t,o=Math.abs(i)<1e-24?0:(n-t*e)/i;return[e-o*t,o]};function xo(t,e,n,r){t=t.filter(t=>{let r=e(t),i=n(t);return null!=r&&(r=+r)>=r&&null!=i&&(i=+i)>=i}),r&&t.sort((t,n)=>e(t)-e(n));const i=new Float64Array(t.length),o=new Float64Array(t.length);let a=0;for(let r of t)i[a]=e(r),o[a]=n(r),++a;return[i,o]}function _o(t,e,n,r){let i,o,a=-1,u=-1;for(let s of t)i=e(s,++a,t),o=n(s,a,t),null!=i&&(i=+i)>=i&&null!=o&&(o=+o)>=o&&r(i,o,++u)}var wo=function(t,e,n,r,i){let o=0,a=0;return _o(t,e,n,(t,e)=>{const n=e-i(t),u=e-r;o+=n*n,a+=u*u}),1-o/a},Oo=function(t,e,n){let r=0,i=0,o=0,a=0,u=0;_o(t,e,n,(t,e)=>{r+=t,i+=e,o+=t*e,a+=t*t,++u});const s=bo(r/u,i/u,o/u,a/u),c=t=>s[0]+s[1]*t;return{coef:s,predict:c,rSquared:wo(t,e,n,i/u,c)}},ko=function(t,e,n){let r=0,i=0,o=0,a=0,u=0;_o(t,e,n,(t,e)=>{t=Math.log(t),r+=t,i+=e,o+=t*e,a+=t*t,++u});const s=bo(r/u,i/u,o/u,a/u),c=t=>s[0]+s[1]*Math.log(t);return{coef:s,predict:c,rSquared:wo(t,e,n,i/u,c)}},Ao=function(t,e,n){let r=0,i=0,o=0,a=0,u=0,s=0;_o(t,e,n,(t,e)=>{const n=Math.log(e),c=t*e;r+=e,o+=c,u+=t*c,i+=e*n,a+=c*n,++s});const c=bo(o/r,i/r,a/r,u/r),l=t=>c[0]*Math.exp(c[1]*t);return c[0]=Math.exp(c[0]),{coef:c,predict:l,rSquared:wo(t,e,n,r/s,l)}},Eo=function(t,e,n){let r=0,i=0,o=0,a=0,u=0,s=0;_o(t,e,n,(t,e)=>{const n=Math.log(t),c=Math.log(e);r+=n,i+=c,o+=n*c,a+=n*n,u+=e,++s});const c=bo(r/s,i/s,o/s,a/s),l=t=>c[0]*Math.pow(t,c[1]);return c[0]=Math.exp(c[0]),{coef:c,predict:l,rSquared:wo(t,e,n,u/s,l)}},jo=function(t,e,n){let r=0,i=0,o=0,a=0,u=0,s=0,c=0,l=0;_o(t,e,n,(t,e)=>{const n=t*t;r+=t,i+=e,o+=n,a+=n*t,u+=n*n,s+=t*e,c+=n*e,++l});const f=o-r*r/l,h=a-o*r/l,d=u-o*o/l,p=f*d-h*h,g=((c-=o*(i/=l))*f-(s-=r*i)*h)/p,m=(s*d-c*h)/p,v=i-m*(r/l)-g*(o/l),y=t=>g*t*t+m*t+v;return{coef:[v,m,g],predict:y,rSquared:wo(t,e,n,i,y)}},So=function(t,e,n,r){if(1===r)return Oo(t,e,n);if(2===r)return jo(t,e,n);const[i,o]=xo(t,e,n),a=i.length,u=[],s=[],c=r+1;let l,f,h,d,p,g=0;for(l=0;l<a;++l)g+=o[l];for(l=0;l<c;++l){for(h=0,d=0;h<a;++h)d+=Math.pow(i[h],l)*o[h];for(u.push(d),p=new Float64Array(c),f=0;f<c;++f){for(h=0,d=0;h<a;++h)d+=Math.pow(i[h],l+f);p[f]=d}s.push(p)}s.push(u);const m=function(t){const e=t.length-1,n=[];let r,i,o,a,u;for(r=0;r<e;++r){for(a=r,i=r+1;i<e;++i)Math.abs(t[r][i])>Math.abs(t[r][a])&&(a=i);for(o=r;o<e+1;++o)u=t[o][r],t[o][r]=t[o][a],t[o][a]=u;for(i=r+1;i<e;++i)for(o=e;o>=r;o--)t[o][i]-=t[o][r]*t[r][i]/t[r][r]}for(i=e-1;i>=0;--i){for(u=0,o=i+1;o<e;++o)u+=t[o][i]*n[o];n[i]=(t[e][i]-u)/t[i][i]}return n}(s),v=t=>{let e=0,n=0,r=m.length;for(;n<r;++n)e+=m[n]*Math.pow(t,n);return e};return{coef:m,predict:v,rSquared:wo(t,e,n,g/a,v)}};var Co=function(t,e,n,r){const[i,o]=xo(t,e,n,!0),a=i.length,u=Math.max(2,~~(r*a)),s=new Float64Array(a),c=new Float64Array(a),l=new Float64Array(a).fill(1);for(let t=-1;++t<=2;){const e=[0,u-1];for(let t=0;t<a;++t){const n=i[t],r=e[0],a=e[1],u=n-i[r]>i[a]-n?r:a;let f=0,h=0,d=0,p=0,g=0,m=1/Math.abs(i[u]-n||1);for(let t=r;t<=a;++t){const e=i[t],r=o[t],a=Mo(Math.abs(n-e)*m)*l[t],u=e*a;f+=a,h+=u,d+=r*a,p+=r*u,g+=e*u}const[v,y]=bo(h/f,d/f,p/f,g/f);s[t]=v+y*n,c[t]=Math.abs(o[t]-s[t]),Do(i,t+1,e)}if(2===t)break;const n=ao(c);if(Math.abs(n)<1e-12)break;for(let t,e,r=0;r<a;++r)t=c[r]/(6*n),l[r]=t>=1?1e-12:(e=1-t*t)*e}return function(t,e){const n=t.length,r=[];for(let i,o=0,a=0,u=[];o<n;++o)i=t[o],u[0]===i?u[1]+=(e[o]-u[1])/++a:(a=0,u=[i,e[o]],r.push(u));return r}(i,s)};function Mo(t){return(t=1-t*t*t)*t*t}function Do(t,e,n){let r=t[e],i=n[0],o=n[1]+1;if(!(o>=t.length))for(;e>i&&t[o]-r<=r-t[i];)n[0]=++i,n[1]=o,++o}const Fo=.1*Math.PI/180;var No=function(t,e,n,r){n=n||25,r=Math.max(n,r||200);const i=e=>[e,t(e)],o=e[0],a=e[1],u=a-o,s=u/r,c=[i(o)],l=[];if(n===r){for(let t=1;t<r;++t)c.push(i(o+t/n*u));return c.push(i(a)),c}l.push(i(a));for(let t=n;--t>0;)l.push(i(o+t/n*u));let f=c[0],h=l[l.length-1];for(;h;){const t=i((f[0]+h[0])/2);t[0]-f[0]>=s&&zo(f,t,h)>Fo?l.push(t):(f=h,c.push(h),l.pop()),h=l[l.length-1]}return c};function zo(t,e,n){const r=Math.atan2(n[1]-t[1],n[0]-t[0]),i=Math.atan2(e[1]-t[1],e[0]-t[0]);return Math.abs(r-i)}function To(t){this._key=t?Object(Mt.t)(t):$t,this.reset()}var $o=To.prototype;function Ro(t){Oi.call(this,null,t),this._adds=[],this._mods=[],this._alen=0,this._mlen=0,this._drop=!0,this._cross=!1,this._dims=[],this._dnames=[],this._measures=[],this._countOnly=!1,this._counts=null,this._prev=null,this._inputs=null,this._outputs=null}$o.reset=function(){this._add=[],this._rem=[],this._ext=null,this._get=null,this._q=null},$o.add=function(t){this._add.push(t)},$o.rem=function(t){this._rem.push(t)},$o.values=function(){if(this._get=null,0===this._rem.length)return this._add;var t,e,n,r=this._add,i=this._rem,o=this._key,a=r.length,u=i.length,s=Array(a-u),c={};for(t=0;t<u;++t)c[o(i[t])]=1;for(t=0,e=0;t<a;++t)c[o(n=r[t])]?c[o(n)]=0:s[e++]=n;return this._rem=[],this._add=s},$o.distinct=function(t){for(var e,n=this.values(),r=n.length,i={},o=0;--r>=0;)e=t(n[r])+"",i.hasOwnProperty(e)||(i[e]=1,++o);return o},$o.extent=function(t){if(this._get!==t||!this._ext){var e=this.values(),n=Object(Mt.q)(e,t);this._ext=[e[n[0]],e[n[1]]],this._get=t}return this._ext},$o.argmin=function(t){return this.extent(t)[0]||{}},$o.argmax=function(t){return this.extent(t)[1]||{}},$o.min=function(t){var e=this.extent(t)[0];return null!=e?t(e):void 0},$o.max=function(t){var e=this.extent(t)[1];return null!=e?t(e):void 0},$o.quartile=function(t){return this._get===t&&this._q||(this._q=lo(this.values(),t),this._get=t),this._q},$o.q1=function(t){return this.quartile(t)[0]},$o.q2=function(t){return this.quartile(t)[1]},$o.q3=function(t){return this.quartile(t)[2]},$o.ci=function(t){return this._get===t&&this._ci||(this._ci=co(this.values(),1e3,.05,t),this._get=t),this._ci},$o.ci0=function(t){return this.ci(t)[0]},$o.ci1=function(t){return this.ci(t)[1]},Ro.Definition={type:"Aggregate",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:Di},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"drop",type:"boolean",default:!0},{name:"cross",type:"boolean",default:!1},{name:"key",type:"field"}]};var Bo=Object(Mt.x)(Ro,Oi);Bo.transform=function(t,e){var n,r=this,i=e.fork(e.NO_SOURCE|e.NO_FIELDS);return this.stamp=i.stamp,this.value&&((n=t.modified())||e.modified(this._inputs))?(this._prev=this.value,this.value=n?this.init(t):{},e.visit(e.SOURCE,function(t){r.add(t)})):(this.value=this.value||this.init(t),e.visit(e.REM,function(t){r.rem(t)}),e.visit(e.ADD,function(t){r.add(t)})),i.modifies(this._outputs),r._drop=!1!==t.drop,t.cross&&r._dims.length>1&&(r._drop=!1,this.cross()),r.changes(i)},Bo.cross=function(){var t=this,e=t.value,n=t._dnames,r=n.map(function(){return{}}),i=n.length;function o(t){var e,o,a,u;for(e in t)for(a=t[e].tuple,o=0;o<i;++o)r[o][u=a[n[o]]]=u}o(t._prev),o(e),function o(a,u,s){var c,l,f=n[s],h=r[s++];for(c in h)u[f]=h[c],l=a?a+"|"+c:c,s<i?o(l,u,s):e[l]||t.cell(l,u)}("",{},0)},Bo.init=function(t){var e=this._inputs=[],n=this._outputs=[],r={};function i(t){for(var n,i=Object(Mt.i)(Object(Mt.g)(t)),o=0,a=i.length;o<a;++o)r[n=i[o]]||(r[n]=1,e.push(n))}this._dims=Object(Mt.i)(t.groupby),this._dnames=this._dims.map(function(t){var e=Object(Mt.h)(t);return i(t),n.push(e),e}),this.cellkey=t.key?t.key:Si(this._dims),this._countOnly=!0,this._counts=[],this._measures=[];var o,a,u,s,c,l,f=t.fields||[null],h=t.ops||["count"],d=t.as||[],p=f.length,g={};for(p!==h.length&&Object(Mt.n)("Unmatched number of fields and aggregate ops."),l=0;l<p;++l)o=f[l],a=h[l],null==o&&"count"!==a&&Object(Mt.n)("Null aggregate field specified."),c=Ci(a,s=Object(Mt.h)(o),d[l]),n.push(c),"count"!==a?((u=g[s])||(i(o),(u=g[s]=[]).field=o,this._measures.push(u)),"count"!==a&&(this._countOnly=!1),u.push(Fi(a,c))):this._counts.push(c);return this._measures=this._measures.map(function(t){return Ti(t,t.field)}),{}},Bo.cellkey=Si(),Bo.cell=function(t,e){var n=this.value[t];return n?0===n.num&&this._drop&&n.stamp<this.stamp?(n.stamp=this.stamp,this._adds[this._alen++]=n):n.stamp<this.stamp&&(n.stamp=this.stamp,this._mods[this._mlen++]=n):(n=this.value[t]=this.newcell(t,e),this._adds[this._alen++]=n),n},Bo.newcell=function(t,e){var n={key:t,num:0,agg:null,tuple:this.newtuple(e,this._prev&&this._prev[t]),stamp:this.stamp,store:!1};if(!this._countOnly){var r,i=this._measures,o=i.length;for(n.agg=Array(o),r=0;r<o;++r)n.agg[r]=new i[r](n)}return n.store&&(n.data=new To),n},Bo.newtuple=function(t,e){var n,r,i=this._dnames,o=this._dims,a={};for(n=0,r=o.length;n<r;++n)a[i[n]]=o[n](t);return e?Ut(e.tuple,a):Bt(a)},Bo.add=function(t){var e,n,r,i=this.cellkey(t),o=this.cell(i,t);if(o.num+=1,!this._countOnly)for(o.store&&o.data.add(t),n=0,r=(e=o.agg).length;n<r;++n)e[n].add(e[n].get(t),t)},Bo.rem=function(t){var e,n,r,i=this.cellkey(t),o=this.cell(i,t);if(o.num-=1,!this._countOnly)for(o.store&&o.data.rem(t),n=0,r=(e=o.agg).length;n<r;++n)e[n].rem(e[n].get(t),t)},Bo.celltuple=function(t){var e,n,r,i=t.tuple,o=this._counts;for(t.store&&t.data.values(),n=0,r=o.length;n<r;++n)i[o[n]]=t.num;if(!this._countOnly)for(n=0,r=(e=t.agg).length;n<r;++n)e[n].set(i);return i},Bo.changes=function(t){var e,n,r,i,o=this._adds,a=this._mods,u=this._prev,s=this._drop,c=t.add,l=t.rem,f=t.mod;if(u)for(n in u)e=u[n],s&&!e.num||l.push(e.tuple);for(r=0,i=this._alen;r<i;++r)c.push(this.celltuple(o[r])),o[r]=null;for(r=0,i=this._mlen;r<i;++r)(0===(e=a[r]).num&&s?l:f).push(this.celltuple(e)),a[r]=null;return this._alen=this._mlen=0,this._prev=null,t};function Po(t){Oi.call(this,null,t)}Po.Definition={type:"Bin",metadata:{modifies:!0},params:[{name:"field",type:"field",required:!0},{name:"anchor",type:"number"},{name:"maxbins",type:"number",default:20},{name:"base",type:"number",default:10},{name:"divide",type:"number",array:!0,default:[5,2]},{name:"extent",type:"number",array:!0,length:2,required:!0},{name:"step",type:"number"},{name:"steps",type:"number",array:!0},{name:"minstep",type:"number",default:0},{name:"nice",type:"boolean",default:!0},{name:"name",type:"string"},{name:"as",type:"string",array:!0,length:2,default:["bin0","bin1"]}]};var Lo=Object(Mt.x)(Po,Oi);Lo.transform=function(t,e){var n,r=this._bins(t),i=r.start,o=r.step,a=t.as||["bin0","bin1"],u=a[0],s=a[1];return n=t.modified()?(e=e.reflow(!0)).SOURCE:e.modified(Object(Mt.g)(t.field))?e.ADD_MOD:e.ADD,e.visit(n,function(t){var e=r(t);t[u]=e,t[s]=null==e?null:i+o*(1+(e-i)/o)}),e.modifies(a)},Lo._bins=function(t){if(this.value&&!t.modified())return this.value;var e,n,r=t.field,i=$i(t),o=i.start,a=i.stop,u=i.step;null!=(e=t.anchor)&&(n=e-(o+u*Math.floor((e-o)/u)),o+=n,a+=n);var s=function(t){var e=r(t);return null==e?null:(e=Math.max(o,Math.min(+e,a-u)),o+u*Math.floor(1e-14+(e-o)/u))};return s.start=o,s.stop=a,s.step=u,this.value=Object(Mt.f)(s,Object(Mt.g)(r),t.name||"bin_"+Object(Mt.h)(r))};var Uo=function(t,e,n){var r=t,i=e||[],o=n||[],a={},u=0;return{add:function(t){o.push(t)},remove:function(t){a[r(t)]=++u},size:function(){return i.length},data:function(t,e){return u&&(i=i.filter(function(t){return!a[r(t)]}),a={},u=0),e&&t&&i.sort(t),o.length&&(i=t?Object(Mt.K)(t,i,o.sort(t)):i.concat(o),o=[]),i}}};function qo(t){Oi.call(this,[],t)}function Io(t){Xt.call(this,null,Wo,t)}function Wo(t){return this.value&&!t.modified()?this.value:Object(Mt.k)(t.fields,t.orders)}function Ho(t){Oi.call(this,null,t)}qo.Definition={type:"Collect",metadata:{source:!0},params:[{name:"sort",type:"compare"}]},Object(Mt.x)(qo,Oi).transform=function(t,e){var n=e.fork(e.ALL),r=Uo($t,this.value,n.materialize(n.ADD).add),i=t.sort,o=e.changed()||i&&(t.modified("sort")||e.modified(i.fields));return n.visit(n.REM,r.remove),this.modified(o),this.value=n.source=r.data(i,o),e.source&&e.source.root&&(this.value.root=e.source.root),n},Object(Mt.x)(Io,Xt),Ho.Definition={type:"CountPattern",metadata:{generates:!0,changes:!0},params:[{name:"field",type:"field",required:!0},{name:"case",type:"enum",values:["upper","lower","mixed"],default:"mixed"},{name:"pattern",type:"string",default:'[\\w"]+'},{name:"stopwords",type:"string",default:""},{name:"as",type:"string",array:!0,length:2,default:["text","count"]}]};var Go=Object(Mt.x)(Ho,Oi);function Yo(t){Oi.call(this,null,t)}Go.transform=function(t,e){function n(e){return function(n){for(var r,i=function(t,e,n){switch(e){case"upper":t=t.toUpperCase();break;case"lower":t=t.toLowerCase()}return t.match(n)}(u(n),t.case,o)||[],s=0,c=i.length;s<c;++s)a.test(r=i[s])||e(r)}}var r=this._parameterCheck(t,e),i=this._counts,o=this._match,a=this._stop,u=t.field,s=t.as||["text","count"],c=n(function(t){i[t]=1+(i[t]||0)}),l=n(function(t){i[t]-=1});return r?e.visit(e.SOURCE,c):(e.visit(e.ADD,c),e.visit(e.REM,l)),this._finish(e,s)},Go._parameterCheck=function(t,e){var n=!1;return!t.modified("stopwords")&&this._stop||(this._stop=new RegExp("^"+(t.stopwords||"")+"$","i"),n=!0),!t.modified("pattern")&&this._match||(this._match=new RegExp(t.pattern||"[\\w']+","g"),n=!0),(t.modified("field")||e.modified(t.field.fields))&&(n=!0),n&&(this._counts={}),n},Go._finish=function(t,e){var n,r,i,o=this._counts,a=this._tuples||(this._tuples={}),u=e[0],s=e[1],c=t.fork(t.NO_SOURCE|t.NO_FIELDS);for(n in o)r=a[n],i=o[n]||0,!r&&i?(a[n]=r=Bt({}),r[u]=n,r[s]=i,c.add.push(r)):0===i?(r&&c.rem.push(r),o[n]=null,a[n]=null):r[s]!==i&&(r[s]=i,c.mod.push(r));return c.modifies(e)},Yo.Definition={type:"Cross",metadata:{generates:!0},params:[{name:"filter",type:"expr"},{name:"as",type:"string",array:!0,length:2,default:["a","b"]}]},Object(Mt.x)(Yo,Oi).transform=function(t,e){var n=e.fork(e.NO_SOURCE),r=this.value,i=t.as||["a","b"],o=i[0],a=i[1];return!r||e.changed(e.ADD_REM)||t.modified("as")||t.modified("filter")?(r&&(n.rem=r),r=e.materialize(e.SOURCE).source,n.add=this.value=function(t,e,n,r){for(var i,o,a=[],u={},s=t.length,c=0;c<s;++c)for(u[e]=o=t[c],i=0;i<s;++i)u[n]=t[i],r(u)&&(a.push(Bt(u)),(u={})[e]=o);return a}(r,o,a,t.filter||Mt.db)):n.mod=r,n.source=this.value,n.modifies(i)};var Vo={kde:go,mixture:vo,normal:po,uniform:yo},Xo="distributions",Jo="function",Zo="field";function Qo(t){Oi.call(this,null,t)}var Ko=[{key:{function:"normal"},params:[{name:"mean",type:"number",default:0},{name:"stdev",type:"number",default:1}]},{key:{function:"uniform"},params:[{name:"min",type:"number",default:0},{name:"max",type:"number",default:1}]},{key:{function:"kde"},params:[{name:"field",type:"field",required:!0},{name:"from",type:"data"},{name:"bandwidth",type:"number",default:0}]}],ta={key:{function:"mixture"},params:[{name:"distributions",type:"param",array:!0,params:Ko},{name:"weights",type:"number",array:!0}]};function ea(t){Xt.call(this,null,na,t),this.modified(!0)}function na(t){var e=t.expr;return this.value&&!t.modified("expr")?this.value:Object(Mt.f)(n=>e(n,t),Object(Mt.g)(e),Object(Mt.h)(e))}function ra(t){Oi.call(this,[void 0,void 0],t)}function ia(t,e){Xt.call(this,t),this.parent=e}Qo.Definition={type:"Density",metadata:{generates:!0},params:[{name:"extent",type:"number",array:!0,length:2},{name:"steps",type:"number"},{name:"minsteps",type:"number",default:25},{name:"maxsteps",type:"number",default:200},{name:"method",type:"string",default:"pdf",values:["pdf","cdf"]},{name:"distribution",type:"param",params:Ko.concat(ta)},{name:"as",type:"string",array:!0,default:["value","density"]}]},Object(Mt.x)(Qo,Oi).transform=function(t,e){var n=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e.changed()||t.modified()){var r=function t(e,n){var r=e[Jo];Vo.hasOwnProperty(r)||Object(Mt.n)("Unknown distribution function: "+r);var i=Vo[r]();for(var o in e)o===Zo?i.data((e.from||n()).map(e[o])):o===Xo?i[o](e[o].map(function(e){return t(e,n)})):typeof i[o]===Jo&&i[o](e[o]);return i}(t.distribution,function(t){return function(){return t.materialize(t.SOURCE).source}}(e)),i=t.steps||t.minsteps||25,o=t.steps||t.maxsteps||200,a=t.method||"pdf";"pdf"!==a&&"cdf"!==a&&Object(Mt.n)("Invalid density method: "+a),t.extent||r.data||Object(Mt.n)("Missing density extent parameter."),a=r[a];var u=t.as||["value","density"],s=t.extent||Object(Mt.p)(r.data()),c=No(a,s,i,o).map(t=>{var e={};return e[u[0]]=t[0],e[u[1]]=t[1],Bt(e)});this.value&&(n.rem=this.value),this.value=n.add=n.source=c}return n},Object(Mt.x)(ea,Xt),ra.Definition={type:"Extent",metadata:{},params:[{name:"field",type:"field",required:!0}]},Object(Mt.x)(ra,Oi).transform=function(t,e){var n,r=this.value,i=t.field,o=r[0],a=r[1];((n=e.changed()||e.modified(i.fields)||t.modified("field"))||null==o)&&(o=1/0,a=-1/0),e.visit(n?e.SOURCE:e.ADD,function(t){var e=i(t);null!=e&&((e=+e)<o&&(o=e),e>a&&(a=e))}),isFinite(o)&&isFinite(a)||(o=a=void 0),this.value=[o,a]};var oa=Object(Mt.x)(ia,Xt);function aa(t){Oi.call(this,{},t),this._keys=Object(Mt.s)();var e=this._targets=[];e.active=0,e.forEach=function(t){for(var n=0,r=e.active;n<r;++n)t(e[n],n,e)}}oa.connect=function(t){return this.targets().add(t),t.source=this},oa.add=function(t){this.value.add.push(t)},oa.rem=function(t){this.value.rem.push(t)},oa.mod=function(t){this.value.mod.push(t)},oa.init=function(t){this.value.init(t,t.NO_SOURCE)},oa.evaluate=function(){return this.value};var ua=Object(Mt.x)(aa,Oi);function sa(t){Xt.call(this,null,ca,t)}function ca(t){return this.value&&!t.modified()?this.value:Object(Mt.z)(t.name)?Object(Mt.i)(t.name).map(function(t){return Object(Mt.t)(t)}):Object(Mt.t)(t.name,t.as)}function la(t){Oi.call(this,Object(Mt.s)(),t)}function fa(t,e){return t?t.map(function(t,n){return e[n]||Object(Mt.h)(t)}):null}function ha(t){Oi.call(this,[],t)}function da(t){Oi.call(this,[],t)}function pa(t){Oi.call(this,null,t)}function ga(t){Oi.call(this,[],t)}ua.activate=function(t){this._targets[this._targets.active++]=t},ua.subflow=function(t,e,n,r){var i,o,a=this.value,u=a.hasOwnProperty(t)&&a[t];return u?u.value.stamp<n.stamp&&(u.init(n),this.activate(u)):(o=r||(o=this._group[t])&&o.tuple,u=(i=n.dataflow).add(new ia(n.fork(n.NO_SOURCE),this)).connect(e(i,t,o)),a[t]=u,this.activate(u)),u},ua.transform=function(t,e){var n=e.dataflow,r=this,i=t.key,o=t.subflow,a=this._keys,u=t.modified("key");function s(t){return r.subflow(t,o,e)}return this._group=t.group||{},this._targets.active=0,e.visit(e.REM,function(t){var e=$t(t),n=a.get(e);void 0!==n&&(a.delete(e),s(n).rem(t))}),e.visit(e.ADD,function(t){var e=i(t);a.set($t(t),e),s(e).add(t)}),u||e.modified(i.fields)?e.visit(e.MOD,function(t){var e=$t(t),n=a.get(e),r=i(t);n===r?s(r).mod(t):(a.set(e,r),s(n).rem(t),s(r).add(t))}):e.changed(e.MOD)&&e.visit(e.MOD,function(t){s(a.get($t(t))).mod(t)}),u&&e.visit(e.REFLOW,function(t){var e=$t(t),n=a.get(e),r=i(t);n!==r&&(a.set(e,r),s(n).rem(t),s(r).add(t))}),a.empty>n.cleanThreshold&&n.runAfter(a.clean),e},Object(Mt.x)(sa,Xt),la.Definition={type:"Filter",metadata:{changes:!0},params:[{name:"expr",type:"expr",required:!0}]},Object(Mt.x)(la,Oi).transform=function(t,e){var n=e.dataflow,r=this.value,i=e.fork(),o=i.add,a=i.rem,u=i.mod,s=t.expr,c=!0;function l(e){var n=$t(e),i=s(e,t),l=r.get(n);i&&l?(r.delete(n),o.push(e)):i||l?c&&i&&!l&&u.push(e):(r.set(n,1),a.push(e))}return e.visit(e.REM,function(t){var e=$t(t);r.has(e)?r.delete(e):a.push(t)}),e.visit(e.ADD,function(e){s(e,t)?o.push(e):r.set($t(e),1)}),e.visit(e.MOD,l),t.modified()&&(c=!1,e.visit(e.REFLOW,l)),r.empty>n.cleanThreshold&&n.runAfter(r.clean),i},ha.Definition={type:"Flatten",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0}]},Object(Mt.x)(ha,Oi).transform=function(t,e){var n=e.fork(e.NO_SOURCE),r=t.fields,i=fa(r,t.as||[]),o=i.length;return n.rem=this.value,e.visit(e.SOURCE,function(t){for(var e,a,u,s=r.map(function(e){return e(t)}),c=s.reduce(function(t,e){return Math.max(t,e.length)},0),l=0;l<c;++l){for(a=Pt(t),e=0;e<o;++e)a[i[e]]=null==(u=s[e][l])?null:u;n.add.push(a)}}),this.value=n.source=n.add,n.modifies(i)},da.Definition={type:"Fold",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0,length:2,default:["key","value"]}]},Object(Mt.x)(da,Oi).transform=function(t,e){var n=e.fork(e.NO_SOURCE),r=t.fields,i=r.map(Mt.h),o=t.as||["key","value"],a=o[0],u=o[1],s=r.length;return n.rem=this.value,e.visit(e.SOURCE,function(t){for(var e,o=0;o<s;++o)(e=Pt(t))[a]=i[o],e[u]=r[o](t),n.add.push(e)}),this.value=n.source=n.add,n.modifies(o)},pa.Definition={type:"Formula",metadata:{modifies:!0},params:[{name:"expr",type:"expr",required:!0},{name:"as",type:"string",required:!0},{name:"initonly",type:"boolean"}]},Object(Mt.x)(pa,Oi).transform=function(t,e){var n=t.expr,r=t.as,i=t.modified(),o=t.initonly?e.ADD:i?e.SOURCE:e.modified(n.fields)?e.ADD_MOD:e.ADD;return i&&(e=e.materialize().reflow(!0)),t.initonly||e.modifies(r),e.visit(o,function(e){e[r]=n(e,t)})},Object(Mt.x)(ga,Oi).transform=function(t,e){var n,r,i,o=this.value,a=e.fork(e.ALL),u=t.size-o.length,s=t.generator;if(u>0){for(n=[];--u>=0;)n.push(i=Bt(s(t))),o.push(i);a.add=a.add.length?a.materialize(a.ADD).add.concat(n):n}else r=o.slice(0,-u),a.rem=a.rem.length?a.materialize(a.REM).rem.concat(r):r,o=o.slice(-u);return a.source=this.value=o,a};var ma={value:"value",median:ao,mean:function(t,e){let n=0,r=0;if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(++n,r+=e);else{let i=-1;for(let o of t)null!=(o=e(o,++i,t))&&(o=+o)>=o&&(++n,r+=o)}if(n)return r/n},min:uo,max:function(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n<e||void 0===n&&e>=e)&&(n=e);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n<i||void 0===n&&i>=i)&&(n=i)}return n}},va=[];function ya(t){Oi.call(this,[],t)}function ba(t){Ro.call(this,t)}ya.Definition={type:"Impute",metadata:{changes:!0},params:[{name:"field",type:"field",required:!0},{name:"key",type:"field",required:!0},{name:"keyvals",array:!0},{name:"groupby",type:"field",array:!0},{name:"method",type:"enum",default:"value",values:["value","mean","median","max","min"]},{name:"value",default:0}]},Object(Mt.x)(ya,Oi).transform=function(t,e){var n,r,i,o,a,u,s,c,l,f,h=e.fork(e.ALL),d=function(t){var e,n=t.method||ma.value;if(null!=ma[n])return n===ma.value?(e=void 0!==t.value?t.value:0,function(){return e}):ma[n];Object(Mt.n)("Unrecognized imputation method: "+n)}(t),p=function(t){var e=t.field;return function(t){return t?e(t):NaN}}(t),g=Object(Mt.h)(t.field),m=Object(Mt.h)(t.key),v=(t.groupby||[]).map(Mt.h),y=function(t,e,n,r){var i,o,a,u,s,c,l,f,h=function(t){return t(f)},d=[],p=r?r.slice():[],g={},m={};for(p.forEach(function(t,e){g[t]=e+1}),u=0,l=t.length;u<l;++u)f=t[u],c=n(f),s=g[c]||(g[c]=p.push(c)),o=(i=e?e.map(h):va)+"",(a=m[o])||(a=m[o]=[],d.push(a),a.values=i),a[s-1]=f;return d.domain=p,d}(e.source,t.groupby,t.key,t.keyvals),b=[],x=this.value,_=y.domain.length;for(a=0,c=y.length;a<c;++a)for(i=(n=y[a]).values,r=NaN,s=0;s<_;++s)if(null==n[s]){for(o=y.domain[s],f={_impute:!0},u=0,l=i.length;u<l;++u)f[v[u]]=i[u];f[m]=o,f[g]=isNaN(r)?r=d(n,p):r,b.push(Bt(f))}return b.length&&(h.add=h.materialize(h.ADD).add.concat(b)),x.length&&(h.rem=h.materialize(h.REM).rem.concat(x)),this.value=b,h},ba.Definition={type:"JoinAggregate",metadata:{modifies:!0},params:[{name:"groupby",type:"field",array:!0},{name:"fields",type:"field",null:!0,array:!0},{name:"ops",type:"enum",array:!0,values:Di},{name:"as",type:"string",null:!0,array:!0},{name:"key",type:"field"}]};var xa=Object(Mt.x)(ba,Ro);function _a(t){Oi.call(this,null,t)}function wa(t){Xt.call(this,null,Oa,t)}function Oa(t){return this.value&&!t.modified()?this.value:Object(Mt.H)(t.fields,t.flat)}function ka(t){Oi.call(this,[],t)}function Aa(t,e,n){n.forEach(Bt);const r=e.fork(e.NO_FIELDS&e.NO_SOURCE);return r.rem=t.value,t.value=r.add=r.source=n,r}function Ea(t){Oi.call(this,{},t)}function ja(t){Xt.call(this,null,Sa,t)}function Sa(t){if(this.value&&!t.modified())return this.value;var e,n,r,i=1/0,o=-1/0,a=t.extents;for(e=0,n=a.length;e<n;++e)(r=a[e])[0]<i&&(i=r[0]),r[1]>o&&(o=r[1]);return[i,o]}function Ca(t){Xt.call(this,null,Ma,t)}function Ma(t){return this.value&&!t.modified()?this.value:t.values.reduce(function(t,e){return t.concat(e)},[])}function Da(t){Oi.call(this,null,t)}function Fa(t){Ro.call(this,t)}xa.transform=function(t,e){var n,r=this,i=t.modified();return r.value&&(i||e.modified(r._inputs))?(n=r.value=i?r.init(t):{},e.visit(e.SOURCE,function(t){r.add(t)})):(n=r.value=r.value||this.init(t),e.visit(e.REM,function(t){r.rem(t)}),e.visit(e.ADD,function(t){r.add(t)})),r.changes(),e.visit(e.SOURCE,function(t){Object(Mt.o)(t,n[r.cellkey(t)].tuple)}),e.reflow(i).modifies(this._outputs)},xa.changes=function(){var t,e,n=this._adds,r=this._mods;for(t=0,e=this._alen;t<e;++t)this.celltuple(n[t]),n[t]=null;for(t=0,e=this._mlen;t<e;++t)this.celltuple(r[t]),r[t]=null;this._alen=this._mlen=0},_a.Definition={type:"KDE",metadata:{generates:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"cumulative",type:"boolean",default:!1},{name:"counts",type:"boolean",default:!1},{name:"bandwidth",type:"number",default:0},{name:"extent",type:"number",array:!0,length:2},{name:"steps",type:"number"},{name:"minsteps",type:"number",default:25},{name:"maxsteps",type:"number",default:200},{name:"as",type:"string",array:!0,default:["value","density"]}]},Object(Mt.x)(_a,Oi).transform=function(t,e){var n=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e.changed()||t.modified()){const r=function(t,e,n){var r,i,o,a,u,s,c=[],l=function(t){return t(a)};if(null==e)c.push(t.map(n));else for(r={},i=0,o=t.length;i<o;++i)a=t[i],u=e.map(l),(s=r[u])||(r[u]=s=[],s.dims=u,c.push(s)),s.push(n(a));return c}(e.materialize(e.SOURCE).source,t.groupby,t.field),i=(t.groupby||[]).map(Mt.h),o=t.bandwidth,a=t.cumulative?"cdf":"pdf",u=t.steps||t.minsteps||25,s=t.steps||t.maxsteps||200,c=t.as||["value","density"],l=[];"pdf"!==a&&"cdf"!==a&&Object(Mt.n)("Invalid density method: "+a),r.forEach(e=>{const n=go(e,o)[a],r=t.counts?e.length:1,f=t.extent||Yi(e);No(n,f,u,s).forEach(t=>{const n={};for(let t=0;t<i.length;++t)n[i[t]]=e.dims[t];n[c[0]]=t[0],n[c[1]]=t[1]*r,l.push(Bt(n))})}),this.value&&(n.rem=this.value),this.value=n.add=n.source=l}return n},Object(Mt.x)(wa,Xt),Object(Mt.x)(ka,Oi).transform=function(t,e){const n=e.dataflow;return t.values?Aa(this,e,n.parse(t.values,t.format)):n.request(t.url,t.format).then(t=>Aa(this,e,t.data||[]))},Ea.Definition={type:"Lookup",metadata:{modifies:!0},params:[{name:"index",type:"index",params:[{name:"from",type:"data",required:!0},{name:"key",type:"field",required:!0}]},{name:"values",type:"field",array:!0},{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0},{name:"default",default:null}]},Object(Mt.x)(Ea,Oi).transform=function(t,e){var n,r,i=e,o=t.as,a=t.fields,u=t.index,s=t.values,c=null==t.default?null:t.default,l=t.modified(),f=l?e.SOURCE:e.ADD,h=a.length;return s?(r=s.length,h>1&&!o&&Object(Mt.n)('Multi-field lookup requires explicit "as" parameter.'),o&&o.length!==h*r&&Object(Mt.n)('The "as" parameter has too few output field names.'),o=o||s.map(Mt.h),n=function(t){for(var e,n,i=0,l=0;i<h;++i)if(null==(n=u.get(a[i](t))))for(e=0;e<r;++e,++l)t[o[l]]=c;else for(e=0;e<r;++e,++l)t[o[l]]=s[e](n)}):(o||Object(Mt.n)("Missing output field names."),n=function(t){for(var e,n=0;n<h;++n)e=u.get(a[n](t)),t[o[n]]=null==e?c:e}),l?i=e.reflow(!0):f|=a.some(function(t){return e.modified(t.fields)})?e.MOD:0,e.visit(f,n),i.modifies(o)},Object(Mt.x)(ja,Xt),Object(Mt.x)(Ca,Xt),Object(Mt.x)(Da,Oi),Da.prototype.transform=function(t,e){return this.modified(t.modified()),this.value=t,e.fork(e.NO_SOURCE|e.NO_FIELDS)},Fa.Definition={type:"Pivot",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"value",type:"field",required:!0},{name:"op",type:"enum",values:Di,default:"sum"},{name:"limit",type:"number",default:0},{name:"key",type:"field"}]};var Na=Object(Mt.x)(Fa,Ro);function za(t){aa.call(this,t)}function Ta(t){Oi.call(this,null,t)}function $a(t){Oi.call(this,null,t)}function Ra(t){Oi.call(this,null,t)}function Ba(t){Oi.call(this,[],t),this.count=0}function Pa(t){Oi.call(this,null,t)}function La(t){Oi.call(this,null,t),this.modified(!0)}function Ua(t){Oi.call(this,Object(Mt.s)(),t)}function qa(t){Oi.call(this,null,t)}Na._transform=Na.transform,Na.transform=function(t,e){return this._transform(function(t,e){var n=t.field,r=t.value,i=("count"===t.op?"__count__":t.op)||"sum",o=Object(Mt.g)(n).concat(Object(Mt.g)(r)),a=function(t,e,n){var r={},i=[];return n.visit(n.SOURCE,function(e){var n=t(e);r[n]||(r[n]=1,i.push(n))}),i.sort(function(t,e){return(t<e||null==t)&&null!=e?-1:(t>e||null==e)&&null!=t?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e==e?-1:e!=e&&t==t?1:0)}),e?i.slice(0,e):i}(n,t.limit||0,e);return{key:t.key,groupby:t.groupby,ops:a.map(function(){return i}),fields:a.map(function(t){return function(t,e,n,r){return Object(Mt.f)(function(r){return e(r)===t?n(r):NaN},r,t+"")}(t,n,r,o)}),as:a.map(function(t){return t+""}),modified:t.modified.bind(t)}}(t,e),e)},Object(Mt.x)(za,aa).transform=function(t,e){var n=this,r=t.subflow,i=t.field;return(t.modified("field")||i&&e.modified(Object(Mt.g)(i)))&&Object(Mt.n)("PreFacet does not support field modification."),this._targets.active=0,e.visit(e.MOD,function(t){var o=n.subflow($t(t),r,e,t);i?i(t).forEach(function(t){o.mod(t)}):o.mod(t)}),e.visit(e.ADD,function(t){var o=n.subflow($t(t),r,e,t);i?i(t).forEach(function(t){o.add(Bt(t))}):o.add(t)}),e.visit(e.REM,function(t){var o=n.subflow($t(t),r,e,t);i?i(t).forEach(function(t){o.rem(t)}):o.rem(t)}),e},Ta.Definition={type:"Project",metadata:{generates:!0,changes:!0},params:[{name:"fields",type:"field",array:!0},{name:"as",type:"string",null:!0,array:!0}]},Object(Mt.x)(Ta,Oi).transform=function(t,e){var n,r,i=t.fields,o=fa(t.fields,t.as||[]),a=i?function(t,e){return function(t,e,n,r){for(var i=0,o=n.length;i<o;++i)e[r[i]]=n[i](t);return e}(t,e,i,o)}:Lt;return this.value?r=this.value:(e=e.addAll(),r=this.value={}),n=e.fork(e.NO_SOURCE),e.visit(e.REM,function(t){var e=$t(t);n.rem.push(r[e]),r[e]=null}),e.visit(e.ADD,function(t){var e=a(t,Bt({}));r[$t(t)]=e,n.add.push(e)}),e.visit(e.MOD,function(t){n.mod.push(a(t,r[$t(t)]))}),n},Object(Mt.x)($a,Oi).transform=function(t,e){return this.value=t.value,t.modified("value")?e.fork(e.NO_SOURCE|e.NO_FIELDS):e.StopPropagation},Object(Mt.x)(Ra,Oi).transform=function(t,e){var n,r;return this.value?r=this.value:(n=e=e.addAll(),r=this.value={}),t.derive&&(n=e.fork(e.NO_SOURCE),e.visit(e.REM,function(t){var e=$t(t);n.rem.push(r[e]),r[e]=null}),e.visit(e.ADD,function(t){var e=Pt(t);r[$t(t)]=e,n.add.push(e)}),e.visit(e.MOD,function(t){n.mod.push(Lt(t,r[$t(t)]))})),n},Ba.Definition={type:"Sample",metadata:{},params:[{name:"size",type:"number",default:1e3}]},Object(Mt.x)(Ba,Oi).transform=function(t,e){var n=e.fork(e.NO_SOURCE),r=t.modified("size"),i=t.size,o=this.value,a=this.count,u=0,s=o.reduce(function(t,e){return t[$t(e)]=1,t},{});function c(t){var e,r;o.length<i?o.push(t):(r=~~((a+1)*Bi()))<o.length&&r>=u&&(e=o[r],s[$t(e)]&&n.rem.push(e),o[r]=t),++a}if(e.rem.length&&(e.visit(e.REM,function(t){var e=$t(t);s[e]&&(s[e]=-1,n.rem.push(t)),--a}),o=o.filter(function(t){return-1!==s[$t(t)]})),(e.rem.length||r)&&o.length<i&&e.source&&(u=a=o.length,e.visit(e.SOURCE,function(t){s[$t(t)]||c(t)}),u=-1),r&&o.length>i){for(var l=0,f=o.length-i;l<f;++l)s[$t(o[l])]=-1,n.rem.push(o[l]);o=o.slice(f)}return e.mod.length&&e.visit(e.MOD,function(t){s[$t(t)]&&n.mod.push(t)}),e.add.length&&e.visit(e.ADD,c),(e.add.length||u<0)&&(n.add=o.filter(function(t){return!s[$t(t)]})),this.count=a,this.value=n.source=o,n},Pa.Definition={type:"Sequence",metadata:{changes:!0},params:[{name:"start",type:"number",required:!0},{name:"stop",type:"number",required:!0},{name:"step",type:"number",default:1},{name:"as",type:"string",default:"data"}]},Object(Mt.x)(Pa,Oi).transform=function(t,e){if(!this.value||t.modified()){var n=e.materialize().fork(e.MOD),r=t.as||"data";return n.rem=this.value?e.rem.concat(this.value):e.rem,this.value=Xi(t.start,t.stop,t.step||1).map(function(t){var e={};return e[r]=t,Bt(e)}),n.add=e.add.concat(this.value),n}},Object(Mt.x)(La,Oi).transform=function(t,e){return this.value=e.source,e.changed()?e.fork(e.NO_SOURCE|e.NO_FIELDS):e.StopPropagation},Object(Mt.x)(Ua,Oi).transform=function(t,e){var n=e.dataflow,r=t.field,i=this.value,o=!0;function a(t){i.set(r(t),t)}return t.modified("field")||e.modified(r.fields)?(i.clear(),e.visit(e.SOURCE,a)):e.changed()?(e.visit(e.REM,function(t){i.delete(r(t))}),e.visit(e.ADD,a)):o=!1,this.modified(o),i.empty>n.cleanThreshold&&n.runAfter(i.clean),e.fork()},Object(Mt.x)(qa,Oi).transform=function(t,e){(!this.value||t.modified("field")||t.modified("sort")||e.changed()||t.sort&&e.modified(t.sort.fields))&&(this.value=(t.sort?e.source.slice().sort(t.sort):e.source).map(t.field))};const Ia={row_number:function(){return{next:t=>t.index+1}},rank:function(){let t;return{init:()=>t=1,next:e=>{let n=e.index,r=e.data;return n&&e.compare(r[n-1],r[n])?t=n+1:t}}},dense_rank:function(){let t;return{init:()=>t=1,next:e=>{let n=e.index,r=e.data;return n&&e.compare(r[n-1],r[n])?++t:t}}},percent_rank:function(){let t=Ia.rank(),e=t.next;return{init:t.init,next:t=>(e(t)-1)/(t.data.length-1)}},cume_dist:function(){let t;return{init:()=>t=0,next:e=>{let n=e.index,r=e.data,i=e.compare;if(t<n){for(;n+1<r.length&&!i(r[n],r[n+1]);)++n;t=n}return(1+t)/r.length}}},ntile:function(t,e){(e=+e)>0||Object(Mt.n)("ntile num must be greater than zero.");let n=Ia.cume_dist(),r=n.next;return{init:n.init,next:t=>Math.ceil(e*r(t))}},lag:function(t,e){return e=+e||1,{next:n=>{let r=n.index-e;return r>=0?t(n.data[r]):null}}},lead:function(t,e){return e=+e||1,{next:n=>{let r=n.index+e,i=n.data;return r<i.length?t(i[r]):null}}},first_value:function(t){return{next:e=>t(e.data[e.i0])}},last_value:function(t){return{next:e=>t(e.data[e.i1-1])}},nth_value:function(t,e){return(e=+e)>0||Object(Mt.n)("nth_value nth must be greater than zero."),{next:n=>{let r=n.i0+(e-1);return r<n.i1?t(n.data[r]):null}}},prev_value:function(t){let e=null;return{next:n=>{let r=t(n.data[n.index]);return null!=r?e=r:e}}},next_value:function(t){let e=null,n=-1;return{next:r=>{let i=r.data;return r.index<=n?e:(n=function(t,e,n){for(let r=e.length;n<r;++n){let r=t(e[n]);if(null!=r)return n}return-1}(t,i,r.index))<0?(n=i.length,e=null):e=t(i[n])}}}};var Wa=Object.keys(Ia);function Ha(t){let e=this,n=Object(Mt.i)(t.ops),r=Object(Mt.i)(t.fields),i=Object(Mt.i)(t.params),o=Object(Mt.i)(t.as),a=e.outputs=[],u=e.windows=[],s={},c={},l=!0,f=[],h=[];function d(t){Object(Mt.i)(Object(Mt.g)(t)).forEach(t=>s[t]=1)}d(t.sort),n.forEach(function(t,e){let n=r[e],s=Object(Mt.h)(n),p=Ci(t,s,o[e]);if(d(n),a.push(p),Ia.hasOwnProperty(t))u.push(function(t,e,n,r){let i=Ia[t](e,n);return{init:i.init||Mt.gb,update:function(t,e){e[r]=i.next(t)}}}(t,r[e],i[e],p));else{if(null==n&&"count"!==t&&Object(Mt.n)("Null aggregate field specified."),"count"===t)return void f.push(p);l=!1;let e=c[s];e||((e=c[s]=[]).field=n,h.push(e)),e.push(Fi(t,p))}}),(f.length||h.length)&&(e.cell=function(t,e,n){t=t.map(t=>Ti(t,t.field));let r={num:0,agg:null,store:!1,count:e};if(!n)for(var i=t.length,o=r.agg=Array(i),a=0;a<i;++a)o[a]=new t[a](r);if(r.store)var u=r.data=new To;return r.add=function(t){if(r.num+=1,!n){u&&u.add(t);for(let e=0;e<i;++e)o[e].add(o[e].get(t),t)}},r.rem=function(t){if(r.num-=1,!n){u&&u.rem(t);for(let e=0;e<i;++e)o[e].rem(o[e].get(t),t)}},r.set=function(t){let i,a;for(u&&u.values(),i=0,a=e.length;i<a;++i)t[e[i]]=r.num;if(!n)for(i=0,a=o.length;i<a;++i)o[i].set(t)},r.init=function(){r.num=0,u&&u.reset();for(let t=0;t<i;++t)o[t].init()},r}(h,f,l)),e.inputs=Object.keys(s)}const Ga=Ha.prototype;function Ya(t){Oi.call(this,{},t),this._mlen=0,this._mods=[]}Ga.init=function(){this.windows.forEach(t=>t.init()),this.cell&&this.cell.init()},Ga.update=function(t,e){let n,r=this.cell,i=this.windows,o=t.data,a=i&&i.length;if(r){for(n=t.p0;n<t.i0;++n)r.rem(o[n]);for(n=t.p1;n<t.i1;++n)r.add(o[n]);r.set(e)}for(n=0;n<a;++n)i[n].update(t,e)},Ya.Definition={type:"Window",metadata:{modifies:!0},params:[{name:"sort",type:"compare"},{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:Wa.concat(Di)},{name:"params",type:"number",null:!0,array:!0},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"frame",type:"number",null:!0,array:!0,length:2,default:[null,0]},{name:"ignorePeers",type:"boolean",default:!1}]};var Va=Object(Mt.x)(Ya,Oi);function Xa(t,e,n){var r=n.sort,i=r&&!n.ignorePeers,o=n.frame||[null,0],a=t.data(r),u=a.length,s=0,c=i?Ui(r):null,l={i0:0,i1:0,p0:0,p1:0,index:0,data:a,compare:r||Object(Mt.l)(-1)};for(e.init();s<u;++s)Ja(l,o,s,u),i&&Za(l,c),e.update(l,a[s])}function Ja(t,e,n,r){t.p0=t.i0,t.p1=t.i1,t.i0=null==e[0]?0:Math.max(0,n-Math.abs(e[0])),t.i1=null==e[1]?r:Math.min(r,n+Math.abs(e[1])+1),t.index=n}function Za(t,e){var n=t.i0,r=t.i1-1,i=t.compare,o=t.data,a=o.length-1;n>0&&!i(o[n],o[n-1])&&(t.i0=e.left(o,o[n])),r<a&&!i(o[r],o[r+1])&&(t.i1=e.right(o,o[r]))}Va.transform=function(t,e){var n,r,i=this,o=i.state,a=t.modified();this.stamp=e.stamp,o&&!a||(o=i.state=new Ha(t));var u=Si(t.groupby);function s(t){return i.group(u(t))}for(a||e.modified(o.inputs)?(i.value={},e.visit(e.SOURCE,function(t){s(t).add(t)})):(e.visit(e.REM,function(t){s(t).remove(t)}),e.visit(e.ADD,function(t){s(t).add(t)})),n=0,r=i._mlen;n<r;++n)Xa(i._mods[n],o,t);return i._mlen=0,i._mods=[],e.reflow(a).modifies(o.outputs)},Va.group=function(t){var e=this.value[t];return e||((e=this.value[t]=Uo($t)).stamp=-1),e.stamp<this.stamp&&(e.stamp=this.stamp,this._mods[this._mlen++]=e),e};const Qa="top",Ka="left",tu="right",eu="bottom",nu="top-left",ru="top-right",iu="bottom-left",ou="bottom-right",au="start",uu="middle",su="end",cu="x",lu="y",fu="group",hu="axis",du="title",pu="frame",gu="scope",mu="legend",vu="row-header",yu="row-footer",bu="row-title",xu="column-header",_u="column-footer",wu="column-title",Ou="padding",ku="symbol",Au="fit",Eu="fit-x",ju="fit-y",Su="pad",Cu="none",Mu="all",Du="each",Fu="flush",Nu="column",zu="row";function Tu(t){this.clear(),t&&this.union(t)}var $u=Tu.prototype;$u.clone=function(){return new Tu(this)},$u.clear=function(){return this.x1=+Number.MAX_VALUE,this.y1=+Number.MAX_VALUE,this.x2=-Number.MAX_VALUE,this.y2=-Number.MAX_VALUE,this},$u.empty=function(){return this.x1===+Number.MAX_VALUE&&this.y1===+Number.MAX_VALUE&&this.x2===-Number.MAX_VALUE&&this.y2===-Number.MAX_VALUE},$u.equals=function(t){return this.x1===t.x1&&this.y1===t.y1&&this.x2===t.x2&&this.y2===t.y2},$u.set=function(t,e,n,r){return n<t?(this.x2=t,this.x1=n):(this.x1=t,this.x2=n),r<e?(this.y2=e,this.y1=r):(this.y1=e,this.y2=r),this},$u.add=function(t,e){return t<this.x1&&(this.x1=t),e<this.y1&&(this.y1=e),t>this.x2&&(this.x2=t),e>this.y2&&(this.y2=e),this},$u.expand=function(t){return this.x1-=t,this.y1-=t,this.x2+=t,this.y2+=t,this},$u.round=function(){return this.x1=Math.floor(this.x1),this.y1=Math.floor(this.y1),this.x2=Math.ceil(this.x2),this.y2=Math.ceil(this.y2),this},$u.translate=function(t,e){return this.x1+=t,this.x2+=t,this.y1+=e,this.y2+=e,this},$u.rotate=function(t,e,n){const r=this.rotatedPoints(t,e,n);return this.clear().add(r[0],r[1]).add(r[2],r[3]).add(r[4],r[5]).add(r[6],r[7])},$u.rotatedPoints=function(t,e,n){var{x1:r,y1:i,x2:o,y2:a}=this,u=Math.cos(t),s=Math.sin(t),c=e-e*u+n*s,l=n-e*s-n*u;return[u*r-s*i+c,s*r+u*i+l,u*r-s*a+c,s*r+u*a+l,u*o-s*i+c,s*o+u*i+l,u*o-s*a+c,s*o+u*a+l]},$u.union=function(t){return t.x1<this.x1&&(this.x1=t.x1),t.y1<this.y1&&(this.y1=t.y1),t.x2>this.x2&&(this.x2=t.x2),t.y2>this.y2&&(this.y2=t.y2),this},$u.intersect=function(t){return t.x1>this.x1&&(this.x1=t.x1),t.y1>this.y1&&(this.y1=t.y1),t.x2<this.x2&&(this.x2=t.x2),t.y2<this.y2&&(this.y2=t.y2),this},$u.encloses=function(t){return t&&this.x1<=t.x1&&this.x2>=t.x2&&this.y1<=t.y1&&this.y2>=t.y2},$u.alignsWith=function(t){return t&&(this.x1==t.x1||this.x2==t.x2||this.y1==t.y1||this.y2==t.y2)},$u.intersects=function(t){return t&&!(this.x2<t.x1||this.x1>t.x2||this.y2<t.y1||this.y1>t.y2)},$u.contains=function(t,e){return!(t<this.x1||t>this.x2||e<this.y1||e>this.y2)},$u.width=function(){return this.x2-this.x1},$u.height=function(){return this.y2-this.y1};var Ru=0;const Bu="p_";function Pu(t){return t&&t.gradient}function Lu(t,e,n){let r=t.id,i=t.gradient,o="radial"===i?Bu:"";return r||(r=t.id="gradient_"+Ru++,"radial"===i?(t.x1=Uu(t.x1,.5),t.y1=Uu(t.y1,.5),t.r1=Uu(t.r1,0),t.x2=Uu(t.x2,.5),t.y2=Uu(t.y2,.5),t.r2=Uu(t.r2,.5),o=Bu):(t.x1=Uu(t.x1,0),t.y1=Uu(t.y1,0),t.x2=Uu(t.x2,1),t.y2=Uu(t.y2,0))),e[r]=t,"url("+(n||"")+"#"+o+r+")"}function Uu(t,e){return null!=t?t:e}var qu=function(t,e){var n,r=[];return n={gradient:"linear",x1:t?t[0]:0,y1:t?t[1]:0,x2:e?e[0]:1,y2:e?e[1]:0,stops:r,stop:function(t,e){return r.push({offset:t,color:e}),n}}};function Iu(t){this.mark=t,this.bounds=this.bounds||new Tu}function Wu(t){Iu.call(this,t),this.items=this.items||[]}function Hu(t,e){if("undefined"!=typeof document&&document.createElement){var n=document.createElement("canvas");if(n&&n.getContext)return n.width=t,n.height=e,n}return null}function Gu(){return"undefined"!=typeof Image?Image:null}function Yu(t){this._pending=0,this._loader=t||ri()}Object(Mt.x)(Wu,Iu);var Vu=Yu.prototype;function Xu(t){t._pending+=1}function Ju(t){t._pending-=1}Vu.pending=function(){return this._pending},Vu.sanitizeURL=function(t){var e=this;return Xu(e),e._loader.sanitize(t,{context:"href"}).then(function(t){return Ju(e),t}).catch(function(){return Ju(e),null})},Vu.loadImage=function(t){var e=this,n=Gu();return Xu(e),e._loader.sanitize(t,{context:"image"}).then(function(t){var r=t.href;if(!r||!n)throw{url:r};var i=new n;return i.onload=function(){Ju(e),i.loaded=!0},i.onerror=function(){Ju(e),i.loaded=!1},i.src=r,i}).catch(function(t){return Ju(e),{loaded:!1,width:0,height:0,src:t&&t.url||""}})},Vu.ready=function(){var t=this;return new Promise(function(e){!function n(r){t.pending()?setTimeout(function(){n(!0)},10):e(r)}(!1)})};var Zu=Math.PI,Qu=2*Zu,Ku=Qu-1e-6;function ts(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function es(){return new ts}ts.prototype=es.prototype={constructor:ts,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,r){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+r)},bezierCurveTo:function(t,e,n,r,i,o){this._+="C"+ +t+","+ +e+","+ +n+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(t,e,n,r,i){t=+t,e=+e,n=+n,r=+r,i=+i;var o=this._x1,a=this._y1,u=n-t,s=r-e,c=o-t,l=a-e,f=c*c+l*l;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(f>1e-6)if(Math.abs(l*u-s*c)>1e-6&&i){var h=n-o,d=r-a,p=u*u+s*s,g=h*h+d*d,m=Math.sqrt(p),v=Math.sqrt(f),y=i*Math.tan((Zu-Math.acos((p+f-g)/(2*m*v)))/2),b=y/v,x=y/m;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*c)+","+(e+b*l)),this._+="A"+i+","+i+",0,0,"+ +(l*h>c*d)+","+(this._x1=t+x*u)+","+(this._y1=e+x*s)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,r,i,o){t=+t,e=+e;var a=(n=+n)*Math.cos(r),u=n*Math.sin(r),s=t+a,c=e+u,l=1^o,f=o?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+s+","+c:(Math.abs(this._x1-s)>1e-6||Math.abs(this._y1-c)>1e-6)&&(this._+="L"+s+","+c),n&&(f<0&&(f=f%Qu+Qu),f>Ku?this._+="A"+n+","+n+",0,1,"+l+","+(t-a)+","+(e-u)+"A"+n+","+n+",0,1,"+l+","+(this._x1=s)+","+(this._y1=c):f>1e-6&&(this._+="A"+n+","+n+",0,"+ +(f>=Zu)+","+l+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};var ns=es,rs=function(t){return function(){return t}},is=Math.abs,os=Math.atan2,as=Math.cos,us=Math.max,ss=Math.min,cs=Math.sin,ls=Math.sqrt,fs=1e-12,hs=Math.PI,ds=hs/2,ps=2*hs;function gs(t){return t>=1?ds:t<=-1?-ds:Math.asin(t)}function ms(t){return t.innerRadius}function vs(t){return t.outerRadius}function ys(t){return t.startAngle}function bs(t){return t.endAngle}function xs(t){return t&&t.padAngle}function _s(t,e,n,r,i,o,a){var u=t-n,s=e-r,c=(a?o:-o)/ls(u*u+s*s),l=c*s,f=-c*u,h=t+l,d=e+f,p=n+l,g=r+f,m=(h+p)/2,v=(d+g)/2,y=p-h,b=g-d,x=y*y+b*b,_=i-o,w=h*g-p*d,O=(b<0?-1:1)*ls(us(0,_*_*x-w*w)),k=(w*b-y*O)/x,A=(-w*y-b*O)/x,E=(w*b+y*O)/x,j=(-w*y+b*O)/x,S=k-m,C=A-v,M=E-m,D=j-v;return S*S+C*C>M*M+D*D&&(k=E,A=j),{cx:k,cy:A,x01:-l,y01:-f,x11:k*(i/_-1),y11:A*(i/_-1)}}function ws(t){this._context=t}ws.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var Os=function(t){return new ws(t)};function ks(t){return t[0]}function As(t){return t[1]}var Es=function(){var t=ks,e=As,n=rs(!0),r=null,i=Os,o=null;function a(a){var u,s,c,l=a.length,f=!1;for(null==r&&(o=i(c=ns())),u=0;u<=l;++u)!(u<l&&n(s=a[u],u,a))===f&&((f=!f)?o.lineStart():o.lineEnd()),f&&o.point(+t(s,u,a),+e(s,u,a));if(c)return o=null,c+""||null}return a.x=function(e){return arguments.length?(t="function"==typeof e?e:rs(+e),a):t},a.y=function(t){return arguments.length?(e="function"==typeof t?t:rs(+t),a):e},a.defined=function(t){return arguments.length?(n="function"==typeof t?t:rs(!!t),a):n},a.curve=function(t){return arguments.length?(i=t,null!=r&&(o=i(r)),a):i},a.context=function(t){return arguments.length?(null==t?r=o=null:o=i(r=t),a):r},a},js=function(){var t=ks,e=null,n=rs(0),r=As,i=rs(!0),o=null,a=Os,u=null;function s(s){var c,l,f,h,d,p=s.length,g=!1,m=new Array(p),v=new Array(p);for(null==o&&(u=a(d=ns())),c=0;c<=p;++c){if(!(c<p&&i(h=s[c],c,s))===g)if(g=!g)l=c,u.areaStart(),u.lineStart();else{for(u.lineEnd(),u.lineStart(),f=c-1;f>=l;--f)u.point(m[f],v[f]);u.lineEnd(),u.areaEnd()}g&&(m[c]=+t(h,c,s),v[c]=+n(h,c,s),u.point(e?+e(h,c,s):m[c],r?+r(h,c,s):v[c]))}if(d)return u=null,d+""||null}function c(){return Es().defined(i).curve(a).context(o)}return s.x=function(n){return arguments.length?(t="function"==typeof n?n:rs(+n),e=null,s):t},s.x0=function(e){return arguments.length?(t="function"==typeof e?e:rs(+e),s):t},s.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:rs(+t),s):e},s.y=function(t){return arguments.length?(n="function"==typeof t?t:rs(+t),r=null,s):n},s.y0=function(t){return arguments.length?(n="function"==typeof t?t:rs(+t),s):n},s.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:rs(+t),s):r},s.lineX0=s.lineY0=function(){return c().x(t).y(n)},s.lineY1=function(){return c().x(t).y(r)},s.lineX1=function(){return c().x(e).y(n)},s.defined=function(t){return arguments.length?(i="function"==typeof t?t:rs(!!t),s):i},s.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),s):a},s.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),s):o},s};Cs(Os);function Ss(t){this._curve=t}function Cs(t){function e(e){return new Ss(t(e))}return e._curve=t,e}Ss.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};Array.prototype.slice;var Ms={draw:function(t,e){var n=Math.sqrt(e/hs);t.moveTo(n,0),t.arc(0,0,n,0,ps)}},Ds=(Math.sqrt(1/3),Math.sin(hs/10)/Math.sin(7*hs/10)),Fs=(Math.sin(ps/10),Math.cos(ps/10),Math.sqrt(3),Math.sqrt(3),Math.sqrt(12),function(){});function Ns(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function zs(t){this._context=t}zs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Ns(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Ns(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Ts(t){this._context=t}Ts.prototype={areaStart:Fs,areaEnd:Fs,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Ns(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function $s(t){this._context=t}$s.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:Ns(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Rs(t,e){this._basis=new zs(t),this._beta=e}Rs.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],o=e[0],a=t[n]-i,u=e[n]-o,s=-1;++s<=n;)r=s/n,this._basis.point(this._beta*t[s]+(1-this._beta)*(i+r*a),this._beta*e[s]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var Bs=function t(e){function n(t){return 1===e?new zs(t):new Rs(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function Ps(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function Ls(t,e){this._context=t,this._k=(1-e)/6}Ls.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ps(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Ps(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Us=function t(e){function n(t){return new Ls(t,e)}return n.tension=function(e){return t(+e)},n}(0);function qs(t,e){this._context=t,this._k=(1-e)/6}qs.prototype={areaStart:Fs,areaEnd:Fs,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Ps(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Is=function t(e){function n(t){return new qs(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Ws(t,e){this._context=t,this._k=(1-e)/6}Ws.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ps(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Hs=function t(e){function n(t){return new Ws(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Gs(t,e,n){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>fs){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,s=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/s,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/s}if(t._l23_a>fs){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*c+t._x1*t._l23_2a-e*t._l12_2a)/l,a=(a*c+t._y1*t._l23_2a-n*t._l12_2a)/l}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function Ys(t,e){this._context=t,this._alpha=e}Ys.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Gs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Vs=function t(e){function n(t){return e?new Ys(t,e):new Ls(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Xs(t,e){this._context=t,this._alpha=e}Xs.prototype={areaStart:Fs,areaEnd:Fs,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Gs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Js=function t(e){function n(t){return e?new Xs(t,e):new qs(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Zs(t,e){this._context=t,this._alpha=e}Zs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Gs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Qs=function t(e){function n(t){return e?new Zs(t,e):new Ws(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Ks(t){this._context=t}Ks.prototype={areaStart:Fs,areaEnd:Fs,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};function tc(t){return t<0?-1:1}function ec(t,e,n){var r=t._x1-t._x0,i=e-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(n-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(tc(o)+tc(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function nc(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function rc(t,e,n){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*e,o-u,a-u*n,o,a)}function ic(t){this._context=t}function oc(t){this._context=new ac(t)}function ac(t){this._context=t}function uc(t){this._context=t}function sc(t){var e,n,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],e=1;e<r-1;++e)i[e]=1,o[e]=4,a[e]=4*t[e]+2*t[e+1];for(i[r-1]=2,o[r-1]=7,a[r-1]=8*t[r-1]+t[r],e=1;e<r;++e)n=i[e]/o[e-1],o[e]-=n,a[e]-=n*a[e-1];for(i[r-1]=a[r-1]/o[r-1],e=r-2;e>=0;--e)i[e]=(a[e]-i[e+1])/o[e];for(o[r-1]=(t[r]+i[r-1])/2,e=0;e<r-1;++e)o[e]=2*t[e+1]-i[e+1];return[i,o]}ic.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:rc(this,this._t0,nc(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(e=+e,(t=+t)!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,rc(this,nc(this,n=ec(this,t,e)),n);break;default:rc(this,this._t0,n=ec(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}},(oc.prototype=Object.create(ic.prototype)).point=function(t,e){ic.prototype.point.call(this,e,t)},ac.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,o){this._context.bezierCurveTo(e,t,r,n,o,i)}},uc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===n)this._context.lineTo(t[1],e[1]);else for(var r=sc(t),i=sc(e),o=0,a=1;a<n;++o,++a)this._context.bezierCurveTo(r[0][o],i[0][o],r[1][o],i[1][o],t[a],e[a]);(this._line||0!==this._line&&1===n)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}};function cc(t,e){this._context=t,this._t=e}cc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var lc={basis:{curve:function(t){return new zs(t)}},"basis-closed":{curve:function(t){return new Ts(t)}},"basis-open":{curve:function(t){return new $s(t)}},bundle:{curve:Bs,tension:"beta",value:.85},cardinal:{curve:Us,tension:"tension",value:0},"cardinal-open":{curve:Hs,tension:"tension",value:0},"cardinal-closed":{curve:Is,tension:"tension",value:0},"catmull-rom":{curve:Vs,tension:"alpha",value:.5},"catmull-rom-closed":{curve:Js,tension:"alpha",value:.5},"catmull-rom-open":{curve:Qs,tension:"alpha",value:.5},linear:{curve:Os},"linear-closed":{curve:function(t){return new Ks(t)}},monotone:{horizontal:function(t){return new oc(t)},vertical:function(t){return new ic(t)}},natural:{curve:function(t){return new uc(t)}},step:{curve:function(t){return new cc(t,.5)}},"step-after":{curve:function(t){return new cc(t,1)}},"step-before":{curve:function(t){return new cc(t,0)}}};function fc(t,e,n){var r=lc.hasOwnProperty(t)&&lc[t],i=null;return r&&(i=r.curve||r[e||"vertical"],r.tension&&null!=n&&(i=i[r.tension](n))),i}var hc={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},dc=[/([MLHVCSQTAZmlhvcsqtaz])/g,/###/,/(\d)([-+])/g,/\s|,|###/],pc=function(t){var e,n,r,i,o,a,u,s,c,l,f,h=[];for(s=0,l=(e=t.slice().replace(dc[0],"###$1").split(dc[1]).slice(1)).length;s<l;++s){for(r=(n=e[s]).slice(1).trim().replace(dc[2],"$1###$2").split(dc[3]),i=[a=n.charAt(0)],c=0,f=r.length;c<f;++c)(o=+r[c])===o&&i.push(o);if(u=hc[a.toLowerCase()],i.length-1>u)for(c=1,f=i.length;c<f;c+=u)h.push([a].concat(i.slice(c,c+u)));else h.push(i)}return h},gc=Math.PI/180,mc=Math.PI/2,vc=2*Math.PI,yc=Math.sqrt(3)/2,bc={},xc={},_c=[].join;function wc(t){var e=_c.call(t);if(xc[e])return xc[e];var n=t[0],r=t[1],i=t[2],o=t[3],a=t[4],u=t[5],s=t[6],c=t[7],l=c*a,f=-s*u,h=s*a,d=c*u,p=Math.cos(i),g=Math.sin(i),m=Math.cos(o),v=Math.sin(o),y=.5*(o-i),b=Math.sin(.5*y),x=8/3*b*b/Math.sin(y),_=n+p-x*g,w=r+g+x*p,O=n+m,k=r+v,A=O+x*v,E=k-x*m;return xc[e]=[l*_+f*w,h*_+d*w,l*A+f*E,h*A+d*E,l*O+f*k,h*O+d*k]}var Oc=["l",0,0,0,0,0,0,0];function kc(t,e){var n=Oc[0]=t[0];if("a"===n||"A"===n)Oc[1]=e*t[1],Oc[2]=e*t[2],Oc[3]=t[3],Oc[4]=t[4],Oc[5]=t[5],Oc[6]=e*t[6],Oc[7]=e*t[7];else for(var r=1,i=t.length;r<i;++r)Oc[r]=e*t[r];return Oc}var Ac=function(t,e,n,r,i){var o,a,u,s,c,l=null,f=0,h=0,d=0,p=0;null==n&&(n=0),null==r&&(r=0),null==i&&(i=1),t.beginPath&&t.beginPath();for(var g=0,m=e.length;g<m;++g){switch(o=e[g],1!==i&&(o=kc(o,i)),o[0]){case"l":f+=o[1],h+=o[2],t.lineTo(f+n,h+r);break;case"L":f=o[1],h=o[2],t.lineTo(f+n,h+r);break;case"h":f+=o[1],t.lineTo(f+n,h+r);break;case"H":f=o[1],t.lineTo(f+n,h+r);break;case"v":h+=o[1],t.lineTo(f+n,h+r);break;case"V":h=o[1],t.lineTo(f+n,h+r);break;case"m":f+=o[1],h+=o[2],t.moveTo(f+n,h+r);break;case"M":f=o[1],h=o[2],t.moveTo(f+n,h+r);break;case"c":a=f+o[5],u=h+o[6],d=f+o[3],p=h+o[4],t.bezierCurveTo(f+o[1]+n,h+o[2]+r,d+n,p+r,a+n,u+r),f=a,h=u;break;case"C":f=o[5],h=o[6],d=o[3],p=o[4],t.bezierCurveTo(o[1]+n,o[2]+r,d+n,p+r,f+n,h+r);break;case"s":a=f+o[3],u=h+o[4],d=2*f-d,p=2*h-p,t.bezierCurveTo(d+n,p+r,f+o[1]+n,h+o[2]+r,a+n,u+r),d=f+o[1],p=h+o[2],f=a,h=u;break;case"S":a=o[3],u=o[4],d=2*f-d,p=2*h-p,t.bezierCurveTo(d+n,p+r,o[1]+n,o[2]+r,a+n,u+r),f=a,h=u,d=o[1],p=o[2];break;case"q":a=f+o[3],u=h+o[4],d=f+o[1],p=h+o[2],t.quadraticCurveTo(d+n,p+r,a+n,u+r),f=a,h=u;break;case"Q":a=o[3],u=o[4],t.quadraticCurveTo(o[1]+n,o[2]+r,a+n,u+r),f=a,h=u,d=o[1],p=o[2];break;case"t":a=f+o[1],u=h+o[2],null===l[0].match(/[QqTt]/)?(d=f,p=h):"t"===l[0]?(d=2*f-s,p=2*h-c):"q"===l[0]&&(d=2*f-d,p=2*h-p),s=d,c=p,t.quadraticCurveTo(d+n,p+r,a+n,u+r),h=u,d=(f=a)+o[1],p=h+o[2];break;case"T":a=o[1],u=o[2],d=2*f-d,p=2*h-p,t.quadraticCurveTo(d+n,p+r,a+n,u+r),f=a,h=u;break;case"a":Ec(t,f+n,h+r,[o[1],o[2],o[3],o[4],o[5],o[6]+f+n,o[7]+h+r]),f+=o[6],h+=o[7];break;case"A":Ec(t,f+n,h+r,[o[1],o[2],o[3],o[4],o[5],o[6]+n,o[7]+r]),f=o[6],h=o[7];break;case"z":case"Z":t.closePath()}l=o}};function Ec(t,e,n,r){for(var i=function(t,e,n,r,i,o,a,u,s){var c=_c.call(arguments);if(bc[c])return bc[c];var l=a*gc,f=Math.sin(l),h=Math.cos(l),d=h*(u-t)*.5+f*(s-e)*.5,p=h*(s-e)*.5-f*(u-t)*.5,g=d*d/((n=Math.abs(n))*n)+p*p/((r=Math.abs(r))*r);g>1&&(n*=g=Math.sqrt(g),r*=g);var m=h/n,v=f/n,y=-f/r,b=h/r,x=m*u+v*s,_=y*u+b*s,w=m*t+v*e,O=y*t+b*e,k=1/((w-x)*(w-x)+(O-_)*(O-_))-.25;k<0&&(k=0);var A=Math.sqrt(k);o==i&&(A=-A);var E=.5*(x+w)-A*(O-_),j=.5*(_+O)+A*(w-x),S=Math.atan2(_-j,x-E),C=Math.atan2(O-j,w-E)-S;C<0&&1===o?C+=vc:C>0&&0===o&&(C-=vc);for(var M=Math.ceil(Math.abs(C/(mc+.001))),D=[],F=0;F<M;++F){var N=S+F*C/M,z=S+(F+1)*C/M;D[F]=[E,j,N,z,n,r,f,h]}return bc[c]=D}(r[5],r[6],r[0],r[1],r[3],r[4],r[2],e,n),o=0;o<i.length;++o){var a=wc(i[o]);t.bezierCurveTo(a[0],a[1],a[2],a[3],a[4],a[5])}}var jc={circle:{draw:function(t,e){var n=Math.sqrt(e)/2;t.moveTo(n,0),t.arc(0,0,n,0,vc)}},cross:{draw:function(t,e){var n=Math.sqrt(e)/2,r=n/2.5;t.moveTo(-n,-r),t.lineTo(-n,r),t.lineTo(-r,r),t.lineTo(-r,n),t.lineTo(r,n),t.lineTo(r,r),t.lineTo(n,r),t.lineTo(n,-r),t.lineTo(r,-r),t.lineTo(r,-n),t.lineTo(-r,-n),t.lineTo(-r,-r),t.closePath()}},diamond:{draw:function(t,e){var n=Math.sqrt(e)/2;t.moveTo(-n,0),t.lineTo(0,-n),t.lineTo(n,0),t.lineTo(0,n),t.closePath()}},square:{draw:function(t,e){var n=Math.sqrt(e),r=-n/2;t.rect(r,r,n,n)}},arrow:{draw:function(t,e){var n=Math.sqrt(e)/2,r=n/7,i=n/2.5,o=n/8;t.moveTo(-r,n),t.lineTo(r,n),t.lineTo(r,-o),t.lineTo(i,-o),t.lineTo(0,-n),t.lineTo(-i,-o),t.lineTo(-r,-o),t.closePath()}},wedge:{draw:function(t,e){var n=Math.sqrt(e)/2,r=yc*n,i=r-.5773502691896257*n,o=n/4;t.moveTo(0,-r-i),t.lineTo(-o,r-i),t.lineTo(o,r-i),t.closePath()}},triangle:{draw:function(t,e){var n=Math.sqrt(e)/2,r=yc*n,i=r-.5773502691896257*n;t.moveTo(0,-r-i),t.lineTo(-n,r-i),t.lineTo(n,r-i),t.closePath()}},"triangle-up":{draw:function(t,e){var n=Math.sqrt(e)/2,r=yc*n;t.moveTo(0,-r),t.lineTo(-n,r),t.lineTo(n,r),t.closePath()}},"triangle-down":{draw:function(t,e){var n=Math.sqrt(e)/2,r=yc*n;t.moveTo(0,r),t.lineTo(-n,-r),t.lineTo(n,-r),t.closePath()}},"triangle-right":{draw:function(t,e){var n=Math.sqrt(e)/2,r=yc*n;t.moveTo(r,0),t.lineTo(-r,-n),t.lineTo(-r,n),t.closePath()}},"triangle-left":{draw:function(t,e){var n=Math.sqrt(e)/2,r=yc*n;t.moveTo(-r,0),t.lineTo(r,-n),t.lineTo(r,n),t.closePath()}},stroke:{draw:function(t,e){var n=Math.sqrt(e)/2;t.moveTo(-n,0),t.lineTo(n,0)}}};function Sc(t){return jc.hasOwnProperty(t)?jc[t]:function(t){if(!Cc.hasOwnProperty(t)){var e=pc(t);Cc[t]={draw:function(t,n){Ac(t,e,0,0,Math.sqrt(n)/2)}}}return Cc[t]}(t)}var Cc={};function Mc(t){return t.x}function Dc(t){return t.y}function Fc(t){return t.width}function Nc(t){return t.height}function zc(t){return function(){return t}}var Tc=function(){var t=Mc,e=Dc,n=Fc,r=Nc,i=zc(0),o=null;function a(a,u,s){var c,l=null!=u?u:+t.call(this,a),f=null!=s?s:+e.call(this,a),h=+n.call(this,a),d=+r.call(this,a),p=+i.call(this,a);if(o||(o=c=ns()),p<=0)o.rect(l,f,h,d);else{var g=l+h,m=f+d;o.moveTo(l+p,f),o.lineTo(g-p,f),o.quadraticCurveTo(g,f,g,f+p),o.lineTo(g,m-p),o.quadraticCurveTo(g,m,g-p,m),o.lineTo(l+p,m),o.quadraticCurveTo(l,m,l,m-p),o.lineTo(l,f+p),o.quadraticCurveTo(l,f,l+p,f),o.closePath()}if(c)return o=null,c+""||null}return a.x=function(e){return arguments.length?(t="function"==typeof e?e:zc(+e),a):t},a.y=function(t){return arguments.length?(e="function"==typeof t?t:zc(+t),a):e},a.width=function(t){return arguments.length?(n="function"==typeof t?t:zc(+t),a):n},a.height=function(t){return arguments.length?(r="function"==typeof t?t:zc(+t),a):r},a.cornerRadius=function(t){return arguments.length?(i="function"==typeof t?t:zc(+t),a):i},a.context=function(t){return arguments.length?(o=null==t?null:t,a):o},a},$c=function(){var t,e,n,r,i,o,a,u,s=null;function c(t,e,n){var r=n/2;if(i){var c=a-e,l=t-o;if(c||l){var f=Math.sqrt(c*c+l*l),h=(c/=f)*u,d=(l/=f)*u,p=Math.atan2(l,c);s.moveTo(o-h,a-d),s.lineTo(t-c*r,e-l*r),s.arc(t,e,r,p-Math.PI,p),s.lineTo(o+h,a+d),s.arc(o,a,u,p,p+Math.PI)}else s.arc(t,e,r,0,vc);s.closePath()}else i=1;o=t,a=e,u=r}function l(o){var a,u,l,f=o.length,h=!1;for(null==s&&(s=l=ns()),a=0;a<=f;++a)!(a<f&&r(u=o[a],a,o))===h&&(h=!h)&&(i=0),h&&c(+t(u,a,o),+e(u,a,o),+n(u,a,o));if(l)return s=null,l+""||null}return l.x=function(e){return arguments.length?(t=e,l):t},l.y=function(t){return arguments.length?(e=t,l):e},l.size=function(t){return arguments.length?(n=t,l):n},l.defined=function(t){return arguments.length?(r=t,l):r},l.context=function(t){return arguments.length?(s=null==t?null:t,l):s},l};function Rc(t){return t.x||0}function Bc(t){return t.y||0}function Pc(t){return t.cornerRadius||0}function Lc(t){return!(!1===t.defined)}var Uc=function(){var t=ms,e=vs,n=rs(0),r=null,i=ys,o=bs,a=xs,u=null;function s(){var s,c,l,f=+t.apply(this,arguments),h=+e.apply(this,arguments),d=i.apply(this,arguments)-ds,p=o.apply(this,arguments)-ds,g=is(p-d),m=p>d;if(u||(u=s=ns()),h<f&&(c=h,h=f,f=c),h>fs)if(g>ps-fs)u.moveTo(h*as(d),h*cs(d)),u.arc(0,0,h,d,p,!m),f>fs&&(u.moveTo(f*as(p),f*cs(p)),u.arc(0,0,f,p,d,m));else{var v,y,b=d,x=p,_=d,w=p,O=g,k=g,A=a.apply(this,arguments)/2,E=A>fs&&(r?+r.apply(this,arguments):ls(f*f+h*h)),j=ss(is(h-f)/2,+n.apply(this,arguments)),S=j,C=j;if(E>fs){var M=gs(E/f*cs(A)),D=gs(E/h*cs(A));(O-=2*M)>fs?(_+=M*=m?1:-1,w-=M):(O=0,_=w=(d+p)/2),(k-=2*D)>fs?(b+=D*=m?1:-1,x-=D):(k=0,b=x=(d+p)/2)}var F=h*as(b),N=h*cs(b),z=f*as(w),T=f*cs(w);if(j>fs){var $,R=h*as(x),B=h*cs(x),P=f*as(_),L=f*cs(_);if(g<hs&&($=function(t,e,n,r,i,o,a,u){var s=n-t,c=r-e,l=a-i,f=u-o,h=f*s-l*c;if(!(h*h<fs))return[t+(h=(l*(e-o)-f*(t-i))/h)*s,e+h*c]}(F,N,P,L,R,B,z,T))){var U=F-$[0],q=N-$[1],I=R-$[0],W=B-$[1],H=1/cs(((l=(U*I+q*W)/(ls(U*U+q*q)*ls(I*I+W*W)))>1?0:l<-1?hs:Math.acos(l))/2),G=ls($[0]*$[0]+$[1]*$[1]);S=ss(j,(f-G)/(H-1)),C=ss(j,(h-G)/(H+1))}}k>fs?C>fs?(v=_s(P,L,F,N,h,C,m),y=_s(R,B,z,T,h,C,m),u.moveTo(v.cx+v.x01,v.cy+v.y01),C<j?u.arc(v.cx,v.cy,C,os(v.y01,v.x01),os(y.y01,y.x01),!m):(u.arc(v.cx,v.cy,C,os(v.y01,v.x01),os(v.y11,v.x11),!m),u.arc(0,0,h,os(v.cy+v.y11,v.cx+v.x11),os(y.cy+y.y11,y.cx+y.x11),!m),u.arc(y.cx,y.cy,C,os(y.y11,y.x11),os(y.y01,y.x01),!m))):(u.moveTo(F,N),u.arc(0,0,h,b,x,!m)):u.moveTo(F,N),f>fs&&O>fs?S>fs?(v=_s(z,T,R,B,f,-S,m),y=_s(F,N,P,L,f,-S,m),u.lineTo(v.cx+v.x01,v.cy+v.y01),S<j?u.arc(v.cx,v.cy,S,os(v.y01,v.x01),os(y.y01,y.x01),!m):(u.arc(v.cx,v.cy,S,os(v.y01,v.x01),os(v.y11,v.x11),!m),u.arc(0,0,f,os(v.cy+v.y11,v.cx+v.x11),os(y.cy+y.y11,y.cx+y.x11),m),u.arc(y.cx,y.cy,S,os(y.y11,y.x11),os(y.y01,y.x01),!m))):u.arc(0,0,f,w,_,m):u.lineTo(z,T)}else u.moveTo(0,0);if(u.closePath(),s)return u=null,s+""||null}return s.centroid=function(){var n=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-hs/2;return[as(r)*n,cs(r)*n]},s.innerRadius=function(e){return arguments.length?(t="function"==typeof e?e:rs(+e),s):t},s.outerRadius=function(t){return arguments.length?(e="function"==typeof t?t:rs(+t),s):e},s.cornerRadius=function(t){return arguments.length?(n="function"==typeof t?t:rs(+t),s):n},s.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:rs(+t),s):r},s.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:rs(+t),s):i},s.endAngle=function(t){return arguments.length?(o="function"==typeof t?t:rs(+t),s):o},s.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:rs(+t),s):a},s.context=function(t){return arguments.length?(u=null==t?null:t,s):u},s}().startAngle(function(t){return t.startAngle||0}).endAngle(function(t){return t.endAngle||0}).padAngle(function(t){return t.padAngle||0}).innerRadius(function(t){return t.innerRadius||0}).outerRadius(function(t){return t.outerRadius||0}).cornerRadius(Pc),qc=js().x(Rc).y1(Bc).y0(function(t){return(t.y||0)+(t.height||0)}).defined(Lc),Ic=js().y(Bc).x1(Rc).x0(function(t){return(t.x||0)+(t.width||0)}).defined(Lc),Wc=Es().x(Rc).y(Bc).defined(Lc),Hc=Tc().x(Rc).y(Bc).width(function(t){return t.width||0}).height(function(t){return t.height||0}).cornerRadius(Pc),Gc=function(){var t=rs(Ms),e=rs(64),n=null;function r(){var r;if(n||(n=r=ns()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),r)return n=null,r+""||null}return r.type=function(e){return arguments.length?(t="function"==typeof e?e:rs(e),r):t},r.size=function(t){return arguments.length?(e="function"==typeof t?t:rs(+t),r):e},r.context=function(t){return arguments.length?(n=null==t?null:t,r):n},r}().type(function(t){return Sc(t.shape||"circle")}).size(function(t){return null==t.size?64:t.size}),Yc=$c().x(Rc).y(Bc).defined(Lc).size(function(t){return t.size||1});function Vc(t,e,n,r){return Hc.context(t)(e,n,r)}var Xc,Jc=function(t,e){return e.stroke&&0!==e.opacity&&0!==e.strokeOpacity&&t.expand(null!=e.strokeWidth?+e.strokeWidth:1),t},Zc=vc-1e-8;function Qc(t){return Xc=t,Qc}function Kc(){}function tl(t,e){Xc.add(t,e)}Qc.beginPath=Kc,Qc.closePath=Kc,Qc.moveTo=tl,Qc.lineTo=tl,Qc.rect=function(t,e,n,r){tl(t,e),tl(t+n,e+r)},Qc.quadraticCurveTo=function(t,e,n,r){tl(t,e),tl(n,r)},Qc.bezierCurveTo=function(t,e,n,r,i,o){tl(t,e),tl(n,r),tl(i,o)},Qc.arc=function(t,e,n,r,i,o){if(Math.abs(i-r)>Zc)return tl(t-n,e-n),void tl(t+n,e+n);var a,u,s,c,l=1/0,f=-1/0,h=1/0,d=-1/0;function p(t){s=n*Math.cos(t),c=n*Math.sin(t),s<l&&(l=s),s>f&&(f=s),c<h&&(h=c),c>d&&(d=c)}if(p(r),p(i),i!==r)if((r%=vc)<0&&(r+=vc),(i%=vc)<0&&(i+=vc),i<r&&(o=!o,a=r,r=i,i=a),o)for(i-=vc,a=r-r%mc,u=0;u<4&&a>i;++u,a-=mc)p(a);else for(a=r-r%mc+mc,u=0;u<4&&a<i;++u,a+=mc)p(a);tl(t+l,e+h),tl(t+f,e+d)};var el=(el=Hu(1,1))?el.getContext("2d"):null;const nl=new Tu;function rl(t){return function(e,n){if(!el)return!0;t(el,e),nl.clear().union(e.bounds).intersect(n).round();const{x1:r,y1:i,x2:o,y2:a}=nl;for(let t=i;t<=a;++t)for(let e=r;e<=o;++e)if(el.isPointInPath(e,t))return!0;return!1}}function il(t,e){return e.contains(t.x||0,t.y||0)}function ol(t,e){const n=t.x||0,r=t.y||0,i=t.width||0,o=t.height||0;return e.intersects(nl.set(n,r,n+i,r+o))}function al(t,e){const n=t.x||0,r=t.y||0;return ul(e,n,r,null!=t.x2?t.x2:n,null!=t.y2?t.y2:r)}function ul(t,e,n,r,i){const{x1:o,y1:a,x2:u,y2:s}=t,c=r-e,l=i-n;let f,h,d,p,g=0,m=1;for(p=0;p<4;++p){if(0===p&&(f=-c,h=-(o-e)),1===p&&(f=c,h=u-e),2===p&&(f=-l,h=-(a-n)),3===p&&(f=l,h=s-n),Math.abs(f)<1e-10&&h<0)return!1;if(d=h/f,f<0){if(d>m)return!1;d>g&&(g=d)}else if(f>0){if(d<g)return!1;d<m&&(m=d)}}return!0}var sl=function(t,e,n){return Pu(n)?function(t,e,n){const r=n.width(),i=n.height(),o=e.stops,a=o.length,u="radial"===e.gradient?t.createRadialGradient(n.x1+(e.x1||.5)*r,n.y1+(e.y1||.5)*i,Math.max(r,i)*(e.r1||0),n.x1+(e.x2||.5)*r,n.y1+(e.y2||.5)*i,Math.max(r,i)*(e.r2||.5)):t.createLinearGradient(n.x1+(e.x1||0)*r,n.y1+(e.y1||0)*i,n.x1+(e.x2||1)*r,n.y1+(e.y2||0)*i);for(let t=0;t<a;++t)u.addColorStop(o[t].offset,o[t].color);return u}(t,n,e.bounds):n},cl=function(t,e,n){return(n*=null==e.fillOpacity?1:e.fillOpacity)>0&&(t.globalAlpha=n,t.fillStyle=sl(t,e,e.fill),!0)},ll=[],fl=function(t,e,n){var r=null!=(r=e.strokeWidth)?r:1;return!(r<=0)&&((n*=null==e.strokeOpacity?1:e.strokeOpacity)>0&&(t.globalAlpha=n,t.strokeStyle=sl(t,e,e.stroke),t.lineWidth=r,t.lineCap=e.strokeCap||"butt",t.lineJoin=e.strokeJoin||"miter",t.miterLimit=e.strokeMiterLimit||10,t.setLineDash&&(t.setLineDash(e.strokeDash||ll),t.lineDashOffset=e.strokeDashOffset||0),!0))};function hl(t,e){return t.zindex-e.zindex||t.index-e.index}function dl(t){if(!t.zdirty)return t.zitems;var e,n,r,i=t.items,o=[];for(n=0,r=i.length;n<r;++n)(e=i[n]).index=n,e.zindex&&o.push(e);return t.zdirty=!1,t.zitems=o.sort(hl)}function pl(t,e){var n,r,i=t.items;if(i&&i.length){var o=dl(t);if(o&&o.length){for(n=0,r=i.length;n<r;++n)i[n].zindex||e(i[n]);i=o}for(n=0,r=i.length;n<r;++n)e(i[n])}}function gl(t,e){var n,r,i=t.items;if(!i||!i.length)return null;var o=dl(t);for(o&&o.length&&(i=o),r=i.length;--r>=0;)if(n=e(i[r]))return n;if(i===o)for(r=(i=t.items).length;--r>=0;)if(!i[r].zindex&&(n=e(i[r])))return n;return null}function ml(t){return function(e,n,r){pl(n,function(n){r&&!r.intersects(n.bounds)||vl(t,e,n,n)})}}function vl(t,e,n,r){var i=null==n.opacity?1:n.opacity;0!==i&&(t(e,r)||(n.fill&&cl(e,n,i)&&e.fill(),n.stroke&&fl(e,n,i)&&e.stroke()))}function yl(t){return t=t||Mt.db,function(e,n,r,i,o,a){return r*=e.pixelRatio,i*=e.pixelRatio,gl(n,function(n){var u=n.bounds;if((!u||u.contains(o,a))&&u)return t(e,n,r,i,o,a)?n:void 0})}}function bl(t,e){return function(n,r,i,o){var a,u,s=Array.isArray(r)?r[0]:r,c=null==e?s.fill:e,l=s.stroke&&n.isPointInStroke;return l&&(a=s.strokeWidth,u=s.strokeCap,n.lineWidth=null!=a?a:1,n.lineCap=null!=u?u:"butt"),!t(n,r)&&(c&&n.isPointInPath(i,o)||l&&n.isPointInStroke(i,o))}}function xl(t){return yl(bl(t))}function _l(t,e){return"translate("+t+","+e+")"}function wl(t){return"rotate("+t+")"}function Ol(t){return _l(t.x||0,t.y||0)}var kl=function(t,e,n){function r(t,n){var r=n.x||0,i=n.y||0,o=n.angle||0;t.translate(r,i),o&&t.rotate(o*=gc),t.beginPath(),e(t,n),o&&t.rotate(-o),t.translate(-r,-i)}return{type:t,tag:"path",nested:!1,attr:function(t,n){t("transform",function(t){return _l(t.x||0,t.y||0)+(t.angle?" "+wl(t.angle):"")}(n)),t("d",e(null,n))},bound:function(t,n){var r=n.x||0,i=n.y||0;return e(Qc(t),n),Jc(t,n).translate(r,i),n.angle&&t.rotate(n.angle*gc,r,i),t},draw:ml(r),pick:xl(r),isect:n||rl(r)}},Al=kl("arc",function(t,e){return Uc.context(t)(e)});var El=function(t,e,n){function r(t,n){t.beginPath(),e(t,n)}var i,o=bl(r);return{type:t,tag:"path",nested:!0,attr:function(t,n){var r=n.mark.items;r.length&&t("d",e(null,r))},bound:function(t,n){var r=n.items;return 0===r.length?t:(e(Qc(t),r),Jc(t,r[0]))},draw:(i=r,function(t,e,n){!e.items.length||n&&!n.intersects(e.bounds)||vl(i,t,e.items[0],e.items)}),pick:function(t,e,n,r,i,a){var u=e.items,s=e.bounds;return!u||!u.length||s&&!s.contains(i,a)?null:(n*=t.pixelRatio,r*=t.pixelRatio,o(t,u,n,r)?u[0]:null)},isect:il,tip:n}},jl=El("area",function(t,e){var n=e[0],r=n.interpolate||"linear";return("horizontal"===n.orient?Ic:qc).curve(fc(r,n.orient,n.tension)).context(t)(e)},function(t,e){for(var n,r,i="horizontal"===t[0].orient?e[1]:e[0],o="horizontal"===t[0].orient?"y":"x",a=t.length,u=1/0;--a>=0;)!1!==t[a].defined&&(r=Math.abs(t[a][o]-i))<u&&(u=r,n=t[a]);return n}),Sl=1;function Cl(){Sl=1}var Ml=function(t,e,n){var r=e.clip,i=t._defs,o=e.clip_id||(e.clip_id="clip"+Sl++),a=i.clipping[o]||(i.clipping[o]={id:o});return Object(Mt.C)(r)?a.path=r(null):(a.width=n.width||0,a.height=n.height||0),"url(#"+o+")"},Dl=.5;function Fl(t,e){var n=e.stroke?Dl:0;t.beginPath(),Vc(t,e,n,n)}var Nl=bl(Fl);var zl={type:"group",tag:"g",nested:!1,attr:function(t,e){t("transform",Ol(e))},bound:function(t,e){if(!e.clip&&e.items)for(var n=e.items,r=0,i=n.length;r<i;++r)t.union(n[r].bounds);return(e.clip||e.width||e.height)&&!e.noBound&&t.add(0,0).add(e.width||0,e.height||0),Jc(t,e),t.translate(e.x||0,e.y||0)},draw:function(t,e,n){var r=this;pl(e,function(e){var i,o=e.x||0,a=e.y||0,u=e.width||0,s=e.height||0;t.save(),t.translate(o,a),(e.stroke||e.fill)&&(i=null==e.opacity?1:e.opacity)>0&&(Fl(t,e),e.fill&&cl(t,e,i)&&t.fill(),e.stroke&&fl(t,e,i)&&t.stroke()),e.clip&&(t.beginPath(),t.rect(0,0,u,s),t.clip()),n&&n.translate(-o,-a),pl(e,function(e){r.draw(t,e,n)}),n&&n.translate(o,a),t.restore()})},pick:function(t,e,n,r,i,o){if(e.bounds&&!e.bounds.contains(i,o)||!e.items)return null;var a=this,u=n*t.pixelRatio,s=r*t.pixelRatio;return gl(e,function(c){var l,f,h,d;if(!(d=c.bounds)||d.contains(i,o))return f=c.x||0,h=c.y||0,t.save(),t.translate(f,h),f=i-f,h=o-h,!(l=gl(c,function(t){return function(t,e,n){return(!1!==t.interactive||"group"===t.marktype)&&t.bounds&&t.bounds.contains(e,n)}(t,f,h)?a.pick(t,n,r,f,h):null}))&&!1!==e.interactive&&(c.fill||c.stroke)&&Nl(t,c,u,s)&&(l=c),t.restore(),l||null})},isect:ol,background:function(t,e){var n=e.stroke?Dl:0;t("class","background"),t("d",Vc(null,e,n,n))},foreground:function(t,e,n){t("clip-path",e.clip?Ml(n,e,e):null)}};function Tl(t,e){var n=t.image;return n&&n.url===t.url||(n={loaded:!1,width:0,height:0},e.loadImage(t.url).then(function(e){t.image=e,t.image.url=t.url})),n}function $l(t,e){return"center"===t?e/2:"right"===t?e:0}function Rl(t,e){return"middle"===t?e/2:"bottom"===t?e:0}var Bl={type:"image",tag:"image",nested:!1,attr:function(t,e,n){var r=Tl(e,n),i=e.x||0,o=e.y||0,a=(null!=e.width?e.width:r.width)||0,u=(null!=e.height?e.height:r.height)||0,s=!1===e.aspect?"none":"xMidYMid";i-=$l(e.align,a),o-=Rl(e.baseline,u),t("href",r.src||"","http://www.w3.org/1999/xlink","xlink:href"),t("transform",_l(i,o)),t("width",a),t("height",u),t("preserveAspectRatio",s)},bound:function(t,e){var n=e.image,r=e.x||0,i=e.y||0,o=(null!=e.width?e.width:n&&n.width)||0,a=(null!=e.height?e.height:n&&n.height)||0;return r-=$l(e.align,o),i-=Rl(e.baseline,a),t.set(r,i,r+o,i+a)},draw:function(t,e,n){var r=this;pl(e,function(e){if(!n||n.intersects(e.bounds)){var i,o,a,u,s=Tl(e,r),c=e.x||0,l=e.y||0,f=(null!=e.width?e.width:s.width)||0,h=(null!=e.height?e.height:s.height)||0;c-=$l(e.align,f),l-=Rl(e.baseline,h),!1!==e.aspect&&(o=s.width/s.height,a=e.width/e.height,o==o&&a==a&&o!==a&&(a<o?(l+=(h-(u=f/o))/2,h=u):(c+=(f-(u=h*o))/2,f=u))),s.loaded&&(t.globalAlpha=null!=(i=e.opacity)?i:1,t.drawImage(s,c,l,f,h))}})},pick:yl(),isect:Mt.db,get:Tl,xOffset:$l,yOffset:Rl},Pl=El("line",function(t,e){var n=e[0],r=n.interpolate||"linear";return Wc.curve(fc(r,n.orient,n.tension)).context(t)(e)},function(t,e){for(var n,r,i=Math.pow(t[0].strokeWidth||1,2),o=t.length;--o>=0;)if(!1!==t[o].defined&&(n=t[o].x-e[0])*n+(r=t[o].y-e[1])*r<i)return t[o];return null});function Ll(t,e){var n=e.path;if(null==n)return!0;var r=e.pathCache;r&&r.path===n||((e.pathCache=r=pc(n)).path=n),Ac(t,r,e.x,e.y)}var Ul={type:"path",tag:"path",nested:!1,attr:function(t,e){t("transform",Ol(e)),t("d",e.path)},bound:function(t,e){return Ll(Qc(t),e)?t.set(0,0,0,0):Jc(t,e)},draw:ml(Ll),pick:xl(Ll),isect:rl(Ll)};function ql(t,e){t.beginPath(),Vc(t,e)}var Il={type:"rect",tag:"path",nested:!1,attr:function(t,e){t("d",Vc(null,e))},bound:function(t,e){var n,r;return Jc(t.set(n=e.x||0,r=e.y||0,n+e.width||0,r+e.height||0),e)},draw:ml(ql),pick:xl(ql),isect:ol};function Wl(t,e,n){var r,i,o,a;return!(!e.stroke||!fl(t,e,n))&&(r=e.x||0,i=e.y||0,o=null!=e.x2?e.x2:r,a=null!=e.y2?e.y2:i,t.beginPath(),t.moveTo(r,i),t.lineTo(o,a),!0)}var Hl,Gl={type:"rule",tag:"line",nested:!1,attr:function(t,e){t("transform",Ol(e)),t("x2",null!=e.x2?e.x2-(e.x||0):0),t("y2",null!=e.y2?e.y2-(e.y||0):0)},bound:function(t,e){var n,r;return Jc(t.set(n=e.x||0,r=e.y||0,null!=e.x2?e.x2:n,null!=e.y2?e.y2:r),e)},draw:function(t,e,n){pl(e,function(e){if(!n||n.intersects(e.bounds)){var r=null==e.opacity?1:e.opacity;r&&Wl(t,e,r)&&t.stroke()}})},pick:yl(function(t,e,n,r){return!!t.isPointInStroke&&Wl(t,e,1)&&t.isPointInStroke(n,r)}),isect:al},Yl=kl("shape",function(t,e){return(e.mark.shape||e.shape).context(t)(e)}),Vl=kl("symbol",function(t,e){return Gc.context(t)(e)},il),Xl={height:tf,measureWidth:Ql,estimateWidth:Jl,width:Jl,canvas:ef};function Jl(t){return Hl=tf(t),Zl(nf(t))}function Zl(t){return~~(.8*t.length*Hl)}function Ql(t){return tf(t)<=0?0:(el.font=of(t),Kl(nf(t)))}function Kl(t){return el.measureText(t).width}function tf(t){return null!=t.fontSize?t.fontSize:11}function ef(t){Xl.width=t&&el?Ql:Jl}function nf(t){var e=t.text;return null==e?"":t.limit>0?function(t){var e,n=+t.limit,r=t.text+"";Xl.width===Ql?(el.font=of(t),e=Kl):(Hl=tf(t),e=Zl);if(e(r)<n)return r;var i,o=t.ellipsis||"…",a="rtl"===t.dir,u=0,s=r.length;if(n-=e(o),a){for(;u<s;)i=u+s>>>1,e(r.slice(i))>n?u=i+1:s=i;return o+r.slice(u)}for(;u<s;)i=1+(u+s>>>1),e(r.slice(0,i))<n?u=i:s=i-1;return r.slice(0,u)+o}(t):e+""}function rf(t,e){var n=t.font;return(e&&n?String(n).replace(/"/g,"'"):n)||"sans-serif"}function of(t,e){return(t.fontStyle?t.fontStyle+" ":"")+(t.fontVariant?t.fontVariant+" ":"")+(t.fontWeight?t.fontWeight+" ":"")+tf(t)+"px "+rf(t,e)}function af(t){var e=t.baseline,n=tf(t);return Math.round("top"===e?.79*n:"middle"===e?.3*n:"bottom"===e?-.21*n:0)}ef(!0);var uf={left:"start",center:"middle",right:"end"},sf=new Tu;function cf(t){var e,n=t.x||0,r=t.y||0,i=t.radius||0;return i&&(e=(t.theta||0)-mc,n+=i*Math.cos(e),r+=i*Math.sin(e)),sf.x1=n,sf.y1=r,sf}function lf(t,e,n){var r,i=Xl.height(e),o=e.align,a=cf(e),u=a.x1,s=a.y1,c=e.dx||0,l=(e.dy||0)+af(e)-Math.round(.8*i);if(r=Xl.width(e),"center"===o?c-=r/2:"right"===o&&(c-=r),t.set(c+=u,l+=s,c+r,l+i),e.angle&&!n)t.rotate(e.angle*gc,u,s);else if(2===n)return t.rotatedPoints(e.angle*gc,u,s);return t}var ff={arc:Al,area:jl,group:zl,image:Bl,line:Pl,path:Ul,rect:Il,rule:Gl,shape:Yl,symbol:Vl,text:{type:"text",tag:"text",nested:!1,attr:function(t,e){var n,r=e.dx||0,i=(e.dy||0)+af(e),o=cf(e),a=o.x1,u=o.y1,s=e.angle||0;t("text-anchor",uf[e.align]||"start"),s?(n=_l(a,u)+" "+wl(s),(r||i)&&(n+=" "+_l(r,i))):n=_l(a+r,u+i),t("transform",n)},bound:lf,draw:function(t,e,n){pl(e,function(e){var r,i,o,a,u;n&&!n.intersects(e.bounds)||(u=nf(e))&&(0===(r=null==e.opacity?1:e.opacity)||e.fontSize<=0||(t.font=of(e),t.textAlign=e.align||"left",o=(i=cf(e)).x1,a=i.y1,e.angle&&(t.save(),t.translate(o,a),t.rotate(e.angle*gc),o=a=0),o+=e.dx||0,a+=(e.dy||0)+af(e),e.fill&&cl(t,e,r)&&t.fillText(u,o,a),e.stroke&&fl(t,e,r)&&t.strokeText(u,o,a),e.angle&&t.restore()))})},pick:yl(function(t,e,n,r,i,o){if(e.fontSize<=0)return!1;if(!e.angle)return!0;var a=cf(e),u=a.x1,s=a.y1,c=lf(sf,e,1),l=-e.angle*gc,f=Math.cos(l),h=Math.sin(l),d=f*i-h*o+(u-f*u+h*s),p=h*i+f*o+(s-h*u-f*s);return c.contains(d,p)}),isect:function(t,e){var n=lf(sf,t,2);return ul(e,n[0],n[1],n[2],n[3])||ul(e,n[0],n[1],n[4],n[5])||ul(e,n[4],n[5],n[6],n[7])||ul(e,n[2],n[3],n[6],n[7])}},trail:El("trail",function(t,e){return Yc.context(t)(e)},function(t,e){for(var n,r,i=t.length;--i>=0;)if(!1!==t[i].defined&&(n=t[i].x-e[0])*n+(r=t[i].y-e[1])*r<(n=t[i].size||1)*n)return t[i];return null})},hf=function(t,e,n){var r=ff[t.mark.marktype],i=e||r.bound;return r.nested&&(t=t.mark),i(t.bounds||(t.bounds=new Tu),t,n)},df={mark:null},pf=function(t,e,n){var r,i,o,a,u=ff[t.marktype],s=u.bound,c=t.items,l=c&&c.length;if(u.nested)return l?o=c[0]:(df.mark=t,o=df),a=hf(o,s,n),e=e&&e.union(a)||a;if(e=e||t.bounds&&t.bounds.clear()||new Tu,l)for(r=0,i=c.length;r<i;++r)e.union(hf(c[r],s,n));return t.bounds=e},gf=["marktype","name","role","interactive","clip","items","zindex","x","y","width","height","align","baseline","fill","fillOpacity","opacity","stroke","strokeOpacity","strokeWidth","strokeCap","strokeDash","strokeDashOffset","startAngle","endAngle","innerRadius","outerRadius","cornerRadius","padAngle","interpolate","tension","orient","defined","url","path","x2","y2","size","shape","text","angle","theta","radius","dx","dy","font","fontSize","fontWeight","fontStyle","fontVariant"];function mf(t,e){return JSON.stringify(t,gf,e)}function vf(t){return function t(e){var n,r,i,o=e.marktype,a=e.items;if(a)for(r=0,i=a.length;r<i;++r)n=o?"mark":"group",a[r][n]=e,a[r].zindex&&(a[r][n].zdirty=!0),"group"===(o||n)&&t(a[r]);o&&pf(e);return e}("string"==typeof t?JSON.parse(t):t)}function yf(t){arguments.length?this.root=vf(t):(this.root=xf({marktype:"group",name:"root",role:"frame"}),this.root.items=[new Wu(this.root)])}var bf=yf.prototype;function xf(t,e){return{bounds:new Tu,clip:!!t.clip,group:e,interactive:!1!==t.interactive,items:[],marktype:t.marktype,name:t.name||void 0,role:t.role||void 0,zindex:t.zindex||0}}function _f(t,e,n){return!t&&"undefined"!=typeof document&&document.createElement&&(t=document),t?n?t.createElementNS(n,e):t.createElement(e):null}function wf(t,e){e=e.toLowerCase();for(var n=t.childNodes,r=0,i=n.length;r<i;++r)if(n[r].tagName.toLowerCase()===e)return n[r]}function Of(t,e,n,r){var i,o=t.childNodes[e];return o&&o.tagName.toLowerCase()===n.toLowerCase()||(i=o||null,o=_f(t.ownerDocument,n,r),t.insertBefore(o,i)),o}function kf(t,e){for(var n=t.childNodes,r=n.length;r>e;)t.removeChild(n[--r]);return t}function Af(t){return"mark-"+t.marktype+(t.role?" role-"+t.role:"")+(t.name?" "+t.name:"")}bf.toJSON=function(t){return mf(this.root,t||0)},bf.mark=function(t,e,n){var r=xf(t,e=e||this.root.items[0]);return e.items[n]=r,r.zindex&&(r.group.zdirty=!0),r};var Ef=function(t,e){var n=e.getBoundingClientRect();return[t.clientX-n.left-(e.clientLeft||0),t.clientY-n.top-(e.clientTop||0)]};function jf(t,e){this._active=null,this._handlers={},this._loader=t||ri(),this._tooltip=e||Sf}function Sf(t,e,n,r){t.element().setAttribute("title",r||"")}var Cf=jf.prototype;function Mf(t){this._el=null,this._bgcolor=null,this._loader=new Yu(t)}Cf.initialize=function(t,e,n){return this._el=t,this._obj=n||null,this.origin(e)},Cf.element=function(){return this._el},Cf.canvas=function(){return this._el&&this._el.firstChild},Cf.origin=function(t){return arguments.length?(this._origin=t||[0,0],this):this._origin.slice()},Cf.scene=function(t){return arguments.length?(this._scene=t,this):this._scene},Cf.on=function(){},Cf.off=function(){},Cf._handlerIndex=function(t,e,n){for(var r=t?t.length:0;--r>=0;)if(t[r].type===e&&(!n||t[r].handler===n))return r;return-1},Cf.handlers=function(t){var e,n=this._handlers,r=[];if(t)r.push.apply(r,n[this.eventName(t)]);else for(e in n)r.push.apply(r,n[e]);return r},Cf.eventName=function(t){var e=t.indexOf(".");return e<0?t:t.slice(0,e)},Cf.handleHref=function(t,e,n){this._loader.sanitize(n,{context:"href"}).then(function(e){var n=new MouseEvent(t.type,t),r=_f(null,"a");for(var i in e)r.setAttribute(i,e[i]);r.dispatchEvent(n)}).catch(function(){})},Cf.handleTooltip=function(t,e,n){if(e&&null!=e.tooltip){e=function(t,e,n,r){var i,o,a=t&&t.mark;if(a&&(i=ff[a.marktype]).tip){for((o=Ef(e,n))[0]-=r[0],o[1]-=r[1];t=t.mark.group;)o[0]-=t.x||0,o[1]-=t.y||0;t=i.tip(a.items,o)}return t}(e,t,this.canvas(),this._origin);var r=n&&e&&e.tooltip||null;this._tooltip.call(this._obj,this,t,e,r)}},Cf.getItemBoundingClientRect=function(t){if(e=this.canvas()){for(var e,n=e.getBoundingClientRect(),r=this._origin,i=t.bounds,o=i.x1+r[0]+n.left,a=i.y1+r[1]+n.top,u=i.width(),s=i.height();t.mark&&(t=t.mark.group);)o+=t.x||0,a+=t.y||0;return{x:o,y:a,width:u,height:s,left:o,top:a,right:o+u,bottom:a+s}}};var Df=Mf.prototype;Df.initialize=function(t,e,n,r,i){return this._el=t,this.resize(e,n,r,i)},Df.element=function(){return this._el},Df.canvas=function(){return this._el&&this._el.firstChild},Df.background=function(t){return 0===arguments.length?this._bgcolor:(this._bgcolor=t,this)},Df.resize=function(t,e,n,r){return this._width=t,this._height=e,this._origin=n||[0,0],this._scale=r||1,this},Df.dirty=function(){},Df.render=function(t){var e=this;return e._call=function(){e._render(t)},e._call(),e._call=null,e},Df._render=function(){},Df.renderAsync=function(t){var e=this.render(t);return this._ready?this._ready.then(function(){return e}):Promise.resolve(e)},Df._load=function(t,e){var n=this,r=n._loader[t](e);if(!n._ready){var i=n._call;n._ready=n._loader.ready().then(function(t){t&&i(),n._ready=null})}return r},Df.sanitizeURL=function(t){return this._load("sanitizeURL",t)},Df.loadImage=function(t){return this._load("loadImage",t)};var Ff="mouseout";function Nf(t,e){jf.call(this,t,e),this._down=null,this._touch=null,this._first=!0}var zf=Object(Mt.x)(Nf,jf);function Tf(t,e,n){return function(r){var i=this._active,o=this.pickEvent(r);o===i?this.fire(t,r):(i&&i.exit||this.fire(n,r),this._active=o,this.fire(e,r),this.fire(t,r))}}function $f(t){return function(e){this.fire(t,e),this._active=null}}zf.initialize=function(t,e,n){var r=this._canvas=t&&wf(t,"canvas");if(r){var i=this;this.events.forEach(function(t){r.addEventListener(t,function(e){zf[t]?zf[t].call(i,e):i.fire(t,e)})})}return jf.prototype.initialize.call(this,t,e,n)},zf.canvas=function(){return this._canvas},zf.context=function(){return this._canvas.getContext("2d")},zf.events=["keydown","keypress","keyup","dragenter","dragleave","dragover","mousedown","mouseup","mousemove","mouseout","mouseover","click","dblclick","wheel","mousewheel","touchstart","touchmove","touchend"],zf.DOMMouseScroll=function(t){this.fire("mousewheel",t)},zf.mousemove=Tf("mousemove","mouseover","mouseout"),zf.dragover=Tf("dragover","dragenter","dragleave"),zf.mouseout=$f("mouseout"),zf.dragleave=$f("dragleave"),zf.mousedown=function(t){this._down=this._active,this.fire("mousedown",t)},zf.click=function(t){this._down===this._active&&(this.fire("click",t),this._down=null)},zf.touchstart=function(t){this._touch=this.pickEvent(t.changedTouches[0]),this._first&&(this._active=this._touch,this._first=!1),this.fire("touchstart",t,!0)},zf.touchmove=function(t){this.fire("touchmove",t,!0)},zf.touchend=function(t){this.fire("touchend",t,!0),this._touch=null},zf.fire=function(t,e,n){var r,i,o=n?this._touch:this._active,a=this._handlers[t];if(e.vegaType=t,"click"===t&&o&&o.href?this.handleHref(e,o,o.href):"mousemove"!==t&&t!==Ff||this.handleTooltip(e,o,t!==Ff),a)for(r=0,i=a.length;r<i;++r)a[r].handler.call(this._obj,e,o)},zf.on=function(t,e){var n=this.eventName(t),r=this._handlers;return this._handlerIndex(r[n],t,e)<0&&(r[n]||(r[n]=[])).push({type:t,handler:e}),this},zf.off=function(t,e){var n=this.eventName(t),r=this._handlers[n],i=this._handlerIndex(r,t,e);return i>=0&&r.splice(i,1),this},zf.pickEvent=function(t){var e=Ef(t,this._canvas),n=this._origin;return this.pick(this._scene,e[0],e[1],e[0]-n[0],e[1]-n[1])},zf.pick=function(t,e,n,r,i){var o=this.context();return ff[t.marktype].pick.call(this,o,t,e,n,r,i)};var Rf="undefined"!=typeof window&&window.devicePixelRatio||1;function Bf(t){Mf.call(this,t),this._redraw=!1,this._dirty=new Tu}var Pf=Object(Mt.x)(Bf,Mf),Lf=Mf.prototype,Uf=new Tu;function qf(t,e){jf.call(this,t,e);var n=this;n._hrefHandler=Wf(n,function(t,e){e&&e.href&&n.handleHref(t,e,e.href)}),n._tooltipHandler=Wf(n,function(t,e){n.handleTooltip(t,e,t.type!==Ff)})}Pf.initialize=function(t,e,n,r,i,o){return this._options=o,this._canvas=Hu(1,1,o&&o.type),t&&(kf(t,0).appendChild(this._canvas),this._canvas.setAttribute("class","marks")),Lf.initialize.call(this,t,e,n,r,i)},Pf.resize=function(t,e,n,r){return Lf.resize.call(this,t,e,n,r),function(t,e,n,r,i,o){var a,u="undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&null!=t.parentNode,s=t.getContext("2d"),c=u?Rf:i;for(a in t.width=e*c,t.height=n*c,o)s[a]=o[a];u&&1!==c&&(t.style.width=e+"px",t.style.height=n+"px"),s.pixelRatio=c,s.setTransform(c,0,0,c,c*r[0],c*r[1])}(this._canvas,this._width,this._height,this._origin,this._scale,this._options&&this._options.context),this._redraw=!0,this},Pf.canvas=function(){return this._canvas},Pf.context=function(){return this._canvas?this._canvas.getContext("2d"):null},Pf.dirty=function(t){var e=function(t,e){if(null==e)return t;for(var n=Uf.clear().union(t);null!=e;e=e.mark.group)n.translate(e.x||0,e.y||0);return n}(t.bounds,t.mark.group);this._dirty.union(e)},Pf._render=function(t){var e=this.context(),n=this._origin,r=this._width,i=this._height,o=this._dirty;return e.save(),this._redraw||o.empty()?(this._redraw=!1,o=null):o=function(t,e,n){return e.expand(1).round(),e.translate(-n[0]%1,-n[1]%1),t.beginPath(),t.rect(e.x1,e.y1,e.width(),e.height()),t.clip(),e}(e,o,n),this.clear(-n[0],-n[1],r,i),this.draw(e,t,o),e.restore(),this._dirty.clear(),this},Pf.draw=function(t,e,n){var r=ff[e.marktype];e.clip&&function(t,e){var n=e.clip;if(t.save(),t.beginPath(),Object(Mt.C)(n))n(t);else{var r=e.group;t.rect(0,0,r.width||0,r.height||0)}t.clip()}(t,e),r.draw.call(this,t,e,n),e.clip&&t.restore()},Pf.clear=function(t,e,n,r){var i=this.context();i.clearRect(t,e,n,r),null!=this._bgcolor&&(i.fillStyle=this._bgcolor,i.fillRect(t,e,n,r))};var If=Object(Mt.x)(qf,jf);function Wf(t,e){return function(n){var r=n.target.__data__;n.vegaType=n.type,r=Array.isArray(r)?r[0]:r,e.call(t._obj,n,r)}}function Hf(t,e,n){var r,i,o="<"+t;if(e)for(r in e)null!=(i=e[r])&&(o+=" "+r+'="'+i+'"');return n&&(o+=" "+n),o+">"}function Gf(t){return"</"+t+">"}If.initialize=function(t,e,n){var r=this._svg;return r&&(r.removeEventListener("click",this._hrefHandler),r.removeEventListener("mousemove",this._tooltipHandler),r.removeEventListener(Ff,this._tooltipHandler)),this._svg=r=t&&wf(t,"svg"),r&&(r.addEventListener("click",this._hrefHandler),r.addEventListener("mousemove",this._tooltipHandler),r.addEventListener(Ff,this._tooltipHandler)),jf.prototype.initialize.call(this,t,e,n)},If.canvas=function(){return this._svg},If.on=function(t,e){var n=this.eventName(t),r=this._handlers;if(this._handlerIndex(r[n],t,e)<0){var i={type:t,handler:e,listener:Wf(this,e)};(r[n]||(r[n]=[])).push(i),this._svg&&this._svg.addEventListener(n,i.listener)}return this},If.off=function(t,e){var n=this.eventName(t),r=this._handlers[n],i=this._handlerIndex(r,t,e);return i>=0&&(this._svg&&this._svg.removeEventListener(n,r[i].listener),r.splice(i,1)),this};var Yf={version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},Vf={fill:"fill",fillOpacity:"fill-opacity",stroke:"stroke",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",strokeCap:"stroke-linecap",strokeJoin:"stroke-linejoin",strokeDash:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeMiterLimit:"stroke-miterlimit",opacity:"opacity"},Xf=Object.keys(Vf),Jf=Yf.xmlns;function Zf(t){Mf.call(this,t),this._dirtyID=1,this._dirty=[],this._svg=null,this._root=null,this._defs=null}var Qf=Object(Mt.x)(Zf,Mf),Kf=Mf.prototype;function th(t,e,n){var r,i,o;if("radial"===e.gradient){var a=Of(t,n++,"pattern",Jf);a.setAttribute("id",Bu+e.id),a.setAttribute("viewBox","0,0,1,1"),a.setAttribute("width","100%"),a.setAttribute("height","100%"),a.setAttribute("preserveAspectRatio","xMidYMid slice"),(a=Of(a,0,"rect",Jf)).setAttribute("width","1"),a.setAttribute("height","1"),a.setAttribute("fill","url("+ch()+"#"+e.id+")"),(t=Of(t,n++,"radialGradient",Jf)).setAttribute("id",e.id),t.setAttribute("fx",e.x1),t.setAttribute("fy",e.y1),t.setAttribute("fr",e.r1),t.setAttribute("cx",e.x2),t.setAttribute("cy",e.y2),t.setAttribute("r",e.r2)}else(t=Of(t,n++,"linearGradient",Jf)).setAttribute("id",e.id),t.setAttribute("x1",e.x1),t.setAttribute("x2",e.x2),t.setAttribute("y1",e.y1),t.setAttribute("y2",e.y2);for(r=0,i=e.stops.length;r<i;++r)(o=Of(t,r,"stop",Jf)).setAttribute("offset",e.stops[r].offset),o.setAttribute("stop-color",e.stops[r].color);return kf(t,r),n}function eh(t,e,n){var r;return(t=Of(t,n,"clipPath",Jf)).setAttribute("id",e.id),e.path?(r=Of(t,0,"path",Jf)).setAttribute("d",e.path):((r=Of(t,0,"rect",Jf)).setAttribute("x",0),r.setAttribute("y",0),r.setAttribute("width",e.width),r.setAttribute("height",e.height)),n+1}function nh(t,e){for(;t&&t.dirty!==e;t=t.mark.group){if(t.dirty=e,!t.mark||t.mark.dirty===e)return;t.mark.dirty=e}}function rh(t,e,n,r,i){var o,a=t._svg;if(!a&&(a=_f(o=e.ownerDocument,r,Jf),t._svg=a,t.mark&&(a.__data__=t,a.__values__={fill:"default"},"g"===r))){var u=_f(o,"path",Jf);u.setAttribute("class","background"),a.appendChild(u),u.__data__=t;var s=_f(o,"g",Jf);a.appendChild(s),s.__data__=t}return(a.ownerSVGElement!==i||function(t){var e=t.mark||t.group;return e&&e.items.length>1}(t)&&a.previousSibling!==n)&&e.insertBefore(a,n?n.nextSibling:e.firstChild),a}Qf.initialize=function(t,e,n,r){return t&&(this._svg=Of(t,0,"svg",Jf),this._svg.setAttribute("class","marks"),kf(t,1),this._root=Of(this._svg,0,"g",Jf),kf(this._svg,1)),this._defs={gradient:{},clipping:{}},this.background(this._bgcolor),Kf.initialize.call(this,t,e,n,r)},Qf.background=function(t){return arguments.length&&this._svg&&this._svg.style.setProperty("background-color",t),Kf.background.apply(this,arguments)},Qf.resize=function(t,e,n,r){return Kf.resize.call(this,t,e,n,r),this._svg&&(this._svg.setAttribute("width",this._width*this._scale),this._svg.setAttribute("height",this._height*this._scale),this._svg.setAttribute("viewBox","0 0 "+this._width+" "+this._height),this._root.setAttribute("transform","translate("+this._origin+")")),this._dirty=[],this},Qf.canvas=function(){return this._svg},Qf.svg=function(){if(!this._svg)return null;var t={class:"marks",width:this._width*this._scale,height:this._height*this._scale,viewBox:"0 0 "+this._width+" "+this._height};for(var e in Yf)t[e]=Yf[e];var n=this._bgcolor?Hf("rect",{width:this._width,height:this._height,style:"fill: "+this._bgcolor+";"})+Gf("rect"):"";return Hf("svg",t)+n+this._svg.innerHTML+Gf("svg")},Qf._render=function(t){return this._dirtyCheck()&&(this._dirtyAll&&this._resetDefs(),this.draw(this._root,t),kf(this._root,1)),this.updateDefs(),this._dirty=[],++this._dirtyID,this},Qf.updateDefs=function(){var t,e=this._svg,n=this._defs,r=n.el,i=0;for(t in n.gradient)r||(n.el=r=Of(e,0,"defs",Jf)),i=th(r,n.gradient[t],i);for(t in n.clipping)r||(n.el=r=Of(e,0,"defs",Jf)),i=eh(r,n.clipping[t],i);r&&(0===i?(e.removeChild(r),n.el=null):kf(r,i))},Qf._resetDefs=function(){var t=this._defs;t.gradient={},t.clipping={}},Qf.dirty=function(t){t.dirty!==this._dirtyID&&(t.dirty=this._dirtyID,this._dirty.push(t))},Qf.isDirty=function(t){return this._dirtyAll||!t._svg||t.dirty===this._dirtyID},Qf._dirtyCheck=function(){this._dirtyAll=!0;var t=this._dirty;if(!t.length)return!0;var e,n,r,i,o,a,u,s=++this._dirtyID;for(o=0,a=t.length;o<a;++o)(n=(e=t[o]).mark).marktype!==r&&(r=n.marktype,i=ff[r]),n.zdirty&&n.dirty!==s&&(this._dirtyAll=!1,nh(e,s),n.items.forEach(function(t){t.dirty=s})),n.zdirty||(e.exit?(i.nested&&n.items.length?(u=n.items[0])._svg&&this._update(i,u._svg,u):e._svg&&(u=e._svg.parentNode)&&u.removeChild(e._svg),e._svg=null):(e=i.nested?n.items[0]:e)._update!==s&&(e._svg&&e._svg.ownerSVGElement?this._update(i,e._svg,e):(this._dirtyAll=!1,nh(e,s)),e._update=s));return!this._dirtyAll},Qf.draw=function(t,e,n){if(!this.isDirty(e))return e._svg;var r,i=this,o=this._svg,a=ff[e.marktype],u=!1===e.interactive?"none":null,s="g"===a.tag,c=null,l=0;function f(t){var e=i.isDirty(t),n=rh(t,r,c,a.tag,o);e&&(i._update(a,n,t),s&&function(t,e,n){e=e.lastChild;var r,i=0;pl(n,function(n){r=t.draw(e,n,r),++i}),kf(e,1+i)}(i,n,t)),c=n,++l}return(r=rh(e,t,n,"g",o)).setAttribute("class",Af(e)),s||r.style.setProperty("pointer-events",u),e.clip?r.setAttribute("clip-path",Ml(i,e,e.group)):r.removeAttribute("clip-path"),a.nested?e.items.length&&f(e.items[0]):pl(e,f),kf(r,l),r};var ih=null,oh=null,ah={group:function(t,e,n){oh=e.__values__,ih=e.childNodes[1],t.foreground(sh,n,this),ih=e.childNodes[0],t.background(sh,n,this);var r=!1===n.mark.interactive?"none":null;r!==oh.events&&(ih.style.setProperty("pointer-events",r),oh.events=r)},text:function(t,e,n){var r;(r=nf(n))!==oh.text&&(e.textContent=r,oh.text=r),uh(e,"font-family",rf(n)),uh(e,"font-size",tf(n)+"px"),uh(e,"font-style",n.fontStyle),uh(e,"font-variant",n.fontVariant),uh(e,"font-weight",n.fontWeight)}};function uh(t,e,n){n!==oh[e]&&(null==n?t.style.removeProperty(e):t.style.setProperty(e,n+""),oh[e]=n)}function sh(t,e,n){e!==oh[t]&&(null!=e?n?ih.setAttributeNS(n,t,e):ih.setAttribute(t,e):n?ih.removeAttributeNS(n,t):ih.removeAttribute(t),oh[t]=e)}function ch(){var t;return"undefined"==typeof window?"":(t=window.location).hash?t.href.slice(0,-t.hash.length):t.href}function lh(t){Mf.call(this,t),this._text={head:"",bg:"",root:"",foot:"",defs:"",body:""},this._defs={gradient:{},clipping:{}}}Qf._update=function(t,e,n){ih=e,oh=e.__values__,t.attr(sh,n,this);var r=ah[t.type];r&&r.call(this,t,e,n),this.style(ih,n)},Qf.style=function(t,e){var n,r,i,o,a;if(null!=e)for(n=0,r=Xf.length;n<r;++n)a=e[i=Xf[n]],"font"===i&&(a=rf(e)),a!==oh[i]&&(o=Vf[i],null==a?"fill"===o?t.style.setProperty(o,"none"):t.style.removeProperty(o):(Pu(a)&&(a=Lu(a,this._defs.gradient,ch())),t.style.setProperty(o,a+"")),oh[i]=a)};var fh,hh=Object(Mt.x)(lh,Mf),dh=Mf.prototype;function ph(t,e,n,r){fh[r||t]=e}function gh(t,e,n,r){if(null==t)return"";var i,o,a,u,s,c="";for("bgrect"===n&&!1===e.interactive&&(c+="pointer-events: none; "),"text"===n&&(c+="font-family: "+rf(t)+"; ",c+="font-size: "+tf(t)+"px; ",t.fontStyle&&(c+="font-style: "+t.fontStyle+"; "),t.fontVariant&&(c+="font-variant: "+t.fontVariant+"; "),t.fontWeight&&(c+="font-weight: "+t.fontWeight+"; ")),i=0,o=Xf.length;i<o;++i)a=Xf[i],u=Vf[a],null==(s=t[a])?"fill"===u&&(c+="fill: none; "):"transparent"!==s||"fill"!==u&&"stroke"!==u?(Pu(s)&&(s=Lu(s,r.gradient,"")),c+=u+": "+s+"; "):c+=u+": none; ";return c?'style="'+c.trim()+'"':null}hh.resize=function(t,e,n,r){dh.resize.call(this,t,e,n,r);var i=this._origin,o=this._text,a={class:"marks",width:this._width*this._scale,height:this._height*this._scale,viewBox:"0 0 "+this._width+" "+this._height};for(var u in Yf)a[u]=Yf[u];o.head=Hf("svg",a);var s=this._bgcolor;return"transparent"!==s&&"none"!==s||(s=null),o.bg=s?Hf("rect",{width:this._width,height:this._height,style:"fill: "+s+";"})+Gf("rect"):"",o.root=Hf("g",{transform:"translate("+i+")"}),o.foot=Gf("g")+Gf("svg"),this},hh.background=function(){var t=dh.background.apply(this,arguments);return arguments.length&&this._text.head&&this.resize(this._width,this._height,this._origin,this._scale),t},hh.svg=function(){var t=this._text;return t.head+t.bg+t.defs+t.root+t.body+t.foot},hh._render=function(t){return this._text.body=this.mark(t),this._text.defs=this.buildDefs(),this},hh.buildDefs=function(){var t,e,n,r,i,o=this._defs,a="";for(e in o.gradient){for(i=(n=o.gradient[e]).stops,"radial"===n.gradient?(a+=Hf(r="pattern",{id:Bu+e,viewBox:"0,0,1,1",width:"100%",height:"100%",preserveAspectRatio:"xMidYMid slice"}),a+=Hf("rect",{width:"1",height:"1",fill:"url(#"+e+")"})+Gf("rect"),a+=Gf(r),a+=Hf(r="radialGradient",{id:e,fx:n.x1,fy:n.y1,fr:n.r1,cx:n.x2,cy:n.y2,r:n.r2})):a+=Hf(r="linearGradient",{id:e,x1:n.x1,x2:n.x2,y1:n.y1,y2:n.y2}),t=0;t<i.length;++t)a+=Hf("stop",{offset:i[t].offset,"stop-color":i[t].color})+Gf("stop");a+=Gf(r)}for(e in o.clipping)n=o.clipping[e],a+=Hf("clipPath",{id:e}),n.path?a+=Hf("path",{d:n.path})+Gf("path"):a+=Hf("rect",{x:0,y:0,width:n.width,height:n.height})+Gf("rect"),a+=Gf("clipPath");return a.length>0?Hf("defs")+a+Gf("defs"):""},hh.attributes=function(t,e){return fh={},t(ph,e,this),fh},hh.href=function(t){var e,n=this,r=t.href;if(r){if(e=n._hrefs&&n._hrefs[r])return e;n.sanitizeURL(r).then(function(t){t["xlink:href"]=t.href,t.href=null,(n._hrefs||(n._hrefs={}))[r]=t})}return null},hh.mark=function(t){var e,n=this,r=ff[t.marktype],i=r.tag,o=this._defs,a="";function u(u){var s=n.href(u);s&&(a+=Hf("a",s)),e="g"!==i?gh(u,t,i,o):null,a+=Hf(i,n.attributes(r.attr,u),e),"text"===i?a+=nf(u).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"):"g"===i&&(a+=Hf("path",n.attributes(r.background,u),gh(u,t,"bgrect",o))+Gf("path"),a+=Hf("g",n.attributes(r.foreground,u))+n.markGroup(u)+Gf("g")),a+=Gf(i),s&&(a+=Gf("a"))}return"g"!==i&&!1===t.interactive&&(e='style="pointer-events: none;"'),a+=Hf("g",{class:Af(t),"clip-path":t.clip?Ml(n,t,t.group):null},e),r.nested?t.items&&t.items.length&&u(t.items[0]):pl(t,u),a+Gf("g")},hh.markGroup=function(t){var e=this,n="";return pl(t,function(t){n+=e.mark(t)}),n};var mh={Canvas:"canvas",PNG:"png",SVG:"svg",None:"none"},vh={};function yh(t,e){return t=String(t||"").toLowerCase(),arguments.length>1?(vh[t]=e,this):vh[t]}function bh(t,e,n){const r=[],i=(new Tu).union(e),o=t.marktype;return o?xh(t,i,n,r):"group"===o?_h(t,i,n,r):Object(Mt.n)("Intersect scene must be mark node or group item.")}function xh(t,e,n,r){if(function(t,e,n){return t.bounds&&e.intersects(t.bounds)&&("group"===t.marktype||!1!==t.interactive&&(!n||n(t)))}(t,e,n)){const i=t.items,o=t.marktype,a=i.length;let u=0;if("group"===o)for(;u<a;++u)_h(i[u],e,n,r);else for(const t=ff[o].isect;u<a;++u){let n=i[u];wh(n,e,t)&&r.push(n)}}return r}function _h(t,e,n,r){n&&n(t.mark)&&wh(t,e,ff.group.isect)&&r.push(t);const i=t.items,o=i&&i.length;if(o){const a=t.x||0,u=t.y||0;e.translate(-a,-u);for(let t=0;t<o;++t)xh(i[t],e,n,r);e.translate(a,u)}return r}function wh(t,e,n){const r=t.bounds;return e.encloses(r)||e.intersects(r)&&n(t,e)}vh.canvas=vh.png={renderer:Bf,headless:Bf,handler:Nf},vh.svg={renderer:Zf,headless:lh,handler:qf},vh.none={};var Oh=new Tu,kh=function(t){var e=t.clip;if(Object(Mt.C)(e))e(Qc(Oh.clear()));else{if(!e)return;Oh.set(0,0,t.group.width,t.group.height)}t.bounds.intersect(Oh)},Ah=1e-9;function Eh(t,e,n){return t===e||("path"===n?jh(t,e):t instanceof Date&&e instanceof Date?+t==+e:Object(Mt.D)(t)&&Object(Mt.D)(e)?Math.abs(t-e)<=Ah:t&&e&&(Object(Mt.E)(t)||Object(Mt.E)(e))?null!=t&&null!=e&&function(t,e){var n,r,i=Object.keys(t),o=Object.keys(e);if(i.length!==o.length)return!1;for(i.sort(),o.sort(),r=i.length-1;r>=0;r--)if(i[r]!=o[r])return!1;for(r=i.length-1;r>=0;r--)if(n=i[r],!Eh(t[n],e[n],n))return!1;return typeof t==typeof e}(t,e):t==e)}function jh(t,e){return Eh(pc(t),pc(e))}function Sh(t){Oi.call(this,null,t)}function Ch(t,e,n){return e(t.bounds.clear(),t,n)}Object(Mt.x)(Sh,Oi).transform=function(t,e){var n,r=e.dataflow,i=t.mark,o=i.marktype,a=ff[o],u=a.bound,s=i.bounds;return a.nested?(i.items.length&&r.dirty(i.items[0]),s=Ch(i,u),i.items.forEach(function(t){t.bounds.clear().union(s)})):o===fu||t.modified()?(e.visit(e.MOD,function(t){r.dirty(t)}),s.clear(),i.items.forEach(function(t){s.union(Ch(t,u))}),i.role===mu&&e.reflow()):(n=e.changed(e.REM),e.visit(e.ADD,function(t){s.union(Ch(t,u))}),e.visit(e.MOD,function(t){n=n||s.alignsWith(t.bounds),r.dirty(t),s.union(Ch(t,u))}),n&&(s.clear(),i.items.forEach(function(t){s.union(t.bounds)}))),kh(i),e.modifies("bounds")};var Mh=":vega_identifier:";function Dh(t){Oi.call(this,0,t)}function Fh(t){Oi.call(this,null,t)}function Nh(t){Oi.call(this,null,t)}Dh.Definition={type:"Identifier",metadata:{modifies:!0},params:[{name:"as",type:"string",required:!0}]},Object(Mt.x)(Dh,Oi).transform=function(t,e){var n=function(t){var e=t._signals[Mh];e||(t._signals[Mh]=e=t.add(0));return e}(e.dataflow),r=n.value,i=t.as;return e.visit(e.ADD,function(t){t[i]||(t[i]=++r)}),n.set(this.value=r),e},Object(Mt.x)(Fh,Oi).transform=function(t,e){var n=this.value;n||((n=e.dataflow.scenegraph().mark(t.markdef,function(t){var e=t.groups,n=t.parent;return e&&1===e.size?e.get(Object.keys(e.object)[0]):e&&n?e.lookup(n):null}(t),t.index)).group.context=t.context,t.context.group||(t.context.group=n.group),n.source=this,n.clip=t.clip,n.interactive=t.interactive,this.value=n);var r=n.marktype===fu?Wu:Iu;return e.visit(e.ADD,function(t){r.call(t,n)}),(t.modified("clip")||t.modified("interactive"))&&(n.clip=t.clip,n.interactive=!!t.interactive,n.zdirty=!0,e.reflow()),n.items=e.source,e};var zh=Object(Mt.x)(Nh,Oi),Th={parity:function(t){return t.filter((t,e)=>e%2?t.opacity=0:1)},greedy:function(t,e){var n;return t.filter((t,r)=>r&&$h(n.bounds,t.bounds,e)?t.opacity=0:(n=t,1))}};function $h(t,e,n){return n>Math.max(e.x1-t.x2,t.x1-e.x2,e.y1-t.y2,t.y1-e.y2)}function Rh(t,e){for(var n,r=1,i=t.length,o=t[0].bounds;r<i;o=n,++r)if($h(o,n=t[r].bounds,e))return!0}function Bh(t){var e=t.bounds;return e.width()>1&&e.height()>1}function Ph(t){return t.forEach(t=>t.opacity=1),t}function Lh(t,e){return t.reflow(e.modified()).modifies("opacity")}function Uh(t){Oi.call(this,null,t)}zh.transform=function(t,e){var n,r,i,o=Th[t.method]||Th.parity,a=e.materialize(e.SOURCE).source,u=t.separation||0;if(a&&a.length){if(!t.method)return t.modified("method")&&(Ph(a),e=Lh(e,t)),e;if(t.sort&&(a=a.slice().sort(t.sort)),n=Ph(a=a.filter(Bh)),e=Lh(e,t),n.length>=3&&Rh(n,u)){do{n=o(n,u)}while(n.length>=3&&Rh(n,u));n.length<3&&!Object(Mt.R)(a).opacity&&(n.length>1&&(Object(Mt.R)(n).opacity=0),Object(Mt.R)(a).opacity=1)}var s,c,l,f,h;return t.boundScale&&t.boundTolerance>=0&&(s=t.boundScale,c=t.boundOrient,l=+t.boundTolerance,f=s.range(),h=new Tu,c===Qa||c===eu?h.set(f[0],-1/0,f[1],1/0):h.set(-1/0,f[0],1/0,f[1]),h.expand(l||1),r=t=>h.encloses(t.bounds),a.forEach(t=>{r(t)||(t.opacity=0)})),i=n[0].mark.bounds.clear(),a.forEach(t=>{t.opacity&&i.union(t.bounds)}),e}},Object(Mt.x)(Uh,Oi).transform=function(t,e){var n=e.dataflow;if(e.visit(e.ALL,function(t){n.dirty(t)}),e.fields&&e.fields.zindex){var r=e.source&&e.source[0];r&&(r.mark.zdirty=!0)}};const qh=new Tu;function Ih(t,e,n){return t[e]===n?0:(t[e]=n,1)}const Wh=.5;function Hh(t){var e=t.items[0].datum.orient;return e===Ka||e===tu}function Gh(t,e,n,r){var i,o,a=e.items[0],u=a.datum,s=u.orient,c=function(t){var e=+t.grid;return[t.ticks?e++:-1,t.labels?e++:-1,e+ +t.domain]}(u),l=a.range,f=a.offset,h=a.position,d=a.minExtent,p=a.maxExtent,g=u.title&&a.items[c[2]].items[0],m=a.titlePadding,v=a.bounds,y=0,b=0;switch(qh.clear().union(v),v.clear(),(i=c[0])>-1&&v.union(a.items[i].bounds),(i=c[1])>-1&&v.union(a.items[i].bounds),s){case Qa:y=h||0,b=-f,o=Math.max(d,Math.min(p,-v.y1)),g&&(o=Yh(g,o,m,0,-1,v)),v.add(0,-o).add(l,0);break;case Ka:y=-f,b=h||0,o=Math.max(d,Math.min(p,-v.x1)),g&&(o=Yh(g,o,m,1,-1,v)),v.add(-o,0).add(0,l);break;case tu:y=n+f,b=h||0,o=Math.max(d,Math.min(p,v.x2)),g&&(o=Yh(g,o,m,1,1,v)),v.add(0,0).add(o,l);break;case eu:y=h||0,b=r+f,o=Math.max(d,Math.min(p,v.y2)),g&&(o=Yh(g,o,m,0,1,v)),v.add(0,0).add(l,o);break;default:y=a.x,b=a.y}return Jc(v.translate(y,b),a),Ih(a,"x",y+Wh)|Ih(a,"y",b+Wh)&&(a.bounds=qh,t.dirty(a),a.bounds=v,t.dirty(a)),a.mark.bounds.clear().union(v)}function Yh(t,e,n,r,i,o){var a=t.bounds,u=0,s=0;return t.auto?(e+=n,r?u=(t.x||0)-(t.x=i*e):s=(t.y||0)-(t.y=i*e),a.translate(-u,-s),t.mark.bounds.set(a.x1,a.y1,a.x2,a.y2),r?(o.add(0,a.y1).add(0,a.y2),e+=a.width()):(o.add(a.x1,0).add(a.x2,0),e+=a.height())):o.union(a),e}function Vh(t){return(new Tu).set(0,0,t.width||0,t.height||0)}function Xh(t){var e=t.bounds.clone();return e.empty()?e.set(0,0,0,0):e.translate(-(t.x||0),-(t.y||0))}function Jh(t,e,n){var r=Object(Mt.E)(t)?t[e]:t;return null!=r?r:void 0!==n?n:0}function Zh(t){return t<0?Math.ceil(-t):0}function Qh(t,e,n){var r,i,o,a,u,s,c,l,f,h,d,p=!n.nodirty,g=n.bounds===Fu?Vh:Xh,m=qh.set(0,0,0,0),v=Jh(n.align,Nu),y=Jh(n.align,zu),b=Jh(n.padding,Nu),x=Jh(n.padding,zu),_=n.columns||e.length,w=_<0?1:Math.ceil(e.length/_),O=e.length,k=Array(O),A=Array(_),E=0,j=Array(O),S=Array(w),C=0,M=Array(O),D=Array(O),F=Array(O);for(i=0;i<_;++i)A[i]=0;for(i=0;i<w;++i)S[i]=0;for(i=0;i<O;++i)s=e[i],u=F[i]=g(s),s.x=s.x||0,M[i]=0,s.y=s.y||0,D[i]=0,o=i%_,a=~~(i/_),E=Math.max(E,c=Math.ceil(u.x2)),C=Math.max(C,l=Math.ceil(u.y2)),A[o]=Math.max(A[o],c),S[a]=Math.max(S[a],l),k[i]=b+Zh(u.x1),j[i]=x+Zh(u.y1),p&&t.dirty(e[i]);for(i=0;i<O;++i)i%_==0&&(k[i]=0),i<_&&(j[i]=0);if(v===Du)for(o=1;o<_;++o){for(d=0,i=o;i<O;i+=_)d<k[i]&&(d=k[i]);for(i=o;i<O;i+=_)k[i]=d+A[o-1]}else if(v===Mu){for(d=0,i=0;i<O;++i)i%_&&d<k[i]&&(d=k[i]);for(i=0;i<O;++i)i%_&&(k[i]=d+E)}else for(v=!1,o=1;o<_;++o)for(i=o;i<O;i+=_)k[i]+=A[o-1];if(y===Du)for(a=1;a<w;++a){for(d=0,r=(i=a*_)+_;i<r;++i)d<j[i]&&(d=j[i]);for(i=a*_;i<r;++i)j[i]=d+S[a-1]}else if(y===Mu){for(d=0,i=_;i<O;++i)d<j[i]&&(d=j[i]);for(i=_;i<O;++i)j[i]=d+C}else for(y=!1,a=1;a<w;++a)for(r=(i=a*_)+_;i<r;++i)j[i]+=S[a-1];for(f=0,i=0;i<O;++i)f=k[i]+(i%_?f:0),M[i]+=f-e[i].x;for(o=0;o<_;++o)for(h=0,i=o;i<O;i+=_)h+=j[i],D[i]+=h-e[i].y;if(v&&Jh(n.center,Nu)&&w>1)for(i=0;i<O;++i)(f=(u=v===Mu?E:A[i%_])-F[i].x2-e[i].x-M[i])>0&&(M[i]+=f/2);if(y&&Jh(n.center,zu)&&1!==_)for(i=0;i<O;++i)(h=(u=y===Mu?C:S[~~(i/_)])-F[i].y2-e[i].y-D[i])>0&&(D[i]+=h/2);for(i=0;i<O;++i)m.union(F[i].translate(M[i],D[i]));switch(f=Jh(n.anchor,cu),h=Jh(n.anchor,lu),Jh(n.anchor,Nu)){case su:f-=m.width();break;case uu:f-=m.width()/2}switch(Jh(n.anchor,zu)){case su:h-=m.height();break;case uu:h-=m.height()/2}for(f=Math.round(f),h=Math.round(h),m.clear(),i=0;i<O;++i)e[i].mark.bounds.clear();for(i=0;i<O;++i)(s=e[i]).x+=M[i]+=f,s.y+=D[i]+=h,m.union(s.mark.bounds.union(s.bounds.translate(M[i],D[i]))),p&&t.dirty(s);return m}function Kh(t,e,n){var r,i,o,a,u,s,c,l=function(t){for(var e,n,r=t.items,i=r.length,o=0,a={marks:[],rowheaders:[],rowfooters:[],colheaders:[],colfooters:[],rowtitle:null,coltitle:null};o<i;++o)if(n=(e=r[o]).items,e.marktype===fu)switch(e.role){case hu:case mu:break;case vu:a.rowheaders.push(...n);break;case yu:a.rowfooters.push(...n);break;case xu:a.colheaders.push(...n);break;case _u:a.colfooters.push(...n);break;case bu:a.rowtitle=n[0];break;case wu:a.coltitle=n[0];break;default:a.marks.push(...n)}return a}(e),f=l.marks,h=n.bounds===Fu?td:ed,d=n.offset,p=n.columns||f.length,g=p<0?1:Math.ceil(f.length/p),m=g*p;const v=Qh(t,f,n);l.rowheaders&&(s=Jh(n.headerBand,zu,null),r=id(t,l.rowheaders,f,p,g,-Jh(d,"rowHeader"),nd,0,h,"x1",0,p,1,s)),l.colheaders&&(s=Jh(n.headerBand,Nu,null),i=id(t,l.colheaders,f,p,p,-Jh(d,"columnHeader"),nd,1,h,"y1",0,1,p,s)),l.rowfooters&&(s=Jh(n.footerBand,zu,null),o=id(t,l.rowfooters,f,p,g,Jh(d,"rowFooter"),rd,0,h,"x2",p-1,p,1,s)),l.colfooters&&(s=Jh(n.footerBand,Nu,null),a=id(t,l.colfooters,f,p,p,Jh(d,"columnFooter"),rd,1,h,"y2",m-p,1,p,s)),l.rowtitle&&(u=Jh(n.titleAnchor,zu),c=Jh(d,"rowTitle"),c=u===su?o+c:r-c,s=Jh(n.titleBand,zu,.5),od(t,l.rowtitle,c,0,v,s)),l.coltitle&&(u=Jh(n.titleAnchor,Nu),c=Jh(d,"columnTitle"),c=u===su?a+c:i-c,s=Jh(n.titleBand,Nu,.5),od(t,l.coltitle,c,1,v,s))}function td(t,e){return"x1"===e?t.x||0:"y1"===e?t.y||0:"x2"===e?(t.x||0)+(t.width||0):"y2"===e?(t.y||0)+(t.height||0):void 0}function ed(t,e){return t.bounds[e]}function nd(t,e){return Math.floor(Math.min(t,e))}function rd(t,e){return Math.ceil(Math.max(t,e))}function id(t,e,n,r,i,o,a,u,s,c,l,f,h,d){var p,g,m,v,y,b,x,_,w,O=n.length,k=0,A=0;if(!O)return k;for(p=l;p<O;p+=f)n[p]&&(k=a(k,s(n[p],c)));if(!e.length)return k;for(e.length>i&&(t.warn("Grid headers exceed limit: "+i),e=e.slice(0,i)),k+=o,g=0,v=e.length;g<v;++g)t.dirty(e[g]),e[g].mark.bounds.clear();for(p=l,g=0,v=e.length;g<v;++g,p+=f){for(y=(b=e[g]).mark.bounds,m=p;m>=0&&null==(x=n[m]);m-=h);u?(_=null==d?x.x:Math.round(x.bounds.x1+d*x.bounds.width()),w=k):(_=k,w=null==d?x.y:Math.round(x.bounds.y1+d*x.bounds.height())),y.union(b.bounds.translate(_-(b.x||0),w-(b.y||0))),b.x=_,b.y=w,t.dirty(b),A=a(A,y[c])}return A}function od(t,e,n,r,i,o){if(e){t.dirty(e);var a=n,u=n;r?a=Math.round(i.x1+o*i.width()):u=Math.round(i.y1+o*i.height()),e.bounds.translate(a-(e.x||0),u-(e.y||0)),e.mark.bounds.clear().union(e.bounds),e.x=a,e.y=u,t.dirty(e)}}function ad(t,e,n,r,i,o,a){const u=function(t,e){const n=t[e]||{};return(e,r)=>null!=n[e]?n[e]:null!=t[e]?t[e]:r}(n,e),s=(f=t,h=u("offset",0),d=-1/0,f.forEach(t=>{null!=t.offset&&(d=Math.max(d,t.offset))}),d>-1/0?d:h),c=u("anchor",au),l=c===su?1:c===uu?.5:0;var f,h,d;const p={align:Du,bounds:u("bounds",Fu),columns:"vertical"===u("direction")?1:t.length,padding:u("margin",8),center:u("center"),nodirty:!0};switch(e){case Ka:p.anchor={x:Math.floor(r.x1)-s,column:su,y:l*(a||r.height()+2*r.y1),row:c};break;case tu:p.anchor={x:Math.ceil(r.x2)+s,y:l*(a||r.height()+2*r.y1),row:c};break;case Qa:p.anchor={y:Math.floor(i.y1)-s,row:su,x:l*(o||i.width()+2*i.x1),column:c};break;case eu:p.anchor={y:Math.ceil(i.y2)+s,x:l*(o||i.width()+2*i.x1),column:c};break;case nu:p.anchor={x:s,y:s};break;case ru:p.anchor={x:o-s,y:s,column:su};break;case iu:p.anchor={x:s,y:a-s,row:su};break;case ou:p.anchor={x:o-s,y:a-s,column:su,row:su}}return p}function ud(t,e){var n,r,i,o,a=e.items[0],u=a.datum,s=a.orient,c=a.bounds,l=a.x,f=a.y;return a._bounds?a._bounds.clear().union(c):a._bounds=c.clone(),c.clear(),function(t,e,n){var r=e.padding,i=r-n.x,o=r-n.y;if(e.datum.title){var a=e.items[1].items[0],u=a.anchor,s=e.titlePadding||0,c=r-a.x,l=r-a.y;switch(a.orient){case Ka:i+=Math.ceil(a.bounds.width())+s;break;case tu:case eu:break;default:o+=a.fontSize+s}switch((i||o)&&cd(t,n,i,o),a.orient){case Ka:l+=sd(e,n,a,u,0,1);break;case tu:c+=sd(e,n,a,su,1,0)+s,l+=sd(e,n,a,u,0,1);break;case eu:c+=sd(e,n,a,u,1,0),l+=sd(e,n,a,su,0,0,1)+s;break;default:c+=sd(e,n,a,u,1,0)}(c||l)&&cd(t,a,c,l),(c=Math.round(a.bounds.x1-r))<0&&(cd(t,n,-c,0),cd(t,a,-c,0))}else(i||o)&&cd(t,n,i,o)}(t,a,a.items[0].items[0]),c=function(t,e){return t.items.forEach(t=>e.union(t.bounds)),e.x1=t.padding,e.y1=t.padding,e}(a,c),n=2*a.padding,r=2*a.padding,c.empty()||(n=Math.ceil(c.width()+n),r=Math.ceil(c.height()+r)),u.type===ku&&(i=a.items[0].items[0].items[0].items,o=i.reduce(function(t,e){return t[e.column]=Math.max(e.bounds.x2-e.x,t[e.column]||0),t},{}),i.forEach(function(t){t.width=o[t.column],t.height=t.bounds.y2-t.y})),s!==Cu&&(a.x=l=0,a.y=f=0),a.width=n,a.height=r,Jc(c.set(l,f,l+n,f+r),a),a.mark.bounds.clear().union(c),a}function sd(t,e,n,r,i,o,a){const u="symbol"!==t.datum.type,s=n.datum.vgrad,c=(!u||!o&&s||a?e:e.items[0]).bounds[i?"x2":"y2"]-t.padding,l=s&&o?c:0,f=s&&o?0:c;return Math.round(r===au?l:r===su?f:.5*c)}function cd(t,e,n,r){e.x+=n,e.y+=r,e.bounds.translate(n,r),e.mark.bounds.translate(n,r),t.dirty(e)}function ld(t){Oi.call(this,null,t)}Object(Mt.x)(ld,Oi).transform=function(t,e){var n=e.dataflow;return t.mark.items.forEach(function(e){t.layout&&Kh(n,e,t.layout),function(t,e,n){var r,i,o,a,u,s=e.items,c=Math.max(0,e.width||0),l=Math.max(0,e.height||0),f=(new Tu).set(0,0,c,l),h=f.clone(),d=f.clone(),p=[];for(a=0,u=s.length;a<u;++a)switch((i=s[a]).role){case hu:(Hh(i)?h:d).union(Gh(t,i,c,l));break;case du:r=i;break;case mu:p.push(ud(t,i));break;case pu:case gu:case vu:case yu:case bu:case xu:case _u:case wu:h.union(i.bounds),d.union(i.bounds);break;default:f.union(i.bounds)}if(p.length){const e={};p.forEach(t=>{(o=t.orient||tu)!==Cu&&(e[o]||(e[o]=[])).push(t)});for(let r in e){const i=e[r];Qh(t,i,ad(i,r,n.legends,h,d,c,l))}p.forEach(e=>{const r=e.bounds;if(r.equals(e._bounds)||(e.bounds=e._bounds,t.dirty(e),e.bounds=r,t.dirty(e)),n.autosize&&n.autosize.type===Au)switch(e.orient){case Ka:case tu:f.add(r.x1,0).add(r.x2,0);break;case Qa:case eu:f.add(0,r.y1).add(0,r.y2)}else f.union(r)})}f.union(h).union(d),r&&f.union(function(t,e,n,r,i){var o,a=e.items[0],u=a.frame,s=a.orient,c=a.anchor,l=a.offset,f=a.bounds,h=0,d=s===Ka||s===tu?r:n,p=0,g=0;switch(u!==fu?s===Ka?(h=i.y2,d=i.y1):s===tu?(h=i.y1,d=i.y2):(h=i.x1,d=i.x2):s===Ka&&(h=r,d=0),o=c===au?h:c===su?d:(h+d)/2,qh.clear().union(f),s){case Qa:p=o,g=i.y1-l;break;case Ka:p=i.x1-l,g=o;break;case tu:p=i.x2+l,g=o;break;case eu:p=o,g=i.y2+l;break;default:p=a.x,g=a.y}return f.translate(p-(a.x||0),g-(a.y||0)),Ih(a,"x",p)|Ih(a,"y",g)&&(a.bounds=qh,t.dirty(a),a.bounds=f,t.dirty(a)),e.bounds.clear().union(f)}(t,r,c,l,f));!function(t,e,n,r){var i=r.autosize||{},o=i.type,a=t._width,u=t._height,s=t.padding();if(t._autosize<1||!o)return;var c=Math.max(0,e.width||0),l=Math.max(0,Math.ceil(-n.x1)),f=Math.max(0,Math.ceil(n.x2-c)),h=Math.max(0,e.height||0),d=Math.max(0,Math.ceil(-n.y1)),p=Math.max(0,Math.ceil(n.y2-h));i.contains===Ou&&(a-=s.left+s.right,u-=s.top+s.bottom);o===Cu?(l=0,d=0,c=a,h=u):o===Au?(c=Math.max(0,a-l-f),h=Math.max(0,u-d-p)):o===Eu?(c=Math.max(0,a-l-f),u=h+d+p):o===ju?(a=c+l+f,h=Math.max(0,u-d-p)):o===Su&&(a=c+l+f,u=h+d+p);t._resizeView(a,u,c,h,[l,d],i.resize)}(t,e,f,n)}(n,e,t)}),t.modified()&&e.reflow(),e};var fd=function(t,e,n){var r=t-e+2*n;return t?r>0?r:1:0};const hd="identity",dd="linear",pd="log",gd="pow",md="sqrt",vd="symlog",yd="time",bd="utc",xd="sequential",_d="diverging",wd="quantile",Od="quantize",kd="threshold",Ad="ordinal",Ed="point",jd="band",Sd="bin-ordinal";function Cd(t){return t===wd}function Md(t){return function(t){return t&&t.startsWith(xd)}(t)||function(t){return t&&t.startsWith(_d)}(t)}function Dd(t){return t===pd||t.endsWith("-log")}function Fd(t){switch(t){case dd:case pd:case gd:case md:case vd:case yd:case bd:case xd:return!0}return!1}function Nd(t){return t===Sd||t===Ad||t===jd||t===Ed}function zd(t){return t===Sd||t===wd||t===Od||t===kd}var Td={millisecond:Xe,second:Ke,minute:en,hour:rn,day:an,week:sn,month:mn,year:yn},$d={millisecond:Xe,second:Ke,minute:xn,hour:wn,day:kn,week:En,month:zn,year:$n};function Rd(t,e){const n=e===bd?$d:Td;return n.hasOwnProperty(t)&&n[t]}var Bd=function(t){return function(e){var n,r=e[0],i=e[1];return i<r&&(n=r,r=i,i=n),[t.invert(r),t.invert(i)]}},Pd=function(t){return function(e){var n,r,i,o,a=t.range(),u=e[0],s=e[1],c=-1;for(s<u&&(r=u,u=s,s=r),i=0,o=a.length;i<o;++i)a[i]>=u&&a[i]<=s&&(c<0&&(c=i),n=i);if(!(c<0))return u=t.invertExtent(a[c]),s=t.invertExtent(a[n]),[void 0===u[0]?u[1]:u[0],void 0===s[1]?s[0]:s[1]]}};function Ld(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}function Ud(t,e){switch(arguments.length){case 0:break;case 1:this.interpolator(t);break;default:this.interpolator(e).domain(t)}return this}const qd=Symbol("implicit");function Id(){var t=new Map,e=[],n=[],r=qd;function i(i){var o=i+"",a=t.get(o);if(!a){if(r!==qd)return r;t.set(o,a=e.push(i))}return n[(a-1)%n.length]}return i.domain=function(n){if(!arguments.length)return e.slice();e=[],t=new Map;for(const r of n){const n=r+"";t.has(n)||t.set(n,e.push(r))}return i},i.range=function(t){return arguments.length?(n=Array.from(t),i):n.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return Id(e,n).unknown(r)},Ld.apply(i,arguments),i}var Wd=function(t,e,n){t.prototype=e.prototype=n,n.constructor=t};function Hd(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Gd(){}var Yd="\\s*([+-]?\\d+)\\s*",Vd="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",Xd="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Jd=/^#([0-9a-f]{3})$/,Zd=/^#([0-9a-f]{6})$/,Qd=new RegExp("^rgb\\("+[Yd,Yd,Yd]+"\\)$"),Kd=new RegExp("^rgb\\("+[Xd,Xd,Xd]+"\\)$"),tp=new RegExp("^rgba\\("+[Yd,Yd,Yd,Vd]+"\\)$"),ep=new RegExp("^rgba\\("+[Xd,Xd,Xd,Vd]+"\\)$"),np=new RegExp("^hsl\\("+[Vd,Xd,Xd]+"\\)$"),rp=new RegExp("^hsla\\("+[Vd,Xd,Xd,Vd]+"\\)$"),ip={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function op(t){var e;return t=(t+"").trim().toLowerCase(),(e=Jd.exec(t))?new lp((e=parseInt(e[1],16))>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):(e=Zd.exec(t))?ap(parseInt(e[1],16)):(e=Qd.exec(t))?new lp(e[1],e[2],e[3],1):(e=Kd.exec(t))?new lp(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=tp.exec(t))?up(e[1],e[2],e[3],e[4]):(e=ep.exec(t))?up(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=np.exec(t))?hp(e[1],e[2]/100,e[3]/100,1):(e=rp.exec(t))?hp(e[1],e[2]/100,e[3]/100,e[4]):ip.hasOwnProperty(t)?ap(ip[t]):"transparent"===t?new lp(NaN,NaN,NaN,0):null}function ap(t){return new lp(t>>16&255,t>>8&255,255&t,1)}function up(t,e,n,r){return r<=0&&(t=e=n=NaN),new lp(t,e,n,r)}function sp(t){return t instanceof Gd||(t=op(t)),t?new lp((t=t.rgb()).r,t.g,t.b,t.opacity):new lp}function cp(t,e,n,r){return 1===arguments.length?sp(t):new lp(t,e,n,null==r?1:r)}function lp(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function fp(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function hp(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new pp(t,e,n,r)}function dp(t,e,n,r){return 1===arguments.length?function(t){if(t instanceof pp)return new pp(t.h,t.s,t.l,t.opacity);if(t instanceof Gd||(t=op(t)),!t)return new pp;if(t instanceof pp)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),a=NaN,u=o-i,s=(o+i)/2;return u?(a=e===o?(n-r)/u+6*(n<r):n===o?(r-e)/u+2:(e-n)/u+4,u/=s<.5?o+i:2-o-i,a*=60):u=s>0&&s<1?0:a,new pp(a,u,s,t.opacity)}(t):new pp(t,e,n,null==r?1:r)}function pp(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function gp(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}Wd(Gd,op,{displayable:function(){return this.rgb().displayable()},hex:function(){return this.rgb().hex()},toString:function(){return this.rgb()+""}}),Wd(lp,cp,Hd(Gd,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new lp(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new lp(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:function(){return"#"+fp(this.r)+fp(this.g)+fp(this.b)},toString:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}})),Wd(pp,dp,Hd(Gd,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new pp(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new pp(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new lp(gp(t>=240?t-240:t+120,i,r),gp(t,i,r),gp(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var mp=Math.PI/180,vp=180/Math.PI,yp=.96422,bp=1,xp=.82521,_p=4/29,wp=6/29,Op=3*wp*wp,kp=wp*wp*wp;function Ap(t){if(t instanceof jp)return new jp(t.l,t.a,t.b,t.opacity);if(t instanceof zp)return Tp(t);t instanceof lp||(t=sp(t));var e,n,r=Dp(t.r),i=Dp(t.g),o=Dp(t.b),a=Sp((.2225045*r+.7168786*i+.0606169*o)/bp);return r===i&&i===o?e=n=a:(e=Sp((.4360747*r+.3850649*i+.1430804*o)/yp),n=Sp((.0139322*r+.0971045*i+.7141733*o)/xp)),new jp(116*a-16,500*(e-a),200*(a-n),t.opacity)}function Ep(t,e,n,r){return 1===arguments.length?Ap(t):new jp(t,e,n,null==r?1:r)}function jp(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function Sp(t){return t>kp?Math.pow(t,1/3):t/Op+_p}function Cp(t){return t>wp?t*t*t:Op*(t-_p)}function Mp(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Dp(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Fp(t){if(t instanceof zp)return new zp(t.h,t.c,t.l,t.opacity);if(t instanceof jp||(t=Ap(t)),0===t.a&&0===t.b)return new zp(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*vp;return new zp(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Np(t,e,n,r){return 1===arguments.length?Fp(t):new zp(t,e,n,null==r?1:r)}function zp(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function Tp(t){if(isNaN(t.h))return new jp(t.l,0,0,t.opacity);var e=t.h*mp;return new jp(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}Wd(jp,Ep,Hd(Gd,{brighter:function(t){return new jp(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new jp(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return new lp(Mp(3.1338561*(e=yp*Cp(e))-1.6168667*(t=bp*Cp(t))-.4906146*(n=xp*Cp(n))),Mp(-.9787684*e+1.9161415*t+.033454*n),Mp(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}})),Wd(zp,Np,Hd(Gd,{brighter:function(t){return new zp(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new zp(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Tp(this).rgb()}}));var $p=-.29227,Rp=-.90649,Bp=1.97294,Pp=Bp*Rp,Lp=1.78277*Bp,Up=1.78277*$p- -.14861*Rp;function qp(t,e,n,r){return 1===arguments.length?function(t){if(t instanceof Ip)return new Ip(t.h,t.s,t.l,t.opacity);t instanceof lp||(t=sp(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(Up*r+Pp*e-Lp*n)/(Up+Pp-Lp),o=r-i,a=(Bp*(n-i)-$p*o)/Rp,u=Math.sqrt(a*a+o*o)/(Bp*i*(1-i)),s=u?Math.atan2(a,o)*vp-120:NaN;return new Ip(s<0?s+360:s,u,i,t.opacity)}(t):new Ip(t,e,n,null==r?1:r)}function Ip(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function Wp(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}Wd(Ip,qp,Hd(Gd,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Ip(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Ip(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*mp,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new lp(255*(e+n*(-.14861*r+1.78277*i)),255*(e+n*($p*r+Rp*i)),255*(e+n*(Bp*r)),this.opacity)}}));var Hp=function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r<e-1?t[r+2]:2*o-i;return Wp((n-r/e)*e,a,i,o,u)}},Gp=function(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],a=t[(r+1)%e],u=t[(r+2)%e];return Wp((n-r/e)*e,i,o,a,u)}},Yp=function(t){return function(){return t}};function Vp(t,e){return function(n){return t+n*e}}function Xp(t,e){var n=e-t;return n?Vp(t,n>180||n<-180?n-360*Math.round(n/360):n):Yp(isNaN(t)?e:t)}function Jp(t){return 1==(t=+t)?Zp:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):Yp(isNaN(e)?n:e)}}function Zp(t,e){var n=e-t;return n?Vp(t,n):Yp(isNaN(t)?e:t)}var Qp=function t(e){var n=Jp(e);function r(t,e){var r=n((t=cp(t)).r,(e=cp(e)).r),i=n(t.g,e.g),o=n(t.b,e.b),a=Zp(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=o(e),t.opacity=a(e),t+""}}return r.gamma=t,r}(1);function Kp(t){return function(e){var n,r,i=e.length,o=new Array(i),a=new Array(i),u=new Array(i);for(n=0;n<i;++n)r=cp(e[n]),o[n]=r.r||0,a[n]=r.g||0,u[n]=r.b||0;return o=t(o),a=t(a),u=t(u),r.opacity=1,function(t){return r.r=o(t),r.g=a(t),r.b=u(t),r+""}}}var tg=Kp(Hp),eg=Kp(Gp),ng=function(t,e){var n,r=e?e.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),a=new Array(r);for(n=0;n<i;++n)o[n]=dg(t[n],e[n]);for(;n<r;++n)a[n]=e[n];return function(t){for(n=0;n<i;++n)a[n]=o[n](t);return a}},rg=function(t,e){var n=new Date;return e-=t=+t,function(r){return n.setTime(t+e*r),n}},ig=function(t,e){return e-=t=+t,function(n){return t+e*n}},og=function(t,e){var n,r={},i={};for(n in null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={}),e)n in t?r[n]=dg(t[n],e[n]):i[n]=e[n];return function(t){for(n in r)i[n]=r[n](t);return i}},ag=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,ug=new RegExp(ag.source,"g");var sg,cg,lg,fg,hg=function(t,e){var n,r,i,o=ag.lastIndex=ug.lastIndex=0,a=-1,u=[],s=[];for(t+="",e+="";(n=ag.exec(t))&&(r=ug.exec(e));)(i=r.index)>o&&(i=e.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(n=n[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,s.push({i:a,x:ig(n,r)})),o=ug.lastIndex;return o<e.length&&(i=e.slice(o),u[a]?u[a]+=i:u[++a]=i),u.length<2?s[0]?function(t){return function(e){return t(e)+""}}(s[0].x):function(t){return function(){return t}}(e):(e=s.length,function(t){for(var n,r=0;r<e;++r)u[(n=s[r]).i]=n.x(t);return u.join("")})},dg=function(t,e){var n,r=typeof e;return null==e||"boolean"===r?Yp(e):("number"===r?ig:"string"===r?(n=op(e))?(e=n,Qp):hg:e instanceof op?Qp:e instanceof Date?rg:Array.isArray(e)?ng:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?og:ig)(t,e)},pg=function(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}},gg=function(t,e){var n=Xp(+t,+e);return function(t){var e=n(t);return e-360*Math.floor(e/360)}},mg=function(t,e){return e-=t=+t,function(n){return Math.round(t+e*n)}},vg=180/Math.PI,yg={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1},bg=function(t,e,n,r,i,o){var a,u,s;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(s=t*n+e*r)&&(n-=t*s,r-=e*s),(u=Math.sqrt(n*n+r*r))&&(n/=u,r/=u,s/=u),t*r<e*n&&(t=-t,e=-e,s=-s,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*vg,skewX:Math.atan(s)*vg,scaleX:a,scaleY:u}};function xg(t,e,n,r){function i(t){return t.length?t.pop()+" ":""}return function(o,a){var u=[],s=[];return o=t(o),a=t(a),function(t,r,i,o,a,u){if(t!==i||r!==o){var s=a.push("translate(",null,e,null,n);u.push({i:s-4,x:ig(t,i)},{i:s-2,x:ig(r,o)})}else(i||o)&&a.push("translate("+i+e+o+n)}(o.translateX,o.translateY,a.translateX,a.translateY,u,s),function(t,e,n,o){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),o.push({i:n.push(i(n)+"rotate(",null,r)-2,x:ig(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(o.rotate,a.rotate,u,s),function(t,e,n,o){t!==e?o.push({i:n.push(i(n)+"skewX(",null,r)-2,x:ig(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(o.skewX,a.skewX,u,s),function(t,e,n,r,o,a){if(t!==n||e!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:ig(t,n)},{i:u-2,x:ig(e,r)})}else 1===n&&1===r||o.push(i(o)+"scale("+n+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,s),o=a=null,function(t){for(var e,n=-1,r=s.length;++n<r;)u[(e=s[n]).i]=e.x(t);return u.join("")}}}var _g=xg(function(t){return"none"===t?yg:(sg||(sg=document.createElement("DIV"),cg=document.documentElement,lg=document.defaultView),sg.style.transform=t,t=lg.getComputedStyle(cg.appendChild(sg),null).getPropertyValue("transform"),cg.removeChild(sg),t=t.slice(7,-1).split(","),bg(+t[0],+t[1],+t[2],+t[3],+t[4],+t[5]))},"px, ","px)","deg)"),wg=xg(function(t){return null==t?yg:(fg||(fg=document.createElementNS("http://www.w3.org/2000/svg","g")),fg.setAttribute("transform",t),(t=fg.transform.baseVal.consolidate())?(t=t.matrix,bg(t.a,t.b,t.c,t.d,t.e,t.f)):yg)},", ",")",")"),Og=Math.SQRT2;function kg(t){return((t=Math.exp(t))+1/t)/2}var Ag=function(t,e){var n,r,i=t[0],o=t[1],a=t[2],u=e[0],s=e[1],c=e[2],l=u-i,f=s-o,h=l*l+f*f;if(h<1e-12)r=Math.log(c/a)/Og,n=function(t){return[i+t*l,o+t*f,a*Math.exp(Og*t*r)]};else{var d=Math.sqrt(h),p=(c*c-a*a+4*h)/(2*a*2*d),g=(c*c-a*a-4*h)/(2*c*2*d),m=Math.log(Math.sqrt(p*p+1)-p),v=Math.log(Math.sqrt(g*g+1)-g);r=(v-m)/Og,n=function(t){var e,n=t*r,u=kg(m),s=a/(2*d)*(u*(e=Og*n+m,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(m));return[i+s*l,o+s*f,a*u/kg(Og*n+m)]}}return n.duration=1e3*r,n};function Eg(t){return function(e,n){var r=t((e=dp(e)).h,(n=dp(n)).h),i=Zp(e.s,n.s),o=Zp(e.l,n.l),a=Zp(e.opacity,n.opacity);return function(t){return e.h=r(t),e.s=i(t),e.l=o(t),e.opacity=a(t),e+""}}}var jg=Eg(Xp),Sg=Eg(Zp);function Cg(t,e){var n=Zp((t=Ep(t)).l,(e=Ep(e)).l),r=Zp(t.a,e.a),i=Zp(t.b,e.b),o=Zp(t.opacity,e.opacity);return function(e){return t.l=n(e),t.a=r(e),t.b=i(e),t.opacity=o(e),t+""}}function Mg(t){return function(e,n){var r=t((e=Np(e)).h,(n=Np(n)).h),i=Zp(e.c,n.c),o=Zp(e.l,n.l),a=Zp(e.opacity,n.opacity);return function(t){return e.h=r(t),e.c=i(t),e.l=o(t),e.opacity=a(t),e+""}}}var Dg=Mg(Xp),Fg=Mg(Zp);function Ng(t){return function e(n){function r(e,r){var i=t((e=qp(e)).h,(r=qp(r)).h),o=Zp(e.s,r.s),a=Zp(e.l,r.l),u=Zp(e.opacity,r.opacity);return function(t){return e.h=i(t),e.s=o(t),e.l=a(Math.pow(t,n)),e.opacity=u(t),e+""}}return n=+n,r.gamma=e,r}(1)}var zg=Ng(Xp),Tg=Ng(Zp);function $g(t,e){for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(t){var e=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return o[e](t-e)}}var Rg=function(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n},Bg=function(t){return function(){return t}},Pg=function(t){return+t},Lg=[0,1];function Ug(t){return t}function qg(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Bg(isNaN(e)?NaN:.5)}function Ig(t){var e,n=t[0],r=t[t.length-1];return n>r&&(e=n,n=r,r=e),function(t){return Math.max(n,Math.min(r,t))}}function Wg(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i<r?(r=qg(i,r),o=n(a,o)):(r=qg(r,i),o=n(o,a)),function(t){return o(r(t))}}function Hg(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<r;)i[a]=qg(t[a],t[a+1]),o[a]=n(e[a],e[a+1]);return function(e){var n=Hi(t,e,1,r)-1;return o[n](i[n](e))}}function Gg(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Yg(){var t,e,n,r,i,o,a=Lg,u=Lg,s=dg,c=Ug;function l(){return r=Math.min(a.length,u.length)>2?Hg:Wg,i=o=null,f}function f(e){return isNaN(e=+e)?n:(i||(i=r(a.map(t),u,s)))(t(c(e)))}return f.invert=function(n){return c(e((o||(o=r(u,a.map(t),ig)))(n)))},f.domain=function(t){return arguments.length?(a=Array.from(t,Pg),c===Ug||(c=Ig(a)),l()):a.slice()},f.range=function(t){return arguments.length?(u=Array.from(t),l()):u.slice()},f.rangeRound=function(t){return u=Array.from(t),s=mg,l()},f.clamp=function(t){return arguments.length?(c=t?Ig(a):Ug,f):c!==Ug},f.interpolate=function(t){return arguments.length?(s=t,l()):s},f.unknown=function(t){return arguments.length?(n=t,f):n},function(n,r){return t=n,e=r,l()}}function Vg(t,e){return Yg()(t,e)}var Xg=function(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]},Jg=function(t){return(t=Xg(Math.abs(t)))?t[1]:NaN},Zg=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Qg(t){return new Kg(t)}function Kg(t){if(!(e=Zg.exec(t)))throw new Error("invalid format: "+t);var e;this.fill=e[1]||" ",this.align=e[2]||">",this.sign=e[3]||"-",this.symbol=e[4]||"",this.zero=!!e[5],this.width=e[6]&&+e[6],this.comma=!!e[7],this.precision=e[8]&&+e[8].slice(1),this.trim=!!e[9],this.type=e[10]||""}Qg.prototype=Kg.prototype,Kg.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var tm,em,nm,rm,im=function(t){t:for(var e,n=t.length,r=1,i=-1;r<n;++r)switch(t[r]){case".":i=e=r;break;case"0":0===i&&(i=r),e=r;break;default:if(i>0){if(!+t[r])break t;i=0}}return i>0?t.slice(0,i)+t.slice(e+1):t},om=function(t,e){var n=Xg(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},am={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return om(100*t,e)},r:om,s:function(t,e){var n=Xg(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(tm=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Xg(t,Math.max(0,e+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},um=function(t){return t},sm=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],cm=function(t){var e,n,r=t.grouping&&t.thousands?(e=t.grouping,n=t.thousands,function(t,r){for(var i=t.length,o=[],a=0,u=e[0],s=0;i>0&&u>0&&(s+u+1>r&&(u=Math.max(1,r-s)),o.push(t.substring(i-=u,i+u)),!((s+=u+1)>r));)u=e[a=(a+1)%e.length];return o.reverse().join(n)}):um,i=t.currency,o=t.decimal,a=t.numerals?function(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}(t.numerals):um,u=t.percent||"%";function s(t){var e=(t=Qg(t)).fill,n=t.align,s=t.sign,c=t.symbol,l=t.zero,f=t.width,h=t.comma,d=t.precision,p=t.trim,g=t.type;"n"===g?(h=!0,g="g"):am[g]||(null==d&&(d=12),p=!0,g="g"),(l||"0"===e&&"="===n)&&(l=!0,e="0",n="=");var m="$"===c?i[0]:"#"===c&&/[boxX]/.test(g)?"0"+g.toLowerCase():"",v="$"===c?i[1]:/[%p]/.test(g)?u:"",y=am[g],b=/[defgprs%]/.test(g);function x(t){var i,u,c,x=m,_=v;if("c"===g)_=y(t)+_,t="";else{var w=(t=+t)<0;if(t=y(Math.abs(t),d),p&&(t=im(t)),w&&0==+t&&(w=!1),x=(w?"("===s?s:"-":"-"===s||"("===s?"":s)+x,_=("s"===g?sm[8+tm/3]:"")+_+(w&&"("===s?")":""),b)for(i=-1,u=t.length;++i<u;)if(48>(c=t.charCodeAt(i))||c>57){_=(46===c?o+t.slice(i+1):t.slice(i))+_,t=t.slice(0,i);break}}h&&!l&&(t=r(t,1/0));var O=x.length+t.length+_.length,k=O<f?new Array(f-O+1).join(e):"";switch(h&&l&&(t=r(k+t,k.length?f-_.length:1/0),k=""),n){case"<":t=x+t+_+k;break;case"=":t=x+k+t+_;break;case"^":t=k.slice(0,O=k.length>>1)+x+t+_+k.slice(O);break;default:t=k+x+t+_}return a(t)}return d=null==d?6:/[gprs]/.test(g)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),x.toString=function(){return t+""},x}return{format:s,formatPrefix:function(t,e){var n=s(((t=Qg(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Jg(e)/3))),i=Math.pow(10,-r),o=sm[8+r/3];return function(t){return n(i*t)+o}}}};function lm(t){return em=cm(t),nm=em.format,rm=em.formatPrefix,em}lm({decimal:".",thousands:",",grouping:[3],currency:["$",""]});var fm=function(t,e,n,r){var i,o=eo(t,e,n);switch((r=Qg(null==r?",f":r)).type){case"s":var a=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Jg(e)/3)))-Jg(Math.abs(t)))}(o,a))||(r.precision=i),rm(r,a);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Jg(e)-Jg(t))+1}(o,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(t){return Math.max(0,-Jg(Math.abs(t)))}(o))||(r.precision=i-2*("%"===r.type))}return nm(r)};function hm(t){var e=t.domain;return t.ticks=function(t){var n=e();return Ki(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return fm(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i=e(),o=0,a=i.length-1,u=i[o],s=i[a];return s<u&&(r=u,u=s,s=r,r=o,o=a,a=r),(r=to(u,s,n))>0?r=to(u=Math.floor(u/r)*r,s=Math.ceil(s/r)*r,n):r<0&&(r=to(u=Math.ceil(u*r)/r,s=Math.floor(s*r)/r,n)),r>0?(i[o]=Math.floor(u/r)*r,i[a]=Math.ceil(s/r)*r,e(i)):r<0&&(i[o]=Math.ceil(u*r)/r,i[a]=Math.floor(s*r)/r,e(i)),t},t}var dm=function(t,e){var n,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a<o&&(n=r,r=i,i=n,n=o,o=a,a=n),t[r]=e.floor(o),t[i]=e.ceil(a),t};function pm(t){return Math.log(t)}function gm(t){return Math.exp(t)}function mm(t){return-Math.log(-t)}function vm(t){return-Math.exp(-t)}function ym(t){return isFinite(t)?+("1e"+t):t<0?0:t}function bm(t){return function(e){return-t(-e)}}function xm(t){var e,n,r=t(pm,gm),i=r.domain,o=10;function a(){return e=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}(o),n=function(t){return 10===t?ym:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}(o),i()[0]<0?(e=bm(e),n=bm(n),t(mm,vm)):t(pm,gm),r}return r.base=function(t){return arguments.length?(o=+t,a()):o},r.domain=function(t){return arguments.length?(i(t),a()):i()},r.ticks=function(t){var r,a=i(),u=a[0],s=a[a.length-1];(r=s<u)&&(h=u,u=s,s=h);var c,l,f,h=e(u),d=e(s),p=null==t?10:+t,g=[];if(!(o%1)&&d-h<p){if(h=Math.round(h)-1,d=Math.round(d)+1,u>0){for(;h<d;++h)for(l=1,c=n(h);l<o;++l)if(!((f=c*l)<u)){if(f>s)break;g.push(f)}}else for(;h<d;++h)for(l=o-1,c=n(h);l>=1;--l)if(!((f=c*l)<u)){if(f>s)break;g.push(f)}}else g=Ki(h,d,Math.min(d-h,p)).map(n);return r?g.reverse():g},r.tickFormat=function(t,i){if(null==i&&(i=10===o?".0e":","),"function"!=typeof i&&(i=nm(i)),t===1/0)return i;null==t&&(t=10);var a=Math.max(1,o*t/r.ticks().length);return function(t){var r=t/n(Math.round(e(t)));return r*o<o-.5&&(r*=o),r<=a?i(t):""}},r.nice=function(){return i(dm(i(),{floor:function(t){return n(Math.floor(e(t)))},ceil:function(t){return n(Math.ceil(e(t)))}}))},r}function _m(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function wm(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Om(t){var e=1,n=t(_m(e),wm(e));return n.constant=function(n){return arguments.length?t(_m(e=+n),wm(e)):e},hm(n)}function km(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Am(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Em(t){return t<0?-t*t:t*t}function jm(t){var e=t(Ug,Ug),n=1;function r(){return 1===n?t(Ug,Ug):.5===n?t(Am,Em):t(km(n),km(1/n))}return e.exponent=function(t){return arguments.length?(n=+t,r()):n},hm(e)}function Sm(){var t=jm(Yg());return t.copy=function(){return Gg(t,Sm()).exponent(t.exponent())},Ld.apply(t,arguments),t}var Cm=1e3,Mm=60*Cm,Dm=60*Mm,Fm=24*Dm,Nm=7*Fm,zm=30*Fm,Tm=365*Fm;function $m(t){return new Date(t)}function Rm(t){return t instanceof Date?+t:+new Date(+t)}function Bm(t,e,n,r,i,o,a,u,s){var c=Vg(Ug,Ug),l=c.invert,f=c.domain,h=s(".%L"),d=s(":%S"),p=s("%I:%M"),g=s("%I %p"),m=s("%a %d"),v=s("%b %d"),y=s("%B"),b=s("%Y"),x=[[a,1,Cm],[a,5,5*Cm],[a,15,15*Cm],[a,30,30*Cm],[o,1,Mm],[o,5,5*Mm],[o,15,15*Mm],[o,30,30*Mm],[i,1,Dm],[i,3,3*Dm],[i,6,6*Dm],[i,12,12*Dm],[r,1,Fm],[r,2,2*Fm],[n,1,Nm],[e,1,zm],[e,3,3*zm],[t,1,Tm]];function _(u){return(a(u)<u?h:o(u)<u?d:i(u)<u?p:r(u)<u?g:e(u)<u?n(u)<u?m:v:t(u)<u?y:b)(u)}function w(e,n,r,i){if(null==e&&(e=10),"number"==typeof e){var o=Math.abs(r-n)/e,a=Ui(function(t){return t[2]}).right(x,o);a===x.length?(i=eo(n/Tm,r/Tm,e),e=t):a?(i=(a=x[o/x[a-1][2]<x[a][2]/o?a-1:a])[1],e=a[0]):(i=Math.max(eo(n,r,e),1),e=u)}return null==i?e:e.every(i)}return c.invert=function(t){return new Date(l(t))},c.domain=function(t){return arguments.length?f(Array.from(t,Rm)):f().map($m)},c.ticks=function(t,e){var n,r=f(),i=r[0],o=r[r.length-1],a=o<i;return a&&(n=i,i=o,o=n),n=(n=w(t,i,o,e))?n.range(i,o+1):[],a?n.reverse():n},c.tickFormat=function(t,e){return null==e?_:s(e)},c.nice=function(t,e){var n=f();return(t=w(t,n[0],n[n.length-1],e))?f(dm(n,t)):c},c.copy=function(){return Gg(c,Bm(t,e,n,r,i,o,a,u,s))},c}function Pm(){var t,e,n,r,i,o=0,a=1,u=Ug,s=!1;function c(e){return isNaN(e=+e)?i:u(0===n?.5:(e=(r(e)-t)*n,s?Math.max(0,Math.min(1,e)):e))}return c.domain=function(i){return arguments.length?([o,a]=i,t=r(o=+o),e=r(a=+a),n=t===e?0:1/(e-t),c):[o,a]},c.clamp=function(t){return arguments.length?(s=!!t,c):s},c.interpolator=function(t){return arguments.length?(u=t,c):u},c.unknown=function(t){return arguments.length?(i=t,c):i},function(i){return r=i,t=i(o),e=i(a),n=t===e?0:1/(e-t),c}}function Lm(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Um(){var t=hm(Pm()(Ug));return t.copy=function(){return Lm(t,Um())},Ud.apply(t,arguments)}function qm(){var t=jm(Pm());return t.copy=function(){return Lm(t,qm()).exponent(t.exponent())},Ud.apply(t,arguments)}function Im(){var t,e,n,r,i,o,a,u=0,s=.5,c=1,l=Ug,f=!1;function h(t){return isNaN(t=+t)?a:(t=.5+((t=+o(t))-e)*(t<e?r:i),l(f?Math.max(0,Math.min(1,t)):t))}return h.domain=function(a){return arguments.length?([u,s,c]=a,t=o(u=+u),e=o(s=+s),n=o(c=+c),r=t===e?0:.5/(e-t),i=e===n?0:.5/(n-e),h):[u,s,c]},h.clamp=function(t){return arguments.length?(f=!!t,h):f},h.interpolator=function(t){return arguments.length?(l=t,h):l},h.unknown=function(t){return arguments.length?(a=t,h):a},function(a){return o=a,t=a(u),e=a(s),n=a(c),r=t===e?0:.5/(e-t),i=e===n?0:.5/(n-e),h}}function Wm(){var t=jm(Im());return t.copy=function(){return Lm(t,Wm()).exponent(t.exponent())},Ud.apply(t,arguments)}function Hm(){var t,e,n=Id().unknown(void 0),r=n.domain,i=n.range,o=[0,1],a=!1,u=0,s=0,c=.5;function l(){var n=r().length,l=o[1]<o[0],f=o[l-0],h=o[1-l],d=fd(n,u,s);t=(h-f)/(d||1),a&&(t=Math.floor(t)),f+=(h-f-t*(n-u))*c,e=t*(1-u),a&&(f=Math.round(f),e=Math.round(e));var p=Xi(n).map(function(e){return f+t*e});return i(l?p.reverse():p)}return delete n.unknown,n.domain=function(t){return arguments.length?(r(t),l()):r()},n.range=function(t){return arguments.length?(o=[+t[0],+t[1]],l()):o.slice()},n.rangeRound=function(t){return o=[+t[0],+t[1]],a=!0,l()},n.bandwidth=function(){return e},n.step=function(){return t},n.round=function(t){return arguments.length?(a=!!t,l()):a},n.padding=function(t){return arguments.length?(s=Math.max(0,Math.min(1,t)),u=s,l()):u},n.paddingInner=function(t){return arguments.length?(u=Math.max(0,Math.min(1,t)),l()):u},n.paddingOuter=function(t){return arguments.length?(s=Math.max(0,Math.min(1,t)),l()):s},n.align=function(t){return arguments.length?(c=Math.max(0,Math.min(1,t)),l()):c},n.invertRange=function(t){if(null!=t[0]&&null!=t[1]){var n,a,u,s=+t[0],c=+t[1],l=o[1]<o[0],f=l?i().reverse():i(),h=f.length-1;if(s==s&&c==c&&(c<s&&(u=s,s=c,c=u),!(c<f[0]||s>o[1-l])))return n=Math.max(0,Ii(f,s)-1),a=s===c?n:Ii(f,c)-1,s-f[n]>e+1e-10&&++n,l&&(u=n,n=h-a,a=h-u),n>a?void 0:r().slice(n,a+1)}},n.invert=function(t){var e=n.invertRange([t,t]);return e?e[0]:e},n.copy=function(){return Hm().domain(r()).range(o).round(a).paddingInner(u).paddingOuter(s).align(c)},l()}var Gm=Array.prototype.map;function Ym(t){return Gm.call(t,function(t){return+t})}var Vm=Array.prototype.slice;function Xm(t,e){return arguments.length>1?(Jm[t]=function(t,e){return function(){var n=e();return n.invertRange||(n.invertRange=n.invert?Bd(n):n.invertExtent?Pd(n):void 0),n.type=t,n}}(t,e),this):Jm.hasOwnProperty(t)?Jm[t]:void 0}var Jm={[hd]:function t(e){var n;function r(t){return isNaN(t=+t)?n:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(e=Array.from(t,Pg),r):e.slice()},r.unknown=function(t){return arguments.length?(n=t,r):n},r.copy=function(){return t(e).unknown(n)},e=arguments.length?Array.from(e,Pg):[0,1],hm(r)},[dd]:function t(){var e=Vg(Ug,Ug);return e.copy=function(){return Gg(e,t())},Ld.apply(e,arguments),hm(e)},[pd]:function t(){var e=xm(Yg()).domain([1,10]);return e.copy=function(){return Gg(e,t()).base(e.base())},Ld.apply(e,arguments),e},[gd]:Sm,[md]:function(){return Sm.apply(null,arguments).exponent(.5)},[vd]:function t(){var e=Om(Yg());return e.copy=function(){return Gg(e,t()).constant(e.constant())},Ld.apply(e,arguments)},[yd]:function(){return Ld.apply(Bm(yn,mn,sn,an,rn,en,Ke,Xe,Un).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},[bd]:function(){return Ld.apply(Bm($n,zn,En,kn,wn,xn,Ke,Xe,In).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},[xd]:Um,[xd+"-"+dd]:Um,[xd+"-"+pd]:function t(){var e=xm(Pm()).domain([1,10]);return e.copy=function(){return Lm(e,t()).base(e.base())},Ud.apply(e,arguments)},[xd+"-"+gd]:qm,[xd+"-"+md]:function(){return qm.apply(null,arguments).exponent(.5)},[xd+"-"+vd]:function t(){var e=Om(Pm());return e.copy=function(){return Lm(e,t()).constant(e.constant())},Ud.apply(e,arguments)},[_d+"-"+dd]:function t(){var e=hm(Im()(Ug));return e.copy=function(){return Lm(e,t())},Ud.apply(e,arguments)},[_d+"-"+pd]:function t(){var e=xm(Im()).domain([.1,1,10]);return e.copy=function(){return Lm(e,t()).base(e.base())},Ud.apply(e,arguments)},[_d+"-"+gd]:Wm,[_d+"-"+md]:function(){return Wm.apply(null,arguments).exponent(.5)},[_d+"-"+vd]:function t(){var e=Om(Im());return e.copy=function(){return Lm(e,t()).constant(e.constant())},Ud.apply(e,arguments)},[wd]:function t(){var e,n=[],r=[],i=[];function o(){var t=0,e=Math.max(1,r.length);for(i=new Array(e-1);++t<e;)i[t-1]=ro(n,t/e);return a}function a(t){return isNaN(t=+t)?e:r[Hi(i,t)]}return a.invertExtent=function(t){var e=r.indexOf(t);return e<0?[NaN,NaN]:[e>0?i[e-1]:n[0],e<i.length?i[e]:n[n.length-1]]},a.domain=function(t){if(!arguments.length)return n.slice();n=[];for(let e of t)null==e||isNaN(e=+e)||n.push(e);return n.sort(Li),o()},a.range=function(t){return arguments.length?(r=Array.from(t),o()):r.slice()},a.unknown=function(t){return arguments.length?(e=t,a):e},a.quantiles=function(){return i.slice()},a.copy=function(){return t().domain(n).range(r).unknown(e)},Ld.apply(a,arguments)},[Od]:function t(){var e,n=0,r=1,i=1,o=[.5],a=[0,1];function u(t){return t<=t?a[Hi(o,t,0,i)]:e}function s(){var t=-1;for(o=new Array(i);++t<i;)o[t]=((t+1)*r-(t-i)*n)/(i+1);return u}return u.domain=function(t){return arguments.length?([n,r]=t,n=+n,r=+r,s()):[n,r]},u.range=function(t){return arguments.length?(i=(a=Array.from(t)).length-1,s()):a.slice()},u.invertExtent=function(t){var e=a.indexOf(t);return e<0?[NaN,NaN]:e<1?[n,o[0]]:e>=i?[o[i-1],r]:[o[e-1],o[e]]},u.unknown=function(t){return arguments.length?(e=t,u):u},u.thresholds=function(){return o.slice()},u.copy=function(){return t().domain([n,r]).range(a).unknown(e)},Ld.apply(hm(u),arguments)},[kd]:function t(){var e,n=[.5],r=[0,1],i=1;function o(t){return t<=t?r[Hi(n,t,0,i)]:e}return o.domain=function(t){return arguments.length?(n=Array.from(t),i=Math.min(n.length,r.length-1),o):n.slice()},o.range=function(t){return arguments.length?(r=Array.from(t),i=Math.min(n.length,r.length-1),o):r.slice()},o.invertExtent=function(t){var e=r.indexOf(t);return[n[e-1],n[e]]},o.unknown=function(t){return arguments.length?(e=t,o):e},o.copy=function(){return t().domain(n).range(r).unknown(e)},Ld.apply(o,arguments)},[Sd]:function t(){var e=[],n=[];function r(t){return null==t||t!=t?void 0:n[(Hi(e,t)-1)%n.length]}return r.domain=function(t){return arguments.length?(e=Ym(t),r):e.slice()},r.range=function(t){return arguments.length?(n=Vm.call(t),r):n.slice()},r.tickFormat=function(t,n){return fm(e[0],Object(Mt.R)(e),null==t?10:t,n)},r.copy=function(){return t().domain(r.domain()).range(r.range())},r},[Ad]:Id,[jd]:Hm,[Ed]:function(){return function t(e){var n=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,e.copy=function(){return t(n())},e}(Hm().paddingInner(1))}};for(var Zm in Jm)Xm(Zm,Jm[Zm]);const Qm=["clamp","base","constant","exponent"];function Km(t,e){var n=e[0],r=Object(Mt.R)(e)-n;return function(e){return t(n+e*r)}}function tv(t,e,n){return $g(rv(e||"rgb",n),t)}function ev(t,e){for(var n=new Array(e),r=e+1,i=0;i<e;)n[i]=t(++i/r);return n}function nv(t,e,n){var r,i,o,a=n-e;return a&&isFinite(a)?(r=(i=t.type).indexOf("-"),i=r<0?i:i.slice(r+1),o=Xm(i)().domain([e,n]).range([0,1]),Qm.forEach(e=>t[e]?o[e](t[e]()):0),o):Object(Mt.l)(.5)}function rv(t,e){var n=o[function(t){return"interpolate"+t.toLowerCase().split("-").map(function(t){return t[0].toUpperCase()+t.slice(1)}).join("")}(t)];return null!=e&&n&&n.gamma?n.gamma(e):n}function iv(t){for(var e=t.length/6|0,n=new Array(e),r=0;r<e;)n[r]="#"+t.slice(6*r,6*++r);return n}function ov(t,e){for(let n in t)uv(n,e(t[n]))}const av={};function uv(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(av[t]=e,this):av[t]}function sv(t,e,n){var r;return Object(Mt.D)(e)&&null!=n&&(e=Math.min(e,~~(Object(Mt.U)(t.domain())/n)||1)),Object(Mt.E)(e)&&(r=e.step,e=e.interval),Object(Mt.G)(e)&&(e=Rd(e,t.type)||Object(Mt.n)("Only time and utc scales accept interval strings."),r&&(e=e.every(r))),e}function cv(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(Object(Mt.R)(r));if(i>o&&(r=o,o=i,i=r),e=e.filter(function(e){return e=t(e),i<=e&&e<=o}),n>0&&e.length>1){for(var a=[e[0],Object(Mt.R)(e)];e.length>n&&e.length>=3;)e=e.filter(function(t,e){return!(e%2)});e.length<3&&(e=a)}return e}function lv(t,e){return t.bins?cv(t,function(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(t,e){return!(e%r)})}(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function fv(t,e,n,r){var i,o,a=t.tickFormat?t.tickFormat(e,n):n&&r===yd?Un(n):n?nm(n):String;if(Dd(t.type)){var u=function(t){var e=Qg(t||",");if(null==e.precision){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1}return n=nm(e),r=nm(".1f")(1)[1],function(t){var e,i,o=n(t),a=o.indexOf(r);if(a<0)return o;for(e=function(t,e){var n,r=t.lastIndexOf("e");if(r>0)return r;for(r=t.length;--r>e;)if((n=t.charCodeAt(r))>=48&&n<=57)return r+1}(o,a),i=e<o.length?o.slice(e):"";--e>a;)if("0"!==o[e]){++e;break}return o.slice(0,e)+i}}return nm(e);var n,r}(n);a=t.bins?u:(i=a,o=u,function(t){return i(t)?o(t):""})}return a}function hv(t){Oi.call(this,null,t)}function dv(t){Oi.call(this,null,t)}function pv(){return Bt({})}function gv(t){return t.exit}function mv(t){Oi.call(this,null,t)}ov({category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"},iv),ov({blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},t=>tv(iv(t))),Object(Mt.x)(hv,Oi).transform=function(t,e){if(this.value&&!t.modified())return e.StopPropagation;var n=e.fork(e.NO_SOURCE|e.NO_FIELDS),r=this.value,i=t.scale,o=sv(i,null==t.count?t.values?t.values.length:10:t.count,t.minstep),a=t.format||fv(i,o,t.formatSpecifier,t.formatType),u=t.values?cv(i,t.values,o):lv(i,o);return r&&(n.rem=r),r=u.map(function(t,e){return Bt({index:e/(u.length-1||1),value:t,label:a(t)})}),t.extra&&r.length&&r.push(Bt({index:-1,extra:{value:r[0].value},label:""})),n.source=r,n.add=r,this.value=r,n},Object(Mt.x)(dv,Oi).transform=function(t,e){var n=e.dataflow,r=e.fork(e.NO_SOURCE|e.NO_FIELDS),i=t.item||pv,o=t.key||$t,a=this.value;return Object(Mt.z)(r.encode)&&(r.encode=null),a&&(t.modified("key")||e.modified(o))&&Object(Mt.n)("DataJoin does not support modified key function or fields."),a||(e=e.addAll(),this.value=a=Object(Mt.s)().test(gv),a.lookup=function(t){return a.get(o(t))}),e.visit(e.ADD,function(t){var e=o(t),n=a.get(e);n?n.exit?(a.empty--,r.add.push(n)):r.mod.push(n):(a.set(e,n=i(t)),r.add.push(n)),n.datum=t,n.exit=!1}),e.visit(e.MOD,function(t){var e=o(t),n=a.get(e);n&&(n.datum=t,r.mod.push(n))}),e.visit(e.REM,function(t){var e=o(t),n=a.get(e);t!==n.datum||n.exit||(r.rem.push(n),n.exit=!0,++a.empty)}),e.changed(e.ADD_MOD)&&r.modifies("datum"),t.clean&&a.empty>n.cleanThreshold&&n.runAfter(a.clean),r},Object(Mt.x)(mv,Oi).transform=function(t,e){var n=e.fork(e.ADD_REM),r=t.mod||!1,i=t.encoders,o=e.encode;if(Object(Mt.z)(o)){if(!n.changed()&&!o.every(function(t){return i[t]}))return e.StopPropagation;o=o[0],n.encode=null}var a="enter"===o,u=i.update||Mt.r,s=i.enter||Mt.r,c=i.exit||Mt.r,l=(o&&!a?i[o]:u)||Mt.r;if(e.changed(e.ADD)&&(e.visit(e.ADD,function(e){s(e,t),u(e,t)}),n.modifies(s.output),n.modifies(u.output),l!==Mt.r&&l!==u&&(e.visit(e.ADD,function(e){l(e,t)}),n.modifies(l.output))),e.changed(e.REM)&&c!==Mt.r&&(e.visit(e.REM,function(e){c(e,t)}),n.modifies(c.output)),a||l!==Mt.r){var f=e.MOD|(t.modified()?e.REFLOW:0);a?(e.visit(f,function(e){var i=s(e,t)||r;(l(e,t)||i)&&n.mod.push(e)}),n.mod.length&&n.modifies(s.output)):e.visit(f,function(e){(l(e,t)||r)&&n.mod.push(e)}),n.mod.length&&n.modifies(l.output)}return n.changed()?n:e.StopPropagation};var vv="symbol",yv="discrete";const bv={[wd]:"quantiles",[Od]:"thresholds",[kd]:"domain"},xv={[wd]:"quantiles",[Od]:"domain"};function _v(t,e){return t.bins?function(t){const e=t.slice(0,-1);return e.max=Object(Mt.R)(t),e}(t.bins):bv[t.type]?function(t){const e=[-1/0].concat(t);return e.max=1/0,e}(t[bv[t.type]]()):lv(t,e)}function wv(t,e,n,r,i){const o=xv[t.type]&&i!==yd?function(t,e){var n,r=t[xv[t.type]](),i=r.length,o=i>1?r[1]-r[0]:r[0];for(n=1;n<i;++n)o=Math.min(o,r[n]-r[n-1]);return fm(0,o,30,e)}(t,r):fv(t,e,r,i);return n===vv&&function(t){return bv[t.type]||t.bins}(t)?function(t){return function(e,n,r){var i=r[n+1]||r.max||1/0,o=Ov(e,t),a=Ov(i,t);return o&&a?o+"–"+a:a?"< "+a:"≥ "+o}}(o):n===yv?function(t){return function(e,n){return n?t(e):null}}(o):function(t){return function(e){return t(e)}}(o)}function Ov(t,e){return isFinite(t)?e(t):null}function kv(t){Oi.call(this,[],t)}Object(Mt.x)(kv,Oi).transform=function(t,e){if(null!=this.value&&!t.modified())return e.StopPropagation;var n,r,i,o,a=e.fork(e.NO_SOURCE|e.NO_FIELDS),u=this.value,s=t.type||vv,c=t.scale,l=sv(c,null==t.count?5:t.count,t.minstep),f=t.format||wv(c,l,s,t.formatSpecifier,t.formatType),h=t.values||_v(c,l);return u&&(a.rem=u),s===vv?(Object(Mt.C)(i=t.size)?(t.values||0!==c(h[0])||(h=h.slice(1)),o=h.reduce(function(e,n){return Math.max(e,i(n,t))},0)):i=Object(Mt.l)(o=i||8),u=h.map(function(e,n){return Bt({index:n,label:f(e,n,h),value:e,offset:o,size:i(e,t)})})):"gradient"===s?(n=c.domain(),r=nv(c,n[0],Object(Mt.R)(n)),h.length<3&&!t.values&&n[0]!==Object(Mt.R)(n)&&(h=[n[0],Object(Mt.R)(n)]),u=h.map(function(t,e){return Bt({index:e,label:f(t,e,h),value:t,perc:r(t)})})):(i=h.length-1,r=function(t){var e=t.domain(),n=e.length-1,r=+e[0],i=+Object(Mt.R)(e),o=i-r;if(t.type===kd){var a=n?o/n:.1;o=(i+=a)-(r-=a)}return function(t){return(t-r)/o}}(c),u=h.map(function(t,e){return Bt({index:e,label:f(t,e,h),value:t,perc:e?r(t):0,perc2:e===i?1:r(h[e+1])})})),a.source=u,a.add=u,this.value=u,a};var Av=Object(Mt.s)({line:Dv,"line-radial":function(t,e,n,r){return Dv(e*Math.cos(t),e*Math.sin(t),r*Math.cos(n),r*Math.sin(n))},arc:Fv,"arc-radial":function(t,e,n,r){return Fv(e*Math.cos(t),e*Math.sin(t),r*Math.cos(n),r*Math.sin(n))},curve:Nv,"curve-radial":function(t,e,n,r){return Nv(e*Math.cos(t),e*Math.sin(t),r*Math.cos(n),r*Math.sin(n))},"orthogonal-horizontal":function(t,e,n,r){return"M"+t+","+e+"V"+r+"H"+n},"orthogonal-vertical":function(t,e,n,r){return"M"+t+","+e+"H"+n+"V"+r},"orthogonal-radial":function(t,e,n,r){var i=Math.cos(t),o=Math.sin(t),a=Math.cos(n),u=Math.sin(n),s=Math.abs(n-t)>Math.PI?n<=t:n>t;return"M"+e*i+","+e*o+"A"+e+","+e+" 0 0,"+(s?1:0)+" "+e*a+","+e*u+"L"+r*a+","+r*u},"diagonal-horizontal":function(t,e,n,r){var i=(t+n)/2;return"M"+t+","+e+"C"+i+","+e+" "+i+","+r+" "+n+","+r},"diagonal-vertical":function(t,e,n,r){var i=(e+r)/2;return"M"+t+","+e+"C"+t+","+i+" "+n+","+i+" "+n+","+r},"diagonal-radial":function(t,e,n,r){var i=Math.cos(t),o=Math.sin(t),a=Math.cos(n),u=Math.sin(n),s=(e+r)/2;return"M"+e*i+","+e*o+"C"+s*i+","+s*o+" "+s*a+","+s*u+" "+r*a+","+r*u}});function Ev(t){return t.source.x}function jv(t){return t.source.y}function Sv(t){return t.target.x}function Cv(t){return t.target.y}function Mv(t){Oi.call(this,{},t)}function Dv(t,e,n,r){return"M"+t+","+e+"L"+n+","+r}function Fv(t,e,n,r){var i=n-t,o=r-e,a=Math.sqrt(i*i+o*o)/2;return"M"+t+","+e+"A"+a+","+a+" "+180*Math.atan2(o,i)/Math.PI+" 0 1 "+n+","+r}function Nv(t,e,n,r){var i=n-t,o=r-e,a=.2*(i+o),u=.2*(o-i);return"M"+t+","+e+"C"+(t+a)+","+(e+u)+" "+(n+u)+","+(r-a)+" "+n+","+r}function zv(t){Oi.call(this,null,t)}Mv.Definition={type:"LinkPath",metadata:{modifies:!0},params:[{name:"sourceX",type:"field",default:"source.x"},{name:"sourceY",type:"field",default:"source.y"},{name:"targetX",type:"field",default:"target.x"},{name:"targetY",type:"field",default:"target.y"},{name:"orient",type:"enum",default:"vertical",values:["horizontal","vertical","radial"]},{name:"shape",type:"enum",default:"line",values:["line","arc","curve","diagonal","orthogonal"]},{name:"require",type:"signal"},{name:"as",type:"string",default:"path"}]},Object(Mt.x)(Mv,Oi).transform=function(t,e){var n=t.sourceX||Ev,r=t.sourceY||jv,i=t.targetX||Sv,o=t.targetY||Cv,a=t.as||"path",u=t.orient||"vertical",s=t.shape||"line",c=Av.get(s+"-"+u)||Av.get(s);return c||Object(Mt.n)("LinkPath unsupported type: "+t.shape+(t.orient?"-"+t.orient:"")),e.visit(e.SOURCE,function(t){t[a]=c(n(t),r(t),i(t),o(t))}),e.reflow(t.modified()).modifies(a)},zv.Definition={type:"Pie",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"startAngle",type:"number",default:0},{name:"endAngle",type:"number",default:6.283185307179586},{name:"sort",type:"boolean",default:!1},{name:"as",type:"string",array:!0,length:2,default:["startAngle","endAngle"]}]},Object(Mt.x)(zv,Oi).transform=function(t,e){var n,r,i,o=t.as||["startAngle","endAngle"],a=o[0],u=o[1],s=t.field||Mt.L,c=t.startAngle||0,l=null!=t.endAngle?t.endAngle:2*Math.PI,f=e.source,h=f.map(s),d=h.length,p=c,g=(l-c)/function(t,e){let n=0;if(void 0===e)for(let e of t)(e=+e)&&(n+=e);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}(h),m=Xi(d);for(t.sort&&m.sort(function(t,e){return h[t]-h[e]}),n=0;n<d;++n)i=h[m[n]],(r=f[m[n]])[a]=p,r[u]=p+=i*g;return this.value=h,e.reflow(t.modified()).modifies(o)};var Tv=5;function $v(t){return Fd(t)&&t!==xd}var Rv=Object(Mt.ab)(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma"]);function Bv(t){Oi.call(this,null,t),this.modified(!0)}function Pv(t,e,n){Dd(t)&&(Math.abs(e.reduce(function(t,e){return t+(e<0?-1:e>0?1:0)},0))!==e.length&&n.warn("Log scale domain includes zero: "+Object(Mt.W)(e)));return e}function Lv(t,e,n){return Object(Mt.C)(t)&&(e||n)?Km(t,Uv(e||[0,1],n)):t}function Uv(t,e){return e?t.slice().reverse():t}function qv(t){Oi.call(this,null,t)}Object(Mt.x)(Bv,Oi).transform=function(t,e){var n=e.dataflow,r=this.value,i=function(t){var e,n=t.type,r="";if(n===xd)return xd+"-"+dd;(function(t){const e=t.type;return Fd(e)&&e!==yd&&e!==bd&&(t.scheme||t.range&&t.range.length&&t.range.every(Mt.G))})(t)&&(e=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(null!=t.domainMid):0,r=2===e?xd+"-":3===e?_d+"-":"");return(r+n||dd).toLowerCase()}(t);for(i in r&&i===r.type||(this.value=r=Xm(i)()),t)if(!Rv[i]){if("padding"===i&&$v(r.type))continue;Object(Mt.C)(r[i])?r[i](t[i]):n.warn("Unsupported scale property: "+i)}return function(t,e,n){var r=e.round||!1,i=e.range;if(null!=e.rangeStep)i=function(t,e,n){t!==jd&&t!==Ed&&Object(Mt.n)("Only band and point scales support rangeStep.");var r=(null!=e.paddingOuter?e.paddingOuter:e.padding)||0,i=t===Ed?1:(null!=e.paddingInner?e.paddingInner:e.padding)||0;return[0,e.rangeStep*fd(n,i,r)]}(t.type,e,n);else if(e.scheme){if(i=function(t,e,n){var r,i,o=e.schemeExtent;Object(Mt.z)(e.scheme)?i=tv(e.scheme,e.interpolate,e.interpolateGamma):(r=e.scheme.toLowerCase(),(i=uv(r))||Object(Mt.n)("Unrecognized scheme name: "+e.scheme));return n=t===kd?n+1:t===Sd?n-1:t===wd||t===Od?+e.schemeCount||Tv:n,Md(t)?Lv(i,o,e.reverse):Object(Mt.C)(i)?ev(Lv(i,o),n):t===Ad?i:i.slice(0,n)}(t.type,e,n),Object(Mt.C)(i))return t.interpolator(i)}else if(i&&Md(t.type))return t.interpolator(tv(Uv(i,e.reverse),e.interpolate,e.interpolateGamma));i&&e.interpolate&&t.interpolate?t.interpolate(rv(e.interpolate,e.interpolateGamma)):Object(Mt.C)(t.round)?t.round(r):Object(Mt.C)(t.rangeRound)&&t.interpolate(r?mg:dg);i&&t.range(Uv(i,e.reverse))}(r,t,function(t,e,n){let r=e.bins;if(r&&!Object(Mt.z)(r)){const e=(null==r.start||null==r.stop)&&t.domain(),n=null==r.start?e[0]:r.start,i=null==r.stop?Object(Mt.R)(e):r.stop,o=r.step;o||Object(Mt.n)("Scale bins parameter missing step property."),r=Xi(n,i+o,o)}r?t.bins=r:t.bins&&delete t.bins;t.type===Sd&&(r?e.domain||e.domainRaw||(t.domain(r),n=r.length):t.bins=t.domain());return n}(r,t,function(t,e,n){var r=function(t,e,n){return e?(t.domain(Pv(t.type,e,n)),e.length):-1}(t,e.domainRaw,n);if(r>-1)return r;var i,o,a=e.domain,u=t.type,s=e.zero||void 0===e.zero&&function(t){const e=t.type;return!t.bins&&(e===dd||e===gd||e===md)}(t);if(!a)return 0;$v(u)&&e.padding&&a[0]!==Object(Mt.R)(a)&&(a=function(t,e,n,r,i,o){var a=Math.abs(Object(Mt.R)(n)-n[0]),u=a/(a-2*r),s=t===pd?Object(Mt.ib)(e,null,u):t===md?Object(Mt.jb)(e,null,u,.5):t===gd?Object(Mt.jb)(e,null,u,i||1):t===vd?Object(Mt.kb)(e,null,u,o||1):Object(Mt.hb)(e,null,u);return(e=e.slice())[0]=s[0],e[e.length-1]=s[1],e}(u,a,e.range,e.padding,e.exponent,e.constant));(s||null!=e.domainMin||null!=e.domainMax||null!=e.domainMid)&&(i=(a=a.slice()).length-1||1,s&&(a[0]>0&&(a[0]=0),a[i]<0&&(a[i]=0)),null!=e.domainMin&&(a[0]=e.domainMin),null!=e.domainMax&&(a[i]=e.domainMax),null!=e.domainMid&&(((o=e.domainMid)<a[0]||o>a[i])&&n.warn("Scale domainMid exceeds domain min or max.",o),a.splice(i,0,o)));t.domain(Pv(u,a,n)),u===Ad&&t.unknown(e.domainImplicit?qd:void 0);e.nice&&t.nice&&t.nice(!0!==e.nice&&sv(t,e.nice)||null);return a.length}(r,t,n))),e.fork(e.NO_SOURCE|e.NO_FIELDS)},Object(Mt.x)(qv,Oi).transform=function(t,e){var n=t.modified("sort")||e.changed(e.ADD)||e.modified(t.sort.fields)||e.modified("datum");return n&&e.source.sort(t.sort),this.modified(n),e};var Iv=["y0","y1"];function Wv(t){Oi.call(this,null,t)}function Hv(t,e,n,r,i){for(var o,a=(e-t.sum)/2,u=t.length,s=0;s<u;++s)(o=t[s])[r]=a,o[i]=a+=Math.abs(n(o))}function Gv(t,e,n,r,i){for(var o,a=1/t.sum,u=0,s=t.length,c=0,l=0;c<s;++c)(o=t[c])[r]=u,o[i]=u=a*(l+=Math.abs(n(o)))}function Yv(t,e,n,r,i){for(var o,a,u=0,s=0,c=t.length,l=0;l<c;++l)(o=+n(a=t[l]))<0?(a[r]=s,a[i]=s+=o):(a[r]=u,a[i]=u+=o)}Wv.Definition={type:"Stack",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"groupby",type:"field",array:!0},{name:"sort",type:"compare"},{name:"offset",type:"enum",default:"zero",values:["zero","center","normalize"]},{name:"as",type:"string",array:!0,length:2,default:Iv}]},Object(Mt.x)(Wv,Oi).transform=function(t,e){var n,r,i,o,a=t.as||Iv,u=a[0],s=a[1],c=t.field||Mt.L,l="center"===t.offset?Hv:"normalize"===t.offset?Gv:Yv;for(n=function(t,e,n,r){var i,o,a,u,s,c,l,f,h,d=[],p=function(t){return t(s)};if(null==e)d.push(t.slice());else for(i={},o=0,a=t.length;o<a;++o)s=t[o],c=e.map(p),(l=i[c])||(i[c]=l=[],d.push(l)),l.push(s);for(c=0,h=0,u=d.length;c<u;++c){for(l=d[c],o=0,f=0,a=l.length;o<a;++o)f+=Math.abs(r(l[o]));l.sum=f,f>h&&(h=f),n&&l.sort(n)}return d.max=h,d}(e.source,t.groupby,t.sort,c),r=0,i=n.length,o=n.max;r<i;++r)l(n[r],o,c,u,s);return e.reflow(t.modified()).modifies(a)};var Vv=function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN};var Xv,Jv;1===(Xv=Vv).length&&(Jv=Xv,Xv=function(t,e){return Vv(Jv(t),e)});var Zv=function(t,e){var n,r,i,o=t.length,a=-1;if(null==e){for(;++a<o;)if(null!=(n=t[a])&&n>=n)for(r=i=n;++a<o;)null!=(n=t[a])&&(r>n&&(r=n),i<n&&(i=n))}else for(;++a<o;)if(null!=(n=e(t[a],a,t))&&n>=n)for(r=i=n;++a<o;)null!=(n=e(t[a],a,t))&&(r>n&&(r=n),i<n&&(i=n));return[r,i]},Qv=Array.prototype,Kv=(Qv.slice,Qv.map,function(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((e-t)/n)),o=new Array(i);++r<i;)o[r]=t+r*n;return o}),ty=Math.sqrt(50),ey=Math.sqrt(10),ny=Math.sqrt(2);function ry(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=ty?i*=10:o>=ey?i*=5:o>=ny&&(i*=2),e<t?-i:i}var iy=function(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1},oy=function(t,e){var n,r,i=t.length,o=-1;if(null==e){for(;++o<i;)if(null!=(n=t[o])&&n>=n)for(r=n;++o<i;)null!=(n=t[o])&&n>r&&(r=n)}else for(;++o<i;)if(null!=(n=e(t[o],o,t))&&n>=n)for(r=n;++o<i;)null!=(n=e(t[o],o,t))&&n>r&&(r=n);return r};var ay=Array.prototype.slice,uy=function(t,e){return t-e},sy=function(t){for(var e=0,n=t.length,r=t[n-1][1]*t[0][0]-t[n-1][0]*t[0][1];++e<n;)r+=t[e-1][1]*t[e][0]-t[e-1][0]*t[e][1];return r},cy=function(t){return function(){return t}},ly=function(t,e){for(var n,r=-1,i=e.length;++r<i;)if(n=fy(t,e[r]))return n;return 0};function fy(t,e){for(var n=e[0],r=e[1],i=-1,o=0,a=t.length,u=a-1;o<a;u=o++){var s=t[o],c=s[0],l=s[1],f=t[u],h=f[0],d=f[1];if(hy(s,f,e))return 0;l>r!=d>r&&n<(h-c)*(r-l)/(d-l)+c&&(i=-i)}return i}function hy(t,e,n){var r,i,o,a;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(i=t[r=+(t[0]===e[0])],o=n[r],a=e[r],i<=o&&o<=a||a<=o&&o<=i)}var dy=function(){},py=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]],gy=function(){var t=1,e=1,n=iy,r=u;function i(t){var e=n(t);if(Array.isArray(e))e=e.slice().sort(uy);else{var r=Zv(t),i=r[0],a=r[1];e=ry(i,a,e),e=Kv(Math.floor(i/e)*e,Math.floor(a/e)*e,e)}return e.map(function(e){return o(t,e)})}function o(n,i){var o=[],u=[];return function(n,r,i){var o,u,s,c,l,f,h=new Array,d=new Array;o=u=-1,c=n[0]>=r,py[c<<1].forEach(p);for(;++o<t-1;)s=c,c=n[o+1]>=r,py[s|c<<1].forEach(p);py[c<<0].forEach(p);for(;++u<e-1;){for(o=-1,c=n[u*t+t]>=r,l=n[u*t]>=r,py[c<<1|l<<2].forEach(p);++o<t-1;)s=c,c=n[u*t+t+o+1]>=r,f=l,l=n[u*t+o+1]>=r,py[s|c<<1|l<<2|f<<3].forEach(p);py[c|l<<3].forEach(p)}o=-1,l=n[u*t]>=r,py[l<<2].forEach(p);for(;++o<t-1;)f=l,l=n[u*t+o+1]>=r,py[l<<2|f<<3].forEach(p);function p(t){var e,n,r=[t[0][0]+o,t[0][1]+u],s=[t[1][0]+o,t[1][1]+u],c=a(r),l=a(s);(e=d[c])?(n=h[l])?(delete d[e.end],delete h[n.start],e===n?(e.ring.push(s),i(e.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete d[e.end],e.ring.push(s),d[e.end=l]=e):(e=h[l])?(n=d[c])?(delete h[e.start],delete d[n.end],e===n?(e.ring.push(s),i(e.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete h[e.start],e.ring.unshift(r),h[e.start=c]=e):h[c]=d[l]={start:c,end:l,ring:[r,s]}}py[l<<3].forEach(p)}(n,i,function(t){r(t,n,i),sy(t)>0?o.push([t]):u.push(t)}),u.forEach(function(t){for(var e,n=0,r=o.length;n<r;++n)if(-1!==ly((e=o[n])[0],t))return void e.push(t)}),{type:"MultiPolygon",value:i,coordinates:o}}function a(e){return 2*e[0]+e[1]*(t+1)*4}function u(n,r,i){n.forEach(function(n){var o,a=n[0],u=n[1],s=0|a,c=0|u,l=r[c*t+s];a>0&&a<t&&s===a&&(o=r[c*t+s-1],n[0]=a+(i-o)/(l-o)-.5),u>0&&u<e&&c===u&&(o=r[(c-1)*t+s],n[1]=u+(i-o)/(l-o)-.5)})}return i.contour=o,i.size=function(n){if(!arguments.length)return[t,e];var r=Math.ceil(n[0]),o=Math.ceil(n[1]);if(!(r>0&&o>0))throw new Error("invalid size");return t=r,e=o,i},i.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?cy(ay.call(t)):cy(t),i):n},i.smooth=function(t){return arguments.length?(r=t?u:dy,i):r===u},i};function my(t,e,n){for(var r=t.width,i=t.height,o=1+(n<<1),a=0;a<i;++a)for(var u=0,s=0;u<r+n;++u)u<r&&(s+=t.data[u+a*r]),u>=n&&(u>=o&&(s-=t.data[u-o+a*r]),e.data[u-n+a*r]=s/Math.min(u+1,r-1+o-u,o))}function vy(t,e,n){for(var r=t.width,i=t.height,o=1+(n<<1),a=0;a<r;++a)for(var u=0,s=0;u<i+n;++u)u<i&&(s+=t.data[a+u*r]),u>=n&&(u>=o&&(s-=t.data[a+(u-o)*r]),e.data[a+(u-n)*r]=s/Math.min(u+1,i-1+o-u,o))}function yy(t){return t[0]}function by(t){return t[1]}function xy(){return 1}var _y=["size","smooth"],wy=["x","y","weight","size","cellSize","bandwidth"];function Oy(t){Oi.call(this,null,t)}Oy.Definition={type:"Contour",metadata:{generates:!0},params:[{name:"size",type:"number",array:!0,length:2,required:!0},{name:"values",type:"number",array:!0},{name:"x",type:"field"},{name:"y",type:"field"},{name:"weight",type:"field"},{name:"cellSize",type:"number"},{name:"bandwidth",type:"number"},{name:"count",type:"number"},{name:"smooth",type:"boolean"},{name:"nice",type:"boolean",default:!1},{name:"thresholds",type:"number",array:!0}]},Object(Mt.x)(Oy,Oi).transform=function(t,e){if(this.value&&!e.changed()&&!t.modified())return e.StopPropagation;var n,r,i,o,a=e.fork(e.NO_SOURCE|e.NO_FIELDS),u=t.count||10;return t.values?(n=gy(),r=_y,i=t.values):(n=function(){var t=yy,e=by,n=xy,r=960,i=500,o=20,a=2,u=3*o,s=r+2*u>>a,c=i+2*u>>a,l=cy(20);function f(r){var i=new Float32Array(s*c),f=new Float32Array(s*c);r.forEach(function(r,o,l){var f=+t(r,o,l)+u>>a,h=+e(r,o,l)+u>>a,d=+n(r,o,l);f>=0&&f<s&&h>=0&&h<c&&(i[f+h*s]+=d)}),my({width:s,height:c,data:i},{width:s,height:c,data:f},o>>a),vy({width:s,height:c,data:f},{width:s,height:c,data:i},o>>a),my({width:s,height:c,data:i},{width:s,height:c,data:f},o>>a),vy({width:s,height:c,data:f},{width:s,height:c,data:i},o>>a),my({width:s,height:c,data:i},{width:s,height:c,data:f},o>>a),vy({width:s,height:c,data:f},{width:s,height:c,data:i},o>>a);var d=l(i);if(!Array.isArray(d)){var p=oy(i);d=ry(0,p,d),(d=Kv(0,Math.floor(p/d)*d,d)).shift()}return gy().thresholds(d).size([s,c])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*a),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(g)}function g(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function m(){return s=r+2*(u=3*o)>>a,c=i+2*u>>a,f}return f.x=function(e){return arguments.length?(t="function"==typeof e?e:cy(+e),f):t},f.y=function(t){return arguments.length?(e="function"==typeof t?t:cy(+t),f):e},f.weight=function(t){return arguments.length?(n="function"==typeof t?t:cy(+t),f):n},f.size=function(t){if(!arguments.length)return[r,i];var e=Math.ceil(t[0]),n=Math.ceil(t[1]);if(!(e>=0||e>=0))throw new Error("invalid size");return r=e,i=n,m()},f.cellSize=function(t){if(!arguments.length)return 1<<a;if(!((t=+t)>=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),m()},f.thresholds=function(t){return arguments.length?(l="function"==typeof t?t:Array.isArray(t)?cy(ay.call(t)):cy(t),f):l},f.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=Math.round((Math.sqrt(4*t*t+1)-1)/2),m()},f}(),r=wy,i=e.materialize(e.SOURCE).source),n.thresholds(t.thresholds||(t.nice?u:(o=u,function(t){for(var e=Yi(t),n=e[0],r=e[1]-n,i=[],a=1;a<=o;++a)i.push(n+r*a/(o+1));return i}))),r.forEach(function(e){null!=t[e]&&n[e](t[e])}),this.value&&(a.rem=this.value),i=i&&i.length?n(i).map(Bt):[],this.value=a.source=a.add=i,a};var ky="Feature",Ay="FeatureCollection";function Ey(t){Oi.call(this,null,t)}Ey.Definition={type:"GeoJSON",metadata:{},params:[{name:"fields",type:"field",array:!0,length:2},{name:"geojson",type:"field"}]},Object(Mt.x)(Ey,Oi).transform=function(t,e){var n,r=this._features,i=this._points,o=t.fields,a=o&&o[0],u=o&&o[1],s=t.geojson,c=e.ADD;n=t.modified()||e.changed(e.REM)||e.modified(Object(Mt.g)(s))||a&&e.modified(Object(Mt.g)(a))||u&&e.modified(Object(Mt.g)(u)),this.value&&!n||(c=e.SOURCE,this._features=r=[],this._points=i=[]),s&&e.visit(c,function(t){r.push(s(t))}),a&&u&&(e.visit(c,function(t){var e=a(t),n=u(t);null!=e&&null!=n&&(e=+e)===e&&(n=+n)===n&&i.push([e,n])}),r=r.concat({type:ky,geometry:{type:"MultiPoint",coordinates:i}})),this.value={type:Ay,features:r}};var jy=function(){return new Sy};function Sy(){this.reset()}Sy.prototype={constructor:Sy,reset:function(){this.s=this.t=0},add:function(t){My(Cy,t,this.t),My(this,Cy.s,this.s),this.s?this.t+=Cy.t:this.s=Cy.t},valueOf:function(){return this.s}};var Cy=new Sy;function My(t,e,n){var r=t.s=e+n,i=r-e,o=r-i;t.t=e-o+(n-i)}var Dy=1e-6,Fy=1e-12,Ny=Math.PI,zy=Ny/2,Ty=Ny/4,$y=2*Ny,Ry=180/Ny,By=Ny/180,Py=Math.abs,Ly=Math.atan,Uy=Math.atan2,qy=Math.cos,Iy=Math.ceil,Wy=Math.exp,Hy=(Math.floor,Math.log),Gy=Math.pow,Yy=Math.sin,Vy=Math.sign||function(t){return t>0?1:t<0?-1:0},Xy=Math.sqrt,Jy=Math.tan;function Zy(t){return t>1?0:t<-1?Ny:Math.acos(t)}function Qy(t){return t>1?zy:t<-1?-zy:Math.asin(t)}function Ky(){}function tb(t,e){t&&nb.hasOwnProperty(t.type)&&nb[t.type](t,e)}var eb={Feature:function(t,e){tb(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r<i;)tb(n[r].geometry,e)}},nb={Sphere:function(t,e){e.sphere()},Point:function(t,e){t=t.coordinates,e.point(t[0],t[1],t[2])},MultiPoint:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)t=n[r],e.point(t[0],t[1],t[2])},LineString:function(t,e){rb(t.coordinates,e,0)},MultiLineString:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)rb(n[r],e,0)},Polygon:function(t,e){ib(t.coordinates,e)},MultiPolygon:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)ib(n[r],e)},GeometryCollection:function(t,e){for(var n=t.geometries,r=-1,i=n.length;++r<i;)tb(n[r],e)}};function rb(t,e,n){var r,i=-1,o=t.length-n;for(e.lineStart();++i<o;)r=t[i],e.point(r[0],r[1],r[2]);e.lineEnd()}function ib(t,e){var n=-1,r=t.length;for(e.polygonStart();++n<r;)rb(t[n],e,1);e.polygonEnd()}var ob,ab,ub,sb,cb,lb=function(t,e){t&&eb.hasOwnProperty(t.type)?eb[t.type](t,e):tb(t,e)},fb=jy(),hb=jy(),db={point:Ky,lineStart:Ky,lineEnd:Ky,polygonStart:function(){fb.reset(),db.lineStart=pb,db.lineEnd=gb},polygonEnd:function(){var t=+fb;hb.add(t<0?$y+t:t),this.lineStart=this.lineEnd=this.point=Ky},sphere:function(){hb.add($y)}};function pb(){db.point=mb}function gb(){vb(ob,ab)}function mb(t,e){db.point=vb,ob=t,ab=e,ub=t*=By,sb=qy(e=(e*=By)/2+Ty),cb=Yy(e)}function vb(t,e){var n=(t*=By)-ub,r=n>=0?1:-1,i=r*n,o=qy(e=(e*=By)/2+Ty),a=Yy(e),u=cb*a,s=sb*o+u*qy(i),c=u*r*Yy(i);fb.add(Uy(c,s)),ub=t,sb=o,cb=a}function yb(t){return[Uy(t[1],t[0]),Qy(t[2])]}function bb(t){var e=t[0],n=t[1],r=qy(n);return[r*qy(e),r*Yy(e),Yy(n)]}function xb(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function _b(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function wb(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Ob(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function kb(t){var e=Xy(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var Ab,Eb,jb,Sb,Cb,Mb,Db,Fb,Nb,zb,Tb=jy(),$b={point:Rb,lineStart:Pb,lineEnd:Lb,polygonStart:function(){$b.point=Ub,$b.lineStart=qb,$b.lineEnd=Ib,Tb.reset(),db.polygonStart()},polygonEnd:function(){db.polygonEnd(),$b.point=Rb,$b.lineStart=Pb,$b.lineEnd=Lb,fb<0?(Ab=-(jb=180),Eb=-(Sb=90)):Tb>Dy?Sb=90:Tb<-Dy&&(Eb=-90),zb[0]=Ab,zb[1]=jb},sphere:function(){Ab=-(jb=180),Eb=-(Sb=90)}};function Rb(t,e){Nb.push(zb=[Ab=t,jb=t]),e<Eb&&(Eb=e),e>Sb&&(Sb=e)}function Bb(t,e){var n=bb([t*By,e*By]);if(Fb){var r=_b(Fb,n),i=_b([r[1],-r[0],0],r);kb(i),i=yb(i);var o,a=t-Cb,u=a>0?1:-1,s=i[0]*Ry*u,c=Py(a)>180;c^(u*Cb<s&&s<u*t)?(o=i[1]*Ry)>Sb&&(Sb=o):c^(u*Cb<(s=(s+360)%360-180)&&s<u*t)?(o=-i[1]*Ry)<Eb&&(Eb=o):(e<Eb&&(Eb=e),e>Sb&&(Sb=e)),c?t<Cb?Wb(Ab,t)>Wb(Ab,jb)&&(jb=t):Wb(t,jb)>Wb(Ab,jb)&&(Ab=t):jb>=Ab?(t<Ab&&(Ab=t),t>jb&&(jb=t)):t>Cb?Wb(Ab,t)>Wb(Ab,jb)&&(jb=t):Wb(t,jb)>Wb(Ab,jb)&&(Ab=t)}else Nb.push(zb=[Ab=t,jb=t]);e<Eb&&(Eb=e),e>Sb&&(Sb=e),Fb=n,Cb=t}function Pb(){$b.point=Bb}function Lb(){zb[0]=Ab,zb[1]=jb,$b.point=Rb,Fb=null}function Ub(t,e){if(Fb){var n=t-Cb;Tb.add(Py(n)>180?n+(n>0?360:-360):n)}else Mb=t,Db=e;db.point(t,e),Bb(t,e)}function qb(){db.lineStart()}function Ib(){Ub(Mb,Db),db.lineEnd(),Py(Tb)>Dy&&(Ab=-(jb=180)),zb[0]=Ab,zb[1]=jb,Fb=null}function Wb(t,e){return(e-=t)<0?e+360:e}function Hb(t,e){return t[0]-e[0]}function Gb(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:e<t[0]||t[1]<e}var Yb,Vb,Xb,Jb,Zb,Qb,Kb,tx,ex,nx,rx,ix,ox,ax,ux,sx,cx={sphere:Ky,point:lx,lineStart:hx,lineEnd:gx,polygonStart:function(){cx.lineStart=mx,cx.lineEnd=vx},polygonEnd:function(){cx.lineStart=hx,cx.lineEnd=gx}};function lx(t,e){t*=By;var n=qy(e*=By);fx(n*qy(t),n*Yy(t),Yy(e))}function fx(t,e,n){Xb+=(t-Xb)/++Yb,Jb+=(e-Jb)/Yb,Zb+=(n-Zb)/Yb}function hx(){cx.point=dx}function dx(t,e){t*=By;var n=qy(e*=By);ax=n*qy(t),ux=n*Yy(t),sx=Yy(e),cx.point=px,fx(ax,ux,sx)}function px(t,e){t*=By;var n=qy(e*=By),r=n*qy(t),i=n*Yy(t),o=Yy(e),a=Uy(Xy((a=ux*o-sx*i)*a+(a=sx*r-ax*o)*a+(a=ax*i-ux*r)*a),ax*r+ux*i+sx*o);Vb+=a,Qb+=a*(ax+(ax=r)),Kb+=a*(ux+(ux=i)),tx+=a*(sx+(sx=o)),fx(ax,ux,sx)}function gx(){cx.point=lx}function mx(){cx.point=yx}function vx(){bx(ix,ox),cx.point=lx}function yx(t,e){ix=t,ox=e,t*=By,e*=By,cx.point=bx;var n=qy(e);ax=n*qy(t),ux=n*Yy(t),sx=Yy(e),fx(ax,ux,sx)}function bx(t,e){t*=By;var n=qy(e*=By),r=n*qy(t),i=n*Yy(t),o=Yy(e),a=ux*o-sx*i,u=sx*r-ax*o,s=ax*i-ux*r,c=Xy(a*a+u*u+s*s),l=Qy(c),f=c&&-l/c;ex+=f*a,nx+=f*u,rx+=f*s,Vb+=l,Qb+=l*(ax+(ax=r)),Kb+=l*(ux+(ux=i)),tx+=l*(sx+(sx=o)),fx(ax,ux,sx)}var xx=function(t,e){function n(n,r){return n=t(n,r),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,r){return(n=e.invert(n,r))&&t.invert(n[0],n[1])}),n};function _x(t,e){return[Py(t)>Ny?t+Math.round(-t/$y)*$y:t,e]}function wx(t,e,n){return(t%=$y)?e||n?xx(kx(t),Ax(e,n)):kx(t):e||n?Ax(e,n):_x}function Ox(t){return function(e,n){return[(e+=t)>Ny?e-$y:e<-Ny?e+$y:e,n]}}function kx(t){var e=Ox(t);return e.invert=Ox(-t),e}function Ax(t,e){var n=qy(t),r=Yy(t),i=qy(e),o=Yy(e);function a(t,e){var a=qy(e),u=qy(t)*a,s=Yy(t)*a,c=Yy(e),l=c*n+u*r;return[Uy(s*i-l*o,u*n-c*r),Qy(l*i+s*o)]}return a.invert=function(t,e){var a=qy(e),u=qy(t)*a,s=Yy(t)*a,c=Yy(e),l=c*i-s*o;return[Uy(s*i+c*o,u*n+l*r),Qy(l*n-u*r)]},a}_x.invert=_x;var Ex=function(t){function e(e){return(e=t(e[0]*By,e[1]*By))[0]*=Ry,e[1]*=Ry,e}return t=wx(t[0]*By,t[1]*By,t.length>2?t[2]*By:0),e.invert=function(e){return(e=t.invert(e[0]*By,e[1]*By))[0]*=Ry,e[1]*=Ry,e},e};function jx(t,e,n,r,i,o){if(n){var a=qy(e),u=Yy(e),s=r*n;null==i?(i=e+r*$y,o=e-s/2):(i=Sx(a,i),o=Sx(a,o),(r>0?i<o:i>o)&&(i+=r*$y));for(var c,l=i;r>0?l>o:l<o;l-=s)c=yb([a,-u*qy(l),-u*Yy(l)]),t.point(c[0],c[1])}}function Sx(t,e){(e=bb(e))[0]-=t,kb(e);var n=Zy(-e[1]);return((-e[2]<0?-n:n)+$y-Dy)%$y}var Cx=function(){var t,e=[];return{point:function(e,n){t.push([e,n])},lineStart:function(){e.push(t=[])},lineEnd:Ky,rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}},Mx=function(t,e){return Py(t[0]-e[0])<Dy&&Py(t[1]-e[1])<Dy};function Dx(t,e,n,r){this.x=t,this.z=e,this.o=n,this.e=r,this.v=!1,this.n=this.p=null}var Fx=function(t,e,n,r,i){var o,a,u=[],s=[];if(t.forEach(function(t){if(!((e=t.length-1)<=0)){var e,n,r=t[0],a=t[e];if(Mx(r,a)){for(i.lineStart(),o=0;o<e;++o)i.point((r=t[o])[0],r[1]);i.lineEnd()}else u.push(n=new Dx(r,t,null,!0)),s.push(n.o=new Dx(r,null,n,!1)),u.push(n=new Dx(a,t,null,!1)),s.push(n.o=new Dx(a,null,n,!0))}}),u.length){for(s.sort(e),Nx(u),Nx(s),o=0,a=s.length;o<a;++o)s[o].e=n=!n;for(var c,l,f=u[0];;){for(var h=f,d=!0;h.v;)if((h=h.n)===f)return;c=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(o=0,a=c.length;o<a;++o)i.point((l=c[o])[0],l[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(d)for(c=h.p.z,o=c.length-1;o>=0;--o)i.point((l=c[o])[0],l[1]);else r(h.x,h.p.x,-1,i);h=h.p}c=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}};function Nx(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r<e;)i.n=n=t[r],n.p=i,i=n;i.n=n=t[0],n.p=i}}var zx=jy();function Tx(t){return Py(t[0])<=Ny?t[0]:Vy(t[0])*((Py(t[0])+Ny)%$y-Ny)}var $x=function(t,e){var n=Tx(e),r=e[1],i=Yy(r),o=[Yy(n),-qy(n),0],a=0,u=0;zx.reset(),1===i?r=zy+Dy:-1===i&&(r=-zy-Dy);for(var s=0,c=t.length;s<c;++s)if(f=(l=t[s]).length)for(var l,f,h=l[f-1],d=Tx(h),p=h[1]/2+Ty,g=Yy(p),m=qy(p),v=0;v<f;++v,d=b,g=_,m=w,h=y){var y=l[v],b=Tx(y),x=y[1]/2+Ty,_=Yy(x),w=qy(x),O=b-d,k=O>=0?1:-1,A=k*O,E=A>Ny,j=g*_;if(zx.add(Uy(j*k*Yy(A),m*w+j*qy(A))),a+=E?O+k*$y:O,E^d>=n^b>=n){var S=_b(bb(h),bb(y));kb(S);var C=_b(o,S);kb(C);var M=(E^O>=0?-1:1)*Qy(C[2]);(r>M||r===M&&(S[0]||S[1]))&&(u+=E^O>=0?1:-1)}}return(a<-Dy||a<Dy&&zx<-Dy)^1&u},Rx=function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN};var Bx=function(t){return 1===t.length&&(t=function(t){return function(e,n){return Rx(t(e),n)}}(t)),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var o=r+i>>>1;t(e[o],n)<0?r=o+1:i=o}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var o=r+i>>>1;t(e[o],n)>0?i=o:r=o+1}return r}}}(Rx);Bx.right,Bx.left;var Px=Array.prototype,Lx=(Px.slice,Px.map,function(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((e-t)/n)),o=new Array(i);++r<i;)o[r]=t+r*n;return o});Math.sqrt(50),Math.sqrt(10),Math.sqrt(2);var Ux=function(t){for(var e,n,r,i=t.length,o=-1,a=0;++o<i;)a+=t[o].length;for(n=new Array(a);--i>=0;)for(e=(r=t[i]).length;--e>=0;)n[--a]=r[e];return n};var qx=function(t,e,n,r){return function(i){var o,a,u,s=e(i),c=Cx(),l=e(c),f=!1,h={point:d,lineStart:g,lineEnd:m,polygonStart:function(){h.point=v,h.lineStart=y,h.lineEnd=b,a=[],o=[]},polygonEnd:function(){h.point=d,h.lineStart=g,h.lineEnd=m,a=Ux(a);var t=$x(o,r);a.length?(f||(i.polygonStart(),f=!0),Fx(a,Wx,t,n,i)):t&&(f||(i.polygonStart(),f=!0),i.lineStart(),n(null,null,1,i),i.lineEnd()),f&&(i.polygonEnd(),f=!1),a=o=null},sphere:function(){i.polygonStart(),i.lineStart(),n(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(e,n){t(e,n)&&i.point(e,n)}function p(t,e){s.point(t,e)}function g(){h.point=p,s.lineStart()}function m(){h.point=d,s.lineEnd()}function v(t,e){u.push([t,e]),l.point(t,e)}function y(){l.lineStart(),u=[]}function b(){v(u[0][0],u[0][1]),l.lineEnd();var t,e,n,r,s=l.clean(),h=c.result(),d=h.length;if(u.pop(),o.push(u),u=null,d)if(1&s){if((e=(n=h[0]).length-1)>0){for(f||(i.polygonStart(),f=!0),i.lineStart(),t=0;t<e;++t)i.point((r=n[t])[0],r[1]);i.lineEnd()}}else d>1&&2&s&&h.push(h.pop().concat(h.shift())),a.push(h.filter(Ix))}return h}};function Ix(t){return t.length>1}function Wx(t,e){return((t=t.x)[0]<0?t[1]-zy-Dy:zy-t[1])-((e=e.x)[0]<0?e[1]-zy-Dy:zy-e[1])}var Hx=qx(function(){return!0},function(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(o,a){var u=o>0?Ny:-Ny,s=Py(o-n);Py(s-Ny)<Dy?(t.point(n,r=(r+a)/2>0?zy:-zy),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),e=0):i!==u&&s>=Ny&&(Py(n-i)<Dy&&(n-=i*Dy),Py(o-u)<Dy&&(o-=u*Dy),r=function(t,e,n,r){var i,o,a=Yy(t-n);return Py(a)>Dy?Ly((Yy(e)*(o=qy(r))*Yy(n)-Yy(r)*(i=qy(e))*Yy(t))/(i*o*a)):(e+r)/2}(n,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),e=0),t.point(n=o,r=a),i=u},lineEnd:function(){t.lineEnd(),n=r=NaN},clean:function(){return 2-e}}},function(t,e,n,r){var i;if(null==t)i=n*zy,r.point(-Ny,i),r.point(0,i),r.point(Ny,i),r.point(Ny,0),r.point(Ny,-i),r.point(0,-i),r.point(-Ny,-i),r.point(-Ny,0),r.point(-Ny,i);else if(Py(t[0]-e[0])>Dy){var o=t[0]<e[0]?Ny:-Ny;i=n*o/2,r.point(-o,i),r.point(0,i),r.point(o,i)}else r.point(e[0],e[1])},[-Ny,-zy]);var Gx=function(t){var e=qy(t),n=6*By,r=e>0,i=Py(e)>Dy;function o(t,n){return qy(t)*qy(n)>e}function a(t,n,r){var i=[1,0,0],o=_b(bb(t),bb(n)),a=xb(o,o),u=o[0],s=a-u*u;if(!s)return!r&&t;var c=e*a/s,l=-e*u/s,f=_b(i,o),h=Ob(i,c);wb(h,Ob(o,l));var d=f,p=xb(h,d),g=xb(d,d),m=p*p-g*(xb(h,h)-1);if(!(m<0)){var v=Xy(m),y=Ob(d,(-p-v)/g);if(wb(y,h),y=yb(y),!r)return y;var b,x=t[0],_=n[0],w=t[1],O=n[1];_<x&&(b=x,x=_,_=b);var k=_-x,A=Py(k-Ny)<Dy;if(!A&&O<w&&(b=w,w=O,O=b),A||k<Dy?A?w+O>0^y[1]<(Py(y[0]-x)<Dy?w:O):w<=y[1]&&y[1]<=O:k>Ny^(x<=y[0]&&y[0]<=_)){var E=Ob(d,(-p+v)/g);return wb(E,h),[y,yb(E)]}}}function u(e,n){var i=r?t:Ny-t,o=0;return e<-i?o|=1:e>i&&(o|=2),n<-i?o|=4:n>i&&(o|=8),o}return qx(o,function(t){var e,n,s,c,l;return{lineStart:function(){c=s=!1,l=1},point:function(f,h){var d,p=[f,h],g=o(f,h),m=r?g?0:u(f,h):g?u(f+(f<0?Ny:-Ny),h):0;if(!e&&(c=s=g)&&t.lineStart(),g!==s&&(!(d=a(e,p))||Mx(e,d)||Mx(p,d))&&(p[0]+=Dy,p[1]+=Dy,g=o(p[0],p[1])),g!==s)l=0,g?(t.lineStart(),d=a(p,e),t.point(d[0],d[1])):(d=a(e,p),t.point(d[0],d[1]),t.lineEnd()),e=d;else if(i&&e&&r^g){var v;m&n||!(v=a(p,e,!0))||(l=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||e&&Mx(e,p)||t.point(p[0],p[1]),e=p,s=g,n=m},lineEnd:function(){s&&t.lineEnd(),e=null},clean:function(){return l|(c&&s)<<1}}},function(e,r,i,o){jx(o,t,n,i,e,r)},r?[0,-t]:[-Ny,t-Ny])},Yx=function(t,e,n,r,i,o){var a,u=t[0],s=t[1],c=0,l=1,f=e[0]-u,h=e[1]-s;if(a=n-u,f||!(a>0)){if(a/=f,f<0){if(a<c)return;a<l&&(l=a)}else if(f>0){if(a>l)return;a>c&&(c=a)}if(a=i-u,f||!(a<0)){if(a/=f,f<0){if(a>l)return;a>c&&(c=a)}else if(f>0){if(a<c)return;a<l&&(l=a)}if(a=r-s,h||!(a>0)){if(a/=h,h<0){if(a<c)return;a<l&&(l=a)}else if(h>0){if(a>l)return;a>c&&(c=a)}if(a=o-s,h||!(a<0)){if(a/=h,h<0){if(a>l)return;a>c&&(c=a)}else if(h>0){if(a<c)return;a<l&&(l=a)}return c>0&&(t[0]=u+c*f,t[1]=s+c*h),l<1&&(e[0]=u+l*f,e[1]=s+l*h),!0}}}}},Vx=1e9,Xx=-Vx;function Jx(t,e,n,r){function i(i,o){return t<=i&&i<=n&&e<=o&&o<=r}function o(i,o,u,c){var l=0,f=0;if(null==i||(l=a(i,u))!==(f=a(o,u))||s(i,o)<0^u>0)do{c.point(0===l||3===l?t:n,l>1?r:e)}while((l=(l+u+4)%4)!==f);else c.point(o[0],o[1])}function a(r,i){return Py(r[0]-t)<Dy?i>0?0:3:Py(r[0]-n)<Dy?i>0?2:1:Py(r[1]-e)<Dy?i>0?1:0:i>0?3:2}function u(t,e){return s(t.x,e.x)}function s(t,e){var n=a(t,1),r=a(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(a){var s,c,l,f,h,d,p,g,m,v,y,b=a,x=Cx(),_={point:w,lineStart:function(){_.point=O,c&&c.push(l=[]);v=!0,m=!1,p=g=NaN},lineEnd:function(){s&&(O(f,h),d&&m&&x.rejoin(),s.push(x.result()));_.point=w,m&&b.lineEnd()},polygonStart:function(){b=x,s=[],c=[],y=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=c.length;n<i;++n)for(var o,a,u=c[n],s=1,l=u.length,f=u[0],h=f[0],d=f[1];s<l;++s)o=h,a=d,f=u[s],h=f[0],d=f[1],a<=r?d>r&&(h-o)*(r-a)>(d-a)*(t-o)&&++e:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--e;return e}(),n=y&&e,i=(s=Ux(s)).length;(n||i)&&(a.polygonStart(),n&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&Fx(s,u,e,o,a),a.polygonEnd());b=a,s=c=l=null}};function w(t,e){i(t,e)&&b.point(t,e)}function O(o,a){var u=i(o,a);if(c&&l.push([o,a]),v)f=o,h=a,d=u,v=!1,u&&(b.lineStart(),b.point(o,a));else if(u&&m)b.point(o,a);else{var s=[p=Math.max(Xx,Math.min(Vx,p)),g=Math.max(Xx,Math.min(Vx,g))],x=[o=Math.max(Xx,Math.min(Vx,o)),a=Math.max(Xx,Math.min(Vx,a))];Yx(s,x,t,e,n,r)?(m||(b.lineStart(),b.point(s[0],s[1])),b.point(x[0],x[1]),u||b.lineEnd(),y=!1):u&&(b.lineStart(),b.point(o,a),y=!1)}p=o,g=a,m=u}return _}}jy();function Zx(t,e,n){var r=Lx(t,e-Dy,n).concat(e);return function(t){return r.map(function(e){return[t,e]})}}function Qx(t,e,n){var r=Lx(t,e-Dy,n).concat(e);return function(t){return r.map(function(e){return[e,t]})}}function Kx(){var t,e,n,r,i,o,a,u,s,c,l,f,h=10,d=h,p=90,g=360,m=2.5;function v(){return{type:"MultiLineString",coordinates:y()}}function y(){return Lx(Iy(r/p)*p,n,p).map(l).concat(Lx(Iy(u/g)*g,a,g).map(f)).concat(Lx(Iy(e/h)*h,t,h).filter(function(t){return Py(t%p)>Dy}).map(s)).concat(Lx(Iy(o/d)*d,i,d).filter(function(t){return Py(t%g)>Dy}).map(c))}return v.lines=function(){return y().map(function(t){return{type:"LineString",coordinates:t}})},v.outline=function(){return{type:"Polygon",coordinates:[l(r).concat(f(a).slice(1),l(n).reverse().slice(1),f(u).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(r=+t[0][0],n=+t[1][0],u=+t[0][1],a=+t[1][1],r>n&&(t=r,r=n,n=t),u>a&&(t=u,u=a,a=t),v.precision(m)):[[r,u],[n,a]]},v.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],o=+n[0][1],i=+n[1][1],e>t&&(n=e,e=t,t=n),o>i&&(n=o,o=i,i=n),v.precision(m)):[[e,o],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],v):[h,d]},v.precision=function(h){return arguments.length?(m=+h,s=Zx(o,i,90),c=Qx(e,t,m),l=Zx(u,a,90),f=Qx(r,n,m),v):m},v.extentMajor([[-180,-90+Dy],[180,90-Dy]]).extentMinor([[-180,-80-Dy],[180,80+Dy]])}var t_,e_,n_,r_,i_=function(t){return t},o_=jy(),a_=jy(),u_={point:Ky,lineStart:Ky,lineEnd:Ky,polygonStart:function(){u_.lineStart=s_,u_.lineEnd=f_},polygonEnd:function(){u_.lineStart=u_.lineEnd=u_.point=Ky,o_.add(Py(a_)),a_.reset()},result:function(){var t=o_/2;return o_.reset(),t}};function s_(){u_.point=c_}function c_(t,e){u_.point=l_,t_=n_=t,e_=r_=e}function l_(t,e){a_.add(r_*t-n_*e),n_=t,r_=e}function f_(){l_(t_,e_)}var h_=u_,d_=1/0,p_=d_,g_=-d_,m_=g_;var v_,y_,b_,x_,__={point:function(t,e){t<d_&&(d_=t);t>g_&&(g_=t);e<p_&&(p_=e);e>m_&&(m_=e)},lineStart:Ky,lineEnd:Ky,polygonStart:Ky,polygonEnd:Ky,result:function(){var t=[[d_,p_],[g_,m_]];return g_=m_=-(p_=d_=1/0),t}},w_=0,O_=0,k_=0,A_=0,E_=0,j_=0,S_=0,C_=0,M_=0,D_={point:F_,lineStart:N_,lineEnd:$_,polygonStart:function(){D_.lineStart=R_,D_.lineEnd=B_},polygonEnd:function(){D_.point=F_,D_.lineStart=N_,D_.lineEnd=$_},result:function(){var t=M_?[S_/M_,C_/M_]:j_?[A_/j_,E_/j_]:k_?[w_/k_,O_/k_]:[NaN,NaN];return w_=O_=k_=A_=E_=j_=S_=C_=M_=0,t}};function F_(t,e){w_+=t,O_+=e,++k_}function N_(){D_.point=z_}function z_(t,e){D_.point=T_,F_(b_=t,x_=e)}function T_(t,e){var n=t-b_,r=e-x_,i=Xy(n*n+r*r);A_+=i*(b_+t)/2,E_+=i*(x_+e)/2,j_+=i,F_(b_=t,x_=e)}function $_(){D_.point=F_}function R_(){D_.point=P_}function B_(){L_(v_,y_)}function P_(t,e){D_.point=L_,F_(v_=b_=t,y_=x_=e)}function L_(t,e){var n=t-b_,r=e-x_,i=Xy(n*n+r*r);A_+=i*(b_+t)/2,E_+=i*(x_+e)/2,j_+=i,S_+=(i=x_*t-b_*e)*(b_+t),C_+=i*(x_+e),M_+=3*i,F_(b_=t,x_=e)}var U_=D_;function q_(t){this._context=t}q_.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,$y)}},result:Ky};var I_,W_,H_,G_,Y_,V_=jy(),X_={point:Ky,lineStart:function(){X_.point=J_},lineEnd:function(){I_&&Z_(W_,H_),X_.point=Ky},polygonStart:function(){I_=!0},polygonEnd:function(){I_=null},result:function(){var t=+V_;return V_.reset(),t}};function J_(t,e){X_.point=Z_,W_=G_=t,H_=Y_=e}function Z_(t,e){G_-=t,Y_-=e,V_.add(Xy(G_*G_+Y_*Y_)),G_=t,Y_=e}var Q_=X_;function K_(){this._string=[]}function tw(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}K_.prototype={_radius:4.5,_circle:tw(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=tw(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}};var ew=function(t,e){var n,r,i=4.5;function o(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),lb(t,n(r))),r.result()}return o.area=function(t){return lb(t,n(h_)),h_.result()},o.measure=function(t){return lb(t,n(Q_)),Q_.result()},o.bounds=function(t){return lb(t,n(__)),__.result()},o.centroid=function(t){return lb(t,n(U_)),U_.result()},o.projection=function(e){return arguments.length?(n=null==e?(t=null,i_):(t=e).stream,o):t},o.context=function(t){return arguments.length?(r=null==t?(e=null,new K_):new q_(e=t),"function"!=typeof i&&r.pointRadius(i),o):e},o.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),o):i},o.projection(t).context(e)};function nw(t){return function(e){var n=new rw;for(var r in t)n[r]=t[r];return n.stream=e,n}}function rw(){}function iw(t,e,n){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),lb(n,t.stream(__)),e(__.result()),null!=r&&t.clipExtent(r),t}function ow(t,e,n){return iw(t,function(n){var r=e[1][0]-e[0][0],i=e[1][1]-e[0][1],o=Math.min(r/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),a=+e[0][0]+(r-o*(n[1][0]+n[0][0]))/2,u=+e[0][1]+(i-o*(n[1][1]+n[0][1]))/2;t.scale(150*o).translate([a,u])},n)}function aw(t,e,n){return ow(t,[[0,0],e],n)}function uw(t,e,n){return iw(t,function(n){var r=+e,i=r/(n[1][0]-n[0][0]),o=(r-i*(n[1][0]+n[0][0]))/2,a=-i*n[0][1];t.scale(150*i).translate([o,a])},n)}function sw(t,e,n){return iw(t,function(n){var r=+e,i=r/(n[1][1]-n[0][1]),o=-i*n[0][0],a=(r-i*(n[1][1]+n[0][1]))/2;t.scale(150*i).translate([o,a])},n)}rw.prototype={constructor:rw,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var cw=16,lw=qy(30*By),fw=function(t,e){return+e?function(t,e){function n(r,i,o,a,u,s,c,l,f,h,d,p,g,m){var v=c-r,y=l-i,b=v*v+y*y;if(b>4*e&&g--){var x=a+h,_=u+d,w=s+p,O=Xy(x*x+_*_+w*w),k=Qy(w/=O),A=Py(Py(w)-1)<Dy||Py(o-f)<Dy?(o+f)/2:Uy(_,x),E=t(A,k),j=E[0],S=E[1],C=j-r,M=S-i,D=y*C-v*M;(D*D/b>e||Py((v*C+y*M)/b-.5)>.3||a*h+u*d+s*p<lw)&&(n(r,i,o,a,u,s,j,S,A,x/=O,_/=O,w,g,m),m.point(j,S),n(j,S,A,x,_,w,c,l,f,h,d,p,g,m))}}return function(e){var r,i,o,a,u,s,c,l,f,h,d,p,g={point:m,lineStart:v,lineEnd:b,polygonStart:function(){e.polygonStart(),g.lineStart=x},polygonEnd:function(){e.polygonEnd(),g.lineStart=v}};function m(n,r){n=t(n,r),e.point(n[0],n[1])}function v(){l=NaN,g.point=y,e.lineStart()}function y(r,i){var o=bb([r,i]),a=t(r,i);n(l,f,c,h,d,p,l=a[0],f=a[1],c=r,h=o[0],d=o[1],p=o[2],cw,e),e.point(l,f)}function b(){g.point=m,e.lineEnd()}function x(){v(),g.point=_,g.lineEnd=w}function _(t,e){y(r=t,e),i=l,o=f,a=h,u=d,s=p,g.point=y}function w(){n(l,f,c,h,d,p,i,o,r,a,u,s,cw,e),g.lineEnd=b,b()}return g}}(t,e):function(t){return nw({point:function(e,n){e=t(e,n),this.stream.point(e[0],e[1])}})}(t)};var hw=nw({point:function(t,e){this.stream.point(t*By,e*By)}});function dw(t,e,n,r){var i=qy(r),o=Yy(r),a=i*t,u=o*t,s=i/t,c=o/t,l=(o*n-i*e)/t,f=(o*e+i*n)/t;function h(t,r){return[a*t-u*r+e,n-u*t-a*r]}return h.invert=function(t,e){return[s*t-c*e+l,f-c*t-s*e]},h}function pw(t){return gw(function(){return t})()}function gw(t){var e,n,r,i,o,a,u,s,c,l,f=150,h=480,d=250,p=0,g=0,m=0,v=0,y=0,b=0,x=null,_=Hx,w=null,O=i_,k=.5;function A(t){return s(t[0]*By,t[1]*By)}function E(t){return(t=s.invert(t[0],t[1]))&&[t[0]*Ry,t[1]*Ry]}function j(){var t=dw(f,0,0,b).apply(null,e(p,g)),r=(b?dw:function(t,e,n){function r(r,i){return[e+t*r,n-t*i]}return r.invert=function(r,i){return[(r-e)/t,(n-i)/t]},r})(f,h-t[0],d-t[1],b);return n=wx(m,v,y),u=xx(e,r),s=xx(n,u),a=fw(u,k),S()}function S(){return c=l=null,A}return A.stream=function(t){return c&&l===t?c:c=hw(function(t){return nw({point:function(e,n){var r=t(e,n);return this.stream.point(r[0],r[1])}})}(n)(_(a(O(l=t)))))},A.preclip=function(t){return arguments.length?(_=t,x=void 0,S()):_},A.postclip=function(t){return arguments.length?(O=t,w=r=i=o=null,S()):O},A.clipAngle=function(t){return arguments.length?(_=+t?Gx(x=t*By):(x=null,Hx),S()):x*Ry},A.clipExtent=function(t){return arguments.length?(O=null==t?(w=r=i=o=null,i_):Jx(w=+t[0][0],r=+t[0][1],i=+t[1][0],o=+t[1][1]),S()):null==w?null:[[w,r],[i,o]]},A.scale=function(t){return arguments.length?(f=+t,j()):f},A.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],j()):[h,d]},A.center=function(t){return arguments.length?(p=t[0]%360*By,g=t[1]%360*By,j()):[p*Ry,g*Ry]},A.rotate=function(t){return arguments.length?(m=t[0]%360*By,v=t[1]%360*By,y=t.length>2?t[2]%360*By:0,j()):[m*Ry,v*Ry,y*Ry]},A.angle=function(t){return arguments.length?(b=t%360*By,j()):b*Ry},A.precision=function(t){return arguments.length?(a=fw(u,k=t*t),S()):Xy(k)},A.fitExtent=function(t,e){return ow(A,t,e)},A.fitSize=function(t,e){return aw(A,t,e)},A.fitWidth=function(t,e){return uw(A,t,e)},A.fitHeight=function(t,e){return sw(A,t,e)},function(){return e=t.apply(this,arguments),A.invert=e.invert&&E,j()}}function mw(t){var e=0,n=Ny/3,r=gw(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*By,n=t[1]*By):[e*Ry,n*Ry]},i}function vw(t,e){var n=Yy(t),r=(n+Yy(e))/2;if(Py(r)<Dy)return function(t){var e=qy(t);function n(t,n){return[t*e,Yy(n)/e]}return n.invert=function(t,n){return[t/e,Qy(n*e)]},n}(t);var i=1+n*(2*r-n),o=Xy(i)/r;function a(t,e){var n=Xy(i-2*r*Yy(e))/r;return[n*Yy(t*=r),o-n*qy(t)]}return a.invert=function(t,e){var n=o-e;return[Uy(t,Py(n))/r*Vy(n),Qy((i-(t*t+n*n)*r*r)/(2*r))]},a}var yw=function(){return mw(vw).scale(155.424).center([0,33.6442])},bw=function(){return yw().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])};function xw(t){return function(e,n){var r=qy(e),i=qy(n),o=t(r*i);return[o*i*Yy(e),o*Yy(n)]}}function _w(t){return function(e,n){var r=Xy(e*e+n*n),i=t(r),o=Yy(i),a=qy(i);return[Uy(e*o,r*a),Qy(r&&n*o/r)]}}var ww=xw(function(t){return Xy(2/(1+t))});ww.invert=_w(function(t){return 2*Qy(t/2)});var Ow=xw(function(t){return(t=Zy(t))&&t/Yy(t)});Ow.invert=_w(function(t){return t});function kw(t,e){return[t,Hy(Jy((zy+e)/2))]}kw.invert=function(t,e){return[t,2*Ly(Wy(e))-zy]};function Aw(t){var e,n,r,i=pw(t),o=i.center,a=i.scale,u=i.translate,s=i.clipExtent,c=null;function l(){var o=Ny*a(),u=i(Ex(i.rotate()).invert([0,0]));return s(null==c?[[u[0]-o,u[1]-o],[u[0]+o,u[1]+o]]:t===kw?[[Math.max(u[0]-o,c),e],[Math.min(u[0]+o,n),r]]:[[c,Math.max(u[1]-o,e)],[n,Math.min(u[1]+o,r)]])}return i.scale=function(t){return arguments.length?(a(t),l()):a()},i.translate=function(t){return arguments.length?(u(t),l()):u()},i.center=function(t){return arguments.length?(o(t),l()):o()},i.clipExtent=function(t){return arguments.length?(null==t?c=e=n=r=null:(c=+t[0][0],e=+t[0][1],n=+t[1][0],r=+t[1][1]),l()):null==c?null:[[c,e],[n,r]]},l()}function Ew(t){return Jy((zy+t)/2)}function jw(t,e){var n=qy(t),r=t===e?Yy(t):Hy(n/qy(e))/Hy(Ew(e)/Ew(t)),i=n*Gy(Ew(t),r)/r;if(!r)return kw;function o(t,e){i>0?e<-zy+Dy&&(e=-zy+Dy):e>zy-Dy&&(e=zy-Dy);var n=i/Gy(Ew(e),r);return[n*Yy(r*t),i-n*qy(r*t)]}return o.invert=function(t,e){var n=i-e,o=Vy(r)*Xy(t*t+n*n);return[Uy(t,Py(n))/r*Vy(n),2*Ly(Gy(i/o,1/r))-zy]},o}function Sw(t,e){return[t,e]}Sw.invert=Sw;function Cw(t,e){var n=qy(t),r=t===e?Yy(t):(n-qy(e))/(e-t),i=n/r+t;if(Py(r)<Dy)return Sw;function o(t,e){var n=i-e,o=r*t;return[n*Yy(o),i-n*qy(o)]}return o.invert=function(t,e){var n=i-e;return[Uy(t,Py(n))/r*Vy(n),i-Vy(r)*Xy(t*t+n*n)]},o}var Mw=1.340264,Dw=-.081106,Fw=893e-6,Nw=.003796,zw=Xy(3)/2;function Tw(t,e){var n=Qy(zw*Yy(e)),r=n*n,i=r*r*r;return[t*qy(n)/(zw*(Mw+3*Dw*r+i*(7*Fw+9*Nw*r))),n*(Mw+Dw*r+i*(Fw+Nw*r))]}Tw.invert=function(t,e){for(var n,r=e,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=n=(r*(Mw+Dw*i+o*(Fw+Nw*i))-e)/(Mw+3*Dw*i+o*(7*Fw+9*Nw*i)))*r)*i*i,!(Py(n)<Fy));++a);return[zw*t*(Mw+3*Dw*i+o*(7*Fw+9*Nw*i))/qy(r),Qy(Yy(r)/zw)]};function $w(t,e){var n=qy(e),r=qy(t)*n;return[n*Yy(t)/r,Yy(e)/r]}$w.invert=_w(Ly);function Rw(t,e,n,r){return 1===t&&1===e&&0===n&&0===r?i_:nw({point:function(i,o){this.stream.point(i*t+n,o*e+r)}})}function Bw(t,e){var n=e*e,r=n*n;return[t*(.8707-.131979*n+r*(r*(.003971*n-.001529*r)-.013791)),e*(1.007226+n*(.015085+r*(.028874*n-.044475-.005916*r)))]}Bw.invert=function(t,e){var n,r=e,i=25;do{var o=r*r,a=o*o;r-=n=(r*(1.007226+o*(.015085+a*(.028874*o-.044475-.005916*a)))-e)/(1.007226+o*(.045255+a*(.259866*o-.311325-.005916*11*a)))}while(Py(n)>Dy&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]};function Pw(t,e){return[qy(e)*Yy(t),Yy(e)]}Pw.invert=_w(Qy);function Lw(t,e){var n=qy(e),r=1+qy(t)*n;return[n*Yy(t)/r,Yy(e)/r]}Lw.invert=_w(function(t){return 2*Ly(t)});function Uw(t,e){return[Hy(Jy((zy+e)/2)),-t]}Uw.invert=function(t,e){return[-e,2*Ly(Wy(t))-zy]};var qw=ew(),Iw=["clipAngle","clipExtent","scale","translate","center","rotate","parallels","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];function Ww(t,e){if(!t||"string"!=typeof t)throw new Error("Projection type must be a name string.");return t=t.toLowerCase(),arguments.length>1?(Gw[t]=function(t,e){return function n(){var r=e();return r.type=t,r.path=ew().projection(r),r.copy=r.copy||function(){var t=n();return Iw.forEach(function(e){r.hasOwnProperty(e)&&t[e](r[e]())}),t.path.pointRadius(r.path.pointRadius()),t},r}}(t,e),this):Gw.hasOwnProperty(t)?Gw[t]:null}function Hw(t){return t&&t.path||qw}var Gw={albers:bw,albersusa:function(){var t,e,n,r,i,o,a=bw(),u=yw().rotate([154,0]).center([-2,58.5]).parallels([55,65]),s=yw().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(t,e){o=[t,e]}};function l(t){var e=t[0],a=t[1];return o=null,n.point(e,a),o||(r.point(e,a),o)||(i.point(e,a),o)}function f(){return t=e=null,l}return l.invert=function(t){var e=a.scale(),n=a.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?s:a).invert(t)},l.stream=function(n){return t&&e===n?t:(r=[a.stream(e=n),u.stream(n),s.stream(n)],i=r.length,t={point:function(t,e){for(var n=-1;++n<i;)r[n].point(t,e)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},l.precision=function(t){return arguments.length?(a.precision(t),u.precision(t),s.precision(t),f()):a.precision()},l.scale=function(t){return arguments.length?(a.scale(t),u.scale(.35*t),s.scale(t),l.translate(a.translate())):a.scale()},l.translate=function(t){if(!arguments.length)return a.translate();var e=a.scale(),o=+t[0],l=+t[1];return n=a.translate(t).clipExtent([[o-.455*e,l-.238*e],[o+.455*e,l+.238*e]]).stream(c),r=u.translate([o-.307*e,l+.201*e]).clipExtent([[o-.425*e+Dy,l+.12*e+Dy],[o-.214*e-Dy,l+.234*e-Dy]]).stream(c),i=s.translate([o-.205*e,l+.212*e]).clipExtent([[o-.214*e+Dy,l+.166*e+Dy],[o-.115*e-Dy,l+.234*e-Dy]]).stream(c),f()},l.fitExtent=function(t,e){return ow(l,t,e)},l.fitSize=function(t,e){return aw(l,t,e)},l.fitWidth=function(t,e){return uw(l,t,e)},l.fitHeight=function(t,e){return sw(l,t,e)},l.scale(1070)},azimuthalequalarea:function(){return pw(ww).scale(124.75).clipAngle(179.999)},azimuthalequidistant:function(){return pw(Ow).scale(79.4188).clipAngle(179.999)},conicconformal:function(){return mw(jw).scale(109.5).parallels([30,30])},conicequalarea:yw,conicequidistant:function(){return mw(Cw).scale(131.154).center([0,13.9389])},equirectangular:function(){return pw(Sw).scale(152.63)},gnomonic:function(){return pw($w).scale(144.049).clipAngle(60)},identity:function(){var t,e,n,r,i,o,a=1,u=0,s=0,c=1,l=1,f=i_,h=null,d=i_;function p(){return r=i=null,o}return o={stream:function(t){return r&&i===t?r:r=f(d(i=t))},postclip:function(r){return arguments.length?(d=r,h=t=e=n=null,p()):d},clipExtent:function(r){return arguments.length?(d=null==r?(h=t=e=n=null,i_):Jx(h=+r[0][0],t=+r[0][1],e=+r[1][0],n=+r[1][1]),p()):null==h?null:[[h,t],[e,n]]},scale:function(t){return arguments.length?(f=Rw((a=+t)*c,a*l,u,s),p()):a},translate:function(t){return arguments.length?(f=Rw(a*c,a*l,u=+t[0],s=+t[1]),p()):[u,s]},reflectX:function(t){return arguments.length?(f=Rw(a*(c=t?-1:1),a*l,u,s),p()):c<0},reflectY:function(t){return arguments.length?(f=Rw(a*c,a*(l=t?-1:1),u,s),p()):l<0},fitExtent:function(t,e){return ow(o,t,e)},fitSize:function(t,e){return aw(o,t,e)},fitWidth:function(t,e){return uw(o,t,e)},fitHeight:function(t,e){return sw(o,t,e)}}},mercator:function(){return Aw(kw).scale(961/$y)},naturalEarth1:function(){return pw(Bw).scale(175.295)},orthographic:function(){return pw(Pw).scale(249.5).clipAngle(90+Dy)},stereographic:function(){return pw(Lw).scale(250).clipAngle(142)},transversemercator:function(){var t=Aw(Uw),e=t.center,n=t.rotate;return t.center=function(t){return arguments.length?e([-t[1],t[0]]):[(t=e())[1],-t[0]]},t.rotate=function(t){return arguments.length?n([t[0],t[1],t.length>2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)}};for(var Yw in Gw)Ww(Yw,Gw[Yw]);function Vw(t){Oi.call(this,null,t)}function Xw(t){Oi.call(this,null,t)}function Jw(t){Oi.call(this,null,t)}function Zw(t){Oi.call(this,[],t),this.generator=Kx()}function Qw(t){Oi.call(this,null,t),this.modified(!0)}function Kw(t,e,n){Object(Mt.C)(t[e])&&t[e](n)}Vw.Definition={type:"GeoPath",metadata:{modifies:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"path"}]},Object(Mt.x)(Vw,Oi).transform=function(t,e){var n=e.fork(e.ALL),r=this.value,i=t.field||Mt.w,o=t.as||"path",a=n.SOURCE;!r||t.modified()?(this.value=r=Hw(t.projection),n.materialize().reflow()):a=i===Mt.w||e.modified(i.fields)?n.ADD_MOD:n.ADD;var u=function(t,e){var n=t.pointRadius();t.context(null),null!=e&&t.pointRadius(e);return n}(r,t.pointRadius);return n.visit(a,function(t){t[o]=r(i(t))}),r.pointRadius(u),n.modifies(o)},Xw.Definition={type:"GeoPoint",metadata:{modifies:!0},params:[{name:"projection",type:"projection",required:!0},{name:"fields",type:"field",array:!0,required:!0,length:2},{name:"as",type:"string",array:!0,length:2,default:["x","y"]}]},Object(Mt.x)(Xw,Oi).transform=function(t,e){var n,r=t.projection,i=t.fields[0],o=t.fields[1],a=t.as||["x","y"],u=a[0],s=a[1];function c(t){var e=r([i(t),o(t)]);e?(t[u]=e[0],t[s]=e[1]):(t[u]=void 0,t[s]=void 0)}return t.modified()?e=e.materialize().reflow(!0).visit(e.SOURCE,c):(n=e.modified(i.fields)||e.modified(o.fields),e.visit(n?e.ADD_MOD:e.ADD,c)),e.modifies(a)},Jw.Definition={type:"GeoShape",metadata:{modifies:!0,nomod:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field",default:"datum"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"shape"}]},Object(Mt.x)(Jw,Oi).transform=function(t,e){var n=e.fork(e.ALL),r=this.value,i=t.as||"shape",o=n.ADD;return r&&!t.modified()||(this.value=r=function(t,e,n){var r=null==n?function(n){return t(e(n))}:function(r){var i=t.pointRadius(),o=t.pointRadius(n)(e(r));return t.pointRadius(i),o};return r.context=function(e){return t.context(e),r},r}(Hw(t.projection),t.field||Object(Mt.t)("datum"),t.pointRadius),n.materialize().reflow(),o=n.SOURCE),n.visit(o,function(t){t[i]=r}),n.modifies(i)},Zw.Definition={type:"Graticule",metadata:{changes:!0},params:[{name:"extent",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMajor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMinor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"step",type:"number",array:!0,length:2},{name:"stepMajor",type:"number",array:!0,length:2,default:[90,360]},{name:"stepMinor",type:"number",array:!0,length:2,default:[10,10]},{name:"precision",type:"number",default:2.5}]},Object(Mt.x)(Zw,Oi).transform=function(t,e){var n,r=this.value,i=this.generator;if(!r.length||t.modified())for(var o in t)Object(Mt.C)(i[o])&&i[o](t[o]);return n=i(),r.length?e.mod.push(Ut(r[0],n)):e.add.push(Bt(n)),r[0]=n,e},Object(Mt.x)(Qw,Oi).transform=function(t,e){var n=this.value;return!n||t.modified("type")?(this.value=n=function(t){var e=Ww((t||"mercator").toLowerCase());e||Object(Mt.n)("Unrecognized projection type: "+t);return e()}(t.type),Iw.forEach(function(e){null!=t[e]&&Kw(n,e,t[e])})):Iw.forEach(function(e){t.modified(e)&&Kw(n,e,t[e])}),null!=t.pointRadius&&n.path.pointRadius(t.pointRadius),t.fit&&function(t,e){var n=function(t){return 1===(t=Object(Mt.i)(t)).length?t[0]:{type:Ay,features:t.reduce((t,e)=>t.concat(function(t){return t.type===Ay?t.features:Object(Mt.i)(t).filter(t=>null!=t).map(t=>t.type===ky?t:{type:ky,geometry:t})}(e)),[])}}(e.fit);e.extent?t.fitExtent(e.extent,n):e.size&&t.fitSize(e.size,n)}(n,t),e.fork(e.NO_SOURCE|e.NO_FIELDS)};function tO(t,e,n,r){if(isNaN(e)||isNaN(n))return t;var i,o,a,u,s,c,l,f,h,d=t._root,p={data:r},g=t._x0,m=t._y0,v=t._x1,y=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((c=e>=(o=(g+v)/2))?g=o:v=o,(l=n>=(a=(m+y)/2))?m=a:y=a,i=d,!(d=d[f=l<<1|c]))return i[f]=p,t;if(u=+t._x.call(null,d.data),s=+t._y.call(null,d.data),e===u&&n===s)return p.next=d,i?i[f]=p:t._root=p,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(c=e>=(o=(g+v)/2))?g=o:v=o,(l=n>=(a=(m+y)/2))?m=a:y=a}while((f=l<<1|c)==(h=(s>=a)<<1|u>=o));return i[h]=d,i[f]=p,t}var eO=function(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i};function nO(t){return t[0]}function rO(t){return t[1]}function iO(t,e,n){var r=new oO(null==e?nO:e,null==n?rO:n,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function oO(t,e,n,r,i,o){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function aO(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var uO=iO.prototype=oO.prototype;uO.copy=function(){var t,e,n=new oO(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return n;if(!r.length)return n._root=aO(r),n;for(t=[{source:r,target:n._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(e=r.source[i])&&(e.length?t.push({source:e,target:r.target[i]=new Array(4)}):r.target[i]=aO(e));return n},uO.add=function(t){var e=+this._x.call(null,t),n=+this._y.call(null,t);return tO(this.cover(e,n),e,n,t)},uO.addAll=function(t){var e,n,r,i,o=t.length,a=new Array(o),u=new Array(o),s=1/0,c=1/0,l=-1/0,f=-1/0;for(n=0;n<o;++n)isNaN(r=+this._x.call(null,e=t[n]))||isNaN(i=+this._y.call(null,e))||(a[n]=r,u[n]=i,r<s&&(s=r),r>l&&(l=r),i<c&&(c=i),i>f&&(f=i));if(s>l||c>f)return this;for(this.cover(s,c).cover(l,f),n=0;n<o;++n)tO(this,a[n],u[n],t[n]);return this},uO.cover=function(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(n))i=(n=Math.floor(t))+1,o=(r=Math.floor(e))+1;else{for(var a,u,s=i-n,c=this._root;n>t||t>=i||r>e||e>=o;)switch(u=(e<r)<<1|t<n,(a=new Array(4))[u]=c,c=a,s*=2,u){case 0:i=n+s,o=r+s;break;case 1:n=i-s,o=r+s;break;case 2:i=n+s,r=o-s;break;case 3:n=i-s,r=o-s}this._root&&this._root.length&&(this._root=c)}return this._x0=n,this._y0=r,this._x1=i,this._y1=o,this},uO.data=function(){var t=[];return this.visit(function(e){if(!e.length)do{t.push(e.data)}while(e=e.next)}),t},uO.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},uO.find=function(t,e,n){var r,i,o,a,u,s,c,l=this._x0,f=this._y0,h=this._x1,d=this._y1,p=[],g=this._root;for(g&&p.push(new eO(g,l,f,h,d)),null==n?n=1/0:(l=t-n,f=e-n,h=t+n,d=e+n,n*=n);s=p.pop();)if(!(!(g=s.node)||(i=s.x0)>h||(o=s.y0)>d||(a=s.x1)<l||(u=s.y1)<f))if(g.length){var m=(i+a)/2,v=(o+u)/2;p.push(new eO(g[3],m,v,a,u),new eO(g[2],i,v,m,u),new eO(g[1],m,o,a,v),new eO(g[0],i,o,m,v)),(c=(e>=v)<<1|t>=m)&&(s=p[p.length-1],p[p.length-1]=p[p.length-1-c],p[p.length-1-c]=s)}else{var y=t-+this._x.call(null,g.data),b=e-+this._y.call(null,g.data),x=y*y+b*b;if(x<n){var _=Math.sqrt(n=x);l=t-_,f=e-_,h=t+_,d=e+_,r=g.data}}return r},uO.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t)))return this;var e,n,r,i,o,a,u,s,c,l,f,h,d=this._root,p=this._x0,g=this._y0,m=this._x1,v=this._y1;if(!d)return this;if(d.length)for(;;){if((c=o>=(u=(p+m)/2))?p=u:m=u,(l=a>=(s=(g+v)/2))?g=s:v=s,e=d,!(d=d[f=l<<1|c]))return this;if(!d.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(n=e,h=f)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):e?(i?e[f]=i:delete e[f],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(n?n[h]=d:this._root=d),this):(this._root=i,this)},uO.removeAll=function(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this},uO.root=function(){return this._root},uO.size=function(){var t=0;return this.visit(function(e){if(!e.length)do{++t}while(e=e.next)}),t},uO.visit=function(t){var e,n,r,i,o,a,u=[],s=this._root;for(s&&u.push(new eO(s,this._x0,this._y0,this._x1,this._y1));e=u.pop();)if(!t(s=e.node,r=e.x0,i=e.y0,o=e.x1,a=e.y1)&&s.length){var c=(r+o)/2,l=(i+a)/2;(n=s[3])&&u.push(new eO(n,c,l,o,a)),(n=s[2])&&u.push(new eO(n,r,l,c,a)),(n=s[1])&&u.push(new eO(n,c,i,o,l)),(n=s[0])&&u.push(new eO(n,r,i,c,l))}return this},uO.visitAfter=function(t){var e,n=[],r=[];for(this._root&&n.push(new eO(this._root,this._x0,this._y0,this._x1,this._y1));e=n.pop();){var i=e.node;if(i.length){var o,a=e.x0,u=e.y0,s=e.x1,c=e.y1,l=(a+s)/2,f=(u+c)/2;(o=i[0])&&n.push(new eO(o,a,u,l,f)),(o=i[1])&&n.push(new eO(o,l,u,s,f)),(o=i[2])&&n.push(new eO(o,a,f,l,c)),(o=i[3])&&n.push(new eO(o,l,f,s,c))}r.push(e)}for(;e=r.pop();)t(e.node,e.x0,e.y0,e.x1,e.y1);return this},uO.x=function(t){return arguments.length?(this._x=t,this):this._x},uO.y=function(t){return arguments.length?(this._y=t,this):this._y};var sO=function(t){return function(){return t}},cO=function(){return 1e-6*(Math.random()-.5)};function lO(t){return t.x+t.vx}function fO(t){return t.y+t.vy}function hO(t){return t.index}function dO(t,e){var n=t.get(e);if(!n)throw new Error("missing: "+e);return n}var pO={value:function(){}};function gO(){for(var t,e=0,n=arguments.length,r={};e<n;++e){if(!(t=arguments[e]+"")||t in r)throw new Error("illegal type: "+t);r[t]=[]}return new mO(r)}function mO(t){this._=t}function vO(t,e){return t.trim().split(/^|\s+/).map(function(t){var n="",r=t.indexOf(".");if(r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}})}function yO(t,e){for(var n,r=0,i=t.length;r<i;++r)if((n=t[r]).name===e)return n.value}function bO(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=pO,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=n&&t.push({name:e,value:n}),t}mO.prototype=gO.prototype={constructor:mO,on:function(t,e){var n,r=this._,i=vO(t+"",r),o=-1,a=i.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++o<a;)if(n=(t=i[o]).type)r[n]=bO(r[n],t.name,e);else if(null==e)for(n in r)r[n]=bO(r[n],t.name,null);return this}for(;++o<a;)if((n=(t=i[o]).type)&&(n=yO(r[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new mO(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,r,i=new Array(n),o=0;o<n;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,n=(r=this._[t]).length;o<n;++o)r[o].value.apply(e,i)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(e,n)}};var xO,_O,wO=gO,OO=0,kO=0,AO=0,EO=1e3,jO=0,SO=0,CO=0,MO="object"==typeof performance&&performance.now?performance:Date,DO="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function FO(){return SO||(DO(NO),SO=MO.now()+CO)}function NO(){SO=0}function zO(){this._call=this._time=this._next=null}function TO(t,e,n){var r=new zO;return r.restart(t,e,n),r}function $O(){SO=(jO=MO.now())+CO,OO=kO=0;try{!function(){FO(),++OO;for(var t,e=xO;e;)(t=SO-e._time)>=0&&e._call.call(null,t),e=e._next;--OO}()}finally{OO=0,function(){var t,e,n=xO,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:xO=e);_O=t,BO(r)}(),SO=0}}function RO(){var t=MO.now(),e=t-jO;e>EO&&(CO-=e,jO=t)}function BO(t){OO||(kO&&(kO=clearTimeout(kO)),t-SO>24?(t<1/0&&(kO=setTimeout($O,t-MO.now()-CO)),AO&&(AO=clearInterval(AO))):(AO||(jO=MO.now(),AO=setInterval(RO,EO)),OO=1,DO($O)))}zO.prototype=TO.prototype={constructor:zO,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?FO():+n)+(null==e?0:+e),this._next||_O===this||(_O?_O._next=this:xO=this,_O=this),this._call=t,this._time=n,BO()},stop:function(){this._call&&(this._call=null,this._time=1/0,BO())}};function PO(t){return t.x}function LO(t){return t.y}var UO=10,qO=Math.PI*(3-Math.sqrt(5)),IO=function(t){var e,n=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,u=new Map,s=TO(l),c=wO("tick","end");function l(){f(),c.call("tick",e),n<r&&(s.stop(),c.call("end",e))}function f(r){var s,c,l=t.length;void 0===r&&(r=1);for(var f=0;f<r;++f)for(n+=(o-n)*i,u.forEach(function(t){t(n)}),s=0;s<l;++s)null==(c=t[s]).fx?c.x+=c.vx*=a:(c.x=c.fx,c.vx=0),null==c.fy?c.y+=c.vy*=a:(c.y=c.fy,c.vy=0);return e}function h(){for(var e,n=0,r=t.length;n<r;++n){if((e=t[n]).index=n,null!=e.fx&&(e.x=e.fx),null!=e.fy&&(e.y=e.fy),isNaN(e.x)||isNaN(e.y)){var i=UO*Math.sqrt(n),o=n*qO;e.x=i*Math.cos(o),e.y=i*Math.sin(o)}(isNaN(e.vx)||isNaN(e.vy))&&(e.vx=e.vy=0)}}function d(e){return e.initialize&&e.initialize(t),e}return null==t&&(t=[]),h(),e={tick:f,restart:function(){return s.restart(l),e},stop:function(){return s.stop(),e},nodes:function(n){return arguments.length?(t=n,h(),u.forEach(d),e):t},alpha:function(t){return arguments.length?(n=+t,e):n},alphaMin:function(t){return arguments.length?(r=+t,e):r},alphaDecay:function(t){return arguments.length?(i=+t,e):+i},alphaTarget:function(t){return arguments.length?(o=+t,e):o},velocityDecay:function(t){return arguments.length?(a=1-t,e):1-a},force:function(t,n){return arguments.length>1?(null==n?u.delete(t):u.set(t,d(n)),e):u.get(t)},find:function(e,n,r){var i,o,a,u,s,c=0,l=t.length;for(null==r?r=1/0:r*=r,c=0;c<l;++c)(a=(i=e-(u=t[c]).x)*i+(o=n-u.y)*o)<r&&(s=u,r=a);return s},on:function(t,n){return arguments.length>1?(c.on(t,n),e):c.on(t)}}},WO={center:function(t,e){var n;function r(){var r,i,o=n.length,a=0,u=0;for(r=0;r<o;++r)a+=(i=n[r]).x,u+=i.y;for(a=a/o-t,u=u/o-e,r=0;r<o;++r)(i=n[r]).x-=a,i.y-=u}return null==t&&(t=0),null==e&&(e=0),r.initialize=function(t){n=t},r.x=function(e){return arguments.length?(t=+e,r):t},r.y=function(t){return arguments.length?(e=+t,r):e},r},collide:function(t){var e,n,r=1,i=1;function o(){for(var t,o,u,s,c,l,f,h=e.length,d=0;d<i;++d)for(o=iO(e,lO,fO).visitAfter(a),t=0;t<h;++t)u=e[t],l=n[u.index],f=l*l,s=u.x+u.vx,c=u.y+u.vy,o.visit(p);function p(t,e,n,i,o){var a=t.data,h=t.r,d=l+h;if(!a)return e>s+d||i<s-d||n>c+d||o<c-d;if(a.index>u.index){var p=s-a.x-a.vx,g=c-a.y-a.vy,m=p*p+g*g;m<d*d&&(0===p&&(m+=(p=cO())*p),0===g&&(m+=(g=cO())*g),m=(d-(m=Math.sqrt(m)))/m*r,u.vx+=(p*=m)*(d=(h*=h)/(f+h)),u.vy+=(g*=m)*d,a.vx-=p*(d=1-d),a.vy-=g*d)}}}function a(t){if(t.data)return t.r=n[t.data.index];for(var e=t.r=0;e<4;++e)t[e]&&t[e].r>t.r&&(t.r=t[e].r)}function u(){if(e){var r,i,o=e.length;for(n=new Array(o),r=0;r<o;++r)i=e[r],n[i.index]=+t(i,r,e)}}return"function"!=typeof t&&(t=sO(null==t?1:+t)),o.initialize=function(t){e=t,u()},o.iterations=function(t){return arguments.length?(i=+t,o):i},o.strength=function(t){return arguments.length?(r=+t,o):r},o.radius=function(e){return arguments.length?(t="function"==typeof e?e:sO(+e),u(),o):t},o},nbody:function(){var t,e,n,r,i=sO(-30),o=1,a=1/0,u=.81;function s(r){var i,o=t.length,a=iO(t,PO,LO).visitAfter(l);for(n=r,i=0;i<o;++i)e=t[i],a.visit(f)}function c(){if(t){var e,n,o=t.length;for(r=new Array(o),e=0;e<o;++e)n=t[e],r[n.index]=+i(n,e,t)}}function l(t){var e,n,i,o,a,u=0,s=0;if(t.length){for(i=o=a=0;a<4;++a)(e=t[a])&&(n=Math.abs(e.value))&&(u+=e.value,s+=n,i+=n*e.x,o+=n*e.y);t.x=i/s,t.y=o/s}else{(e=t).x=e.data.x,e.y=e.data.y;do{u+=r[e.data.index]}while(e=e.next)}t.value=u}function f(t,i,s,c){if(!t.value)return!0;var l=t.x-e.x,f=t.y-e.y,h=c-i,d=l*l+f*f;if(h*h/u<d)return d<a&&(0===l&&(d+=(l=cO())*l),0===f&&(d+=(f=cO())*f),d<o&&(d=Math.sqrt(o*d)),e.vx+=l*t.value*n/d,e.vy+=f*t.value*n/d),!0;if(!(t.length||d>=a)){(t.data!==e||t.next)&&(0===l&&(d+=(l=cO())*l),0===f&&(d+=(f=cO())*f),d<o&&(d=Math.sqrt(o*d)));do{t.data!==e&&(h=r[t.data.index]*n/d,e.vx+=l*h,e.vy+=f*h)}while(t=t.next)}}return s.initialize=function(e){t=e,c()},s.strength=function(t){return arguments.length?(i="function"==typeof t?t:sO(+t),c(),s):i},s.distanceMin=function(t){return arguments.length?(o=t*t,s):Math.sqrt(o)},s.distanceMax=function(t){return arguments.length?(a=t*t,s):Math.sqrt(a)},s.theta=function(t){return arguments.length?(u=t*t,s):Math.sqrt(u)},s},link:function(t){var e,n,r,i,o,a=hO,u=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},s=sO(30),c=1;function l(r){for(var i=0,a=t.length;i<c;++i)for(var u,s,l,f,h,d,p,g=0;g<a;++g)s=(u=t[g]).source,f=(l=u.target).x+l.vx-s.x-s.vx||cO(),h=l.y+l.vy-s.y-s.vy||cO(),f*=d=((d=Math.sqrt(f*f+h*h))-n[g])/d*r*e[g],h*=d,l.vx-=f*(p=o[g]),l.vy-=h*p,s.vx+=f*(p=1-p),s.vy+=h*p}function f(){if(r){var u,s,c=r.length,l=t.length,f=new Map(r.map((t,e)=>[a(t,e,r),t]));for(u=0,i=new Array(c);u<l;++u)(s=t[u]).index=u,"object"!=typeof s.source&&(s.source=dO(f,s.source)),"object"!=typeof s.target&&(s.target=dO(f,s.target)),i[s.source.index]=(i[s.source.index]||0)+1,i[s.target.index]=(i[s.target.index]||0)+1;for(u=0,o=new Array(l);u<l;++u)s=t[u],o[u]=i[s.source.index]/(i[s.source.index]+i[s.target.index]);e=new Array(l),h(),n=new Array(l),d()}}function h(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+u(t[n],n,t)}function d(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+s(t[e],e,t)}return null==t&&(t=[]),l.initialize=function(t){r=t,f()},l.links=function(e){return arguments.length?(t=e,f(),l):t},l.id=function(t){return arguments.length?(a=t,l):a},l.iterations=function(t){return arguments.length?(c=+t,l):c},l.strength=function(t){return arguments.length?(u="function"==typeof t?t:sO(+t),h(),l):u},l.distance=function(t){return arguments.length?(s="function"==typeof t?t:sO(+t),d(),l):s},l},x:function(t){var e,n,r,i=sO(.1);function o(t){for(var i,o=0,a=e.length;o<a;++o)(i=e[o]).vx+=(r[o]-i.x)*n[o]*t}function a(){if(e){var o,a=e.length;for(n=new Array(a),r=new Array(a),o=0;o<a;++o)n[o]=isNaN(r[o]=+t(e[o],o,e))?0:+i(e[o],o,e)}}return"function"!=typeof t&&(t=sO(null==t?0:+t)),o.initialize=function(t){e=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:sO(+t),a(),o):i},o.x=function(e){return arguments.length?(t="function"==typeof e?e:sO(+e),a(),o):t},o},y:function(t){var e,n,r,i=sO(.1);function o(t){for(var i,o=0,a=e.length;o<a;++o)(i=e[o]).vy+=(r[o]-i.y)*n[o]*t}function a(){if(e){var o,a=e.length;for(n=new Array(a),r=new Array(a),o=0;o<a;++o)n[o]=isNaN(r[o]=+t(e[o],o,e))?0:+i(e[o],o,e)}}return"function"!=typeof t&&(t=sO(null==t?0:+t)),o.initialize=function(t){e=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:sO(+t),a(),o):i},o.y=function(e){return arguments.length?(t="function"==typeof e?e:sO(+e),a(),o):t},o}},HO="forces",GO=["alpha","alphaMin","alphaTarget","velocityDecay","forces"],YO=["static","iterations"],VO=["x","y","vx","vy"];function XO(t){Oi.call(this,null,t)}XO.Definition={type:"Force",metadata:{modifies:!0},params:[{name:"static",type:"boolean",default:!1},{name:"restart",type:"boolean",default:!1},{name:"iterations",type:"number",default:300},{name:"alpha",type:"number",default:1},{name:"alphaMin",type:"number",default:.001},{name:"alphaTarget",type:"number",default:0},{name:"velocityDecay",type:"number",default:.4},{name:"forces",type:"param",array:!0,params:[{key:{force:"center"},params:[{name:"x",type:"number",default:0},{name:"y",type:"number",default:0}]},{key:{force:"collide"},params:[{name:"radius",type:"number",expr:!0},{name:"strength",type:"number",default:.7},{name:"iterations",type:"number",default:1}]},{key:{force:"nbody"},params:[{name:"strength",type:"number",default:-30},{name:"theta",type:"number",default:.9},{name:"distanceMin",type:"number",default:1},{name:"distanceMax",type:"number"}]},{key:{force:"link"},params:[{name:"links",type:"data"},{name:"id",type:"field"},{name:"distance",type:"number",default:30,expr:!0},{name:"strength",type:"number",expr:!0},{name:"iterations",type:"number",default:1}]},{key:{force:"x"},params:[{name:"strength",type:"number",default:.1},{name:"x",type:"field"}]},{key:{force:"y"},params:[{name:"strength",type:"number",default:.1},{name:"y",type:"field"}]}]},{name:"as",type:"string",array:!0,modify:!1,default:VO}]};var JO=Object(Mt.x)(XO,Oi);function ZO(t,e,n,r){var i,o,a,u,s=Object(Mt.i)(e.forces);for(i=0,o=GO.length;i<o;++i)(a=GO[i])!==HO&&e.modified(a)&&t[a](e[a]);for(i=0,o=s.length;i<o;++i)u=HO+i,(a=n||e.modified(HO,i)?KO(s[i]):r&&QO(s[i],r)?t.force(u):null)&&t.force(u,a);for(o=t.numForces||0;i<o;++i)t.force(HO+i,null);return t.numForces=s.length,t}function QO(t,e){var n,r;for(n in t)if(Object(Mt.C)(r=t[n])&&e.modified(Object(Mt.g)(r)))return 1;return 0}function KO(t){var e,n;for(n in WO.hasOwnProperty(t.force)||Object(Mt.n)("Unrecognized force: "+t.force),e=WO[t.force](),t)Object(Mt.C)(e[n])&&tk(e[n],t[n],t);return e}function tk(t,e,n){t(Object(Mt.C)(e)?function(t){return e(t,n)}:e)}JO.transform=function(t,e){var n,r,i=this.value,o=e.changed(e.ADD_REM),a=t.modified(GO),u=t.iterations||300;if(i?(o&&(e.modifies("index"),i.nodes(e.source)),(a||e.changed(e.MOD))&&ZO(i,t,0,e)):(this.value=i=function(t,e){var n=IO(t),r=!1,i=n.stop,o=n.restart;return n.stopped=function(){return r},n.restart=function(){return r=!1,o()},n.stop=function(){return r=!0,i()},ZO(n,e,!0).on("end",function(){r=!0})}(e.source,t),i.on("tick",(n=e.dataflow,r=this,function(){n.touch(r).run()})),t.static||(o=!0,i.tick()),e.modifies("index")),a||o||t.modified(YO)||e.changed()&&t.restart)if(i.alpha(Math.max(i.alpha(),t.alpha||1)).alphaDecay(1-Math.pow(i.alphaMin(),1/u)),t.static)for(i.stop();--u>=0;)i.tick();else if(i.stopped()&&i.restart(),!o)return e.StopPropagation;return this.finish(t,e)},JO.finish=function(t,e){for(var n,r=e.dataflow,i=this._argops,o=0,a=i.length;o<a;++o)if((n=i[o]).name===HO&&"link"===n.op._argval.force)for(var u,s=n.op._argops,c=0,l=s.length;c<l;++c)if("links"===s[c].name&&(u=s[c].op.source)){r.pulse(u,r.changeset().reflow());break}return e.reflow(t.modified()).modifies(VO)};var ek=function(t,e,n){var r={};return t.each(function(t){var i=t.data;n(i)&&(r[e(i)]=t)}),t.lookup=r,t};function nk(t,e){return t.parent===e.parent?1:2}function rk(t,e){return t+e.x}function ik(t,e){return Math.max(t,e.y)}function ok(t){var e=0,n=t.children,r=n&&n.length;if(r)for(;--r>=0;)e+=n[r].value;else e=1;t.value=e}function ak(t,e){var n,r,i,o,a,u=new lk(t),s=+t.value&&(u.value=t.value),c=[u];for(null==e&&(e=uk);n=c.pop();)if(s&&(n.value=+n.data.value),(i=e(n.data))&&(a=i.length))for(n.children=new Array(a),o=a-1;o>=0;--o)c.push(r=n.children[o]=new lk(i[o])),r.parent=n,r.depth=n.depth+1;return u.eachBefore(ck)}function uk(t){return t.children}function sk(t){t.data=t.data.data}function ck(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function lk(t){this.data=t,this.depth=this.height=0,this.parent=null}lk.prototype=ak.prototype={constructor:lk,count:function(){return this.eachAfter(ok)},each:function(t){var e,n,r,i,o=this,a=[o];do{for(e=a.reverse(),a=[];o=e.pop();)if(t(o),n=o.children)for(r=0,i=n.length;r<i;++r)a.push(n[r])}while(a.length);return this},eachAfter:function(t){for(var e,n,r,i=this,o=[i],a=[];i=o.pop();)if(a.push(i),e=i.children)for(n=0,r=e.length;n<r;++n)o.push(e[n]);for(;i=a.pop();)t(i);return this},eachBefore:function(t){for(var e,n,r=this,i=[r];r=i.pop();)if(t(r),e=r.children)for(n=e.length-1;n>=0;--n)i.push(e[n]);return this},sum:function(t){return this.eachAfter(function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n})},sort:function(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;for(t=n.pop(),e=r.pop();t===e;)i=t,t=n.pop(),e=r.pop();return i}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each(function(e){t.push(e)}),t},leaves:function(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t},links:function(){var t=this,e=[];return t.each(function(n){n!==t&&e.push({source:n.parent,target:n})}),e},copy:function(){return ak(this).eachBefore(sk)}};var fk=Array.prototype.slice;var hk=function(t){for(var e,n,r=0,i=(t=function(t){for(var e,n,r=t.length;r;)n=Math.random()*r--|0,e=t[r],t[r]=t[n],t[n]=e;return t}(fk.call(t))).length,o=[];r<i;)e=t[r],n&&gk(n,e)?++r:(n=vk(o=dk(o,e)),r=0);return n};function dk(t,e){var n,r;if(mk(e,t))return[e];for(n=0;n<t.length;++n)if(pk(e,t[n])&&mk(yk(t[n],e),t))return[t[n],e];for(n=0;n<t.length-1;++n)for(r=n+1;r<t.length;++r)if(pk(yk(t[n],t[r]),e)&&pk(yk(t[n],e),t[r])&&pk(yk(t[r],e),t[n])&&mk(bk(t[n],t[r],e),t))return[t[n],t[r],e];throw new Error}function pk(t,e){var n=t.r-e.r,r=e.x-t.x,i=e.y-t.y;return n<0||n*n<r*r+i*i}function gk(t,e){var n=t.r-e.r+1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function mk(t,e){for(var n=0;n<e.length;++n)if(!gk(t,e[n]))return!1;return!0}function vk(t){switch(t.length){case 1:return{x:(e=t[0]).x,y:e.y,r:e.r};case 2:return yk(t[0],t[1]);case 3:return bk(t[0],t[1],t[2])}var e}function yk(t,e){var n=t.x,r=t.y,i=t.r,o=e.x,a=e.y,u=e.r,s=o-n,c=a-r,l=u-i,f=Math.sqrt(s*s+c*c);return{x:(n+o+s/f*l)/2,y:(r+a+c/f*l)/2,r:(f+i+u)/2}}function bk(t,e,n){var r=t.x,i=t.y,o=t.r,a=e.x,u=e.y,s=e.r,c=n.x,l=n.y,f=n.r,h=r-a,d=r-c,p=i-u,g=i-l,m=s-o,v=f-o,y=r*r+i*i-o*o,b=y-a*a-u*u+s*s,x=y-c*c-l*l+f*f,_=d*p-h*g,w=(p*x-g*b)/(2*_)-r,O=(g*m-p*v)/_,k=(d*b-h*x)/(2*_)-i,A=(h*v-d*m)/_,E=O*O+A*A-1,j=2*(o+w*O+k*A),S=w*w+k*k-o*o,C=-(E?(j+Math.sqrt(j*j-4*E*S))/(2*E):S/j);return{x:r+w+O*C,y:i+k+A*C,r:C}}function xk(t,e,n){var r,i,o,a,u=t.x-e.x,s=t.y-e.y,c=u*u+s*s;c?(i=e.r+n.r,i*=i,a=t.r+n.r,i>(a*=a)?(r=(c+a-i)/(2*c),o=Math.sqrt(Math.max(0,a/c-r*r)),n.x=t.x-r*u-o*s,n.y=t.y-r*s+o*u):(r=(c+i-a)/(2*c),o=Math.sqrt(Math.max(0,i/c-r*r)),n.x=e.x+r*u-o*s,n.y=e.y+r*s+o*u)):(n.x=e.x+n.r,n.y=e.y)}function _k(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function wk(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,o=(e.y*n.r+n.y*e.r)/r;return i*i+o*o}function Ok(t){this._=t,this.next=null,this.previous=null}function kk(t){if(!(i=t.length))return 0;var e,n,r,i,o,a,u,s,c,l,f;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(i>2))return e.r+n.r;xk(n,e,r=t[2]),e=new Ok(e),n=new Ok(n),r=new Ok(r),e.next=r.previous=n,n.next=e.previous=r,r.next=n.previous=e;t:for(u=3;u<i;++u){xk(e._,n._,r=t[u]),r=new Ok(r),s=n.next,c=e.previous,l=n._.r,f=e._.r;do{if(l<=f){if(_k(s._,r._)){n=s,e.next=n,n.previous=e,--u;continue t}l+=s._.r,s=s.next}else{if(_k(c._,r._)){(e=c).next=n,n.previous=e,--u;continue t}f+=c._.r,c=c.previous}}while(s!==c.next);for(r.previous=e,r.next=n,e.next=n.previous=n=r,o=wk(e);(r=r.next)!==n;)(a=wk(r))<o&&(e=r,o=a);n=e.next}for(e=[n._],r=n;(r=r.next)!==n;)e.push(r._);for(r=hk(e),u=0;u<i;++u)(e=t[u]).x-=r.x,e.y-=r.y;return r.r}function Ak(t){return null==t?null:Ek(t)}function Ek(t){if("function"!=typeof t)throw new Error;return t}function jk(){return 0}var Sk=function(t){return function(){return t}};function Ck(t){return Math.sqrt(t.value)}function Mk(t){return function(e){e.children||(e.r=Math.max(0,+t(e)||0))}}function Dk(t,e){return function(n){if(r=n.children){var r,i,o,a=r.length,u=t(n)*e||0;if(u)for(i=0;i<a;++i)r[i].r+=u;if(o=kk(r),u)for(i=0;i<a;++i)r[i].r-=u;n.r=o+u}}}function Fk(t){return function(e){var n=e.parent;e.r*=t,n&&(e.x=n.x+t*e.x,e.y=n.y+t*e.y)}}var Nk=function(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)},zk=function(t,e,n,r,i){for(var o,a=t.children,u=-1,s=a.length,c=t.value&&(r-e)/t.value;++u<s;)(o=a[u]).y0=n,o.y1=i,o.x0=e,o.x1=e+=o.value*c},Tk="$",$k={depth:-1},Rk={};function Bk(t){return t.id}function Pk(t){return t.parentId}var Lk=function(){var t=Bk,e=Pk;function n(n){var r,i,o,a,u,s,c,l=n.length,f=new Array(l),h={};for(i=0;i<l;++i)r=n[i],u=f[i]=new lk(r),null!=(s=t(r,i,n))&&(s+="")&&(h[c=Tk+(u.id=s)]=c in h?Rk:u);for(i=0;i<l;++i)if(u=f[i],null!=(s=e(n[i],i,n))&&(s+="")){if(!(a=h[Tk+s]))throw new Error("missing: "+s);if(a===Rk)throw new Error("ambiguous: "+s);a.children?a.children.push(u):a.children=[u],u.parent=a}else{if(o)throw new Error("multiple roots");o=u}if(!o)throw new Error("no root");if(o.parent=$k,o.eachBefore(function(t){t.depth=t.parent.depth+1,--l}).eachBefore(ck),o.parent=null,l>0)throw new Error("cycle");return o}return n.id=function(e){return arguments.length?(t=Ek(e),n):t},n.parentId=function(t){return arguments.length?(e=Ek(t),n):e},n};function Uk(t,e){return t.parent===e.parent?1:2}function qk(t){var e=t.children;return e?e[0]:t.t}function Ik(t){var e=t.children;return e?e[e.length-1]:t.t}function Wk(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}function Hk(t,e,n){return t.a.parent===e.parent?t.a:n}function Gk(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}Gk.prototype=Object.create(lk.prototype);var Yk=function(t,e,n,r,i){for(var o,a=t.children,u=-1,s=a.length,c=t.value&&(i-n)/t.value;++u<s;)(o=a[u]).x0=e,o.x1=r,o.y0=n,o.y1=n+=o.value*c},Vk=(1+Math.sqrt(5))/2;function Xk(t,e,n,r,i,o){for(var a,u,s,c,l,f,h,d,p,g,m,v=[],y=e.children,b=0,x=0,_=y.length,w=e.value;b<_;){s=i-n,c=o-r;do{l=y[x++].value}while(!l&&x<_);for(f=h=l,m=l*l*(g=Math.max(c/s,s/c)/(w*t)),p=Math.max(h/m,m/f);x<_;++x){if(l+=u=y[x].value,u<f&&(f=u),u>h&&(h=u),m=l*l*g,(d=Math.max(h/m,m/f))>p){l-=u;break}p=d}v.push(a={value:l,dice:s<c,children:y.slice(b,x)}),a.dice?zk(a,n,r,i,w?r+=c*l/w:o):Yk(a,n,r,w?n+=s*l/w:i,o),w-=l,b=x}return v}var Jk=function t(e){function n(t,n,r,i,o){Xk(e,t,n,r,i,o)}return n.ratio=function(e){return t((e=+e)>1?e:1)},n}(Vk),Zk=function t(e){function n(t,n,r,i,o){if((a=t._squarify)&&a.ratio===e)for(var a,u,s,c,l,f=-1,h=a.length,d=t.value;++f<h;){for(s=(u=a[f]).children,c=u.value=0,l=s.length;c<l;++c)u.value+=s[c].value;u.dice?zk(u,n,r,i,r+=(o-r)*u.value/d):Yk(u,n,r,n+=(i-n)*u.value/d,o),d-=u.value}else t._squarify=a=Xk(e,t,n,r,i,o),a.ratio=e}return n.ratio=function(e){return t((e=+e)>1?e:1)},n}(Vk);function Qk(t){Oi.call(this,null,t)}function Kk(t){return t.values}function tA(){var t,e=[];return t={entries:function(t){return function t(n,r){if(++r>e.length)return n;var i,o=[];for(i in n)o.push({key:i,values:t(n[i],r)});return o}(function t(n,r){if(r>=e.length)return n;for(var i,o,a,u=-1,s=n.length,c=e[r++],l={},f={};++u<s;)(a=l[i=c(o=n[u])+""])?a.push(o):l[i]=[o];for(i in l)f[i]=t(l[i],r);return f}(t,0),0)},key:function(n){return e.push(n),t}}}function eA(t){Oi.call(this,null,t)}function nA(t,e){return t.parent===e.parent?1:2}Qk.Definition={type:"Nest",metadata:{treesource:!0,changes:!0},params:[{name:"keys",type:"field",array:!0},{name:"generate",type:"boolean"}]},Object(Mt.x)(Qk,Oi).transform=function(t,e){e.source||Object(Mt.n)("Nest transform requires an upstream data source.");var n=t.generate,r=t.modified(),i=e.clone(),o=this.value;return(!o||r||e.changed())&&(o&&o.each(function(t){t.children&&Tt(t.data)&&i.rem.push(t.data)}),this.value=o=ak({values:Object(Mt.i)(t.keys).reduce(function(t,e){return t.key(e),t},tA()).entries(i.source)},Kk),n&&o.each(function(t){t.children&&(t=Bt(t.data),i.add.push(t),i.source.push(t))}),ek(o,$t,$t)),i.source.root=o,i},Object(Mt.x)(eA,Oi).transform=function(t,e){e.source&&e.source.root||Object(Mt.n)(this.constructor.name+" transform requires a backing tree data source.");var n=this.layout(t.method),r=this.fields,i=e.source.root,o=t.as||r;t.field&&i.sum(t.field),t.sort&&i.sort(t.sort),function(t,e,n){for(var r,i=0,o=e.length;i<o;++i)(r=e[i])in n&&t[r](n[r])}(n,this.params,t),n.separation&&n.separation(!1!==t.separation?nA:Mt.L);try{this.value=n(i)}catch(t){Object(Mt.n)(t)}return i.each(function(t){!function(t,e,n){for(var r=t.data,i=0,o=e.length-1;i<o;++i)r[n[i]]=t[e[i]];r[n[o]]=t.children?t.children.length:0}(t,r,o)}),e.reflow(t.modified()).modifies(o).modifies("leaf")};var rA=["x","y","r","depth","children"];function iA(t){eA.call(this,t)}iA.Definition={type:"Pack",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"padding",type:"number",default:0},{name:"radius",type:"field",default:null},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:rA.length,default:rA}]};var oA=Object(Mt.x)(iA,eA);oA.layout=function(){var t=null,e=1,n=1,r=jk;function i(i){return i.x=e/2,i.y=n/2,t?i.eachBefore(Mk(t)).eachAfter(Dk(r,.5)).eachBefore(Fk(1)):i.eachBefore(Mk(Ck)).eachAfter(Dk(jk,1)).eachAfter(Dk(r,i.r/Math.min(e,n))).eachBefore(Fk(Math.min(e,n)/(2*i.r))),i}return i.radius=function(e){return arguments.length?(t=Ak(e),i):t},i.size=function(t){return arguments.length?(e=+t[0],n=+t[1],i):[e,n]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:Sk(+t),i):r},i},oA.params=["size","padding"],oA.fields=rA;var aA=["x0","y0","x1","y1","depth","children"];function uA(t){eA.call(this,t)}uA.Definition={type:"Partition",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"padding",type:"number",default:0},{name:"round",type:"boolean",default:!1},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:aA.length,default:aA}]};var sA=Object(Mt.x)(uA,eA);function cA(t){Oi.call(this,null,t)}sA.layout=function(){var t=1,e=1,n=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=n,i.x1=t,i.y1=e/o,i.eachBefore(function(t,e){return function(r){r.children&&zk(r,r.x0,t*(r.depth+1)/e,r.x1,t*(r.depth+2)/e);var i=r.x0,o=r.y0,a=r.x1-n,u=r.y1-n;a<i&&(i=a=(i+a)/2),u<o&&(o=u=(o+u)/2),r.x0=i,r.y0=o,r.x1=a,r.y1=u}}(e,o)),r&&i.eachBefore(Nk),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(n){return arguments.length?(t=+n[0],e=+n[1],i):[t,e]},i.padding=function(t){return arguments.length?(n=+t,i):n},i},sA.params=["size","round","padding"],sA.fields=aA,cA.Definition={type:"Stratify",metadata:{treesource:!0},params:[{name:"key",type:"field",required:!0},{name:"parentKey",type:"field",required:!0}]},Object(Mt.x)(cA,Oi).transform=function(t,e){e.source||Object(Mt.n)("Stratify transform requires an upstream data source.");var n=this.value,r=t.modified(),i=e.fork(e.ALL).materialize(e.SOURCE),o=!this.value||r||e.changed(e.ADD_REM)||e.modified(t.key.fields)||e.modified(t.parentKey.fields);return i.source=i.source.slice(),o&&(n=i.source.length?ek(Lk().id(t.key).parentId(t.parentKey)(i.source),t.key,Mt.db):ek(Lk()([{}]),t.key,t.key)),i.source.root=this.value=n,i};var lA={tidy:function(){var t=Uk,e=1,n=1,r=null;function i(i){var s=function(t){for(var e,n,r,i,o,a=new Gk(t,0),u=[a];e=u.pop();)if(r=e._.children)for(e.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(n=e.children[i]=new Gk(r[i],i)),n.parent=e;return(a.parent=new Gk(null,0)).children=[a],a}(i);if(s.eachAfter(o),s.parent.m=-s.z,s.eachBefore(a),r)i.eachBefore(u);else{var c=i,l=i,f=i;i.eachBefore(function(t){t.x<c.x&&(c=t),t.x>l.x&&(l=t),t.depth>f.depth&&(f=t)});var h=c===l?1:t(c,l)/2,d=h-c.x,p=e/(l.x+h+d),g=n/(f.depth||1);i.eachBefore(function(t){t.x=(t.x+d)*p,t.y=t.depth*g})}return i}function o(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;if(n){!function(t){for(var e,n=0,r=0,i=t.children,o=i.length;--o>=0;)(e=i[o]).z+=n,e.m+=n,n+=e.s+(r+=e.c)}(e);var o=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-o):e.z=o}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,r){if(n){for(var i,o=e,a=e,u=n,s=o.parent.children[0],c=o.m,l=a.m,f=u.m,h=s.m;u=Ik(u),o=qk(o),u&&o;)s=qk(s),(a=Ik(a)).a=e,(i=u.z+f-o.z-c+t(u._,o._))>0&&(Wk(Hk(u,e,r),e,i),c+=i,l+=i),f+=u.m,c+=o.m,h+=s.m,l+=a.m;u&&!Ik(a)&&(a.t=u,a.m+=f-l),o&&!qk(s)&&(s.t=o,s.m+=c-h,r=e)}return r}(e,i,e.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i},cluster:function(){var t=nk,e=1,n=1,r=!1;function i(i){var o,a=0;i.eachAfter(function(e){var n=e.children;n?(e.x=function(t){return t.reduce(rk,0)/t.length}(n),e.y=function(t){return 1+t.reduce(ik,0)}(n)):(e.x=o?a+=t(e,o):0,e.y=0,o=e)});var u=function(t){for(var e;e=t.children;)t=e[0];return t}(i),s=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(i),c=u.x-t(u,s)/2,l=s.x+t(s,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*e,t.y=(i.y-t.y)*n}:function(t){t.x=(t.x-c)/(l-c)*e,t.y=(1-(i.y?t.y/i.y:1))*n})}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i}},fA=["x","y","depth","children"];function hA(t){eA.call(this,t)}hA.Definition={type:"Tree",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"tidy",values:["tidy","cluster"]},{name:"size",type:"number",array:!0,length:2},{name:"nodeSize",type:"number",array:!0,length:2},{name:"separation",type:"boolean",default:!0},{name:"as",type:"string",array:!0,length:fA.length,default:fA}]};var dA=Object(Mt.x)(hA,eA);function pA(t){Oi.call(this,[],t)}dA.layout=function(t){var e=t||"tidy";if(lA.hasOwnProperty(e))return lA[e]();Object(Mt.n)("Unrecognized Tree layout method: "+e)},dA.params=["size","nodeSize"],dA.fields=fA,pA.Definition={type:"TreeLinks",metadata:{tree:!0,generates:!0,changes:!0},params:[]},Object(Mt.x)(pA,Oi).transform=function(t,e){var n=this.value,r=e.source&&e.source.root,i=e.fork(e.NO_SOURCE),o={};return r||Object(Mt.n)("TreeLinks transform requires a tree data source."),e.changed(e.ADD_REM)?(i.rem=n,e.visit(e.SOURCE,function(t){o[$t(t)]=1}),r.each(function(t){var e=t.data,n=t.parent&&t.parent.data;n&&o[$t(e)]&&o[$t(n)]&&i.add.push(Bt({source:n,target:e}))}),this.value=i.add):e.changed(e.MOD)&&(e.visit(e.MOD,function(t){o[$t(t)]=1}),n.forEach(function(t){(o[$t(t.source)]||o[$t(t.target)])&&i.mod.push(t)})),i};var gA={binary:function(t,e,n,r,i){var o,a,u=t.children,s=u.length,c=new Array(s+1);for(c[0]=a=o=0;o<s;++o)c[o+1]=a+=u[o].value;!function t(e,n,r,i,o,a,s){if(e>=n-1){var l=u[e];return l.x0=i,l.y0=o,l.x1=a,void(l.y1=s)}for(var f=c[e],h=r/2+f,d=e+1,p=n-1;d<p;){var g=d+p>>>1;c[g]<h?d=g+1:p=g}h-c[d-1]<c[d]-h&&e+1<d&&--d;var m=c[d]-f,v=r-m;if(a-i>s-o){var y=(i*v+a*m)/r;t(e,d,m,i,o,y,s),t(d,n,v,y,o,a,s)}else{var b=(o*v+s*m)/r;t(e,d,m,i,o,a,b),t(d,n,v,i,b,a,s)}}(0,s,t.value,e,n,r,i)},dice:zk,slice:Yk,slicedice:function(t,e,n,r,i){(1&t.depth?Yk:zk)(t,e,n,r,i)},squarify:Jk,resquarify:Zk},mA=["x0","y0","x1","y1","depth","children"];function vA(t){eA.call(this,t)}vA.Definition={type:"Treemap",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"squarify",values:["squarify","resquarify","binary","dice","slice","slicedice"]},{name:"padding",type:"number",default:0},{name:"paddingInner",type:"number",default:0},{name:"paddingOuter",type:"number",default:0},{name:"paddingTop",type:"number",default:0},{name:"paddingRight",type:"number",default:0},{name:"paddingBottom",type:"number",default:0},{name:"paddingLeft",type:"number",default:0},{name:"ratio",type:"number",default:1.618033988749895},{name:"round",type:"boolean",default:!1},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:mA.length,default:mA}]};var yA=Object(Mt.x)(vA,eA);yA.layout=function(){var t=function(){var t=Jk,e=!1,n=1,r=1,i=[0],o=jk,a=jk,u=jk,s=jk,c=jk;function l(t){return t.x0=t.y0=0,t.x1=n,t.y1=r,t.eachBefore(f),i=[0],e&&t.eachBefore(Nk),t}function f(e){var n=i[e.depth],r=e.x0+n,l=e.y0+n,f=e.x1-n,h=e.y1-n;f<r&&(r=f=(r+f)/2),h<l&&(l=h=(l+h)/2),e.x0=r,e.y0=l,e.x1=f,e.y1=h,e.children&&(n=i[e.depth+1]=o(e)/2,r+=c(e)-n,l+=a(e)-n,(f-=u(e)-n)<r&&(r=f=(r+f)/2),(h-=s(e)-n)<l&&(l=h=(l+h)/2),t(e,r,l,f,h))}return l.round=function(t){return arguments.length?(e=!!t,l):e},l.size=function(t){return arguments.length?(n=+t[0],r=+t[1],l):[n,r]},l.tile=function(e){return arguments.length?(t=Ek(e),l):t},l.padding=function(t){return arguments.length?l.paddingInner(t).paddingOuter(t):l.paddingInner()},l.paddingInner=function(t){return arguments.length?(o="function"==typeof t?t:Sk(+t),l):o},l.paddingOuter=function(t){return arguments.length?l.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):l.paddingTop()},l.paddingTop=function(t){return arguments.length?(a="function"==typeof t?t:Sk(+t),l):a},l.paddingRight=function(t){return arguments.length?(u="function"==typeof t?t:Sk(+t),l):u},l.paddingBottom=function(t){return arguments.length?(s="function"==typeof t?t:Sk(+t),l):s},l.paddingLeft=function(t){return arguments.length?(c="function"==typeof t?t:Sk(+t),l):c},l}();return t.ratio=function(e){var n=t.tile();n.ratio&&t.tile(n.ratio(e))},t.method=function(e){gA.hasOwnProperty(e)?t.tile(gA[e]):Object(Mt.n)("Unrecognized Treemap layout method: "+e)},t},yA.params=["method","ratio","size","round","padding","paddingInner","paddingOuter","paddingTop","paddingRight","paddingBottom","paddingLeft"],yA.fields=mA;var bA=function(t,e){var n,r,i,o,a,u,s=[],c=function(t){return t(o)};if(null==e)s.push(t);else for(n={},r=0,i=t.length;r<i;++r)o=t[r],(u=n[a=e.map(c)])||(n[a]=u=[],u.dims=a,s.push(u)),u.push(o);return s};function xA(t){Oi.call(this,null,t)}xA.Definition={type:"Loess",metadata:{generates:!0},params:[{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"groupby",type:"field",array:!0},{name:"bandwidth",type:"number",default:.3},{name:"as",type:"string",array:!0}]},Object(Mt.x)(xA,Oi).transform=function(t,e){var n=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e.changed()||t.modified()){const r=e.materialize(e.SOURCE).source,i=bA(r,t.groupby),o=(t.groupby||[]).map(Mt.h),a=o.length,u=t.as||[Object(Mt.h)(t.x),Object(Mt.h)(t.y)],s=[];i.forEach(e=>{Co(e,t.x,t.y,t.bandwidth||.3).forEach(t=>{const n={};for(let t=0;t<a;++t)n[o[t]]=e.dims[t];n[u[0]]=t[0],n[u[1]]=t[1],s.push(Bt(n))})}),this.value&&(n.rem=this.value),this.value=n.add=n.source=s}return n};const _A={linear:Oo,log:ko,exp:Ao,pow:Eo,quad:jo,poly:So};function wA(t){Oi.call(this,null,t)}wA.Definition={type:"Regression",metadata:{generates:!0},params:[{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"groupby",type:"field",array:!0},{name:"method",type:"string",default:"linear",values:Object.keys(_A)},{name:"order",type:"number",default:3},{name:"extent",type:"number",array:!0,length:2},{name:"params",type:"boolean",default:!1},{name:"as",type:"string",array:!0}]},Object(Mt.x)(wA,Oi).transform=function(t,e){var n=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e.changed()||t.modified()){const r=e.materialize(e.SOURCE).source,i=bA(r,t.groupby),o=(t.groupby||[]).map(Mt.h),a=t.method||"linear",u=t.order||3,s=function(t,e){return"poly"===t?e:"quad"===t?2:1}(a,u),c=t.as||[Object(Mt.h)(t.x),Object(Mt.h)(t.y)],l=_A[a],f=[];let h=t.extent;_A.hasOwnProperty(a)||Object(Mt.n)("Invalid regression method: "+a),null!=h&&"log"===a&&h[0]<=0&&(e.dataflow.warn("Ignoring extent with values <= 0 for log regression."),h=null),i.forEach(n=>{if(n.length<=s)return void e.dataflow.warn("Skipping regression with more parameters than data points.");const r=l(n,t.x,t.y,u);if(t.params)return void f.push(Bt({keys:n.dims,coef:r.coef,rSquared:r.rSquared}));const i=h||Object(Mt.p)(n,t.x),d=t=>{const e={};for(let t=0;t<o.length;++t)e[o[t]]=n.dims[t];e[c[0]]=t[0],e[c[1]]=t[1],f.push(Bt(e))};"linear"===a?i.forEach(t=>d([t,r.predict(t)])):No(r.predict,i,25,200).forEach(d)}),this.value&&(n.rem=this.value),this.value=n.add=n.source=f}return n};var OA=function(t){return function(){return t}};function kA(t){return t[0]}function AA(t){return t[1]}function EA(){this._=null}function jA(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function SA(t,e){var n=e,r=e.R,i=n.U;i?i.L===n?i.L=r:i.R=r:t._=r,r.U=i,n.U=r,n.R=r.L,n.R&&(n.R.U=n),r.L=n}function CA(t,e){var n=e,r=e.L,i=n.U;i?i.L===n?i.L=r:i.R=r:t._=r,r.U=i,n.U=r,n.L=r.R,n.L&&(n.L.U=n),r.R=n}function MA(t){for(;t.L;)t=t.L;return t}EA.prototype={constructor:EA,insert:function(t,e){var n,r,i;if(t){if(e.P=t,e.N=t.N,t.N&&(t.N.P=e),t.N=e,t.R){for(t=t.R;t.L;)t=t.L;t.L=e}else t.R=e;n=t}else this._?(t=MA(this._),e.P=null,e.N=t,t.P=t.L=e,n=t):(e.P=e.N=null,this._=e,n=null);for(e.L=e.R=null,e.U=n,e.C=!0,t=e;n&&n.C;)n===(r=n.U).L?(i=r.R)&&i.C?(n.C=i.C=!1,r.C=!0,t=r):(t===n.R&&(SA(this,n),n=(t=n).U),n.C=!1,r.C=!0,CA(this,r)):(i=r.L)&&i.C?(n.C=i.C=!1,r.C=!0,t=r):(t===n.L&&(CA(this,n),n=(t=n).U),n.C=!1,r.C=!0,SA(this,r)),n=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var e,n,r,i=t.U,o=t.L,a=t.R;if(n=o?a?MA(a):o:a,i?i.L===t?i.L=n:i.R=n:this._=n,o&&a?(r=n.C,n.C=t.C,n.L=o,o.U=n,n!==a?(i=n.U,n.U=t.U,t=n.R,i.L=t,n.R=a,a.U=n):(n.U=i,i=n,t=n.R)):(r=t.C,t=n),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((e=i.R).C&&(e.C=!1,i.C=!0,SA(this,i),e=i.R),e.L&&e.L.C||e.R&&e.R.C){e.R&&e.R.C||(e.L.C=!1,e.C=!0,CA(this,e),e=i.R),e.C=i.C,i.C=e.R.C=!1,SA(this,i),t=this._;break}}else if((e=i.L).C&&(e.C=!1,i.C=!0,CA(this,i),e=i.L),e.L&&e.L.C||e.R&&e.R.C){e.L&&e.L.C||(e.R.C=!1,e.C=!0,SA(this,e),e=i.L),e.C=i.C,i.C=e.L.C=!1,CA(this,i),t=this._;break}e.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var DA=EA;function FA(t,e,n,r){var i=[null,null],o=nE.push(i)-1;return i.left=t,i.right=e,n&&zA(i,t,e,n),r&&zA(i,e,t,r),tE[t.index].halfedges.push(o),tE[e.index].halfedges.push(o),i}function NA(t,e,n){var r=[e,n];return r.left=t,r}function zA(t,e,n,r){t[0]||t[1]?t.left===n?t[1]=r:t[0]=r:(t[0]=r,t.left=e,t.right=n)}function TA(t,e,n,r,i){var o,a=t[0],u=t[1],s=a[0],c=a[1],l=0,f=1,h=u[0]-s,d=u[1]-c;if(o=e-s,h||!(o>0)){if(o/=h,h<0){if(o<l)return;o<f&&(f=o)}else if(h>0){if(o>f)return;o>l&&(l=o)}if(o=r-s,h||!(o<0)){if(o/=h,h<0){if(o>f)return;o>l&&(l=o)}else if(h>0){if(o<l)return;o<f&&(f=o)}if(o=n-c,d||!(o>0)){if(o/=d,d<0){if(o<l)return;o<f&&(f=o)}else if(d>0){if(o>f)return;o>l&&(l=o)}if(o=i-c,d||!(o<0)){if(o/=d,d<0){if(o>f)return;o>l&&(l=o)}else if(d>0){if(o<l)return;o<f&&(f=o)}return!(l>0||f<1)||(l>0&&(t[0]=[s+l*h,c+l*d]),f<1&&(t[1]=[s+f*h,c+f*d]),!0)}}}}}function $A(t,e,n,r,i){var o=t[1];if(o)return!0;var a,u,s=t[0],c=t.left,l=t.right,f=c[0],h=c[1],d=l[0],p=l[1],g=(f+d)/2,m=(h+p)/2;if(p===h){if(g<e||g>=r)return;if(f>d){if(s){if(s[1]>=i)return}else s=[g,n];o=[g,i]}else{if(s){if(s[1]<n)return}else s=[g,i];o=[g,n]}}else if(u=m-(a=(f-d)/(p-h))*g,a<-1||a>1)if(f>d){if(s){if(s[1]>=i)return}else s=[(n-u)/a,n];o=[(i-u)/a,i]}else{if(s){if(s[1]<n)return}else s=[(i-u)/a,i];o=[(n-u)/a,n]}else if(h<p){if(s){if(s[0]>=r)return}else s=[e,a*e+u];o=[r,a*r+u]}else{if(s){if(s[0]<e)return}else s=[r,a*r+u];o=[e,a*e+u]}return t[0]=s,t[1]=o,!0}function RA(t,e){var n=t.site,r=e.left,i=e.right;return n===i&&(i=r,r=n),i?Math.atan2(i[1]-r[1],i[0]-r[0]):(n===r?(r=e[1],i=e[0]):(r=e[0],i=e[1]),Math.atan2(r[0]-i[0],i[1]-r[1]))}function BA(t,e){return e[+(e.left!==t.site)]}function PA(t,e){return e[+(e.left===t.site)]}var LA,UA=[];function qA(){jA(this),this.x=this.y=this.arc=this.site=this.cy=null}function IA(t){var e=t.P,n=t.N;if(e&&n){var r=e.site,i=t.site,o=n.site;if(r!==o){var a=i[0],u=i[1],s=r[0]-a,c=r[1]-u,l=o[0]-a,f=o[1]-u,h=2*(s*f-c*l);if(!(h>=-iE)){var d=s*s+c*c,p=l*l+f*f,g=(f*d-c*p)/h,m=(s*p-l*d)/h,v=UA.pop()||new qA;v.arc=t,v.site=i,v.x=g+a,v.y=(v.cy=m+u)+Math.sqrt(g*g+m*m),t.circle=v;for(var y=null,b=eE._;b;)if(v.y<b.y||v.y===b.y&&v.x<=b.x){if(!b.L){y=b.P;break}b=b.L}else{if(!b.R){y=b;break}b=b.R}eE.insert(y,v),y||(LA=v)}}}}function WA(t){var e=t.circle;e&&(e.P||(LA=e.N),eE.remove(e),UA.push(e),jA(e),t.circle=null)}var HA=[];function GA(){jA(this),this.edge=this.site=this.circle=null}function YA(t){var e=HA.pop()||new GA;return e.site=t,e}function VA(t){WA(t),KA.remove(t),HA.push(t),jA(t)}function XA(t){var e=t.circle,n=e.x,r=e.cy,i=[n,r],o=t.P,a=t.N,u=[t];VA(t);for(var s=o;s.circle&&Math.abs(n-s.circle.x)<rE&&Math.abs(r-s.circle.cy)<rE;)o=s.P,u.unshift(s),VA(s),s=o;u.unshift(s),WA(s);for(var c=a;c.circle&&Math.abs(n-c.circle.x)<rE&&Math.abs(r-c.circle.cy)<rE;)a=c.N,u.push(c),VA(c),c=a;u.push(c),WA(c);var l,f=u.length;for(l=1;l<f;++l)c=u[l],s=u[l-1],zA(c.edge,s.site,c.site,i);s=u[0],(c=u[f-1]).edge=FA(s.site,c.site,null,i),IA(s),IA(c)}function JA(t){for(var e,n,r,i,o=t[0],a=t[1],u=KA._;u;)if((r=ZA(u,a)-o)>rE)u=u.L;else{if(!((i=o-QA(u,a))>rE)){r>-rE?(e=u.P,n=u):i>-rE?(e=u,n=u.N):e=n=u;break}if(!u.R){e=u;break}u=u.R}!function(t){tE[t.index]={site:t,halfedges:[]}}(t);var s=YA(t);if(KA.insert(e,s),e||n){if(e===n)return WA(e),n=YA(e.site),KA.insert(s,n),s.edge=n.edge=FA(e.site,s.site),IA(e),void IA(n);if(n){WA(e),WA(n);var c=e.site,l=c[0],f=c[1],h=t[0]-l,d=t[1]-f,p=n.site,g=p[0]-l,m=p[1]-f,v=2*(h*m-d*g),y=h*h+d*d,b=g*g+m*m,x=[(m*y-d*b)/v+l,(h*b-g*y)/v+f];zA(n.edge,c,p,x),s.edge=FA(c,t,null,x),n.edge=FA(t,p,null,x),IA(e),IA(n)}else s.edge=FA(e.site,s.site)}}function ZA(t,e){var n=t.site,r=n[0],i=n[1],o=i-e;if(!o)return r;var a=t.P;if(!a)return-1/0;var u=(n=a.site)[0],s=n[1],c=s-e;if(!c)return u;var l=u-r,f=1/o-1/c,h=l/c;return f?(-h+Math.sqrt(h*h-2*f*(l*l/(-2*c)-s+c/2+i-o/2)))/f+r:(r+u)/2}function QA(t,e){var n=t.N;if(n)return ZA(n,e);var r=t.site;return r[1]===e?r[0]:1/0}var KA,tE,eE,nE,rE=1e-6,iE=1e-12;function oE(t,e){return e[1]-t[1]||e[0]-t[0]}function aE(t,e){var n,r,i,o=t.sort(oE).pop();for(nE=[],tE=new Array(t.length),KA=new DA,eE=new DA;;)if(i=LA,o&&(!i||o[1]<i.y||o[1]===i.y&&o[0]<i.x))o[0]===n&&o[1]===r||(JA(o),n=o[0],r=o[1]),o=t.pop();else{if(!i)break;XA(i.arc)}if(function(){for(var t,e,n,r,i=0,o=tE.length;i<o;++i)if((t=tE[i])&&(r=(e=t.halfedges).length)){var a=new Array(r),u=new Array(r);for(n=0;n<r;++n)a[n]=n,u[n]=RA(t,nE[e[n]]);for(a.sort(function(t,e){return u[e]-u[t]}),n=0;n<r;++n)u[n]=e[a[n]];for(n=0;n<r;++n)e[n]=u[n]}}(),e){var a=+e[0][0],u=+e[0][1],s=+e[1][0],c=+e[1][1];!function(t,e,n,r){for(var i,o=nE.length;o--;)$A(i=nE[o],t,e,n,r)&&TA(i,t,e,n,r)&&(Math.abs(i[0][0]-i[1][0])>rE||Math.abs(i[0][1]-i[1][1])>rE)||delete nE[o]}(a,u,s,c),function(t,e,n,r){var i,o,a,u,s,c,l,f,h,d,p,g,m=tE.length,v=!0;for(i=0;i<m;++i)if(o=tE[i]){for(a=o.site,u=(s=o.halfedges).length;u--;)nE[s[u]]||s.splice(u,1);for(u=0,c=s.length;u<c;)p=(d=PA(o,nE[s[u]]))[0],g=d[1],f=(l=BA(o,nE[s[++u%c]]))[0],h=l[1],(Math.abs(p-f)>rE||Math.abs(g-h)>rE)&&(s.splice(u,0,nE.push(NA(a,d,Math.abs(p-t)<rE&&r-g>rE?[t,Math.abs(f-t)<rE?h:r]:Math.abs(g-r)<rE&&n-p>rE?[Math.abs(h-r)<rE?f:n,r]:Math.abs(p-n)<rE&&g-e>rE?[n,Math.abs(f-n)<rE?h:e]:Math.abs(g-e)<rE&&p-t>rE?[Math.abs(h-e)<rE?f:t,e]:null))-1),++c);c&&(v=!1)}if(v){var y,b,x,_=1/0;for(i=0,v=null;i<m;++i)(o=tE[i])&&(x=(y=(a=o.site)[0]-t)*y+(b=a[1]-e)*b)<_&&(_=x,v=o);if(v){var w=[t,e],O=[t,r],k=[n,r],A=[n,e];v.halfedges.push(nE.push(NA(a=v.site,w,O))-1,nE.push(NA(a,O,k))-1,nE.push(NA(a,k,A))-1,nE.push(NA(a,A,w))-1)}}for(i=0;i<m;++i)(o=tE[i])&&(o.halfedges.length||delete tE[i])}(a,u,s,c)}this.edges=nE,this.cells=tE,KA=eE=nE=tE=null}aE.prototype={constructor:aE,polygons:function(){var t=this.edges;return this.cells.map(function(e){var n=e.halfedges.map(function(n){return BA(e,t[n])});return n.data=e.site.data,n})},triangles:function(){var t=[],e=this.edges;return this.cells.forEach(function(n,r){if(o=(i=n.halfedges).length)for(var i,o,a,u,s,c,l=n.site,f=-1,h=e[i[o-1]],d=h.left===l?h.right:h.left;++f<o;)a=d,d=(h=e[i[f]]).left===l?h.right:h.left,a&&d&&r<a.index&&r<d.index&&(s=a,c=d,((u=l)[0]-c[0])*(s[1]-u[1])-(u[0]-s[0])*(c[1]-u[1])<0)&&t.push([l.data,a.data,d.data])}),t},links:function(){return this.edges.filter(function(t){return t.right}).map(function(t){return{source:t.left.data,target:t.right.data}})},find:function(t,e,n){for(var r,i,o=this,a=o._found||0,u=o.cells.length;!(i=o.cells[a]);)if(++a>=u)return null;var s=t-i.site[0],c=e-i.site[1],l=s*s+c*c;do{i=o.cells[r=a],a=null,i.halfedges.forEach(function(n){var r=o.edges[n],u=r.left;if(u!==i.site&&u||(u=r.right)){var s=t-u[0],c=e-u[1],f=s*s+c*c;f<l&&(l=f,a=u.index)}})}while(null!==a);return o._found=r,null==n||l<=n*n?i.site:null}};function uE(t){Oi.call(this,null,t)}uE.Definition={type:"Voronoi",metadata:{modifies:!0},params:[{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"size",type:"number",array:!0,length:2},{name:"extent",type:"array",array:!0,length:2,default:[[-1e5,-1e5],[1e5,1e5]],content:{type:"number",array:!0,length:2}},{name:"as",type:"string",default:"path"}]};var sE=Object(Mt.x)(uE,Oi),cE=[[-1e5,-1e5],[1e5,1e5]];sE.transform=function(t,e){var n,r,i,o,a=t.as||"path",u=e.source;for(n=function(){var t=kA,e=AA,n=null;function r(r){return new aE(r.map(function(n,i){var o=[Math.round(t(n,i,r)/rE)*rE,Math.round(e(n,i,r)/rE)*rE];return o.index=i,o.data=n,o}),n)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(e){return arguments.length?(t="function"==typeof e?e:OA(+e),r):t},r.y=function(t){return arguments.length?(e="function"==typeof t?t:OA(+t),r):e},r.extent=function(t){return arguments.length?(n=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):n&&[[n[0][0],n[0][1]],[n[1][0],n[1][1]]]},r.size=function(t){return arguments.length?(n=null==t?null:[[0,0],[+t[0],+t[1]]],r):n&&[n[1][0]-n[0][0],n[1][1]-n[0][1]]},r}().x(t.x).y(t.y),t.size?n.size(t.size):n.extent(t.extent||cE),this.value=n=n(u),r=n.polygons(),i=0,o=u.length;i<o;++i)u[i][a]=r[i]?"M"+r[i].join("L")+"Z":null;return e.reflow(t.modified()).modifies(a)};var lE=Math.PI/180,fE=64,hE=2048,dE=function(){var t,e,n,r,i,o,a,u=[256,256],s=vE,c=[],l=Math.random,f={};function h(t,e,n){for(var r,i,o,a,c,f=e.x,h=e.y,d=Math.sqrt(u[0]*u[0]+u[1]*u[1]),p=s(u),g=l()<.5?1:-1,m=-g;(r=p(m+=g))&&(i=~~r[0],o=~~r[1],!(Math.min(Math.abs(i),Math.abs(o))>=d));)if(e.x=f+i,e.y=h+o,!(e.x+e.x0<0||e.y+e.y0<0||e.x+e.x1>u[0]||e.y+e.y1>u[1]||n&&gE(e,t,u[0])||n&&(c=n,!((a=e).x+a.x1>c[0].x&&a.x+a.x0<c[1].x&&a.y+a.y1>c[0].y&&a.y+a.y0<c[1].y)))){for(var v,y=e.sprite,b=e.width>>5,x=u[0]>>5,_=e.x-(b<<4),w=127&_,O=32-w,k=e.y1-e.y0,A=(e.y+e.y0)*x+(_>>5),E=0;E<k;E++){v=0;for(var j=0;j<=b;j++)t[A+j]|=v<<O|(j<b?(v=y[E*b+j])>>>w:0);A+=x}return e.sprite=null,!0}return!1}return f.layout=function(){for(var s=function(t){t.width=t.height=1;var e=Math.sqrt(t.getContext("2d").getImageData(0,0,1,1).data.length>>2);t.width=(fE<<5)/e,t.height=hE/e;var n=t.getContext("2d");return n.fillStyle=n.strokeStyle="red",n.textAlign="center",{context:n,ratio:e}}(Hu()),f=function(t){var e=[],n=-1;for(;++n<t;)e[n]=0;return e}((u[0]>>5)*u[1]),d=null,p=c.length,g=-1,m=[],v=c.map(function(u){return{text:t(u),font:e(u),style:r(u),weight:i(u),rotate:o(u),size:~~n(u),padding:a(u),xoff:0,yoff:0,x1:0,y1:0,x0:0,y0:0,hasText:!1,sprite:null,datum:u}}).sort(function(t,e){return e.size-t.size});++g<p;){var y=v[g];y.x=u[0]*(l()+.5)>>1,y.y=u[1]*(l()+.5)>>1,pE(s,y,v,g),y.hasText&&h(f,y,d)&&(m.push(y),d?mE(d,y):d=[{x:y.x+y.x0,y:y.y+y.y0},{x:y.x+y.x1,y:y.y+y.y1}],y.x-=u[0]>>1,y.y-=u[1]>>1)}return m},f.words=function(t){return arguments.length?(c=t,f):c},f.size=function(t){return arguments.length?(u=[+t[0],+t[1]],f):u},f.font=function(t){return arguments.length?(e=yE(t),f):e},f.fontStyle=function(t){return arguments.length?(r=yE(t),f):r},f.fontWeight=function(t){return arguments.length?(i=yE(t),f):i},f.rotate=function(t){return arguments.length?(o=yE(t),f):o},f.text=function(e){return arguments.length?(t=yE(e),f):t},f.spiral=function(t){return arguments.length?(s=bE[t]||t,f):s},f.fontSize=function(t){return arguments.length?(n=yE(t),f):n},f.padding=function(t){return arguments.length?(a=yE(t),f):a},f.random=function(t){return arguments.length?(l=t,f):l},f};function pE(t,e,n,r){if(!e.sprite){var i=t.context,o=t.ratio;i.clearRect(0,0,(fE<<5)/o,hE/o);var a,u,s,c,l,f=0,h=0,d=0,p=n.length;for(--r;++r<p;){if(e=n[r],i.save(),i.font=e.style+" "+e.weight+" "+~~((e.size+1)/o)+"px "+e.font,a=i.measureText(e.text+"m").width*o,s=e.size<<1,e.rotate){var g=Math.sin(e.rotate*lE),m=Math.cos(e.rotate*lE),v=a*m,y=a*g,b=s*m,x=s*g;a=Math.max(Math.abs(v+x),Math.abs(v-x))+31>>5<<5,s=~~Math.max(Math.abs(y+b),Math.abs(y-b))}else a=a+31>>5<<5;if(s>d&&(d=s),f+a>=fE<<5&&(f=0,h+=d,d=0),h+s>=hE)break;i.translate((f+(a>>1))/o,(h+(s>>1))/o),e.rotate&&i.rotate(e.rotate*lE),i.fillText(e.text,0,0),e.padding&&(i.lineWidth=2*e.padding,i.strokeText(e.text,0,0)),i.restore(),e.width=a,e.height=s,e.xoff=f,e.yoff=h,e.x1=a>>1,e.y1=s>>1,e.x0=-e.x1,e.y0=-e.y1,e.hasText=!0,f+=a}for(var _=i.getImageData(0,0,(fE<<5)/o,hE/o).data,w=[];--r>=0;)if((e=n[r]).hasText){for(u=(a=e.width)>>5,s=e.y1-e.y0,c=0;c<s*u;c++)w[c]=0;if(null==(f=e.xoff))return;h=e.yoff;var O=0,k=-1;for(l=0;l<s;l++){for(c=0;c<a;c++){var A=u*l+(c>>5),E=_[(h+l)*(fE<<5)+(f+c)<<2]?1<<31-c%32:0;w[A]|=E,O|=E}O?k=l:(e.y0++,s--,l--,h++)}e.y1=e.y0+k,e.sprite=w.slice(0,(e.y1-e.y0)*u)}}}function gE(t,e,n){n>>=5;for(var r,i=t.sprite,o=t.width>>5,a=t.x-(o<<4),u=127&a,s=32-u,c=t.y1-t.y0,l=(t.y+t.y0)*n+(a>>5),f=0;f<c;f++){r=0;for(var h=0;h<=o;h++)if((r<<s|(h<o?(r=i[f*o+h])>>>u:0))&e[l+h])return!0;l+=n}return!1}function mE(t,e){var n=t[0],r=t[1];e.x+e.x0<n.x&&(n.x=e.x+e.x0),e.y+e.y0<n.y&&(n.y=e.y+e.y0),e.x+e.x1>r.x&&(r.x=e.x+e.x1),e.y+e.y1>r.y&&(r.y=e.y+e.y1)}function vE(t){var e=t[0]/t[1];return function(t){return[e*(t*=.1)*Math.cos(t),t*Math.sin(t)]}}function yE(t){return"function"==typeof t?t:function(){return t}}var bE={archimedean:vE,rectangular:function(t){var e=4*t[0]/t[1],n=0,r=0;return function(t){var i=t<0?-1:1;switch(Math.sqrt(1+4*i*t)-i&3){case 0:n+=e;break;case 1:r+=4;break;case 2:n-=e;break;default:r-=4}return[n,r]}}},xE=["x","y","font","fontSize","fontStyle","fontWeight","angle"],_E=["text","font","rotate","fontSize","fontStyle","fontWeight"];function wE(t){Oi.call(this,dE(),t)}function OE(t){return new Uint32Array(t)}function kE(t,e,n){var r=(e<257?function(t){return new Uint8Array(t)}:e<65537?function(t){return new Uint16Array(t)}:OE)(t);return n&&r.set(n),r}wE.Definition={type:"Wordcloud",metadata:{modifies:!0},params:[{name:"size",type:"number",array:!0,length:2},{name:"font",type:"string",expr:!0,default:"sans-serif"},{name:"fontStyle",type:"string",expr:!0,default:"normal"},{name:"fontWeight",type:"string",expr:!0,default:"normal"},{name:"fontSize",type:"number",expr:!0,default:14},{name:"fontSizeRange",type:"number",array:"nullable",default:[10,50]},{name:"rotate",type:"number",expr:!0,default:0},{name:"text",type:"field"},{name:"spiral",type:"string",values:["archimedean","rectangular"]},{name:"padding",type:"number",expr:!0},{name:"as",type:"string",array:!0,length:7,default:xE}]},Object(Mt.x)(wE,Oi).transform=function(t,e){!t.size||t.size[0]&&t.size[1]||Object(Mt.n)("Wordcloud size dimensions must be non-zero.");var n=t.modified();if(n||e.changed(e.ADD_REM)||_E.some(function(n){var r=t[n];return Object(Mt.C)(r)&&e.modified(r.fields)})){var r,i=e.materialize(e.SOURCE).source,o=this.value,a=t.as||xE,u=t.fontSize||14;if(Object(Mt.C)(u)?r=t.fontSizeRange:u=Object(Mt.l)(u),r){var s=u,c=Xm("sqrt")().domain(function(t,e){for(var n,r=1/0,i=-1/0,o=0,a=e.length;o<a;++o)(n=t(e[o]))<r&&(r=n),n>i&&(i=n);return[r,i]}(s,i)).range(r);u=function(t){return c(s(t))}}i.forEach(function(t){t[a[0]]=NaN,t[a[1]]=NaN,t[a[3]]=0});for(var l,f,h=o.words(i).text(t.text).size(t.size||[500,500]).padding(t.padding||1).spiral(t.spiral||"archimedean").rotate(t.rotate||0).font(t.font||"sans-serif").fontStyle(t.fontStyle||"normal").fontWeight(t.fontWeight||"normal").fontSize(u).random(Bi).layout(),d=o.size(),p=d[0]>>1,g=d[1]>>1,m=0,v=h.length;m<v;++m)(f=(l=h[m]).datum)[a[0]]=l.x+p,f[a[1]]=l.y+g,f[a[2]]=l.font,f[a[3]]=l.size,f[a[4]]=l.style,f[a[5]]=l.weight,f[a[6]]=l.rotate;return e.reflow(n).modifies(a)}};var AE=function(t,e,n){var r=1<<e;return{one:r,zero:~r,range:n.slice(),bisect:t.bisect,index:t.index,size:t.size,onAdd:function(t,e){var n,i=this.bisect(this.range,t.value),o=t.index,a=i[0],u=i[1],s=o.length;for(n=0;n<a;++n)e[o[n]]|=r;for(n=u;n<s;++n)e[o[n]]|=r;return this}}};function EE(){var t=OE(0),e=[],n=0;return{insert:function(r,i,o){if(!i.length)return[];var a,u,s,c=n,l=i.length,f=Array(l),h=OE(l);for(s=0;s<l;++s)f[s]=r(i[s]),h[s]=s;if(f=function(t,e){return t.sort.call(e,function(e,n){var r=t[e],i=t[n];return r<i?-1:r>i?1:0}),so(t,e)}(f,h),c)a=e,u=t,e=Array(c+l),t=OE(c+l),function(t,e,n,r,i,o,a,u,s){var c,l=0,f=0;for(c=0;l<r&&f<a;++c)e[l]<i[f]?(u[c]=e[l],s[c]=n[l++]):(u[c]=i[f],s[c]=o[f++]+t);for(;l<r;++l,++c)u[c]=e[l],s[c]=n[l];for(;f<a;++f,++c)u[c]=i[f],s[c]=o[f]+t}(o,a,u,c,f,h,l,e,t);else{if(o>0)for(s=0;s<l;++s)h[s]+=o;e=f,t=h}return n=c+l,{index:h,value:f}},remove:function(r,i){var o,a,u,s=n;for(a=0;!i[t[a]]&&a<s;++a);for(u=a;a<s;++a)i[o=t[a]]||(t[u]=o,e[u]=e[a],++u);n=s-r},bisect:function(t,r){var i;return r?i=r.length:(r=e,i=n),[Wi(r,t[0],0,i),Ii(r,t[1],0,i)]},reindex:function(e){for(var r=0,i=n;r<i;++r)t[r]=e[t[r]]},index:function(){return t},size:function(){return n}}}function jE(t){var e,n,r,i,o;Oi.call(this,(e=8,n=[],r=OE(0),i=kE(0,e),o=kE(0,e),{data:function(){return n},seen:function(){return t=r,e=n.length,r=t.length>=e?t:((i=i||new t.constructor(e)).set(t),i);var t,e,i},add:function(t){for(var e,r=0,i=n.length,o=t.length;r<o;++r)(e=t[r])._index=i++,n.push(e)},remove:function(t,e){var r,a,u,s=n.length,c=Array(s-t),l=n;for(a=0;!e[a]&&a<s;++a)c[a]=n[a],l[a]=a;for(u=a;a<s;++a)r=n[a],e[a]?l[a]=-1:(l[a]=u,i[u]=i[a],o[u]=o[a],c[u]=r,r._index=u++),i[a]=0;return n=c,l},size:function(){return n.length},curr:function(){return i},prev:function(){return o},reset:function(t){o[t]=i[t]},all:function(){return e<257?255:e<65537?65535:4294967295},set:function(t,e){i[t]|=e},clear:function(t,e){i[t]&=~e},resize:function(t,n){(t>i.length||n>e)&&(e=Math.max(n,e),i=kE(t,e,i),o=kE(t,e))}}),t),this._indices=null,this._dims=null}jE.Definition={type:"CrossFilter",metadata:{},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"query",type:"array",array:!0,required:!0,content:{type:"number",array:!0,length:2}}]};var SE=Object(Mt.x)(jE,Oi);function CE(t){Oi.call(this,null,t)}SE.transform=function(t,e){return this._dims?t.modified("fields")||t.fields.some(function(t){return e.modified(t.fields)})?this.reinit(t,e):this.eval(t,e):this.init(t,e)},SE.init=function(t,e){for(var n,r,i=t.fields,o=t.query,a=this._indices={},u=this._dims=[],s=o.length,c=0;c<s;++c)r=a[n=i[c].fname]||(a[n]=EE()),u.push(AE(r,c,o[c]));return this.eval(t,e)},SE.reinit=function(t,e){var n,r,i,o,a,u,s,c,l,f=e.materialize().fork(),h=t.fields,d=t.query,p=this._indices,g=this._dims,m=this.value,v=m.curr(),y=m.prev(),b=m.all(),x=f.rem=f.add,_=f.mod,w=d.length,O={};if(y.set(v),e.rem.length&&(a=this.remove(t,e,f)),e.add.length&&m.add(e.add),e.mod.length)for(u={},s=0,c=(o=e.mod).length;s<c;++s)u[o[s]._index]=1;for(s=0;s<w;++s)l=h[s],(!g[s]||t.modified("fields",s)||e.modified(l.fields))&&((n=O[i=l.fname])||(p[i]=r=EE(),O[i]=n=r.insert(l,e.source,0)),g[s]=AE(r,s,d[s]).onAdd(n,v));for(s=0,c=m.data().length;s<c;++s)a[s]||(y[s]!==v[s]?x.push(s):u[s]&&v[s]!==b&&_.push(s));return m.mask=(1<<w)-1,f},SE.eval=function(t,e){var n=e.materialize().fork(),r=this._dims.length,i=0;return e.rem.length&&(this.remove(t,e,n),i|=(1<<r)-1),t.modified("query")&&!t.modified("fields")&&(i|=this.update(t,e,n)),e.add.length&&(this.insert(t,e,n),i|=(1<<r)-1),e.mod.length&&(this.modify(e,n),i|=(1<<r)-1),this.value.mask=i,n},SE.insert=function(t,e,n){var r,i,o,a=e.add,u=this.value,s=this._dims,c=this._indices,l=t.fields,f={},h=n.add,d=u.size(),p=d+a.length,g=s.length;u.resize(p,g),u.add(a);var m=u.curr(),v=u.prev(),y=u.all();for(r=0;r<g;++r)o=f[i=l[r].fname]||(f[i]=c[i].insert(l[r],a,d)),s[r].onAdd(o,m);for(;d<p;++d)v[d]=y,m[d]!==y&&h.push(d)},SE.modify=function(t,e){var n,r,i,o=e.mod,a=this.value,u=a.curr(),s=a.all(),c=t.mod;for(n=0,r=c.length;n<r;++n)u[i=c[n]._index]!==s&&o.push(i)},SE.remove=function(t,e,n){var r,i,o,a,u=this._indices,s=this.value,c=s.curr(),l=s.prev(),f=s.all(),h={},d=n.rem,p=e.rem;for(r=0,i=p.length;r<i;++r)h[o=p[r]._index]=1,l[o]=a=c[o],c[o]=f,a!==f&&d.push(o);for(o in u)u[o].remove(i,h);return this.reindex(e,i,h),h},SE.reindex=function(t,e,n){var r=this._indices,i=this.value;t.runAfter(function(){var t=i.remove(e,n);for(var o in r)r[o].reindex(t)})},SE.update=function(t,e,n){var r,i,o=this._dims,a=t.query,u=e.stamp,s=o.length,c=0;for(n.filters=0,i=0;i<s;++i)t.modified("query",i)&&(r=i,++c);if(1===c)c=o[r].one,this.incrementOne(o[r],a[r],n.add,n.rem);else for(i=0,c=0;i<s;++i)t.modified("query",i)&&(c|=o[i].one,this.incrementAll(o[i],a[i],u,n.add),n.rem=n.add);return c},SE.incrementAll=function(t,e,n,r){var i,o,a,u=this.value,s=u.seen(),c=u.curr(),l=u.prev(),f=t.index(),h=t.bisect(t.range),d=t.bisect(e),p=d[0],g=d[1],m=h[0],v=h[1],y=t.one;if(p<m)for(i=p,o=Math.min(m,g);i<o;++i)s[a=f[i]]!==n&&(l[a]=c[a],s[a]=n,r.push(a)),c[a]^=y;else if(p>m)for(i=m,o=Math.min(p,v);i<o;++i)s[a=f[i]]!==n&&(l[a]=c[a],s[a]=n,r.push(a)),c[a]^=y;if(g>v)for(i=Math.max(p,v),o=g;i<o;++i)s[a=f[i]]!==n&&(l[a]=c[a],s[a]=n,r.push(a)),c[a]^=y;else if(g<v)for(i=Math.max(m,g),o=v;i<o;++i)s[a=f[i]]!==n&&(l[a]=c[a],s[a]=n,r.push(a)),c[a]^=y;t.range=e.slice()},SE.incrementOne=function(t,e,n,r){var i,o,a,u=this.value.curr(),s=t.index(),c=t.bisect(t.range),l=t.bisect(e),f=l[0],h=l[1],d=c[0],p=c[1],g=t.one;if(f<d)for(i=f,o=Math.min(d,h);i<o;++i)u[a=s[i]]^=g,n.push(a);else if(f>d)for(i=d,o=Math.min(f,p);i<o;++i)u[a=s[i]]^=g,r.push(a);if(h>p)for(i=Math.max(f,p),o=h;i<o;++i)u[a=s[i]]^=g,n.push(a);else if(h<p)for(i=Math.max(d,h),o=p;i<o;++i)u[a=s[i]]^=g,r.push(a);t.range=e.slice()},CE.Definition={type:"ResolveFilter",metadata:{},params:[{name:"ignore",type:"number",required:!0,description:"A bit mask indicating which filters to ignore."},{name:"filter",type:"object",required:!0,description:"Per-tuple filter bitmaps from a CrossFilter transform."}]},Object(Mt.x)(CE,Oi).transform=function(t,e){var n=~(t.ignore||0),r=t.filter,i=r.mask;if(0==(i&n))return e.StopPropagation;var o=e.fork(e.ALL),a=r.data(),u=r.curr(),s=r.prev(),c=function(t){return u[t]&n?null:a[t]};return o.filter(o.MOD,c),i&i-1?(o.filter(o.ADD,function(t){var e=u[t]&n;return!e&&e^s[t]&n?a[t]:null}),o.filter(o.REM,function(t){var e=u[t]&n;return e&&!(e^e^s[t]&n)?a[t]:null})):(o.filter(o.ADD,c),o.filter(o.REM,function(t){return(u[t]&n)===i?a[t]:null})),o.filter(o.SOURCE,function(t){return c(t._index)})};var ME=n(7),DE=function(t){var e=t._signals.cursor;e||(t._signals.cursor=e=t.add({user:"default",item:null})),t.on(t.events("view","mousemove"),e,function(t,n){var r=e.value,i=r?Object(Mt.G)(r)?r:r.user:"default",o=n.item&&n.item.cursor||null;return r&&i===r.user&&o==r.item?r:{user:i,item:o}}),t.add(null,function(t){var e=t.cursor,n=this.value;return Object(Mt.G)(e)||(n=e.item,e=e.user),function(t){"undefined"!=typeof document&&document.body&&(document.body.style.cursor=t)}(e&&"default"!==e?e:n||e),n},{cursor:e})};function FE(t,e){var n=t._runtime.data;return n.hasOwnProperty(e)||Object(Mt.n)("Unrecognized data set: "+e),n[e]}function NE(t,e){qt(e)||Object(Mt.n)("Second argument to changes must be a changeset.");var n=FE(this,t);return n.modified=!0,this.pulse(n.input,e)}function zE(t){var e=t.padding();return Math.max(0,t._viewWidth+e.left+e.right)}function TE(t){var e=t.padding();return Math.max(0,t._viewHeight+e.top+e.bottom)}function $E(t){var e=t.padding(),n=t._origin;return[e.left+n[0],e.top+n[1]]}var RE=function(t,e,n){var r,i,o,a=t._renderer,u=a&&a.canvas();return u&&(o=$E(t),i=e.changedTouches?e.changedTouches[0]:e,(r=Ef(i,u))[0]-=o[0],r[1]-=o[1]),e.dataflow=t,e.item=n,e.vega=function(t,e,n){var r=e?"group"===e.mark.marktype?e:e.mark.group:null;function i(t){var n,i=r;if(t)for(n=e;n;n=n.mark.group)if(n.mark.name===t){i=n;break}return i&&i.mark&&i.mark.interactive?i:{}}function o(t){if(!t)return n;Object(Mt.G)(t)&&(t=i(t));for(var e=n.slice();t;)e[0]-=t.x||0,e[1]-=t.y||0,t=t.mark&&t.mark.group;return e}return{view:Object(Mt.l)(t),item:Object(Mt.l)(e||{}),group:i,xy:o,x:function(t){return o(t)[0]},y:function(t){return o(t)[1]}}}(t,n,r),e};var BE="view",PE="timer",LE="window",UE={trap:!1};function qE(t){return t.item}function IE(t){var e=t.item.mark.source;return e.source||e}function WE(t){return function(e,n){return n.vega.view().changeset().encode(n.item,t)}}var HE=function(t,e,n){var r=document.createElement(t);for(var i in e)r.setAttribute(i,e[i]);return null!=n&&(r.textContent=n),r},GE="vega-bind",YE="vega-bind-name",VE="vega-bind-radio",XE="vega-option-",JE=function(t,e,n){if(e){var r=n.param,i=n.state;return i||(i=n.state={elements:null,active:!1,set:null,update:function(e){e!==t.signal(r.signal)&&t.runAsync(null,function(){i.source=!0,t.signal(r.signal,e)})}},r.debounce&&(i.update=Object(Mt.m)(r.debounce,i.update))),function(t,e,n,r){var i=HE("div",{class:GE});i.appendChild(HE("span",{class:YE},n.name||n.signal)),e.appendChild(i);var o=ZE;switch(n.input){case"checkbox":o=QE;break;case"select":o=KE;break;case"radio":o=tj;break;case"range":o=ej}o(t,i,n,r)}(i,e,r,t.signal(r.signal)),i.active||(t.on(t._signals[r.signal],null,function(){i.source?i.source=!1:i.set(t.signal(r.signal))}),i.active=!0),i}};function ZE(t,e,n,r){var i=HE("input");for(var o in n)"signal"!==o&&"element"!==o&&i.setAttribute("input"===o?"type":o,n[o]);i.setAttribute("name",n.signal),i.value=r,e.appendChild(i),i.addEventListener("input",function(){t.update(i.value)}),t.elements=[i],t.set=function(t){i.value=t}}function QE(t,e,n,r){var i={type:"checkbox",name:n.signal};r&&(i.checked=!0);var o=HE("input",i);e.appendChild(o),o.addEventListener("change",function(){t.update(o.checked)}),t.elements=[o],t.set=function(t){o.checked=!!t||null}}function KE(t,e,n,r){var i=HE("select",{name:n.signal});n.options.forEach(function(t){var e={value:t};nj(t,r)&&(e.selected=!0),i.appendChild(HE("option",e,t+""))}),e.appendChild(i),i.addEventListener("change",function(){t.update(n.options[i.selectedIndex])}),t.elements=[i],t.set=function(t){for(var e=0,r=n.options.length;e<r;++e)if(nj(n.options[e],t))return void(i.selectedIndex=e)}}function tj(t,e,n,r){var i=HE("span",{class:VE});e.appendChild(i),t.elements=n.options.map(function(e){var o=XE+n.signal+"-"+e,a={id:o,type:"radio",name:n.signal,value:e};nj(e,r)&&(a.checked=!0);var u=HE("input",a);return u.addEventListener("change",function(){t.update(e)}),i.appendChild(u),i.appendChild(HE("label",{for:o},e+"")),u}),t.set=function(e){for(var n=t.elements,r=0,i=n.length;r<i;++r)nj(n[r].value,e)&&(n[r].checked=!0)}}function ej(t,e,n,r){r=void 0!==r?r:(+n.max+ +n.min)/2;var i=n.min||Math.min(0,+r)||0,o=n.max||Math.max(100,+r)||100,a=n.step||eo(i,o,100),u=HE("input",{type:"range",name:n.signal,min:i,max:o,step:a});u.value=r;var s=HE("label",{},+r);function c(){s.textContent=u.value,t.update(+u.value)}e.appendChild(u),e.appendChild(s),u.addEventListener("input",c),u.addEventListener("change",c),t.elements=[u],t.set=function(t){u.value=t,s.textContent=t}}function nj(t,e){return t===e||t+""==e+""}var rj=function(t,e,n,r,i,o){return(e=e||new r(t.loader())).initialize(n,zE(t),TE(t),$E(t),i,o).background(t._background)},ij=function(t,e){return e?function(){try{e.apply(this,arguments)}catch(e){t.error(e)}}:null};function oj(t,e){if("string"==typeof e){if("undefined"==typeof document)return t.error("DOM document instance not found."),null;if(!(e=document.querySelector(e)))return t.error("Signal bind element not found: "+e),null}if(e)try{e.innerHTML=""}catch(n){e=null,t.error(n)}return e}var aj=async function(t,e,n,r){const i=yh(e),o=i&&i.headless;return o||Object(Mt.n)("Unrecognized renderer type: "+e),await t.runAsync(),rj(t,null,null,o,n,r).renderAsync(t._scenegraph.root)};var uj,sj,cj,lj,fj,hj="RawCode",dj="Literal",pj="Property",gj="Identifier",mj="ArrayExpression",vj="BinaryExpression",yj="CallExpression",bj="ConditionalExpression",xj="LogicalExpression",_j="MemberExpression",wj="ObjectExpression",Oj="UnaryExpression";function kj(t){this.type=t}kj.prototype.visit=function(t){var e,n,r;if(t(this))return 1;for(n=0,r=(e=function(t){switch(t.type){case mj:return t.elements;case vj:case xj:return[t.left,t.right];case yj:var e=t.arguments.slice();return e.unshift(t.callee),e;case bj:return[t.test,t.consequent,t.alternate];case _j:return[t.object,t.property];case wj:return t.properties;case pj:return[t.key,t.value];case Oj:return[t.argument];case gj:case dj:case hj:default:return[]}}(this)).length;n<r;++n)if(e[n].visit(t))return 1};var Aj=1,Ej=2,jj=3,Sj=4,Cj=5,Mj=6,Dj=7,Fj=8;(uj={})[Aj]="Boolean",uj[Ej]="<end>",uj[jj]="Identifier",uj[Sj]="Keyword",uj[Cj]="Null",uj[Mj]="Numeric",uj[Dj]="Punctuator",uj[Fj]="String",uj[9]="RegularExpression";var Nj="ArrayExpression",zj="BinaryExpression",Tj="CallExpression",$j="ConditionalExpression",Rj="Identifier",Bj="Literal",Pj="LogicalExpression",Lj="MemberExpression",Uj="ObjectExpression",qj="Property",Ij="UnaryExpression",Wj="Unexpected token %0",Hj="Unexpected number",Gj="Unexpected string",Yj="Unexpected identifier",Vj="Unexpected reserved word",Xj="Unexpected end of input",Jj="Invalid regular expression",Zj="Invalid regular expression: missing /",Qj="Octal literals are not allowed in strict mode.",Kj="Duplicate data property in object literal not allowed in strict mode",tS="ILLEGAL",eS="Disabled.",nS=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),rS=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function iS(t,e){if(!t)throw new Error("ASSERT: "+e)}function oS(t){return t>=48&&t<=57}function aS(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function uS(t){return"01234567".indexOf(t)>=0}function sS(t){return 32===t||9===t||11===t||12===t||160===t||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function cS(t){return 10===t||13===t||8232===t||8233===t}function lS(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||92===t||t>=128&&nS.test(String.fromCharCode(t))}function fS(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||92===t||t>=128&&rS.test(String.fromCharCode(t))}var hS={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function dS(){for(var t;cj<lj&&(sS(t=sj.charCodeAt(cj))||cS(t));)++cj}function pS(t){var e,n,r,i=0;for(n="u"===t?4:2,e=0;e<n;++e)cj<lj&&aS(sj[cj])?(r=sj[cj++],i=16*i+"0123456789abcdef".indexOf(r.toLowerCase())):MS({},Wj,tS);return String.fromCharCode(i)}function gS(){var t,e,n,r;for(e=0,"}"===(t=sj[cj])&&MS({},Wj,tS);cj<lj&&aS(t=sj[cj++]);)e=16*e+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||"}"!==t)&&MS({},Wj,tS),e<=65535?String.fromCharCode(e):(n=55296+(e-65536>>10),r=56320+(e-65536&1023),String.fromCharCode(n,r))}function mS(){var t,e;for(t=sj.charCodeAt(cj++),e=String.fromCharCode(t),92===t&&(117!==sj.charCodeAt(cj)&&MS({},Wj,tS),++cj,(t=pS("u"))&&"\\"!==t&&lS(t.charCodeAt(0))||MS({},Wj,tS),e=t);cj<lj&&fS(t=sj.charCodeAt(cj));)++cj,e+=String.fromCharCode(t),92===t&&(e=e.substr(0,e.length-1),117!==sj.charCodeAt(cj)&&MS({},Wj,tS),++cj,(t=pS("u"))&&"\\"!==t&&fS(t.charCodeAt(0))||MS({},Wj,tS),e+=t);return e}function vS(){var t,e;return t=cj,{type:1===(e=92===sj.charCodeAt(cj)?mS():function(){var t,e;for(t=cj++;cj<lj;){if(92===(e=sj.charCodeAt(cj)))return cj=t,mS();if(!fS(e))break;++cj}return sj.slice(t,cj)}()).length?jj:hS.hasOwnProperty(e)?Sj:"null"===e?Cj:"true"===e||"false"===e?Aj:jj,value:e,start:t,end:cj}}function yS(){var t,e,n,r,i=cj,o=sj.charCodeAt(cj),a=sj[cj];switch(o){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++cj,{type:Dj,value:String.fromCharCode(o),start:i,end:cj};default:if(61===(t=sj.charCodeAt(cj+1)))switch(o){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return cj+=2,{type:Dj,value:String.fromCharCode(o)+String.fromCharCode(t),start:i,end:cj};case 33:case 61:return cj+=2,61===sj.charCodeAt(cj)&&++cj,{type:Dj,value:sj.slice(i,cj),start:i,end:cj}}}return">>>="===(r=sj.substr(cj,4))?{type:Dj,value:r,start:i,end:cj+=4}:">>>"===(n=r.substr(0,3))||"<<="===n||">>="===n?{type:Dj,value:n,start:i,end:cj+=3}:a===(e=n.substr(0,2))[1]&&"+-<>&|".indexOf(a)>=0||"=>"===e?{type:Dj,value:e,start:i,end:cj+=2}:"<>=!+-*%&|^/".indexOf(a)>=0?{type:Dj,value:a,start:i,end:++cj}:void MS({},Wj,tS)}function bS(){var t,e,n;if(iS(oS((n=sj[cj]).charCodeAt(0))||"."===n,"Numeric literal must start with a decimal digit or a decimal point"),e=cj,t="","."!==n){if(t=sj[cj++],n=sj[cj],"0"===t){if("x"===n||"X"===n)return++cj,function(t){for(var e="";cj<lj&&aS(sj[cj]);)e+=sj[cj++];return 0===e.length&&MS({},Wj,tS),lS(sj.charCodeAt(cj))&&MS({},Wj,tS),{type:Mj,value:parseInt("0x"+e,16),start:t,end:cj}}(e);if(uS(n))return function(t){for(var e="0"+sj[cj++];cj<lj&&uS(sj[cj]);)e+=sj[cj++];return(lS(sj.charCodeAt(cj))||oS(sj.charCodeAt(cj)))&&MS({},Wj,tS),{type:Mj,value:parseInt(e,8),octal:!0,start:t,end:cj}}(e);n&&oS(n.charCodeAt(0))&&MS({},Wj,tS)}for(;oS(sj.charCodeAt(cj));)t+=sj[cj++];n=sj[cj]}if("."===n){for(t+=sj[cj++];oS(sj.charCodeAt(cj));)t+=sj[cj++];n=sj[cj]}if("e"===n||"E"===n)if(t+=sj[cj++],"+"!==(n=sj[cj])&&"-"!==n||(t+=sj[cj++]),oS(sj.charCodeAt(cj)))for(;oS(sj.charCodeAt(cj));)t+=sj[cj++];else MS({},Wj,tS);return lS(sj.charCodeAt(cj))&&MS({},Wj,tS),{type:Mj,value:parseFloat(t),start:e,end:cj}}function xS(){var t,e,n,r;return fj=null,dS(),t=cj,e=function(){var t,e,n,r;for(iS("/"===(t=sj[cj]),"Regular expression literal must start with a slash"),e=sj[cj++],n=!1,r=!1;cj<lj;)if(e+=t=sj[cj++],"\\"===t)cS((t=sj[cj++]).charCodeAt(0))&&MS({},Zj),e+=t;else if(cS(t.charCodeAt(0)))MS({},Zj);else if(n)"]"===t&&(n=!1);else{if("/"===t){r=!0;break}"["===t&&(n=!0)}return r||MS({},Zj),{value:e.substr(1,e.length-2),literal:e}}(),n=function(){var t,e,n;for(e="",n="";cj<lj&&fS((t=sj[cj]).charCodeAt(0));)++cj,"\\"===t&&cj<lj?MS({},Wj,tS):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&MS({},Jj,n),{value:n,literal:e}}(),r=function(t,e){var n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,function(t,e){if(parseInt(e,16)<=1114111)return"x";MS({},Jj)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch(t){MS({},Jj)}try{return new RegExp(t,e)}catch(t){return null}}(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:cj}}function _S(){var t;return dS(),cj>=lj?{type:Ej,start:cj,end:cj}:lS(t=sj.charCodeAt(cj))?vS():40===t||41===t||59===t?yS():39===t||34===t?function(){var t,e,n,r,i="",o=!1;for(iS("'"===(t=sj[cj])||'"'===t,"String literal must starts with a quote"),e=cj,++cj;cj<lj;){if((n=sj[cj++])===t){t="";break}if("\\"===n)if((n=sj[cj++])&&cS(n.charCodeAt(0)))"\r"===n&&"\n"===sj[cj]&&++cj;else switch(n){case"u":case"x":"{"===sj[cj]?(++cj,i+=gS()):i+=pS(n);break;case"n":i+="\n";break;case"r":i+="\r";break;case"t":i+="\t";break;case"b":i+="\b";break;case"f":i+="\f";break;case"v":i+="\v";break;default:uS(n)?(0!==(r="01234567".indexOf(n))&&(o=!0),cj<lj&&uS(sj[cj])&&(o=!0,r=8*r+"01234567".indexOf(sj[cj++]),"0123".indexOf(n)>=0&&cj<lj&&uS(sj[cj])&&(r=8*r+"01234567".indexOf(sj[cj++]))),i+=String.fromCharCode(r)):i+=n}else{if(cS(n.charCodeAt(0)))break;i+=n}}return""!==t&&MS({},Wj,tS),{type:Fj,value:i,octal:o,start:e,end:cj}}():46===t?oS(sj.charCodeAt(cj+1))?bS():yS():oS(t)?bS():yS()}function wS(){var t;return cj=(t=fj).end,fj=_S(),cj=t.end,t}function OS(){var t;t=cj,fj=_S(),cj=t}function kS(t,e,n){var r=new kj("||"===t||"&&"===t?Pj:zj);return r.operator=t,r.left=e,r.right=n,r}function AS(t,e){var n=new kj(Tj);return n.callee=t,n.arguments=e,n}function ES(t){var e=new kj(Rj);return e.name=t,e}function jS(t){var e=new kj(Bj);return e.value=t.value,e.raw=sj.slice(t.start,t.end),t.regex&&("//"===e.raw&&(e.raw="/(?:)/"),e.regex=t.regex),e}function SS(t,e,n){var r=new kj(Lj);return r.computed="["===t,r.object=e,r.property=n,r.computed||(n.member=!0),r}function CS(t,e,n){var r=new kj(qj);return r.key=e,r.value=n,r.kind=t,r}function MS(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,function(t,e){return iS(e<r.length,"Message reference must be in range"),r[e]});throw(n=new Error(i)).index=cj,n.description=i,n}function DS(t){t.type===Ej&&MS(t,Xj),t.type===Mj&&MS(t,Hj),t.type===Fj&&MS(t,Gj),t.type===jj&&MS(t,Yj),t.type===Sj&&MS(t,Vj),MS(t,Wj,t.value)}function FS(t){var e=wS();e.type===Dj&&e.value===t||DS(e)}function NS(t){return fj.type===Dj&&fj.value===t}function zS(t){return fj.type===Sj&&fj.value===t}function TS(){var t=[];for(cj=fj.start,FS("[");!NS("]");)NS(",")?(wS(),t.push(null)):(t.push(YS()),NS("]")||FS(","));return wS(),function(t){var e=new kj(Nj);return e.elements=t,e}(t)}function $S(){var t;return cj=fj.start,(t=wS()).type===Fj||t.type===Mj?(t.octal&&MS(t,Qj),jS(t)):ES(t.value)}function RS(){var t,e,n;return cj=fj.start,(t=fj).type===jj?(n=$S(),FS(":"),CS("init",n,YS())):t.type!==Ej&&t.type!==Dj?(e=$S(),FS(":"),CS("init",e,YS())):void DS(t)}function BS(){var t,e,n=[],r={},i=String;for(cj=fj.start,FS("{");!NS("}");)e="$"+((t=RS()).key.type===Rj?t.key.name:i(t.key.value)),Object.prototype.hasOwnProperty.call(r,e)?MS({},Kj):r[e]=!0,n.push(t),NS("}")||FS(",");return FS("}"),function(t){var e=new kj(Uj);return e.properties=t,e}(n)}var PS={if:1,this:1};function LS(){var t,e,n;if(NS("("))return function(){var t;return FS("("),t=VS(),FS(")"),t}();if(NS("["))return TS();if(NS("{"))return BS();if(t=fj.type,cj=fj.start,t===jj||PS[fj.value])n=ES(wS().value);else if(t===Fj||t===Mj)fj.octal&&MS(fj,Qj),n=jS(wS());else{if(t===Sj)throw new Error(eS);t===Aj?((e=wS()).value="true"===e.value,n=jS(e)):t===Cj?((e=wS()).value=null,n=jS(e)):NS("/")||NS("/=")?(n=jS(xS()),OS()):DS(wS())}return n}function US(){var t=[];if(FS("("),!NS(")"))for(;cj<lj&&(t.push(YS()),!NS(")"));)FS(",");return FS(")"),t}function qS(){var t;return cj=fj.start,function(t){return t.type===jj||t.type===Sj||t.type===Aj||t.type===Cj}(t=wS())||DS(t),ES(t.value)}function IS(){var t;return FS("["),t=VS(),FS("]"),t}function WS(){var t=function(){var t;for(t=LS();;)if(NS("."))FS("."),t=SS(".",t,qS());else if(NS("("))t=AS(t,US());else{if(!NS("["))break;t=SS("[",t,IS())}return t}();if(fj.type===Dj&&(NS("++")||NS("--")))throw new Error(eS);return t}function HS(){var t,e,n,r,i;if(fj.type!==Dj&&fj.type!==Sj)e=WS();else{if(NS("++")||NS("--"))throw new Error(eS);if(NS("+")||NS("-")||NS("~")||NS("!"))t=wS(),e=HS(),n=t.value,r=e,(i=new kj(Ij)).operator=n,i.argument=r,i.prefix=!0,e=i;else{if(zS("delete")||zS("void")||zS("typeof"))throw new Error(eS);e=WS()}}return e}function GS(t){var e=0;if(t.type!==Dj&&t.type!==Sj)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11}return e}function YS(){var t,e;return t=function(){var t,e,n,r,i,o,a,u,s,c;if(t=fj,s=HS(),0===(i=GS(r=fj)))return s;for(r.prec=i,wS(),e=[t,fj],o=[s,r,a=HS()];(i=GS(fj))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),u=o.pop().value,s=o.pop(),e.pop(),n=kS(u,s,a),o.push(n);(r=wS()).prec=i,o.push(r),e.push(fj),n=HS(),o.push(n)}for(n=o[c=o.length-1],e.pop();c>1;)e.pop(),n=kS(o[c-1].value,o[c-2],n),c-=2;return n}(),NS("?")&&(wS(),e=YS(),FS(":"),t=function(t,e,n){var r=new kj($j);return r.test=t,r.consequent=e,r.alternate=n,r}(t,e,YS())),t}function VS(){var t=YS();if(NS(","))throw new Error(eS);return t}var XS=function(t){cj=0,lj=(sj=t).length,fj=null,OS();var e=VS();if(fj.type!==Ej)throw new Error("Unexpect token after expression.");return e},JS={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"},ZS=function(t){function e(e,n,r){return function(i){return function(e,n,r,i){var o=t(n[0]);return r&&(o=r+"("+o+")",0===r.lastIndexOf("new ",0)&&(o="("+o+")")),o+"."+e+(i<0?"":0===i?"()":"("+n.slice(1).map(t).join(",")+")")}(e,i,n,r)}}var n="new Date";return{isNaN:"isNaN",isFinite:"isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(e){e.length<3&&Object(Mt.n)("Missing arguments to clamp function."),e.length>3&&Object(Mt.n)("Too many arguments to clamp function.");var n=e.map(t);return"Math.max("+n[1]+", Math.min("+n[2]+","+n[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:n,date:e("getDate",n,0),day:e("getDay",n,0),year:e("getFullYear",n,0),month:e("getMonth",n,0),hours:e("getHours",n,0),minutes:e("getMinutes",n,0),seconds:e("getSeconds",n,0),milliseconds:e("getMilliseconds",n,0),time:e("getTime",n,0),timezoneoffset:e("getTimezoneOffset",n,0),utcdate:e("getUTCDate",n,0),utcday:e("getUTCDay",n,0),utcyear:e("getUTCFullYear",n,0),utcmonth:e("getUTCMonth",n,0),utchours:e("getUTCHours",n,0),utcminutes:e("getUTCMinutes",n,0),utcseconds:e("getUTCSeconds",n,0),utcmilliseconds:e("getUTCMilliseconds",n,0),length:e("length",null,-1),join:e("join",null),indexof:e("indexOf",null),lastindexof:e("lastIndexOf",null),slice:e("slice",null),reverse:function(e){return"("+t(e[0])+").slice().reverse()"},parseFloat:"parseFloat",parseInt:"parseInt",upper:e("toUpperCase","String",0),lower:e("toLowerCase","String",0),substring:e("substring","String"),split:e("split","String"),replace:e("replace","String"),trim:e("trim","String",0),regexp:"RegExp",test:e("test","RegExp"),if:function(e){e.length<3&&Object(Mt.n)("Missing arguments to if function."),e.length>3&&Object(Mt.n)("Too many arguments to if function.");var n=e.map(t);return"("+n[0]+"?"+n[1]+":"+n[2]+")"}}};const QS="intersect",KS="union";var tC="E",eC="R",nC="R-E",rC="R-LE",iC="R-RE",oC="index:unit";function aC(t,e){for(var n,r,i=e.fields,o=e.values,a=i.length,u=0;u<a;++u)if((r=i[u]).getter=Mt.t.getter||Object(Mt.t)(r.field),n=r.getter(t),Object(Mt.B)(n)&&(n=Object(Mt.Z)(n)),Object(Mt.B)(o[u])&&(o[u]=Object(Mt.Z)(o[u])),Object(Mt.B)(o[u][0])&&(o[u]=o[u].map(Mt.Z)),r.type===tC){if(Object(Mt.z)(o[u])?o[u].indexOf(n)<0:n!==o[u])return!1}else if(r.type===eC){if(!Object(Mt.y)(n,o[u]))return!1}else if(r.type===iC){if(!Object(Mt.y)(n,o[u],!0,!1))return!1}else if(r.type===nC){if(!Object(Mt.y)(n,o[u],!1,!1))return!1}else if(r.type===rC&&!Object(Mt.y)(n,o[u],!1,!0))return!1;return!0}var uC={E_union:function(t,e){if(!t.length)return e;for(var n=0,r=e.length;n<r;++n)t.indexOf(e[n])<0&&t.push(e[n]);return t},E_intersect:function(t,e){return t.length?t.filter(function(t){return e.indexOf(t)>=0}):e},R_union:function(t,e){var n=Object(Mt.Z)(e[0]),r=Object(Mt.Z)(e[1]);return n>r&&(n=e[1],r=e[0]),t.length?(t[0]>n&&(t[0]=n),t[1]<r&&(t[1]=r),t):[n,r]},R_intersect:function(t,e){var n=Object(Mt.Z)(e[0]),r=Object(Mt.Z)(e[1]);return n>r&&(n=e[1],r=e[0]),t.length?r<t[0]||t[1]<n?[]:(t[0]<n&&(t[0]=n),t[1]>r&&(t[1]=r),t):[n,r]}};const sC=":",cC="@";function lC(t,e,n,r){e[0].type!==dj&&Object(Mt.n)("First argument to selection functions must be a string literal.");const i=e[0].value,o=e.length>=2&&Object(Mt.R)(e).value,a=cC+"unit",u=sC+i;o!==QS||r.hasOwnProperty(a)||(r[a]=n.getData(i).indataRef(n,"unit")),r.hasOwnProperty(u)||(r[u]=n.getData(i).tuplesRef())}function fC(t){const e=this.context.data[t];return e?e.values.value:[]}const hC={};function dC(t,e,n){let r=t+":"+n,i=hC[r];return i&&i[0]===e||(hC[r]=i=[e,e(n)]),i[1]}function pC(t,e){return dC("timeFormat",Un,e)(t)}var gC=new Date(2e3,0,1);function mC(t,e,n){return gC.setMonth(t),gC.setDate(e),pC(gC,n)}function vC(t,e){let n;return Object(Mt.C)(t)?t:Object(Mt.G)(t)?(n=e.scales[t])&&n.value:void 0}function yC(t,e){return function(n,r,i){if(n){const e=vC(n,(i||this).context);return e&&e.path[t](r)}return e(r)}}const bC=yC("area",function(t){return hb.reset(),lb(t,db),2*hb}),xC=yC("bounds",function(t){var e,n,r,i,o,a,u;if(Sb=jb=-(Ab=Eb=1/0),Nb=[],lb(t,$b),n=Nb.length){for(Nb.sort(Hb),e=1,o=[r=Nb[0]];e<n;++e)Gb(r,(i=Nb[e])[0])||Gb(r,i[1])?(Wb(r[0],i[1])>Wb(r[0],r[1])&&(r[1]=i[1]),Wb(i[0],r[1])>Wb(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,e=0,r=o[n=o.length-1];e<=n;r=i,++e)i=o[e],(u=Wb(r[1],i[0]))>a&&(a=u,Ab=i[0],jb=r[1])}return Nb=zb=null,Ab===1/0||Eb===1/0?[[NaN,NaN],[NaN,NaN]]:[[Ab,Eb],[jb,Sb]]}),_C=yC("centroid",function(t){Yb=Vb=Xb=Jb=Zb=Qb=Kb=tx=ex=nx=rx=0,lb(t,cx);var e=ex,n=nx,r=rx,i=e*e+n*n+r*r;return i<Fy&&(e=Qb,n=Kb,r=tx,Vb<Dy&&(e=Xb,n=Jb,r=Zb),(i=e*e+n*n+r*r)<Fy)?[NaN,NaN]:[Uy(n,e)*Ry,Qy(r/Xy(i))*Ry]});function wC(t,e,n){try{t[e].apply(t,["EXPRESSION"].concat([].slice.call(n)))}catch(e){t.warn(e)}return n[n.length-1]}function OC(t,e){return t===e||t!=t&&e!=e||!(!Object(Mt.z)(t)||!Object(Mt.z)(e)||t.length!==e.length)&&function(t,e){for(let n=0,r=t.length;n<r;++n)if(!OC(t[n],e[n]))return!1;return!0}(t,e)}function kC(t){return function(e){for(let n in t)if(!OC(e[n],t[n]))return!1;return!0}}const AC={};function EC(t){return t.data}function jC(t,e){const n=fC.call(e,t);return n.root&&n.root.lookup||AC}const SC="undefined"!=typeof window&&window||null;const CC=":",MC="@",DC="%";function FC(t,e,n,r){e[0].type!==dj&&Object(Mt.n)("First argument to data functions must be a string literal.");const i=e[0].value,o=CC+i;r.hasOwnProperty(o)||(r[o]=n.getData(i).tuplesRef())}function NC(t,e,n,r){if(e[0].type===dj)zC(n,r,e[0].value);else if(e[0].type===gj)for(t in n.scales)zC(n,r,t)}function zC(t,e,n){const r=DC+n;if(!e.hasOwnProperty(r))try{e[r]=t.scaleRef(n)}catch(t){}}const TC={random:function(){return Bi()},isArray:Mt.z,isBoolean:Mt.A,isDate:Mt.B,isDefined:function(t){return void 0!==t},isNumber:Mt.D,isObject:Mt.E,isRegExp:Mt.F,isString:Mt.G,isTuple:Tt,isValid:function(t){return null!=t&&t==t},toBoolean:Mt.X,toDate:Mt.Y,toNumber:Mt.Z,toString:Mt.bb,flush:Mt.u,lerp:Mt.I,merge:function(){var t=[].slice.call(arguments);return t.unshift({}),Mt.o.apply(null,t)},pad:Mt.M,peek:Mt.R,span:Mt.U,inrange:Mt.y,truncate:Mt.cb,rgb:cp,lab:Ep,hcl:Np,hsl:dp,sequence:Xi,format:function(t,e){return dC("format",nm,e)(t)},utcFormat:function(t,e){return dC("utcFormat",In,e)(t)},utcParse:function(t,e){return dC("utcParse",Wn,e)(t)},timeFormat:pC,timeParse:function(t,e){return dC("timeParse",qn,e)(t)},monthFormat:function(t){return mC(t,1,"%B")},monthAbbrevFormat:function(t){return mC(t,1,"%b")},dayFormat:function(t){return mC(0,2+t,"%A")},dayAbbrevFormat:function(t){return mC(0,2+t,"%a")},quarter:Mt.S,utcquarter:Mt.eb,warn:function(){return wC(this.context.dataflow,"warn",arguments)},info:function(){return wC(this.context.dataflow,"info",arguments)},debug:function(){return wC(this.context.dataflow,"debug",arguments)},extent:Mt.p,inScope:function(t){let e=this.context.group,n=!1;if(e)for(;t;){if(t===e){n=!0;break}t=t.mark.group}return n},intersect:function(t,e,n){if(!t)return[];const[r,i]=t,o=(new Tu).set(r[0],r[1],i[0],i[1]);return bh(n||this.context.dataflow.scenegraph().root,o,function(t){let e=null;if(t){const n=Object(Mt.i)(t.marktype),r=Object(Mt.i)(t.markname);e=t=>(!n.length||n.some(e=>t.marktype===e))&&(!r.length||r.some(e=>t.name===e))}return e}(e))},clampRange:Mt.j,pinchDistance:function(t){const e=t.touches,n=e[0].clientX-e[1].clientX,r=e[0].clientY-e[1].clientY;return Math.sqrt(n*n+r*r)},pinchAngle:function(t){const e=t.touches;return Math.atan2(e[0].clientY-e[1].clientY,e[0].clientX-e[1].clientX)},screen:function(){return SC?SC.screen:{}},containerSize:function(){const t=this.context.dataflow,e=t.container&&t.container();return e?[e.clientWidth,e.clientHeight]:[void 0,void 0]},windowSize:function(){return SC?[SC.innerWidth,SC.innerHeight]:[void 0,void 0]},bandspace:function(t,e,n){return fd(t||0,e||0,n||0)},setdata:function(t,e){const n=this.context.dataflow,r=this.context.data[t].input;return n.pulse(r,n.changeset().remove(Mt.db).insert(e)),1},pathShape:function(t){let e=null;return function(n){return n?Ac(n,e=e||pc(t)):t}},panLinear:Mt.N,panLog:Mt.O,panPow:Mt.P,panSymlog:Mt.Q,zoomLinear:Mt.hb,zoomLog:Mt.ib,zoomPow:Mt.jb,zoomSymlog:Mt.kb,encode:function(t,e,n){if(t){const n=this.context.dataflow,r=t.mark.source;n.pulse(r,n.changeset().encode(t,e))}return void 0!==n?n:t},modify:function(t,e,n,r,i,o){let a,u,s=this.context.dataflow,c=this.context.data[t],l=c.input,f=c.changes,h=s.stamp();if(!1===s._trigger||!(l.value.length||e||r))return 0;if((!f||f.stamp<h)&&(c.changes=f=s.changeset(),f.stamp=h,s.runAfter(function(){c.modified=!0,s.pulse(l,f).run()},!0,1)),n&&(a=!0===n?Mt.db:Object(Mt.z)(n)||Tt(n)?n:kC(n),f.remove(a)),e&&f.insert(e),r&&(a=kC(r),l.value.some(a)?f.remove(a):f.insert(r)),i)for(u in o)f.modify(i,u,o[u]);return 1}},$C=["view","item","group","xy","x","y"],RC="event.vega.",BC="this.",PC={};function LC(t,e,n){return 1===arguments.length?TC[t]:(TC[t]=e,n&&(PC[t]=n),qC&&(qC.functions[t]=BC+t),this)}LC("bandwidth",function(t,e){const n=vC(t,(e||this).context);return n&&n.bandwidth?n.bandwidth():0},NC),LC("copy",function(t,e){const n=vC(t,(e||this).context);return n?n.copy():void 0},NC),LC("domain",function(t,e){const n=vC(t,(e||this).context);return n?n.domain():[]},NC),LC("range",function(t,e){const n=vC(t,(e||this).context);return n&&n.range?n.range():[]},NC),LC("invert",function(t,e,n){const r=vC(t,(n||this).context);return r?Object(Mt.z)(e)?(r.invertRange||r.invert)(e):(r.invert||r.invertExtent)(e):void 0},NC),LC("scale",function(t,e,n){const r=vC(t,(n||this).context);return r&&void 0!==e?r(e):void 0},NC),LC("gradient",function(t,e,n,r,i){t=vC(t,(i||this).context);const o=qu(e,n);let a=t.domain(),u=a[0],s=Object(Mt.R)(a),c=Mt.w;return s-u?c=nv(t,u,s):t=(t.interpolator?Xm("sequential")().interpolator(t.interpolator()):Xm("linear")().interpolate(t.interpolate()).range(t.range())).domain([u=0,s=1]),t.ticks&&(u!==(a=t.ticks(+r||15))[0]&&a.unshift(u),s!==Object(Mt.R)(a)&&a.push(s)),a.forEach(e=>o.stop(c(e),t(e))),o},NC),LC("geoArea",bC,NC),LC("geoBounds",xC,NC),LC("geoCentroid",_C,NC),LC("geoShape",function(t,e,n){const r=vC(t,(n||this).context);return function(t){return r?r.path.context(t)(e):""}},NC),LC("indata",function(t,e,n){const r=this.context.data[t]["index:"+e],i=r?r.value.get(n):void 0;return i?i.count:i},function(t,e,n,r){e[0].type!==dj&&Object(Mt.n)("First argument to indata must be a string literal."),e[1].type!==dj&&Object(Mt.n)("Second argument to indata must be a string literal.");const i=e[0].value,o=e[1].value,a=MC+o;r.hasOwnProperty(a)||(r[a]=n.getData(i).indataRef(n,o))}),LC("data",fC,FC),LC("treePath",function(t,e,n){const r=jC(t,this),i=r[e],o=r[n];return i&&o?i.path(o).map(EC):void 0},FC),LC("treeAncestors",function(t,e){const n=jC(t,this)[e];return n?n.ancestors().map(EC):void 0},FC),LC("vlSelectionTest",function(t,e,n){for(var r,i,o,a,u,s=this.context.data[t],c=s?s.values.value:[],l=s?s[oC]&&s[oC].value:void 0,f=n===QS,h=c.length,d=0;d<h;++d)if(r=c[d],l&&f){if(-1===(o=(i=i||{})[a=r.unit]||0))continue;if(u=aC(e,r),i[a]=u?-1:++o,u&&1===l.size)return!0;if(!u&&o===l.get(a).count)return!1}else if(f^(u=aC(e,r)))return u;return h&&f},lC),LC("vlSelectionResolve",function(t,e){for(var n,r,i,o,a,u,s,c,l,f,h,d=this.context.data[t],p=d?d.values.value:[],g={},m={},v=p.length,y=0;y<v;++y)for(o=(n=p[y]).unit,r=n.fields,i=n.values,f=0,h=r.length;f<h;++f)a=r[f],s=(u=g[a.field]||(g[a.field]={}))[o]||(u[o]=[]),m[a.field]=c=a.type.charAt(0),l=uC[c+"_union"],u[o]=l(s,Object(Mt.i)(i[f]));return e=e||KS,Object.keys(g).forEach(function(t){g[t]=Object.keys(g[t]).map(function(e){return g[t][e]}).reduce(function(n,r){return void 0===n?r:uC[m[t]+"_"+e](n,r)})}),g},lC);const UC={blacklist:["_"],whitelist:["datum","event","item"],fieldvar:"datum",globalvar:function(t){return"_["+Object(Mt.W)("$"+t)+"]"},functions:function(t){const e=ZS(t);$C.forEach(t=>e[t]=RC+t);for(let t in TC)e[t]=BC+t;return e},constants:JS,visitors:PC};var qC=function(t){var e=(t=t||{}).whitelist?Object(Mt.ab)(t.whitelist):{},n=t.blacklist?Object(Mt.ab)(t.blacklist):{},r=t.constants||JS,i=(t.functions||ZS)(f),o=t.globalvar,a=t.fieldvar,u={},s={},c=0,l=Object(Mt.C)(o)?o:function(t){return o+'["'+t+'"]'};function f(t){if(Object(Mt.G)(t))return t;var e=h[t.type];return null==e&&Object(Mt.n)("Unsupported type: "+t.type),e(t)}var h={Literal:function(t){return t.raw},Identifier:function(t){var i=t.name;return c>0?i:n.hasOwnProperty(i)?Object(Mt.n)("Illegal identifier: "+i):r.hasOwnProperty(i)?r[i]:e.hasOwnProperty(i)?i:(u[i]=1,l(i))},MemberExpression:function(t){var e=!t.computed,n=f(t.object);e&&(c+=1);var r=f(t.property);return n===a&&(s[function(t){var e=t&&t.length-1;return e&&('"'===t[0]&&'"'===t[e]||"'"===t[0]&&"'"===t[e])?t.slice(1,-1):t}(r)]=1),e&&(c-=1),n+(e?"."+r:"["+r+"]")},CallExpression:function(t){"Identifier"!==t.callee.type&&Object(Mt.n)("Illegal callee type: "+t.callee.type);var e=t.callee.name,n=t.arguments,r=i.hasOwnProperty(e)&&i[e];return r||Object(Mt.n)("Unrecognized function: "+e),Object(Mt.C)(r)?r(n):r+"("+n.map(f).join(",")+")"},ArrayExpression:function(t){return"["+t.elements.map(f).join(",")+"]"},BinaryExpression:function(t){return"("+f(t.left)+t.operator+f(t.right)+")"},UnaryExpression:function(t){return"("+t.operator+f(t.argument)+")"},ConditionalExpression:function(t){return"("+f(t.test)+"?"+f(t.consequent)+":"+f(t.alternate)+")"},LogicalExpression:function(t){return"("+f(t.left)+t.operator+f(t.right)+")"},ObjectExpression:function(t){return"{"+t.properties.map(f).join(",")+"}"},Property:function(t){c+=1;var e=f(t.key);return c-=1,e+":"+f(t.value)}};function d(t){var e={code:f(t),globals:Object.keys(u),fields:Object.keys(s)};return u={},s={},e}return d.functions=i,d.constants=r,d}(UC);function IC(t,e,n){";"!==e[e.length-1]&&(e="return("+e+");");var r=Function.apply(null,t.concat(e));return n&&n.functions?r.bind(n.functions):r}function WC(t,e){return IC(["event"],t,e)}function HC(t,e){return IC(["item","_"],t,e)}function GC(t,e,n){var r,i;for(r in n=n||{},t)i=t[r],n[r]=Object(Mt.z)(i)?i.map(function(t){return YC(t,e,n)}):YC(i,e,n);return n}function YC(t,e,n){if(!t||!Object(Mt.E)(t))return t;for(var r,i=0,o=VC.length;i<o;++i)if(r=VC[i],t.hasOwnProperty(r.key))return r.parse(t,e,n);return t}var VC=[{key:"$ref",parse:function(t,e){return e.get(t.$ref)||Object(Mt.n)("Operator not defined: "+t.$ref)}},{key:"$key",parse:function(t,e){var n="k:"+t.$key+"_"+!!t.$flat;return e.fn[n]||(e.fn[n]=Object(Mt.H)(t.$key,t.$flat))}},{key:"$expr",parse:function(t,e,n){t.$params&&GC(t.$params,e,n);var r="e:"+t.$expr+"_"+t.$name;return e.fn[r]||(e.fn[r]=Object(Mt.f)(function(t,e){return IC(["datum","_"],t,e)}(t.$expr,e),t.$fields,t.$name))}},{key:"$field",parse:function(t,e){if(!t.$field)return null;var n="f:"+t.$field+"_"+t.$name;return e.fn[n]||(e.fn[n]=Object(Mt.t)(t.$field,t.$name))}},{key:"$encode",parse:function(t,e){var n,r,i=t.$encode,o={};for(n in i)r=i[n],o[n]=Object(Mt.f)(HC(r.$expr,e),r.$fields),o[n].output=r.$output;return o}},{key:"$compare",parse:function(t,e){var n="c:"+t.$compare+"_"+t.$order,r=Object(Mt.i)(t.$compare).map(function(t){return t&&t.$tupleid?$t:t});return e.fn[n]||(e.fn[n]=Object(Mt.k)(r,t.$order))}},{key:"$context",parse:function(t,e){return e}},{key:"$subflow",parse:function(t,e){var n=t.$subflow;return function(t,r,i){var o=QC(n,e.fork()),a=o.get(n.operators[0].id),u=o.signals.parent;return u&&u.set(i),a}}},{key:"$tupleid",parse:function(){return $t}}];function XC(t){return(t+"").toLowerCase()}var JC=function(t,e){"operator"!==XC(t.type)&&t.type?e.transform(t,t.type):e.operator(t,t.update?function(t,e){return IC(["_"],t,e)}(t.update,e):null)};var ZC=function(t,e){var n=Object(Mt.E)(n=t.source)?n.$ref:n,r=e.get(n),i=null,o=t.update,a=void 0;r||Object(Mt.n)("Source not defined: "+t.source),i=t.target&&t.target.$expr?WC(t.target.$expr,e):e.get(t.target),o&&o.$expr&&(o.$params&&(a=GC(o.$params,e)),o=function(t,e){return IC(["_","event"],t,e)}(o.$expr,e)),e.update(t,r,i,o,a)},QC=function(t,e){var n=t.operators||[];return t.background&&(e.background=t.background),t.eventConfig&&(e.eventConfig=t.eventConfig),n.forEach(function(t){JC(t,e)}),n.forEach(function(t){!function(t,e){if(t.params){var n=e.get(t.id);n||Object(Mt.n)("Invalid operator id: "+t.id),e.dataflow.connect(n,n.parameters(GC(t.params,e),t.react,t.initonly))}}(t,e)}),(t.streams||[]).forEach(function(t){!function(t,e){var n,r=null!=t.filter?WC(t.filter,e):void 0,i=null!=t.stream?e.get(t.stream):void 0;t.source?i=e.events(t.source,t.type,r):t.merge&&(i=(n=t.merge.map(e.get.bind(e)))[0].merge.apply(n[0],n.slice(1))),t.between&&(n=t.between.map(e.get.bind(e)),i=i.between(n[0],n[1])),t.filter&&(i=i.filter(r)),null!=t.throttle&&(i=i.throttle(+t.throttle)),null!=t.debounce&&(i=i.debounce(+t.debounce)),null==i&&Object(Mt.n)("Invalid stream definition: "+JSON.stringify(t)),t.consume&&i.consume(!0),e.stream(t,i)}(t,e)}),(t.updates||[]).forEach(function(t){ZC(t,e)}),e.resolve()},KC={skip:!0};var tM=function(t,e,n){return new eM(t,e,n)};function eM(t,e,n){this.dataflow=t,this.transforms=e,this.events=t.events.bind(t),this.signals={},this.scales={},this.nodes={},this.data={},this.fn={},n&&(this.functions=Object.create(n),this.functions.context=this)}function nM(t){this.dataflow=t.dataflow,this.transforms=t.transforms,this.functions=t.functions,this.events=t.events,this.signals=Object.create(t.signals),this.scales=Object.create(t.scales),this.nodes=Object.create(t.nodes),this.data=Object.create(t.data),this.fn=Object.create(t.fn),t.functions&&(this.functions=Object.create(t.functions),this.functions.context=this)}eM.prototype=nM.prototype={fork:function(){var t=new nM(this);return(this.subcontext||(this.subcontext=[])).push(t),t},get:function(t){return this.nodes[t]},set:function(t,e){return this.nodes[t]=e},add:function(t,e){var n,r=this,i=r.dataflow;if(r.set(t.id,e),"collect"===XC(t.type)&&(n=t.value)&&(n.$ingest?i.ingest(e,n.$ingest,n.$format):n.$request?i.preload(e,n.$request,n.$format):i.pulse(e,i.changeset().insert(n))),t.root&&(r.root=e),t.parent){var o=r.get(t.parent.$ref);o?(i.connect(o,[e]),e.targets().add(o)):(r.unresolved=r.unresolved||[]).push(function(){o=r.get(t.parent.$ref),i.connect(o,[e]),e.targets().add(o)})}if(t.signal&&(r.signals[t.signal]=e),t.scale&&(r.scales[t.scale]=e),t.data)for(var a in t.data)n=r.data[a]||(r.data[a]={}),t.data[a].forEach(function(t){n[t]=e})},resolve:function(){return(this.unresolved||[]).forEach(function(t){t()}),delete this.unresolved,this},operator:function(t,e){this.add(t,this.dataflow.add(t.value,e))},transform:function(t,e){this.add(t,this.dataflow.add(this.transforms[XC(e)]))},stream:function(t,e){this.set(t.id,e)},update:function(t,e,n,r,i){this.dataflow.on(e,n,r,i,t.options)},getState:function(t){var e=this,n={};if(t.signals){var r=n.signals={};Object.keys(e.signals).forEach(function(n){var i=e.signals[n];t.signals(n,i)&&(r[n]=i.value)})}if(t.data){var i=n.data={};Object.keys(e.data).forEach(function(n){var r=e.data[n];t.data(n,r)&&(i[n]=r.input.value)})}return e.subcontext&&!1!==t.recurse&&(n.subcontext=e.subcontext.map(function(e){return e.getState(t)})),n},setState:function(t){var e=this,n=e.dataflow,r=t.data,i=t.signals;Object.keys(i||{}).forEach(function(t){n.update(e.signals[t],i[t],KC)}),Object.keys(r||{}).forEach(function(t){n.pulse(e.data[t].input,n.changeset().remove(Mt.db).insert(r[t]))}),(t.subcontext||[]).forEach(function(t,n){var r=e.subcontext[n];r&&r.setState(t)})}};var rM=function(t,e,n){return QC(e,tM(t,Ai,n||TC))};var iM="width",oM="height",aM="padding",uM={skip:!0};function sM(t,e){var n=t.autosize(),r=t.padding();return e-(n&&n.contains===aM?r.left+r.right:0)}function cM(t,e){var n=t.autosize(),r=t.padding();return e-(n&&n.contains===aM?r.top+r.bottom:0)}function lM(t,e){return e.modified&&Object(Mt.z)(e.input.value)&&t.indexOf("_:vega:_")}function fM(t,e){return!("parent"===t||e instanceof Ai.proxy)}var hM=function(t,e,n,r){var i=t.element();i&&i.setAttribute("title",function(t){return null==t?"":Object(Mt.z)(t)?dM(t):Object(Mt.E)(t)&&!Object(Mt.B)(t)?(e=t,Object.keys(e).map(function(t){var n=e[t];return t+": "+(Object(Mt.z)(n)?dM(n):pM(n))}).join("\n")):t+"";var e}(r))};function dM(t){return"["+t.map(pM).join(", ")+"]"}function pM(t){return Object(Mt.z)(t)?"[…]":Object(Mt.E)(t)&&!Object(Mt.B)(t)?"{…}":t}function gM(t,e){e=e||{},xi.call(this),e.loader&&this.loader(e.loader),e.logger&&this.logger(e.logger),null!=e.logLevel&&this.logLevel(e.logLevel),this._el=null,this._elBind=null,this._renderType=e.renderer||mh.Canvas,this._scenegraph=new yf;var n=this._scenegraph.root;this._renderer=null,this._tooltip=e.tooltip||hM,this._redraw=!0,this._handler=(new Nf).scene(n),this._preventDefault=!1,this._timers=[],this._eventListeners=[],this._resizeListeners=[];var r,i,o=rM(this,t,e.functions);this._runtime=o,this._signals=o.signals,this._bind=(t.bindings||[]).map(function(t){return{state:null,param:Object(Mt.o)({},t)}}),o.root&&o.root.set(n),n.source=o.data.root.input,this.pulse(o.data.root.input,this.changeset().insert(n.items)),this._background=e.background||o.background||null,this._eventConfig=(r=o.eventConfig,(i=(r=Object(Mt.o)({},r)).defaults)&&(Object(Mt.z)(i.prevent)&&(i.prevent=Object(Mt.ab)(i.prevent)),Object(Mt.z)(i.allow)&&(i.allow=Object(Mt.ab)(i.allow))),r),this._width=this.width(),this._height=this.height(),this._viewWidth=sM(this,this._width),this._viewHeight=cM(this,this._height),this._origin=[0,0],this._resize=0,this._autosize=1,function(t){var e=t._signals,n=e[iM],r=e[oM],i=e[aM];function o(){t._autosize=t._resize=1}t._resizeWidth=t.add(null,function(e){t._width=e.size,t._viewWidth=sM(t,e.size),o()},{size:n}),t._resizeHeight=t.add(null,function(e){t._height=e.size,t._viewHeight=cM(t,e.size),o()},{size:r});var a=t.add(null,o,{pad:i});t._resizeWidth.rank=n.rank+1,t._resizeHeight.rank=r.rank+1,a.rank=i.rank+1}(this),DE(this),e.hover&&this.hover(),e.container&&this.initialize(e.container,e.bind)}var mM=Object(Mt.x)(gM,xi);function vM(t,e){return t._signals.hasOwnProperty(e)?t._signals[e]:Object(Mt.n)("Unrecognized signal name: "+Object(Mt.W)(e))}function yM(t,e){var n=(t._targets||[]).filter(function(t){var n=t._update;return n&&n.handler===e});return n.length?n[0]:null}function bM(t,e,n,r){var i=yM(n,r);return i||((i=ij(this,function(){r(e,n.value)})).handler=r,t.on(n,null,i)),t}function xM(t,e,n){var r=yM(e,n);return r&&e._targets.remove(r),t}mM.evaluate=async function(t,e,n){if(await xi.prototype.evaluate.call(this,t,e),this._redraw||this._resize)try{this._renderer&&(this._resize&&(this._resize=0,i=$E(r=this),o=zE(r),a=TE(r),r._renderer.background(r._background),r._renderer.resize(o,a,i),r._handler.origin(i),r._resizeListeners.forEach(function(t){try{t(o,a)}catch(t){r.error(t)}})),await this._renderer.renderAsync(this._scenegraph.root)),this._redraw=!1}catch(t){this.error(t)}var r,i,o,a;return n&&Ft(this,n),this},mM.dirty=function(t){this._redraw=!0,this._renderer&&this._renderer.dirty(t)},mM.container=function(){return this._el},mM.scenegraph=function(){return this._scenegraph},mM.origin=function(){return this._origin.slice()},mM.signal=function(t,e,n){var r=vM(this,t);return 1===arguments.length?r.value:this.update(r,e,n)},mM.background=function(t){return arguments.length?(this._background=t,this._resize=1,this):this._background},mM.width=function(t){return arguments.length?this.signal("width",t):this.signal("width")},mM.height=function(t){return arguments.length?this.signal("height",t):this.signal("height")},mM.padding=function(t){return arguments.length?this.signal("padding",t):this.signal("padding")},mM.autosize=function(t){return arguments.length?this.signal("autosize",t):this.signal("autosize")},mM.renderer=function(t){return arguments.length?(yh(t)||Object(Mt.n)("Unrecognized renderer type: "+t),t!==this._renderType&&(this._renderType=t,this._resetRenderer()),this):this._renderType},mM.tooltip=function(t){return arguments.length?(t!==this._tooltip&&(this._tooltip=t,this._resetRenderer()),this):this._tooltip},mM.loader=function(t){return arguments.length?(t!==this._loader&&(xi.prototype.loader.call(this,t),this._resetRenderer()),this):this._loader},mM.resize=function(){return this._autosize=1,this.touch(vM(this,"autosize"))},mM._resetRenderer=function(){this._renderer&&(this._renderer=null,this.initialize(this._el,this._elBind))},mM._resizeView=function(t,e,n,r,i,o){this.runAfter(function(a){var u=0;a._autosize=0,a.width()!==n&&(u=1,a.signal(iM,n,uM),a._resizeWidth.skip(!0)),a.height()!==r&&(u=1,a.signal(oM,r,uM),a._resizeHeight.skip(!0)),a._viewWidth!==t&&(a._resize=1,a._viewWidth=t),a._viewHeight!==e&&(a._resize=1,a._viewHeight=e),a._origin[0]===i[0]&&a._origin[1]===i[1]||(a._resize=1,a._origin=i),u&&a.run("enter"),o&&a.runAfter(t=>t.resize())},!1,1)},mM.addEventListener=function(t,e,n){var r=e;return n&&!1===n.trap||((r=ij(this,e)).raw=e),this._handler.on(t,r),this},mM.removeEventListener=function(t,e){for(var n,r,i=this._handler.handlers(t),o=i.length;--o>=0;)if(r=i[o].type,n=i[o].handler,t===r&&(e===n||e===n.raw)){this._handler.off(r,n);break}return this},mM.addResizeListener=function(t){var e=this._resizeListeners;return e.indexOf(t)<0&&e.push(t),this},mM.removeResizeListener=function(t){var e=this._resizeListeners,n=e.indexOf(t);return n>=0&&e.splice(n,1),this},mM.addSignalListener=function(t,e){return bM(this,t,vM(this,t),e)},mM.removeSignalListener=function(t,e){return xM(this,vM(this,t),e)},mM.addDataListener=function(t,e){return bM(this,t,FE(this,t).values,e)},mM.removeDataListener=function(t,e){return xM(this,FE(this,t).values,e)},mM.preventDefault=function(t){return arguments.length?(this._preventDefault=t,this):this._preventDefault},mM.timer=function(t,e){this._timers.push(function(t,e,n){var r=new zO,i=e;return null==e?(r.restart(t,e,n),r):(e=+e,n=null==n?FO():+n,r.restart(function o(a){a+=i,r.restart(o,i+=e,n),t(a)},e,n),r)}(function(e){t({timestamp:Date.now(),elapsed:e})},e))},mM.events=function(t,e,n){var r,i=this,o=new Kt(n),a=function(n,r){i.runAsync(null,()=>{t===BE&&function(t,e){var n=t._eventConfig.defaults,r=n&&n.prevent,i=n&&n.allow;return!1!==r&&!0!==i&&(!0===r||!1===i||(r?r[e]:i?!i[e]:t.preventDefault()))}(i,e)&&n.preventDefault(),o.receive(RE(i,n,r))})};if(t===PE)i.timer(a,e);else if(t===BE)i.addEventListener(e,a,UE);else if(t===LE?"undefined"!=typeof window&&(r=[window]):"undefined"!=typeof document&&(r=document.querySelectorAll(t)),r){for(var u=0,s=r.length;u<s;++u)r[u].addEventListener(e,a);i._eventListeners.push({type:e,sources:r,handler:a})}else i.warn("Can not resolve event source: "+t);return o},mM.finalize=function(){var t,e,n,r=this._tooltip,i=this._timers,o=this._eventListeners;for(t=i.length;--t>=0;)i[t].stop();for(t=o.length;--t>=0;)for(e=(n=o[t]).sources.length;--e>=0;)n.sources[e].removeEventListener(n.type,n.handler);return r&&r.call(this,this._handler,null,null,null),this},mM.hover=function(t,e){return e=[e||"update",(t=[t||"hover"])[0]],this.on(this.events("view","mouseover",qE),IE,WE(t)),this.on(this.events("view","mouseout",qE),IE,WE(e)),this},mM.data=function(t){return FE(this,t).values.value},mM.change=NE,mM.insert=function(t,e){return NE.call(this,t,It().insert(e))},mM.remove=function(t,e){return NE.call(this,t,It().remove(e))},mM.scale=function(t){var e=this._runtime.scales;return e.hasOwnProperty(t)||Object(Mt.n)("Unrecognized scale or projection: "+t),e[t].value},mM.initialize=function(t,e){var n,r,i=this,o=i._renderType,a=yh(o);return t=i._el=t?oj(i,t):null,a||i.error("Unrecognized renderer type: "+o),n=a.handler||Nf,r=t?a.renderer:a.headless,i._renderer=r?rj(i,i._renderer,t,r):null,i._handler=function(t,e,n,r){var i=new r(t.loader(),ij(t,t.tooltip())).scene(t.scenegraph().root).initialize(n,$E(t),t);return e&&e.handlers().forEach(function(t){i.on(t.type,t.handler)}),i}(i,i._handler,t,n),i._redraw=!0,t&&(e=e?i._elBind=oj(i,e):t.appendChild(HE("div",{class:"vega-bindings"})),i._bind.forEach(function(t){t.param.element&&(t.element=oj(i,t.param.element))}),i._bind.forEach(function(t){JE(i,t.element||e,t)})),i},mM.toImageURL=async function(t,e){t!==mh.Canvas&&t!==mh.SVG&&t!==mh.PNG&&Object(Mt.n)("Unrecognized image type: "+t);const n=await aj(this,t,e);return t===mh.SVG?(r=n.svg(),i=new Blob([r],{type:"image/svg+xml"}),window.URL.createObjectURL(i)):n.canvas().toDataURL("image/png");var r,i},mM.toCanvas=async function(t,e){return(await aj(this,mh.Canvas,t,e)).canvas()},mM.toSVG=async function(t){return(await aj(this,mh.SVG,t)).svg()},mM.getState=function(t){return this._runtime.getState(t||{data:lM,signals:fM,recurse:!0})},mM.setState=function(t){return this.runAsync(null,e=>{e._trigger=!1,e._runtime.setState(t)},t=>{t._trigger=!0}),this};var _M=function(t,e){return t=t||e.autosize,Object(Mt.E)(t)?t:{type:t||"pad"}},wM=function(t,e){return t=t||e.padding,Object(Mt.E)(t)?{top:OM(t.top),bottom:OM(t.bottom),left:OM(t.left),right:OM(t.right)}:{top:n=OM(t),bottom:n,left:n,right:n};var n};function OM(t){return+t||0}var kM=["value","update","init","react","bind"];function AM(t,e){Object(Mt.n)(t+' for "outer" push: '+Object(Mt.W)(e))}var EM=function(t,e){var n=t.name;if("outer"===t.push)e.signals[n]||AM("No prior signal definition",n),kM.forEach(function(e){void 0!==t[e]&&AM("Invalid property ",e)});else{var r=e.addSignal(n,t.value);!1===t.react&&(r.react=!1),t.bind&&e.addBinding(n,t.bind)}},jM=function(t,e,n){var r,i,o={};try{t=Object(Mt.G)(t)?t:Object(Mt.W)(t)+"",r=XS(t)}catch(e){Object(Mt.n)("Expression parse error: "+t)}return r.visit(function(t){if(t.type===yj){var n=t.callee.name,r=UC.visitors[n];r&&r(n,t.arguments,e,o)}}),(i=qC(r)).globals.forEach(function(t){var n="$"+t;!o.hasOwnProperty(n)&&e.getSignal(t)&&(o[n]=e.signalRef(t))}),{$expr:n?n+"return("+i.code+");":i.code,$fields:i.fields,$params:o}};function SM(t,e,n,r){this.id=-1,this.type=t,this.value=e,this.params=n,r&&(this.parent=r)}function CM(t,e,n,r){return new SM(t,e,n,r)}function MM(t,e){return CM("operator",t,e)}function DM(t){var e={$ref:t.id};return t.id<0&&(t.refs=t.refs||[]).push(e),e}var FM={$tupleid:1,toString:function(){return":_tupleid_:"}};function NM(t,e){return e?{$field:t,$name:e}:{$field:t}}var zM=NM("key");function TM(t,e){return{$compare:t,$order:e}}var $M="descending";function RM(t,e){return(t&&t.signal?"$"+t.signal:t||"")+(t&&e?"_":"")+(e&&e.signal?"$"+e.signal:e||"")}var BM="scope",PM="view";function LM(t){return t&&t.signal}function UM(t){if(LM(t))return!0;if(Object(Mt.E)(t))for(var e in t)if(UM(t[e]))return!0;return!1}function qM(t,e){return null!=t?t:e}function IM(t){return t&&t.signal||t}var WM="timer";function HM(t,e){return(t.merge?GM:t.stream?YM:t.type?VM:Object(Mt.n)("Invalid stream specification: "+Object(Mt.W)(t)))(t,e)}function GM(t,e){var n=XM({merge:t.merge.map(t=>HM(t,e))},t,e);return e.addStream(n).id}function YM(t,e){var n=XM({stream:HM(t.stream,e)},t,e);return e.addStream(n).id}function VM(t,e){var n,r,i;return t.type===WM?(n=e.event(WM,t.throttle),t={between:t.between,filter:t.filter}):n=e.event((i=t.source)===BM?PM:i||PM,t.type),r=XM({stream:n},t,e),1===Object.keys(r).length?n:e.addStream(r).id}function XM(t,e,n){var r,i,o,a,u=e.between;return u&&(2!==u.length&&Object(Mt.n)('Stream "between" parameter must have 2 entries: '+Object(Mt.W)(e)),t.between=[HM(u[0],n),HM(u[1],n)]),u=e.filter?[].concat(e.filter):[],(e.marktype||e.markname||e.markrole)&&u.push((r=e.marktype,i=e.markname,o=e.markrole,(a="event.item")+(r&&"*"!==r?"&&"+a+".mark.marktype==='"+r+"'":"")+(o?"&&"+a+".mark.role==='"+o+"'":"")+(i?"&&"+a+".mark.name==='"+i+"'":""))),e.source===BM&&u.push("inScope(event.item)"),u.length&&(t.filter=jM("("+u.join(")&&(")+")").$expr),null!=(u=e.throttle)&&(t.throttle=+u),null!=(u=e.debounce)&&(t.debounce=+u),e.consume&&(t.consume=!0),t}var JM,ZM,QM=function(t,e,n){return JM=e||KM,ZM=n||cD,fD(t.trim()).map(hD)},KM="view",tD="[",eD="]",nD="{",rD="}",iD=":",oD=",",aD="@",uD=">",sD=/[[\]{}]/,cD={"*":1,arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1};function lD(t,e,n,r,i){for(var o,a=0,u=t.length;e<u;++e){if(o=t[e],!a&&o===n)return e;i&&i.indexOf(o)>=0?--a:r&&r.indexOf(o)>=0&&++a}return e}function fD(t){for(var e=[],n=0,r=t.length,i=0;i<r;)i=lD(t,i,oD,tD+nD,eD+rD),e.push(t.substring(n,i).trim()),n=++i;if(0===e.length)throw"Empty event selector: "+t;return e}function hD(t){return"["===t[0]?function(t){var e,n,r=t.length,i=1;if((i=lD(t,i,eD,tD,eD))===r)throw"Empty between selector: "+t;if(2!==(e=fD(t.substring(1,i))).length)throw"Between selector must have two elements: "+t;if((t=t.slice(i+1).trim())[0]!==uD)throw"Expected '>' after between selector: "+t;if(e=e.map(hD),(n=hD(t.slice(1).trim())).between)return{between:e,stream:n};n.between=e;return n}(t):function(t){var e,n,r={source:JM},i=[],o=[0,0],a=0,u=0,s=t.length,c=0;if(t[s-1]===rD){if(!((c=t.lastIndexOf(nD))>=0))throw"Unmatched right brace: "+t;try{o=function(t){var e=t.split(oD);if(!t.length||e.length>2)throw t;return e.map(function(e){var n=+e;if(n!=n)throw t;return n})}(t.substring(c+1,s-1))}catch(e){throw"Invalid throttle specification: "+t}t=t.slice(0,c).trim(),s=t.length,c=0}if(!s)throw t;t[0]===aD&&(a=++c);(e=lD(t,c,iD))<s&&(i.push(t.substring(u,e).trim()),u=c=++e);if((c=lD(t,c,tD))===s)i.push(t.substring(u,s).trim());else if(i.push(t.substring(u,c).trim()),n=[],(u=++c)===s)throw"Unmatched left bracket: "+t;for(;c<s;){if((c=lD(t,c,eD))===s)throw"Unmatched left bracket: "+t;if(n.push(t.substring(u,c).trim()),c<s-1&&t[++c]!==tD)throw"Expected left bracket: "+t;u=++c}if(!(s=i.length)||sD.test(i[s-1]))throw"Invalid event selector: "+t;s>1?(r.type=i[1],a?r.markname=i[0].slice(1):(l=i[0],ZM.hasOwnProperty(l)?r.marktype=i[0]:r.source=i[0])):r.type=i[0];var l;"!"===r.type.slice(-1)&&(r.consume=!0,r.type=r.type.slice(0,-1));null!=n&&(r.filter=n);o[0]&&(r.throttle=o[0]);o[1]&&(r.debounce=o[1]);return r}(t)}var dD=function(t,e,n){var r=t.events,i=t.update,o=t.encode,a=[],u={target:n};r||Object(Mt.n)("Signal update missing events specification."),Object(Mt.G)(r)&&(r=QM(r,e.isSubscope()?BM:PM)),r=Object(Mt.i)(r).filter(t=>t.signal||t.scale?(a.push(t),0):1),a.length>1&&(a=[pD(a)]),r.length&&a.push(r.length>1?{merge:r}:r[0]),null!=o&&(i&&Object(Mt.n)("Signal encode and update are mutually exclusive."),i="encode(item(),"+Object(Mt.W)(o)+")"),u.update=Object(Mt.G)(i)?jM(i,e,"var datum=event.item&&event.item.datum;"):null!=i.expr?jM(i.expr,e,"var datum=event.item&&event.item.datum;"):null!=i.value?i.value:null!=i.signal?{$expr:"_.value",$params:{value:e.signalRef(i.signal)}}:Object(Mt.n)("Invalid signal update specification."),t.force&&(u.options={force:!0}),a.forEach(function(t){e.addUpdate(Object(Mt.o)(function(t,e){return{source:t.signal?e.signalRef(t.signal):t.scale?e.scaleRef(t.scale):HM(t,e)}}(t,e),u))})};function pD(t){return{signal:"["+t.map(t=>t.scale?'scale("'+t.scale+'")':t.signal)+"]"}}function gD(t){return function(e,n,r){return CM(t,n,e||void 0,r)}}var mD=gD("aggregate"),vD=gD("axisticks"),yD=gD("bound"),bD=gD("collect"),xD=gD("compare"),_D=gD("datajoin"),wD=gD("encode"),OD=gD("expression"),kD=(gD("extent"),gD("facet")),AD=gD("field"),ED=gD("key"),jD=gD("legendentries"),SD=gD("load"),CD=gD("mark"),MD=gD("multiextent"),DD=gD("multivalues"),FD=gD("overlap"),ND=gD("params"),zD=gD("prefacet"),TD=gD("projection"),$D=gD("proxy"),RD=gD("relay"),BD=gD("render"),PD=gD("scale"),LD=gD("sieve"),UD=gD("sortitems"),qD=gD("viewlayout"),ID=gD("values"),WD=0;function HD(t,e){var n=t.type||"linear";(function(t){switch(t){case hd:case dd:case pd:case gd:case md:case vd:case yd:case bd:case xd:case wd:case Od:case kd:case Ad:case Ed:case jd:case Sd:return!0}return!1})(n)||Object(Mt.n)("Unrecognized scale type: "+Object(Mt.W)(n)),e.addScale(t.name,{type:n,domain:void 0})}function GD(t,e){var n,r,i=e.getScale(t.name).params;for(n in i.domain=JD(t.domain,t,e),null!=t.range&&(i.range=function t(e,n,r){var i=e.range,o=n.config.range;if(i.signal)return n.signalRef(i.signal);if(Object(Mt.G)(i)){if(o&&o.hasOwnProperty(i))return e=Object(Mt.o)({},e,{range:o[i]}),t(e,n,r);"width"===i?i=[0,{signal:"width"}]:"height"===i?i=Nd(e.type)?[0,{signal:"height"}]:[{signal:"height"},0]:Object(Mt.n)("Unrecognized scale range value: "+Object(Mt.W)(i))}else{if(i.scheme)return r.scheme=Object(Mt.z)(i.scheme)?VD(i.scheme,n):YD(i.scheme,n),i.extent&&(r.schemeExtent=VD(i.extent,n)),void(i.count&&(r.schemeCount=YD(i.count,n)));if(i.step)return void(r.rangeStep=YD(i.step,n));if(Nd(e.type)&&!Object(Mt.z)(i))return JD(i,e,n);Object(Mt.z)(i)||Object(Mt.n)("Unsupported range type: "+Object(Mt.W)(i))}return i.map(t=>(Object(Mt.z)(t)?VD:YD)(t,n))}(t,e,i)),null!=t.interpolate&&function(t,e){e.interpolate=YD(t.type||t),null!=t.gamma&&(e.interpolateGamma=YD(t.gamma))}(t.interpolate,i),null!=t.nice&&(i.nice=(r=t.nice,Object(Mt.E)(r)?{interval:YD(r.interval),step:YD(r.step)}:YD(r))),null!=t.bins&&(i.bins=function(t,e){return t.signal||Object(Mt.z)(t)?VD(t,e):e.objectProperty(t)}(t.bins,e)),t)i.hasOwnProperty(n)||"name"===n||(i[n]=YD(t[n],e))}function YD(t,e){return Object(Mt.E)(t)?t.signal?e.signalRef(t.signal):Object(Mt.n)("Unsupported object: "+Object(Mt.W)(t)):t}function VD(t,e){return t.signal?e.signalRef(t.signal):t.map(t=>YD(t,e))}function XD(t){Object(Mt.n)("Can not find data set: "+Object(Mt.W)(t))}function JD(t,e,n){if(t)return t.signal?n.signalRef(t.signal):(Object(Mt.z)(t)?function(t,e,n){return t.map(function(t){return YD(t,n)})}:t.fields?function(t,e,n){var r=t.data,i=t.fields.reduce(function(t,e){return e=Object(Mt.G)(e)?{data:r,field:e}:Object(Mt.z)(e)||e.signal?function(t,e){var n="_:vega:_"+WD++,r=bD({});if(Object(Mt.z)(t))r.value={$ingest:t};else if(t.signal){var i="setdata("+Object(Mt.W)(n)+","+t.signal+")";r.params.input=e.signalRef(i)}return e.addDataPipeline(n,[r,LD({})]),{data:n,field:"data"}}(e,n):e,t.push(e),t},[]);return(Nd(e.type)?function(t,e,n){var r,i,o,a;return r=n.map(function(t){var n=e.getData(t.data);return n||XD(t.data),n.countsRef(e,t.field)}),i=e.add(mD({groupby:zM,ops:["sum"],fields:[e.fieldRef("count")],as:["count"],pulse:r})),o=e.add(bD({pulse:DM(i)})),a=e.add(ID({field:zM,sort:e.sortRef(ZD(t.sort,!0)),pulse:DM(o)})),DM(a)}:Cd(e.type)?function(t,e,n){var r=n.map(function(t){var n=e.getData(t.data);return n||XD(t.data),n.domainRef(e,t.field)});return DM(e.add(DD({values:r})))}:function(t,e,n){var r=n.map(function(t){var n=e.getData(t.data);return n||XD(t.data),n.extentRef(e,t.field)});return DM(e.add(MD({extents:r})))})(t,n,i)}:function(t,e,n){var r=n.getData(t.data);r||XD(t.data);return Nd(e.type)?r.valuesRef(n,t.field,ZD(t.sort,!1)):Cd(e.type)?r.domainRef(n,t.field):r.extentRef(n,t.field)})(t,e,n);null==e.domainMin&&null==e.domainMax||Object(Mt.n)("No scale domain defined for domainMin/domainMax to override.")}function ZD(t,e){return t&&(t.field||t.op?t.field||"count"===t.op?e&&t.field?Object(Mt.n)("Multiple domain scales can not sort by field."):e&&t.op&&"count"!==t.op&&Object(Mt.n)("Multiple domain scales support op count only."):Object(Mt.n)("No field provided for sort aggregate op: "+t.op):Object(Mt.E)(t)?t.field="key":t={field:"key"}),t}function QD(t,e,n){return Object(Mt.z)(t)?t.map(function(t){return QD(t,e,n)}):Object(Mt.E)(t)?t.signal?n.signalRef(t.signal):"fit"===e?t:Object(Mt.n)("Unsupported parameter object: "+Object(Mt.W)(t)):t}const KD="vertical",tF="start",eF="end",nF="value",rF="guide-label",iF="group-title",oF="symbol",aF="gradient",uF="discrete",sF=["size","shape","fill","stroke","strokeWidth","strokeDash","opacity"],cF={name:1,interactive:1},lF={value:0},fF={value:1};var hF=Object(Mt.ab)(["rule"]),dF=Object(Mt.ab)(["group","image","rect"]),pF=function(t,e){var n="";return hF[e]?n:(t.x2&&(t.x?(dF[e]&&(n+="if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;"),n+="o.width=o.x2-o.x;"):n+="o.x=o.x2-(o.width||0);"),t.xc&&(n+="o.x=o.xc-(o.width||0)/2;"),t.y2&&(t.y?(dF[e]&&(n+="if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;"),n+="o.height=o.y2-o.y;"):n+="o.y=o.y2-(o.height||0);"),t.yc&&(n+="o.y=o.yc-(o.height||0)/2;"),n)},gF=function(t,e,n,r){var i=jM(t,e);return i.$fields.forEach(function(t){r[t]=1}),Object(Mt.o)(n,i.$params),i.$expr},mF=function(t,e,n,r){return function t(e,n,r,i){var o,a,u;if(e.signal)o="datum",u=gF(e.signal,n,r,i);else if(e.group||e.parent){for(a=Math.max(1,e.level||1),o="item";a-- >0;)o+=".mark.group";e.parent?(u=e.parent,o+=".datum"):u=e.group}else e.datum?(o="datum",u=e.datum):Object(Mt.n)("Invalid field reference: "+Object(Mt.W)(e));e.signal||(Object(Mt.G)(u)?(i[u]=1,u=Object(Mt.V)(u).map(Mt.W).join("][")):u=t(u,n,r,i));return o+"["+u+"]"}(Object(Mt.E)(t)?t:{datum:t},e,n,r)};var vF=function(t,e,n,r,i){var o,a,u,s=yF(t.scale,n,r,i);return null!=t.range?(a=s+".range()",e=0===(o=+t.range)?a+"[0]":"($="+a+","+(1===o?"$[$.length-1]":"$[0]+"+o+"*($[$.length-1]-$[0])")+")"):(void 0!==e&&(e=s+"("+e+")"),t.band&&(u=function(t,e){if(!Object(Mt.G)(t))return-1;var n=e.scaleType(t);return"band"===n||"point"===n?1:0}(t.scale,n))&&(o=(a=s+".bandwidth")+"()"+(1===(o=+t.band)?"":"*"+o),u<0&&(o="("+a+"?"+o+":0)"),e=(e?e+"+":"")+o,t.extra&&(e="(datum.extra?"+s+"(datum.extra.value):"+e+")")),null==e&&(e="0")),e};function yF(t,e,n,r){var i;if(Object(Mt.G)(t))i=DC+t,n.hasOwnProperty(i)||(n[i]=e.scaleRef(t)),i=Object(Mt.W)(i);else{for(i in e.scales)n[DC+i]=e.scaleRef(i);i=Object(Mt.W)(DC)+"+"+(t.signal?"("+gF(t.signal,e,n,r)+")":mF(t,e,n,r))}return"_["+i+"]"}var bF=function(t,e,n,r){return Object(Mt.E)(t)?"("+xF(null,t,e,n,r)+")":t},xF=function(t,e,n,r,i){if(null!=e.gradient)return function(t,e,n,r){return"this.gradient("+yF(t.gradient,e,n,r)+","+Object(Mt.W)(t.start)+","+Object(Mt.W)(t.stop)+","+Object(Mt.W)(t.count)+")"}(e,n,r,i);var o=e.signal?gF(e.signal,n,r,i):e.color?function(t,e,n,r){function i(t,i,o,a){return"this."+t+"("+[xF(null,i,e,n,r),xF(null,o,e,n,r),xF(null,a,e,n,r)].join(",")+").toString()"}return t.c?i("hcl",t.h,t.c,t.l):t.h||t.s?i("hsl",t.h,t.s,t.l):t.l||t.a?i("lab",t.l,t.a,t.b):t.r||t.g||t.b?i("rgb",t.r,t.g,t.b):null}(e.color,n,r,i):null!=e.field?mF(e.field,n,r,i):void 0!==e.value?Object(Mt.W)(e.value):void 0;return null!=e.scale&&(o=vF(e,o,n,r,i)),void 0===o&&(o=null),null!=e.exponent&&(o="Math.pow("+o+","+bF(e.exponent,n,r,i)+")"),null!=e.mult&&(o+="*"+bF(e.mult,n,r,i)),null!=e.offset&&(o+="+"+bF(e.offset,n,r,i)),e.round&&(o="Math.round("+o+")"),o},_F=function(t,e,n){const r=t+"["+Object(Mt.W)(e)+"]";return`$=${n};if(${r}!==$)${r}=$,m=1;`},wF=function(t,e,n,r,i){var o="";return e.forEach(function(e){var a=xF(t,e,n,r,i);o+=e.test?gF(e.test,n,r,i)+"?"+a+":":a}),":"===Object(Mt.R)(o)&&(o+="null"),_F("o",t,o)};function OF(t,e,n,r){var i,o,a,u={},s="var o=item,datum=o.datum,m=0,$;";for(i in t)o=t[i],Object(Mt.z)(o)?s+=wF(i,o,r,n,u):(a=xF(i,o,r,n,u),s+=_F("o",i,a));return s+=pF(t,e),{$expr:s+="return m;",$fields:Object.keys(u),$output:Object.keys(t)}}var kF="mark",AF="frame",EF="title";function jF(t){return Object(Mt.E)(t)?Object(Mt.o)({},t):{value:t}}function SF(t,e,n,r){return null!=n?(Object(Mt.E)(n)&&!Object(Mt.z)(n)?t.update[e]=n:t[r||"enter"][e]={value:n},1):0}function CF(t,e,n){for(let n in e)SF(t,n,e[n]);for(let e in n)SF(t,e,n[e],"update")}function MF(t,e,n){for(var r in e)n&&n.hasOwnProperty(r)||(t[r]=Object(Mt.o)(t[r]||{},e[r]));return t}function DF(t,e,n,r,i,o){var a,u;for(u in(o=o||{}).encoders={$encode:a={}},t=function(t,e,n,r,i){var o,a,u={};"legend"!=n&&0!==String(n).indexOf("axis")||(n=null);for(o in a=n===AF?i.group:n===kF?Object(Mt.o)({},i.mark,i[e]):null)NF(o,t)||("fill"===o||"stroke"===o)&&(NF("fill",t)||NF("stroke",t))||(u[o]=FF(a[o]));return Object(Mt.i)(r).forEach(function(e){var n=i.style&&i.style[e];for(var r in n)NF(r,t)||(u[r]=FF(n[r]))}),(t=Object(Mt.o)({},t)).enter=Object(Mt.o)(u,t.enter),t}(t,e,n,r,i.config))a[u]=OF(t[u],e,o,i);return o}function FF(t){return t&&t.signal?{signal:t.signal}:{value:t}}function NF(t,e){return e&&(e.enter&&e.enter[t]||e.update&&e.update[t])}var zF=function(t,e,n,r,i,o,a){return{type:t,name:a?a.name:void 0,role:e,style:a&&a.style||n,key:r,from:i,interactive:!(!a||!a.interactive),encode:MF(o,a,cF)}};function TF(t,e){const n=n=>qM(t[n],e[n]);return n.isVertical=n=>KD===qM(t.direction,e.direction||(n?e.symbolDirection:e.gradientDirection)),n.gradientLength=()=>qM(t.gradientLength,e.gradientLength||e.gradientWidth),n.gradientThickness=()=>qM(t.gradientThickness,e.gradientThickness||e.gradientHeight),n.entryColumns=()=>qM(t.columns,qM(e.columns,+n.isVertical(!0))),n}function $F(t,e){var n=e&&(e.update&&e.update[t]||e.enter&&e.enter[t]);return n&&n.signal?n:n?n.value:null}function RF(t,e,n){return`item.anchor === "${tF}" ? ${t} : item.anchor === "${eF}" ? ${e} : ${n}`}const BF=RF(Object(Mt.W)("left"),Object(Mt.W)("right"),Object(Mt.W)("center"));var PF="group",LF="text",UF=function(t,e,n,r){var i,o,a,u,s,c,l=TF(t,n),f=l.isVertical(),h=l.gradientThickness(),d=l.gradientLength();return f?(a=[0,1],u=[0,0],s=h,c=d):(a=[0,0],u=[1,0],s=d,c=h),CF(i={enter:o={opacity:lF,x:lF,y:lF,width:jF(s),height:jF(c)},update:Object(Mt.o)({},o,{opacity:fF,fill:{gradient:e,start:a,stop:u}}),exit:{opacity:lF}},{stroke:l("gradientStrokeColor"),strokeWidth:l("gradientStrokeWidth")},{opacity:l("gradientOpacity")}),zF("rect","legend-gradient",null,void 0,void 0,i,r)},qF=function(t,e,n,r,i){var o,a,u,s,c,l,f=TF(t,n),h=f.isVertical(),d=f.gradientThickness(),p=f.gradientLength(),g="";return h?(u="y",c="y2",s="x",l="width",g="1-"):(u="x",c="x2",s="y",l="height"),(a={opacity:lF,fill:{scale:e,field:nF}})[u]={signal:g+"datum.perc",mult:p},a[s]=lF,a[c]={signal:g+"datum.perc2",mult:p},a[l]=jF(d),CF(o={enter:a,update:Object(Mt.o)({},a,{opacity:fF}),exit:{opacity:lF}},{stroke:f("gradientStrokeColor"),strokeWidth:f("gradientStrokeWidth")},{opacity:f("gradientOpacity")}),zF("rect","legend-band",null,nF,i,o,r)};var IF=function(t,e,n,r){var i,o,a,u,s,c=TF(t,e),l=c.isVertical(),f=jF(c.gradientThickness()),h=c.gradientLength(),d=c("labelOverlap"),p=c("labelSeparation"),g="";return CF(i={enter:o={opacity:lF},update:a={opacity:fF,text:{field:"label"}},exit:{opacity:lF}},{fill:c("labelColor"),fillOpacity:c("labelOpacity"),font:c("labelFont"),fontSize:c("labelFontSize"),fontStyle:c("labelFontStyle"),fontWeight:c("labelFontWeight"),limit:qM(t.labelLimit,e.gradientLabelLimit)}),l?(o.align={value:"left"},o.baseline=a.baseline={signal:'datum.perc<=0?"bottom":datum.perc>=1?"top":"middle"'},u="y",s="x",g="1-"):(o.align=a.align={signal:'datum.perc<=0?"left":datum.perc>=1?"right":"center"'},o.baseline={value:"top"},u="x",s="y"),o[u]=a[u]={signal:g+"datum.perc",mult:h},o[s]=a[s]=f,f.offset=qM(t.labelOffset,e.gradientLabelOffset)||0,t=zF(LF,"legend-label",rF,nF,r,i,n),d&&(t.overlap={separation:p,method:d,order:"datum.index"}),t},WF=function(t,e,n,r,i,o,a,u){return{type:PF,name:n,role:t,style:e,from:r,interactive:i||!1,encode:o,marks:a,layout:u}},HF=function(t,e,n,r,i){var o,a,u,s,c,l,f,h=TF(t,e),d=n.entries,p=!(!d||!d.interactive),g=d?d.name:void 0,m=h("clipHeight"),v=h("symbolOffset"),y={data:"value"},b={},x=`${i} ? datum.offset : datum.size`,_=m?jF(m):{field:"size"},w="datum.index",O=`max(1, ${i})`;return _.mult=.5,b={enter:o={opacity:lF,x:{signal:x,mult:.5,offset:v},y:_},update:a={opacity:fF,x:o.x,y:o.y},exit:{opacity:lF}},t.fill||CF(b,{fill:e.symbolBaseFillColor,stroke:e.symbolBaseStrokeColor}),CF(b,{fill:h("symbolFillColor"),shape:h("symbolType"),size:h("symbolSize"),stroke:h("symbolStrokeColor"),strokeDash:h("symbolDash"),strokeDashOffset:h("symbolDashOffset"),strokeWidth:h("symbolStrokeWidth")},{opacity:h("symbolOpacity")}),sF.forEach(function(e){t[e]&&(a[e]=o[e]={scale:t[e],field:nF})}),s=zF("symbol","legend-symbol",null,nF,y,b,n.symbols),m&&(s.clip=!0),(u=jF(v)).offset=h("labelOffset"),CF(b={enter:o={opacity:lF,x:{signal:x,offset:u},y:_},update:a={opacity:fF,text:{field:"label"},x:o.x,y:o.y},exit:{opacity:lF}},{align:h("labelAlign"),baseline:h("labelBaseline"),fill:h("labelColor"),fillOpacity:h("labelOpacity"),font:h("labelFont"),fontSize:h("labelFontSize"),fontStyle:h("labelFontStyle"),fontWeight:h("labelFontWeight"),limit:h("labelLimit")}),c=zF(LF,"legend-label",rF,nF,y,b,n.labels),b={enter:{noBound:{value:!m},width:lF,height:m?jF(m):lF,opacity:lF},exit:{opacity:lF},update:a={opacity:fF,row:{signal:null},column:{signal:null}}},h.isVertical(!0)?(l=`ceil(item.mark.items.length / ${O})`,a.row.signal=`${w}%${l}`,a.column.signal=`floor(${w} / ${l})`,f={field:["row",w]}):(a.row.signal=`floor(${w} / ${O})`,a.column.signal=`${w} % ${O}`,f={field:w}),a.column.signal=`${i}?${a.column.signal}:${w}`,(t=WF("scope",null,g,r={facet:{data:r,name:"value",groupby:"index"}},p,MF(b,d,cF),[s,c])).sort=f,t};const GF='item.orient === "left"',YF='item.orient === "right"',VF=`(${GF} || ${YF})`,XF=`datum.vgrad && ${VF}`,JF=RF('"top"','"bottom"','"middle"'),ZF=`datum.vgrad && ${YF} ? (${RF('"right"','"left"','"center"')}) : (${VF} && !(datum.vgrad && ${GF})) ? "left" : ${BF}`,QF=`item._anchor || (${VF} ? "middle" : "start")`,KF=`${XF} ? (${GF} ? -90 : 90) : 0`,tN=`${VF} ? (datum.vgrad ? (${YF} ? "bottom" : "top") : ${JF}) : "top"`;var eN=function(t,e){var n;return Object(Mt.E)(t)&&(t.signal?n=t.signal:t.path?n="pathShape("+nN(t.path)+")":t.sphere&&(n="geoShape("+nN(t.sphere)+', {type: "Sphere"})')),n?e.signalRef(n):!!t};function nN(t){return Object(Mt.E)(t)&&t.signal?t.signal:Object(Mt.W)(t)}var rN=function(t){var e=t.role||"";return e.indexOf("axis")&&e.indexOf("legend")?t.type===PF?"scope":e||kF:e},iN=function(t){return{marktype:t.type,name:t.name||void 0,role:t.role||rN(t),zindex:+t.zindex||void 0}},oN=function(t,e){return t&&t.signal?e.signalRef(t.signal):!1!==t},aN=function(t,e){var n=Ei(t.type);n||Object(Mt.n)("Unrecognized transform type: "+Object(Mt.W)(t.type));var r=CM(n.type.toLowerCase(),null,uN(n,t,e));return t.signal&&e.addSignal(t.signal,e.proxy(r)),r.metadata=n.metadata||{},r};function uN(t,e,n){var r,i,o,a={};for(i=0,o=t.params.length;i<o;++i)a[(r=t.params[i]).name]=sN(r,e,n);return a}function sN(t,e,n){var r=t.type,i=e[t.name];return"index"===r?function(t,e,n){Object(Mt.G)(e.from)||Object(Mt.n)('Lookup "from" parameter must be a string literal.');return n.getData(e.from).lookupRef(n,e.key)}(0,e,n):void 0!==i?"param"===r?function(t,e,n){var r=e[t.name];return t.array?(Object(Mt.z)(r)||Object(Mt.n)("Expected an array of sub-parameters. Instead: "+Object(Mt.W)(r)),r.map(function(e){return lN(t,e,n)})):lN(t,r,n)}(t,e,n):"projection"===r?n.projectionRef(e[t.name]):t.array&&!LM(i)?i.map(function(e){return cN(t,e,n)}):cN(t,i,n):void(t.required&&Object(Mt.n)("Missing required "+Object(Mt.W)(e.type)+" parameter: "+Object(Mt.W)(t.name)))}function cN(t,e,n){var r=t.type;if(LM(e))return fN(r)?Object(Mt.n)("Expression references can not be signals."):hN(r)?n.fieldRef(e):dN(r)?n.compareRef(e):n.signalRef(e.signal);var i,o=t.expr||hN(r);return o&&((i=e)&&i.expr)?n.exprRef(e.expr,e.as):o&&function(t){return t&&t.field}(e)?NM(e.field,e.as):fN(r)?jM(e,n):function(t){return"data"===t}(r)?DM(n.getData(e).values):hN(r)?NM(e):dN(r)?n.compareRef(e):e}function lN(t,e,n){var r,i,o,a,u;for(a=0,u=t.params.length;a<u;++a){for(o in(i=t.params[a]).key)if(i.key[o]!==e[o]){i=null;break}if(i)break}return i||Object(Mt.n)("Unsupported parameter: "+Object(Mt.W)(e)),r=Object(Mt.o)(uN(i,e,n),i.key),DM(n.add(ND(r)))}function fN(t){return"expr"===t}function hN(t){return"field"===t}function dN(t){return"compare"===t}function pN(t,e){return t.$ref?t:t.data&&t.data.$ref?t.data:DM(e.getData(t.data).output)}function gN(t,e,n,r,i){this.scope=t,this.input=e,this.output=n,this.values=r,this.aggregate=i,this.index={}}gN.fromEntries=function(t,e){var n=e.length,r=1,i=e[0],o=e[n-1],a=e[n-2],u=null;for(i&&"load"===i.type&&(i=e[1]),t.add(e[0]);r<n;++r)e[r].params.pulse=DM(e[r-1]),t.add(e[r]),"aggregate"===e[r].type&&(u=e[r]);return new gN(t,i,a,o,u)};var mN=gN.prototype;function vN(t){return Object(Mt.G)(t)?t:null}function yN(t,e,n){var r,i=RM(n.op,n.field);if(e.ops){for(var o=0,a=e.as.length;o<a;++o)if(e.as[o]===i)return}else e.ops=["count"],e.fields=[null],e.as=["count"];n.op&&(e.ops.push((r=n.op.signal)?t.signalRef(r):n.op),e.fields.push(t.fieldRef(n.field)),e.as.push(i))}function bN(t,e,n,r,i,o,a){var u,s,c=e[n]||(e[n]={}),l=function(t){return Object(Mt.E)(t)?(t.order===$M?"-":"+")+RM(t.op,t.field):""}(o),f=vN(i);if(null!=f&&(t=e.scope,u=c[f+=l?"|"+l:""]),!u){var h=o?{field:zM,pulse:e.countsRef(t,i,o)}:{field:t.fieldRef(i),pulse:DM(e.output)};l&&(h.sort=t.sortRef(o)),s=t.add(CM(r,void 0,h)),a&&(e.index[i]=s),u=DM(s),null!=f&&(c[f]=u)}return u}mN.countsRef=function(t,e,n){var r,i,o,a=this.counts||(this.counts={}),u=vN(e);return null!=u&&(t=this.scope,r=a[u]),r?n&&n.field&&yN(t,r.agg.params,n):(o={groupby:t.fieldRef(e,"key"),pulse:DM(this.output)},n&&n.field&&yN(t,o,n),i=t.add(mD(o)),r=t.add(bD({pulse:DM(i)})),r={agg:i,ref:DM(r)},null!=u&&(a[u]=r)),r.ref},mN.tuplesRef=function(){return DM(this.values)},mN.extentRef=function(t,e){return bN(t,this,"extent","extent",e,!1)},mN.domainRef=function(t,e){return bN(t,this,"domain","values",e,!1)},mN.valuesRef=function(t,e,n){return bN(t,this,"vals","values",e,n||!0)},mN.lookupRef=function(t,e){return bN(t,this,"lookup","tupleindex",e,!1)},mN.indataRef=function(t,e){return bN(t,this,"indata","tupleindex",e,!0,!0)};var xN=function(t,e,n){var r,i,o=t.remove,a=t.insert,u=t.toggle,s=t.modify,c=t.values,l=e.add(MM());r="if("+t.trigger+',modify("'+n+'",'+[a,o,u,s,c].map(function(t){return null==t?"null":t}).join(",")+"),0)",i=jM(r,e),l.update=i.$expr,l.params=i.$params},_N=function(t,e){var n,r,i,o,a,u,s,c,l,f,h,d,p,g,m=rN(t),v=t.type===PF,y=t.from&&t.from.facet,b=t.layout||"scope"===m||m===AF,x=m===kF||b||y,_=t.overlap;i=function(t,e,n){var r,i,o,a,u;return t?(r=t.facet)&&(e||Object(Mt.n)("Only group marks can be faceted."),null!=r.field?a=u=pN(r,n):(t.data?u=DM(n.getData(t.data).aggregate):((o=aN(Object(Mt.o)({type:"aggregate",groupby:Object(Mt.i)(r.groupby)},r.aggregate),n)).params.key=n.keyRef(r.groupby),o.params.pulse=pN(r,n),a=u=DM(n.add(o))),i=n.keyRef(r.groupby,!0))):a=DM(n.add(bD(null,[{}]))),a||(a=pN(t,n)),{key:i,pulse:a,parent:u}}(t.from,v,e),f=DM(r=e.add(_D({key:i.key||(t.key?NM(t.key):void 0),pulse:i.pulse,clean:!v}))),r=o=e.add(bD({pulse:f})),r=e.add(CD({markdef:iN(t),interactive:oN(t.interactive,e),clip:eN(t.clip,e),context:{$context:!0},groups:e.lookup(),parent:e.signals.parent?e.signalRef("parent"):null,index:e.markpath(),pulse:DM(r)})),h=DM(r),(r=a=e.add(wD(DF(t.encode,t.type,m,t.style,e,{mod:!1,pulse:h})))).params.parent=e.encode(),t.transform&&t.transform.forEach(function(t){const n=aN(t,e),i=n.metadata;(i.generates||i.changes)&&Object(Mt.n)("Mark transforms should not generate new data."),i.nomod||(a.params.mod=!0),n.params.pulse=DM(r),e.add(r=n)}),t.sort&&(r=e.add(UD({sort:e.compareRef(t.sort,!0),pulse:DM(r)}))),d=DM(r),(y||b)&&(p=DM(b=e.add(qD({layout:e.objectProperty(t.layout),legends:e.legends,mark:h,pulse:d})))),g=DM(u=e.add(yD({mark:h,pulse:p||d}))),v&&(x&&((n=e.operators).pop(),b&&n.pop()),e.pushState(d,p||g,f),y?function(t,e,n){var r,i,o,a,u=t.from.facet,s=u.name,c=pN(u,e);u.name||Object(Mt.n)("Facet must have a name: "+Object(Mt.W)(u)),u.data||Object(Mt.n)("Facet must reference a data set: "+Object(Mt.W)(u)),u.field?a=e.add(zD({field:e.fieldRef(u.field),pulse:c})):u.groupby?a=e.add(kD({key:e.keyRef(u.groupby),group:DM(e.proxy(n.parent)),pulse:c})):Object(Mt.n)("Facet must specify groupby or field: "+Object(Mt.W)(u)),i=(r=e.fork()).add(bD()),o=r.add(LD({pulse:DM(i)})),r.addData(s,new gN(r,i,i,o)),r.addSignal("parent",null),a.params.subflow={$subflow:zN(t,r).toRuntime()}}(t,e,i):x?function(t,e,n){var r=e.add(zD({pulse:n.pulse})),i=e.fork();i.add(LD()),i.addSignal("parent",null),r.params.subflow={$subflow:zN(t,i).toRuntime()}}(t,e,i):zN(t,e),e.popState(),x&&(b&&n.push(b),n.push(u))),_&&(g=function(t,e,n){var r,i=t.method,o=t.bound,a=t.separation,u={separation:LM(a)?n.signalRef(a.signal):a,method:LM(i)?n.signalRef(i.signal):i,pulse:e};t.order&&(u.sort=n.compareRef({field:t.order}));o&&(r=o.tolerance,u.boundTolerance=LM(r)?n.signalRef(r.signal):+r,u.boundScale=n.scaleRef(o.scale),u.boundOrient=o.orient);return DM(n.add(FD(u)))}(_,g,e)),s=e.add(BD({pulse:g})),c=e.add(LD({pulse:DM(s)},void 0,e.parent())),null!=t.name&&(l=t.name,e.addData(l,new gN(e,o,s,c)),t.on&&t.on.forEach(function(t){(t.insert||t.remove||t.toggle)&&Object(Mt.n)("Marks only support modify triggers."),xN(t,e,l)}))};var wN=function(t,e){var n,r,i,o,a,u,s,c,l,f=e.config.legend,h=t.encode||{},d=h.legend||{},p=d.name||void 0,g=d.interactive,m=d.style,v=TF(t,f),y=sF.reduce(function(e,n){return e||t[n]},0);return y||Object(Mt.n)("Missing valid scale for legend."),a=function(t,e){var n=t.type||oF;t.type||1!==function(t){return sF.reduce(function(e,n){return e+(t[n]?1:0)},0)}(t)||!t.fill&&!t.stroke||(n=Fd(e)?aF:zd(e)?uF:oF);return n!==aF?n:zd(e)?uF:aF}(t,e.scaleType(y)),u={title:null!=t.title,type:a,vgrad:"symbol"!==a&&v.isVertical()},s=DM(e.add(bD(null,[u]))),d=MF(function(t,e){var n={enter:{},update:{}};return CF(n,{orient:t("orient"),offset:t("offset"),padding:t("padding"),titlePadding:t("titlePadding"),cornerRadius:t("cornerRadius"),fill:t("fillColor"),stroke:t("strokeColor"),strokeWidth:e.strokeWidth,strokeDash:e.strokeDash,x:t("legendX"),y:t("legendY")}),n}(v,f),d,cF),n={enter:{x:{value:0},y:{value:0}}},c=DM(e.add(jD(i={type:a,scale:e.scaleRef(y),count:e.objectProperty(t.tickCount),values:e.objectProperty(t.values),minstep:e.property(t.tickMinStep),formatType:e.property(t.formatType),formatSpecifier:e.property(t.format)}))),a===aF?(o=[UF(t,y,f,h.gradient),IF(t,f,h.labels,c)],i.count=i.count||e.signalRef(`max(2,2*floor((${IM(v.gradientLength())})/100))`)):a===uF?o=[qF(t,y,f,h.gradient,c),IF(t,f,h.labels,c)]:(r=function(t,e){const n=TF(t,e);return{align:n("gridAlign"),columns:n.entryColumns(),center:{row:!0,column:!1},padding:{row:n("rowPadding"),column:n("columnPadding")}}}(t,f),o=[HF(t,f,h,c,IM(r.columns))],i.size=function(t,e,n){var r=IM(ON("size",t,n)),i=IM(ON("strokeWidth",t,n)),o=IM(function(t,e,n){return $F("fontSize",t)||function(t,e,n){var r=e.config.style[n];return r&&r[t]}("fontSize",e,n)}(n[1].encode,e,rF));return jM(`max(ceil(sqrt(${r})+${i}),${o})`,e)}(t,e,o[0].marks)),o=[WF("legend-entry",null,null,s,g,n,o,r)],u.title&&o.push(function(t,e,n,r){var i,o=TF(t,e);return CF(i={enter:{opacity:lF},update:{opacity:fF,x:{field:{group:"padding"}},y:{field:{group:"padding"}}},exit:{opacity:lF}},{orient:o("titleOrient"),_anchor:o("titleAnchor"),anchor:{signal:QF},angle:{signal:KF},align:{signal:ZF},baseline:{signal:tN},text:t.title,fill:o("titleColor"),fillOpacity:o("titleOpacity"),font:o("titleFont"),fontSize:o("titleFontSize"),fontStyle:o("titleFontStyle"),fontWeight:o("titleFontWeight"),limit:o("titleLimit")},{align:o("titleAlign"),baseline:o("titleBaseline")}),zF(LF,"legend-title","guide-title",null,r,i,n)}(t,f,h.title,s)),l=WF("legend",m,p,s,g,d,o),t.zindex&&(l.zindex=t.zindex),_N(l,e)};function ON(t,e,n){return e[t]?`scale("${e[t]}",datum)`:$F(t,n[0].encode)}const kN='item.orient==="left"?-90:item.orient==="right"?90:0',AN='item.orient==="bottom"?"top":"bottom"';var EN=function(t,e){t=Object(Mt.G)(t)?{text:t}:t;var n,r,i=e.config.title,o=Object(Mt.o)({},t.encode);return n=DM(e.add(bD(null,[{}]))),o.name=t.name,o.interactive=t.interactive,r=function(t,e,n,r){var i,o=TF(t,e),a={value:0},u=t.text;return CF(i={enter:{opacity:a},update:{opacity:{value:1}},exit:{opacity:a}},{text:u,orient:o("orient"),anchor:o("anchor"),align:{signal:BF},angle:{signal:kN},baseline:{signal:AN},dx:o("dx"),dy:o("dy"),fill:o("color"),font:o("font"),fontSize:o("fontSize"),fontStyle:o("fontStyle"),fontWeight:o("fontWeight"),frame:o("frame"),limit:o("limit"),offset:o("offset")||0},{align:o("align"),angle:o("angle"),baseline:o("baseline")}),zF(LF,EF,t.style||iF,null,r,i,n)}(t,i,o,n),t.zindex&&(r.zindex=t.zindex),_N(r,e)};function jN(t,e){var n=[];t.transform&&t.transform.forEach(function(t){n.push(aN(t,e))}),t.on&&t.on.forEach(function(n){xN(n,e,t.name)}),e.addDataPipeline(t.name,function(t,e,n){var r,i,o,a,u,s=[],c=null,l=!1,f=!1;t.values?UM(t.values)||UM(t.format)?(s.push(CN(e,t)),s.push(c=SN())):s.push(c=SN({$ingest:t.values,$format:t.format})):t.url?UM(t.url)||UM(t.format)?(s.push(CN(e,t)),s.push(c=SN())):s.push(c=SN({$request:t.url,$format:t.format})):t.source&&(c=r=Object(Mt.i)(t.source).map(function(t){return DM(e.getData(t).output)}),s.push(null));for(i=0,o=n.length;i<o;++i)a=n[i],u=a.metadata,c||u.source||s.push(c=SN()),s.push(a),u.generates&&(f=!0),u.modifies&&!f&&(l=!0),u.source?c=a:u.changes&&(c=null);r&&(o=r.length-1,s[0]=RD({derive:l,pulse:o?r:r[0]}),(l||o)&&s.splice(1,0,SN()));c||s.push(SN());return s.push(LD({})),s}(t,e,n))}function SN(t){var e=bD({},t);return e.metadata={source:!0},e}function CN(t,e){return SD({url:e.url?t.property(e.url):void 0,values:e.values?t.property(e.values):void 0,format:t.objectProperty(e.format)})}function MN(t,e){return{scale:t.scale,range:e}}var DN=function(t,e,n,r){var i,o,a,u,s,c,l,f,h,d=TF(t,e),p=t.orient,g=t.gridScale,m="left"===p||"top"===p?1:-1,v=function(t,e){if(1===e);else if(Object(Mt.E)(t)){for(var n=t=Object(Mt.o)({},t);null!=n.mult;){if(!Object(Mt.E)(n.mult))return n.mult*=e,t;n=n.mult=Object(Mt.o)({},n.mult)}n.mult=e}else t=e*(t||0);return t}(t.offset,m);return CF(i={enter:o={opacity:lF},update:u={opacity:fF},exit:a={opacity:lF}},{stroke:d("gridColor"),strokeDash:d("gridDash"),strokeDashOffset:d("gridDashOffset"),strokeOpacity:d("gridOpacity"),strokeWidth:d("gridWidth")}),s={scale:t.scale,field:nF,band:d("bandPosition"),round:d("tickRound"),extra:d("tickExtra"),offset:d("tickOffset")},"top"===p||"bottom"===p?(c="x",l="y",h="height"):(c="y",l="x",h="width"),f=l+"2",u[c]=o[c]=a[c]=s,g?(u[l]=o[l]={scale:g,range:0,mult:m,offset:v},u[f]=o[f]={scale:g,range:1,mult:m,offset:v}):(u[l]=o[l]={value:0,offset:v},u[f]=o[f]={signal:h,mult:m,offset:v}),zF("rule","axis-grid",null,nF,r,i,n)};function FN(t,e,n,r,i){return{signal:'flush(range("'+t+'"), scale("'+t+'", datum.value), '+e+","+n+","+r+","+i+")"}}var NN=function(t,e){var n,r,i,o,a,u,s=function(t,e){var n=e.config,r=t.orient,i="top"===r||"bottom"===r?n.axisX:n.axisY,o=n["axis"+r[0].toUpperCase()+r.slice(1)],a="band"===e.scaleType(t.scale)&&n.axisBand;return i||o||a?Object(Mt.o)({},n.axis,i,o,a):n.axis}(t,e),c=t.encode||{},l=c.axis||{},f=l.name||void 0,h=l.interactive,d=l.style,p=TF(t,s);return n={orient:t.orient,ticks:!!p("ticks"),labels:!!p("labels"),grid:!!p("grid"),domain:!!p("domain"),title:null!=t.title},r=DM(e.add(bD({},[n]))),l=MF({update:{offset:jF(p("offset")||0),position:jF(qM(t.position,0)),titlePadding:jF(p("titlePadding")),minExtent:jF(p("minExtent")),maxExtent:jF(p("maxExtent")),range:{signal:`abs(span(range("${t.scale}")))`}}},c.axis,cF),i=DM(e.add(vD({scale:e.scaleRef(t.scale),extra:e.property(p("tickExtra")),count:e.objectProperty(t.tickCount),values:e.objectProperty(t.values),minstep:e.property(t.tickMinStep),formatType:e.property(t.formatType),formatSpecifier:e.property(t.format)}))),u=[],n.grid&&u.push(DN(t,s,c.grid,i)),n.ticks&&(o=p("tickSize"),u.push(function(t,e,n,r,i){var o,a,u,s,c,l,f=TF(t,e),h=t.orient,d="left"===h||"top"===h?-1:1;return CF(o={enter:a={opacity:lF},update:s={opacity:fF},exit:u={opacity:lF}},{stroke:f("tickColor"),strokeDash:f("tickDash"),strokeDashOffset:f("tickDashOffset"),strokeOpacity:f("tickOpacity"),strokeWidth:f("tickWidth")}),(c=jF(i)).mult=d,l={scale:t.scale,field:nF,band:f("bandPosition"),round:f("tickRound"),extra:f("tickExtra"),offset:f("tickOffset")},"top"===h||"bottom"===h?(s.y=a.y=lF,s.y2=a.y2=c,s.x=a.x=u.x=l):(s.x=a.x=lF,s.x2=a.x2=c,s.y=a.y=u.y=l),zF("rule","axis-tick",null,nF,r,o,n)}(t,s,c.ticks,i,o))),n.labels&&(o=n.ticks?o:0,u.push(function(t,e,n,r,i){var o,a,u,s,c,l,f,h,d,p,g=TF(t,e),m=t.orient,v="left"===m||"top"===m?-1:1,y="top"===m||"bottom"===m,b=t.scale,x=IM(g("labelFlush")),_=IM(g("labelFlushOffset")),w=0===x||!!x,O=g("labelAlign"),k=g("labelBaseline");return(u=jF(i)).mult=v,u.offset=jF(g("labelPadding")||0),u.offset.mult=v,s={scale:b,field:nF,band:.5,offset:g("tickOffset")},y?(c=O||(w?FN(b,x,'"left"','"right"','"center"'):"center"),l=k||("top"===m?"bottom":"top"),f=!O):(c=O||("right"===m?"left":"right"),l=k||(w?FN(b,x,'"top"','"bottom"','"middle"'):"middle"),f=!k),f=f&&w&&_?FN(b,x,"-"+_,_,0):null,CF(o={enter:a={opacity:lF,x:y?s:u,y:y?u:s},update:{opacity:fF,text:{field:"label"},x:a.x,y:a.y},exit:{opacity:lF,x:a.x,y:a.y}},{[y?"dx":"dy"]:f,align:c,baseline:l,angle:g("labelAngle"),fill:g("labelColor"),fillOpacity:g("labelOpacity"),font:g("labelFont"),fontSize:g("labelFontSize"),fontWeight:g("labelFontWeight"),fontStyle:g("labelFontStyle"),limit:g("labelLimit")}),h=g("labelBound"),d=g("labelOverlap"),p=g("labelSeparation"),t=zF(LF,"axis-label",rF,nF,r,o,n),(d||h)&&(t.overlap={separation:p,method:d,order:"datum.index",bound:h?{scale:b,orient:m,tolerance:h}:null}),t}(t,s,c.labels,i,o))),n.domain&&u.push(function(t,e,n,r){var i,o,a,u,s,c,l=TF(t,e),f=t.orient;return CF(i={enter:o={opacity:lF},update:a={opacity:fF},exit:{opacity:lF}},{stroke:l("domainColor"),strokeDash:l("domainDash"),strokeDashOffset:l("domainDashOffset"),strokeWidth:l("domainWidth"),strokeOpacity:l("domainOpacity")}),"top"===f||"bottom"===f?(u="x",c="y"):(u="y",c="x"),s=u+"2",o[c]=lF,a[u]=o[u]=MN(t,0),a[s]=o[s]=MN(t,1),zF("rule","axis-domain",null,null,r,i,n)}(t,s,c.domain,r)),n.title&&u.push(function(t,e,n,r){var i,o,a,u,s=TF(t,e),c=t.orient,l="left"===c||"top"===c?-1:1,f="top"===c||"bottom"===c;return i={enter:o={opacity:lF,anchor:jF(s("titleAnchor")),align:{signal:BF}},update:a=Object(Mt.o)({},o,{opacity:fF,text:jF(t.title)}),exit:{opacity:lF}},u={signal:`lerp(range("${t.scale}"), ${RF(0,1,.5)})`},f?(a.x=u,o.angle={value:0},o.baseline={value:"top"===c?"bottom":"top"}):(a.y=u,o.angle={value:90*l},o.baseline={value:"bottom"}),CF(i,{angle:s("titleAngle"),baseline:s("titleBaseline"),fill:s("titleColor"),fillOpacity:s("titleOpacity"),font:s("titleFont"),fontSize:s("titleFontSize"),fontStyle:s("titleFontStyle"),fontWeight:s("titleFontWeight"),limit:s("titleLimit")},{align:s("titleAlign")}),!SF(i,"x",s("titleX"),"update")&&!f&&!NF("x",n)&&(i.enter.auto={value:!0}),!SF(i,"y",s("titleY"),"update")&&f&&!NF("y",n)&&(i.enter.auto={value:!0}),zF(LF,"axis-title","guide-title",null,r,i,n)}(t,s,c.title,r)),a=WF("axis",d,f,r,h,l,u),t.zindex&&(a.zindex=t.zindex),_N(a,e)},zN=function(t,e,n){var r=Object(Mt.i)(t.signals),i=Object(Mt.i)(t.scales);return n||r.forEach(function(t){EM(t,e)}),Object(Mt.i)(t.projections).forEach(function(t){!function(t,e){var n={};for(var r in t)"name"!==r&&(n[r]=QD(t[r],r,e));e.addProjection(t.name,n)}(t,e)}),i.forEach(function(t){HD(t,e)}),Object(Mt.i)(t.data).forEach(function(t){jN(t,e)}),i.forEach(function(t){GD(t,e)}),r.forEach(function(t){!function(t,e){var n=e.getSignal(t.name),r=t.update;t.init&&(r?Object(Mt.n)("Signals can not include both init and update expressions."):(r=t.init,n.initonly=!0)),r&&(r=jM(r,e),n.update=r.$expr,n.params=r.$params),t.on&&t.on.forEach(function(t){dD(t,e,n.id)})}(t,e)}),Object(Mt.i)(t.axes).forEach(function(t){NN(t,e)}),Object(Mt.i)(t.marks).forEach(function(t){_N(t,e)}),Object(Mt.i)(t.legends).forEach(function(t){wN(t,e)}),t.title&&EN(t.title,e),e.parseLambdas(),e},TN=Object(Mt.ab)(["width","height","padding","autosize"]);function $N(t){this.config=t,this.bindings=[],this.field={},this.signals={},this.lambdas={},this.scales={},this.events={},this.data={},this.streams=[],this.updates=[],this.operators=[],this.background=null,this.eventConfig=null,this._id=0,this._subid=0,this._nextsub=[0],this._parent=[],this._encode=[],this._lookup=[],this._markpath=[]}function RN(t){this.config=t.config,this.legends=t.legends,this.field=Object.create(t.field),this.signals=Object.create(t.signals),this.lambdas=Object.create(t.lambdas),this.scales=Object.create(t.scales),this.events=Object.create(t.events),this.data=Object.create(t.data),this.streams=[],this.updates=[],this.operators=[],this._id=0,this._subid=++t._nextsub[0],this._nextsub=t._nextsub,this._parent=t._parent.slice(),this._encode=t._encode.slice(),this._lookup=t._lookup.slice(),this._markpath=t._markpath}var BN=$N.prototype=RN.prototype;function PN(t){return(Object(Mt.z)(t)?function(t){for(var e,n="[",r=0,i=t.length;r<i;++r)e=t[r],n+=(r>0?",":"")+(Object(Mt.E)(e)?e.signal||PN(e):Object(Mt.W)(e));return n+"]"}:function(t){var e,n,r="{",i=0;for(e in t)n=t[e],r+=(++i>1?",":"")+Object(Mt.W)(e)+":"+(Object(Mt.E)(n)?n.signal||PN(n):Object(Mt.W)(n));return r+"}"})(t)}BN.fork=function(){return new RN(this)},BN.isSubscope=function(){return this._subid>0},BN.toRuntime=function(){return this.finish(),{background:this.background,operators:this.operators,streams:this.streams,updates:this.updates,bindings:this.bindings,eventConfig:this.eventConfig}},BN.id=function(){return(this._subid?this._subid+":":0)+this._id++},BN.add=function(t){return this.operators.push(t),t.id=this.id(),t.refs&&(t.refs.forEach(function(e){e.$ref=t.id}),t.refs=null),t},BN.proxy=function(t){var e=t instanceof SM?DM(t):t;return this.add($D({value:e}))},BN.addStream=function(t){return this.streams.push(t),t.id=this.id(),t},BN.addUpdate=function(t){return this.updates.push(t),t},BN.finish=function(){var t,e;for(t in this.root&&(this.root.root=!0),this.signals)this.signals[t].signal=t;for(t in this.scales)this.scales[t].scale=t;function n(t,e,n){var r;t&&((r=t.data||(t.data={}))[e]||(r[e]=[])).push(n)}for(t in this.data)for(var r in n((e=this.data[t]).input,t,"input"),n(e.output,t,"output"),n(e.values,t,"values"),e.index)n(e.index[r],t,"index:"+r);return this},BN.pushState=function(t,e,n){this._encode.push(DM(this.add(LD({pulse:t})))),this._parent.push(e),this._lookup.push(n?DM(this.proxy(n)):null),this._markpath.push(-1)},BN.popState=function(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this._markpath.pop()},BN.parent=function(){return Object(Mt.R)(this._parent)},BN.encode=function(){return Object(Mt.R)(this._encode)},BN.lookup=function(){return Object(Mt.R)(this._lookup)},BN.markpath=function(){var t=this._markpath;return++t[t.length-1]},BN.fieldRef=function(t,e){if(Object(Mt.G)(t))return NM(t,e);t.signal||Object(Mt.n)("Unsupported field reference: "+Object(Mt.W)(t));var n,r=t.signal,i=this.field[r];return i||(n={name:this.signalRef(r)},e&&(n.as=e),this.field[r]=i=DM(this.add(AD(n)))),i},BN.compareRef=function(t,e){function n(t){return LM(t)?(i=!0,r.signalRef(t.signal)):function(t){return t&&t.expr}(t)?(i=!0,r.exprRef(t.expr)):t}var r=this,i=!1,o=Object(Mt.i)(t.field).map(n),a=Object(Mt.i)(t.order).map(n);return e&&o.push(FM),i?DM(this.add(xD({fields:o,orders:a}))):TM(o,a)},BN.keyRef=function(t,e){var n=this.signals,r=!1;return t=Object(Mt.i)(t).map(function(t){return LM(t)?(r=!0,DM(n[t.signal])):t}),r?DM(this.add(ED({fields:t,flat:e}))):function(t,e){var n={$key:t};return e&&(n.$flat=!0),n}(t,e)},BN.sortRef=function(t){if(!t)return t;var e=[RM(t.op,t.field),FM],n=t.order||"ascending";return n.signal?DM(this.add(xD({fields:e,orders:[n=this.signalRef(n.signal),n]}))):TM(e,[n,n])},BN.event=function(t,e){var n=t+":"+e;if(!this.events[n]){var r=this.id();this.streams.push({id:r,source:t,type:e}),this.events[n]=r}return this.events[n]},BN.addSignal=function(t,e){this.signals.hasOwnProperty(t)&&Object(Mt.n)("Duplicate signal name: "+Object(Mt.W)(t));var n=e instanceof SM?e:this.add(MM(e));return this.signals[t]=n},BN.getSignal=function(t){return this.signals[t]||Object(Mt.n)("Unrecognized signal name: "+Object(Mt.W)(t)),this.signals[t]},BN.signalRef=function(t){return this.signals[t]?DM(this.signals[t]):(this.lambdas.hasOwnProperty(t)||(this.lambdas[t]=this.add(MM(null))),DM(this.lambdas[t]))},BN.parseLambdas=function(){for(var t=Object.keys(this.lambdas),e=0,n=t.length;e<n;++e){var r=t[e],i=jM(r,this),o=this.lambdas[r];o.params=i.$params,o.update=i.$expr}},BN.property=function(t){return t&&t.signal?this.signalRef(t.signal):t},BN.objectProperty=function(t){return t&&Object(Mt.E)(t)?this.signalRef(t.signal||PN(t)):t},BN.exprRef=function(t,e){var n={expr:jM(t,this)};return e&&(n.expr.$name=e),DM(this.add(OD(n)))},BN.addBinding=function(t,e){this.bindings||Object(Mt.n)("Nested signals do not support binding: "+Object(Mt.W)(t)),this.bindings.push(Object(Mt.o)({signal:t},e))},BN.addScaleProj=function(t,e){this.scales.hasOwnProperty(t)&&Object(Mt.n)("Duplicate scale or projection name: "+Object(Mt.W)(t)),this.scales[t]=this.add(e)},BN.addScale=function(t,e){this.addScaleProj(t,PD(e))},BN.addProjection=function(t,e){this.addScaleProj(t,TD(e))},BN.getScale=function(t){return this.scales[t]||Object(Mt.n)("Unrecognized scale name: "+Object(Mt.W)(t)),this.scales[t]},BN.projectionRef=BN.scaleRef=function(t){return DM(this.getScale(t))},BN.projectionType=BN.scaleType=function(t){return this.getScale(t).params.type},BN.addData=function(t,e){return this.data.hasOwnProperty(t)&&Object(Mt.n)("Duplicate data set name: "+Object(Mt.W)(t)),this.data[t]=e},BN.getData=function(t){return this.data[t]||Object(Mt.n)("Undefined data set name: "+Object(Mt.W)(t)),this.data[t]},BN.addDataPipeline=function(t,e){return this.data.hasOwnProperty(t)&&Object(Mt.n)("Duplicate data set name: "+Object(Mt.W)(t)),this.addData(t,gN.fromEntries(this,e))};var LN=function(t){return(t||[]).reduce((t,e)=>{for(var n in e){var r="legend"===n?{layout:1}:"style"===n||null;UN(t,n,e[n],r)}return t},{padding:0,autosize:"pad",background:null,events:{defaults:{allow:["wheel"]}},group:null,mark:null,arc:{fill:HN},area:{fill:HN},image:null,line:{stroke:HN,strokeWidth:WN},path:{stroke:HN},rect:{fill:HN},rule:{stroke:GN},shape:{stroke:HN},symbol:{fill:HN,size:64},text:{fill:GN,font:qN,fontSize:11},style:{"guide-label":{fill:GN,font:qN,fontSize:10},"guide-title":{fill:GN,font:qN,fontSize:11,fontWeight:"bold"},"group-title":{fill:GN,font:qN,fontSize:13,fontWeight:"bold"},point:{size:IN,strokeWidth:WN,shape:"circle"},circle:{size:IN,strokeWidth:WN},square:{size:IN,strokeWidth:WN,shape:"square"},cell:{fill:"transparent",stroke:VN}},title:{orient:"top",anchor:"middle",offset:4},axis:{minExtent:0,maxExtent:200,bandPosition:.5,domain:!0,domainWidth:1,domainColor:YN,grid:!1,gridWidth:1,gridColor:VN,labels:!0,labelAngle:0,labelLimit:180,labelPadding:2,ticks:!0,tickColor:YN,tickOffset:0,tickRound:!0,tickSize:5,tickWidth:1,titlePadding:4},axisBand:{tickOffset:-1},legend:{orient:"right",padding:0,gridAlign:"each",columnPadding:10,rowPadding:2,symbolDirection:"vertical",gradientDirection:"vertical",gradientLength:200,gradientThickness:16,gradientStrokeColor:VN,gradientStrokeWidth:0,gradientLabelOffset:2,labelAlign:"left",labelBaseline:"middle",labelLimit:160,labelOffset:4,labelOverlap:!0,symbolType:"circle",symbolSize:100,symbolOffset:0,symbolStrokeWidth:1.5,symbolBaseFillColor:"transparent",symbolBaseStrokeColor:YN,titleLimit:180,titleOrient:"top",titlePadding:5,layout:{offset:18,direction:"horizontal",left:{direction:"vertical"},right:{direction:"vertical"}}},range:{category:{scheme:"tableau10"},ordinal:{scheme:"blues"},heatmap:{scheme:"yellowgreenblue"},ramp:{scheme:"blues"},diverging:{scheme:"blueorange",extent:[1,0]},symbol:["circle","square","triangle-up","cross","diamond","triangle-right","triangle-down","triangle-left"]}})};function UN(t,e,n,r){var i,o;if(Object(Mt.E)(n)&&!Object(Mt.z)(n))for(i in o=Object(Mt.E)(t[e])?t[e]:t[e]={},n)r&&(!0===r||r[i])?UN(o,i,n[i]):o[i]=n[i];else t[e]=n}var qN="sans-serif",IN=30,WN=2,HN="#4c78a8",GN="#000",YN="#888",VN="#ddd";var XN=function(t,e){return Object(Mt.E)(t)||Object(Mt.n)("Input Vega specification must be an object."),function(t,e){var n,r,i,o,a,u=e.config;return e.background=t.background||u.background,e.eventConfig=u.events,a=DM(e.root=e.add(MM())),e.addSignal("width",t.width||0),e.addSignal("height",t.height||0),e.addSignal("padding",wM(t.padding,u)),e.addSignal("autosize",_M(t.autosize,u)),e.legends=e.objectProperty(u.legend&&u.legend.layout),Object(Mt.i)(t.signals).forEach(function(t){TN[t.name]||EM(t,e)}),r=e.add(bD()),i=MF({enter:{x:{value:0},y:{value:0}},update:{width:{signal:"width"},height:{signal:"height"}}},t.encode),i=e.add(wD(DF(i,PF,AF,t.style,e,{pulse:DM(r)}))),o=e.add(qD({layout:e.objectProperty(t.layout),legends:e.legends,autosize:e.signalRef("autosize"),mark:a,pulse:DM(i)})),e.operators.pop(),e.pushState(DM(i),DM(o),null),zN(t,e,!0),e.operators.push(o),n=e.add(yD({mark:a,pulse:DM(o)})),n=e.add(BD({pulse:DM(n)})),n=e.add(LD({pulse:DM(n)})),e.addData("root",new gN(e,r,r,n)),e}(t,new $N(LN([e,t.config]))).toRuntime()};Object(Mt.o)(Ai,r,i,a,u,s,c,l,f,h,d);var JN=n(9),ZN=n(10),QN=n.n(ZN),KN=n(11),tz=n.n(KN),ez=n(3),nz=n.n(ez);function rz(t){return!!t.or}function iz(t){return!!t.and}function oz(t){return!!t.not}function az(t,e){return oz(t)?{not:az(t.not,e)}:iz(t)?{and:t.and.map(t=>az(t,e))}:rz(t)?{or:t.or.map(t=>az(t,e))}:e(t)}const uz=tz.a,sz=QN.a;function cz(t,e){const n={};for(const r of e)t.hasOwnProperty(r)&&(n[r]=t[r]);return n}function lz(t,e){const n=Object.assign({},t);for(const t of e)delete n[t];return n}Set.prototype.toJSON=function(){return`Set(${[...this].map(t=>nz()(t)).join(",")})`};const fz=nz.a;function hz(t){if(Object(Mt.D)(t))return t;const e=Object(Mt.G)(t)?t:nz()(t);if(e.length<250)return e;let n=0;for(let t=0;t<e.length;t++){n=(n<<5)-n+e.charCodeAt(t),n&=n}return n}function dz(t){return!1===t||null===t}function pz(t,e){return t.indexOf(e)>-1}function gz(t,e){let n=0;for(const[r,i]of t.entries())if(e(i,r,n++))return!0;return!1}function mz(t,e){let n=0;for(const[r,i]of t.entries())if(!e(i,r,n++))return!1;return!0}function vz(t){return[].concat(...t)}function yz(t,...e){for(const n of e)t=bz(t,n);return t}function bz(t,e){if("object"!=typeof e||null===e)return t;for(const n in e)e.hasOwnProperty(n)&&void 0!==e[n]&&("object"!=typeof e[n]||Object(Mt.z)(e[n])||null===e[n]?t[n]=e[n]:"object"!=typeof t[n]||null===t[n]?t[n]=yz(Object(Mt.z)(e[n].constructor)?[]:{},e[n]):yz(t[n],e[n]));return t}function xz(t,e){const n=[],r={};let i;for(const o of t)(i=e(o))in r||(r[i]=1,n.push(o));return n}function _z(t,e){for(const n of t)if(e.has(n))return!0;return!1}function wz(t){const e=new Set;for(const n of t){const t=Object(Mt.V)(n).map((t,e)=>0===e?t:`[${t}]`);t.map((e,n)=>t.slice(0,n+1).join("")).forEach(t=>e.add(t))}return e}function Oz(t,e){return _z(wz(t),wz(e))}const kz=Object.keys;function Az(t){const e=[];for(const n in t)t.hasOwnProperty(n)&&e.push(t[n]);return e}function Ez(t){return kz(t)}function jz(t){return!0===t||!1===t}function Sz(t){const e=t.replace(/\W/g,"_");return(t.match(/^\d+/)?"_":"")+e}function Cz(t,e){return oz(t)?"!("+Cz(t.not,e)+")":iz(t)?"("+t.and.map(t=>Cz(t,e)).join(") && (")+")":rz(t)?"("+t.or.map(t=>Cz(t,e)).join(") || (")+")":e(t)}function Mz(t,e){if(0===e.length)return!0;const n=e.shift();return Mz(t[n],e)&&delete t[n],0===kz(t).length}function Dz(t){return t.charAt(0).toUpperCase()+t.substr(1)}function Fz(t,e="datum"){const n=Object(Mt.V)(t),r=[];for(let t=1;t<=n.length;t++){const i=`[${n.slice(0,t).map(Mt.W).join("][")}]`;r.push(`${e}${i}`)}return r.join(" && ")}function Nz(t){return`${Object(Mt.V)(t).map(t=>t.replace(".","\\.")).join("\\.")}`}function zz(t){return`${Object(Mt.V)(t).join(".")}`}function Tz(t){return t?Object(Mt.V)(t).length:0}function $z(...t){for(const e of t)if(void 0!==e)return e}let Rz=42;function Bz(t){const e=++Rz;return t?String(t)+e:e}function Pz(t){return(t%360+360)%360}const Lz="area",Uz="bar",qz="line",Iz="point",Wz="rect",Hz="rule",Gz="text",Yz="tick",Vz="trail",Xz="circle",Jz="square",Zz="geoshape",Qz={area:1,bar:1,line:1,point:1,text:1,tick:1,trail:1,rect:1,geoshape:1,rule:1,circle:1,square:1};function Kz(t){return pz(["line","area","trail"],t)}const tT=Ez(Qz);function eT(t){return t.type}Object(Mt.ab)(tT);const nT=[].concat(["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit"],["fill","fillOpacity"]),rT=["filled","color","tooltip"];function iT(t){return!!t.mark}class oT{constructor(t,e){this.name=t,this.run=e}hasMatchingType(t){return!!iT(t)&&(eT(e=t.mark)?e.type:e)===this.name;var e}}const aT={argmax:1,argmin:1,average:1,count:1,distinct:1,max:1,mean:1,median:1,min:1,missing:1,q1:1,q3:1,ci0:1,ci1:1,stderr:1,stdev:1,stdevp:1,sum:1,valid:1,values:1,variance:1,variancep:1};function uT(t){return!!t&&!!t.argmin}function sT(t){return!!t&&!!t.argmax}Ez(aT);function cT(t){return Object(Mt.G)(t)&&!!aT[t]}const lT=["count","valid","missing","distinct"];function fT(t){return t&&Object(Mt.G)(t)&&pz(lT,t)}const hT=["count","sum","distinct","valid","missing"],dT=Object(Mt.ab)(["mean","average","median","q1","q3","min","max"]),pT="row",gT="column",mT="facet",vT="x",yT="y",bT="x2",xT="y2",_T="latitude",wT="longitude",OT="latitude2",kT="longitude2",AT="color",ET="fill",jT="stroke",ST="shape",CT="size",MT="opacity",DT="fillOpacity",FT="strokeOpacity",NT="strokeWidth",zT="text",TT="order",$T="detail",RT="key",BT="tooltip",PT="href";const LT={longitude:1,longitude2:1,latitude:1,latitude2:1},UT=Ez(LT),qT=Object.assign({x:1,y:1,x2:1,y2:1},LT,{color:1,fill:1,stroke:1,opacity:1,fillOpacity:1,strokeOpacity:1,strokeWidth:1,size:1,shape:1,order:1,text:1,detail:1,key:1,tooltip:1,href:1});function IT(t){return"color"===t||"fill"===t||"stroke"===t}const WT={row:1,column:1,facet:1},HT=Ez(WT),GT=Object.assign({},qT,WT),YT=Ez(GT),{order:VT,detail:XT}=GT,JT=b(GT,["order","detail"]),{order:ZT,detail:QT,row:KT,column:t$,facet:e$}=GT,n$=b(GT,["order","detail","row","column","facet"]);Ez(JT),Ez(n$);function r$(t){return!!n$[t]}function i$(t){return!!GT[t]}const o$=["x2","y2","latitude2","longitude2"];function a$(t){return u$(t)!==t}function u$(t){switch(t){case"x2":return"x";case"y2":return"y";case"latitude2":return"latitude";case"longitude2":return"longitude"}return t}Ez(qT);const{x:s$,y:c$,x2:l$,y2:f$,latitude:h$,longitude:d$,latitude2:p$,longitude2:g$}=qT,m$=b(qT,["x","y","x2","y2","latitude","longitude","latitude2","longitude2"]),v$=Ez(m$),y$={x:1,y:1},b$=Ez(y$),{text:x$,tooltip:_$,href:w$,detail:O$,key:k$,order:A$}=m$,E$=b(m$,["text","tooltip","href","detail","key","order"]),j$=Ez(E$);const S$=Object.assign({},y$,E$),C$=Ez(S$);function M$(t){return!!S$[t]}function D$(t,e){return function(t){switch(t){case AT:case ET:case jT:case $T:case RT:case BT:case PT:case TT:case MT:case DT:case FT:case NT:case mT:case pT:case gT:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",rect:"always",line:"always",trail:"always",area:"always",text:"always",geoshape:"always"};case vT:case yT:case _T:case wT:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",rect:"always",line:"always",trail:"always",area:"always",text:"always"};case bT:case xT:case OT:case kT:return{rule:"always",bar:"always",rect:"always",area:"always",circle:"binned",point:"binned",square:"binned",tick:"binned"};case CT:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",text:"always",line:"always",trail:"always"};case ST:return{point:"always",geoshape:"always"};case zT:return{text:"always"}}}(t)[e]}function F$(t){switch(t){case vT:case yT:case CT:case NT:case MT:case DT:case FT:case bT:case xT:return;case mT:case pT:case gT:case ST:case zT:case BT:case PT:return"discrete";case AT:case ET:case jT:return"flexible";case _T:case wT:case OT:case kT:case $T:case RT:case TT:return}throw new Error("rangeType not implemented for "+t)}const N$="Invalid spec",z$='Autosize "fit" only works for single views and layered views.',T$='Cannot use a fixed value of "rangeStep" when "autosize" is "fit".';function $$(t){return`Cannot project a selection on encoding channel "${t}", which has no field.`}function R$(t){return`The "nearest" transform is not supported for ${t} marks.`}function B$(t){return`Selection not supported for ${t} yet`}function P$(t){return`Cannot find a selection named "${t}"`}const L$="Scale bindings are currently only supported for scales with unbinned, continuous domains.",U$="Selections bound to scales cannot be separately initialized.";function q$(t){return`Unknown repeated value "${t}".`}function I$(t){return`The "columns" property cannot be used when "${t}" has nested row/column.`}const W$="Axes cannot be shared in concatenated views yet (https://github.com/vega/vega-lite/issues/2415)",H$="Axes cannot be shared in repeated views yet (https://github.com/vega/vega-lite/issues/2415)";function G$(t){return`Unrecognized parse "${t}".`}function Y$(t,e,n){return`An ancestor parsed field "${t}" as ${n} but a child wants to parse the field as ${e}.`}function V$(t){return`Ignoring an invalid transform: ${fz(t)}.`}const X$='If "from.fields" is not specified, "as" has to be a string that specifies the key to be used for the data from the secondary source.';function J$(t){return`Layer's shared ${t.join(",")} channel ${1===t.length?"is":"are"} overriden`}function Z$(t){const{parentProjection:e,projection:n}=t;return`Layer's shared projection ${fz(e)} is overridden by a child projection ${fz(n)}.`}function Q$(t,e,n){return`Channel ${t} is a ${e}. Converted to {value: ${fz(n)}}.`}function K$(t){return`Invalid field type "${t}"`}function tR(t,e,n){return`A ${n.scaleType?`${n.scaleType} scale`:n.zeroFalse?"scale with zero=false":"scale with custom domain that excludes zero"} is used to encode ${t}'s ${e}. This can be misleading as the ${"x"===e?"width":"height"} of the ${t} can be arbitrary based on the scale domain. You may want to use point mark instead.`}function eR(t,e){return`Invalid field type "${t}" for aggregate: "${e}", using "quantitative" instead.`}function nR(t){return`Invalid aggregation operator "${t}"`}function rR(t,e){return`Missing type for channel "${t}", using "${e}" instead.`}function iR(t,e){const{fill:n,stroke:r}=e;return`Dropping color ${t} as the plot also has `+(n&&r?"fill and stroke":n?"fill":"stroke")}function oR(t,e){return`Dropping ${fz(t)} from channel "${e}" since it does not contain data field or value.`}function aR(t,e,n){return`${t}-encoding with type ${e} is deprecated. Replacing with ${n}-encoding.`}const uR="Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.";function sR(t,e,n){return`${t} dropped as it is incompatible with "${e}"${n?` when ${n}`:""}.`}function cR(t){return`${t}-encoding is dropped as ${t} is not a valid encoding channel.`}function lR(t){return`${t} encoding should be discrete (ordinal / nominal / binned).`}function fR(t){return`Facet encoding dropped as ${t.join(" and ")} ${t.length>1?"are":"is"} also specified.`}function hR(t,e){return`Using discrete channel "${t}" to encode "${e}" field can be misleading as it does not encode ${"ordinal"===e?"order":"magnitude"}.`}const dR="Bar mark should not be used with point scale when rangeStep is null. Please use band scale instead.";function pR(t,e){return`Line mark is for continuous lines and thus cannot be used with ${t&&e?"x2 and y2":t?"x2":"y2"}. We will use the rule mark (line segments) instead.`}function gR(t,e){return`Specified orient "${t}" overridden with "${e}"`}const mR="custom domain scale cannot be unioned with default field-based domain";function vR(t){return`Cannot use the scale property "${t}" with non-color channel.`}function yR(t){return`Using unaggregated domain with raw field has no effect (${fz(t)}).`}function bR(t){return`Unaggregated domain not applicable for "${t}" since it produces values outside the origin domain of the source data.`}function xR(t){return`Unaggregated domain is currently unsupported for log scale (${fz(t)}).`}function _R(t){return`Cannot apply size to non-oriented mark "${t}".`}function wR(t){return`rangeStep for "${t}" is dropped as top-level ${"x"===t?"width":"height"} is provided.`}function OR(t,e,n){return`Channel "${t}" does not work with "${e}" scale. We are using "${n}" scale instead.`}function kR(t,e){return`FieldDef does not work with "${t}" scale. We are using "${e}" scale instead.`}function AR(t,e,n){return`${n}-scale's "${e}" is dropped as it does not work with ${t} scale.`}function ER(t,e){return`Scale type "${e}" does not work with mark "${t}".`}function jR(t,e,n,r){return`Conflicting ${e.toString()} property "${t.toString()}" (${fz(n)} and ${fz(r)}). Using ${fz(n)}.`}function SR(t){return`Setting the scale to be independent for "${t}" means we also have to set the guide (axis or legend) to be independent.`}function CR(t){return`Dropping sort property ${fz(t)} as unioned domains only support boolean or op 'count'.`}const MR="Unable to merge domains",DR="Domains that should be unioned has conflicting sort properties. Sort will be set to true.",FR="Invalid channel for axis.";function NR(t){return`Cannot stack "${t}" if there is already "${t}2"`}function zR(t){return`Cannot stack non-linear scale (${t})`}function TR(t){return`Stacking is applied even though the aggregate function is non-summative ("${t}")`}function $R(t,e){return`Invalid ${t}: ${fz(e)}`}function RR(t){return`Time unit "${t}" is not supported. We are replacing it with ${t.replace("day","date")}.`}function BR(t){return`Dropping day from datetime ${fz(t)} as day cannot be combined with other units.`}function PR(t,e){return`${e?"extent ":""}${e&&t?"and ":""}${t?"center ":""}${e&&t?"are ":"is "}not needed when data are aggregated.`}function LR(t,e,n){return`${t} is not usually used with ${e} for ${n}.`}function UR(t,e){return`Continuous axis should not have customized aggregation function ${t}; ${e} already agregates the axis.`}function qR(t,e){return`Center is not needed to be specified in ${e} when extent is ${t}.`}function IR(t){return`1D error band does not support ${t}`}function WR(t){return`Channel ${t} is required for "binned" bin`}function HR(t){return`Domain for ${t} is required for threshold scale`}const GR=g,YR=Object(Mt.J)(Mt.e);let VR=YR;function XR(){return VR=YR}function JR(...t){VR.warn.apply(VR,arguments)}const ZR=2006;function QR(t){return!!(t&&(t.year||t.quarter||t.month||t.date||t.day||t.hours||t.minutes||t.seconds||t.milliseconds))}const KR=["january","february","march","april","may","june","july","august","september","october","november","december"],tB=KR.map(t=>t.substr(0,3)),eB=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],nB=eB.map(t=>t.substr(0,3));function rB(t,e=!1){const n=[];if(e&&void 0!==t.day&&kz(t).length>1&&(JR(GR.droppedDay(t)),delete(t=sz(t)).day),void 0!==t.year?n.push(t.year):void 0!==t.day?n.push(ZR):n.push(0),void 0!==t.month){const r=e?function(t){if(Object(Mt.D)(t))return(t-1).toString();{const e=t.toLowerCase(),n=KR.indexOf(e);if(-1!==n)return n+"";const r=e.substr(0,3),i=tB.indexOf(r);if(-1!==i)return i+"";throw new Error(GR.invalidTimeUnit("month",t))}}(t.month):t.month;n.push(r)}else if(void 0!==t.quarter){const r=e?function(t){if(Object(Mt.D)(t))return t>4&&JR(GR.invalidTimeUnit("quarter",t)),(t-1).toString();throw new Error(GR.invalidTimeUnit("quarter",t))}(t.quarter):t.quarter;n.push(r+"*3")}else n.push(0);if(void 0!==t.date)n.push(t.date);else if(void 0!==t.day){const r=e?function(t){if(Object(Mt.D)(t))return t%7+"";{const e=t.toLowerCase(),n=eB.indexOf(e);if(-1!==n)return n+"";const r=e.substr(0,3),i=nB.indexOf(r);if(-1!==i)return i+"";throw new Error(GR.invalidTimeUnit("day",t))}}(t.day):t.day;n.push(r+"+1")}else n.push(1);for(const e of["hours","minutes","seconds","milliseconds"])void 0!==t[e]?n.push(t[e]):n.push(0);return t.utc?`utc(${n.join(", ")})`:`datetime(${n.join(", ")})`}function iB(t){return!!t.row||!!t.column}function oB(t){return void 0!==t.facet}var aB;!function(t){t.YEAR="year",t.MONTH="month",t.DAY="day",t.DATE="date",t.HOURS="hours",t.MINUTES="minutes",t.SECONDS="seconds",t.MILLISECONDS="milliseconds",t.YEARMONTH="yearmonth",t.YEARMONTHDATE="yearmonthdate",t.YEARMONTHDATEHOURS="yearmonthdatehours",t.YEARMONTHDATEHOURSMINUTES="yearmonthdatehoursminutes",t.YEARMONTHDATEHOURSMINUTESSECONDS="yearmonthdatehoursminutesseconds",t.MONTHDATE="monthdate",t.MONTHDATEHOURS="monthdatehours",t.HOURSMINUTES="hoursminutes",t.HOURSMINUTESSECONDS="hoursminutesseconds",t.MINUTESSECONDS="minutesseconds",t.SECONDSMILLISECONDS="secondsmilliseconds",t.QUARTER="quarter",t.YEARQUARTER="yearquarter",t.QUARTERMONTH="quartermonth",t.YEARQUARTERMONTH="yearquartermonth",t.UTCYEAR="utcyear",t.UTCMONTH="utcmonth",t.UTCDAY="utcday",t.UTCDATE="utcdate",t.UTCHOURS="utchours",t.UTCMINUTES="utcminutes",t.UTCSECONDS="utcseconds",t.UTCMILLISECONDS="utcmilliseconds",t.UTCYEARMONTH="utcyearmonth",t.UTCYEARMONTHDATE="utcyearmonthdate",t.UTCYEARMONTHDATEHOURS="utcyearmonthdatehours",t.UTCYEARMONTHDATEHOURSMINUTES="utcyearmonthdatehoursminutes",t.UTCYEARMONTHDATEHOURSMINUTESSECONDS="utcyearmonthdatehoursminutesseconds",t.UTCMONTHDATE="utcmonthdate",t.UTCMONTHDATEHOURS="utcmonthdatehours",t.UTCHOURSMINUTES="utchoursminutes",t.UTCHOURSMINUTESSECONDS="utchoursminutesseconds",t.UTCMINUTESSECONDS="utcminutesseconds",t.UTCSECONDSMILLISECONDS="utcsecondsmilliseconds",t.UTCQUARTER="utcquarter",t.UTCYEARQUARTER="utcyearquarter",t.UTCQUARTERMONTH="utcquartermonth",t.UTCYEARQUARTERMONTH="utcyearquartermonth"}(aB||(aB={}));const uB={year:1,quarter:1,month:1,day:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},sB=Ez(uB);const cB={utcyear:1,utcquarter:1,utcmonth:1,utcday:1,utcdate:1,utchours:1,utcminutes:1,utcseconds:1,utcmilliseconds:1};const lB={utcyearquarter:1,utcyearquartermonth:1,utcyearmonth:1,utcyearmonthdate:1,utcyearmonthdatehours:1,utcyearmonthdatehoursminutes:1,utcyearmonthdatehoursminutesseconds:1,utcquartermonth:1,utcmonthdate:1,utcmonthdatehours:1,utchoursminutes:1,utchoursminutesseconds:1,utcminutesseconds:1,utcsecondsmilliseconds:1},fB=Object.assign({},cB,lB);function hB(t){return!!fB[t]}const dB=Object.assign({},uB,cB,{yearquarter:1,yearquartermonth:1,yearmonth:1,yearmonthdate:1,yearmonthdatehours:1,yearmonthdatehoursminutes:1,yearmonthdatehoursminutesseconds:1,quartermonth:1,monthdate:1,monthdatehours:1,hoursminutes:1,hoursminutesseconds:1,minutesseconds:1,secondsmilliseconds:1},lB);Ez(dB);function pB(t,e){const n=t.indexOf(e);return n>-1&&(e!==aB.SECONDS||0===n||"i"!==t.charAt(n-1))}function gB(t,e){const n=Fz(e),r=hB(t)?"utc":"";return rB(sB.reduce((e,i)=>(pB(t,i)&&(e[i]=function(t){return t===aB.QUARTER?`(${r}quarter(${n})-1)`:`${r}${t}(${n})`}(i)),e),{}))}function mB(t,e){if(!t)return;const n=[],r=pB(t,aB.YEAR);pB(t,aB.MONTH)&&n.push(!1!==e?"%b":"%B"),pB(t,aB.DAY)?n.push(e?"%a":"%A"):pB(t,aB.DATE)&&n.push("%d"+(r?",":"")),r&&n.push(e?"%y":"%Y");const i=[];pB(t,aB.HOURS)&&i.push("%H"),pB(t,aB.MINUTES)&&i.push("%M"),pB(t,aB.SECONDS)&&i.push("%S"),pB(t,aB.MILLISECONDS)&&i.push("%L");const o=[];return n.length>0&&o.push(n.join(" ")),i.length>0&&o.push(i.join(":")),o}function vB(t){return"day"!==t&&t.indexOf("day")>=0?(JR(GR.dayReplacedWithDate(t)),t.replace("day","date")):t}const yB={quantitative:1,ordinal:1,temporal:1,nominal:1,geojson:1};const bB="quantitative",xB="ordinal",_B="temporal",wB="nominal",OB="geojson";function kB(t){const{field:e,timeUnit:n,bin:r,aggregate:i}=t;return Object.assign({},n?{timeUnit:n}:{},r?{bin:r}:{},i?{aggregate:i}:{},{field:e})}function AB(t){return!!t&&!!t.condition}function EB(t){return!!t&&!!t.condition&&!Object(Mt.z)(t.condition)&&jB(t.condition)}function jB(t){return!(!t||!t.field&&"count"!==t.aggregate)}function SB(t){return!!t&&(!!t.field&&!!t.type||"count"===t.aggregate)}function CB(t){return jB(t)&&Object(Mt.G)(t.field)}function MB(t){return t&&"value"in t&&void 0!==t.value}function DB(t){return!(!t||!t.scale&&!t.sort)}function FB(t){return!(!t||!t.axis&&!t.stack&&!t.impute)}function NB(t){return!!t&&!!t.legend}function zB(t){return!!t&&!!t.format}function TB(t,e={}){let n=t.field;const r=e.prefix;let i=e.suffix,o="";if(function(t){return"count"===t.aggregate}(t))n=function(t){return 0===t.indexOf("__")}(a="count")?a:`__${a}`;else{let r;if(!e.nofn)if(function(t){return!!t.op}(t))r=t.op;else{const{bin:a,aggregate:u,timeUnit:s}=t;eP(a)?(r=tP(a),i=(e.binSuffix||"")+(e.suffix||"")):u?sT(u)?(o=`.${n}`,n=`argmax_${u.argmax}`):uT(u)?(o=`.${n}`,n=`argmin_${u.argmin}`):r=String(u):s&&(r=String(s))}r&&(n=n?`${r}_${n}`:r)}var a;return i&&(n=`${n}_${i}`),r&&(n=`${r}_${n}`),e.forAs?n:e.expr?function(t,e="datum"){return`${e}[${Object(Mt.W)(Object(Mt.V)(t).join("."))}]`}(n,e.expr)+o:Nz(n)+o}function $B(t){return!function(t){switch(t.type){case"nominal":case"ordinal":case"geojson":return!0;case"quantitative":return!!t.bin;case"temporal":return!1}throw new Error(GR.invalidFieldType(t.type))}(t)}function RB(t,e){const{field:n,bin:r,timeUnit:i,aggregate:o}=t;if("count"===o)return e.countTitle;if(eP(r))return`${n} (binned)`;if(i){return`${n} (${function(t){return sB.reduce((e,n)=>pB(t,n)?[...e,n]:e,[])}(i).join("-")})`}return o?sT(o)?`${n} for max ${o.argmax}`:uT(o)?`${n} for min ${o.argmin}`:`${Dz(o)} of ${n}`:n}const BB=(t,e)=>{switch(e.fieldTitle){case"plain":return t.field;case"functional":return function(t){const{aggregate:e,bin:n,timeUnit:r,field:i}=t;if(sT(e))return`${i} for argmax(${e.argmax})`;if(uT(e))return`${i} for argmin(${e.argmin})`;const o=e||r||eP(n)&&"bin";return o?o.toUpperCase()+"("+i+")":i}(t);default:return RB(t,e)}};let PB=BB;function LB(t){PB=t}function UB(t,e,{allowDisabling:n,includeDefault:r=!0}){const i=(qB(t)||{}).title,o=r?IB(t,e):void 0;return n?$z(i,t.title,o):i||t.title||o}function qB(t){return FB(t)&&t.axis?t.axis:NB(t)&&t.legend?t.legend:(e=t)&&e.header&&t.header?t.header:void 0;var e}function IB(t,e){return PB(t,e)}function WB(t){return jB(t)?t:EB(t)?t.condition:void 0}function HB(t){return jB(t)?t:EB(t)?t.condition:void 0}function GB(t,e){if(Object(Mt.G)(t)||Object(Mt.D)(t)||Object(Mt.A)(t)){const n=Object(Mt.G)(t)?"string":Object(Mt.D)(t)?"number":"boolean";return JR(GR.primitiveChannelDef(e,n,t)),{value:t}}return jB(t)?YB(t,e):EB(t)?Object.assign({},t,{condition:YB(t.condition,e)}):t}function YB(t,e){const{aggregate:n,timeUnit:r,bin:i}=t;if(n&&!cT(n)&&!sT(n)&&!uT(n)){const{aggregate:e}=t,r=b(t,["aggregate"]);JR(GR.invalidAggregate(n)),t=r}if(r&&(t=Object.assign({},t,{timeUnit:vB(r)})),eP(i)&&(t=Object.assign({},t,{bin:VB(i,e)})),nP(i)&&!pz(b$,e)&&JR(`Channel ${e} should not be used with "binned" bin`),SB(t)){const{type:e}=t,r=function(t){if(t)switch(t=t.toLowerCase()){case"q":case bB:return"quantitative";case"t":case _B:return"temporal";case"o":case xB:return"ordinal";case"n":case wB:return"nominal";case OB:return"geojson"}}(e);e!==r&&(t=Object.assign({},t,{type:r})),"quantitative"!==e&&fT(n)&&(JR(GR.invalidFieldTypeForCountAggregate(e,n)),t=Object.assign({},t,{type:"quantitative"}))}else if(!a$(e)){const n=function(t,e){if(t.timeUnit)return"temporal";if(eP(t.bin))return"quantitative";switch(F$(e)){case"continuous":return"quantitative";case"discrete":case"flexible":return"nominal";default:return"quantitative"}}(t,e);JR(GR.missingFieldType(e,n)),t=Object.assign({},t,{type:n})}if(SB(t)){const{compatible:n,warning:r}=function(t,e){const n=t.type;if("geojson"===n&&"shape"!==e)return{compatible:!1,warning:`Channel ${e} should not be used with a geojson data.`};switch(e){case"row":case"column":case"facet":return $B(t)?{compatible:!1,warning:GR.facetChannelShouldBeDiscrete(e)}:XB;case"x":case"y":case"color":case"fill":case"stroke":case"text":case"detail":case"key":case"tooltip":case"href":return XB;case"longitude":case"longitude2":case"latitude":case"latitude2":return n!==bB?{compatible:!1,warning:`Channel ${e} should be used with a quantitative field only, not ${t.type} field.`}:XB;case"opacity":case"fillOpacity":case"strokeOpacity":case"strokeWidth":case"size":case"x2":case"y2":return"nominal"!==n||t.sort?XB:{compatible:!1,warning:`Channel ${e} should not be used with an unsorted discrete field.`};case"shape":return pz(["ordinal","nominal","geojson"],t.type)?XB:{compatible:!1,warning:"Shape channel should be used with only either discrete or geojson data."};case"order":return"nominal"!==t.type||"sort"in t?XB:{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}}throw new Error("channelCompatability not implemented for channel "+e)}(t,e);n||JR(r)}return t}function VB(t,e){return Object(Mt.A)(t)?{maxbins:iP(e)}:"binned"===t?{binned:!0}:t.maxbins||t.step?t:Object.assign({},t,{maxbins:iP(e)})}const XB={compatible:!0};function JB(t){const e=FB(t)&&t.axis&&t.axis.formatType||NB(t)&&t.legend&&t.legend.formatType||zB(t)&&t.formatType;return"time"===e||!e&&function(t){return"temporal"===t.type||!!t.timeUnit}(t)}function ZB(t,{timeUnit:e,type:n,time:r,undefinedIfExprNotRequired:i}){let o;var a;return QR(t)?o=rB(t,!0):(Object(Mt.G)(t)||Object(Mt.D)(t))&&(e||"temporal"===n)&&(o=function(t){return!!uB[t]}(e)?rB({[e]:t},!0):function(t){return!!cB[t]}(e)?ZB(t,{timeUnit:(a=e,a.substr(3))}):`datetime(${JSON.stringify(t)})`),o?r?`time(${o})`:o:i?void 0:JSON.stringify(t)}function QB(t,e){const{timeUnit:n,type:r}=t;return e.map(t=>{const e=ZB(t,{timeUnit:n,type:r,undefinedIfExprNotRequired:!0});return void 0!==e?{signal:e}:t})}function KB(t,e){return eP(t.bin)?M$(e)&&pz(["ordinal","nominal"],t.type):(console.warn("Only use this method with binned field defs"),!1)}function tP(t){return Object(Mt.A)(t)&&(t=VB(t,void 0)),"bin"+kz(t).map(e=>Sz(`_${e}_${t[e]}`)).join("")}function eP(t){return!0===t||rP(t)&&!t.binned}function nP(t){return"binned"===t||rP(t)&&t.binned}function rP(t){return Object(Mt.E)(t)}function iP(t){switch(t){case pT:case gT:case CT:case AT:case ET:case jT:case NT:case MT:case DT:case FT:case ST:return 6;default:return 10}}function oP(t,e){const n=t&&t[e];return!!n&&(Object(Mt.z)(n)?gz(n,t=>!!t.field):jB(n)||EB(n))}function aP(t){return gz(YT,e=>{if(oP(t,e)){const n=t[e];if(Object(Mt.z)(n))return gz(n,t=>!!t.aggregate);{const t=WB(n);return t&&!!t.aggregate}}return!1})}function uP(t,e){const n=[],r=[],i=[],o=[],a={};return lP(t,(u,s)=>{if(jB(u)){const{field:c,aggregate:l,timeUnit:f,bin:h}=u,d=b(u,["field","aggregate","timeUnit","bin"]);if(l||f||h){const t=qB(u),p=t&&t.title;let g=TB(u,{forAs:!0});const m=Object.assign({},p?[]:{title:UB(u,e,{allowDisabling:!0})},d,{field:g}),v="x"===s||"y"===s;if(l){let t;if(sT(l)?(t="argmax",g=TB({aggregate:"argmax",field:l.argmax},{forAs:!0}),m.field=`${g}.${c}`):uT(l)?(t="argmin",g=TB({aggregate:"argmin",field:l.argmin},{forAs:!0}),m.field=`${g}.${c}`):"boxplot"!==l&&"errorbar"!==l&&"errorband"!==l&&(t=l),t){const e={op:t,as:g};c&&(e.field=c),o.push(e)}}else if(SB(u)&&eP(h)){if(r.push({bin:h,field:c,as:g}),n.push(TB(u,{binSuffix:"end"})),KB(u,s)&&n.push(TB(u,{binSuffix:"range"})),v){const t={field:g+"_end"};a[s+"2"]=t}m.bin="binned",a$(s)||(m.type="quantitative")}else if(f){i.push({timeUnit:f,field:c,as:g});const t=mB(f,e.axis.shortTimeLabels).join(" "),n=SB(u)&&u.type!==_B&&"time";"text"===s||"tooltip"===s?(m.format=m.format||t,n&&(m.formatType=n)):!function(t){return!!m$[t]}(s)?v&&(m.axis=Object.assign({format:t},n?{formatType:n}:{},m.axis)):m.legend=Object.assign({format:t},n?{formatType:n}:{},m.legend)}l||n.push(g),a[s]=m}else n.push(c),a[s]=t[s]}else a[s]=t[s]}),{bins:r,timeUnits:i,aggregate:o,groupby:n,encoding:a}}function sP(t,e){return kz(t).reduce((n,r)=>{if(!i$(r))return JR(GR.invalidEncodingChannel(r)),n;if(!function(t,e,n){const r=D$(e,n);if(!r)return!1;if("binned"===r){const n=t["x2"===e?"x":"y"];return!(!jB(n)||!jB(t[e])||"binned"!==n.bin)}return!0}(t,r,e))return JR(GR.incompatibleChannel(r,e)),n;if("size"===r&&"line"===e){const e=HB(t[r]);if(e&&e.aggregate)return JR(GR.LINE_WITH_VARYING_SIZE),n}if("color"===r&&("fill"in t||"stroke"in t))return JR(GR.droppingColor("encoding",{fill:"fill"in t,stroke:"stroke"in t})),n;const i=t[r];if("detail"===r||"order"===r&&!Object(Mt.z)(i)&&!MB(i)||"tooltip"===r&&Object(Mt.z)(i))i&&(n[r]=(Object(Mt.z)(i)?i:[i]).reduce((t,e)=>(jB(e)?t.push(YB(e,r)):JR(GR.emptyFieldDef(e,r)),t),[]));else{if("tooltip"===r&&null===i)n[r]=null;else if(!jB(i)&&!MB(i)&&!AB(i))return JR(GR.emptyFieldDef(i,r)),n;n[r]=GB(i,r)}return n},{})}function cP(t){const e=[];for(const n of kz(t))if(oP(t,n)){const r=t[n];(Object(Mt.z)(r)?r:[r]).forEach(t=>{jB(t)?e.push(t):EB(t)&&e.push(t.condition)})}return e}function lP(t,e,n){if(t)for(const r of kz(t)){const i=t[r];Object(Mt.z)(i)?i.forEach(t=>{e.call(n,t,r)}):e.call(n,i,r)}}function fP(t,e,n,r){return t?kz(t).reduce((n,i)=>{const o=t[i];return Object(Mt.z)(o)?o.reduce((t,n)=>e.call(r,t,n,i),n):e.call(r,n,o,i)},n):n}function hP(t,e,n,r=!0){return{tooltip:[...t.map(({fieldPrefix:t,titlePrefix:n})=>({field:t+e.field,type:e.type,title:n+(r?" of "+e.field:"")})),...cP(n)]}}function dP(t,e,n,r,i){const{scale:o,axis:a}=n;return({partName:u,mark:s,positionPrefix:c,endPositionPrefix:l,extraEncoding:f={}})=>{const h=a&&void 0!==a.title?void 0:void 0!==n.title?n.title:n.field;return pP(t,u,i,{mark:s,encoding:Object.assign({[e]:Object.assign({field:c+"_"+n.field,type:n.type},h?{title:h}:{},o?{scale:o}:{},a?{axis:a}:{})},Object(Mt.G)(l)?{[e+"2"]:{field:l+"_"+n.field,type:n.type}}:{},r,f)})}}function pP(t,e,n,r){const{clip:i,color:o,opacity:a}=t,u=t.type;return t[e]||void 0===t[e]&&n[e]?[Object.assign({},r,{mark:Object.assign({},n[e],i?{clip:i}:{},o?{color:o}:{},a?{opacity:a}:{},eT(r.mark)?r.mark:{type:r.mark},{style:`${u}-${e}`},Object(Mt.A)(t[e])?{}:t[e])})]:[]}function gP(t,e,n){const{encoding:r}=t,i="vertical"===e?"y":"x",o=r[i],a=r[i+"2"],u=r[i+"Error"],s=r[i+"Error2"];return{continuousAxisChannelDef:mP(o,n),continuousAxisChannelDef2:mP(a,n),continuousAxisChannelDefError:mP(u,n),continuousAxisChannelDefError2:mP(s,n),continuousAxis:i}}function mP(t,e){if(t&&t.aggregate){const{aggregate:n}=t,r=b(t,["aggregate"]);return n!==e&&JR(GR.errorBarContinuousAxisHasCustomizedAggregate(n,e)),r}return t}function vP(t,e){const{mark:n,encoding:r}=t;if(jB(r.x)&&$B(r.x)){if(jB(r.y)&&$B(r.y)){if(void 0===r.x.aggregate&&r.y.aggregate===e)return"vertical";if(void 0===r.y.aggregate&&r.x.aggregate===e)return"horizontal";if(r.x.aggregate===e&&r.y.aggregate===e)throw new Error("Both x and y cannot have aggregate");return eT(n)&&n.orient?n.orient:"vertical"}return"horizontal"}if(jB(r.y)&&$B(r.y))return"vertical";throw new Error("Need a valid continuous axis for "+e+"s")}const yP="boxplot",bP=kz({box:1,median:1,outliers:1,rule:1,ticks:1}),xP=new oT(yP,wP);function _P(t){return Object(Mt.D)(t)?"tukey":t}function wP(t,{config:e}){const{mark:n,encoding:r,selection:i,projection:o}=t,a=b(t,["mark","encoding","selection","projection"]),u=eT(n)?n:{type:n};i&&JR(GR.selectionNotSupported("boxplot"));const s=u.extent||e.boxplot.extent,c=$z(u.size,e.boxplot.size),l=_P(s),{transform:f,continuousAxisChannelDef:h,continuousAxis:d,groupby:p,aggregate:g,encodingWithoutContinuousAxis:m,ticksOrient:v,customTooltipWithoutAggregatedField:y}=function(t,e,n){const r=vP(t,yP),{continuousAxisChannelDef:i,continuousAxis:o}=gP(t,r,yP),a=i.field,u=_P(e),s=[...OP(a),{op:"median",field:a,as:"mid_box_"+a},{op:"min",field:a,as:("min-max"===u?"lower_whisker_":"min_")+a},{op:"max",field:a,as:("min-max"===u?"upper_whisker_":"max_")+a}],c="min-max"===u||"tukey"===u?[]:[{calculate:`datum["upper_box_${a}"] - datum["lower_box_${a}"]`,as:"iqr_"+a},{calculate:`min(datum["upper_box_${a}"] + datum["iqr_${a}"] * ${e}, datum["max_${a}"])`,as:"upper_whisker_"+a},{calculate:`max(datum["lower_box_${a}"] - datum["iqr_${a}"] * ${e}, datum["min_${a}"])`,as:"lower_whisker_"+a}],l=t.encoding,f=o,h=(l[f],b(l,["symbol"==typeof f?f:f+""])),{customTooltipWithoutAggregatedField:d,filteredEncoding:p}=function(t){const{tooltip:e}=t,n=b(t,["tooltip"]);if(!e)return{filteredEncoding:t};let r,i;return Object(Mt.z)(e)?(e.forEach(t=>{t.aggregate?(r||(r=[]),r.push(t)):(i||(i=[]),i.push(t))}),r&&(n.tooltip=r)):e.aggregate?n.tooltip=e:i=e,Object(Mt.z)(i)&&1===i.length&&(i=i[0]),{customTooltipWithoutAggregatedField:i,filteredEncoding:n}}(h),{bins:g,timeUnits:m,aggregate:v,groupby:y,encoding:x}=uP(p,n),_="vertical"===r?"horizontal":"vertical";return{transform:[...g,...m,{aggregate:[...v,...s],groupby:y},...c],groupby:y,aggregate:v,continuousAxisChannelDef:i,continuousAxis:o,encodingWithoutContinuousAxis:x,ticksOrient:_,customTooltipWithoutAggregatedField:d}}(t,s,e),{color:x,size:_}=m,w=b(m,["color","size"]),O=t=>dP(u,d,h,t,e.boxplot),k=O(w),A=O(m),E=O(Object.assign({},w,_?{size:_}:{})),j=hP([{fieldPrefix:"min-max"===l?"upper_whisker_":"max_",titlePrefix:"Max"},{fieldPrefix:"upper_box_",titlePrefix:"Q3"},{fieldPrefix:"mid_box_",titlePrefix:"Median"},{fieldPrefix:"lower_box_",titlePrefix:"Q1"},{fieldPrefix:"min-max"===l?"lower_whisker_":"min_",titlePrefix:"Min"}],h,m),S={type:"tick",color:"black",opacity:1,orient:v},C="min-max"===l?j:hP([{fieldPrefix:"upper_whisker_",titlePrefix:"Upper Whisker"},{fieldPrefix:"lower_whisker_",titlePrefix:"Lower Whisker"}],h,m),M=[...k({partName:"rule",mark:"rule",positionPrefix:"lower_whisker",endPositionPrefix:"lower_box",extraEncoding:C}),...k({partName:"rule",mark:"rule",positionPrefix:"upper_box",endPositionPrefix:"upper_whisker",extraEncoding:C}),...k({partName:"ticks",mark:S,positionPrefix:"lower_whisker",extraEncoding:C}),...k({partName:"ticks",mark:S,positionPrefix:"upper_whisker",extraEncoding:C})],D=[..."tukey"!==l?M:[],...A({partName:"box",mark:Object.assign({type:"bar"},c?{size:c}:{}),positionPrefix:"lower_box",endPositionPrefix:"upper_box",extraEncoding:j}),...E({partName:"median",mark:Object.assign({type:"tick"},Object(Mt.E)(e.boxplot.median)&&e.boxplot.median.color?{color:e.boxplot.median.color}:{},c?{size:c}:{},{orient:v}),positionPrefix:"mid_box",extraEncoding:j})];let F;if("min-max"!==l){const t=`datum["lower_box_${h.field}"]`,n=`datum["upper_box_${h.field}"]`,r=`(${n} - ${t})`,i=`${t} - ${s} * ${r}`,o=`${n} + ${s} * ${r}`,a=`datum["${h.field}"]`,c={joinaggregate:OP(h.field),groupby:p};let f=void 0;"tukey"===l&&(f={transform:[{filter:`(${i} <= ${a}) && (${a} <= ${o})`},{aggregate:[{op:"min",field:h.field,as:"lower_whisker_"+h.field},{op:"max",field:h.field,as:"upper_whisker_"+h.field},{op:"min",field:"lower_box_"+h.field,as:"lower_box_"+h.field},{op:"max",field:"upper_box_"+h.field,as:"upper_box_"+h.field},...g],groupby:p}],layer:M});const{tooltip:m}=w,v=b(w,["tooltip"]),x=pP(u,"outliers",e.boxplot,{transform:[{filter:`(${a} < ${i}) || (${a} > ${o})`}],mark:"point",encoding:Object.assign({[d]:{field:h.field,type:h.type}},v,y?{tooltip:y}:{})})[0];x&&f?F={transform:[c],layer:[x,f]}:x?(F=x).transform.unshift(c):f&&(F=f).transform.unshift(c)}return F?Object.assign({},a,{layer:[...F?[F]:[],{transform:f,layer:D}]}):Object.assign({},a,{transform:(a.transform||[]).concat(f),layer:D})}function OP(t){return[{op:"q1",field:t,as:"lower_box_"+t},{op:"q3",field:t,as:"upper_box_"+t}]}const kP="errorbar",AP=kz({ticks:1,rule:1}),EP=new oT(kP,jP);function jP(t,{config:e}){const{transform:n,continuousAxisChannelDef:r,continuousAxis:i,encodingWithoutContinuousAxis:o,ticksOrient:a,markDef:u,outerSpec:s,tooltipEncoding:c}=CP(t,kP,e),l=dP(u,i,r,o,e.errorbar),f={type:"tick",orient:a};return Object.assign({},s,{transform:n,layer:[...l({partName:"ticks",mark:f,positionPrefix:"lower",extraEncoding:c}),...l({partName:"ticks",mark:f,positionPrefix:"upper",extraEncoding:c}),...l({partName:"rule",mark:"rule",positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:c})]})}function SP(t,e){const{encoding:n}=t;if(function(t){return(jB(t.x)||jB(t.y))&&!jB(t.x2)&&!jB(t.y2)&&!jB(t.xError)&&!jB(t.xError2)&&!jB(t.yError)&&!jB(t.yError2)}(n))return{orient:vP(t,e),inputType:"raw"};const r=function(t){return jB(t.x2)||jB(t.y2)}(n),i=function(t){return jB(t.xError)||jB(t.xError2)||jB(t.yError)||jB(t.yError2)}(n),o=n.x,a=n.y;if(r){if(i)throw new Error(e+" cannot be both type aggregated-upper-lower and aggregated-error");const t=n.x2,r=n.y2;if(jB(t)&&jB(r))throw new Error(e+" cannot have both x2 and y2");if(jB(t)){if(jB(o)&&$B(o))return{orient:"horizontal",inputType:"aggregated-upper-lower"};throw new Error("Both x and x2 have to be quantitative in "+e)}if(jB(r)){if(jB(a)&&$B(a))return{orient:"vertical",inputType:"aggregated-upper-lower"};throw new Error("Both y and y2 have to be quantitative in "+e)}throw new Error("No ranged axis")}{const t=n.xError,r=n.xError2,i=n.yError,u=n.yError2;if(jB(r)&&!jB(t))throw new Error(e+" cannot have xError2 without xError");if(jB(u)&&!jB(i))throw new Error(e+" cannot have yError2 without yError");if(jB(t)&&jB(i))throw new Error(e+" cannot have both xError and yError with both are quantiative");if(jB(t)){if(jB(o)&&$B(o))return{orient:"horizontal",inputType:"aggregated-error"};throw new Error("All x, xError, and xError2 (if exist) have to be quantitative")}if(jB(i)){if(jB(a)&&$B(a))return{orient:"vertical",inputType:"aggregated-error"};throw new Error("All y, yError, and yError2 (if exist) have to be quantitative")}throw new Error("No ranged axis")}}function CP(t,e,n){const{mark:r,encoding:i,selection:o,projection:a}=t,u=b(t,["mark","encoding","selection","projection"]),s=eT(r)?r:{type:r};o&&JR(GR.selectionNotSupported(e));const{orient:c,inputType:l}=SP(t,e),{continuousAxisChannelDef:f,continuousAxisChannelDef2:h,continuousAxisChannelDefError:d,continuousAxisChannelDefError2:p,continuousAxis:g}=gP(t,c,e),{errorBarSpecificAggregate:m,postAggregateCalculates:v,tooltipSummary:y,tooltipTitleWithFieldName:x}=function(t,e,n,r,i,o,a,u){let s=[],c=[];const l=e.field;let f,h=!1;if("raw"===o){const e=t.center?t.center:t.extent?"iqr"===t.extent?"median":"mean":u.errorbar.center,n=t.extent?t.extent:"mean"===e?"stderr":"iqr";if("median"===e!=("iqr"===n)&&JR(GR.errorBarCenterIsUsedWithWrongExtent(e,n,a)),"stderr"===n||"stdev"===n)s=[{op:n,field:l,as:"extent_"+l},{op:e,field:l,as:"center_"+l}],c=[{calculate:`datum["center_${l}"] + datum["extent_${l}"]`,as:"upper_"+l},{calculate:`datum["center_${l}"] - datum["extent_${l}"]`,as:"lower_"+l}],f=[{fieldPrefix:"center_",titlePrefix:Dz(e)},{fieldPrefix:"upper_",titlePrefix:MP(e,n,"+")},{fieldPrefix:"lower_",titlePrefix:MP(e,n,"-")}],h=!0;else{let e,r,i;t.center&&t.extent&&JR(GR.errorBarCenterIsNotNeeded(t.extent,a)),"ci"===n?(e="mean",r="ci0",i="ci1"):(e="median",r="q1",i="q3"),s=[{op:r,field:l,as:"lower_"+l},{op:i,field:l,as:"upper_"+l},{op:e,field:l,as:"center_"+l}],f=[{fieldPrefix:"upper_",titlePrefix:UB({field:l,aggregate:i,type:"quantitative"},u,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:UB({field:l,aggregate:r,type:"quantitative"},u,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:UB({field:l,aggregate:e,type:"quantitative"},u,{allowDisabling:!1})}]}}else{(t.center||t.extent)&&JR(GR.errorBarCenterAndExtentAreNotNeeded(t.center,t.extent)),"aggregated-upper-lower"===o?(f=[],c=[{calculate:`datum["${n.field}"]`,as:"upper_"+l},{calculate:`datum["${l}"]`,as:"lower_"+l}]):"aggregated-error"===o&&(f=[{fieldPrefix:"",titlePrefix:l}],c=[{calculate:`datum["${l}"] + datum["${r.field}"]`,as:"upper_"+l}],i?c.push({calculate:`datum["${l}"] + datum["${i.field}"]`,as:"lower_"+l}):c.push({calculate:`datum["${l}"] - datum["${r.field}"]`,as:"lower_"+l}));for(const t of c)f.push({fieldPrefix:t.as.substring(0,6),titlePrefix:t.calculate.replace(new RegExp('datum\\[\\"',"g"),"").replace(new RegExp('\\"\\]',"g"),"")})}return{postAggregateCalculates:c,errorBarSpecificAggregate:s,tooltipSummary:f,tooltipTitleWithFieldName:h}}(s,f,h,d,p,l,e,n),_=g,w=(i[_],"x"===g?"x2":"y2"),O=(i[w],"x"===g?"xError":"yError"),k=(i[O],"x"===g?"xError2":"yError2"),A=(i[k],b(i,["symbol"==typeof _?_:_+"","symbol"==typeof w?w:w+"","symbol"==typeof O?O:O+"","symbol"==typeof k?k:k+""])),{bins:E,timeUnits:j,aggregate:S,groupby:C,encoding:M}=uP(A,n),D=[...S,...m],F="raw"!==l?[]:C,N=hP(y,f,M,x);return{transform:[...u.transform||[],...E,...j,...D.length?[{aggregate:D,groupby:F}]:[],...v],groupby:F,continuousAxisChannelDef:f,continuousAxis:g,encodingWithoutContinuousAxis:M,ticksOrient:"vertical"===c?"horizontal":"vertical",markDef:s,outerSpec:u,tooltipEncoding:N}}function MP(t,e,n){return Dz(t)+" "+n+" "+e}const DP="errorband",FP=kz({band:1,borders:1}),NP=new oT(DP,zP);function zP(t,{config:e}){const{transform:n,continuousAxisChannelDef:r,continuousAxis:i,encodingWithoutContinuousAxis:o,markDef:a,outerSpec:u,tooltipEncoding:s}=CP(t,DP,e),c=a,l=dP(c,i,r,o,e.errorband),f=void 0!==t.encoding.x&&void 0!==t.encoding.y;let h={type:f?"area":"rect"},d={type:f?"line":"rule"};const p=Object.assign({},c.interpolate?{interpolate:c.interpolate}:{},c.tension&&c.interpolate?{interpolate:c.tension}:{});return f?(h=Object.assign({},h,p),d=Object.assign({},d,p)):c.interpolate?JR(GR.errorBand1DNotSupport("interpolate")):c.tension&&JR(GR.errorBand1DNotSupport("tension")),Object.assign({},u,{transform:n,layer:[...l({partName:"band",mark:h,positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:s}),...l({partName:"borders",mark:d,positionPrefix:"lower",extraEncoding:s}),...l({partName:"borders",mark:d,positionPrefix:"upper",extraEncoding:s})]})}const TP={};function $P(t,e,n){const r=new oT(t,e);TP[t]={normalizer:r,parts:n}}$P(yP,wP,bP),$P(kP,jP,AP),$P(DP,zP,FP);const RP=["shortTimeLabels"],BP=["gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength"],PP={clipHeight:1,columnPadding:1,columns:1,cornerRadius:1,direction:1,fillColor:1,format:1,formatType:1,gradientLength:1,gradientOpacity:1,gradientStrokeColor:1,gradientStrokeWidth:1,gradientThickness:1,gridAlign:1,labelAlign:1,labelBaseline:1,labelColor:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labelSeparation:1,legendX:1,legendY:1,offset:1,orient:1,padding:1,rowPadding:1,strokeColor:1,symbolDash:1,symbolDashOffset:1,symbolFillColor:1,symbolOffset:1,symbolOpacity:1,symbolSize:1,symbolStrokeColor:1,symbolStrokeWidth:1,symbolType:1,tickCount:1,tickMinStep:1,title:1,titleAlign:1,titleAnchor:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1},LP=Object.assign({},PP,{opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,encode:1}),UP=Ez(PP),qP=Ez(LP);var IP;!function(t){t.LINEAR="linear",t.LOG="log",t.POW="pow",t.SQRT="sqrt",t.SYMLOG="symlog",t.TIME="time",t.UTC="utc",t.QUANTILE="quantile",t.QUANTIZE="quantize",t.THRESHOLD="threshold",t.BIN_ORDINAL="bin-ordinal",t.ORDINAL="ordinal",t.POINT="point",t.BAND="band"}(IP||(IP={}));const WP={linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"},HP=kz(WP);function GP(t,e){const n=WP[t],r=WP[e];return n===r||"ordinal-position"===n&&"time"===r||"ordinal-position"===r&&"time"===n}const YP={linear:0,log:1,pow:1,sqrt:1,symlog:1,time:0,utc:0,point:10,band:11,ordinal:0,"bin-ordinal":0,quantile:0,quantize:0,threshold:0};function VP(t){return YP[t]}const XP=["linear","log","pow","sqrt","symlog","time","utc"],JP=Object(Mt.ab)(XP),ZP=Object(Mt.ab)(["quantile","quantize","threshold"]),QP=XP.concat(["quantile","quantize","threshold"]),KP=Object(Mt.ab)(QP),tL=Object(Mt.ab)(["ordinal","bin-ordinal","point","band"]);function eL(t){return t in tL}function nL(t){return t in KP}function rL(t){return t in JP}function iL(t){return t in ZP}const oL={textXRangeStep:90,rangeStep:20,pointPadding:.5,barBandPaddingInner:.1,rectBandPaddingInner:0,minBandSize:2,minFontSize:8,maxFontSize:40,minOpacity:.3,maxOpacity:.8,minSize:9,minStrokeWidth:1,maxStrokeWidth:4,quantileCount:4,quantizeCount:4};function aL(t){return t&&t.selection}const uL={type:1,domain:1,range:1,rangeStep:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1},{type:sL,domain:cL,range:lL,rangeStep:fL,scheme:hL}=(Ez(uL),uL),dL=Ez(b(uL,["type","domain","range","rangeStep","scheme"]));!function(){const t={};for(const e of YT)for(const n of kz(yB))for(const r of HP){const i=yL(e,n);vL(e,r)&&mL(r,n)&&(t[i]=t[i]||[],t[i].push(r))}}();function pL(t,e){switch(e){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!pz(["point","band","identity"],t);case"bins":return!pz(["point","band","identity","ordinal"],t);case"round":return rL(t)||"band"===t||"point"===t;case"padding":return rL(t)||pz(["point","band"],t);case"paddingOuter":case"rangeStep":return pz(["point","band"],t);case"paddingInner":return"band"===t;case"clamp":return rL(t);case"nice":return rL(t)||"quantize"===t||"threshold"===t;case"exponent":return"pow"===t;case"base":return"log"===t;case"constant":return"symlog"===t;case"zero":return nL(t)&&!pz(["log","time","utc","threshold","quantile"],t)}throw new Error(`Invalid scale property ${e}.`)}function gL(t,e){switch(e){case"interpolate":case"scheme":return IT(t)?void 0:GR.cannotUseScalePropertyWithNonColor(t);case"type":case"bins":case"domain":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeStep":case"reverse":case"round":case"clamp":case"zero":return}throw new Error(`Invalid scale property "${e}".`)}function mL(t,e){return pz([xB,wB],e)?void 0===t||eL(t):e===_B?pz([IP.TIME,IP.UTC,void 0],t):e!==bB||pz([IP.LOG,IP.POW,IP.SQRT,IP.SYMLOG,IP.QUANTILE,IP.QUANTIZE,IP.THRESHOLD,IP.LINEAR,void 0],t)}function vL(t,e){switch(t){case vT:case yT:return rL(e)||pz(["band","point"],e);case CT:case NT:case MT:case DT:case FT:return rL(e)||iL(e)||pz(["band","point"],e);case AT:case ET:case jT:return"band"!==e;case ST:return"ordinal"===e}return!1}function yL(t,e){return t+"_"+e}const bL="_vgsid_";function xL(t){return"interval"===t.type}const _L={single:{on:"click",fields:[bL],resolve:"global",empty:"all",clear:"dblclick"},multi:{on:"click",fields:[bL],toggle:"event.shiftKey",resolve:"global",empty:"all",clear:"dblclick"},interval:{on:"[mousedown, window:mouseup] > window:mousemove!",encodings:["x","y"],translate:"[mousedown, window:mouseup] > window:mousemove!",zoom:"wheel!",mark:{fill:"#333",fillOpacity:.125,stroke:"white"},resolve:"global",clear:"dblclick"}};function wL(t){return void 0!==t.concat}function OL(t){return void 0!==t.vconcat}function kL(t){return void 0!==t.hconcat}function AL(t){return void 0!==t.repeat}const EL=Ez({align:1,bounds:1,center:1,columns:1,spacing:1});function jL(t){const{anchor:e,frame:n,offset:r,orient:i,color:o}=t,a=b(t,["anchor","frame","offset","orient","color"]);return{mark:Object.assign({},a,o?{fill:o}:{}),nonMark:Object.assign({},e?{anchor:e}:{},n?{frame:n}:{},r?{offset:r}:{},i?{orient:i}:{})}}const SL={padding:5,timeFormat:"%b %d, %Y",countTitle:"Count of Records",invalidValues:"filter",view:{width:200,height:200},mark:{color:"#4c78a8",tooltip:{content:"encoding"}},area:{},bar:{binSpacing:1,continuousBandSize:5},circle:{},geoshape:{},line:{},point:{},rect:{},rule:{color:"black"},square:{},text:{color:"black"},tick:{thickness:1},trail:{},boxplot:{size:14,extent:1.5,box:{},median:{color:"white"},outliers:{},rule:{},ticks:null},errorbar:{center:"mean",rule:!0,ticks:!1},errorband:{band:{opacity:.3},borders:!1},scale:oL,projection:{},axis:{},axisX:{},axisY:{},axisLeft:{},axisRight:{},axisTop:{},axisBottom:{},axisBand:{},legend:{gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64},header:{titlePadding:10,labelPadding:10},headerColumn:{},headerRow:{},headerFacet:{},selection:_L,style:{},title:{},facet:{spacing:20},repeat:{spacing:20},concat:{spacing:20}};function CL(t){return yz(sz(SL),t)}const ML=["view",...tT],DL=["padding","facet","concat","repeat","numberFormat","timeFormat","countTitle","header","stack","scale","selection","invalidValues","overlay"],FL=Object.assign({view:["width","height"]},{area:["line","point"],bar:["binSpacing","continuousBandSize","discreteBandSize"],line:["point"],text:["shortTimeLabels"],tick:["bandSize","thickness"]});function NL(t){t=sz(t);for(const e of DL)delete t[e];if(t.axis)for(const e of RP)delete t.axis[e];if(t.legend){for(const e of RP)delete t.legend[e];for(const e of BP)delete t.legend[e]}if(t.mark)for(const e of rT)delete t.mark[e];for(const e of ML){for(const n of rT)delete t[e][n];const n=FL[e];if(n)for(const r of n)delete t[e][r];zL(t,e)}for(const e of kz(TP))delete t[e];zL(t,"title","group-title");for(const e in t)Object(Mt.E)(t[e])&&0===kz(t[e]).length&&delete t[e];return kz(t).length>0?t:void 0}function zL(t,e,n,r){const i="title"===e?jL(t.title).mark:r?t[e][r]:t[e];"view"===e&&(n="cell");const o=Object.assign({},i,t.style[e]);kz(o).length>0&&(t.style[n||e]=o),r||delete t[e]}function TL(t){return void 0!==t.layer}class $L{map(t,e){return oB(t)?this.mapFacet(t,e):AL(t)?this.mapRepeat(t,e):kL(t)?this.mapHConcat(t,e):OL(t)?this.mapVConcat(t,e):wL(t)?this.mapConcat(t,e):this.mapLayerOrUnit(t,e)}mapLayerOrUnit(t,e){if(TL(t))return this.mapLayer(t,e);if(iT(t))return this.mapUnit(t,e);throw new Error(GR.INVALID_SPEC)}mapLayer(t,e){return Object.assign({},t,{layer:t.layer.map(t=>this.mapLayerOrUnit(t,e))})}mapHConcat(t,e){return Object.assign({},t,{hconcat:t.hconcat.map(t=>this.map(t,e))})}mapVConcat(t,e){return Object.assign({},t,{vconcat:t.vconcat.map(t=>this.map(t,e))})}mapConcat(t,e){const{concat:n}=t,r=b(t,["concat"]);return Object.assign({},r,{concat:n.map(t=>this.map(t,e))})}mapFacet(t,e){return Object.assign({},t,{spec:this.map(t.spec,e)})}mapRepeat(t,e){return Object.assign({},t,{spec:this.map(t.spec,e)})}}const RL={zero:1,center:1,normalize:1};const BL=[Uz,Lz,Hz,Iz,Xz,Jz,qz,Gz,Yz],PL=[Uz,Lz];function LL(t,e,n,r={}){const i=eT(t)?t.type:t;if(!pz(BL,i))return null;const o=function(t){const e=t.x,n=t.y;if(jB(e)&&jB(n))if("quantitative"===e.type&&"quantitative"===n.type){if(e.stack)return"x";if(n.stack)return"y";if(!!e.aggregate!=!!n.aggregate)return e.aggregate?"x":"y"}else{if("quantitative"===e.type)return"x";if("quantitative"===n.type)return"y"}else{if(jB(e)&&"quantitative"===e.type)return"x";if(jB(n)&&"quantitative"===n.type)return"y"}}(e);if(!o)return null;const a=e[o],u=CB(a)?TB(a,{}):void 0,s="x"===o?"y":"x",c=e[s],l=CB(c)?TB(c,{}):void 0,f=v$.reduce((t,n)=>{if("tooltip"!==n&&oP(e,n)){const r=e[n];(Object(Mt.z)(r)?r:[r]).forEach(e=>{const r=HB(e);if(r.aggregate)return;const i=CB(r)?TB(r,{}):void 0;(!i||i!==l&&i!==u)&&t.push({channel:n,fieldDef:r})})}return t},[]);if(0===f.length)return null;let h;if(!(h=void 0!==a.stack?Object(Mt.A)(a.stack)?a.stack?"zero":null:a.stack:pz(PL,i)?$z(n,"zero"):n)||!RL[h])return null;if(a.scale&&a.scale.type&&a.scale.type!==IP.LINEAR){if(r.disallowNonLinearStack)return null;JR(GR.cannotStackNonLinearScale(a.scale.type))}return oP(e,o===vT?bT:xT)?(void 0!==a.stack&&JR(GR.cannotStackRangedMark(o)),null):(a.aggregate&&!pz(hT,a.aggregate)&&JR(GR.stackNonSummativeAggregate(a.aggregate)),{groupbyChannel:c?s:void 0,fieldChannel:o,impute:Kz(i),stackBy:f,offset:h})}function UL(t){const{point:e,line:n}=t,r=b(t,["point","line"]);return kz(r).length>1?r:r.type}function qL(t){for(const e of["line","area","rule","trail"])t[e]&&(t=Object.assign({},t,{[e]:lz(t[e],["point","line"])}));return t}function IL(t,e={},n){return"transparent"===t.point?{opacity:0}:t.point?Object(Mt.E)(t.point)?t.point:{}:void 0!==t.point?null:e.point||n.shape?Object(Mt.E)(e.point)?e.point:{}:void 0}function WL(t,e={}){return t.line?!0===t.line?{}:t.line:void 0!==t.line?null:e.line?!0===e.line?{}:e.line:void 0}class HL{constructor(){this.name="path-overlay"}hasMatchingType(t,e){if(iT(t)){const{mark:n,encoding:r}=t,i=eT(n)?n:{type:n};switch(i.type){case"line":case"rule":case"trail":return!!IL(i,e[i.type],r);case"area":return!!IL(i,e[i.type],r)||!!WL(i,e[i.type])}}return!1}run(t,e,n){const{config:r}=e,{selection:i,projection:o,encoding:a,mark:u}=t,s=b(t,["selection","projection","encoding","mark"]),c=eT(u)?u:{type:u},l=IL(c,r[c.type],a),f="area"===c.type&&WL(c,r[c.type]),h=[Object.assign({},i?{selection:i}:{},{mark:UL(Object.assign({},c,"area"===c.type?{opacity:.7}:{})),encoding:lz(a,["shape"])})],d=LL(c,a,r?r.stack:void 0);let p=a;if(d){const{fieldChannel:t,offset:e}=d;p=Object.assign({},a,{[t]:Object.assign({},a[t],e?{stack:e}:{})})}return f&&h.push(Object.assign({},o?{projection:o}:{},{mark:Object.assign({type:"line"},cz(c,["clip","interpolate","tension"]),f),encoding:p})),l&&h.push(Object.assign({},o?{projection:o}:{},{mark:Object.assign({type:"point",opacity:1,filled:!0},cz(c,["clip"]),l),encoding:p})),n(Object.assign({},s,{layer:h}),Object.assign({},e,{config:qL(r)}))}}class GL{constructor(){this.name="RuleForRangedLine"}hasMatchingType(t){if(iT(t)){const{encoding:e,mark:n}=t;if("line"===n)for(const t of o$){const n=e[u$(t)];if(e[t]&&jB(n)&&"binned"!==n.bin)return!0}}return!1}run(t,e,n){const{encoding:r}=t;return JR(GR.lineWithRange(!!r.x2,!!r.y2)),n(Object.assign({},t,{mark:"rule"}),e)}}function YL(t){const{parentEncoding:e,encoding:n}=t;if(e&&n){const t=kz(e).reduce((t,e)=>(n[e]&&t.push(e),t),[]);t.length>0&&JR(GR.encodingOverridden(t))}const r=Object.assign({},e||{},n||{});return kz(r).length>0?r:void 0}function VL(t){const{parentProjection:e,projection:n}=t;return e&&n&&JR(GR.projectionOverridden({parentProjection:e,projection:n})),n||e}function XL(t,e){return void 0===e&&(e=CL(t.config)),function(t,e={}){return JL.map(t,{config:e})}(t,e)}const JL=new class extends $L{constructor(){super(...arguments),this.nonFacetUnitNormalizers=[xP,EP,NP,new HL,new GL]}map(t,e){if(iT(t)){const n=oP(t.encoding,pT),r=oP(t.encoding,gT),i=oP(t.encoding,mT);if(n||r||i)return this.mapFacetedUnit(t,e)}return super.map(t,e)}mapUnit(t,e){const{parentEncoding:n,parentProjection:r}=e;if(n||r)return this.mapUnitWithParentEncodingOrProjection(t,e);const i=this.mapLayerOrUnit.bind(this);for(const n of this.nonFacetUnitNormalizers)if(n.hasMatchingType(t,e.config))return n.run(t,e,i);return t}mapRepeat(t,e){const{repeat:n}=t;return!Object(Mt.z)(n)&&t.columns&&(t=lz(t,["columns"]),JR(GR.columnsNotSupportByRowCol("repeat"))),Object.assign({},t,{spec:this.map(t.spec,e)})}mapFacet(t,e){const{facet:n}=t;return iB(n)&&t.columns&&(t=lz(t,["columns"]),JR(GR.columnsNotSupportByRowCol("facet"))),super.mapFacet(t,e)}mapUnitWithParentEncodingOrProjection(t,e){const{encoding:n,projection:r}=t,{parentEncoding:i,parentProjection:o,config:a}=e,u=VL({parentProjection:o,projection:r}),s=YL({parentEncoding:i,encoding:n});return this.mapUnit(Object.assign({},t,u?{projection:u}:{},s?{encoding:s}:{}),{config:a})}mapFacetedUnit(t,e){const n=t.encoding,{row:r,column:i,facet:o}=n,a=b(n,["row","column","facet"]),{mark:u,width:s,projection:c,height:l,selection:f,encoding:h}=t,d=b(t,["mark","width","projection","height","selection","encoding"]);return o&&(r||i)&&JR(GR.facetChannelDropped([...r?[pT]:[],...i?[gT]:[]])),this.mapFacet(Object.assign({},d,{facet:r||i?Object.assign({},r?{row:r}:{},i?{column:i}:{}):o,spec:Object.assign({},c?{projection:c}:{},{mark:u},s?{width:s}:{},l?{height:l}:{},{encoding:a},f?{selection:f}:{})}),e)}mapLayer(t,e){var{parentEncoding:n,parentProjection:r}=e,i=b(e,["parentEncoding","parentProjection"]);const{encoding:o,projection:a}=t,u=b(t,["encoding","projection"]),s=Object.assign({},i,{parentEncoding:YL({parentEncoding:n,encoding:o}),parentProjection:VL({parentProjection:r,projection:a})});return super.mapLayer(u,s)}};function ZL(t){return Object(Mt.G)(t)?{type:t}:t||{}}const QL=["background","padding"];function KL(t){return QL.reduce((e,n)=>(t&&void 0!==t[n]&&(e[n]=t[n]),e),{})}function tU(t){return!!t.url}function eU(t){return!!t.values}function nU(t){return!(!t.name||tU(t)||eU(t)||rU(t))}function rU(t){return t&&(iU(t)||oU(t)||aU(t))}function iU(t){return!!t.sequence}function oU(t){return!!t.sphere}function aU(t){return!!t.graticule}const uU="main",sU="raw";function cU(t){return t&&!!t.field&&void 0!==t.equal}function lU(t){return t&&!!t.field&&void 0!==t.lt}function fU(t){return t&&!!t.field&&void 0!==t.lte}function hU(t){return t&&!!t.field&&void 0!==t.gt}function dU(t){return t&&!!t.field&&void 0!==t.gte}function pU(t){return!!(t&&t.field&&Object(Mt.z)(t.range)&&2===t.range.length)}function gU(t){return t&&!!t.field&&(Object(Mt.z)(t.oneOf)||Object(Mt.z)(t.in))}function mU(t){return gU(t)||cU(t)||pU(t)||lU(t)||hU(t)||fU(t)||dU(t)}function vU(t,e){return ZB(t,{timeUnit:e,time:!0})}function yU(t,e=!0){const{field:n,timeUnit:r}=t,i=r?"time("+gB(r,n)+")":TB(t,{expr:"datum"});if(cU(t))return i+"==="+vU(t.equal,r);if(lU(t)){return`${i}<${vU(t.lt,r)}`}if(hU(t)){return`${i}>${vU(t.gt,r)}`}if(fU(t)){return`${i}<=${vU(t.lte,r)}`}if(dU(t)){return`${i}>=${vU(t.gte,r)}`}if(gU(t))return`indexof([${function(t,e){return t.map(t=>vU(t,e))}(t.oneOf,r).join(",")}], ${i}) !== -1`;if(function(t){return t&&!!t.field&&void 0!==t.valid}(t))return t.valid?`${i}!==null&&!isNaN(${i})`:`${i}===null||isNaN(${i})`;if(pU(t)){const n=t.range[0],o=t.range[1];if(null!==n&&null!==o&&e)return"inrange("+i+", ["+vU(n,r)+", "+vU(o,r)+"])";const a=[];return null!==n&&a.push(`${i} >= ${vU(n,r)}`),null!==o&&a.push(`${i} <= ${vU(o,r)}`),a.length>0?a.join(" && "):"true"}throw new Error(`Invalid field predicate: ${JSON.stringify(t)}`)}function bU(t){return mU(t)&&t.timeUnit?Object.assign({},t,{timeUnit:vB(t.timeUnit)}):t}function xU(t){return void 0!==t.filter}function _U(t){return void 0!==t.lookup}function wU(t){return void 0!==t.sample}function OU(t){return void 0!==t.window}function kU(t){return void 0!==t.joinaggregate}function AU(t){return void 0!==t.flatten}function EU(t){return void 0!==t.calculate}function jU(t){return!!t.bin}function SU(t){return void 0!==t.impute}function CU(t){return void 0!==t.timeUnit}function MU(t){return void 0!==t.aggregate}function DU(t){return void 0!==t.stack}function FU(t){return void 0!==t.fold}function NU(t){return!!t.signal}function zU(t){return!!t.step}function TU(t){return!Object(Mt.z)(t)&&("field"in t&&"data"in t)}const $U=Ez({opacity:1,fill:1,fillOpacity:1,stroke:1,strokeCap:1,strokeWidth:1,strokeOpacity:1,strokeDash:1,strokeDashOffset:1,strokeJoin:1,strokeMiterLimit:1,size:1,shape:1,interpolate:1,tension:1,orient:1,align:1,baseline:1,text:1,dir:1,dx:1,dy:1,ellipsis:1,limit:1,radius:1,theta:1,angle:1,font:1,fontSize:1,fontWeight:1,fontStyle:1,cursor:1,href:1,tooltip:1,cornerRadius:1,x:1,y:1,x2:1,y2:1}),RU=["domain","grid","labels","ticks","title"],BU={grid:"grid",gridColor:"grid",gridDash:"grid",gridOpacity:"grid",gridScale:"grid",gridWidth:"grid",orient:"main",bandPosition:"both",domain:"main",domainColor:"main",domainOpacity:"main",domainWidth:"main",format:"main",formatType:"main",labelAlign:"main",labelAngle:"main",labelBaseline:"main",labelBound:"main",labelColor:"main",labelFlush:"main",labelFlushOffset:"main",labelFont:"main",labelFontSize:"main",labelFontWeight:"main",labelLimit:"main",labelOpacity:"main",labelOverlap:"main",labelPadding:"main",labels:"main",maxExtent:"main",minExtent:"main",offset:"main",position:"main",tickColor:"main",tickExtra:"main",tickOffset:"both",tickOpacity:"main",tickRound:"main",ticks:"main",tickSize:"main",title:"main",titleAlign:"main",titleAngle:"main",titleBaseline:"main",titleColor:"main",titleFont:"main",titleFontSize:"main",titleFontWeight:"main",titleLimit:"main",titleOpacity:"main",titlePadding:"main",titleX:"main",titleY:"main",tickWidth:"both",tickCount:"both",values:"both",scale:"both",zindex:"both"},PU={orient:1,bandPosition:1,domain:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid:1,gridColor:1,gridDash:1,gridDashOffset:1,gridOpacity:1,gridWidth:1,labelAlign:1,labelAngle:1,labelBaseline:1,labelBound:1,labelColor:1,labelFlush:1,labelFlushOffset:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position:1,tickColor:1,tickCount:1,tickDash:1,tickDashOffset:1,tickExtra:1,tickMinStep:1,tickOffset:1,tickOpacity:1,tickRound:1,ticks:1,tickSize:1,tickWidth:1,title:1,titleAlign:1,titleAnchor:1,titleAngle:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,values:1,zindex:1},LU=Object.assign({},PU,{encoding:1});const UU=Ez(Object.assign({gridScale:1,scale:1},PU,{encode:1}));Ez(LU);function qU(t,e,n,r={header:!1}){const i=t.combine(),{orient:o,scale:a,title:u,zindex:s}=i,c=b(i,["orient","scale","title","zindex"]);if(kz(c).forEach(t=>{const n=BU[t];n&&n!==e&&"both"!==n&&delete c[t]}),"grid"===e){if(!c.grid)return;if(c.encode){const{grid:t}=c.encode;c.encode=Object.assign({},t?{grid:t}:{}),0===kz(c.encode).length&&delete c.encode}return Object.assign({scale:a,orient:o},c,{domain:!1,labels:!1,maxExtent:0,minExtent:0,ticks:!1,zindex:$z(s,0)})}{if(!r.header&&t.mainExtracted)return;if(c.encode){for(const e of RU)t.hasAxisPart(e)||delete c.encode[e];0===kz(c.encode).length&&delete c.encode}const e=function(t,e){return Object(Mt.z)(t)?t.map(t=>IB(t,e)).join(", "):t}(u,n);return Object.assign({scale:a,orient:o,grid:!1},e?{title:e}:{},c,{zindex:$z(s,1)})}}function IU(t){const{axes:e}=t.component;for(const n of b$)if(e[n])for(const r of e[n])if(!r.get("gridScale")){const e="x"===n?"height":"width";return[{name:e,update:t.getSizeSignalRef(e).signal}]}return[]}const WU={titleAlign:"align",titleAnchor:"anchor",titleAngle:"angle",titleBaseline:"baseline",titleColor:"color",titleFont:"font",titleFontSize:"fontSize",titleFontWeight:"fontWeight",titleLimit:"limit",titleOrient:"orient",titlePadding:"offset"},HU={labelAlign:"align",labelAnchor:"anchor",labelAngle:"angle",labelColor:"color",labelFont:"font",labelFontSize:"fontSize",labelLimit:"limit",labelOrient:"orient",labelPadding:"offset"},GU=kz(WU),YU=kz(HU),VU="mean";function XU(t){return!(!t||"count"!==t.op&&!t.field)}function JU(t){return!!t&&Object(Mt.z)(t)}function ZU(t,e,n,r,i){const o=[..."band"===i?["axisBand"]:[],"x"===n?"axisX":"axisY",...r?["axis"+r.substr(0,1).toUpperCase()+r.substr(1)]:[],"axis"];for(const n of o)if(e[n]&&void 0!==e[n][t])return e[n][t]}function QU(t,e){if(void 0!==t)return t=Pz(t),"top"===e||"bottom"===e?t<=45||315<=t?"top"===e?"bottom":"top":135<=t&&t<=225?"top"===e?"top":"bottom":"middle":t<=45||315<=t||135<=t&&t<=225?"middle":45<=t&&t<=135?"left"===e?"top":"bottom":"left"===e?"bottom":"top"}function KU(t,e){if(void 0!==t)return t=Pz(t),"top"===e||"bottom"===e?t%180==0?"center":0<t&&t<180?"top"===e?"right":"left":"top"===e?"left":"right":(t+90)%180==0?"center":90<=t&&t<270?"left"===e?"left":"right":"left"===e?"right":"left"}function tq(t){switch(t){case vT:return"bottom";case yT:return"left"}throw new Error(GR.INVALID_CHANNEL_FOR_AXIS)}function eq(t){return[].concat(t.type,t.style||[])}function nq(t,e,n,{vgChannel:r}={}){return $z(r?rq(t,e,n.style):void 0,rq(t,e,n.style),r?n[e.type][r]:void 0,n[e.type][t],r?n.mark[r]:n.mark[t])}function rq(t,e,n){const r=eq(e);let i;for(const e of r){const r=n[e],o=t;r&&void 0!==r[o]&&(i=r[o])}return i}function iq(t,e,n,r){if(JB(t)){const i=DB(t)&&t.scale&&t.scale.type===IP.UTC;return{signal:cq(TB(t,{expr:n}),t.timeUnit,e,r.text.shortTimeLabels,r.timeFormat,i,!0)}}{const i=oq(t,e,r);if(eP(t.bin)){return{signal:sq(TB(t,{expr:n}),TB(t,{expr:n,binSuffix:"end"}),i,r)}}return"quantitative"===t.type?{signal:`${aq(TB(t,{expr:n,binSuffix:"range"}),i)}`}:{signal:`''+${TB(t,{expr:n})}`}}}function oq(t,e,n){return e||(t.type===bB?n.numberFormat:void 0)}function aq(t,e){return`format(${t}, "${e||""}")`}function uq(t,e,n){return aq(t,e||n.numberFormat)}function sq(t,e,n,r){return`${t} === null || isNaN(${t}) ? "null" : ${uq(t,n,r)} + " - " + ${uq(e,n,r)}`}function cq(t,e,n,r,i,o,a=!1){return!e||n?(n=n||i)||a?`${o?"utc":"time"}Format(${t}, '${n}')`:void 0:function(t,e,n,r){if(!t)return;const i=mB(t,n);let o="";return pB(t,aB.QUARTER)&&(o=`'Q' + quarter(${e})`),i.length>0&&(o&&(o+=" + ' ' + "),o+=r?`utcFormat(${e}, '${i.join(" ")}')`:`timeFormat(${e}, '${i.join(" ")}')`),o||void 0}(e,t,r,o)}function lq(t,e){return(Object(Mt.z)(t)?t:[t]).reduce((t,n)=>(t.field.push(TB(n,e)),t.order.push(n.sort||"ascending"),t),{field:[],order:[]})}function fq(t,e){const n=[...t];return e.forEach(t=>{for(const e of n)if(fz(e)===fz(t))return;n.push(t)}),n}function hq(t,e){return t!==e&&e?t?t+", "+e:e:t}function dq(t,e){if(Object(Mt.z)(t.value)&&Object(Mt.z)(e.value))return{explicit:t.explicit,value:fq(t.value,e.value)};if(!Object(Mt.z)(t.value)&&!Object(Mt.z)(e.value))return{explicit:t.explicit,value:hq(t.value,e.value)};throw new Error("It should never reach here")}class pq{constructor(t,e){this.debugName=e,this._children=[],this._parent=null,t&&(this.parent=t)}clone(){throw new Error("Cannot clone node")}hash(){return void 0===this._hash&&(this._hash=Bz()),this._hash}producedFields(){return new Set}dependentFields(){return new Set}get parent(){return this._parent}set parent(t){this._parent=t,t&&t.addChild(this)}get children(){return this._children}numChildren(){return this._children.length}addChild(t,e){this._children.indexOf(t)>-1?console.warn("Attempt to add the same child twice."):void 0!==e?this._children.splice(e,0,t):this._children.push(t)}removeChild(t){const e=this._children.indexOf(t);return this._children.splice(e,1),e}remove(){let t=this._parent.removeChild(this);for(const e of this._children)e._parent=this._parent,this._parent.addChild(e,t++)}insertAsParentOf(t){const e=t.parent;e.removeChild(this),this.parent=e,t.parent=this}swapWithParent(){const t=this._parent,e=t.parent;for(const e of this._children)e.parent=t;this._children=[],t.removeChild(this),t.parent.removeChild(t),this.parent=e,t.parent=this}}class gq extends pq{constructor(t,e,n,r){super(t,e),this.type=n,this.refCounts=r,this._source=this._name=e,!this.refCounts||this._name in this.refCounts||(this.refCounts[this._name]=0)}clone(){const t=new this.constructor;return t.debugName="clone_"+this.debugName,t._source=this._source,t._name="clone_"+this._name,t.type=this.type,t.refCounts=this.refCounts,t.refCounts[t._name]=0,t}getSource(){return this.refCounts[this._name]++,this._source}isRequired(){return!!this.refCounts[this._name]}setSource(t){this._source=t}}function mq(t){const e=XS(t),n=new Set;return e.visit(t=>{"MemberExpression"===t.type&&function t(e){return"MemberExpression"===e.object.type?t(e.object):"datum"===e.object.name}(t)&&n.add(function t(e){const n=[];return"Identifier"===e.type?[e.name]:"Literal"===e.type?[e.value]:("MemberExpression"===e.type&&(n.push(...t(e.object)),n.push(...t(e.property))),n)}(t).slice(1).join("."))}),n}class vq extends pq{constructor(t,e){super(t),this.transform=e,this._dependentFields=mq(this.transform.calculate)}clone(){return new vq(null,sz(this.transform))}static parseAllForSortIndex(t,e){return e.forEachFieldDef((e,n)=>{if(DB(e)&&JU(e.sort)){const{field:r,timeUnit:i}=e,o=e.sort,a=o.map((t,e)=>`${yU({field:r,timeUnit:i,equal:t})} ? ${e} : `).join("")+o.length;t=new vq(t,{calculate:a,as:yq(e,n,{forAs:!0})})}}),t}producedFields(){return new Set([this.transform.as])}dependentFields(){return this._dependentFields}assemble(){return{type:"formula",expr:this.transform.calculate,as:this.transform.as}}hash(){return`Calculate ${hz(this.transform)}`}}function yq(t,e,n){return TB(t,Object.assign({prefix:e,suffix:"sort_index"},n||{}))}function bq(t,e){return pz(["top","bottom"],e)?"column":pz(["left","right"],e)?"row":"row"===t?"row":"column"}function xq(t,e,n,r){const i="row"===r?n.headerRow:"column"===r?n.headerColumn:n.headerFacet;return $z(e&&e.header?e.header[t]:void 0,i[t],n.header[t])}function _q(t,e,n,r){const i={};for(const o of t){const t=xq(o,e,n,r);void 0!==t&&(i[o]=t)}return i}const wq=["row","column"],Oq=["header","footer"];function kq(t,e){const n=t.component.layoutHeaders[e].title,r=t.config?t.config:void 0,i=t.component.layoutHeaders[e].facetFieldDef?t.component.layoutHeaders[e].facetFieldDef:void 0,{titleAnchor:o,titleAngle:a,titleOrient:u}=_q(["titleAnchor","titleAngle","titleOrient"],i,r,e),s=bq(e,u);return{name:`${e}-title`,type:"group",role:`${s}-title`,title:Object.assign({text:n},"row"===e?{orient:"left"}:{},{style:"guide-title"},Eq(a,s),Aq(s,a,o),Nq(r,i,e,GU,WU))}}function Aq(t,e,n="middle"){switch(n){case"start":return{align:"left"};case"end":return{align:"right"}}const r=KU(e,"row"===t?"left":"top");return r?{align:r}:{}}function Eq(t,e){const n=QU(t,"row"===e?"left":"top");return n?{baseline:n}:{}}function jq(t,e){const n=t.component.layoutHeaders[e],r=[];for(const i of Oq)if(n[i])for(const o of n[i])r.push(Mq(t,e,i,n,o));return r}function Sq(t,e){const{sort:n}=t;return XU(n)?{field:TB(n,{expr:"datum"}),order:n.order||"ascending"}:Object(Mt.z)(n)?{field:yq(t,e,{expr:"datum"}),order:"ascending"}:{field:TB(t,{expr:"datum"}),order:n||"ascending"}}function Cq(t,e,n){const{format:r,labelAngle:i,labelAnchor:o,labelOrient:a}=_q(["format","labelAngle","labelAnchor","labelOrient"],t,n,e),u=bq(e,a);return Object.assign({text:iq(t,r,"parent",n)},"row"===e?{orient:"left"}:{},{style:"guide-label",frame:"group"},Eq(i,u),Aq(u,i,o),Nq(n,t,e,YU,HU))}function Mq(t,e,n,r,i){if(i){let o=null;const{facetFieldDef:a}=r,u=t.config?t.config:void 0;if(a&&i.labels){const{labelOrient:t}=_q(["labelOrient"],a,u,e);("row"===e&&!pz(["top","bottom"],t)||"column"===e&&!pz(["left","right"],t))&&(o=Cq(a,e,u))}const s=MH(t)&&!iB(t.facet),c=i.axes,l=c&&c.length>0;if(o||l){const u="row"===e?"height":"width";return Object.assign({name:t.getName(`${e}_${n}`),type:"group",role:`${e}-${n}`},r.facetFieldDef?{from:{data:t.getName(e+"_domain")},sort:Sq(a,e)}:{},l&&s?{from:{data:t.getName(`facet_domain_${e}`)}}:{},o?{title:o}:{},i.sizeSignal?{encode:{update:{[u]:i.sizeSignal}}}:{},l?{axes:c}:{})}}return null}const Dq={column:{start:0,end:1},row:{start:1,end:0}};function Fq(t,e){return Dq[e][t]}function Nq(t,e,n,r,i){const o={};for(const a of r){if(!i[a])continue;const r=xq(a,e,t,n);void 0!==r&&(o[i[a]]=r)}return o}function zq(t){return[...Tq(t,"width"),...Tq(t,"height")]}function Tq(t,e){const n="width"===e?"x":"y",r=t.component.layoutSize.get(e);if(!r||"merged"===r)return[];const i=t.getSizeSignalRef(e).signal;if("range-step"===r){const e=t.getScaleComponent(n);if(e){const r=e.get("type"),o=e.get("range");if(eL(r)&&zU(o)){const r=t.scaleName(n);if(MH(t.parent)){if("independent"===t.parent.component.resolve.scale[n])return[$q(r,o)]}return[$q(r,o),{name:i,update:Rq(r,e,`domain('${r}').length`)}]}}throw new Error("layout size is range step although there is no rangeStep.")}return[{name:i,value:r}]}function $q(t,e){return{name:t+"_step",value:e.step}}function Rq(t,e,n){const r=e.get("type"),i=e.get("padding"),o=$z(e.get("paddingOuter"),i);let a=e.get("paddingInner");return`bandspace(${n}, ${a="band"===r?void 0!==a?a:i:1}, ${o}) * ${t}_step`}class Bq extends pq{constructor(t,e){super(t),this.formula=e}clone(){return new Bq(null,sz(this.formula))}static makeFromEncoding(t,e){const n=e.reduceFieldDef((t,e)=>{if(e.timeUnit){const n=TB(e,{forAs:!0});t[n]={as:n,timeUnit:e.timeUnit,field:e.field}}return t},{});return 0===kz(n).length?null:new Bq(t,n)}static makeFromTransform(t,e){return new Bq(t,{[e.field]:{as:e.as,timeUnit:e.timeUnit,field:e.field}})}merge(t){this.formula=Object.assign({},this.formula,t.formula),t.remove()}producedFields(){return new Set(Az(this.formula).map(t=>t.as))}dependentFields(){return new Set(Az(this.formula).map(t=>t.field))}hash(){return`TimeUnit ${hz(this.formula)}`}assemble(){return Az(this.formula).map(t=>({type:"formula",as:t.as,expr:gB(t.timeUnit,t.field)}))}}var Pq={has:t=>"interval"===t.type&&"global"===t.resolve&&t.bind&&"scales"===t.bind,parse:(t,e,n)=>{const r=Sz(n.name),i=n.scales=[];for(const e of n.project.items){const n=e.channel;if(!M$(n))continue;const o=t.getScaleComponent(n),a=o?o.get("type"):void 0;if(o&&nL(a)){if(o.set("domainRaw",{signal:Fz(e.field,r)},!0),i.push(e),t.repeater&&t.repeater.row===t.repeater.column){t.getScaleComponent(n===vT?yT:vT).set("domainRaw",{signal:Fz(e.field,r)},!0)}}else JR(GR.SCALE_BINDINGS_CONTINUOUS)}},topLevelSignals:(t,e,n)=>{const r=e.scales.filter(t=>!n.filter(e=>e.name===t.signals.data).length);if(!t.parent||!r.length)return n;const i=n.filter(t=>t.name===e.name)[0],o=i.update;if(o.indexOf(Kq)>=0)i.update=`{${r.map(t=>`${Object(Mt.W)(t.field)}: ${t.signals.data}`).join(", ")}}`;else for(const t of r){const e=`, ${Object(Mt.W)(t.field)}: ${t.signals.data}`;o.indexOf(e)<0&&(i.update=o.substring(0,o.length-1)+e+"}")}return n.concat(r.map(t=>({name:t.signals.data})))},signals:(t,e,n)=>{if(t.parent)for(const t of e.scales){const e=n.filter(e=>e.name===t.signals.data)[0];e.push="outer",delete e.value,delete e.update}return n}};function Lq(t,e){return`domain(${Object(Mt.W)(t.scaleName(e))})`}const Uq="_tuple_fields";class qq{constructor(...t){this.items=t,this.has={}}}const Iq="_scale_trigger",Wq={signals:(t,e)=>{const n=e.name,r=n+Uq,i=Pq.has(e),o=[],a=[],u=[];if(e.translate&&!i){const t=`!event.item || event.item.mark.name !== ${Object(Mt.W)(n+"_brush")}`;Hq(e,(e,n)=>{const r=n.between[0].filter||(n.between[0].filter=[]);r.indexOf(t)<0&&r.push(t)})}e.project.items.forEach((n,r)=>{const i=n.channel;if(i!==vT&&i!==yT)return void JR("Interval selections only support x and y encoding channels.");const s=e.init?e.init[r]:null,c=function(t,e,n,r){const i=n.channel,o=n.signals.visual,a=n.signals.data,u=Pq.has(e),s=Object(Mt.W)(t.scaleName(i)),c=t.getScaleComponent(i),l=c?c.get("type"):void 0,f=t=>`scale(${s}, ${t})`,h=t.getSizeSignalRef(i===vT?"width":"height").signal,d=`${i}(unit)`,p=Hq(e,(t,e)=>[...t,{events:e.between[0],update:`[${d}, ${d}]`},{events:e,update:`[${o}[0], clamp(${d}, 0, ${h})]`}]);return p.push({events:{signal:e.name+Iq},update:nL(l)?`[${f(`${a}[0]`)}, ${f(`${a}[1]`)}]`:"[0, 0]"}),u?[{name:a,on:[]}]:[Object.assign({name:o},r?{init:yI(r,f)}:{value:[]},{on:p}),Object.assign({name:a},r?{init:yI(r)}:{},{on:[{events:{signal:o},update:`${o}[0] === ${o}[1] ? null : invert(${s}, ${o})`}]})]}(t,e,n,s),l=n.signals.data,f=n.signals.visual,h=Object(Mt.W)(t.scaleName(i)),d=nL(t.getScaleComponent(i).get("type"))?"+":"";o.push(...c),a.push(l),u.push({scaleName:t.scaleName(i),expr:`(!isArray(${l}) || `+`(${d}invert(${h}, ${f})[0] === ${d}${l}[0] && `+`${d}invert(${h}, ${f})[1] === ${d}${l}[1]))`})}),i||o.push({name:n+Iq,value:{},on:[{events:u.map(t=>({scale:t.scaleName})),update:u.map(t=>t.expr).join(" && ")+` ? ${n+Iq} : {}`}]});const s=e.init,c=`unit: ${nI(t)}, fields: ${r}, values`;return o.concat(Object.assign({name:n+Jq},s?{init:`{${c}: ${yI(s)}}`}:{},{on:[{events:[{signal:a.join(" || ")}],update:a.join(" && ")+` ? {${c}: [${a}]} : null`}]}))},modifyExpr:(t,e)=>{return e.name+Jq+", "+("global"===e.resolve?"true":`{unit: ${nI(t)}}`)},marks:(t,e,n)=>{const r=e.name,{x:i,y:o}=e.project.has,a=i&&i.signals.visual,u=o&&o.signals.visual,s=`data(${Object(Mt.W)(e.name+Xq)})`;if(Pq.has(e))return n;const c={x:void 0!==i?{signal:`${a}[0]`}:{value:0},y:void 0!==o?{signal:`${u}[0]`}:{value:0},x2:void 0!==i?{signal:`${a}[1]`}:{field:{group:"width"}},y2:void 0!==o?{signal:`${u}[1]`}:{field:{group:"height"}}};if("global"===e.resolve)for(const e of kz(c))c[e]=[Object.assign({test:`${s}.length && ${s}[0].unit === ${nI(t)}`},c[e]),{value:0}];const l=e.mark,{fill:f,fillOpacity:h}=l,d=b(l,["fill","fillOpacity"]),p=kz(d).reduce((t,e)=>(t[e]=[{test:[void 0!==i&&`${a}[0] !== ${a}[1]`,void 0!==o&&`${u}[0] !== ${u}[1]`].filter(t=>t).join(" && "),value:d[e]},{value:null}],t),{});return[{name:r+"_brush_bg",type:"rect",clip:!0,encode:{enter:{fill:{value:f},fillOpacity:{value:h}},update:c}},...n,{name:r+"_brush",type:"rect",clip:!0,encode:{enter:{fill:{value:"transparent"}},update:Object.assign({},c,p)}}]}};function Hq(t,e){return t.events.reduce((t,n)=>n.between?e(t,n):(JR(`${n} is not an ordered event stream for interval selections`),t),[])}function Gq(t,e){const n=e.name,r=n+Uq,i=e.project,o="(item().isVoronoi ? datum.datum : datum)",a=i.items.map(e=>{const n=t.fieldDef(e.channel);return n&&n.bin?`[${Fz(t.vgField(e.channel,{}),o)}, `+`${Fz(t.vgField(e.channel,{binSuffix:"end"}),o)}]`:`${Fz(e.field,o)}`}).join(", "),u=`unit: ${nI(t)}, fields: ${r}, values`,s=[{name:n+Jq,on:[{events:e.events,update:`datum && item().mark.marktype !== 'group' ? {${u}: [${a}]} : null`,force:!0}]}];if(e.init){const t=e.init.map(t=>{const e=yI(t);return`{${u}: ${e}}`});s.push({name:`${n}_init`,init:`modify(${Object(Mt.W)(e.name+Xq)}, [${t}])`})}return s}const Yq={signals:Gq,modifyExpr:(t,e)=>{return e.name+Jq+", "+("global"===e.resolve?"null":`{unit: ${nI(t)}}`)}};const Vq={signals:Gq,modifyExpr:(t,e)=>{return e.name+Jq+", "+("global"===e.resolve?"true":`{unit: ${nI(t)}}`)}};const Xq="_store",Jq="_tuple",Zq="_modify",Qq="_selection_domain_",Kq="vlSelectionResolve",tI={single:Vq,multi:Yq,interval:Wq};function eI(t,e){const n=t.component.selection;for(const t in n)if(n.hasOwnProperty(t)){const r=n[t];e(r,tI[r.type])}}function nI(t){let e=Object(Mt.W)(t.name);const n=function(t){let e=t.parent;for(;e&&!MH(e);)e=e.parent;return e}(t);if(n){const{facet:t}=n;for(const r of HT)t[r]&&(e+=` + '__facet_${r}_' + (${Fz(n.vgField(r),"facet")})`)}return e}function rI(t){let e=!1;return eI(t,t=>{e=e||t.project.items.some(t=>t.field===bL)}),e}var iI={has:t=>"interval"!==t.type&&t.nearest,marks:(t,e,n)=>{const{x:r,y:i}=e.project.has,o=t.mark;if(Kz(o))return JR(GR.nearestNotSupportForContinuous(o)),n;const a={name:t.getName("voronoi"),type:"path",from:{data:t.getName("marks")},encode:{update:Object.assign({fill:{value:"transparent"},strokeWidth:{value:.35},stroke:{value:"transparent"},isVoronoi:{value:!0}},HI(t,{reactiveGeom:!0}))},transform:[{type:"voronoi",x:{expr:r||!r&&!i?"datum.datum.x || 0":"0"},y:{expr:i||!r&&!i?"datum.datum.y || 0":"0"},size:[t.getSizeSignalRef("width"),t.getSizeSignalRef("height")]}]};let u=0,s=!1;return n.forEach((e,n)=>{const r=e.name||"";r===t.component.mark[0].name?u=n:r.indexOf("voronoi")>=0&&(s=!0)}),s||n.splice(u+1,0,a),n}};var oI={has:t=>"single"===t.type&&"global"===t.resolve&&t.bind&&"scales"!==t.bind,topLevelSignals:(t,e,n)=>{const r=e.name,i=e.project,o=e.bind,a=e.init&&e.init[0],u=iI.has(e)?"(item().isVoronoi ? datum.datum : datum)":"datum";return i.items.forEach((t,i)=>{const s=Sz(`${r}_${t.field}`);n.filter(t=>t.name===s).length||n.unshift(Object.assign({name:s},a?{init:yI(a[i])}:{value:null},{on:[{events:e.events,update:`datum && item().mark.marktype !== 'group' ? ${Fz(t.field,u)} : null`}],bind:o[t.field]||o[t.channel]||o}))}),n},signals:(t,e,n)=>{const r=e.name,i=e.project,o=n.filter(t=>t.name===r+Jq)[0],a=r+Uq,u=i.items.map(t=>Sz(`${r}_${t.field}`)),s=u.map(t=>`${t} !== null`).join(" && ");return u.length&&(o.update=`${s} ? {fields: ${a}, values: [${u.join(", ")}]} : null`),delete o.value,delete o.on,n}};var aI={has:t=>"multi"===t.type&&t.toggle,signals:(t,e,n)=>n.concat({name:e.name+"_toggle",value:!1,on:[{events:e.events,update:e.toggle}]}),modifyExpr:(t,e)=>{const n=e.name+Jq,r=e.name+"_toggle";return`${r} ? null : ${n}, `+("global"===e.resolve?`${r} ? null : true, `:`${r} ? null : {unit: ${nI(t)}}, `)+`${r} ? ${n} : null`}};const uI={has:t=>!1!==t.clear,parse:(t,e,n)=>{e.clear&&(n.clear=QM(e.clear,"scope"))},topLevelSignals:(t,e,n)=>(oI.has(e)&&e.project.items.forEach(t=>{const r=n.findIndex(n=>n.name===Sz(`${e.name}_${t.field}`));-1!==r&&n[r].on.push({events:e.clear,update:"null"})}),n),signals:(t,e,n)=>{function r(t,r){-1!==t&&n[t].on&&n[t].on.push({events:e.clear,update:r})}if("interval"===e.type)e.project.items.forEach(t=>{const e=n.findIndex(e=>e.name===t.signals.visual);if(r(e,"[0, 0]"),-1===e){r(n.findIndex(e=>e.name===t.signals.data),"null")}});else{let t=n.findIndex(t=>t.name===e.name+Jq);r(t,"null"),aI.has(e)&&r(t=n.findIndex(t=>t.name===e.name+"_toggle"),"false")}return n}};const sI="_translate_anchor",cI="_translate_delta",lI={has:t=>"interval"===t.type&&t.translate,signals:(t,e,n)=>{const r=e.name,i=Pq.has(e),o=r+sI,{x:a,y:u}=e.project.has;let s=QM(e.translate,"scope");return i||(s=s.map(t=>(t.between[0].markname=r+"_brush",t))),n.push({name:o,value:{},on:[{events:s.map(t=>t.between[0]),update:"{x: x(unit), y: y(unit)"+(void 0!==a?", extent_x: "+(i?Lq(t,vT):`slice(${a.signals.visual})`):"")+(void 0!==u?", extent_y: "+(i?Lq(t,yT):`slice(${u.signals.visual})`):"")+"}"}]},{name:r+cI,value:{},on:[{events:s,update:`{x: ${o}.x - x(unit), y: ${o}.y - y(unit)}`}]}),void 0!==a&&fI(t,e,a,"width",n),void 0!==u&&fI(t,e,u,"height",n),n}};function fI(t,e,n,r,i){const o=e.name,a=o+sI,u=o+cI,s=n.channel,c=Pq.has(e),l=i.filter(t=>t.name===n.signals[c?"data":"visual"])[0],f=t.getSizeSignalRef(r).signal,h=t.getScaleComponent(s),d=h.get("type"),p=`${a}.extent_${s}`,g=`${c?"log"===d?"panLog":"pow"===d?"panPow":"panLinear":"panLinear"}(${p}, ${`${c&&s===vT?"-":""}${u}.${s} / `+(c?`${f}`:`span(${p})`)}`+(c&&"pow"===d?`, ${h.get("exponent")||1}`:"")+")";l.on.push({events:{signal:u},update:c?g:`clampRange(${g}, 0, ${f})`})}const hI="_zoom_anchor",dI="_zoom_delta",pI={has:t=>"interval"===t.type&&t.zoom,signals:(t,e,n)=>{const r=e.name,i=Pq.has(e),o=r+dI,{x:a,y:u}=e.project.has,s=Object(Mt.W)(t.scaleName(vT)),c=Object(Mt.W)(t.scaleName(yT));let l=QM(e.zoom,"scope");return i||(l=l.map(t=>(t.markname=r+"_brush",t))),n.push({name:r+hI,on:[{events:l,update:i?"{"+[s?`x: invert(${s}, x(unit))`:"",c?`y: invert(${c}, y(unit))`:""].filter(t=>!!t).join(", ")+"}":"{x: x(unit), y: y(unit)}"}]},{name:o,on:[{events:l,force:!0,update:"pow(1.001, event.deltaY * pow(16, event.deltaMode))"}]}),void 0!==a&&gI(t,e,a,"width",n),void 0!==u&&gI(t,e,u,"height",n),n}};function gI(t,e,n,r,i){const o=e.name,a=n.channel,u=Pq.has(e),s=i.filter(t=>t.name===n.signals[u?"data":"visual"])[0],c=t.getSizeSignalRef(r).signal,l=t.getScaleComponent(a),f=l.get("type"),h=u?Lq(t,a):s.name,d=o+dI,p=`${u?"log"===f?"zoomLog":"pow"===f?"zoomPow":"zoomLinear":"zoomLinear"}(${h}, ${`${o}${hI}.${a}`}, ${d}`+(u&&"pow"===f?`, ${l.get("exponent")||1}`:"")+")";s.on.push({events:{signal:d},update:u?p:`clampRange(${p}, 0, ${c})`})}const mI=[{has:()=>!0,parse:(t,e,n)=>{const r=n.name,i=n.project||(n.project=new qq),o={},a={},u=new Set,s=(t,e)=>{const n="visual"===e?t.channel:t.field;let i=Sz(`${r}_${n}`);for(let t=1;u.has(i);t++)i=Sz(`${r}_${n}_${t}`);return u.add(i),{[e]:i}};if(!e.fields&&!e.encodings){const n=t.config.selection[e.type];if(e.init)for(const t of Object(Mt.i)(e.init))for(const r of kz(t))r$(r)?(e.encodings||(e.encodings=[])).push(r):xL(e)?(JR('Interval selections should be initialized using "x" and/or "y" keys.'),e.encodings=n.encodings):(e.fields||(e.fields=[])).push(r);else e.encodings=n.encodings,e.fields=n.fields}for(const t of e.fields||[]){const e={type:"E",field:t};e.signals=Object.assign({},s(e,"data")),i.items.push(e)}for(const r of e.encodings||[]){const e=t.fieldDef(r);if(e){let u=e.field;if(e.timeUnit&&(a[u=t.vgField(r)]={as:u,field:e.field,timeUnit:e.timeUnit}),!o[u]){let a="E";if("interval"===n.type){nL(t.getScaleComponent(r).get("type"))&&(a="R")}else e.bin&&(a="R-RE");const c={field:u,channel:r,type:a};c.signals=Object.assign({},s(c,"data"),s(c,"visual")),i.items.push(o[u]=c),i.has[r]=o[u]}}else JR(GR.cannotProjectOnChannelWithoutField(r))}if(e.init)if(Pq.has(n))JR(GR.NO_INIT_SCALE_BINDINGS);else{const t=t=>i.items.map(e=>void 0!==t[e.channel]?t[e.channel]:t[e.field]);if(xL(e))n.init=t(e.init);else{const r=Object(Mt.z)(e.init)?e.init:[e.init];n.init=r.map(t)}}kz(a).length&&(i.timeUnit=new Bq(null,a))},signals:(t,e,n)=>{const r=e.name+Uq;return n.filter(t=>t.name===r).length?n:n.concat({name:r,value:e.project.items.map(t=>{const{signals:e}=t;return b(t,["signals"])})})}},aI,Pq,lI,pI,oI,iI,uI];function vI(t,e){for(const n of mI)n.has(t)&&e(n)}function yI(t,e=Mt.w){if(Object(Mt.z)(t)){return`[${t.map(t=>yI(t,e)).join(", ")}]`}return QR(t)?e(rB(t)):e(JSON.stringify(t))}function bI(t,e){return eI(t,(n,r)=>{e=r.marks?r.marks(t,n,e):e,vI(n,r=>{r.marks&&(e=r.marks(t,n,e))})}),e}function xI(t,e,n){const r=[];const i=Cz(e,function(e){const i=Sz(e),o=t.getSelectionComponent(i,e),a=Object(Mt.W)(i+Xq);if(o.project.timeUnit){const e=n||t.component.data.raw,r=o.project.timeUnit.clone();e.parent?r.insertAsParentOf(e):e.parent=r}return"none"!==o.empty&&r.push(a),`vlSelectionTest(${a}, datum`+("global"===o.resolve?")":`, ${Object(Mt.W)(o.resolve)})`)});return(r.length?"!("+r.map(t=>`length(data(${t}))`).join(" || ")+") || ":"")+`(${i})`}function _I(t,e,n){return Cz(e,e=>Object(Mt.G)(e)?e:function(t){return t&&t.selection}(e)?xI(t,e.selection,n):yU(e))}function wI(t){const{channel:e,channelDef:n,mark:r,scale:i}=t,o=DI(t);return jB(n)&&!fT(n.aggregate)&&i&&rL(i.get("type"))&&!1===i.get("zero")?OI({fieldDef:n,channel:e,mark:r,ref:o}):o}function OI({fieldDef:t,channel:e,mark:n,ref:r}){return Kz(n)?r:[kI(t,e),r]}function kI(t,e){const n=AI(t,!0),r="x"===u$(e)?{value:0}:{field:{group:"height"}};return Object.assign({test:n},r)}function AI(t,e=!0){return`${t=Object(Mt.G)(t)?t:TB(t,{expr:"datum"})} ${e?"===":"!=="} null ${e?"||":"&&"} ${e?"":"!"}isNaN(${t})`}function EI(t,e){const n=e[t+"Offset"];if(n)return n}function jI({channel:t,fieldDef:e,scaleName:n,mark:r,side:i,offset:o}){return OI({fieldDef:e,channel:t,mark:r,ref:SI(e,n,{binSuffix:"start"===i?void 0:"end"},o?{offset:o}:{})})}function SI(t,e,n,r){const i=Object.assign({},e?{scale:e}:{},{field:TB(t,n)});if(r){const{offset:t,band:e}=r;return Object.assign({},i,t?{offset:t}:{},e?{band:e}:{})}return i}function CI(t,e=!0){return{scale:t,band:e}}function MI({scaleName:t,fieldDef:e,fieldDef2:n,offset:r}){const i=TB(e,{expr:"datum"}),o=void 0!==n?TB(n,{expr:"datum"}):TB(e,{binSuffix:"end",expr:"datum"});return Object.assign({signal:`scale("${t}", (${i} + ${o}) / 2)`},r?{offset:r}:{})}function DI({channel:t,channelDef:e,channel2Def:n,scaleName:r,scale:i,stack:o,offset:a,defaultRef:u}){if(e){if(jB(e)){if(SB(e)){if(eP(e.bin))return pz([vT,yT],t)&&e.type===bB?o&&o.impute?SI(e,r,{binSuffix:"mid"},{offset:a}):MI({scaleName:r,fieldDef:e,offset:a}):SI(e,r,KB(e,t)?{binSuffix:"range"}:{},{offset:a});if(nP(e.bin)){if(jB(n))return MI({scaleName:r,fieldDef:e,fieldDef2:n,offset:a});{const e=t===vT?bT:xT;JR(GR.channelRequiredForBinned(e))}}}if(i){const t=i.get("type");if(eL(t))return SI(e,r,{binSuffix:"range"},"band"===t?{band:.5,offset:a}:{offset:a})}return SI(e,r,{},{offset:a})}if(MB(e)){const n=e.value,r=a?{offset:a}:{};return pz(["x","x2"],t)&&"width"===n?Object.assign({field:{group:"width"}},r):pz(["y","y2"],t)&&"height"===n?Object.assign({field:{group:"height"}},r):Object.assign({value:n},r)}}return Object(Mt.C)(u)?u():u}function FI(t,e,{reactiveGeom:n}){const r=[],i={};function o(o,a){const u=u$(a);a!==u&&(o=Object.assign({},o,{type:t[u].type}));const s=UB(o,e,{allowDisabling:!1}),c=NI(o,e,n?"datum.datum":"datum").signal;i[s]||r.push(`${Object(Mt.W)(s)}: ${c}`),i[s]=!0}return lP(t,(t,e)=>{jB(t)?o(t,e):EB(t)&&o(t.condition,e)}),r.length?{signal:`{${r.join(", ")}}`}:void 0}function NI(t,e,n="datum"){if(t){if(MB(t))return{value:t.value};if(SB(t))return iq(t,zB(r=t)&&r.format?r.format:(qB(r)||{}).format,n,e)}var r}function zI(t){return Object.assign({},t,{mult:.5})}function TI({markDef:t,config:e,defaultRef:n,channel:r,scaleName:i,scale:o,mark:a,checkBarAreaWithoutZero:u}){return()=>{const s=u$(r),c=$z(t[r],nq(r,t,e));if(void 0!==c)return{value:c};if(Object(Mt.G)(n)){if(i){const t=o.get("type");if(pz([IP.LOG,IP.TIME,IP.UTC],t))!u||"bar"!==a&&"area"!==a||JR(GR.nonZeroScaleUsedWithLengthMark(a,s,{scaleType:t}));else{if(o.domainDefinitelyIncludesZero)return{scale:i,value:0};!u||"bar"!==a&&"area"!==a||JR(GR.nonZeroScaleUsedWithLengthMark(a,s,{zeroFalse:!1===o.explicit.zero}))}}return"zeroOrMin"===n?"x"===s?{value:0}:{field:{group:"height"}}:"x"===s?{field:{group:"width"}}:{value:0}}return n}}function $I(t){return"transparent"!==t&&null!=t}function RI(t){const{markDef:e,encoding:n,config:r}=t,{filled:i,type:o}=e,a={fill:nq("fill",e,r),stroke:nq("stroke",e,r),color:nq("color",e,r)},u=pz(["bar","point","circle","square","geoshape"],o)?"transparent":void 0,s=$z(e.fill,a.fill,u),c=$z(e.stroke,a.stroke),l=i?"fill":"stroke",f=Object.assign({},s?{fill:{value:s}}:{},c?{stroke:{value:c}}:{});return n.fill||n.stroke?(e.color&&JR(GR.droppingColor("property",{fill:"fill"in n,stroke:"stroke"in n})),Object.assign({},II("fill",t,{defaultValue:$z(s,u)}),II("stroke",t,{defaultValue:c}))):n.color?Object.assign({},f,II("color",t,{vgChannel:l,defaultValue:$z(e[l],e.color,a[l],a.color,i?u:void 0)})):$I(e.fill)||$I(e.stroke)?(e.color&&JR(GR.droppingColor("property",{fill:"fill"in e,stroke:"stroke"in e})),f):e.color?Object.assign({},f,{[l]:{value:e.color}}):$I(a.fill)||$I(a.stroke)?f:a.color?Object.assign({},u?{fill:{value:"transparent"}}:{},{[l]:{value:a.color}}):{}}function BI(t,e){const{fill:n,stroke:r}=RI(t);return Object.assign({},function(t,e){return $U.reduce((n,r)=>(void 0!==t[r]&&"ignore"!==e[r]&&(n[r]={value:t[r]}),n),{})}(t.markDef,e),PI(t,"fill",n),PI(t,"stroke",r),II("opacity",t),II("fillOpacity",t),II("strokeOpacity",t),II("strokeWidth",t),HI(t),GI(t,"href"))}function PI(t,e,n){const{config:r,mark:i}=t;if("hide"===r.invalidValues&&n&&!Kz(i)){const r=UI(t,{invalid:!0,channels:C$});if(r)return{[e]:[{test:r,value:null},...Object(Mt.i)(n)]}}return n?{[e]:n}:{}}function LI(t,e){if(void 0!==e)return{[t]:{value:e}}}function UI(t,{invalid:e=!1,channels:n}){const r=n.reduce((e,n)=>{const r=t.getScaleComponent(n);if(r){const i=r.get("type"),o=t.vgField(n,{expr:"datum"});o&&nL(i)&&(e[o]=!0)}return e},{}),i=kz(r);if(i.length>0){const t=e?"||":"&&";return i.map(t=>AI(t,e)).join(` ${t} `)}}function qI(t){if(t.config.invalidValues){const e=UI(t,{channels:["x","y"]});if(e)return{defined:{signal:e}}}return{}}function II(t,e,n={}){const{markDef:r,encoding:i,config:o}=e,{vgChannel:a=t}=n;let{defaultRef:u,defaultValue:s}=n;void 0===u&&(s=s||(a===t?r[t]:$z(r[t],r[a],nq(t,r,o,{vgChannel:a}))),u=s?{value:s}:void 0);const c=i[t];return WI(e,c,a,n=>DI({channel:t,channelDef:n,scaleName:e.scaleName(t),scale:e.getScaleComponent(t),stack:null,defaultRef:u}))}function WI(t,e,n,r){const i=e&&e.condition,o=r(e);if(i){return{[n]:[...(Object(Mt.z)(i)?i:[i]).map(e=>{const n=r(e),i=function(t){return t.selection}(e)?xI(t,e.selection):_I(t,e.test);return Object.assign({test:i},n)}),...void 0!==o?[o]:[]]}}return void 0!==o?{[n]:o}:{}}function HI(t,e={}){const{encoding:n,markDef:r,config:i}=t,o=n.tooltip;return Object(Mt.z)(o)?{tooltip:FI({tooltip:o},i,e)}:WI(t,o,"tooltip",o=>{const a=NI(o,t.config,e.reactiveGeom?"datum.datum":"datum");if(a)return a;if(null===o)return;const u=$z(r.tooltip,nq("tooltip",r,i));return Object(Mt.G)(u)?{value:u}:Object(Mt.E)(u)?"encoding"===u.content?FI(n,i,e):{signal:"datum"}:void 0})}function GI(t,e="text"){const n=t.encoding[e];return WI(t,n,e,e=>NI(e,t.config))}function YI(t,e,n,r){const i=n.scaleName(e),o="x"===e?"width":"height";if(n.encoding.size||void 0!==n.markDef.size||r&&void 0!==r.value){if(n.markDef.orient){const a={[e+"c"]:SI(t,i,{},{band:.5})};if(HB(n.encoding.size))return Object.assign({},a,II("size",n,{vgChannel:o}));if(MB(n.encoding.size))return Object.assign({},a,II("size",n,{vgChannel:o}));if(void 0!==n.markDef.size)return Object.assign({},a,{[o]:{value:n.markDef.size}});if(r&&void 0!==r.value)return Object.assign({},a,{[o]:r})}else JR(GR.cannotApplySizeToNonOrientedMark(n.markDef.type))}return{[e]:SI(t,i,{binSuffix:"range"},{}),[o]:r||CI(i)}}function VI({fieldDef:t,fieldDef2:e,channel:n,scaleName:r,mark:i,spacing:o=0,reverse:a}){const u={x:a?o:0,x2:a?0:o,y:a?0:o,y2:a?o:0},s=n===vT?bT:xT;return eP(t.bin)?{[s]:jI({channel:n,fieldDef:t,scaleName:r,mark:i,side:"start",offset:u[`${n}2`]}),[n]:jI({channel:n,fieldDef:t,scaleName:r,mark:i,side:"end",offset:u[n]})}:nP(t.bin)&&jB(e)?{[s]:SI(t,r,{},{offset:u[`${n}2`]}),[n]:SI(e,r,{},{offset:u[n]})}:void JR(GR.channelRequiredForBinned(s))}function XI(t,e,n,r){const{encoding:i,mark:o,markDef:a,config:u,stack:s}=e,c=i[t],l=i[t===vT?bT:xT],f=e.scaleName(t),h=e.getScaleComponent(t),d=EI(t,e.markDef);return{[r||t]:c||!i.latitude&&!i.longitude?function(t){const{channel:e,channelDef:n,scaleName:r,stack:i,offset:o}=t;return jB(n)&&i&&e===i.fieldChannel?SI(n,r,{suffix:"end"},{offset:o}):wI(t)}({channel:t,channelDef:c,channel2Def:l,scaleName:f,scale:h,stack:s,mark:o,offset:d,defaultRef:TI({markDef:a,config:u,defaultRef:n,channel:t,scaleName:f,scale:h,mark:o,checkBarAreaWithoutZero:!l})}):{field:e.getName(t)}}}function JI(t,e,n){const{encoding:r,mark:i,markDef:o,stack:a,config:u}=t,s="x2"===n?"x":"y",c=r[s],l=t.scaleName(s),f=t.getScaleComponent(s),h=EI(n,t.markDef),d=c||!r.latitude&&!r.longitude?function({channel:t,channelDef:e,channel2Def:n,scaleName:r,scale:i,stack:o,mark:a,offset:u,defaultRef:s}){return jB(e)&&o&&t.charAt(0)===o.fieldChannel.charAt(0)?SI(e,r,{suffix:"start"},{offset:u}):wI({channel:t,channelDef:n,scaleName:r,scale:i,stack:o,mark:a,offset:u,defaultRef:s})}({channel:n,channelDef:c,channel2Def:r[n],scaleName:l,scale:f,stack:a,mark:i,offset:h,defaultRef:TI({markDef:o,config:u,defaultRef:e,channel:n,scaleName:l,scale:f,mark:i,checkBarAreaWithoutZero:!r[n]})}):{field:t.getName(n)};return{[n]:d}}function ZI(t,e){return kz(t).reduce((n,r)=>{const i=t[r];return Object.assign({},n,WI(e,i,r,t=>({value:t.value})))},{})}function QI(t,e){if(NH(e)||MH(e))return"shared";if(FH(e)||DH(e))return pz(b$,t)?"independent":"shared";throw new Error("invalid model type for resolve")}function KI(t,e){const n=t.scale[e],r=pz(b$,e)?"axis":"legend";return"independent"===n?("shared"===t[r][e]&&JR(GR.independentScaleMeansIndependentGuide(e)),"independent"):t[r][e]||"shared"}class tW{constructor(t={},e={}){this.explicit=t,this.implicit=e}clone(){return new tW(sz(this.explicit),sz(this.implicit))}combine(){return Object.assign({},this.explicit,this.implicit)}get(t){return $z(this.explicit[t],this.implicit[t])}getWithExplicit(t){return void 0!==this.explicit[t]?{explicit:!0,value:this.explicit[t]}:void 0!==this.implicit[t]?{explicit:!1,value:this.implicit[t]}:{explicit:!1,value:void 0}}setWithExplicit(t,e){void 0!==e.value&&this.set(t,e.value,e.explicit)}set(t,e,n){return delete this[n?"implicit":"explicit"][t],this[n?"explicit":"implicit"][t]=e,this}copyKeyFromSplit(t,e){void 0!==e.explicit[t]?this.set(t,e.explicit[t],!0):void 0!==e.implicit[t]&&this.set(t,e.implicit[t],!1)}copyKeyFromObject(t,e){void 0!==e[t]&&this.set(t,e[t],!0)}copyAll(t){for(const e of kz(t.combine())){const n=t.getWithExplicit(e);this.setWithExplicit(e,n)}}}function eW(t){return{explicit:!0,value:t}}function nW(t){return{explicit:!1,value:t}}function rW(t){return(e,n,r,i)=>{const o=t(e.value,n.value);return o>0?e:o<0?n:iW(e,n,r,i)}}function iW(t,e,n,r){return t.explicit&&e.explicit&&JR(GR.mergeConflictingProperty(n,r,t.value,e.value)),t}function oW(t,e,n,r,i=iW){return void 0===t||void 0===t.value?e:t.explicit&&!e.explicit?t:e.explicit&&!t.explicit?e:fz(t.value)===fz(e.value)?t:i(t,e,n,r)}class aW extends tW{}function uW(t){const{legend:e}=t;return $z(e.type,sW(t))}function sW({channel:t,timeUnit:e,scaleType:n,alwaysReturn:r}){if(IT(t)){if(pz(["quarter","month","day"],e))return"symbol";if(rL(n))return r?"gradient":void 0}return r?"symbol":void 0}function cW({legend:t,legendConfig:e,timeUnit:n,channel:r,scaleType:i}){const o=$z(t.orient,e.orient,"right"),a=uW({legend:t,channel:r,timeUnit:n,scaleType:i,alwaysReturn:!0});return $z(t.direction,e[a?"gradientDirection":"symbolDirection"],function(t,e){switch(t){case"top":case"bottom":return"horizontal";case"left":case"right":case"none":case void 0:return;default:return"gradient"===e?"horizontal":void 0}}(o,a))}function lW(t,e,n,r){return{signal:`clamp(${t.getSizeSignalRef(e).signal}, ${n}, ${r})`}}function fW(t,e,n){const r=e.getScaleComponent(n).get("type");return $z(t.get("type"),sW({channel:n,scaleType:r,alwaysReturn:!0}))}function hW(t,e,n,r,i){if("symbol"!==fW(i,n,r))return;let o=Object.assign({},function(t,e,n){for(const r of n){const n=nq(r,e.markDef,e.config);void 0!==n&&(t[r]={value:n})}return t}({},n,nT),RI(n));switch(n.mark){case Uz:case Yz:case Gz:o.shape={value:"square"};break;case Xz:case Jz:o.shape={value:n.mark}}const{markDef:a,encoding:u,config:s}=n,c=a.filled,l=gW(u.opacity)||a.opacity;if(o.fill)if("fill"===r||c&&r===AT)delete o.fill;else if(o.fill.field)i.get("symbolFillColor")?delete o.fill:(o.fill={value:s.legend.symbolBaseFillColor||"black"},o.fillOpacity={value:l||1});else if(Object(Mt.z)(o.fill)){const t=mW(u.fill||u.color)||a.fill||c&&a.color;t&&(o.fill={value:t})}if(o.stroke)if("stroke"===r||!c&&r===AT)delete o.stroke;else if(o.stroke.field)delete o.stroke;else if(Object(Mt.z)(o.stroke)){const t=$z(mW(u.stroke||u.color),a.stroke,c?a.color:void 0);t&&(o.stroke={value:t})}if(r!==ST){const t=mW(u.shape)||a.shape;t&&(o.shape={value:t})}return r!==MT&&l&&(o.opacity={value:l}),o=Object.assign({},o,e),kz(o).length>0?o:void 0}function dW(t,e,n,r,i){if("gradient"!==fW(i,n,r))return;let o={};const a=gW(n.encoding.opacity)||n.markDef.opacity;return a&&(o.opacity={value:a}),o=Object.assign({},o,e),kz(o).length>0?o:void 0}function pW(t,e,n,r){const i=n.legend(r),o=n.config;let a={};if(JB(t)){const a=n.getScaleComponent(r).get("type")===IP.UTC,u=cq("datum.value",t.timeUnit,i.format,o.legend.shortTimeLabels,o.timeFormat,a);e=Object.assign({},u?{text:{signal:u}}:{},e)}return a=Object.assign({},a,e),kz(a).length>0?a:void 0}function gW(t){return vW(t,(t,e)=>Math.max(t,e.value))}function mW(t){return vW(t,(t,e)=>$z(t,e.value))}function vW(t,e){return function(t){return!!t&&!!t.condition&&(Object(Mt.z)(t.condition)||MB(t.condition))}(t)?(Object(Mt.z)(t.condition)?t.condition:[t.condition]).reduce(e,t.value):MB(t)?t.value:void 0}function yW(t){CH(t)?t.component.legends=function(t){const{encoding:e}=t;return[AT,ET,jT,NT,CT,ST,MT,DT,FT].reduce((n,r)=>{const i=e[r];return!t.legend(r)||!t.getScaleComponent(r)||jB(i)&&r===ST&&i.type===OB||(n[r]=function(t,e){const n=t.fieldDef(e),r=t.legend(e),i=new aW({},function(t,e){const n=t.scaleName(AT);if("color"===e)return t.markDef.filled?{fill:n}:{stroke:n};return{[e]:t.scaleName(e)}}(t,e));for(const o of UP){const a=xW(o,r,e,t);if(void 0!==a){const e=bW(a,o,r,n);(e||void 0===t.config.legend[o])&&i.set(o,a,e)}}const o=r.encoding||{},a=["labels","legend","title","symbols","gradient"].reduce((r,a)=>{const u=ZI(o[a]||{},t),s=m[a]?m[a](n,u,t,e,i):u;return void 0!==s&&kz(s).length>0&&(r[a]={update:s}),r},{});kz(a).length>0&&i.set("encode",a,!!r.encoding);return i}(t,r)),n},{})}(t):t.component.legends=function(t){const{legends:e,resolve:n}=t.component;for(const r of t.children)yW(r),kz(r.component.legends).forEach(i=>{n.legend[i]=KI(t.component.resolve,i),"shared"===n.legend[i]&&(e[i]=_W(e[i],r.component.legends[i]),e[i]||(n.legend[i]="independent",delete e[i]))});return kz(e).forEach(e=>{for(const r of t.children)r.component.legends[e]&&"shared"===n.legend[e]&&delete r.component.legends[e]}),e}(t)}function bW(t,e,n,r){switch(e){case"values":return!!n.values;case"title":if("title"===e&&t===r.title)return!0}return t===n[e]}function xW(t,e,n,r){const{encoding:i,mark:o}=r,a=HB(i[n]),u=r.config.legend,{timeUnit:s}=a,c=r.getScaleComponent(n).get("type");switch(t){case"direction":return cW({legend:e,legendConfig:u,timeUnit:s,channel:n,scaleType:c});case"format":if(JB(a))return;return oq(a,e.format,r.config);case"formatType":if(JB(a))return;return e.formatType;case"gradientLength":return $z(e.gradientLength,u.gradientLength,function({legend:t,legendConfig:e,model:n,channel:r,scaleType:i}){const{gradientHorizontalMaxLength:o,gradientHorizontalMinLength:a,gradientVerticalMaxLength:u,gradientVerticalMinLength:s}=e;if("horizontal"===cW({legend:t,legendConfig:e,channel:r,scaleType:i})){const r=$z(t.orient,e.orient);return"top"===r||"bottom"===r?lW(n,"width",a,o):a}return lW(n,"height",s,u)}({model:r,legend:e,legendConfig:u,channel:n,scaleType:c}));case"labelOverlap":return $z(e.labelOverlap,function(t){if(pz(["quantile","threshold","log"],t))return"greedy"}(c));case"symbolType":return $z(e.symbolType,function(t){return"line"===t?"stroke":"circle"}(o));case"title":return UB(a,r.config,{allowDisabling:!0})||void 0;case"type":return uW({legend:e,channel:n,timeUnit:s,scaleType:c,alwaysReturn:!1});case"values":return function(t,e){const n=t.values;if(n)return QB(e,n)}(e,a)}return e[t]}function _W(t,e){if(!t)return e.clone();const n=t.getWithExplicit("orient"),r=e.getWithExplicit("orient");if(n.explicit&&r.explicit&&n.value!==r.value)return;let i=!1;for(const n of qP){const r=oW(t.getWithExplicit(n),e.getWithExplicit(n),n,"legend",(t,e)=>{switch(n){case"symbolType":return wW(t,e);case"title":return dq(t,e);case"type":return i=!0,nW("symbol")}return iW(t,e,n,"legend")});t.setWithExplicit(n,r)}return i&&(((t.implicit||{}).encode||{}).gradient&&Mz(t.implicit,["encode","gradient"]),((t.explicit||{}).encode||{}).gradient&&Mz(t.explicit,["encode","gradient"])),t}function wW(t,e){return"circle"===e.value?e:t}function OW(t){const e=t.component.legends,n={};for(const r of kz(e)){const i=t.getScaleComponent(r),o=fz(i.domains);if(n[o])for(const t of n[o]){_W(t,e[r])||n[o].push(e[r])}else n[o]=[e[r].clone()]}return vz(Az(n)).map(t=>{const e=t.combine();if(e.encode&&e.encode.symbols){const t=e.encode.symbols.update;!t.fill||"transparent"===t.fill.value||t.stroke||e.stroke||(t.stroke={value:"transparent"}),e.fill&&delete t.fill}return e})}function kW(t){return NH(t)||FH(t)||DH(t)?function(t){return t.children.reduce((t,e)=>t.concat(e.assembleProjections()),AW(t))}(t):AW(t)}function AW(t){const e=t.component.projection;if(!e||e.merged)return[];const n=e.combine(),{name:r}=n,i=b(n,["name"]);if(e.data){const n={signal:`[${e.size.map(t=>t.signal).join(", ")}]`},o=e.data.reduce((e,n)=>{const r=NU(n)?n.signal:`data('${t.lookupDataSource(n)}')`;return pz(e,r)||e.push(r),e},[]);if(o.length<=0)throw new Error("Projection's fit didn't find any data sources");return[Object.assign({name:r,size:n,fit:{signal:o.length>1?`[${o.join(", ")}]`:o[0]}},i)]}return[Object.assign({name:r},{translate:{signal:"[width / 2, height / 2]"}},i)]}const EW=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];class jW extends tW{constructor(t,e,n,r){super(Object.assign({},e),{name:t}),this.specifiedProjection=e,this.size=n,this.data=r,this.merged=!1}get isFit(){return!!this.data}}function SW(t){t.component.projection=CH(t)?function(t){if(t.hasProjection){const e=t.specifiedProjection,n=!(e&&(null!=e.scale||null!=e.translate)),r=n?[t.getSizeSignalRef("width"),t.getSizeSignalRef("height")]:void 0,i=n?function(t){const e=[];[[wT,_T],[kT,OT]].forEach(n=>{(t.channelHasField(n[0])||t.channelHasField(n[1]))&&e.push({signal:t.getName(`geojson_${e.length}`)})}),t.channelHasField(ST)&&t.fieldDef(ST).type===OB&&e.push({signal:t.getName(`geojson_${e.length}`)});0===e.length&&e.push(t.requestDataName(uU));return e}(t):void 0;return new jW(t.projectionName(!0),Object.assign({},t.config.projection||{},e||{}),r,i)}return}(t):function(t){if(0===t.children.length)return;let e;t.children.forEach(t=>SW(t));const n=mz(t.children,t=>{const n=t.component.projection;if(n){if(e){const t=function(t,e){const n=mz(EW,n=>!t.explicit.hasOwnProperty(n)&&!e.explicit.hasOwnProperty(n)||!(!t.explicit.hasOwnProperty(n)||!e.explicit.hasOwnProperty(n)||fz(t.get(n))!==fz(e.get(n))));if(fz(t.size)===fz(e.size)){if(n)return t;if(fz(t.explicit)===fz({}))return e;if(fz(e.explicit)===fz({}))return t}return null}(e,n);return t&&(e=t),!!t}return e=n,!0}return!0});if(e&&n){const n=t.projectionName(!0),r=new jW(n,e.specifiedProjection,e.size,sz(e.data));return t.children.forEach(t=>{const e=t.component.projection;e&&(e.isFit&&r.data.push(...t.component.projection.data),t.renameProjection(e.get("name"),n),e.merged=!0)}),r}return}(t)}class CW extends pq{constructor(t){let e;if(super(null),rU(t=t||{name:"source"})||(e=t.format?Object.assign({},lz(t.format,["parse"])):{}),eU(t))this._data={values:t.values};else if(tU(t)){if(this._data={url:t.url},!e.type){let n=/(?:\.([^.]+))?$/.exec(t.url)[1];pz(["json","csv","tsv","dsv","topojson"],n)||(n="json"),e.type=n}}else oU(t)?this._data={values:[{type:"Sphere"}]}:(nU(t)||rU(t))&&(this._data={});this._generator=rU(t),t.name&&(this._name=t.name),e&&kz(e).length>0&&(this._data.format=e)}get data(){return this._data}hasName(){return!!this._name}get isGenerator(){return this._generator}get dataName(){return this._name}set dataName(t){this._name=t}set parent(t){throw new Error("Source nodes have to be roots.")}remove(){throw new Error("Source nodes are roots and cannot be removed.")}hash(){throw new Error("Cannot hash sources")}assemble(){return Object.assign({name:this._name},this._data,{transform:[]})}}function MW(t){for(const e of t){for(const t of e.children)if(t.parent!==e)return console.error("Dataflow graph is inconsistent.",e,t),!1;if(!MW(e.children))return!1}return!0}class DW{constructor(){this._mutated=!1}setMutated(){this._mutated=!0}get mutatedFlag(){return this._mutated}}class FW extends DW{constructor(){super(),this._continue=!1}setContinue(){this._continue=!0}get continueFlag(){return this._continue}get flags(){return{continueFlag:this.continueFlag,mutatedFlag:this.mutatedFlag}}set flags({continueFlag:t,mutatedFlag:e}){t&&this.setContinue(),e&&this.setMutated()}reset(){}optimizeNextFromLeaves(t){if(t instanceof CW)return!1;const e=t.parent,{continueFlag:n}=this.run(t);return n&&this.optimizeNextFromLeaves(e),this.mutatedFlag}}class NW extends DW{}function zW(t,e,n,r){if(SB(n)&&eP(n.bin))t.add(TB(n,{})),t.add(TB(n,{binSuffix:"end"})),KB(n,e)&&t.add(TB(n,{binSuffix:"range"}));else if(function(t){switch(t){case _T:case OT:case wT:case kT:return!0}return!1}(e)){const n=function(t){switch(t){case _T:return"y";case OT:return"y2";case wT:return"x";case kT:return"x2"}}(e);t.add(r.getName(n))}else t.add(TB(n));return t}class TW extends pq{constructor(t,e,n){super(t),this.dimensions=e,this.measures=n}clone(){return new TW(null,new Set(this.dimensions),sz(this.measures))}get groupBy(){return this.dimensions}static makeFromEncoding(t,e){let n=!1;e.forEachFieldDef(t=>{t.aggregate&&(n=!0)});const r={},i=new Set;return n?(e.forEachFieldDef((t,n)=>{const{aggregate:o,field:a}=t;if(o)if("count"===o)r["*"]=r["*"]||{},r["*"].count=new Set([TB(t,{forAs:!0})]);else{if(uT(o)||sT(o)){const t=uT(o)?"argmin":"argmax",e=o[t];r[e]=r[e]||{},r[e][t]=new Set([TB({op:t,field:e},{forAs:!0})])}else r[a]=r[a]||{},r[a][o]=new Set([TB(t,{forAs:!0})]);M$(n)&&"unaggregated"===e.scaleDomain(n)&&(r[a]=r[a]||{},r[a].min=new Set([TB({field:a,aggregate:"min"},{forAs:!0})]),r[a].max=new Set([TB({field:a,aggregate:"max"},{forAs:!0})]))}else zW(i,n,t,e)}),i.size+kz(r).length===0?null:new TW(t,i,r)):null}static makeFromTransform(t,e){const n=new Set,r={};for(const t of e.aggregate){const{op:e,field:n,as:i}=t;e&&("count"===e?(r["*"]=r["*"]||{},r["*"].count=new Set([i||TB(t,{forAs:!0})])):(r[n]=r[n]||{},r[n][e]=new Set([i||TB(t,{forAs:!0})])))}for(const t of e.groupby||[])n.add(t);return n.size+kz(r).length===0?null:new TW(t,n,r)}merge(t){return function(t,e){if(t.size!==e.size)return!1;for(const n of t)if(!e.has(n))return!1;return!0}(this.dimensions,t.dimensions)?(function(t,e){for(const n of kz(e)){const r=e[n];for(const e of kz(r))n in t?t[n][e]=new Set([...t[n][e]||[],...r[e]]):t[n]={[e]:r[e]}}}(this.measures,t.measures),!0):(function(...t){VR.debug.apply(VR,arguments)}("different dimensions, cannot merge"),!1)}addDimensions(t){t.forEach(this.dimensions.add,this.dimensions)}dependentFields(){return new Set([...this.dimensions,...kz(this.measures)])}producedFields(){const t=new Set;for(const e of kz(this.measures))for(const n of kz(this.measures[e])){const r=this.measures[e][n];0===r.size?t.add(`${n}_${e}`):r.forEach(t.add,t)}return t}hash(){return`Aggregate ${hz({dimensions:this.dimensions,measures:this.measures})}`}assemble(){const t=[],e=[],n=[];for(const r of kz(this.measures))for(const i of kz(this.measures[r]))for(const o of this.measures[r][i])n.push(o),t.push(i),e.push("*"===r?null:Nz(r));return{type:"aggregate",groupby:[...this.dimensions],ops:t,fields:e,as:n}}}function $W(t,e,n){let r;r=function(t){return"as"in t}(t)?Object(Mt.G)(t.as)?[t.as,`${t.as}_end`]:[t.as[0],t.as[1]]:[TB(t,{forAs:!0}),TB(t,{binSuffix:"end",forAs:!0})];const i=VB(e,void 0)||{},o=function(t,e){return`${tP(t)}_${e}`}(i,t.field),{signal:a,extentSignal:u}=function(t,e){return{signal:t.getName(`${e}_bins`),extentSignal:t.getName(`${e}_extent`)}}(n,o);return{key:o,binComponent:Object.assign({bin:i,field:t.field,as:[r]},a?{signal:a}:{},u?{extentSignal:u}:{})}}class RW extends pq{constructor(t,e){super(t),this.bins=e}clone(){return new RW(null,sz(this.bins))}static makeFromEncoding(t,e){const n=e.reduceFieldDef((t,n,r)=>{if(SB(n)&&eP(n.bin)){const{key:i,binComponent:o}=$W(n,n.bin,e);t[i]=Object.assign({},o,t[i],function(t,e,n,r){if(KB(e,n)){const i=CH(t)&&(t.axis(n)||t.legend(n))||{},o=TB(e,{expr:"datum"}),a=TB(e,{expr:"datum",binSuffix:"end"});return{formulaAs:TB(e,{binSuffix:"range",forAs:!0}),formula:sq(o,a,i.format,r)}}return{}}(e,n,r,e.config))}return t},{});return 0===kz(n).length?null:new RW(t,n)}static makeFromTransform(t,e,n){const{key:r,binComponent:i}=$W(e,e.bin,n);return new RW(t,{[r]:i})}merge(t,e){for(const n of kz(t.bins))n in this.bins?(e(t.bins[n].signal,this.bins[n].signal),this.bins[n].as=xz([...this.bins[n].as,...t.bins[n].as],hz)):this.bins[n]=t.bins[n];for(const e of t.children)t.removeChild(e),e.parent=this;t.remove()}producedFields(){return new Set(vz(vz(Az(this.bins).map(t=>t.as))))}dependentFields(){return new Set(Az(this.bins).map(t=>t.field))}hash(){return`Bin ${hz(this.bins)}`}assemble(){return vz(Az(this.bins).map(t=>{const e=[],[n,...r]=t.as,i=Object.assign({type:"bin",field:t.field,as:n,signal:t.signal},t.bin);!t.bin.extent&&t.extentSignal&&(e.push({type:"extent",field:t.field,signal:t.extentSignal}),i.extent={signal:t.extentSignal}),e.push(i);for(const t of r)for(let r=0;r<2;r++)e.push({type:"formula",expr:TB({field:n[r]},{expr:"datum"}),as:t[r]});return t.formula&&e.push({type:"formula",expr:t.formula,as:t.formulaAs}),e}))}}class BW extends pq{constructor(t,e,n,r){super(t),this.model=e,this.name=n,this.data=r;for(const t of HT){const n=e.facet[t];if(n){const{bin:r,sort:i}=n;this[t]=Object.assign({name:e.getName(`${t}_domain`),fields:[TB(n),...eP(r)?[TB(n,{binSuffix:"end"})]:[]]},XU(i)?{sortField:i}:Object(Mt.z)(i)?{sortIndexField:yq(n,t)}:{})}}this.childModel=e.child}hash(){let t="Facet";for(const e of HT)this[e]&&(t+=` ${e.charAt(0)}:${hz(this[e])}`);return t}get fields(){const t=[];for(const e of HT)this[e]&&this[e].fields&&t.push(...this[e].fields);return t}getSource(){return this.name}getChildIndependentFieldsWithStep(){const t={};for(const e of["x","y"]){const n=this.childModel.component.scales[e];if(n&&!n.merged){const r=n.get("type"),i=n.get("range");if(eL(r)&&zU(i)){const n=fH(hH(this.childModel,e));n?t[e]=n:JR("Unknown field for ${channel}. Cannot calculate view size.")}}}return t}assembleRowColumnHeaderData(t,e,n){const r={row:"y",column:"x"}[t],i=[],o=[],a=[];n&&n[r]&&(e?(i.push(`distinct_${n[r]}`),o.push("max")):(i.push(n[r]),o.push("distinct")),a.push(`distinct_${n[r]}`));const{sortField:u,sortIndexField:s}=this[t];if(u){const{op:t=VU,field:e}=u;i.push(e),o.push(t),a.push(TB(u,{forAs:!0}))}else s&&(i.push(s),o.push("max"),a.push(s));return{name:this[t].name,source:e||this.data,transform:[Object.assign({type:"aggregate",groupby:this[t].fields},i.length?{fields:i,ops:o,as:a}:{})]}}assembleFacetHeaderData(t){const{columns:e}=this.model.layout,{layoutHeaders:n}=this.model.component,r=[],i={};for(const t of wq){for(const e of Oq){const r=n[t]&&n[t][e]||[];for(const e of r)if(e.axes&&e.axes.length>0){i[t]=!0;break}}if(i[t]){const n=`length(data("${this.facet.name}"))`,i="row"===t?e?{signal:`ceil(${n} / ${e})`}:1:e?{signal:`min(${n}, ${e})`}:{signal:n};r.push({name:`${this.facet.name}_${t}`,transform:[{type:"sequence",start:0,stop:i}]})}}const{row:o,column:a}=i;return(o||a)&&r.unshift(this.assembleRowColumnHeaderData("facet",null,t)),r}assemble(){const t=[];let e=null;const n=this.getChildIndependentFieldsWithStep(),{column:r,row:i,facet:o}=this;if(r&&i&&(n.x||n.y)){e=`cross_${this.column.name}_${this.row.name}`;const r=[].concat(n.x||[],n.y||[]),i=r.map(()=>"distinct");t.push({name:e,source:this.data,transform:[{type:"aggregate",groupby:this.fields,fields:r,ops:i}]})}for(const r of[gT,pT])this[r]&&t.push(this.assembleRowColumnHeaderData(r,e,n));if(o){const e=this.assembleFacetHeaderData(n);e&&t.push(...e)}return t}}class PW extends pq{constructor(t,e,n){super(t),this.model=e,this.filter=n,this.expr=_I(this.model,this.filter,this),this._dependentFields=mq(this.expr)}clone(){return new PW(null,this.model,sz(this.filter))}dependentFields(){return this._dependentFields}assemble(){return{type:"filter",expr:this.expr}}hash(){return`Filter ${this.expr}`}}function LW(t){return"'"===t[0]&&"'"===t[t.length-1]||'"'===t[0]&&'"'===t[t.length-1]?t.slice(1,-1):t}class UW extends pq{clone(){return new UW(null,sz(this._parse))}constructor(t,e){super(t),this._parse=e}hash(){return`Parse ${hz(this._parse)}`}static makeExplicit(t,e,n){let r={};const i=e.data;return!rU(i)&&i&&i.format&&i.format.parse&&(r=i.format.parse),this.makeWithAncestors(t,r,{},n)}static makeImplicitFromFilterTransform(t,e,n){const r={};return function t(e,n){if(oz(e))t(e.not,n);else if(iz(e))for(const r of e.and)t(r,n);else if(rz(e))for(const r of e.or)t(r,n);else n(e)}(e.filter,t=>{if(mU(t)){let e=null;cU(t)?e=t.equal:pU(t)?e=t.range[0]:gU(t)&&(e=(t.oneOf||t.in)[0]),e&&(QR(e)?r[t.field]="date":Object(Mt.D)(e)?r[t.field]="number":Object(Mt.G)(e)&&(r[t.field]="string")),t.timeUnit&&(r[t.field]="date")}}),0===kz(r).length?null:this.makeWithAncestors(t,{},r,n)}static makeImplicitFromEncoding(t,e,n){const r={};function i(t){var e;JB(t)?r[t.field]="date":function(t){return"quantitative"===t.type||eP(t.bin)}(t)&&((e=t.aggregate)&&Object(Mt.G)(e)&&pz(["min","max"],e))?r[t.field]="number":Tz(t.field)>1?t.field in r||(r[t.field]="flatten"):DB(t)&&XU(t.sort)&&Tz(t.sort.field)>1&&(t.sort.field in r||(r[t.sort.field]="flatten"))}return(CH(e)||MH(e))&&e.forEachFieldDef((t,n)=>{if(SB(t))i(t);else{const r=u$(n);if(r===n)throw new Error(`Non-secondary channel ${n} must have type in its field definition ${JSON.stringify(t)}`);{const n=e.fieldDef(r);i(Object.assign({},t,{type:n.type}))}}}),this.makeWithAncestors(t,{},r,n)}static makeWithAncestors(t,e,n,r){for(const t of kz(n)){const e=r.getWithExplicit(t);void 0!==e.value&&(e.explicit||e.value===n[t]||"derived"===e.value||"flatten"===n[t]?delete n[t]:JR(GR.differentParse(t,n[t],e.value)))}for(const t of kz(e)){const n=r.get(t);void 0!==n&&(n===e[t]?delete e[t]:JR(GR.differentParse(t,e[t],n)))}const i=new tW(e,n);r.copyAll(i);const o={};for(const t of kz(i.combine())){const e=i.get(t);null!==e&&(o[t]=e)}return 0===kz(o).length||r.parseNothing?null:new UW(t,o)}get parse(){return this._parse}merge(t){this._parse=Object.assign({},this._parse,t.parse),t.remove()}assembleFormatParse(){const t={};for(const e of kz(this._parse)){const n=this._parse[e];1===Tz(e)&&(t[e]=n)}return t}producedFields(){return new Set(kz(this._parse))}dependentFields(){return new Set(kz(this._parse))}assembleTransforms(t=!1){return kz(this._parse).filter(e=>!t||Tz(e)>1).map(t=>{const e=function(t,e){const n=Fz(t);if("number"===e)return`toNumber(${n})`;if("boolean"===e)return`toBoolean(${n})`;if("string"===e)return`toString(${n})`;if("date"===e)return`toDate(${n})`;if("flatten"===e)return n;if(0===e.indexOf("date:"))return`timeParse(${n},'${LW(e.slice(5,e.length))}')`;if(0===e.indexOf("utc:"))return`utcParse(${n},'${LW(e.slice(4,e.length))}')`;return JR(GR.unrecognizedParse(e)),null}(t,this._parse[t]);return e?{type:"formula",expr:e,as:zz(t)}:null}).filter(t=>null!==t)}}class qW extends pq{constructor(t,e){super(t),this.transform=e}clone(){return new qW(null,sz(this.transform))}addDimensions(t){this.transform.groupby=xz(this.transform.groupby.concat(t),t=>t)}dependentFields(){const t=new Set;return this.transform.groupby.forEach(e=>t.add(e)),this.transform.joinaggregate.map(t=>t.field).filter(t=>void 0!==t).forEach(e=>t.add(e)),t}producedFields(){return new Set(this.transform.joinaggregate.map(this.getDefaultName))}getDefaultName(t){return t.as||TB(t)}hash(){return`JoinAggregateTransform ${hz(this.transform)}`}assemble(){const t=[],e=[],n=[];for(const r of this.transform.joinaggregate)e.push(r.op),n.push(this.getDefaultName(r)),t.push(void 0===r.field?null:r.field);const r=this.transform.groupby;return Object.assign({type:"joinaggregate",as:n,ops:e,fields:t},void 0!==r?{groupby:r}:{})}}class IW extends pq{clone(){return new IW(null,sz(this._stack))}constructor(t,e){super(t),this._stack=e}static makeFromTransform(t,e){const{stack:n,groupby:r,as:i,offset:o="zero"}=e,a=[],u=[];if(void 0!==e.sort)for(const t of e.sort)a.push(t.field),u.push($z(t.order,"ascending"));const s={field:a,order:u};let c;return c=function(t){return Object(Mt.z)(t)&&t.every(t=>Object(Mt.G)(t))&&t.length>1}(i)?i:Object(Mt.G)(i)?[i,i+"_end"]:[e.stack+"_start",e.stack+"_end"],new IW(t,{stackField:n,groupby:r,offset:o,sort:s,facetby:[],as:c})}static makeFromEncoding(t,e){const n=e.stack,{encoding:r}=e;if(!n)return null;let i;if(n.groupbyChannel){i=HB(r[n.groupbyChannel])}const o=function(t){return t.stack.stackBy.reduce((t,e)=>{const n=TB(e.fieldDef);return n&&t.push(n),t},[])}(e),a=e.encoding.order;let u;return u=Object(Mt.z)(a)||jB(a)?lq(a):o.reduce((t,e)=>(t.field.push(e),t.order.push("descending"),t),{field:[],order:[]}),new IW(t,{dimensionFieldDef:i,stackField:e.vgField(n.fieldChannel),facetby:[],stackby:o,sort:u,offset:n.offset,impute:n.impute,as:[e.vgField(n.fieldChannel,{suffix:"start",forAs:!0}),e.vgField(n.fieldChannel,{suffix:"end",forAs:!0})]})}get stack(){return this._stack}addDimensions(t){this._stack.facetby.push(...t)}dependentFields(){const t=new Set;t.add(this._stack.stackField),this.getGroupbyFields().forEach(t.add),this._stack.facetby.forEach(t.add);const e=this._stack.sort.field;return Object(Mt.z)(e)?e.forEach(t.add):t.add(e),t}producedFields(){return new Set(this._stack.as)}hash(){return`Stack ${hz(this._stack)}`}getGroupbyFields(){const{dimensionFieldDef:t,impute:e,groupby:n}=this._stack;return t?t.bin?e?[TB(t,{binSuffix:"mid"})]:[TB(t,{}),TB(t,{binSuffix:"end"})]:[TB(t)]:n||[]}assemble(){const t=[],{facetby:e,dimensionFieldDef:n,stackField:r,stackby:i,sort:o,offset:a,impute:u,as:s}=this._stack;return u&&n&&(n.bin&&t.push({type:"formula",expr:"("+TB(n,{expr:"datum"})+"+"+TB(n,{expr:"datum",binSuffix:"end"})+")/2",as:TB(n,{binSuffix:"mid",forAs:!0})}),t.push({type:"impute",field:r,groupby:[...i,...e],key:TB(n,{binSuffix:"mid"}),method:"value",value:0})),t.push({type:"stack",groupby:[...this.getGroupbyFields(),...e],field:r,sort:o,as:s,offset:a}),t}}class WW extends pq{constructor(t,e){super(t),this.transform=e}clone(){return new WW(null,sz(this.transform))}addDimensions(t){this.transform.groupby=xz(this.transform.groupby.concat(t),t=>t)}dependentFields(){const t=new Set;return this.transform.groupby.forEach(e=>t.add(e)),this.transform.sort.forEach(e=>t.add(e.field)),this.transform.window.map(t=>t.field).filter(t=>void 0!==t).forEach(e=>t.add(e)),t}producedFields(){return new Set(this.transform.window.map(this.getDefaultName))}getDefaultName(t){return t.as||TB(t)}hash(){return`WindowTransform ${hz(this.transform)}`}assemble(){const t=[],e=[],n=[],r=[];for(const i of this.transform.window)e.push(i.op),n.push(this.getDefaultName(i)),r.push(void 0===i.param?null:i.param),t.push(void 0===i.field?null:i.field);const i=this.transform.frame,o=this.transform.groupby;if(i&&null===i[0]&&null===i[1]&&e.every(t=>cT(t)))return Object.assign({type:"joinaggregate",as:n,ops:e,fields:t},void 0!==o?{groupby:o}:{});const a=[],u=[];if(void 0!==this.transform.sort)for(const t of this.transform.sort)a.push(t.field),u.push(t.order||"ascending");const s={field:a,order:u},c=this.transform.ignorePeers;return Object.assign({type:"window",params:r,as:n,ops:e,fields:t,sort:s},void 0!==c?{ignorePeers:c}:{},void 0!==o?{groupby:o}:{},void 0!==i?{frame:i}:{})}}class HW extends FW{run(t){const e=t.parent;if(t instanceof UW){if(e instanceof CW)return this.flags;if(e.numChildren()>1)return this.setContinue(),this.flags;if(e instanceof UW)this.setMutated(),e.merge(t);else{if(Oz(e.producedFields(),t.dependentFields()))return this.setContinue(),this.flags;this.setMutated(),t.swapWithParent()}}return this.setContinue(),this.flags}}class GW extends NW{mergeNodes(t,e){const n=e.shift();for(const r of e)t.removeChild(r),r.parent=n,r.remove()}run(t){const e=t.children.map(t=>t.hash()),n={};for(let r=0;r<e.length;r++)void 0===n[e[r]]?n[e[r]]=[t.children[r]]:n[e[r]].push(t.children[r]);for(const e of kz(n))n[e].length>1&&(this.setMutated(),this.mergeNodes(t,n[e]));for(const e of t.children)this.run(e);return this.mutatedFlag}}class YW extends FW{run(t){return t instanceof gq||t.numChildren()>0||t instanceof BW?this.flags:(this.setMutated(),t.remove(),this.flags)}}class VW extends FW{constructor(){super(...arguments),this.fields=new Set}run(t){if(this.setContinue(),t instanceof Bq){const e=t.producedFields();_z(e,this.fields)?(this.setMutated(),t.remove()):this.fields=new Set([...this.fields,...e])}return this.flags}reset(){this.fields.clear()}}function XW(t){if(t instanceof BW)if(1!==t.numChildren()||t.children[0]instanceof gq){const n=t.model.component.data.main;!function t(e){if(e instanceof gq&&e.type===uU&&1===e.numChildren()){const n=e.children[0];n instanceof BW||(n.swapWithParent(),t(e))}}(n);const r=(e=t,function t(n){if(!(n instanceof BW)){const r=n.clone();if(r instanceof gq){const t=tH+r.getSource();r.setSource(t),e.model.component.data.outputNodes[t]=r}else(r instanceof TW||r instanceof IW||r instanceof WW||r instanceof qW)&&r.addDimensions(e.fields);return vz(n.children.map(t)).forEach(t=>t.parent=r),[r]}return vz(n.children.map(t))}),i=vz(t.children.map(r));for(const t of i)t.parent=n}else{const e=t.children[0];(e instanceof TW||e instanceof IW||e instanceof WW||e instanceof qW)&&e.addDimensions(t.fields),e.swapWithParent(),XW(t)}else t.children.map(XW);var e}class JW extends NW{run(t){t instanceof gq&&!t.isRequired()&&(this.setMutated(),t.remove());for(const e of t.children)this.run(e);return this.mutatedFlag}}class ZW extends FW{run(t){const e=t.parent,n=e.children.filter(t=>t instanceof UW);if(n.length>1){const t={};for(const e of n){const n=e.parse;for(const e of kz(n))void 0===t[e]?t[e]=n[e]:t[e]!==n[e]&&delete t[e]}if(0!==kz(t).length){this.setMutated();const r=new UW(e,t);for(const i of n){for(const e of kz(t))delete i.parse[e];e.removeChild(i),i.parent=r,0===kz(i.parse).length&&i.remove()}}}return this.setContinue(),this.flags}}class QW extends FW{run(t){const e=t.parent,n=e.children.filter(t=>t instanceof TW),r={};for(const t of n){const e=hz(kz(t.groupBy).sort());e in r||(r[e]=[]),r[e].push(t)}for(const t of kz(r)){const n=r[t];if(n.length>1){const t=n.pop();for(const r of n)t.merge(r)&&(e.removeChild(r),r.parent=t,r.remove(),this.setMutated())}}return this.setContinue(),this.flags}}class KW extends FW{constructor(t){super(),this.model=t}run(t){const e=t.parent,n=!(e instanceof CW||e instanceof PW||e instanceof UW),r=[],i=[];for(const t of e.children)t instanceof RW&&(n&&!Oz(e.producedFields(),t.dependentFields())?r.push(t):i.push(t));if(r.length>0){const t=r.pop();for(const e of r)t.merge(e,this.model.renameSignal.bind(this.model));this.setMutated(),e instanceof RW?e.merge(t,this.model.renameSignal.bind(this.model)):t.swapWithParent()}if(i.length>1){const t=i.pop();for(const e of i)t.merge(e,this.model.renameSignal.bind(this.model));this.setMutated()}return this.setContinue(),this.flags}}const tH="scale_",eH=5;function nH(t){const e=[];return t.forEach(function t(n){0===n.numChildren()?e.push(n):n.children.forEach(t)}),e}function rH(t){return t}function iH(t,e,n){return e.map(e=>{if(t instanceof FW){const n=t.optimizeNextFromLeaves(e);return t.reset(),n}return t.run(e)}).some(rH)||n}function oH(t,e){let n=t.sources,r=!1;return r=iH(new JW,n,r),n=n.filter(t=>t.numChildren()>0),r=iH(new YW,nH(n),r),n=n.filter(t=>t.numChildren()>0),r=iH(new HW,nH(n),r),r=iH(new KW(e),nH(n),r),r=iH(new VW,nH(n),r),r=iH(new ZW,nH(n),r),r=iH(new QW,nH(n),r),r=iH(new GW,n,r),t.sources=n,r}class aH{constructor(t){Object.defineProperty(this,"signal",{enumerable:!0,get:t})}static fromName(t,e){return new aH(()=>t(e))}}function uH(t){CH(t)?function(t){const e=t.specifiedScales,n=t.component.scales;kz(n).forEach(r=>{const i=e[r],o=i?i.domain:void 0,a=function(t,e){const n=t.getScaleComponent(e).get("type"),r=function(t,e,n,r){if("unaggregated"===t){const{valid:t,reason:r}=lH(e,n);if(!t)return void JR(r)}else if(void 0===t&&r.useUnaggregatedDomain){const{valid:t}=lH(e,n);if(t)return"unaggregated"}return t}(t.scaleDomain(e),t.fieldDef(e),n,t.config.scale);r!==t.scaleDomain(e)&&(t.specifiedScales[e]=Object.assign({},t.specifiedScales[e],{domain:r}));if("x"===e&&t.channelHasField("x2"))return t.channelHasField("x")?sH(n,r,t,"x").concat(sH(n,r,t,"x2")):sH(n,r,t,"x2");if("y"===e&&t.channelHasField("y2"))return t.channelHasField("y")?sH(n,r,t,"y").concat(sH(n,r,t,"y2")):sH(n,r,t,"y2");return sH(n,r,t,e)}(t,r),u=n[r];if(u.domains=a,aL(o)&&u.set("domainRaw",{signal:Qq+hz(o)},!0),t.component.data.isFaceted){let e=t;for(;!MH(e)&&e.parent;)e=e.parent;const n=e.component.resolve.scale[r];if("shared"===n)for(const t of a)TU(t)&&(t.data=tH+t.data.replace(tH,""))}})}(t):function(t){for(const e of t.children)uH(e);const e=t.component.scales;kz(e).forEach(n=>{let r,i=null;for(const e of t.children){const t=e.component.scales[n];if(t){r=void 0===r?t.domains:r.concat(t.domains);const e=t.get("domainRaw");i&&e&&i.signal!==e.signal&&JR("The same selection must be used to override scale domains in a layered view."),i=e}}e[n].domains=r,i&&e[n].set("domainRaw",i,!0)})}(t)}function sH(t,e,n,r){const i=n.fieldDef(r);if(e&&"unaggregated"!==e&&!aL(e)){const{type:t,timeUnit:n}=i;return"temporal"===t||n?function(t,e,n){return t.map(t=>({signal:`{data: ${ZB(t,{timeUnit:n,type:e})}}`}))}(e,t,n):[e]}const o=n.stack;if(o&&r===o.fieldChannel){if("normalize"===o.offset)return[[0,1]];const t=n.requestDataName(uU);return[{data:t,field:n.vgField(r,{suffix:"start"})},{data:t,field:n.vgField(r,{suffix:"end"})}]}const a=M$(r)?function(t,e,n){if(!eL(n))return;const r=t.fieldDef(e),i=r.sort;if(JU(i))return{op:"min",field:yq(r,e),order:"ascending"};const o=null!==t.stack;if(XU(i))return cH(i,o);if(function(t){return!!t&&!!t.encoding}(i)){const{encoding:e,order:n}=i,{aggregate:r,field:a}=t.fieldDef(e),u={op:r,field:a,order:n};return cH(u,o)}if("descending"===i)return{op:"min",field:t.vgField(e),order:"descending"};if(pz(["ascending",void 0],i))return!0;return}(n,r,t):void 0;if("unaggregated"===e){const t=n.requestDataName(uU),{field:e}=i;return[{data:t,field:TB({field:e,aggregate:"min"})},{data:t,field:TB({field:e,aggregate:"max"})}]}if(eP(i.bin)){if(eL(t))return"bin-ordinal"===t?[]:[{data:jz(a)?n.requestDataName(uU):n.requestDataName(sU),field:n.vgField(r,KB(i,r)?{binSuffix:"range"}:{}),sort:!0!==a&&Object(Mt.E)(a)?a:{field:n.vgField(r,{}),op:"min"}}];if(eP(i.bin)){const t=n.getName(TB(i,{suffix:"bins"}));return[new aH(()=>{const e=n.getSignalName(t);return`[${e}.start, ${e}.stop]`})]}return[{data:n.requestDataName(uU),field:n.vgField(r,{})}]}return a?[{data:jz(a)?n.requestDataName(uU):n.requestDataName(sU),field:n.vgField(r),sort:a}]:[{data:n.requestDataName(uU),field:n.vgField(r)}]}function cH(t,e){const{op:n,field:r,order:i}=t;return Object.assign({op:n||(e?"sum":VU)},r?{field:Nz(r)}:{},i?{order:i}:{})}function lH(t,e){const{aggregate:n,type:r}=t;return n?Object(Mt.G)(n)&&!dT[n]?{valid:!1,reason:GR.unaggregateDomainWithNonSharedDomainOp(n)}:"quantitative"===r&&"log"===e?{valid:!1,reason:GR.unaggregatedDomainWithLogScale(t)}:{valid:!0}:{valid:!1,reason:GR.unaggregateDomainHasNoEffectForRawField(t)}}function fH(t){if(TU(t)&&Object(Mt.G)(t.field))return t.field;if(function(t){return!Object(Mt.z)(t)&&"fields"in t&&!("data"in t)}(t)){let e;for(const n of t.fields)if(TU(n)&&Object(Mt.G)(n.field))if(e){if(e!==n.field)return JR("Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect."),e}else e=n.field;return JR("Detected faceted independent scales that union domain of identical fields from different source detected. We will assume that this is the same field from a different fork of the same data source. However, if this is not case, the result view size maybe incorrect."),e}if(function(t){return!Object(Mt.z)(t)&&"fields"in t&&"data"in t}(t)){JR("Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.");const e=t.fields[0];return Object(Mt.G)(e)?e:void 0}}function hH(t,e){return function(t){const e=xz(t.map(t=>{if(TU(t)){const{sort:e}=t;return b(t,["sort"])}return t}),hz),n=xz(t.map(t=>{if(TU(t)){const e=t.sort;return void 0===e||jz(e)||("count"===e.op&&delete e.field,"ascending"===e.order&&delete e.order),e}}).filter(t=>void 0!==t),hz);if(0===e.length)return;if(1===e.length){const e=t[0];if(TU(e)&&n.length>0){let t=n[0];return n.length>1&&(JR(GR.MORE_THAN_ONE_SORT),t=!0),Object.assign({},e,{sort:t})}return e}const r=xz(n.map(t=>jz(t)?t:"count"===t.op?t:(JR(GR.domainSortDropped(t)),!0)),hz);let i;1===r.length?i=r[0]:r.length>1&&(JR(GR.MORE_THAN_ONE_SORT),i=!0);const o=xz(t.map(t=>TU(t)?t.data:null),t=>t);if(1===o.length&&null!==o[0])return Object.assign({data:o[0],fields:e.map(t=>t.field)},i?{sort:i}:{});return Object.assign({fields:e},i?{sort:i}:{})}(t.component.scales[e].domains.map(e=>(TU(e)&&(e.data=t.lookupDataSource(e.data)),e)))}function dH(t){return kz(t.component.scales).reduce((e,n)=>{const r=t.component.scales[n];if(r.merged)return e;const i=r.combine();let{domainRaw:o}=i;const{name:a,type:u,domainRaw:s,range:c}=i,l=b(i,["name","type","domainRaw","range"]),f=function(t,e,n){if(("x"===n||"y"===n)&&zU(t))return{step:{signal:e+"_step"}};return t}(i.range,a,n);o&&function(t){return t.signal.indexOf(Qq)>=0}(o)&&(o=function(t,e){const n=JSON.parse(e.signal.replace(Qq,"")),r=Sz(n.selection),i=n.encoding;let o=n.field,a=t.component.selection&&t.component.selection[r];if(!a){if(a=t.getSelectionComponent(r,n.selection),i||o){if(i&&!o){const t=a.project.items.filter(t=>t.channel===i);!t.length||t.length>1?(o=a.project.items[0].field,JR((t.length?"Multiple ":"No ")+`matching ${Object(Mt.W)(i)} encoding found for selection ${Object(Mt.W)(n.selection)}. `+`Using "field": ${Object(Mt.W)(o)}.`)):o=t[0].field}}else o=a.project.items[0].field,a.project.items.length>1&&JR('A "field" or "encoding" must be specified when using a selection as a scale domain. '+`Using "field": ${Object(Mt.W)(o)}.`);return{signal:Fz(o,r)}}return JR('Use "bind": "scales" to setup a binding for scales and selections within the same view.'),{signal:"null"}}(t,o));const h=hH(t,n);return e.push(Object.assign({name:a,type:u},h?{domain:h}:{},o?{domainRaw:o}:{},{range:f},l)),e},[])}class pH extends tW{constructor(t,e){super({},{name:t}),this.merged=!1,this.domains=[],this.setWithExplicit("type",e)}get domainDefinitelyIncludesZero(){if(!1!==this.get("zero"))return!0;const t=this.domains;return!!Object(Mt.z)(t)&&gz(t,t=>Object(Mt.z)(t)&&2===t.length&&t[0]<=0&&t[1]>=0)}}const gH=["range","rangeStep","scheme"];function mH(t){return"x"===t?"width":"y"===t?"height":void 0}function vH(t){const e=t.component.scales;C$.forEach(n=>{const r=e[n];if(!r)return;const i=t.getScaleComponent(n),o=t.specifiedScales[n],a=t.fieldDef(n),u=mH(n);let s=u?!!t.component.layoutSize.get(u):void 0;const c=i.get("type"),l=pz(["point","band"],c)||!!o.rangeStep;u&&t.fit&&!s&&l&&(JR(GR.CANNOT_FIX_RANGE_STEP_WITH_FIT),s=!0);const f=function(t){const e=[];for(const n of b$){const r=yH(t,n);void 0!==r&&e.push(r)}return e}(t),h=function(t,e,n,r,i,o,a,u,s,c,l){const f=s||null===i.rangeStep;for(const e of gH)if(void 0!==i[e]){const r=pL(n,e),o=gL(t,e);if(r)if(o)JR(o);else switch(e){case"range":return eW(i[e]);case"scheme":return eW(bH(i[e]));case"rangeStep":{const n=i[e];if(null!==n){if(!s)return eW({step:n});JR(GR.rangeStepDropped(t))}}}else JR(GR.scalePropertyNotWorkWithScaleType(n,e,t))}return nW(function(t,e,n,r,i,o,a,u,s,c,l){switch(t){case vT:case yT:if(pz(["point","band"],n)&&!c)if(t===vT&&"text"===a){if(i.scale.textXRangeStep)return{step:i.scale.textXRangeStep}}else if(i.scale.rangeStep)return{step:i.scale.rangeStep};return t===yT&&nL(n)?[aH.fromName(e,u),0]:[0,aH.fromName(e,u)];case CT:{const e=function(t,e,n){if(e)return 0;switch(t){case"bar":case"tick":return n.scale.minBandSize;case"line":case"trail":case"rule":return n.scale.minStrokeWidth;case"text":return n.scale.minFontSize;case"point":case"square":case"circle":return n.scale.minSize}throw new Error(GR.incompatibleChannel("size",t))}(a,o,i),r=function(t,e,n){const r=n.scale;switch(t){case"bar":case"tick":{if(void 0!==n.scale.maxBandSize)return n.scale.maxBandSize;const t=_H(e,n.scale);return Object(Mt.D)(t)?t-1:new aH(()=>`${t.signal} - 1`)}case"line":case"trail":case"rule":return n.scale.maxStrokeWidth;case"text":return n.scale.maxFontSize;case"point":case"square":case"circle":{if(n.scale.maxSize)return n.scale.maxSize;const t=_H(e,r);return Object(Mt.D)(t)?Math.pow(xH*t,2):new aH(()=>`pow(${xH} * ${t.signal}, 2)`)}}throw new Error(GR.incompatibleChannel("size",t))}(a,s,i);return iL(n)?function(t,e,n){const r=()=>{const r=NU(e)?e.signal:e,i=`(${r} - ${t}) / (${n} - 1)`;return`sequence(${t}, ${e} + ${i}, ${i})`};return NU(e)?new aH(r):{signal:r()}}(e,r,function(t,e,n,r){switch(t){case"quantile":return e.scale.quantileCount;case"quantize":return e.scale.quantizeCount;case"threshold":return void 0!==n&&Object(Mt.z)(n)?n.length+1:(JR(GR.domainRequiredForThresholdScale(r)),3)}}(n,i,l,t)):[e,r]}case NT:return[i.scale.minStrokeWidth,i.scale.maxStrokeWidth];case ST:return"symbol";case AT:case ET:case jT:return"ordinal"===n?"nominal"===r?"category":"ordinal":"rect"===a||"geoshape"===a?"heatmap":"ramp";case MT:case DT:case FT:return[i.scale.minOpacity,i.scale.maxOpacity]}throw new Error(`Scale range undefined for channel ${t}`)}(t,e,n,r,o,a,u,c,l,f,i.domain))}(n,t.getSignalName.bind(t),c,a.type,o,t.config,r.get("zero"),t.mark,s,t.getName(u),f);r.setWithExplicit("range",h)})}function yH(t,e){const n=t.getScaleComponent(e);if(!n)return;const r=n.get("type"),i=t.fieldDef(e);if(eL(r)){const t=n&&n.get("range");if(t&&zU(t)&&Object(Mt.D)(t.step))return t.step}else if(i&&i.bin&&eP(i.bin)){const n=t.getName(TB(i,{suffix:"bins"})),r=mH(e),o=t.getName(r);return new aH(()=>{const e=t.getSignalName(n),r=`(${e}.stop - ${e}.start) / ${e}.step`;return`${t.getSignalName(o)} / (${r})`})}}function bH(t){return function(t){return t&&!!t.name}(t)?Object.assign({scheme:t.name},lz(t,["name"])):{scheme:t}}const xH=.95;function _H(t,e){if(t.length>0){let e=1/0;for(const n of t)NU(n)?e=void 0:void 0!==e&&n<e&&(e=n);return void 0!==e?e:new aH(()=>{return`min(${t.map(t=>NU(t)?t.signal:t).join(", ")})`})}return e.rangeStep?e.rangeStep:21}function wH(t,e){CH(t)?function(t,e){const n=t.component.scales;kz(n).forEach(r=>{const i=t.specifiedScales[r],o=n[r],a=t.getScaleComponent(r),u=t.fieldDef(r),s=t.config,c=i[e],l=a.get("type"),f=pL(l,e),h=gL(r,e);if(void 0!==c&&(f?h&&JR(h):JR(GR.scalePropertyNotWorkWithScaleType(l,e,r))),f&&void 0===h)if(void 0!==c)o.copyKeyFromObject(e,i);else{const n=function(t,e,n,r,i,o,a,u,s,c){const l=c.scale,{type:f,sort:h}=r;switch(t){case"bins":return function(t,e){const n=e.bin;if(eP(n)){const n=t.getName(TB(e,{suffix:"bins"}));return new aH(()=>t.getSignalName(n))}if(nP(n)&&rP(n)&&void 0!==n.step)return{step:n.step};return}(e,r);case"interpolate":return function(t,e){if(pz([AT,ET,jT],t)&&"nominal"!==e)return"hcl";return}(n,f);case"nice":return function(t,e,n){if(n.bin||pz([IP.TIME,IP.UTC],t))return;return!!pz([vT,yT],e)||void 0}(i,n,r);case"padding":return function(t,e,n,r,i,o){if(pz([vT,yT],t)){if(rL(e)){if(void 0!==n.continuousPadding)return n.continuousPadding;const{type:e,orient:a}=i;if("bar"===e&&!r.bin&&("vertical"===a&&"x"===t||"horizontal"===a&&"y"===t))return o.continuousBandSize}if(e===IP.POINT)return n.pointPadding}return}(n,i,l,r,s,c.bar);case"paddingInner":return function(t,e,n,r){if(void 0!==t)return;if(pz([vT,yT],e)){const{bandPaddingInner:t,barBandPaddingInner:e,rectBandPaddingInner:i}=r;return $z(t,"bar"===n?e:i)}return}(o,n,s.type,l);case"paddingOuter":return function(t,e,n,r,i,o){if(void 0!==t)return;if(pz([vT,yT],e)&&n===IP.BAND){const{bandPaddingOuter:t,barBandPaddingOuter:e,rectBandPaddingOuter:n}=o;return $z(t,"bar"===r?e:n,i/2)}return}(o,n,i,s.type,a,l);case"reverse":return function(t,e){if(nL(t)&&"descending"===e)return!0;return}(i,h);case"zero":return function(t,e,n,r,i){if(n&&"unaggregated"!==n&&nL(i)){if(Object(Mt.z)(n)){const t=n[0],e=n[n.length-1];if(t<=0&&e>=0)return!0}return!1}if("size"===t&&"quantitative"===e.type&&!iL(i))return!0;if(!e.bin&&pz([vT,yT],t)){const{orient:e,type:n}=r;return!pz(["bar","area","line","trail"],n)||!("horizontal"===e&&"y"===t||"vertical"===e&&"x"===t)}return!1}(n,r,u,s,i)}return l[t]}(e,t,r,u,a.get("type"),a.get("padding"),a.get("paddingInner"),i.domain,t.markDef,s);void 0!==n&&o.set(e,n,!1)}})}(t,e):kH(t,e)}function OH(t){CH(t)?vH(t):kH(t,"range")}function kH(t,e){const n=t.component.scales;for(const n of t.children)"range"===e?OH(n):wH(n,e);kz(n).forEach(r=>{let i;for(const n of t.children){const t=n.component.scales[r];if(t){i=oW(i,t.getWithExplicit(e),e,"scale",rW((t,n)=>{switch(e){case"range":return t.step&&n.step?t.step-n.step:0}return 0}))}}n[r].setWithExplicit(e,i)})}function AH(t,e,n,r){const i=function(t,e,n){switch(e.type){case"nominal":case"ordinal":if(IT(t)||"discrete"===F$(t))return"shape"===t&&"ordinal"===e.type&&JR(GR.discreteChannelCannotEncode(t,"ordinal")),"ordinal";if(pz(["x","y"],t)){if(pz(["rect","bar","rule"],n))return"band";if("bar"===n)return"band"}return"point";case"temporal":return IT(t)?"time":"discrete"===F$(t)?(JR(GR.discreteChannelCannotEncode(t,"temporal")),"ordinal"):"time";case"quantitative":return IT(t)?eP(e.bin)?"bin-ordinal":"linear":"discrete"===F$(t)?(JR(GR.discreteChannelCannotEncode(t,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(GR.invalidFieldType(e.type))}(e,n,r),{type:o}=t;return M$(e)?void 0!==o?vL(e,o)?mL(o,n.type)?o:(JR(GR.scaleTypeNotWorkWithFieldDef(o,i)),i):(JR(GR.scaleTypeNotWorkWithChannel(e,o,i)),i):i:null}function EH(t){CH(t)?t.component.scales=function(t){const{encoding:e,mark:n}=t;return C$.reduce((r,i)=>{let o,a;const u=e[i];if(jB(u)&&n===Zz&&i===ST&&u.type===OB)return r;if(jB(u)?(o=u,a=u.scale):EB(u)&&(o=u.condition,a=u.condition.scale),o&&null!==a&&!1!==a){const e=AH(a=a||{},i,o,n);r[i]=new pH(t.scaleName(i+"",!0),{value:e,explicit:a.type===e})}return r},{})}(t):t.component.scales=function(t){const e=t.component.scales={},n={},r=t.component.resolve;for(const e of t.children)EH(e),kz(e.component.scales).forEach(i=>{if(r.scale[i]=r.scale[i]||QI(i,t),"shared"===r.scale[i]){const t=n[i],o=e.component.scales[i].getWithExplicit("type");t?GP(t.value,o.value)?n[i]=oW(t,o,"type","scale",jH):(r.scale[i]="independent",delete n[i]):n[i]=o}});return kz(n).forEach(r=>{const i=t.scaleName(r,!0),o=n[r];e[r]=new pH(i,o);for(const e of t.children){const t=e.component.scales[r];t&&(e.renameScale(t.get("name"),i),t.merged=!0)}}),e}(t)}const jH=rW((t,e)=>VP(t)-VP(e));class SH{constructor(){this.nameMap={}}rename(t,e){this.nameMap[t]=e}has(t){return void 0!==this.nameMap[t]}get(t){for(;this.nameMap[t]&&t!==this.nameMap[t];)t=this.nameMap[t];return t}}function CH(t){return t&&"unit"===t.type}function MH(t){return t&&"facet"===t.type}function DH(t){return t&&"repeat"===t.type}function FH(t){return t&&"concat"===t.type}function NH(t){return t&&"layer"===t.type}class zH{constructor(t,e,n,r,i,o,a,u){this.type=e,this.parent=n,this.config=i,this.repeater=o,this.view=u,this.children=[],this.correctDataNames=t=>(t.from&&t.from.data&&(t.from.data=this.lookupDataSource(t.from.data)),t.from&&t.from.facet&&t.from.facet.data&&(t.from.facet.data=this.lookupDataSource(t.from.facet.data)),t),this.parent=n,this.config=i,this.repeater=o,this.name=t.name||r,this.title=Object(Mt.G)(t.title)?{text:t.title}:t.title,this.scaleNameMap=n?n.scaleNameMap:new SH,this.projectionNameMap=n?n.projectionNameMap:new SH,this.signalNameMap=n?n.signalNameMap:new SH,this.data=t.data,this.description=t.description,this.transforms=(t.transform||[]).map(t=>xU(t)?{filter:az(t.filter,bU)}:t),this.layout=iT(t)||TL(t)?{}:function(t,e,n){const r=n[e],i={},{spacing:o,columns:a}=r;void 0!==o&&(i.spacing=o),void 0!==a&&(oB(t)&&!iB(t.facet)||AL(t)&&Object(Mt.z)(t.repeat)||wL(t))&&(i.columns=a);for(const e of EL)if(void 0!==t[e])if("spacing"===e){const n=t[e];i[e]=Object(Mt.D)(n)?n:{row:n.row||o,column:n.column||o}}else i[e]=t[e];return i}(t,e,i),this.component={data:{sources:n?n.component.data.sources:[],outputNodes:n?n.component.data.outputNodes:{},outputNodeRefCounts:n?n.component.data.outputNodeRefCounts:{},isFaceted:oB(t)||n&&n.component.data.isFaceted&&!t.data},layoutSize:new tW,layoutHeaders:{row:{},column:{},facet:{}},mark:null,resolve:Object.assign({scale:{},axis:{},legend:{}},a?sz(a):{}),selection:null,scales:null,projection:null,axes:{},legends:{}}}get width(){return this.getSizeSignalRef("width")}get height(){return this.getSizeSignalRef("height")}initSize(t){const{width:e,height:n}=t;e&&this.component.layoutSize.set("width",e,!0),n&&this.component.layoutSize.set("height",n,!0)}parse(){this.parseScale(),this.parseLayoutSize(),this.renameTopLevelLayoutSizeSignal(),this.parseSelections(),this.parseProjection(),this.parseData(),this.parseAxesAndHeaders(),this.parseLegends(),this.parseMarkGroup()}parseScale(){!function(t){EH(t),uH(t);for(const e of dL)wH(t,e);OH(t)}(this)}parseProjection(){SW(this)}renameTopLevelLayoutSizeSignal(){"width"!==this.getName("width")&&this.renameSignal(this.getName("width"),"width"),"height"!==this.getName("height")&&this.renameSignal(this.getName("height"),"height")}parseLegends(){yW(this)}assembleGroupStyle(){if("unit"===this.type||"layer"===this.type)return this.view&&this.view.style||"cell"}assembleEncodeFromView(t){const{style:e}=t,n=b(t,["style"]),r={};for(const t in n)if(n.hasOwnProperty(t)){const e=n[t];void 0!==e&&(r[t]={value:e})}return r}assembleGroupEncodeEntry(t){let e=void 0;return this.view&&(e=this.assembleEncodeFromView(this.view)),t||"unit"!==this.type&&"layer"!==this.type?e:Object.assign({width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height")},e||{})}assembleLayout(){if(!this.layout)return;const t=this.layout,{spacing:e}=t,n=b(t,["spacing"]),{component:r,config:i}=this,o=function(t,e){const n={};for(const r of HT){const i=t[r];if(i&&i.facetFieldDef){const{titleAnchor:t,titleOrient:o}=_q(["titleAnchor","titleOrient"],i.facetFieldDef,e,r),a=bq(r,o),u=Fq(t,a);void 0!==u&&(n[a]=u)}}return kz(n).length>0?n:void 0}(r.layoutHeaders,i);return Object.assign({padding:e},this.assembleDefaultLayout(),n,o?{titleBand:o}:{})}assembleDefaultLayout(){return{}}assembleHeaderMarks(){const{layoutHeaders:t}=this.component;let e=[];for(const n of HT)t[n].title&&e.push(kq(this,n));for(const t of wq)e=e.concat(jq(this,t));return e}assembleAxes(){return function(t,e){const{x:n=[],y:r=[]}=t;return[...n.map(t=>qU(t,"main",e)),...n.map(t=>qU(t,"grid",e)),...r.map(t=>qU(t,"main",e)),...r.map(t=>qU(t,"grid",e))].filter(t=>t)}(this.component.axes,this.config)}assembleLegends(){return OW(this)}assembleProjections(){return kW(this)}assembleTitle(){const t=this.title||{},{encoding:e}=t,n=b(t,["encoding"]),r=Object.assign({},jL(this.config.title).nonMark,n,e?{encode:{update:e}}:{});if(r.text)return pz(["unit","layer"],this.type)?pz(["middle",void 0],r.anchor)&&(r.frame=r.frame||"group"):r.anchor=r.anchor||"start",kz(r).length>0?r:void 0}assembleGroup(t=[]){const e={};(t=t.concat(this.assembleSignals())).length>0&&(e.signals=t);const n=this.assembleLayout();n&&(e.layout=n),e.marks=[].concat(this.assembleHeaderMarks(),this.assembleMarks());const r=!this.parent||MH(this.parent)?function t(e){return NH(e)||FH(e)||DH(e)?e.children.reduce((e,n)=>e.concat(t(n)),dH(e)):dH(e)}(this):[];r.length>0&&(e.scales=r);const i=this.assembleAxes();i.length>0&&(e.axes=i);const o=this.assembleLegends();return o.length>0&&(e.legends=o),e}hasDescendantWithFieldOnChannel(t){for(const e of this.children)if(CH(e)){if(e.channelHasField(t))return!0}else if(e.hasDescendantWithFieldOnChannel(t))return!0;return!1}getName(t){return Sz((this.name?this.name+"_":"")+t)}requestDataName(t){const e=this.getName(t),n=this.component.data.outputNodeRefCounts;return n[e]=(n[e]||0)+1,e}getSizeSignalRef(t){if(MH(this.parent)){const e="width"===t?"x":"y",n=this.component.scales[e];if(n&&!n.merged){const t=n.get("type"),r=n.get("range");if(eL(t)&&zU(r)){const t=n.get("name"),r=fH(hH(this,e));if(r){return{signal:Rq(t,n,TB({aggregate:"distinct",field:r},{expr:"datum"}))}}return JR("Unknown field for ${channel}. Cannot calculate view size."),null}}}return{signal:this.signalNameMap.get(this.getName(t))}}lookupDataSource(t){const e=this.component.data.outputNodes[t];return e?e.getSource():t}getSignalName(t){return this.signalNameMap.get(t)}renameSignal(t,e){this.signalNameMap.rename(t,e)}renameScale(t,e){this.scaleNameMap.rename(t,e)}renameProjection(t,e){this.projectionNameMap.rename(t,e)}scaleName(t,e){return e?this.getName(t):i$(t)&&M$(t)&&this.component.scales[t]||this.scaleNameMap.has(this.getName(t))?this.scaleNameMap.get(this.getName(t)):void 0}projectionName(t){return t?this.getName("projection"):this.component.projection&&!this.component.projection.merged||this.projectionNameMap.has(this.getName("projection"))?this.projectionNameMap.get(this.getName("projection")):void 0}getScaleComponent(t){if(!this.component.scales)throw new Error("getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().");const e=this.component.scales[t];return e&&!e.merged?e:this.parent?this.parent.getScaleComponent(t):void 0}getSelectionComponent(t,e){let n=this.component.selection[t];if(!n&&this.parent&&(n=this.parent.getSelectionComponent(t,e)),!n)throw new Error(GR.selectionNotFound(e));return n}}class TH extends zH{vgField(t,e={}){const n=this.fieldDef(t);if(n)return TB(n,e)}reduceFieldDef(t,e,n){return fP(this.getMapping(),(e,n,r)=>{const i=WB(n);return i?t(e,i,r):e},e,n)}forEachFieldDef(t,e){lP(this.getMapping(),(e,n)=>{const r=WB(e);r&&t(r,n)},e)}}class $H extends pq{constructor(t,e){super(t),this.fieldDefs=e}clone(){return new $H(null,Object.assign({},this.fieldDefs))}static make(t,e){const{config:n,mark:r}=e;if("filter"!==n.invalidValues)return null;const i=e.reduceFieldDef((t,n,i)=>{const o=M$(i)&&e.getScaleComponent(i);if(o){!nL(o.get("type"))||n.aggregate||Kz(r)||(t[n.field]=n)}return t},{});return kz(i).length?new $H(t,i):null}get filter(){return this.fieldDefs}assemble(){const t=kz(this.filter).reduce((t,e)=>{const n=this.fieldDefs[e],r=TB(n,{expr:"datum"});return null!==n&&(t.push(`${r} !== null`),t.push(`!isNaN(${r})`)),t},[]);return t.length>0?{type:"filter",expr:t.join(" && ")}:null}}class RH extends pq{constructor(t,e){super(t),this.transform=e,this.transform=sz(e);const{flatten:n,as:r=[]}=this.transform;this.transform.as=n.map((t,e)=>r[e]||t)}clone(){return new RH(this.parent,sz(this.transform))}producedFields(){return new Set(this.transform.as)}hash(){return`FlattenTransform ${hz(this.transform)}`}assemble(){const{flatten:t,as:e}=this.transform;return{type:"flatten",fields:t,as:e}}}class BH extends pq{constructor(t,e){super(t),this.transform=e,this.transform=sz(e);const n=this.transform.as||[void 0,void 0];this.transform.as=[n[0]||"key",n[1]||"value"]}clone(){return new BH(null,sz(this.transform))}producedFields(){return new Set(this.transform.as)}hash(){return`FoldTransform ${hz(this.transform)}`}assemble(){const{fold:t,as:e}=this.transform;return{type:"fold",fields:t,as:e}}}class PH extends pq{constructor(t,e,n,r){super(t),this.fields=e,this.geojson=n,this.signal=r}clone(){return new PH(null,sz(this.fields),this.geojson,this.signal)}static parseAll(t,e){if(e.component.projection&&!e.component.projection.isFit)return t;let n=0;if([[wT,_T],[kT,OT]].forEach(r=>{const i=r.map(t=>e.channelHasField(t)?e.fieldDef(t).field:MB(e.encoding[t])?{expr:e.encoding[t].value+""}:void 0);(i[0]||i[1])&&(t=new PH(t,i,null,e.getName(`geojson_${n++}`)))}),e.channelHasField(ST)){const r=e.fieldDef(ST);r.type===OB&&(t=new PH(t,null,r.field,e.getName(`geojson_${n++}`)))}return t}assemble(){return Object.assign({type:"geojson"},this.fields?{fields:this.fields}:{},this.geojson?{geojson:this.geojson}:{},{signal:this.signal})}}class LH extends pq{constructor(t,e,n,r){super(t),this.projection=e,this.fields=n,this.as=r}clone(){return new LH(null,this.projection,sz(this.fields),sz(this.as))}static parseAll(t,e){return e.projectionName()?([[wT,_T],[kT,OT]].forEach(n=>{const r=n.map(t=>e.channelHasField(t)?e.fieldDef(t).field:MB(e.encoding[t])?{expr:e.encoding[t].value+""}:void 0),i=n[0]===kT?"2":"";(r[0]||r[1])&&(t=new LH(t,e.projectionName(),r,[e.getName("x"+i),e.getName("y"+i)]))}),t):t}assemble(){return{type:"geopoint",projection:this.projection,fields:this.fields,as:this.as}}}class UH extends pq{constructor(t,e){super(t),this.params=e}clone(){return new UH(null,this.params)}assemble(){return Object.assign({type:"graticule"},!0===this.params?{}:this.params)}}class qH extends pq{clone(){return new qH(null)}constructor(t){super(t)}producedFields(){return new Set([bL])}hash(){return"Identifier"}assemble(){return{type:"identifier",as:bL}}}function IH(t,e){const{config:n,encoding:r,markDef:i}=t,o=i.orient,a=r.size,u="x"===e?"horizontal"===o:"vertical"===o,s="x"===e?"x2":"y2",c=r[e],l=r[s],f=t.scaleName(e),h=t.getScaleComponent(e),d=$z(i.binSpacing,n.bar.binSpacing),p=h?h.get("reverse"):void 0;if(jB(c)&&nP(c.bin))return VI({fieldDef:c,fieldDef2:l,channel:e,mark:"bar",scaleName:f,spacing:d,reverse:p});if(u||l)return Object.assign({},XI(e,t,"zeroOrMin"),JI(t,"zeroOrMin",s));{const r="x"===e?"width":"height";if(jB(c)){const o=h.get("type");if(eP(c.bin)&&!a&&!eL(o))return VI({fieldDef:c,channel:e,scaleName:f,mark:"bar",spacing:d,reverse:p});if(o===IP.BAND)return YI(c,e,t,WH(i,r,f,h,n))}return function(t,e,n,r){const i="x"===t?"xc":"yc",o="x"===t?"width":"height";return Object.assign({},XI(t,e,n,i),II("size",e,{defaultRef:r,vgChannel:o}))}(e,t,zI(t[r]),WH(i,r,f,h,n))}}function WH(t,e,n,r,i){const o=$z(t[e],t.size,nq("size",t,i,{vgChannel:e}));if(void 0!==o)return{value:o};if(r){const t=r.get("type");if("point"!==t&&"band"!==t)return{value:i.bar.continuousBandSize};if(void 0!==i.bar.discreteBandSize)return{value:i.bar.discreteBandSize};if(t!==IP.POINT)return CI(n);{const t=r.get("range");if(zU(t)&&Object(Mt.D)(t.step))return{value:t.step-1};JR(GR.BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL)}}return{value:$z(i.bar.discreteBandSize,i.scale.rangeStep?i.scale.rangeStep-1:void 0,20)}}function HH(t,e){const{config:n,width:r,height:i}=t;return Object.assign({},BI(t,{size:"include",orient:"ignore"}),XI("x",t,zI(r)),XI("y",t,zI(i)),II("size",t),function(t,e,n){if(n)return{shape:{value:n}};return II("shape",t)}(t,0,e))}function GH(t,e){const n="x"===e?"x2":"y2",r=t.encoding[e],i=t.encoding[n],o=t.getScaleComponent(e),a=o?o.get("type"):void 0,u=t.scaleName(e);if(jB(r)&&(eP(r.bin)||nP(r.bin)))return VI({fieldDef:r,fieldDef2:i,channel:e,mark:"rect",scaleName:u,spacing:0,reverse:o.get("reverse")});if(jB(r)&&o&&eL(a)){if(a===IP.BAND)return YI(r,e,t);throw new Error(GR.scaleTypeNotWorkWithMark(Wz,a))}return Object.assign({},XI(e,t,"zeroOrMax"),JI(t,"zeroOrMin",n))}function YH(t){const{config:e,markDef:n}=t,{orient:r}=n,i="horizontal"===r?"width":"height",o=t.getScaleComponent("horizontal"===r?"x":"y"),a=$z(n[i],n.size,nq("size",n,e,{vgChannel:i}),e.tick.bandSize);if(void 0!==a)return a;{const t=o?o.get("range"):void 0,n=t&&zU(t)?t.step:e.scale.rangeStep;if("number"!=typeof n)throw new Error("Function does not handle non-numeric rangeStep");return 3*n/4}}const VH={area:{vgMark:"area",encodeEntry:t=>Object.assign({},BI(t,{size:"ignore",orient:"include"}),XI("x",t,"zeroOrMin"),XI("y",t,"zeroOrMin"),JI(t,"zeroOrMin","horizontal"===t.markDef.orient?"x2":"y2"),qI(t))},bar:{vgMark:"rect",encodeEntry:t=>Object.assign({},BI(t,{size:"ignore",orient:"ignore"}),IH(t,"x"),IH(t,"y"))},circle:{vgMark:"symbol",encodeEntry:t=>HH(t,"circle")},geoshape:{vgMark:"shape",encodeEntry:t=>Object.assign({},BI(t,{size:"ignore",orient:"ignore"})),postEncodingTransform:t=>{const{encoding:e}=t,n=e.shape;return[Object.assign({type:"geoshape",projection:t.projectionName()},n&&jB(n)&&n.type===OB?{field:TB(n,{expr:"datum"})}:{})]}},line:{vgMark:"line",encodeEntry:t=>{const{width:e,height:n}=t;return Object.assign({},BI(t,{size:"ignore",orient:"ignore"}),XI("x",t,zI(e)),XI("y",t,zI(n)),II("size",t,{vgChannel:"strokeWidth"}),qI(t))}},point:{vgMark:"symbol",encodeEntry:t=>HH(t)},rect:{vgMark:"rect",encodeEntry:t=>Object.assign({},BI(t,{size:"ignore",orient:"ignore"}),GH(t,"x"),GH(t,"y"))},rule:{vgMark:"rule",encodeEntry:t=>{const{markDef:e,width:n,height:r}=t,i=e.orient;return t.encoding.x||t.encoding.y||t.encoding.latitude||t.encoding.longitude?Object.assign({},BI(t,{size:"ignore",orient:"ignore"}),XI("x",t,"horizontal"===i?"zeroOrMin":zI(n)),XI("y",t,"vertical"===i?"zeroOrMin":zI(r)),"vertical"!==i?JI(t,"zeroOrMax","x2"):{},"horizontal"!==i?JI(t,"zeroOrMax","y2"):{},II("size",t,{vgChannel:"strokeWidth"})):{}}},square:{vgMark:"symbol",encodeEntry:t=>HH(t,"square")},text:{vgMark:"text",encodeEntry:t=>{const{config:e,encoding:n,width:r,height:i}=t;return Object.assign({},BI(t,{size:"ignore",orient:"ignore"}),XI("x",t,zI(r)),XI("y",t,zI(i)),GI(t),II("size",t,{vgChannel:"fontSize"}),LI("align",function(t,e,n){if(void 0===(t.align||nq("align",t,n)))return"center";return}(t.markDef,0,e)),LI("baseline",function(t,e,n){if(void 0===(t.baseline||nq("baseline",t,n)))return"middle";return}(t.markDef,0,e)))}},tick:{vgMark:"rect",encodeEntry:t=>{const{config:e,markDef:n,width:r,height:i}=t,o=n.orient,a="horizontal"===o?"width":"height",u="horizontal"===o?"height":"width";return Object.assign({},BI(t,{size:"ignore",orient:"ignore"}),XI("x",t,zI(r),"xc"),XI("y",t,zI(i),"yc"),II("size",t,{defaultValue:YH(t),vgChannel:a}),{[u]:{value:$z(n.thickness,e.tick.thickness)}})}},trail:{vgMark:"trail",encodeEntry:t=>{const{width:e,height:n}=t;return Object.assign({},BI(t,{size:"include",orient:"ignore"}),XI("x",t,zI(e)),XI("y",t,zI(n)),II("size",t),qI(t))}}};function XH(t){return pz([qz,Lz,Vz],t.mark)?function(t){const e=QH(t.mark,t.encoding),n=ZH(t,{fromPrefix:e.length>0?JH:""});return e.length>0?[{name:t.getName("pathgroup"),type:"group",from:{facet:{name:JH+t.requestDataName(uU),data:t.requestDataName(uU),groupby:e}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:n}]:n}(t):ZH(t)}const JH="faceted_path_";function ZH(t,e={fromPrefix:""}){const n=t.mark,r=$z(t.markDef.clip,function(t){const e=t.getScaleComponent("x"),n=t.getScaleComponent("y");return!!(e&&e.get("domainRaw")||n&&n.get("domainRaw"))||void 0}(t),function(t){const e=t.component.projection;return!(!e||e.isFit)||void 0}(t)),i=eq(t.markDef),o=t.encoding.key,a=function(t){const{encoding:e,stack:n,mark:r,markDef:i,config:o}=t,a=e.order;if(!(!Object(Mt.z)(a)&&MB(a)&&dz(a.value)||!a&&dz(i.order)||dz(nq("order",i,o)))){if((Object(Mt.z)(a)||jB(a))&&!n)return lq(a,{expr:"datum"});if(Kz(r)){const n=e["horizontal"===i.orient?"y":"x"];if(jB(n)){const e=n.sort;return{field:XU(e)?TB({aggregate:aP(t.encoding)?e.op:void 0,field:e.field},{expr:"datum"}):TB(n,{binSuffix:t.stack&&t.stack.impute?"mid":void 0,expr:"datum"}),order:"descending"}}}}}(t),u=VH[n].postEncodingTransform?VH[n].postEncodingTransform(t):null;return[Object.assign({name:t.getName("marks"),type:VH[n].vgMark},r?{clip:!0}:{},i?{style:i}:{},o?{key:{field:o.field}}:{},a?{sort:a}:{},{from:{data:e.fromPrefix+t.requestDataName(uU)},encode:{update:VH[n].encodeEntry(t)}},u?{transform:u}:{})]}function QH(t,e){return kz(e).reduce((n,r)=>{switch(r){case"x":case"y":case"order":case"href":case"x2":case"y2":case"latitude":case"longitude":case"latitude2":case"longitude2":case"text":case"shape":case"tooltip":return n;case"detail":case"key":{const t=e[r];return(Object(Mt.z)(t)||jB(t))&&(Object(Mt.z)(t)?t:[t]).forEach(t=>{t.aggregate||n.push(TB(t,{}))}),n}case"size":if("trail"===t)return n;case"color":case"fill":case"stroke":case"opacity":case"fillOpacity":case"strokeOpacity":case"strokeWidth":{const t=HB(e[r]);return t&&!t.aggregate&&n.push(TB(t,{})),n}default:throw new Error(`Bug: Channel ${r} unimplemented for line mark`)}},[])}class KH extends pq{constructor(t,e){super(t),this.transform=e}clone(){return new KH(null,sz(this.transform))}producedFields(){return new Set([this.transform.impute])}processSequence(t){const{start:e=0,stop:n,step:r}=t;return{signal:`sequence(${[e,n,...r?[r]:[]].join(",")})`}}static makeFromTransform(t,e){return new KH(t,e)}static makeFromEncoding(t,e){const n=e.encoding,r=n.x,i=n.y;if(jB(r)&&jB(i)){const o=r.impute?r:i.impute?i:void 0;if(void 0===o)return;const a=r.impute?i:i.impute?r:void 0,{method:u,value:s,frame:c,keyvals:l}=o.impute,f=QH(e.mark,n);return new KH(t,Object.assign({impute:o.field,key:a.field},u?{method:u}:{},void 0!==s?{value:s}:{},c?{frame:c}:{},void 0!==l?{keyvals:l}:{},f.length?{groupby:f}:{}))}return null}hash(){return`Impute ${hz(this.transform)}`}assemble(){const{impute:t,key:e,keyvals:n,method:r,groupby:i,value:o,frame:a=[null,null]}=this.transform,u=Object.assign({type:"impute",field:t,key:e},n?{keyvals:(s=n,s&&void 0!==s.start&&void 0!==s.stop?this.processSequence(n):n)}:{},{method:"value"},i?{groupby:i}:{},{value:null});var s;let c;if(r&&"value"!==r){c=[Object.assign({type:"window",as:[`imputed_${t}_value`],ops:[r],fields:[t],frame:a,ignorePeers:!1},i?{groupby:i}:{}),{type:"formula",expr:`datum.${t} === null ? datum.imputed_${t}_value : datum.${t}`,as:t}]}else{c=[{type:"formula",expr:`datum.${t} === null ? ${o} : datum.${t}`,as:t}]}return[u,...c]}}class tG extends tW{constructor(t={},e={},n=!1){super(t,e),this.explicit=t,this.implicit=e,this.parseNothing=n}clone(){const t=super.clone();return t.parseNothing=this.parseNothing,t}}class eG extends pq{constructor(t,e,n){super(t),this.transform=e,this.secondary=n}clone(){return new eG(null,sz(this.transform),this.secondary)}static make(t,e,n,r){const i=e.component.data.sources;let o=xG(n.from.data,i);o||(o=new CW(n.from.data),i.push(o));const a=e.getName(`lookup_${r}`),u=new gq(o,a,"lookup",e.component.data.outputNodeRefCounts);return e.component.data.outputNodes[a]=u,new eG(t,n,u.getSource())}producedFields(){return new Set(this.transform.from.fields||(this.transform.as instanceof Array?this.transform.as:[this.transform.as]))}hash(){return`Lookup ${hz({transform:this.transform,secondary:this.secondary})}`}assemble(){let t;if(this.transform.from.fields)t=Object.assign({values:this.transform.from.fields},this.transform.as?{as:this.transform.as instanceof Array?this.transform.as:[this.transform.as]}:{});else{let e=this.transform.as;Object(Mt.G)(e)||(JR(GR.NO_FIELDS_NEEDS_AS),e="_lookup"),t={as:[e]}}return Object.assign({type:"lookup",from:this.secondary,key:this.transform.from.key,fields:[this.transform.lookup]},t,this.transform.default?{default:this.transform.default}:{})}}class nG extends pq{constructor(t,e){super(t),this.transform=e}clone(){return new nG(null,sz(this.transform))}hash(){return`SampleTransform ${hz(this.transform)}`}assemble(){return{type:"sample",size:this.transform.sample}}}class rG extends pq{constructor(t,e){super(t),this.params=e}clone(){return new rG(null,this.params)}assemble(){return Object.assign({type:"sequence"},this.params)}}function iG(t){let e=0;return function n(r,i){r instanceof CW&&!r.isGenerator&&!tU(r.data)&&(t.push(i),i={name:null,source:i.name,transform:[]});if(r instanceof UW&&(r.parent instanceof CW&&!i.source?(i.format=Object.assign({},i.format||{},{parse:r.assembleFormatParse()}),i.transform.push(...r.assembleTransforms(!0))):i.transform.push(...r.assembleTransforms())),r instanceof BW)return i.name||(i.name=`data_${e++}`),!i.source||i.transform.length>0?(t.push(i),r.data=i.name):r.data=i.source,void r.assemble().forEach(e=>t.push(e));(r instanceof UH||r instanceof rG||r instanceof $H||r instanceof PW||r instanceof vq||r instanceof LH||r instanceof PH||r instanceof TW||r instanceof eG||r instanceof WW||r instanceof qW||r instanceof BH||r instanceof RH||r instanceof qH||r instanceof nG)&&i.transform.push(r.assemble()),(r instanceof RW||r instanceof Bq||r instanceof KH||r instanceof IW)&&(i.transform=i.transform.concat(r.assemble())),r instanceof gq&&(i.source&&0===i.transform.length?r.setSource(i.source):r.parent instanceof gq?r.setSource(i.name):(i.name||(i.name=`data_${e++}`),r.setSource(i.name),1===r.numChildren()&&(t.push(i),i={name:null,source:i.name,transform:[]})));switch(r.numChildren()){case 0:r instanceof gq&&(!i.source||i.transform.length>0)&&t.push(i);break;case 1:n(r.children[0],i);break;default:{i.name||(i.name=`data_${e++}`);let o=i.name;!i.source||i.transform.length>0?t.push(i):o=i.source,r.children.forEach(t=>{n(t,{name:null,source:o,transform:[]})});break}}}}function oG(t,e){if(t.channelHasField(e)){const n=t.facet[e],r=xq("title",null,t.config,e);let i=UB(n,t.config,{allowDisabling:!0,includeDefault:void 0===r||!!r});t.child.component.layoutHeaders[e].title&&(i+=" / "+t.child.component.layoutHeaders[e].title,t.child.component.layoutHeaders[e].title=null);const o=pz(["bottom","right"],xq("labelOrient",n,t.config,e))?"footer":"header";t.component.layoutHeaders[e]={title:i,facetFieldDef:n,[o]:"facet"===e?[]:[aG(t,e,!0)]}}}function aG(t,e,n){const r="row"===e?"height":"width";return{labels:n,sizeSignal:t.child.component.layoutSize.get(r)?t.child.getSizeSignalRef(r):void 0,axes:[]}}function uG(t,e){const{child:n}=t;if(n.component.axes[e]){const{layoutHeaders:i,resolve:o}=t.component;if(o.axis[e]=KI(o,e),"shared"===o.axis[e]){const o="x"===e?"column":"row",a=i[o];for(const i of n.component.axes[e]){const e="top"===(r=i.get("orient"))||"left"===r?"header":"footer";a[e]=a[e]||[aG(t,o,!1)];const n=qU(i,"main",t.config,{header:!0});a[e][0].axes.push(n),i.mainExtracted=!0}}}var r}function sG(t){fG(t);const e=t.component.layoutSize;e.setWithExplicit("width",hG(t,"width")),e.setWithExplicit("height",hG(t,"height"))}const cG=sG,lG={vconcat:"width",hconcat:"height"};function fG(t){for(const e of t.children)e.parseLayoutSize()}function hG(t,e){const n="width"===e?"x":"y",r=t.component.resolve;let i;for(const o of t.children){const t=o.component.layoutSize.getWithExplicit(e),a=r.scale[n];if("independent"===a&&"range-step"===t.value){i=void 0;break}if(i){if("independent"===a&&i.value!==t.value){i=void 0;break}i=oW(i,t,e,"")}else i=t}if(i){for(const n of t.children)t.renameSignal(n.getName(e),t.getName(e)),n.component.layoutSize.set(e,"merged",!1);return i}return{explicit:!1,value:void 0}}function dG(t,e){const n="width"===e?"x":"y",r=t.config,i=t.getScaleComponent(n);if(i){const t=i.get("type"),n=i.get("range");return eL(t)&&zU(n)?"range-step":r.view[e]}return t.hasProjection?r.view[e]:"width"===e&&"text"===t.mark?r.scale.textXRangeStep:r.scale.rangeStep||oL.rangeStep}function pG(t,e){return(n=t.field)&&!Object(Mt.G)(n)&&"repeat"in n?t.field.repeat in e?Object.assign({},t,{field:e[t.field.repeat]}):void JR(GR.noSuchRepeatedValue(t.field.repeat)):t;var n}function gG(t,e){if(void 0!==(t=pG(t,e))){if(null===t)return null;if(function(t){return SB(t)&&!!t.sort}(t)&&XU(t.sort)){const n=pG(t.sort,e);t=Object.assign({},t,n?{sort:n}:{})}return t}}function mG(t,e){if(!jB(t)){if(EB(t)){const n=gG(t.condition,e);if(n)return Object.assign({},t,{condition:n});{const{condition:e}=t;return b(t,["condition"])}}return t}{const n=gG(t,e);if(n)return n;if(AB(t))return{condition:t.condition}}}function vG(t,e){const n={};for(const r in t)if(t.hasOwnProperty(r)){const i=t[r];if(Object(Mt.z)(i))n[r]=i.map(t=>mG(t,e)).filter(t=>t);else{const t=mG(i,e);void 0!==t&&(n[r]=t)}}return n}function yG(t,e,n){return TB(e,Object.assign({suffix:`by_${TB(t)}`},n||{}))}class bG extends TH{constructor(t,e,n,r,i){super(t,"facet",e,n,i,r,t.resolve),this.child=zG(t.spec,this,this.getName("child"),void 0,r,i,!1),this.children=[this.child];const o=function(t,e){return iB(t)?vG(t,e):gG(t,e)}(t.facet,r);this.facet=this.initFacet(o)}initFacet(t){return iB(t)?fP(t,(t,e,n)=>pz([pT,gT],n)?void 0===e.field?(JR(GR.emptyFieldDef(e,n)),t):(t[n]=GB(e,n),t):(JR(GR.incompatibleChannel(n,"facet")),t),{}):{facet:GB(t,"facet")}}channelHasField(t){return!!this.facet[t]}fieldDef(t){return this.facet[t]}parseData(){this.component.data=_G(this),this.child.parseData()}parseLayoutSize(){fG(this)}parseSelections(){this.child.parseSelections(),this.component.selection=this.child.component.selection}parseMarkGroup(){this.child.parseMarkGroup()}parseAxesAndHeaders(){this.child.parseAxesAndHeaders(),function(t){for(const e of HT)oG(t,e);uG(t,"x"),uG(t,"y")}(this)}assembleSelectionTopLevelSignals(t){return this.child.assembleSelectionTopLevelSignals(t)}assembleSignals(){return this.child.assembleSignals(),[]}assembleSelectionData(t){return this.child.assembleSelectionData(t)}getHeaderLayoutMixins(){const t={};for(const e of HT)for(const n of Oq){const r=this.component.layoutHeaders[e],i=r[n],{facetFieldDef:o}=r;if(o){const n=xq("titleOrient",o,this.config,e);if(pz(["right","bottom"],n)){const r=bq(e,n);t.titleAnchor=t.titleAnchor||{},t.titleAnchor[r]="end"}}if(i&&i[0]){const i="row"===e?"height":"width",o="header"===n?"headerBand":"footerBand";"facet"===e||this.child.component.layoutSize.get(i)||(t[o]=t[o]||{},t[o][e]=.5),r.title&&(t.offset=t.offset||{},t.offset["row"===e?"rowTitle":"columnTitle"]=10)}}return t}assembleDefaultLayout(){const{column:t,row:e}=this.facet,n=t?this.columnDistinctSignal():e?1:void 0;let r="all";return(e||"independent"!==this.component.resolve.scale.x)&&(t||"independent"!==this.component.resolve.scale.y)||(r="none"),Object.assign({},this.getHeaderLayoutMixins(),n?{columns:n}:{},{bounds:"full",align:r})}assembleLayoutSignals(){return this.child.assembleLayoutSignals()}columnDistinctSignal(){if(!(this.parent&&this.parent instanceof bG)){return{signal:`length(data('${this.getName("column_domain")}'))`}}}assembleGroup(t){return this.parent&&this.parent instanceof bG?Object.assign({},this.channelHasField("column")?{encode:{update:{columns:{field:TB(this.facet.column,{prefix:"distinct"})}}}}:{},super.assembleGroup(t)):super.assembleGroup(t)}getCardinalityAggregateForChild(){const t=[],e=[],n=[];if(this.child instanceof bG){if(this.child.channelHasField("column")){const r=TB(this.child.facet.column);t.push(r),e.push("distinct"),n.push(`distinct_${r}`)}}else for(const r of["x","y"]){const i=this.child.component.scales[r];if(i&&!i.merged){const o=i.get("type"),a=i.get("range");if(eL(o)&&zU(a)){const i=fH(hH(this.child,r));i?(t.push(i),e.push("distinct"),n.push(`distinct_${i}`)):JR("Unknown field for ${channel}. Cannot calculate view size.")}}}return{fields:t,ops:e,as:n}}assembleFacet(){const{name:t,data:e}=this.component.data.facetRoot,{row:n,column:r}=this.facet,{fields:i,ops:o,as:a}=this.getCardinalityAggregateForChild(),u=[];for(const t of HT){const e=this.facet[t];if(e){u.push(TB(e));const{bin:s,sort:c}=e;if(eP(s)&&u.push(TB(e,{binSuffix:"end"})),XU(c)){const{field:t,op:u=VU}=c,s=yG(e,c);n&&r?(i.push(s),o.push("max"),a.push(s)):(i.push(t),o.push(u),a.push(s))}else if(Object(Mt.z)(c)){const n=yq(e,t);i.push(n),o.push("max"),a.push(n)}}}const s=!!n&&!!r;return Object.assign({name:t,data:e,groupby:u},s||i.length?{aggregate:Object.assign({},s?{cross:s}:{},i.length?{fields:i,ops:o,as:a}:{})}:{})}facetSortFields(t){const{facet:e}=this,n=e[t];return n?XU(n.sort)?[yG(n,n.sort,{expr:"datum"})]:Object(Mt.z)(n.sort)?[yq(n,t,{expr:"datum"})]:[TB(n,{expr:"datum"})]:[]}facetSortOrder(t){const{facet:e}=this,n=e[t];if(n){const{sort:t}=n;return[(XU(t)?t.order:!Object(Mt.z)(t)&&t)||"ascending"]}return[]}assembleLabelTitle(){const{facet:t,config:e}=this;if(t.facet)return Cq(t.facet,"facet",e);const n={row:["top","bottom"],column:["left","right"]};for(const r of wq)if(t[r]){const i=xq("labelOrient",t[r],e,r);if(pz(n[r],i))return Cq(t[r],r,e)}}assembleMarks(){const{child:t}=this,e=function(t){const e=[],n=iG(e);return t.children.forEach(e=>n(e,{source:t.name,name:null,transform:[]})),e}(this.component.data.facetRoot),n=t.assembleGroupEncodeEntry(!1),r=this.assembleLabelTitle()||t.assembleTitle(),i=t.assembleGroupStyle();return[Object.assign({name:this.getName("cell"),type:"group"},r?{title:r}:{},i?{style:i}:{},{from:{facet:this.assembleFacet()},sort:{field:vz(HT.map(t=>this.facetSortFields(t))),order:vz(HT.map(t=>this.facetSortOrder(t)))}},e.length>0?{data:e}:{},n?{encode:{update:n}}:{},t.assembleGroup(function(t,e){if(t.component.selection&&kz(t.component.selection).length){const n=Object(Mt.W)(t.getName("cell"));e.unshift({name:"facet",value:{},on:[{events:QM("mousemove","scope"),update:`isTuple(facet) ? facet : group(${n}).datum`}]})}return e}(this,[])))]}getMapping(){return this.facet}}function xG(t,e){for(const n of e){const e=n.data;if((!t.name||!n.hasName()||t.name===n.dataName)&&!(t.format&&t.format.mesh&&e.format&&e.format.feature))if(eU(t)&&eU(e)){if(uz(t.values,e.values))return n}else if(tU(t)&&tU(e)){if(t.url===e.url)return n}else if(nU(t)&&t.name===n.dataName)return n}return null}function _G(t){let e=function(t,e){if(t.data||!t.parent){const n=xG(t.data,e);if(n)return rU(t.data)||(n.data.format=yz({},t.data.format,n.data.format)),!n.hasName()&&t.data.name&&(n.dataName=t.data.name),n;{const n=new CW(t.data);return e.push(n),n}}return t.parent.component.data.facetRoot?t.parent.component.data.facetRoot:t.parent.component.data.main}(t,t.component.data.sources);const{outputNodes:n,outputNodeRefCounts:r}=t.component.data,i=t.parent?t.parent.component.data.ancestorParse.clone():new tG,o=t.data;rU(o)?(iU(o)?e=new rG(e,o.sequence):aU(o)&&(e=new UH(e,o.graticule)),i.parseNothing=!0):o&&o.format&&null===o.format.parse&&(i.parseNothing=!0),e=UW.makeExplicit(e,t,i)||e,!rI(t)||!CH(t)&&!NH(t)||t.parent&&NH(t.parent)||(e=new qH(e));const a=t.parent&&NH(t.parent);(CH(t)||MH(t))&&a&&(e=RW.makeFromEncoding(e,t)||e),t.transforms.length>0&&(e=function(t,e,n){let r=0;for(const i of e.transforms){let o,a=void 0;if(EU(i))o=t=new vq(t,i),a="derived";else if(xU(i))o=t=UW.makeImplicitFromFilterTransform(t,i,n)||t,t=new PW(t,e,i.filter);else if(jU(i))o=t=RW.makeFromTransform(t,i,e),a="number";else if(CU(i))o=t=Bq.makeFromTransform(t,i),a="date",void 0===n.getWithExplicit(i.field).value&&(t=new UW(t,{[i.field]:a}),n.set(i.field,a,!1));else if(MU(i))o=t=TW.makeFromTransform(t,i),a="number",rI(e)&&(t=new qH(t));else if(_U(i))o=t=eG.make(t,e,i,r++),a="derived";else if(OU(i))o=t=new WW(t,i),a="number";else if(kU(i))o=t=new qW(t,i),a="number";else if(DU(i))o=t=IW.makeFromTransform(t,i),a="derived";else if(FU(i))o=t=new BH(t,i),a="derived";else if(AU(i))o=t=new RH(t,i),a="derived";else if(wU(i))t=new nG(t,i);else{if(!SU(i)){JR(GR.invalidTransformIgnored(i));continue}o=t=KH.makeFromTransform(t,i),a="derived"}if(o&&void 0!==a)for(const t of o.producedFields())n.set(t,a,!1)}return t}(e,t,i)),e=UW.makeImplicitFromEncoding(e,t,i)||e,CH(t)&&(e=PH.parseAll(e,t),e=LH.parseAll(e,t)),(CH(t)||MH(t))&&(a||(e=RW.makeFromEncoding(e,t)||e),e=Bq.makeFromEncoding(e,t)||e,e=vq.parseAllForSortIndex(e,t));const u=t.getName(sU),s=new gq(e,u,sU,r);if(n[u]=s,e=s,CH(t)){const n=TW.makeFromEncoding(e,t);n&&(e=n,rI(t)&&(e=new qH(e))),e=KH.makeFromEncoding(e,t)||e,e=IW.makeFromEncoding(e,t)||e}CH(t)&&(e=$H.make(e,t)||e);const c=t.getName(uU),l=new gq(e,c,uU,r);n[c]=l,e=l;let f=null;if(MH(t)){const r=t.getName("facet");e=function(t,e){const{row:n,column:r}=e;if(n&&r){let e=null;for(const i of[n,r])if(XU(i.sort)){const{field:n,op:r=VU}=i.sort;t=e=new qW(t,{joinaggregate:[{op:r,field:n,as:yG(i,i.sort,{forAs:!0})}],groupby:[TB(i)]})}return e}return null}(e=vq.parseAllForSortIndex(e,t),t.facet)||e,f=new BW(e,t,r,l.getSource()),n[r]=f,e=f}return Object.assign({},t.component.data,{outputNodes:n,outputNodeRefCounts:r,raw:s,main:l,facetRoot:f,ancestorParse:i})}class wG extends zH{constructor(t,e,n,r,i,o,a){super(t,e,n,r,i,o,a)}parseData(){this.component.data=_G(this),this.children.forEach(t=>{t.parseData()})}parseSelections(){this.component.selection={};for(const t of this.children)t.parseSelections(),kz(t.component.selection).forEach(e=>{this.component.selection[e]=t.component.selection[e]})}parseMarkGroup(){for(const t of this.children)t.parseMarkGroup()}parseAxesAndHeaders(){for(const t of this.children)t.parseAxesAndHeaders()}assembleSelectionTopLevelSignals(t){return this.children.reduce((t,e)=>e.assembleSelectionTopLevelSignals(t),t)}assembleSignals(){return this.children.forEach(t=>t.assembleSignals()),[]}assembleLayoutSignals(){return this.children.reduce((t,e)=>[...t,...e.assembleLayoutSignals()],zq(this))}assembleSelectionData(t){return this.children.reduce((t,e)=>e.assembleSelectionData(t),t)}assembleMarks(){return this.children.map(t=>{const e=t.assembleTitle(),n=t.assembleGroupStyle(),r=t.assembleGroupEncodeEntry(!1);return Object.assign({type:"group",name:t.getName("group")},e?{title:e}:{},n?{style:n}:{},r?{encode:{update:r}}:{},t.assembleGroup())})}}class OG extends wG{constructor(t,e,n,r,i){super(t,"concat",e,n,i,r,t.resolve),t.resolve&&t.resolve.axis&&("shared"===t.resolve.axis.x||"shared"===t.resolve.axis.y)&&JR(GR.CONCAT_CANNOT_SHARE_AXIS),this.concatType=OL(t)?"vconcat":kL(t)?"hconcat":"concat",this.children=this.getChildren(t).map((t,e)=>zG(t,this,this.getName("concat_"+e),void 0,r,i,!1))}getChildren(t){return OL(t)?t.vconcat:kL(t)?t.hconcat:t.concat}parseLayoutSize(){!function(t){fG(t);const e=t.component.layoutSize,n=lG[t.concatType];n&&e.setWithExplicit(n,hG(t,n))}(this)}parseAxisGroup(){return null}assembleDefaultLayout(){return Object.assign({},"vconcat"===this.concatType?{columns:1}:{},{bounds:"full",align:"each"})}}class kG extends tW{constructor(t={},e={},n=!1){super(),this.explicit=t,this.implicit=e,this.mainExtracted=n}clone(){return new kG(sz(this.explicit),sz(this.implicit),this.mainExtracted)}hasAxisPart(t){return"axis"===t||("grid"===t||"title"===t?!!this.get(t):!(!1===(e=this.get(t))||null===e));var e}}const AG={bottom:"top",top:"bottom",left:"right",right:"left"};function EG(t,e){if(!t)return e.map(t=>t.clone());{if(t.length!==e.length)return;const n=t.length;for(let r=0;r<n;r++){const n=t[r],i=e[r];if(!!n!=!!i)return;if(n&&i){const e=n.getWithExplicit("orient"),o=i.getWithExplicit("orient");if(e.explicit&&o.explicit&&e.value!==o.value)return;t[r]=jG(n,i)}}}return t}function jG(t,e){for(const n of UU){const r=oW(t.getWithExplicit(n),e.getWithExplicit(n),n,"axis",(t,e)=>{switch(n){case"title":return dq(t,e);case"gridScale":return{explicit:t.explicit,value:$z(t.value,e.value)}}return iW(t,e,n,"axis")});t.setWithExplicit(n,r)}return t}function SG(t,e){const n="x"===e?"x2":"y2",r=t.fieldDef(e),i=t.fieldDef(n),o=r?r.title:void 0,a=i?i.title:void 0;return o&&a?hq(o,a):o||(a||(void 0!==o?o:void 0!==a?a:void 0))}function CG(t,e){const n=e.axis(t),r=new kG;UU.forEach(i=>{const o=function(t,e,n,r){const i=r.fieldDef(n),o=function(t,e,n,r){if(void 0!==e.labelAngle)return Pz(e.labelAngle);{const e=ZU("labelAngle",t.config,n,tq(n),t.getScaleComponent(n).get("type"));return void 0!==e?Pz(e):n===vT&&pz([wB,xB],r.type)?270:void 0}}(r,e,n,i),a=$z(e.orient,tq(n));switch(t){case"scale":return r.scaleName(n);case"gridScale":return function(t,e){const n="x"===e?"y":"x";if(t.getScaleComponent(n))return t.scaleName(n)}(r,n);case"format":if(JB(i))return;return oq(i,e.format,r.config);case"formatType":if(JB(i))return;return e.formatType;case"grid":if(nP(r.fieldDef(n).bin))return!1;{const t=r.getScaleComponent(n).get("type");return $z(e.grid,function(t,e){return!eL(t)&&!eP(e.bin)}(t,i))}case"labelAlign":return $z(e.labelAlign,KU(o,a));case"labelAngle":return o;case"labelBaseline":return $z(e.labelBaseline,QU(o,a));case"labelFlush":return $z(e.labelFlush,function(t,e){if("x"===e&&pz(["quantitative","temporal"],t.type))return!0}(i,n));case"labelOverlap":{const t=r.getScaleComponent(n).get("type");return $z(e.labelOverlap,function(t,e){if("nominal"!==t.type)return"log"!==e||"greedy"}(i,t))}case"orient":return a;case"tickCount":{const t=r.getScaleComponent(n).get("type"),o="x"===n?"width":"y"===n?"height":void 0,a=o?r.getSizeSignalRef(o):void 0;return $z(e.tickCount,function({fieldDef:t,scaleType:e,size:n}){if(!eL(e)&&"log"!==e&&!pz(["month","hours","day","quarter"],t.timeUnit))return eP(t.bin)?{signal:`ceil(${n.signal}/10)`}:{signal:`ceil(${n.signal}/40)`}}({fieldDef:i,scaleType:t,size:a}))}case"title":{const t="x"===n?"x2":"y2",o=r.fieldDef(t);return $z(e.title,SG(r,n),fq([kB(i)],o?[kB(o)]:[]))}case"values":return function(t,e,n){const r=t.values;if(r)return QB(n,r)}(e,0,i)}return u=t,LU[u]?e[t]:void 0;var u}(i,n,t,e);if(void 0!==o){const a=function(t,e,n,r,i){switch(e){case"titleAngle":case"labelAngle":return t===Pz(n[e]);case"values":return!!n.values;case"encode":return!!n.encoding||!!n.labelAngle;case"title":if(t===SG(r,i))return!0}return t===n[e]}(o,i,n,e,t),u=ZU(i,e.config,t,r.get("orient"),e.getScaleComponent(t).get("type"));a||void 0===u?r.set(i,o,a):pz(["grid","orient"],i)&&u&&r.set(i,u,!1)}});const i=n.encoding||{},o=RU.reduce((n,o)=>{if(!r.hasAxisPart(o))return n;const a=ZI(i[o]||{},e),u="labels"===o?function(t,e,n){const r=t.fieldDef(e)||("x"===e?t.fieldDef("x2"):"y"===e?t.fieldDef("y2"):void 0),i=t.axis(e),o=t.config;let a={};if(JB(r)){const n=t.getScaleComponent(e).get("type")===IP.UTC,u=cq("datum.value",r.timeUnit,i.format,o.axis.shortTimeLabels,null,n);u&&(a.text={signal:u})}return a=Object.assign({},a,n),0===kz(a).length?void 0:a}(e,t,a):a;return void 0!==u&&kz(u).length>0&&(n[o]={update:u}),n},{});return kz(o).length>0&&r.set("encode",o,!!n.encoding||void 0!==n.labelAngle),r}function MG(t,e,n){const r=eT(t)?Object.assign({},t):{type:t},i=r.orient||nq("orient",r,n);return r.orient=function(t,e,n){switch(t){case Iz:case Xz:case Jz:case Gz:case Wz:return}const{x:r,y:i,x2:o,y2:a}=e;switch(t){case Uz:if(jB(r)&&nP(r.bin))return"vertical";if(jB(i)&&nP(i.bin))return"horizontal";if(a||o){if(n)return n;if(!o&&jB(r)&&r.type===bB&&!eP(r.bin))return"horizontal";if(!a&&jB(i)&&i.type===bB&&!eP(i.bin))return"vertical"}case Hz:if(o&&a)return;case Lz:if(a)return jB(i)&&nP(i.bin)?"horizontal":"vertical";if(o)return jB(r)&&nP(r.bin)?"vertical":"horizontal";if(t===Hz){if(e.x&&!e.y)return"vertical";if(e.y&&!e.x)return"horizontal"}case qz:case Yz:{const r=jB(e.x)&&$B(e.x),i=jB(e.y)&&$B(e.y);if(r&&!i)return"tick"!==t?"horizontal":"vertical";if(!r&&i)return"tick"!==t?"vertical":"horizontal";if(r&&i){const r=e.x,i=e.y,o=r.type===_B,a=i.type===_B;return o&&!a?"tick"!==t?"vertical":"horizontal":!o&&a?"tick"!==t?"horizontal":"vertical":!r.aggregate&&i.aggregate?"tick"!==t?"vertical":"horizontal":r.aggregate&&!i.aggregate?"tick"!==t?"horizontal":"vertical":n||"vertical"}return n||void 0}}return"vertical"}(r.type,e,i),void 0!==i&&i!==r.orient&&JR(GR.orientOverridden(r.orient,i)),void 0===$z(r.opacity,nq("opacity",r,n))&&(r.opacity=function(t,e){if(pz([Iz,Yz,Xz,Jz],t)&&!aP(e))return.7;return}(r.type,e)),void 0===r.filled&&(r.filled=function(t,e){const n=nq("filled",t,e),r=t.type;return $z(n,r!==Iz&&r!==qz&&r!==Hz)}(r,n)),void 0===(r.cursor||nq("cursor",r,n))&&(r.cursor=function(t,e,n){if(e.href||t.href||nq("href",t,n))return"pointer";return t.cursor}(r,e,n)),r}class DG extends TH{constructor(t,e,n,r={},i,o,a){super(t,"unit",e,n,o,i,void 0,t.view),this.fit=a,this.specifiedScales={},this.specifiedAxes={},this.specifiedLegends={},this.specifiedProjection={},this.selection={},this.children=[],this.initSize(Object.assign({},r,t.width?{width:t.width}:{},t.height?{height:t.height}:{}));const u=eT(t.mark)?t.mark.type:t.mark,s=this.encoding=sP(function(t,e){return vG(t,e)}(t.encoding||{},i),u);this.markDef=MG(t.mark,s,o),this.stack=LL(u,s,this.config.stack),this.specifiedScales=this.initScales(u,s),this.specifiedAxes=this.initAxes(s),this.specifiedLegends=this.initLegend(s),this.specifiedProjection=t.projection,this.selection=t.selection}get hasProjection(){const{encoding:t}=this,e=this.mark===Zz,n=t&&UT.some(e=>jB(t[e]));return e||n}scaleDomain(t){const e=this.specifiedScales[t];return e?e.domain:void 0}axis(t){return this.specifiedAxes[t]}legend(t){return this.specifiedLegends[t]}initScales(t,e){return C$.reduce((t,n)=>{let r,i;const o=e[n];return jB(o)?(r=o,i=o.scale):EB(o)&&(r=o.condition,i=o.condition.scale),r&&(t[n]=i||{}),t},{})}initAxes(t){return[vT,yT].reduce((e,n)=>{const r=t[n];if(jB(r)||n===vT&&jB(t.x2)||n===yT&&jB(t.y2)){const t=jB(r)?r.axis:null;null!==t&&(e[n]=Object.assign({},t))}return e},{})}initLegend(t){return j$.reduce((e,n)=>{const r=t[n];if(r){const t=jB(r)?r.legend:EB(r)?r.condition.legend:null;null!==t&&!1!==t&&function(t){switch(t){case AT:case ET:case jT:case CT:case ST:case MT:return!0;case DT:case FT:case NT:return!1}}(n)&&(e[n]=Object.assign({},t))}return e},{})}parseData(){this.component.data=_G(this)}parseLayoutSize(){!function(t){const e=t.component.layoutSize;if(!e.explicit.width){const n=dG(t,"width");e.set("width",n,!1)}if(!e.explicit.height){const n=dG(t,"height");e.set("height",n,!1)}}(this)}parseSelections(){this.component.selection=function(t,e){const n={},r=t.config.selection;e&&(e=sz(e));for(let i in e){if(!e.hasOwnProperty(i))continue;const o=e[i],a=r[o.type],{fields:u,encodings:s}=a,c=b(a,["fields","encodings"]);for(const t in c)"encodings"===t&&o.fields||"fields"===t&&o.encodings||("mark"===t&&(o[t]=Object.assign({},c[t],o[t])),void 0!==o[t]&&!0!==o[t]||(o[t]=c[t]||o[t]));const l=n[i=Sz(i)]=Object.assign({},o,{name:i,events:Object(Mt.G)(o.on)?QM(o.on,"scope"):o.on});vI(l,e=>{e.parse&&e.parse(t,o,l)})}return n}(this,this.selection)}parseMarkGroup(){this.component.mark=XH(this)}parseAxesAndHeaders(){var t;this.component.axes=(t=this,b$.reduce((e,n)=>(t.component.scales[n]&&t.axis(n)&&(e[n]=[CG(n,t)]),e),{}))}assembleSelectionTopLevelSignals(t){return function(t,e){let n=!1;eI(t,(r,i)=>{const o=r.name,a=Object(Mt.W)(o+Xq);e.filter(t=>t.name===o).length||e.push({name:r.name,update:`${Kq}(${a}`+("global"===r.resolve?")":`, ${Object(Mt.W)(r.resolve)})`)}),n=!0,i.topLevelSignals&&(e=i.topLevelSignals(t,r,e)),vI(r,n=>{n.topLevelSignals&&(e=n.topLevelSignals(t,r,e))})}),n&&(e.filter(t=>"unit"===t.name).length||e.unshift({name:"unit",value:{},on:[{events:"mousemove",update:"isTuple(group()) ? group() : unit"}]}));return e}(this,t)}assembleSignals(){return[...IU(this),...(t=this,e=[],eI(t,(n,r)=>{const i=n.name;let o=r.modifyExpr(t,n);e.push(...r.signals(t,n)),vI(n,r=>{r.signals&&(e=r.signals(t,n,e)),r.modifyExpr&&(o=r.modifyExpr(t,n,o))}),e.push({name:i+Zq,update:`modify(${Object(Mt.W)(n.name+Xq)}, ${o})`})}),e)];var t,e}assembleSelectionData(t){return function(t,e){return eI(t,t=>{e.filter(e=>e.name===t.name+Xq).length||e.push({name:t.name+Xq})}),e}(this,t)}assembleLayout(){return null}assembleLayoutSignals(){return zq(this)}assembleMarks(){let t=this.component.mark||[];return this.parent&&NH(this.parent)||(t=bI(this,t)),t.map(this.correctDataNames)}getMapping(){return this.encoding}get mark(){return this.markDef.type}channelHasField(t){return oP(this.encoding,t)}fieldDef(t){return HB(this.encoding[t])}}class FG extends zH{constructor(t,e,n,r,i,o,a){super(t,"layer",e,n,o,i,t.resolve,t.view);const u=Object.assign({},r,t.width?{width:t.width}:{},t.height?{height:t.height}:{});this.initSize(u),this.children=t.layer.map((t,e)=>{if(TL(t))return new FG(t,this,this.getName("layer_"+e),u,i,o,a);if(iT(t))return new DG(t,this,this.getName("layer_"+e),u,i,o,a);throw new Error(GR.INVALID_SPEC)})}parseData(){this.component.data=_G(this);for(const t of this.children)t.parseData()}parseLayoutSize(){sG(this)}parseSelections(){this.component.selection={};for(const t of this.children)t.parseSelections(),kz(t.component.selection).forEach(e=>{this.component.selection[e]=t.component.selection[e]})}parseMarkGroup(){for(const t of this.children)t.parseMarkGroup()}parseAxesAndHeaders(){!function(t){const{axes:e,resolve:n}=t.component,r={top:0,bottom:0,right:0,left:0};for(const r of t.children){r.parseAxesAndHeaders();for(const i of kz(r.component.axes))n.axis[i]=KI(t.component.resolve,i),"shared"===n.axis[i]&&(e[i]=EG(e[i],r.component.axes[i]),e[i]||(n.axis[i]="independent",delete e[i]))}for(const i of[vT,yT]){for(const o of t.children)if(o.component.axes[i]){if("independent"===n.axis[i]){e[i]=(e[i]||[]).concat(o.component.axes[i]);for(const t of o.component.axes[i]){const{value:e,explicit:n}=t.getWithExplicit("orient");if(r[e]>0&&!n){const n=AG[e];r[e]>r[n]&&t.set("orient",n,!1)}r[e]++}}delete o.component.axes[i]}if("independent"===n.axis[i]&&e[i]&&e[i].length>1)for(const t of e[i])t.get("grid")&&!t.explicit.grid&&(t.implicit.grid=!1)}}(this)}assembleSelectionTopLevelSignals(t){return this.children.reduce((t,e)=>e.assembleSelectionTopLevelSignals(t),t)}assembleSignals(){return this.children.reduce((t,e)=>t.concat(e.assembleSignals()),IU(this))}assembleLayoutSignals(){return this.children.reduce((t,e)=>t.concat(e.assembleLayoutSignals()),zq(this))}assembleSelectionData(t){return this.children.reduce((t,e)=>e.assembleSelectionData(t),t)}assembleTitle(){let t=super.assembleTitle();if(t)return t;for(const e of this.children)if(t=e.assembleTitle())return t}assembleLayout(){return null}assembleMarks(){return function(t,e){for(const n of t.children)CH(n)&&(e=bI(n,e));return e}(this,vz(this.children.map(t=>t.assembleMarks())))}assembleLegends(){return this.children.reduce((t,e)=>t.concat(e.assembleLegends()),OW(this))}}class NG extends wG{constructor(t,e,n,r,i){super(t,"repeat",e,n,i,r,t.resolve),t.resolve&&t.resolve.axis&&("shared"===t.resolve.axis.x||"shared"===t.resolve.axis.y)&&JR(GR.REPEAT_CANNOT_SHARE_AXIS),this.repeat=t.repeat,this.children=this._initChildren(t,this.repeat,r,i)}_initChildren(t,e,n,r){const i=[],o=!Object(Mt.z)(e)&&e.row||[n?n.row:null],a=!Object(Mt.z)(e)&&e.column||[n?n.column:null],u=Object(Mt.z)(e)&&e||[n?n.repeat:null];for(const e of u)for(const n of o)for(const o of a){const a=(e?`__repeat_repeat_${e}`:"")+(n?`__repeat_row_${n}`:"")+(o?`__repeat_column_${o}`:""),u={repeat:e,row:n,column:o};i.push(zG(t.spec,this,this.getName("child"+a),void 0,u,r,!1))}return i}parseLayoutSize(){cG(this)}assembleDefaultLayout(){const{repeat:t}=this,e=Object(Mt.z)(t)?void 0:t.column?t.column.length:1;return Object.assign({},e?{columns:e}:{},{bounds:"full",align:"all"})}}function zG(t,e,n,r,i,o,a){if(oB(t))return new bG(t,e,n,i,o);if(TL(t))return new FG(t,e,n,r,i,o,a);if(iT(t))return new DG(t,e,n,r,i,o,a);if(AL(t))return new NG(t,e,n,i,o);if(function(t){return OL(t)||kL(t)||wL(t)}(t))return new OG(t,e,n,i,o);throw new Error(GR.INVALID_SPEC)}function TG(t,e={}){var n;e.logger&&(n=e.logger,VR=n),e.fieldTitle&&LB(e.fieldTitle);try{const n=CL(yz({},e.config,t.config)),r=XL(t,n),i=function(t,e,n=!0){const r=Object.assign({type:"pad"},ZL(e),ZL(t));return"fit"===r.type&&(n||(JR(GR.FIT_NON_SINGLE),r.type="pad")),r}(t.autosize,n.autosize,TL(r)||iT(r)),o=zG(r,null,"",void 0,void 0,n,"fit"===i.type);return o.parse(),function(t,e){MW(t.sources);let n=0,r=0;for(let r=0;r<eH&&oH(t,e);r++)n++;t.sources.map(XW);for(let n=0;n<eH&&oH(t,e);n++)r++;MW(t.sources),Math.max(n,r)===eH&&JR(`Maximum optimization runs(${eH}) reached.`)}(o.component.data,o),function(t,e,n={},r){const i=t.config?NL(t.config):void 0,o=[].concat(t.assembleSelectionData([]),function(t,e){const n=[],r=iG(n);let i=0;t.sources.forEach(t=>{t.hasName()||(t.dataName=`source_${i++}`);const e=t.assemble();r(t,e)}),n.forEach(t=>{0===t.transform.length&&delete t.transform});let o=0;for(const[t,e]of n.entries())0!==(e.transform||[]).length||e.source||n.splice(o++,0,n.splice(t,1)[0]);for(const e of n)for(const n of e.transform||[])"lookup"===n.type&&(n.from=t.outputNodes[n.from].getSource());for(const t of n)t.name in e&&(t.values=e[t.name]);return n}(t.component.data,n)),a=t.assembleProjections(),u=t.assembleTitle(),s=t.assembleGroupStyle(),c=t.assembleGroupEncodeEntry(!0);let l=t.assembleLayoutSignals();return l=l.filter(t=>"width"!==t.name&&"height"!==t.name||void 0===t.value||(e[t.name]=+t.value,!1)),{spec:Object.assign({$schema:"https://vega.github.io/schema/vega/v5.json"},t.description?{description:t.description}:{},e,u?{title:u}:{},s?{style:s}:{},c?{encode:{update:c}}:{},{data:o},a.length>0?{projections:a}:{},t.assembleGroup([...l,...t.assembleSelectionTopLevelSignals([])]),i?{config:i}:{},r?{usermeta:r}:{})}}(o,function(t,e,n){return Object.assign({autosize:1===kz(n).length&&n.type?n.type:n},KL(e),KL(t))}(t,n,i),t.datasets,t.usermeta)}finally{e.logger&&XR(),e.fieldTitle&&LB(BB)}}const $G=new class extends $L{mapUnit(t,{config:e}){if(t.encoding){const{encoding:n,transform:r}=t,{bins:i,timeUnits:o,aggregate:a,groupby:u,encoding:s}=uP(n,e),c=[...r||[],...i,...o,...a.length?[{aggregate:a,groupby:u}]:[]];return Object.assign({},t,c.length>0?{transform:c}:{},{encoding:s})}return t}};function RG(t,e){return $G.map(t,{config:e})}const BG=JN.version;var PG=n(5),LG=n.n(PG);var UG={background:"#fff",arc:{fill:"#4572a7"},area:{fill:"#4572a7"},line:{stroke:"#4572a7",strokeWidth:2},path:{stroke:"#4572a7"},rect:{fill:"#4572a7"},shape:{stroke:"#4572a7"},symbol:{fill:"#4572a7",strokeWidth:1.5,size:50},axis:{bandPosition:.5,grid:!0,gridColor:"#000000",gridOpacity:1,gridWidth:.5,labelPadding:10,tickSize:5,tickWidth:.5},axisBand:{grid:!1,tickExtra:!0},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:50,symbolType:"square"},range:{category:["#4572a7","#aa4643","#8aa453","#71598e","#4598ae","#d98445","#94aace","#d09393","#b9cc98","#a99cbc"]}};var qG={group:{fill:"#e5e5e5"},arc:{fill:"#000"},area:{fill:"#000"},line:{stroke:"#000"},path:{stroke:"#000"},rect:{fill:"#000"},shape:{stroke:"#000"},symbol:{fill:"#000",size:40},axis:{domain:!1,grid:!0,gridColor:"#FFFFFF",gridOpacity:1,labelColor:"#7F7F7F",labelPadding:4,tickColor:"#7F7F7F",tickSize:5.67,titleFontSize:16,titleFontWeight:"normal"},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:40},range:{category:["#000000","#7F7F7F","#1A1A1A","#999999","#333333","#B0B0B0","#4D4D4D","#C9C9C9","#666666","#DCDCDC"]}};var IG={background:"#f9f9f9",arc:{fill:"#ab5787"},area:{fill:"#ab5787"},line:{stroke:"#ab5787"},path:{stroke:"#ab5787"},rect:{fill:"#ab5787"},shape:{stroke:"#ab5787"},symbol:{fill:"#ab5787",size:30},axis:{domainColor:"#979797",domainWidth:.5,gridWidth:.2,labelColor:"#979797",tickColor:"#979797",tickWidth:.2,titleColor:"#979797"},axisBand:{grid:!1},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0},legend:{labelFontSize:11,padding:1,symbolSize:30,symbolType:"square"},range:{category:["#ab5787","#51b2e5","#703c5c","#168dd9","#d190b6","#00609f","#d365ba","#154866","#666666","#c4c4c4"]}};var WG={background:"#fff",arc:{fill:"#3e5c69"},area:{fill:"#3e5c69"},line:{stroke:"#3e5c69"},path:{stroke:"#3e5c69"},rect:{fill:"#3e5c69"},shape:{stroke:"#3e5c69"},symbol:{fill:"#3e5c69"},axis:{domainWidth:.5,grid:!0,labelPadding:2,tickSize:5,tickWidth:.5,titleFontWeight:"normal"},axisBand:{grid:!1},axisX:{gridWidth:.2},axisY:{gridDash:[3],gridWidth:.4},legend:{labelFontSize:11,padding:1,symbolType:"square"},range:{category:["#3e5c69","#6793a6","#182429","#0570b0","#3690c0","#74a9cf","#a6bddb","#e2ddf2"]}};var HG={background:"#333",title:{color:"#fff"},style:{"guide-label":{fill:"#fff"},"guide-title":{fill:"#fff"}},axis:{domainColor:"#fff",gridColor:"#888",tickColor:"#fff"}};var GG={arc:{fill:"#30a2da"},area:{fill:"#30a2da"},axisBand:{grid:!1},axisBottom:{domain:!1,domainColor:"#333",domainWidth:3,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,titleFontSize:14,titlePadding:10},axisLeft:{domainColor:"#cbcbcb",domainWidth:1,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,ticks:!0,titleFontSize:14,titlePadding:10},axisRight:{domainColor:"#333",domainWidth:1,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,ticks:!0,titleFontSize:14,titlePadding:10},axisTop:{domain:!1,domainColor:"#333",domainWidth:3,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,titleFontSize:14,titlePadding:10},background:"#f0f0f0",group:{fill:"#f0f0f0"},legend:{labelColor:"#333",labelFontSize:11,padding:1,symbolSize:30,symbolType:"square",titleColor:"#333",titleFontSize:14,titlePadding:10},line:{stroke:"#30a2da",strokeWidth:2},path:{stroke:"#30a2da",strokeWidth:.5},rect:{fill:"#30a2da"},range:{category:["#30a2da","#fc4f30","#e5ae38","#6d904f","#8b8b8b","#b96db8","#ff9e27","#56cc60","#52d2ca","#52689e","#545454","#9fe4f8"],diverging:["#cc0020","#e77866","#f6e7e1","#d6e8ed","#91bfd9","#1d78b5"],heatmap:["#d6e8ed","#cee0e5","#91bfd9","#549cc6","#1d78b5"]},symbol:{filled:!0,shape:"circle"},shape:{stroke:"#30a2da"},style:{bar:{binSpacing:2,fill:"#30a2da",stroke:null}},title:{anchor:"start",fontSize:24,fontWeight:600,offset:20}};const YG="Benton Gothic Bold, sans",VG={"category-6":["#ec8431","#829eb1","#c89d29","#3580b1","#adc839","#ab7fb4"],"fire-7":["#fbf2c7","#f9e39c","#f8d36e","#f4bb6a","#e68a4f","#d15a40","#ab4232"],"fireandice-6":["#e68a4f","#f4bb6a","#f9e39c","#dadfe2","#a6b7c6","#849eae"],"ice-7":["#edefee","#dadfe2","#c4ccd2","#a6b7c6","#849eae","#607785","#47525d"]};var XG={background:"#ffffff",title:{anchor:"start",font:YG,fontColor:"#000000",fontSize:22,fontWeight:"normal"},arc:{fill:"#82c6df"},area:{fill:"#82c6df"},line:{stroke:"#82c6df",strokeWidth:2},path:{stroke:"#82c6df"},rect:{fill:"#82c6df"},shape:{stroke:"#82c6df"},symbol:{fill:"#82c6df",size:30},axis:{labelFont:"Benton Gothic, sans",labelFontSize:11.5,labelFontWeight:"normal",titleFont:YG,titleFontSize:13,titleFontWeight:"normal"},axisX:{labelAngle:0,labelPadding:4,tickSize:3},axisY:{labelBaseline:"middle",maxExtent:45,minExtent:45,tickSize:2,titleAlign:"left",titleAngle:0,titleX:-45,titleY:-11},legend:{labelFont:"Benton Gothic, sans",labelFontSize:11.5,symbolType:"square",titleFont:YG,titleFontSize:13,titleFontWeight:"normal"},range:{category:VG["category-6"],diverging:VG["fireandice-6"],heatmap:VG["fire-7"],ordinal:VG["fire-7"],ramp:VG["fire-7"]}},JG="#vg-tooltip-element {\n visibility: hidden;\n padding: 8px;\n position: fixed;\n z-index: 1000;\n font-family: sans-serif;\n font-size: 11px;\n border-radius: 3px;\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);\n /* The default theme is the light theme. */\n background-color: rgba(255, 255, 255, 0.95);\n border: 1px solid #d9d9d9;\n color: black; }\n #vg-tooltip-element.visible {\n visibility: visible; }\n #vg-tooltip-element h2 {\n margin-top: 0;\n margin-bottom: 10px;\n font-size: 13px; }\n #vg-tooltip-element table {\n border-spacing: 0; }\n #vg-tooltip-element table tr {\n border: none; }\n #vg-tooltip-element table tr td {\n overflow: hidden;\n text-overflow: ellipsis;\n padding-top: 2px;\n padding-bottom: 2px; }\n #vg-tooltip-element table tr td.key {\n color: #808080;\n max-width: 150px;\n text-align: right;\n padding-right: 4px; }\n #vg-tooltip-element table tr td.value {\n display: block;\n max-width: 300px;\n max-height: 7em;\n text-align: left; }\n #vg-tooltip-element.dark-theme {\n background-color: rgba(32, 32, 32, 0.9);\n border: 1px solid #f5f5f5;\n color: white; }\n #vg-tooltip-element.dark-theme td.key {\n color: #bfbfbf; }\n";const ZG="vg-tooltip-element",QG={offsetX:10,offsetY:10,id:ZG,styleId:"vega-tooltip-style",theme:"light",disableDefaultStyle:!1,sanitize:function(t){return String(t).replace(/&/g,"&").replace(/</g,"<")},maxDepth:2};var KG=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&(n[r[i]]=t[r[i]])}return n};function tY(t,e){return JSON.stringify(t,function(t){const e=[];return function(n,r){if("object"!=typeof r||null===r)return r;const i=e.indexOf(this)+1;return e.length=i,e.length>t?"[Object]":e.indexOf(r)>=0?"[Circular]":(e.push(r),r)}}(e))}class eY{constructor(t){this.options=Object.assign({},QG,t);const e=this.options.id;if(this.call=this.tooltip_handler.bind(this),!this.options.disableDefaultStyle&&!document.getElementById(this.options.styleId)){const t=document.createElement("style");t.setAttribute("id",this.options.styleId),t.innerHTML=function(t){if(!/^[A-Za-z]+[-:.\w]*$/.test(t))throw new Error("Invalid HTML ID");return JG.toString().replace(ZG,t)}(e);const n=document.head;n.childNodes.length>0?n.insertBefore(t,n.childNodes[0]):n.appendChild(t)}this.el=document.getElementById(e),this.el||(this.el=document.createElement("div"),this.el.setAttribute("id",e),this.el.classList.add("vg-tooltip"),document.body.appendChild(this.el))}tooltip_handler(t,e,n,r){if(null==r||""===r)return void this.el.classList.remove("visible",`${this.options.theme}-theme`);this.el.innerHTML=function(t,e,n){if(Object(Mt.z)(t))return`[${t.map(t=>e(Object(Mt.G)(t)?t:tY(t,n))).join(", ")}]`;if(Object(Mt.E)(t)){let r="";const i=t,{title:o}=i,a=KG(i,["title"]);o&&(r+=`<h2>${e(o)}</h2>`);const u=Object.keys(a);if(u.length>0){r+="<table>";for(const t of u){let i=a[t];Object(Mt.E)(i)&&(i=tY(i,n)),r+=`<tr><td class="key">${e(t)}:</td><td class="value">${e(i)}</td></tr>`}r+="</table>"}return r||"{}"}return e(t)}(r,this.options.sanitize,this.options.maxDepth),this.el.classList.add("visible",`${this.options.theme}-theme`);const{x:i,y:o}=function(t,e,n,r){let i=t.clientX+n;i+e.width>window.innerWidth&&(i=+t.clientX-n-e.width);let o=t.clientY+r;return o+e.height>window.innerHeight&&(o=+t.clientY-r-e.height),{x:i,y:o}}(e,this.el.getBoundingClientRect(),this.options.offsetX,this.options.offsetY);this.el.setAttribute("style",`top: ${o}px; left: ${i}px`)}}var nY=function(t,e,n){const r=t.open(e),i=250;let o=~~(1e4/i);t.addEventListener("message",function e(n){n.source===r&&(o=0,t.removeEventListener("message",e,!1))},!1),setTimeout(function t(){o<=0||(r.postMessage(n,"*"),setTimeout(t,i),o-=1)},i)},rY='.vega-embed {\n position: relative;\n display: inline-block;\n padding-right: 38px; }\n .vega-embed details:not([open]) > :not(summary) {\n display: none !important; }\n .vega-embed summary {\n list-style: none;\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n padding: 6px;\n z-index: 1000;\n background: white;\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\n color: #1b1e23;\n border: 1px solid #aaa;\n border-radius: 999px;\n opacity: 0.2;\n transition: opacity 0.4s ease-in;\n outline: none;\n cursor: pointer; }\n .vega-embed summary::-webkit-details-marker {\n display: none; }\n .vega-embed details[open] summary {\n opacity: 0.7; }\n .vega-embed:hover summary,\n .vega-embed:focus summary {\n opacity: 1 !important;\n transition: opacity 0.2s ease; }\n .vega-embed .vega-actions {\n position: absolute;\n top: 35px;\n right: -9px;\n display: flex;\n flex-direction: column;\n padding-bottom: 8px;\n padding-top: 8px;\n border-radius: 4px;\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\n border: 1px solid #d9d9d9;\n background: white;\n animation-duration: 0.15s;\n animation-name: scale-in;\n animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5); }\n .vega-embed .vega-actions a {\n padding: 8px 16px;\n font-family: sans-serif;\n font-size: 14px;\n font-weight: 600;\n white-space: nowrap;\n color: #434a56;\n text-decoration: none; }\n .vega-embed .vega-actions a:hover {\n background-color: #f7f7f9;\n color: black; }\n .vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\n content: "";\n display: inline-block;\n position: absolute; }\n .vega-embed .vega-actions::before {\n left: auto;\n right: 14px;\n top: -16px;\n border: 8px solid #0000;\n border-bottom-color: #d9d9d9; }\n .vega-embed .vega-actions::after {\n left: auto;\n right: 15px;\n top: -14px;\n border: 7px solid #0000;\n border-bottom-color: #fff; }\n\n.vega-embed-wrapper {\n max-width: 100%;\n overflow: scroll;\n padding-right: 14px; }\n\n@keyframes scale-in {\n from {\n opacity: 0;\n transform: scale(0.6); }\n to {\n opacity: 1;\n transform: scale(1); } }\n';function iY(t,e){if("object"!=typeof e||null===e)return t;for(const n in e)e.hasOwnProperty(n)&&void 0!==e[n]&&("object"!=typeof e[n]||Object(Mt.z)(e[n])||null===e[n]?t[n]=e[n]:"object"!=typeof t[n]||null===t[n]?t[n]=oY(Object(Mt.z)(e[n].constructor)?[]:{},e[n]):oY(t[n],e[n]));return t}function oY(t,...e){for(const n of e)t=iY(t,n);return t}String.prototype.startsWith||(String.prototype.startsWith=function(t,e){return this.substr(!e||e<0?0:+e,t.length)===t}),n.d(e,"vega",function(){return aY}),n.d(e,"vl",function(){return uY}),n.d(e,"guessMode",function(){return pY}),n.d(e,"default",function(){return gY});const aY=p,uY=v,sY={CLICK_TO_VIEW_ACTIONS:"Click to view actions",COMPILED_ACTION:"View Compiled Vega",EDITOR_ACTION:"Open in Vega Editor",PNG_ACTION:"Save as PNG",SOURCE_ACTION:"View Source",SVG_ACTION:"Save as SVG"},cY={vega:"Vega","vega-lite":"Vega-Lite"},lY={vega:aY.version,"vega-lite":uY?uY.version:"not available"},fY={vega:t=>t,"vega-lite":(t,e)=>uY.compile(t,{config:e}).spec},hY='\n<svg viewBox="0 0 16 16" fill="currentColor" stroke="none" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" width="14" height="14">\n <circle r="2" cy="8" cx="2"></circle>\n <circle r="2" cy="8" cx="8"></circle>\n <circle r="2" cy="8" cx="14"></circle>\n</svg>';function dY(t,e,n,r){const i=`<html><head>${e}</head><body><pre><code class="json">`,o=`</code></pre>${n}</body></html>`,a=window.open("");a.document.write(i+t+o),a.document.title=`${cY[r]} JSON Source`}function pY(t,e){if(t.$schema){const n=LG()(t.$schema);e&&e!==n.library&&console.warn(`The given visualization spec is written in ${cY[n.library]}, but mode argument sets ${cY[e]||e}.`);const r=n.library;return Object(Ct.satisfies)(lY[r],`^${n.version.slice(1)}`)||console.warn(`The input spec uses ${cY[r]} ${n.version}, but the current version of ${cY[r]} is v${lY[r]}.`),r}return"mark"in t||"encoding"in t||"layer"in t||"hconcat"in t||"vconcat"in t||"facet"in t||"repeat"in t?"vega-lite":"marks"in t||"signals"in t||"scales"in t||"axes"in t?"vega":e||"vega"}function gY(t,e,n={}){return r=this,i=void 0,a=function*(){const r=(i=n.loader)&&"load"in i?n.loader:aY.loader(n.loader);var i;if(aY.isString(e)){const i=yield r.load(e);return gY(t,JSON.parse(i),n)}const o=(n=oY(n,e.usermeta&&e.usermeta.embedOptions)).patch||n.onBeforeParse,a=!0===n.actions||!1===n.actions?n.actions:oY({},{export:{svg:!0,png:!0},source:!0,compiled:!0,editor:!0},n.actions||{}),u=Object.assign({},sY,n.i18n),s=n.renderer||"canvas",c=n.logLevel||aY.Warn,l=n.downloadFileName||"visualization";let f=n.config||{};if(aY.isString(f)){const i=yield r.load(f);return gY(t,e,Object.assign({},n,{config:JSON.parse(i)}))}if(!1!==n.defaultStyle){const t="vega-embed-style";if(!document.getElementById(t)){const e=document.createElement("style");e.id=t,e.innerText=void 0===n.defaultStyle||!0===n.defaultStyle?(rY||"").toString():n.defaultStyle,document.head.appendChild(e)}}n.theme&&(f=oY({},y[n.theme],f));const h=pY(e,n.mode);let d=fY[h](e,f);if("vega-lite"===h&&d.$schema){const t=LG()(d.$schema);Object(Ct.satisfies)(lY.vega,`^${t.version.slice(1)}`)||console.warn(`The compiled spec uses Vega ${t.version}, but current version is v${lY.vega}.`)}const p=kt(t).classed("vega-embed",!0).html("");if(o)if(o instanceof Function)d=o(d);else if(aY.isString(o)){const t=yield r.load(o);d=oY(d,JSON.parse(t))}else d=oY(d,o);const g=aY.parse(d,"vega-lite"===h?{}:f),m=new aY.View(g,{loader:r,logLevel:c,renderer:s});if(!1!==n.tooltip){let t;t="function"==typeof n.tooltip?n.tooltip:new eY(!0===n.tooltip?{}:n.tooltip).call,m.tooltip(t)}let{hover:v}=n;if(void 0===v&&(v="vega-lite"!==h),v){const{hoverSet:t,updateSet:e}="boolean"==typeof v?{}:v;m.hover(t,e)}if(n&&(n.width&&m.width(n.width),n.height&&m.height(n.height),n.padding&&m.padding(n.padding)),yield m.initialize(t).runAsync(),!1!==a){let t=p;if(!1!==n.defaultStyle){const e=p.append("details").attr("title",u.CLICK_TO_VIEW_ACTIONS);t=e,e.insert("summary").html(hY);const n=e.node();document.addEventListener("click",t=>{n.contains(t.target)||n.removeAttribute("open")})}const r=t.insert("div").attr("class","vega-actions");if(!0===a||!1!==a.export)for(const t of["svg","png"])if(!0===a||!0===a.export||a.export[t]){const e=u[`${t.toUpperCase()}_ACTION`];r.append("a").text(e).attr("href","#").attr("target","_blank").attr("download",`${l}.${t}`).on("mousedown",function(){m.toImageURL(t,n.scaleFactor).then(t=>{this.href=t}).catch(t=>{throw t}),pt.preventDefault()})}if(!0!==a&&!1===a.source||r.append("a").text(u.SOURCE_ACTION).attr("href","#").on("mousedown",()=>{dY(St()(e),n.sourceHeader||"",n.sourceFooter||"",h),pt.preventDefault()}),"vega-lite"!==h||!0!==a&&!1===a.compiled||r.append("a").text(u.COMPILED_ACTION).attr("href","#").on("mousedown",()=>{dY(St()(d),n.sourceHeader||"",n.sourceFooter||"","vega"),pt.preventDefault()}),!0===a||!1!==a.editor){const t=n.editorUrl||"https://vega.github.io/editor/";r.append("a").text(u.EDITOR_ACTION).attr("href","#").on("mousedown",()=>{nY(window,t,{config:f,mode:h,renderer:s,spec:St()(e)}),pt.preventDefault()})}}return{view:m,spec:e,vgSpec:d}},new((o=void 0)||(o=Promise))(function(t,e){function n(t){try{s(a.next(t))}catch(t){e(t)}}function u(t){try{s(a.throw(t))}catch(t){e(t)}}function s(e){e.done?t(e.value):new o(function(t){t(e.value)}).then(n,u)}s((a=a.apply(r,i||[])).next())});var r,i,o,a}},function(t){t.exports={name:"vega-lite",author:'Dominik Moritz, Kanit "Ham" Wongsuphasawat, Arvind Satyanarayan, Jeffrey Heer',version:"3.3.0",collaborators:["Kanit Wongsuphasawat <kanitw(a)gmail.com> (http://kanitw.yellowpigz.com)","Dominik Moritz <domoritz(a)cs.washington.edu> (https://www.domoritz.de)","Arvind Satyanarayan (https://arvindsatya.com/)","Jeffrey Heer (https://jheer.org)"],homepage:"https://vega.github.io/vega-lite/",description:"Vega-Lite is a concise high-level language for interactive visualization.",main:"build/vega-lite.js",unpkg:"build/vega-lite.min.js",jsdelivr:"build/vega-lite.min.js",module:"build/src/index",types:"build/src/index.d.ts",bin:{vl2png:"./bin/vl2png",vl2svg:"./bin/vl2svg",vl2vg:"./bin/vl2vg"},directories:{test:"test"},scripts:{build:"npm run build:only","build:only":"npm run tsc:src && rollup -c",postbuild:"terser build/vega-lite.js -cm --source-map content=build/vega-lite.js.map,filename=build/vega-lite.min.js.map -o build/vega-lite.min.js && npm run schema","build:examples":"npm run build:only","postbuild:examples":"npm run data && TZ=America/Los_Angeles scripts/build-examples.sh","build:examples-full":"npm run build:only","postbuild:examples-full":"TZ=America/Los_Angeles scripts/build-examples.sh 1","build:example":"TZ=America/Los_Angeles scripts/build-example.sh","build:toc":"npm run data && bundle exec jekyll build -q && scripts/generate-toc","build:site":"npm run tsc:site && rollup -c site/rollup.config.js","build:versions":"scripts/update-version.sh",clean:"rm -rf build && rm -f examples/compiled/*.png && find site/examples ! -name 'index.md' -type f -delete",data:"rsync -r node_modules/vega-datasets/data/* data",deploy:"scripts/deploy.sh","deploy:gh":"scripts/deploy-gh.sh","deploy:schema":"scripts/deploy-schema.sh",schema:"mkdir -p build && node --stack-size=5000 ./node_modules/.bin/ts-json-schema-generator --no-type-check --path src/index.ts --type TopLevelSpec > build/vega-lite-schema.json && npm run renameschema && cp build/vega-lite-schema.json _data/",renameschema:"scripts/rename-schema.sh",presite:"npm run data && npm run build:site && npm run build:toc && npm run build:versions && scripts/create-example-pages",site:"bundle exec jekyll serve --incremental","tsc:src":"tsc -b src/tsconfig.src.json","tsc:site":"tsc -b site/tsconfig.site.json",prettierbase:"prettier '{src,test,test-runtime,site,typings}/**/*.{md,css}'",eslintbase:"eslint '{src,test,test-runtime,site,typings}/**/*.{ts,js}'",format:"npm run eslintbase -- --fix && npm run prettierbase -- --write",lint:"npm run eslintbase && npm run prettierbase -- --check",test:"jest test/ && npm run lint && npm run schema && jest examples/ && npm run test:runtime","test:inspect":"node --inspect-brk ./node_modules/.bin/jest --runInBand test","test:runtime":"TZ=America/Los_Angeles jest test-runtime/","test:runtime:generate":"rm -Rf test-runtime/resources && VL_GENERATE_TESTS=true npm run test:runtime","watch:build":"npm run build:only && concurrently --kill-others -n Typescript,Rollup 'npm run tsc:src -- -w' 'rollup -c -w'","watch:site":"concurrently --kill-others -n Typescript,Rollup 'npm run tsc:site -- -w' 'rollup -c site/rollup.config.js -w'","watch:test":"jest --watch"},repository:{type:"git",url:"https://github.com/vega/vega-lite.git"},license:"BSD-3-Clause",bugs:{url:"https://github.com/vega/vega-lite/issues"},devDependencies:{"@types/chai":"^4.1.7","@types/d3":"^5.7.2","@types/highlight.js":"^9.12.3","@types/jest":"^24.0.13","@types/jest-environment-puppeteer":"^4.0.0","@types/mkdirp":"^0.5.2","@types/node":"^12.0.2","@types/puppeteer":"^1.12.4","@typescript-eslint/eslint-plugin":"^1.9.0","@typescript-eslint/parser":"^1.9.0",ajv:"^6.10.0",chai:"^4.2.0",cheerio:"^1.0.0-rc.2",codecov:"^3.5.0",concurrently:"^4.1.0",d3:"^5.9.2",eslint:"^5.16.0","eslint-config-prettier":"^4.3.0","eslint-plugin-prettier":"^3.1.0","highlight.js":"^9.15.6","http-server":"^0.11.1",jest:"^24.8.0","jest-puppeteer":"^4.1.1",mkdirp:"^0.5.1",prettier:"^1.17.1",puppeteer:"^1.16.0",rollup:"^1.12.1","rollup-plugin-commonjs":"^10.0.0","rollup-plugin-json":"^4.0.0","rollup-plugin-node-resolve":"^5.0.0","rollup-plugin-sourcemaps":"^0.4.2","rollup-plugin-terser":"^5.0.0","svg2png-many":"^0.0.7",terser:"^4.0.0","ts-jest":"^24.0.2","ts-json-schema-generator":"^0.42.0",typescript:"^3.4.5","vega-cli":"^5.4.0","vega-datasets":"^1.25.0","vega-embed":"^4.2.0","vega-tooltip":"^0.17.0","yaml-front-matter":"^4.0.0"},dependencies:{"@types/clone":"~0.1.30","@types/fast-json-stable-stringify":"^2.0.0",clone:"~2.1.2","fast-deep-equal":"~2.0.1","fast-json-stable-stringify":"~2.0.0","json-stringify-pretty-compact":"~2.0.0",tslib:"~1.9.3","vega-event-selector":"~2.0.0","vega-expression":"~2.6.0","vega-typings":"0.7.1","vega-util":"~1.10.0",yargs:"~13.2.4"},peerDependencies:{vega:"^5.4.0"},jest:{preset:"jest-puppeteer",transform:{"^.+\\.tsx?$":"ts-jest"},testRegex:"(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",moduleFileExtensions:["ts","tsx","js","jsx","json","node"],testPathIgnorePatterns:["<rootDir>/node_modules","<rootDir>/build","<rootDir>/_site","<rootDir>/src"],coverageDirectory:"./coverage/",collectCoverage:!1}}},function(t,e,n){(function(e){var n=function(){"use strict";function t(t,e){return null!=e&&t instanceof e}var n,r,i;try{n=Map}catch(t){n=function(){}}try{r=Set}catch(t){r=function(){}}try{i=Promise}catch(t){i=function(){}}function o(a,s,c,l,f){"object"==typeof s&&(c=s.depth,l=s.prototype,f=s.includeNonEnumerable,s=s.circular);var h=[],d=[],p=void 0!==e;return void 0===s&&(s=!0),void 0===c&&(c=1/0),function a(c,g){if(null===c)return null;if(0===g)return c;var m,v;if("object"!=typeof c)return c;if(t(c,n))m=new n;else if(t(c,r))m=new r;else if(t(c,i))m=new i(function(t,e){c.then(function(e){t(a(e,g-1))},function(t){e(a(t,g-1))})});else if(o.__isArray(c))m=[];else if(o.__isRegExp(c))m=new RegExp(c.source,u(c)),c.lastIndex&&(m.lastIndex=c.lastIndex);else if(o.__isDate(c))m=new Date(c.getTime());else{if(p&&e.isBuffer(c))return m=e.allocUnsafe?e.allocUnsafe(c.length):new e(c.length),c.copy(m),m;t(c,Error)?m=Object.create(c):void 0===l?(v=Object.getPrototypeOf(c),m=Object.create(v)):(m=Object.create(l),v=l)}if(s){var y=h.indexOf(c);if(-1!=y)return d[y];h.push(c),d.push(m)}for(var b in t(c,n)&&c.forEach(function(t,e){var n=a(e,g-1),r=a(t,g-1);m.set(n,r)}),t(c,r)&&c.forEach(function(t){var e=a(t,g-1);m.add(e)}),c){var x;v&&(x=Object.getOwnPropertyDescriptor(v,b)),x&&null==x.set||(m[b]=a(c[b],g-1))}if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(c);for(b=0;b<_.length;b++){var w=_[b];(!(k=Object.getOwnPropertyDescriptor(c,w))||k.enumerable||f)&&(m[w]=a(c[w],g-1),k.enumerable||Object.defineProperty(m,w,{enumerable:!1}))}}if(f){var O=Object.getOwnPropertyNames(c);for(b=0;b<O.length;b++){var k,A=O[b];(k=Object.getOwnPropertyDescriptor(c,A))&&k.enumerable||(m[A]=a(c[A],g-1),Object.defineProperty(m,A,{enumerable:!1}))}}return m}(a,c)}function a(t){return Object.prototype.toString.call(t)}function u(t){var e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),e}return o.clonePrototype=function(t){if(null===t)return null;var e=function(){};return e.prototype=t,new e},o.__objToStr=a,o.__isDate=function(t){return"object"==typeof t&&"[object Date]"===a(t)},o.__isArray=function(t){return"object"==typeof t&&"[object Array]"===a(t)},o.__isRegExp=function(t){return"object"==typeof t&&"[object RegExp]"===a(t)},o.__getRegExpFlags=u,o}();t.exports&&(t.exports=n)}).call(this,n(6).Buffer)},function(t,e,n){"use strict";var r=Array.isArray,i=Object.keys,o=Object.prototype.hasOwnProperty;t.exports=function t(e,n){if(e===n)return!0;if(e&&n&&"object"==typeof e&&"object"==typeof n){var a,u,s,c=r(e),l=r(n);if(c&&l){if((u=e.length)!=n.length)return!1;for(a=u;0!=a--;)if(!t(e[a],n[a]))return!1;return!0}if(c!=l)return!1;var f=e instanceof Date,h=n instanceof Date;if(f!=h)return!1;if(f&&h)return e.getTime()==n.getTime();var d=e instanceof RegExp,p=n instanceof RegExp;if(d!=p)return!1;if(d&&p)return e.toString()==n.toString();var g=i(e);if((u=g.length)!==i(n).length)return!1;for(a=u;0!=a--;)if(!o.call(n,g[a]))return!1;for(a=u;0!=a--;)if(!t(e[s=g[a]],n[s]))return!1;return!0}return e!=e&&n!=n}},function(t,e,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)},i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=i(n(8)),a=n(8);function u(t,e){throw t.innerHTML='<div class="error">\n <p>Javascript Error: '+e.message+"</p>\n <p>This usually means there's a typo in your chart specification.\n See the JavaScript console for the full traceback.</p>\n </div>",e}e.vegaEmbed=a.default,e.render=function(t,e,n,i,a){var s=function(t,e){for(var n=0;n<e.length;n++){var r=e[n];if(r.metadata&&r.metadata["jupyter-vega"]===t&&void 0!==r.data["image/png"])return n}return-1}(t,a.outputs),c=function(t,e){for(var n=0;n<e.length;n++){var r=e[n];if(r.metadata&&r.metadata["jupyter-vega"]===t&&void 0!==r.data["application/javascript"])return n}return-1}(t,a.outputs);if(!(s>-1&&c>-1&&s===c+1)){var l=document.getElementById(t.substring(1));o.default(l,e,r({loader:{http:{credentials:"same-origin"}}},i,{mode:n})).then(function(e){e.view.toImageURL("png").then(function(e){if(void 0!==a){var n={data:{"image/png":e.split(",")[1]},metadata:{"jupyter-vega":t},output_type:"display_data"};a.outputs.push(n)}}).catch(function(t){return u(l,t)})}).catch(function(t){return u(l,t)})}}},function(t,e){var n,r,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function u(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(t){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var s,c=[],l=!1,f=-1;function h(){l&&s&&(l=!1,s.length?c=s.concat(c):f=-1,c.length&&d())}function d(){if(!l){var t=u(h);l=!0;for(var e=c.length;e;){for(s=c,c=[];++f<e;)s&&s[f].run();f=-1,e=c.length}s=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function g(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];c.push(new p(t,e)),1!==c.length||l||u(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=g,i.addListener=g,i.once=g,i.off=g,i.removeListener=g,i.removeAllListeners=g,i.emit=g,i.prependListener=g,i.prependOnceListener=g,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";e.byteLength=function(t){var e=c(t),n=e[0],r=e[1];return 3*(n+r)/4-r},e.toByteArray=function(t){for(var e,n=c(t),r=n[0],a=n[1],u=new o(function(t,e,n){return 3*(e+n)/4-n}(0,r,a)),s=0,l=a>0?r-4:r,f=0;f<l;f+=4)e=i[t.charCodeAt(f)]<<18|i[t.charCodeAt(f+1)]<<12|i[t.charCodeAt(f+2)]<<6|i[t.charCodeAt(f+3)],u[s++]=e>>16&255,u[s++]=e>>8&255,u[s++]=255&e;2===a&&(e=i[t.charCodeAt(f)]<<2|i[t.charCodeAt(f+1)]>>4,u[s++]=255&e);1===a&&(e=i[t.charCodeAt(f)]<<10|i[t.charCodeAt(f+1)]<<4|i[t.charCodeAt(f+2)]>>2,u[s++]=e>>8&255,u[s++]=255&e);return u},e.fromByteArray=function(t){for(var e,n=t.length,i=n%3,o=[],a=0,u=n-i;a<u;a+=16383)o.push(l(t,a,a+16383>u?u:a+16383));1===i?(e=t[n-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===i&&(e=(t[n-2]<<8)+t[n-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"="));return o.join("")};for(var r=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=0,s=a.length;u<s;++u)r[u]=a[u],i[a.charCodeAt(u)]=u;function c(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");return-1===n&&(n=e),[n,n===e?0:4-n%4]}function l(t,e,n){for(var i,o,a=[],u=e;u<n;u+=3)i=(t[u]<<16&16711680)+(t[u+1]<<8&65280)+(255&t[u+2]),a.push(r[(o=i)>>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return a.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,n,r,i){var o,a,u=8*i-r-1,s=(1<<u)-1,c=s>>1,l=-7,f=n?i-1:0,h=n?-1:1,d=t[e+f];for(f+=h,o=d&(1<<-l)-1,d>>=-l,l+=u;l>0;o=256*o+t[e+f],f+=h,l-=8);for(a=o&(1<<-l)-1,o>>=-l,l+=r;l>0;a=256*a+t[e+f],f+=h,l-=8);if(0===o)o=1-c;else{if(o===s)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,r),o-=c}return(d?-1:1)*a*Math.pow(2,o-r)},e.write=function(t,e,n,r,i,o){var a,u,s,c=8*o-i-1,l=(1<<c)-1,f=l>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:o-1,p=r?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(u=isNaN(e)?1:0,a=l):(a=Math.floor(Math.log(e)/Math.LN2),e*(s=Math.pow(2,-a))<1&&(a--,s*=2),(e+=a+f>=1?h/s:h*Math.pow(2,1-f))*s>=2&&(a++,s/=2),a+f>=l?(u=0,a=l):a+f>=1?(u=(e*s-1)*Math.pow(2,i),a+=f):(u=e*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;t[n+d]=255&u,d+=p,u/=256,i-=8);for(a=a<<i|u,c+=i;c>0;t[n+d]=255&a,d+=p,a/=256,c-=8);t[n+d-p]|=128*g}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}}])});
//# sourceMappingURL=index.js.map
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vega-2.3.0/vega/static/index.js.map new/vega-2.4.0/vega/static/index.js.map
--- old/vega-2.3.0/vega/static/index.js.map 2019-06-11 19:32:44.000000000 +0200
+++ new/vega-2.4.0/vega/static/index.js.map 2019-07-04 11:10:19.000000000 +0200
@@ -1 +1 @@
-{"version":3,"sources":["webpack://nbextensions/jupyter-vega/index/webpack/bootstrap","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/accessor.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/error.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/splitAccessPath.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isArray.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isObject.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isString.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/stringValue.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/field.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/accessors.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/logger.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/peek.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/toNumber.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/transform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/quarter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/clampRange.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isFunction.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/compare.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/debounce.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/extend.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/extent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/extentIndex.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/fastmap.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/flush.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/inherits.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/inrange.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isBoolean.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isDate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isNumber.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isRegExp.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/key.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/lerp.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/merge.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/repeat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/pad.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/span.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/toBoolean.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/toDate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/toString.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/toSet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/truncate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/visitArray.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/src/formats/json.js","webpack://nbextensions/jupyter-vega/index/./node_modules/json-stringify-pretty-compact/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/fast-json-stable-stringify/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-embed/node_modules/semver/semver.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-schema-url-parser/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/buffer/index.js","webpack://nbextensions/jupyter-vega/index/external \"@jupyter-widgets/base\"","webpack://nbextensions/jupyter-vega/index/./node_modules/tslib/tslib.es6.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/namespaces.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/namespace.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/creator.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selector.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selectorAll.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/sparse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/enter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/data.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/sort.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/attr.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/window.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/classed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/text.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/html.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/raise.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/lower.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/insert.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/remove.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/clone.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/on.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/dispatch.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/select.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/selectAll.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/filter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/matcher.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/exit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/join.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/merge.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/order.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/call.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/nodes.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/node.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/size.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/empty.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/each.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/style.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/property.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/append.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/datum.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/select.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/local.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/sourceEvent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/util/UniqueList.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/util/asyncCallback.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/Tuple.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/ChangeSet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/Parameters.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/Operator.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/add.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/EventStream.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/events.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/src/loader.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/src/type.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-dsv/src/dsv.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-dsv/src/csv.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-dsv/src/tsv.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/src/formats/dsv.js","webpack://nbextensions/jupyter-vega/index/./node_modules/topojson-client/src/identity.js","webpack://nbextensions/jupyter-vega/index/./node_modules/topojson-client/src/transform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/topojson-client/src/reverse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/topojson-client/src/feature.js","webpack://nbextensions/jupyter-vega/index/./node_modules/topojson-client/src/stitch.js","webpack://nbextensions/jupyter-vega/index/./node_modules/topojson-client/src/mesh.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/src/formats/topojson.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/src/formats/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/interval.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/millisecond.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/duration.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/second.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/minute.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/hour.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/day.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/week.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/month.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/year.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/utcMinute.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/utcHour.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/utcDay.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/utcWeek.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/utcMonth.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/utcYear.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time-format/src/locale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time-format/src/defaultLocale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time-format/src/isoFormat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time-format/src/isoParse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/src/read.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/index.browser.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/load.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/on.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/Pulse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/MultiPulse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/run.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/update.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/util/Heap.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/Dataflow.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/Transform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/connect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/rank.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/register.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/AggregateKeys.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/AggregateOps.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/bin.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/numbers.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/random.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/ascending.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/bisector.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/bisect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/variance.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/extent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/range.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/ticks.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/threshold/sturges.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/number.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/quantile.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/quickselect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/median.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/min.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/permute.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/zip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/bootstrapCI.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/quartiles.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/lcg.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/integer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/normal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/kde.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/mixture.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/uniform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/ols.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/points.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/r-squared.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/linear.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/log.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/exp.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/pow.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/quad.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/poly.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/loess.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/sampleCurve.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/TupleStore.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Aggregate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Bin.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/SortedList.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Collect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Compare.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/CountPattern.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Cross.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/Distributions.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Density.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Expression.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Extent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Subflow.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Facet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Field.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Filter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Flatten.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Fold.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Formula.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Generate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Impute.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/mean.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/max.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/JoinAggregate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/KDE.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Key.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Load.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Lookup.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/MultiExtent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/MultiValues.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Params.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Pivot.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/PreFacet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Project.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Proxy.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Relay.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Sample.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Sequence.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Sieve.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/TupleIndex.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Values.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/WindowOps.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/WindowState.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Window.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/constants.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/Bounds.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/Gradient.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/Item.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/GroupItem.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-canvas/src/domCanvas.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/ResourceLoader.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-path/src/path.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/math.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/arc.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/linear.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/point.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/line.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/area.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/radial.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/symbol/circle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/symbol/star.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/symbol/diamond.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/noop.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/symbol/triangle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/symbol/wye.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/basis.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/bundle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/cardinal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/catmullRom.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/monotone.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/natural.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/step.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/order/descending.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/curves.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/constants.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/arc.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/render.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/symbols.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/rectangle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/trail.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/shapes.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/symbol.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/bound/boundStroke.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/bound/boundContext.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/context.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/intersect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/gradient.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/color.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/fill.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/stroke.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/visit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/draw.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/pick.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/svg/transform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/markItemPath.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/arc.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/markMultiItemPath.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/area.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/pickPath.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/svg/clip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/group.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/image.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/line.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/path.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/rect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/rule.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/text.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/shape.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/symbol.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/text.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/trail.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/bound/boundItem.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/bound/boundMark.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/serialize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/Scenegraph.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/dom.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/point.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/Handler.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/Renderer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/resolveItem.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/events.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/CanvasHandler.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/resize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/CanvasRenderer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/SVGHandler.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/clip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/tags.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/svg/metadata.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/svg/styles.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/SVGRenderer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/SVGStringRenderer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/modules.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/intersect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/bound/boundClip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/equal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/Bound.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/Identifier.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/Mark.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/Overlap.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/Render.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/layout/util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/layout/axis.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/layout/grid.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/layout/legend.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/ViewLayout.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/layout/title.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/bandSpace.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/types.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/timeInterval.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/invertRange.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/invertRangeExtent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/init.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/ordinal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-color/src/define.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-color/src/color.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-color/src/math.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-color/src/lab.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-color/src/cubehelix.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/basis.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/basisClosed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/color.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/rgb.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/date.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/number.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/object.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/string.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/transform/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/value.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/discrete.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/hue.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/round.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/transform/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/zoom.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/hsl.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/lab.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/hcl.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/cubehelix.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/piecewise.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/quantize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/number.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/continuous.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatDecimal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/exponent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatSpecifier.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatTrim.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/defaultLocale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatRounded.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatTypes.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/identity.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/locale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatGroup.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatNumerals.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/precisionFixed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/tickFormat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/precisionPrefix.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/precisionRound.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/linear.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/nice.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/log.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/symlog.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/pow.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/time.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/sequential.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/diverging.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/scaleBand.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/numbers.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/slice.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/identity.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/utcTime.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/quantile.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/quantize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/threshold.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/scaleBinOrdinal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/interpolate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/schemes.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/ticks.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/AxisTicks.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/DataJoin.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/Encode.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/palettes.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/legend-types.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/labels.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/LegendEntries.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/LinkPath.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/Pie.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/sum.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/Scale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/SortItems.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/Stack.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/ascending.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/bisect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/bisector.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/cross.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/extent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/range.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/ticks.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/threshold/sturges.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/max.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/zip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/ascending.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/area.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/contains.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/noop.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/contours.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/blur.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/density.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/Contour.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/constants.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/GeoJSON.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/adder.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/math.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/noop.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/stream.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/area.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/cartesian.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/bounds.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/centroid.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/compose.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/rotation.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/circle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/clip/buffer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/pointEqual.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/clip/rejoin.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/polygonContains.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/ascending.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/bisect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/bisector.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/cross.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/range.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/ticks.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/threshold/sturges.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/merge.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/zip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/clip/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/clip/antimeridian.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/clip/circle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/clip/line.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/clip/rectangle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/length.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/graticule.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/interpolate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/path/area.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/identity.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/path/bounds.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/path/centroid.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/path/context.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/path/measure.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/path/string.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/path/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/transform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/fit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/resample.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/conic.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/albers.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/azimuthal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/mercator.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/conicConformal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/equirectangular.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/equalEarth.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/gnomonic.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/identity.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/orthographic.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/stereographic.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/transverseMercator.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-projection/src/projections.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/albersUsa.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/GeoPath.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/GeoPoint.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/GeoShape.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/Graticule.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/Projection.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/add.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/cover.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/quad.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/x.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/y.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/quadtree.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/data.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/extent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/find.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/remove.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/root.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/size.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/visit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/visitAfter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/jiggle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/collide.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/link.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-dispatch/src/dispatch.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-timer/src/timer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/simulation.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-force/src/Force.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/center.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/manyBody.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/x.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/y.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/lookup.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/cluster.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/pack/enclose.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/pack/siblings.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/accessors.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/pack/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/round.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/dice.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/stratify.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/tree.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/slice.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/Nest.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/HierarchyLayout.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/Pack.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/Partition.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/Stratify.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/partition.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/Tree.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/TreeLinks.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/Treemap.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/binary.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-regression/src/partition.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-regression/src/Loess.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-regression/src/Regression.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/point.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/RedBlackTree.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/Edge.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/Cell.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/Circle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/Beach.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/Diagram.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-voronoi/src/Voronoi.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/voronoi.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-wordcloud/src/CloudLayout.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-wordcloud/src/Wordcloud.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-crossfilter/src/arrays.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-crossfilter/src/Bitmaps.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-crossfilter/src/Dimension.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-crossfilter/src/SortedIndex.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-crossfilter/src/CrossFilter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-crossfilter/src/ResolveFilter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/cursor.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/data.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/render-size.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/events-extend.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/events.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/hover.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/element.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/bind.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/initialize-renderer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/trap.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/initialize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/render-headless.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/render-to-canvas.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-expression/src/parser.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-expression/src/ast.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-expression/src/constants.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-expression/src/functions.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-selections/src/constants.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-selections/src/selectionTest.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-selections/src/selectionResolve.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-selections/src/selectionVisitor.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/data.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/format.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/scale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/geo.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/log.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/modify.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/tree.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/window.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/prefix.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/visitors.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/codegen.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/merge.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/inscope.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/intersect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/pinch.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/shape.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/encode.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/scale-gradient.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-expression/src/codegen.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/expression.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/parameters.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/operator.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/stream.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/update.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/dataflow.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/state.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/context.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/runtime.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/size.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/state.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/timer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/tooltip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/View.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-timer/src/interval.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/finalize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/scale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/initialize-handler.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/render-to-image-url.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/render-to-svg.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/autosize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/padding.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/signal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/expression.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/stream.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-event-selector/src/event-selector.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/update.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/transforms.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/scale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/projection.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/constants.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/adjust-spatial.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/expression.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/field.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/scale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/gradient.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/property.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/entry.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/color.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/set.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/rule.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/roles.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/encode-util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/guide-mark.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/guide-util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/marktypes.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/legend-gradient.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/legend-gradient-discrete.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/legend-gradient-labels.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/guide-group.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/legend-symbol-groups.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/legend-title.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/clip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/role.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/definition.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/interactive.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/transform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/data.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/DataScope.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/facet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/trigger.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/mark.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/subflow.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/legend.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/title.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/data.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/axis-domain.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/axis-grid.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/axis-labels.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/axis.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/axis-config.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/axis-ticks.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/axis-title.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/spec.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/signal-updates.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/view.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/Scope.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/config.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/logical.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/mark.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/unit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compositemark/base.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/aggregate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/channel.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/log/message.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/log/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/datetime.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/facet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/timeunit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/type.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/channeldef.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/bin.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/encoding.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compositemark/common.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compositemark/boxplot.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compositemark/errorbar.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compositemark/errorband.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compositemark/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/guide.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/legend.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/scale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/selection.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/concat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/repeat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/base.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/title.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/config.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/layer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/map.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/stack.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/normalize/pathoverlay.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/normalize/ruleforrangedline.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/normalize/core.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/normalize/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/toplevel.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/data.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/predicate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/transform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/vega.schema.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/axis.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/axis/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/header.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/sort.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/axis/config.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/axis/properties.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/common.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/dataflow.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/expressions.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/calculate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/header/common.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/header/component.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/header/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/layoutsize/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/timeunit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/scales.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/project.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/interval.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/multi.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/single.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/nearest.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/inputs.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/toggle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/clear.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/translate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/zoom.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/transforms.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/predicate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/valueref.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/mixins.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/guide.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/resolve.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/split.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/legend/component.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/legend/properties.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/legend/encode.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/legend/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/legend/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/projection/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/projection.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/projection/component.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/projection/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/source.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/debug.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/optimizer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/aggregate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/bin.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/facet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/filter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/formatparse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/joinaggregate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/stack.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/window.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/optimizers.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/optimize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/signal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/scale/domain.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/scale/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/scale/component.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/scale/range.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/scale/properties.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/scale/type.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/scale/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/model.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/filterinvalid.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/flatten.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/fold.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/geojson.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/geopoint.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/graticule.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/identifier.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/bar.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/point.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/rect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/tick.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/mark.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/area.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/geoshape.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/line.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/rule.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/text.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/impute.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/lookup.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/sample.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/sequence.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/header/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/layoutsize/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/repeater.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/facet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/joinaggregatefacet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/baseconcat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/concat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/axis/component.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/axis/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/axis/encode.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/init.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/unit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/layer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/repeat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/buildmodel.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/compile.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/transformextract.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-themes/build/theme-excel.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-themes/build/theme-ggplot2.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-themes/build/theme-quartz.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-themes/build/theme-vox.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-themes/build/theme-dark.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-themes/build/theme-fivethirtyeight.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-themes/build/theme-latimes.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-tooltip/build/style.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-tooltip/build/defaults.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-tooltip/build/formatValue.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-tooltip/build/Handler.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-tooltip/build/position.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-tooltip/build/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-embed/build/src/post.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-embed/build/src/style.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-embed/build/src/util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-embed/build/src/embed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/clone/clone.js","webpack://nbextensions/jupyter-vega/index/./node_modules/fast-deep-equal/index.js","webpack://nbextensions/jupyter-vega/index/./src/index.ts","webpack://nbextensions/jupyter-vega/index/./node_modules/process/browser.js","webpack://nbextensions/jupyter-vega/index/(webpack)/buildin/global.js","webpack://nbextensions/jupyter-vega/index/./node_modules/base64-js/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/ieee754/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/isarray/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","accessor","fn","fields","fname","accessorName","accessorFields","error","message","Error","splitAccessPath","j","path","q","b","length","push","substring","isArray","Array","isObject","_","isString","$","x","map","JSON","stringify","replace","src_field","field","code","join","Function","empty","id","identity","zero","one","truthy","falsy","log","method","level","input","msg","concat","slice","console","logger","arguments","this","warn","info","debug","peek","array","toNumber","exp","sign","Math","transform_log","symlog","log1p","abs","symexp","expm1","pow","exponent","pan","domain","delta","lift","ground","d0","d1","dd","panLinear","panLog","panPow","panSymlog","constant","zoom","anchor","scale","da","zoomLinear","zoomLog","zoomPow","zoomSymlog","quarter","date","Date","getMonth","utcquarter","getUTCMonth","src_array","clampRange","range","min","max","span","lo","hi","isFunction","compare","orders","f","u","v","lt","gt","idx","cmp","ord","reduce","forEach","keys","debounce","delay","handler","tid","evt","callback","e","clearTimeout","setTimeout","extend","k","len","extent","extentIndex","a","NULL","fastmap","test","obj","has","size","undefined","set","delete","clear","clean","next","flush","threshold","left","right","center","inherits","child","parent","proto","constructor","inrange","r0","r1","isBoolean","isDate","toString","isNumber","isRegExp","flat","lerp","frac","merge","array0","array1","output","n0","n1","merged","i0","i1","repeat","str","reps","pad","padchar","align","ceil","toBoolean","defaultParser","parse","toDate","parser","src_toString","toSet","truncate","ellipsis","visitArray","filter","visitor","__webpack_exports__","Buffer","json","vega_util__WEBPACK_IMPORTED_MODULE_0__","data","format","prop","isBuffer","copy","parseJSON","responseType","stringOrChar","passedObj","options","indent","maxLength","replacer","Infinity","_stringify","currentIndent","reserved","end","index","items","keyPart","nextIndent","prettified","start","string","toJSON","match","stringLiteral","opts","cycles","node","aobj","bobj","seen","isFinite","out","indexOf","TypeError","seenIndex","sort","splice","process","SemVer","env","NODE_DEBUG","args","unshift","apply","SEMVER_SPEC_VERSION","MAX_LENGTH","MAX_SAFE_INTEGER","Number","re","src","R","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","MAINVERSION","MAINVERSIONLOOSE","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","PRERELEASE","PRERELEASELOOSE","BUILDIDENTIFIER","BUILD","FULL","FULLPLAIN","LOOSEPLAIN","LOOSE","GTLT","XRANGEIDENTIFIERLOOSE","XRANGEIDENTIFIER","XRANGEPLAIN","XRANGEPLAINLOOSE","XRANGE","XRANGELOOSE","COERCE","LONETILDE","TILDETRIM","RegExp","TILDE","TILDELOOSE","LONECARET","CARETTRIM","CARET","CARETLOOSE","COMPARATORLOOSE","COMPARATOR","COMPARATORTRIM","HYPHENRANGE","HYPHENRANGELOOSE","STAR","version","loose","includePrerelease","er","trim","raw","major","minor","patch","prerelease","split","num","build","valid","other","compareMain","comparePre","compareIdentifiers","compareBuild","inc","release","identifier","isNaN","diff","version1","version2","eq","v1","v2","prefix","defaultResult","numeric","anum","bnum","neq","gte","lte","op","Comparator","comp","semver","ANY","operator","rcompareIdentifiers","compareLoose","versionA","versionB","rcompare","list","rsort","Range","parseRange","isSatisfiable","comparators","result","remainingComparators","testComparator","pop","every","otherComparator","intersects","isX","toLowerCase","hyphenReplace","$0","from","fM","fm","fp","fpr","fb","to","tM","tm","tp","tpr","tb","testSet","allowed","satisfies","outside","hilo","gtfn","ltefn","ltfn","ecomp","high","low","comparator","rangeTmp","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","comps","hr","compRe","M","pr","ret","replaceCaret","replaceCarets","replaceTilde","replaceTildes","gtlt","xM","xm","xp","anyX","replaceXRange","replaceXRanges","replaceStars","parseComparator","some","thisComparators","rangeComparators","thisComparator","rangeComparator","toComparators","maxSatisfying","versions","maxSV","rangeObj","minSatisfying","minSV","minVersion","minver","compver","validRange","ltr","gtr","parsed","r2","coerce","default","url","_a","exec","library","global","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","__proto__","arg","encodingOrOffset","allocUnsafe","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","write","fromString","checked","buffer","val","type","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","arr","indexSize","arrLength","valLength","String","read","buf","readUInt16BE","foundIndex","found","hexWrite","offset","remaining","strLen","parseInt","substr","utf8Write","blitBuffer","asciiWrite","byteArray","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","base64Slice","fromByteArray","utf8Slice","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","configurable","fill","allocUnsafeSlow","_isBuffer","y","pos","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","equals","inspect","target","thisStart","thisEnd","thisCopy","targetCopy","includes","_arr","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","__WEBPACK_EXTERNAL_MODULE__8__","__rest","getOwnPropertySymbols","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","space","local","creator","fullname","ownerDocument","createElementNS","document","uri","namespaceURI","documentElement","createElement","none","src_selector","selector","querySelector","sparse","update","EnterNode","datum","_next","_parent","__data__","appendChild","insertBefore","querySelectorAll","keyPrefix","bindIndex","group","enter","exit","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","ascending","NaN","src_window","defaultView","classArray","classList","ClassList","_node","_names","getAttribute","classedAdd","names","add","classedRemove","remove","setAttribute","contains","textRemove","textContent","htmlRemove","innerHTML","raise","nextSibling","parentNode","lower","previousSibling","firstChild","constantNull","remove_remove","removeChild","selection_cloneShallow","cloneNode","selection_cloneDeep","filterEvents","on_event","mouseenter","mouseleave","filterContextListener","listener","contextListener","event","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","typename","on","__on","removeEventListener","capture","onAdd","wrap","addEventListener","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","selection_root","Selection","groups","parents","_groups","_parents","selection_selection","select","subgroups","subnode","subgroup","selectAll","matches","each","enterGroup","updateGroup","previous","_enter","_exit","onenter","onupdate","onexit","append","order","selection","groups0","groups1","m0","m1","merges","group0","group1","compareNode","sortgroups","sortgroup","nodes","attr","getAttributeNS","removeAttributeNS","removeAttribute","setAttributeNS","style","priority","removeProperty","setProperty","getPropertyValue","getComputedStyle","styleValue","classed","text","html","insert","before","clone","deep","typenames","parseTypenames","dispatch","src_select","nextId","Local","UniqueList","idFunc","vega_util","ids","asyncCallback","df","err","TUPLE_ID_KEY","TUPLE_ID","isTuple","tupleid","setid","ingest","Tuple_derive","rederive","isChangeSet","ChangeSet_changeset","rem","mod","remp","modp","reflow","modify","tuple","encode","pulse","tuples","cur","modifies","CACHE","Parameters","writable","Parameters_prototype","force","modified","OP_ID","NO_PARAMS","Operator","init","react","stamp","rank","qrank","flags","_update","parameters","Operator_prototype","Operator_flag","bit","state","targets","_targets","skip","initonly","self","argval","_argval","argops","_argops","deps","source","marshall","item","evaluate","StopPropagation","run","rv","STREAM_ID","EventStream","receive","_filter","_apply","EventStream_stream","EventStream_prototype","consume","_consume","trg","preventDefault","stopPropagation","throttle","pause","now","dataflow","between","active","protocol_re","fileProtocol","async","load","opt","sanitize","href","localFile","file","http","fileAccess","isFile","hasProtocol","loadFile","base","baseURL","startsWith","defaultProtocol","rel","fileLoader","fs","filename","Promise","accept","reject","readFile","fileReject","httpLoader","fetch","response","ok","status","statusText","httpReject","typeParsers","boolean","integer","number","unknown","typeTests","typeList","inferType","values","inferTypes","types","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","inferColumns","rows","columnSet","row","column","dsv_pad","width","formatDate","year","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","getUTCFullYear","getUTCDate","dsv","delimiter","reFormat","DELIMITER","parseRows","N","I","eof","eol","token","preformatBody","formatValue","formatRow","convert","customConverter","formatBody","formatRows","csv","tsv","delimitedFormat","delim","dsv_dsv","header","src_transform","transform","x0","y0","kx","ky","dx","translate","dy","src_reverse","src_feature","topology","features","geometries","feature_feature","bbox","properties","geometry","feature_object","transformPoint","arcs","arc","points","point","line","ring","polygon","coordinates","stitch","stitchedArcs","fragmentByStart","fragmentByEnd","fragments","emptyIndex","g","p1","p0","dp","ends","fg","gf","mesh","geom","geomsByArc","extract0","extract1","extract2","extract3","geoms","extractArcs","topojson_filters","interior","exterior","topojson","feature","objects","formats_format","formats_formats","reader","interval_t0","interval_t1","newInterval","floori","offseti","count","interval","round","step","stop","setTime","millisecond_millisecond","src_millisecond","durationMinute","durationWeek","second_second","getMilliseconds","src_second","minute_minute","getSeconds","getMinutes","src_minute","hour_hour","getHours","src_hour","day_day","setHours","setDate","getDate","getTimezoneOffset","src_day","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","month_month","setMonth","getFullYear","src_month","year_year","setFullYear","src_year","utcMinute","setUTCSeconds","src_utcMinute","utcHour","setUTCMinutes","src_utcHour","utcDay","setUTCHours","setUTCDate","src_utcDay","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","src_utcMonth","utcYear","setUTCFullYear","src_utcYear","localDate","H","S","L","utcDate","UTC","newYear","defaultLocale_locale","timeFormat","timeParse","utcFormat","utcParse","pads","-","0","numberRe","percentRe","requoteRe","locale_pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","w","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","day","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","locale_formatYear","formatFullYear","formatZone","z","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","defaultLocale","definition","locale","locale_dateTime","dateTime","locale_date","locale_time","time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","A","B","X","Y","%","utcFormats","parses","parseSpecifier","newFormat","specifier","charAt","newParse","newDate","week","formatLocale","toISOString","schema","dateParse","parsers","parts","pattern","read_parse","index_browser_loader","src_loader","load_parse","on_SKIP","onStream","stream","func","touch","onOperator","updater","connect","Pulse","Pulse_prototype","addFilter","materialize","Pulse_filter","visit","MultiPulse","pulses","hash","changed","ADD","REM","MOD","changes","ADD_REM","ADD_MOD","ALL","REFLOW","SOURCE","NO_SOURCE","NO_FIELDS","fork","addAll","addF","remF","modF","srcF","runAfter","sum","MultiPulse_prototype","reentrant","NO_OPT","Heap","siftdown","last","ridx","cidx","siftup","pidx","Dataflow","logLevel","_clock","_rank","_loader","_touched","_pulses","_pulse","_heap","_postrun","Dataflow_prototype","logMethod","_log","Transform","loader","cleanThreshold","shift","sources","targetRank","rerank","queue","changeset","_enqueue","preload","pending","_pending","requests","done","loadPending","request","context","events","send","prerun","postrun","dt","_getPulse","then","runAsync","_running","enqueue","Transform_prototype","register_transforms","register_definition","register_transform","Definition","groupkey","measureName","as","AggregateOps","measure","__count__","missing","mean","average","req","variance","variancep","stdev","stdevp","stderr","distinct","ci0","ci1","median","q1","q3","argmin","argmax","ValidAggregateOps","createMeasure","compareIndex","compileMeasures","agg","all","collect","helper","AggregateOps_resolve","ctr","src_bin","minstep","precision","eps","maxb","maxbins","logb","div","divide","steps","nice","src_numbers","valueof","random_random","random","setRandom","src_ascending","bisector","mid","ascendingBisect","bisectRight","bisectLeft","d3_array_src_bisect","src_extent","array_array","src_range","e10","sqrt","e5","e2","src_ticks","reverse","ticks","tickIncrement","power","LN10","tickStep","step0","step1","quantile","value0","quickselect","sd","Float64Array","median_numbers","min_min","permute","bootstrapCI","samples","alpha","mu","quartiles","lcg","seed","dist","sample","pdf","cdf","icdf","src_normal","sigma","rds","PI","cd","SQRT2","kde","support","bandwidth","kernel","h","estimateBandwidth","mixture","dists","weights","normalize","distributions","uniform","ols","uX","uY","uXY","uX2","slope","points_points","visitPoints","r_squared","predict","SSE","SST","sse","sst","linear","XY","X2","coef","rSquared","YL","XYL","X2Y","ly","xy","YS","lx","regression_quad","X3","X4","x2","XX","XX2","X2X2","poly","xv","yv","lhs","rhs","matrix","gaussianElimination","loess","bw","yhat","residuals","robustWeights","iter","edge","denom","xk","yk","tricube","xkw","updateInterval","medianResidual","cnt","prev","loess_output","MIN_RADIANS","sampleCurve","minSteps","maxSteps","minX","maxX","pm","angleDelta","a0","atan2","a1","TupleStore","_key","reset","TupleStore_prototype","Aggregate","_adds","_mods","_alen","_mlen","_drop","_cross","_dims","_dnames","_measures","_countOnly","_counts","_prev","_inputs","_outputs","_add","_rem","_ext","_get","_q","quartile","q2","ci","_ci","metadata","generates","null","Aggregate_prototype","aggr","drop","cross","curr","dims","vals","cells","generate","cell","inputs","outputs","inputMap","inputVisit","groupby","dname","cellkey","mname","outname","ops","newcell","newtuple","store","measures","celltuple","counts","adds","mods","Bin","required","Bin_prototype","flag","bins","_bins","b0","b1","SortedList","resort","Collect","Compare","Compare_update","CountPattern","root","CountPattern_prototype","Cross","tokens","tcase","toUpperCase","tokenize","case","_parameterCheck","_match","_stop","_finish","stopwords","_tuples","Cross_cross","Distributions","normal","DISTRIBUTIONS","FUNCTION","FIELD","Density","function","Density_mixture","Expression","Expression_update","expr","Extent","Subflow","Distributions_parse","def","distribution","Density_source","minsteps","maxsteps","Subflow_prototype","Facet","_keys","Facet_prototype","Field","Field_update","Filter","fieldNames","Flatten","Fold","Formula","Generate","activate","flow","subflow","flows","sf","_group","cache","rekey","k0","k1","isMod","revisit","arrays","maxlen","fnames","gen","generator","Methods","Empty","Impute","JoinAggregate","gVals","kVal","impute","getValue","getField","fName","kName","gNames","keyvals","gKey","kMap","gMap","Impute_partition","_impute","JoinAggregate_prototype","KDE","Key","Key_update","Load","Load_output","Lookup","MultiExtent","MultiExtent_update","extents","MultiValues","MultiValues_update","Params","Pivot","KDE_partition","cumulative","density","defaultValue","Pivot_prototype","PreFacet","Project","Proxy","Relay","Sample","Sequence","Sieve","TupleIndex","Values","_transform","pivotKeys","Pivot_get","aggregateParams","lut","derive","Project_project","cap","WindowOps","row_number","dense_rank","drank","percent_rank","cume_dist","cume","ntile","lag","lead","first_value","last_value","nth_value","nth","prev_value","next_value","find","ValidWindowOps","WindowState","windows","countOnly","visitInputs","param","WindowOp","WindowState_cell","WindowState_prototype","Window","wind","Window_prototype","processPartition","ignorePeers","frame","setWindow","adjustRange","bisect","Top","Left","Right","Bottom","TopLeft","TopRight","BottomLeft","BottomRight","Start","Middle","End","constants_X","constants_Y","Group","AxisRole","TitleRole","FrameRole","ScopeRole","LegendRole","RowHeader","RowFooter","RowTitle","ColHeader","ColFooter","ColTitle","Padding","Symbols","Fit","FitX","FitY","Pad","None","All","Each","Flush","Column","Row","Bounds","union","Bounds_prototype","x1","MAX_VALUE","y1","y2","expand","rotate","angle","rotatedPoints","cos","sin","cx","cy","intersect","encloses","alignsWith","height","gradient_id","patternPrefix","isGradient","gradient","gradientRef","defs","Gradient_get","Gradient","stops","color","Item","mark","bounds","GroupItem","domCanvas","getContext","domImage","Image","ResourceLoader","customLoader","ResourceLoader_prototype","increment","decrement","sanitizeURL","catch","loadImage","img","onload","loaded","onerror","ready","poll","pi","tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","path_path","moveTo","closePath","lineTo","quadraticCurveTo","bezierCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","tan","acos","t01","t21","ccw","cw","rect","src_path","d3_shape_src_constant","math_cos","math_max","math_min","math_sin","math_epsilon","math_pi","halfPi","math_tau","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","Linear","_context","areaStart","_line","areaEnd","lineStart","_point","lineEnd","curve_linear","point_x","point_y","src_line","defined","curve","defined0","src_area","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","curveRadial","Radial","_curve","radial","symbol_circle","draw","kr","noop","basis_point","Basis","BasisClosed","_x2","_x3","_x4","_y2","_y3","_y4","BasisOpen","Bundle","beta","_basis","_beta","_x","_y","curve_bundle","custom","bundle","cardinal_point","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","cardinalClosed","CardinalOpen","cardinalOpen","catmullRom_point","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","curve_catmullRom","catmullRom","CatmullRomClosed","catmullRomClosed","CatmullRomOpen","catmullRomOpen","LinearClosed","monotone_sign","slope3","h0","h1","s0","s1","slope2","monotone_point","t0","t1","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","_t0","px","py","Step","_t","curves_lookup","basis","basis-closed","basis-open","cardinal-open","cardinal-closed","catmull-rom","catmull-rom-closed","catmull-rom-open","linear-closed","monotone","horizontal","vertical","natural","step-after","step-before","curves","orientation","entry","cmdlen","regexp","path_parse","pathstr","chunks","cmd","DegToRad","HalfPi","Tau","HalfSqrt3","segmentCache","bezierCache","arc_join","bezier","th0","th1","rx","ry","sin_th","cos_th","a00","a01","a10","a11","cos_th0","sin_th0","cos_th1","sin_th1","th_half","sin_th_h2","x3","y3","temp","render_scale","current","path_render","tempX","tempY","tempControlX","tempControlY","controlX","controlY","beginPath","drawArc","coords","seg","large","sweep","rotateX","th","pl","sfactor_sq","sfactor","xc","yc","th_arc","segs","th2","th3","arc_segments","bez","builtins","circle","diamond","square","arrow","wedge","triangle","triangle-up","triangle-down","triangle-right","triangle-left","stroke","symbols_symbols","symbols_custom","customSymbol","rectangleX","rectangleY","rectangleWidth","rectangleHeight","rectangle_constant","path_rectangle","cornerRadius","rectangle","cr","path_trail","w2","ux","uy","ud","trail","shapes_x","shapes_y","shapes_cr","shapes_def","arcShape","padRadius","da0","da1","ap","rp","rc0","rc1","oc","x32","y32","arc_intersect","ax","ay","bx","by","kc","lc","centroid","src_arc","areavShape","areahShape","lineShape","rectShape","symbolShape","symbol","src_symbol","shape","trailShape","shapes_rectangle","boundContext_bounds","boundStroke","opacity","strokeOpacity","strokeWidth","circleThreshold","boundContext_context","boundContext_noop","boundContext_add","sa","ea","xmin","xmax","ymin","ymax","context_context","intersect_b","intersectPath","brush","isPointInPath","intersectPoint","box","intersectRect","intersectRule","intersectBoxLine","canvas_color","canvasGradient","createRadialGradient","createLinearGradient","addColorStop","canvas_gradient","canvas_fill","fillOpacity","globalAlpha","fillStyle","stroke_Empty","canvas_stroke","lw","strokeStyle","lineWidth","lineCap","strokeCap","lineJoin","strokeJoin","miterLimit","strokeMiterLimit","setLineDash","strokeDash","lineDashOffset","strokeDashOffset","visit_compare","zindex","zorder","scene","zdirty","zitems","visit_visit","pickVisit","hit","drawAll","drawPath","pick_pick","gx","gy","pixelRatio","hitPath","filled","isPointInStroke","pickPath","transform_translate","transform_rotate","translateItem","markItemPath","isect","tag","nested","emit","transformItem","bound","pick","marks_arc","markMultiItemPath","tip","marks_area","interp","interpolate","orient","clip_id","resetSVGClipId","svg_clip","renderer","clip","_defs","clipping","StrokeOffset","backgroundPath","hitBackground","marks_group","noBound","save","restore","interactive","marktype","pickMark","background","foreground","getImage","image","imageXOffset","imageYOffset","baseline","marks_image","aspect","ar0","ar1","drawImage","xOffset","yOffset","marks_line","marks_path_path","pathCache","marks_path","rect_draw","rule_path","currFontHeight","marks_rule","marks_shape","marks_symbol","textMetrics","text_fontSize","measureWidth","estimateWidth","canvas","useCanvas","estimate","textValue","font","text_font","text_measure","measureText","fontSize","use","rtl","fontFamily","quote","fontStyle","fontVariant","fontWeight","text_offset","textAlign","tempBounds","anchorPoint","radius","theta","text_bound","src_marks","rule","fillText","strokeText","boundItem","DUMMY","boundMark","hasItems","serialize_keys","sceneToJSON","sceneFromJSON","serialize_initialize","Scenegraph","createMark","role","Scenegraph_prototype","domCreate","doc","domFind","el","childNodes","tagName","domChild","domClear","cssClass","markdef","util_point","getBoundingClientRect","clientX","clientLeft","clientY","top","clientTop","Handler_Handler","customTooltip","_active","_handlers","_tooltip","defaultTooltip","element","Handler_prototype","Renderer_Renderer","_el","_bgcolor","initialize","origin","_obj","_origin","_scene","off","_handlerIndex","handlers","eventName","handleHref","MouseEvent","handleTooltip","show","tooltip","mdef","resolveItem","getItemBoundingClientRect","itemBounds","bottom","Renderer_prototype","scaleFactor","resize","bgcolor","_width","_height","_scale","dirty","render","_call","_render","renderAsync","_ready","resolve","_load","redraw","TooltipHideEvent","CanvasHandler","_down","_touch","_first","CanvasHandler_prototype","move","moveEvent","overEvent","outEvent","pickEvent","fire","inactive","_canvas","DOMMouseScroll","mousemove","dragover","mouseout","dragleave","mousedown","click","touchstart","changedTouches","touchmove","touchend","vegaType","devicePixelRatio","CanvasRenderer","_redraw","_dirty","CanvasRenderer_prototype","CanvasRenderer_base","CanvasRenderer_tempBounds","SVGHandler","_hrefHandler","_tooltipHandler","_options","inDOM","HTMLElement","ratio","setTransform","canvas_resize","CanvasRenderer_translate","clipToBounds","ctx","canvas_clip","clearRect","fillRect","SVGHandler_prototype","openTag","closeTag","_svg","xmlns:xlink","styles","styleProperties","SVGRenderer","_dirtyID","_root","SVGRenderer_prototype","SVGRenderer_base","updateGradient","grad","pt","SVGRenderer_href","updateClipping","mask","dirtyParents","SVGRenderer_bind","sibling","__values__","bg","ownerSVGElement","hasSiblings","padding","class","viewBox","_dirtyCheck","_dirtyAll","_resetDefs","updateDefs","isDirty","isGroup","lastChild","SVGRenderer_recurse","SVGRenderer_element","SVGRenderer_values","mark_extras","SVGRenderer_emit","setStyle","loc","location","SVGStringRenderer","_text","head","foot","body","extra","SVGStringRenderer_object","SVGStringRenderer_prototype","SVGStringRenderer_base","SVGStringRenderer_emit","prefixed","applyStyles","buildDefs","preserveAspectRatio","fx","fy","fr","stop-color","attributes","_hrefs","markGroup","clip-path","RenderType","Canvas","PNG","SVG","renderModule","intersect_intersect","hits","intersectMark","intersectGroup","visitMark","intersectItem","marks","headless","clipBounds","boundClip","TOLERANCE","sceneEqual","pathEqual","ka","kb","objectEqual","Bound","Bound_boundItem","rebound","view","markBounds","COUNTER_NAME","Identifier","Mark","Overlap","counter","_signals","getCounter","scenegraph","lookup","Mark_lookup","Init","Overlap_prototype","methods","parity","greedy","sep","Overlap_intersect","hasOverlap","hasBounds","Overlap_reset","Overlap_reflow","Render","separation","tolerance","boundScale","boundTolerance","boundOrient","util_tempBounds","util_set","AxisOffset","isYAxis","axisLayout","axis","indices","grid","labels","axisIndices","position","minExtent","maxExtent","title","titlePadding","axisTitleLayout","auto","bboxFlush","bboxFull","grid_get","offsetValue","gridLayout","nodirty","alignCol","alignRow","padCol","padRow","ncols","nrows","xExtent","xMax","yExtent","yMax","boxes","trellisLayout","band","views","rowheaders","rowfooters","colheaders","colfooters","rowtitle","coltitle","gridLayoutGroups","boundFlush","boundFull","headerBand","grid_layoutHeaders","grid_min","footerBand","grid_max","titleAnchor","titleBand","layoutTitle","headers","bf","stride","back","legendParams","config","xb","yb","legend_lookup","legends","mult","legendLayout","legend","entries","widths","_bounds","ex","ey","tpad","tx","ty","legend_translate","legendTitleOffset","legendGroupLayout","legendBounds","lr","noBar","vgrad","ViewLayout","layout","viewBounds","xBounds","yBounds","autosize","titleLayout","viewWidth","viewHeight","_autosize","_resizeView","viewSizeLayout","layoutGroup","bandSpace","paddingInner","paddingOuter","Identity","types_Linear","Log","Pow","Sqrt","Symlog","Time","Sequential","Diverging","Quantile","Quantize","Threshold","Ordinal","Point","Band","BinOrdinal","isQuantile","isInterpolating","isSequential","isDiverging","isLogarithmic","endsWith","isContinuous","isDiscrete","isDiscretizing","timeInterval_time","millisecond","second","minute","hour","month","timeInterval_utc","timeInterval","unit","invertRange","invert","invertRangeExtent","invertExtent","initRange","initInterpolator","interpolator","ordinal_implicit","ordinal","Map","define","factory","Color","reI","reN","reP","reHex3","reHex6","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_color","Rgb","rgbn","rgba","hsla","rgbConvert","rgb","color_rgb","hex","Hsl","hsl","hslConvert","hsl2rgb","m2","displayable","brighter","darker","deg2rad","rad2deg","Xn","Yn","Zn","lab_t0","lab_t1","lab_t2","t3","labConvert","Lab","Hcl","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","hcl","C","cubehelix_D","E","ED","EB","BC_DA","cubehelix_cubehelix","Cubehelix","bl","cubehelixConvert","basis_basis","v0","v3","t2","cosh","sinh","src_basis","src_basisClosed","d3_interpolate_src_constant","color_linear","color_hue","color_gamma","nogamma","exponential","src_rgb","rgbGamma","gamma","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","nb","na","src_value","src_date","src_number","src_object","reA","reB","cssNode","cssRoot","cssView","svgNode","src_string","am","bm","bs","bi","lastIndex","string_zero","valueOf","discrete","src_hue","src_round","degrees","decompose_identity","translateX","translateY","skewX","scaleX","scaleY","decompose","atan","interpolateTransform","pxComma","pxParen","degParen","xa","ya","interpolateTransformCss","interpolateTransformSvg","baseVal","consolidate","rho","zoom_cosh","ux0","uy0","w0","ux1","uy1","w1","coshr0","zoom_sinh","duration","hsl_hsl","hue","src_hsl","hslLong","lab_lab","hcl_hcl","src_hcl","hclLong","src_cubehelix_cubehelix","cubehelixGamma","cubehelix","src_cubehelix","cubehelixLong","piecewise_piecewise","src_quantize","d3_scale_src_constant","d3_scale_src_number","continuous_unit","continuous_identity","continuous_normalize","clamper","bimap","polymap","continuous_copy","clamp","transformer","untransform","piecewise","rescale","rangeRound","continuous","formatDecimal","toExponential","coefficient","src_exponent","formatSpecifier","FormatSpecifier","comma","prefixExponent","src_defaultLocale_locale","defaultLocale_format","defaultLocale_formatPrefix","formatTrim","formatRounded","formatTypes","toFixed","toPrecision","d3_format_src_identity","locale_prefixes","src_locale","grouping","thousands","currency","decimal","numerals","formatNumerals","percent","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatPrefix","defaultLocale_defaultLocale","src_tickFormat","precisionPrefix","precisionRound","precisionFixed","linearish","tickFormat","src_nice","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","log10","log2","logp","powp","transformSymlog","transformSymexp","symlogish","transformPow","transformSqrt","transformSquare","powish","pow_pow","time_durationSecond","time_durationMinute","time_durationHour","time_durationDay","time_durationWeek","durationMonth","durationYear","time_date","time_number","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickIntervals","tickInterval","sequential_transformer","k10","sequential_copy","sequential","sequentialPow","diverging_transformer","k21","divergingPow","scaleBand_band","ordinalRange","numbers_map","slice_slice","scales_scale","scales_scales","scales_create","[object Object]","identity_identity","linear_linear","log_log","sequentialLog","sequentialSymlog","diverging_diverging","divergingLog","divergingSymlog","quantile_quantile","thresholds","quantiles","quantize_quantize","threshold_threshold","scaleBinOrdinal","numbers_numbers","scaleBand_pointish","scales_key","scaleProps","interpolateRange","interpolateColors","interpolate_interpolate","quantizeInterpolator","scaleFraction","d3_interpolate_src_namespaceObject","interpolate_method","schemes_colors","palette","schemes_apply","schemes_scheme","schemes","scheme","tickCount","minStep","validTicks","endpoints","tickValues","binValues","ticks_tickFormat","sourceFormat","targetFormat","logfmt","decimalChar","dec","rightmostDigit","variablePrecision","AxisTicks","DataJoin","defaultItemCreate","isExit","Encode","category10","category20","category20b","category20c","tableau10","tableau20","accent","dark2","paired","pastel1","pastel2","set1","set2","set3","blues","greens","greys","oranges","purples","reds","blueGreen","bluePurple","greenBlue","orangeRed","purpleBlue","purpleBlueGreen","purpleRed","redPurple","yellowGreen","yellowOrangeBrown","yellowOrangeRed","blueOrange","brownBlueGreen","purpleGreen","purpleOrange","redBlue","redGrey","yellowGreenBlue","redYellowBlue","redYellowGreen","pinkYellowGreen","spectral","viridis","magma","inferno","plasma","rainbow","sinebow","browns","tealBlues","teals","warmGreys","goldGreen","goldOrange","goldRed","lightGreyRed","lightGreyTeal","lightMulti","lightOrange","lightTealBlue","darkBlue","darkGold","darkGreen","darkMulti","darkRed","label","fmod","encoders","reenter","legend_types_Symbols","Discrete","labels_symbols","labels_formats","labelValues","labels_binValues","thresholdValues","labelFormat","thresholdFormat","isDiscreteRange","formatRange","formatDiscrete","formatPoint","LegendEntries","fraction","perc","adjust","labelFraction","perc2","Paths","LinkPath_line","line-radial","sr","ta","tr","LinkPath_arc","arc-radial","LinkPath_curve","curve-radial","orthogonal-horizontal","sx","sy","orthogonal-vertical","orthogonal-radial","sc","ss","tc","ts","diagonal-horizontal","diagonal-vertical","diagonal-radial","mr","sourceX","sourceY","targetX","targetY","LinkPath","rr","ix","iy","Pie","sum_sum","DEFAULT_COUNT","includePad","Scale_SKIP","Scale","domainCheck","adjustScheme","flip","SortItems","isContinuousColor","rawDomain","domainMid","scaleKey","rangeStep","outer","inner","configureRangeStep","schemeExtent","interpolateGamma","schemeCount","configureScheme","configureRange","domainRaw","configureBins","includeZero","padDomain","domainMin","domainMax","domainImplicit","configureDomain","DefOutput","Stack","stackCenter","stackNormalize","stackZero","lastPos","lastNeg","stack","Stack_partition","d3_array_src_ascending","d3_array_src_extent","src_array_array","d3_array_src_range","ticks_e10","ticks_e5","ticks_e2","ticks_tickStep","threshold_sturges","LN2","src_max","d3_contour_src_array_slice","d3_contour_src_ascending","d3_contour_src_area","d3_contour_src_constant","src_contains","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear","src_noop","cases","src_contours","smooth","smoothLinear","contours","tz","contour","polygons","holes","startIndex","endIndex","isorings","xt","yt","_0","_1","blurX","blurY","defaultX","defaultY","defaultWeight","CONTOUR_PARAMS","DENSITY_PARAMS","Contour","weight","values0","Float32Array","values1","wi","transformPolygon","transformRing","cellSize","src_density","Feature","FeatureCollection","GeoJSON","_features","_points","lon","lat","geojson","adder","Adder","adder_add","adder_temp","bv","av","src_math_epsilon","src_math_pi","math_halfPi","quarterPi","src_math_tau","math_degrees","radians","math_abs","math_atan2","src_math_cos","math_exp","math_log","math_pow","src_math_sin","math_sign","math_sqrt","math_acos","math_asin","noop_noop","streamGeometry","streamGeometryType","streamObjectType","Sphere","sphere","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","closed","coordinate","polygonStart","polygonEnd","area_lambda00","phi00","area_lambda0","area_cosPhi0","area_sinPhi0","src_stream","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","cartesian_spherical","cartesian","cartesian_cartesian","spherical","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","bounds_lambda0","bounds_phi0","bounds_lambda1","bounds_phi1","bounds_lambda2","bounds_lambda00","bounds_phi00","bounds_p0","ranges","bounds_range","deltaSum","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","bounds_linePoint","inflection","phii","lambdai","antimeridian","bounds_angle","lambda0","lambda1","rangeCompare","rangeContains","W0","W1","centroid_X0","centroid_Y0","Z0","centroid_X1","centroid_Y1","Z1","centroid_X2","Y2","Z2","centroid_lambda00","centroid_phi00","centroid_x0","centroid_y0","z0","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","compose","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","src_rotation","forward","circleStream","direction","cosRadius","sinRadius","circleRadius","clip_buffer","lines","rejoin","pointEqual","Intersection","segments","compareIntersection","startInside","subject","segment","rejoin_link","isSubject","polygonContains_sum","polygonContains","winding","point0","phi0","sinPhi0","cosPhi0","sinPhi1","cosPhi1","point1","phi1","absDelta","intersection","phiArc","node_modules_d3_array_src_ascending","src_bisect_ascendingBisect","src_bisector_ascendingComparator","d3_array_src_bisector","d3_array_src_array_array","node_modules_d3_array_src_range","node_modules_d3_array_src_merge","src_clip","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","clip_compareIntersection","pointLine","ringSegments","validSegment","clip_antimeridian","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","clip_circle","smallRadius","notHemisphere","visible","two","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","polar","c0","v00","point2","clip_line","clipMax","clipMin","clipRectangle","corner","comparePoint","ca","cb","x__","y__","v__","x_","y_","v_","first","activeStream","bufferStream","clipStream","linePoint","polygonInside","cleanInside","graticuleX","graticuleY","graticule_graticule","X1","X0","Y1","Y0","DX","DY","graticule","outline","extentMajor","extentMinor","stepMajor","stepMinor","area_x00","area_y00","area_x0","area_y0","d3_geo_src_identity","area_areaSum","area_areaRingSum","area_areaStream","area_areaRingStart","area_areaRingEnd","area_areaPointFirst","area_areaPoint","path_area","bounds_x0","bounds_y0","bounds_x1","bounds_y1","centroid_x00","centroid_y00","path_centroid_x0","path_centroid_y0","path_bounds","path_centroid_X0","path_centroid_Y0","centroid_Z0","path_centroid_X1","path_centroid_Y1","centroid_Z1","path_centroid_X2","centroid_Y2","centroid_Z2","centroid_centroidStream","centroid_centroidPoint","centroid_centroidLineStart","centroid_centroidLineEnd","centroid_centroidRingStart","centroid_centroidRingEnd","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","path_centroid","PathContext","_radius","pointRadius","lengthRing","measure_x00","measure_y00","measure_x0","measure_y0","measure_lengthSum","measure_lengthStream","measure_lengthPointFirst","measure_lengthPoint","path_measure","PathString","_string","string_circle","_circle","d3_geo_src_path","projection","projectionStream","contextStream","transform_transformer","TransformStream","fit_fit","fitBounds","clipExtent","fitExtent","fitSize","fitWidth","fitHeight","resample_maxDepth","cosMinDistance","resample","project","delta2","resampleLineTo","depth","phi2","lambda2","dx2","dy2","dz","lambda00","b00","c00","resampleStream","ringPoint","resample_resample","resampleNone","transformRadians","scaleTranslateRotate","cosAlpha","sinAlpha","ai","fi","projection_projection","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","cacheStream","preclip","postclip","recenter","transformRotate","clipAngle","conicProjection","parallels","conicEqualAreaRaw","sy0","cylindricalEqualAreaRaw","r0y","conicEqualArea","albers","azimuthalRaw","azimuthalInvert","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","nx","A1","A2","A3","A4","equalEarthRaw","l2","l6","gnomonicRaw","identity_scaleTranslate","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","defaultPath","projectionProperties","projections_projection","proj","projections_projections","projections_create","getProjectionPath","albersusa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","albersUsa","streams","azimuthalequalarea","azimuthalequidistant","conicconformal","conicequalarea","conicequidistant","equirectangular","gnomonic","reflectX","reflectY","mercator","naturalEarth1","orthographic","stereographic","transversemercator","projections_key","GeoPath","GeoPoint","GeoShape","Graticule","Projection","Projection_set","initPath","nomod","shapeGenerator","content","Projection_create","fit","featurize","collectGeoJSON","Projection_fit","add_add","tree","ym","yp","leaf","src_quad","x_defaultX","y_defaultY","quadtree","Quadtree","leaf_copy","treeProto","cover","xz","yz","quads","retainer","removeAll","visitAfter","d3_force_src_constant","jiggle","collide_x","vx","collide_y","vy","link_index","link_find","nodeById","nodeId","dispatch_noop","dispatch_dispatch","Dispatch","dispatch_get","dispatch_set","T","taskHead","taskTail","src_dispatch","timer_frame","timeout","timer_interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","setFrame","requestAnimationFrame","clearNow","Timer","_time","timer","restart","wake","timerFlush","sleep","nap","poke","clearInterval","setInterval","simulation_x","simulation_y","initialRadius","initialAngle","src_simulation","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","tick","iterations","initializeNodes","initializeForce","closest","ForceMap","collide","radii","strength","ri","ri2","prepare","quad","rj","nbody","strengths","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","link","links","distances","bias","distance","initializeStrength","initializeDistance","Forces","ForceParams","ForceConfig","ForceOutput","Force","Force_prototype","setup","sim","getForce","numForces","setForceParam","change","iters","stopped","Force_simulation","static","finish","src_lookup","defaultSeparation","meanXReduce","maxYReduce","hierarchy_count_count","children","hierarchy","childs","Node","valued","defaultChildren","eachBefore","computeHeight","copyData","eachAfter","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","d3_hierarchy_src_array_slice","enclose","circles","array_shuffle","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","r21","r3","a2","a3","b2","b3","c3","d3","ab","siblings_place","score","siblings_Node","packEnclose","aa","sj","sk","pack","constantZero","d3_hierarchy_src_constant","defaultRadius","radiusLeaf","packChildren","translateChild","treemap_round","dice","stratify_keyPrefix","preroot","ambiguous","defaultId","defaultParentId","parentId","src_stratify","stratify","nodeKey","nodeByKey","tree_defaultSeparation","nextLeft","nextRight","moveSubtree","wm","wp","nextAncestor","vim","TreeNode","treemap_slice","squarify_phi","squarifyRatio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","squarify","treemap_resquarify","resquarify","_squarify","Nest","Nest_children","Nest_nest","nest","valuesByKey","HierarchyLayout","HierarchyLayout_defaultSeparation","treesource","setParams","setFields","Output","Pack","Pack_prototype","optional","Partition_Output","Partition","Partition_prototype","Stratify","partition","positionNode","parentKey","Layouts","tidy","nodeSize","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","midpoint","vip","vop","vom","sip","sop","som","apportion","cluster","previousNode","meanX","maxY","leafLeft","leafRight","Tree_Output","Tree","Tree_prototype","TreeLinks","Tiles","binary","sums","valueOffset","valueTarget","valueLeft","valueRight","slicedice","Treemap_Output","Treemap","Treemap_prototype","tile","paddingStack","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","src_treemap","vega_regression_src_partition","Loess","Regression_Methods","Regression","dof","degreesOfFreedom","model","dom","d3_voronoi_src_constant","src_point_x","src_point_y","RedBlackTree","RedBlackNode","P","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","after","grandpa","uncle","src_RedBlackTree","createEdge","Diagram_edges","setEdgeEnd","Diagram_cells","halfedges","createBorderEdge","vertex","clipEdge","connectEdge","cellHalfedgeAngle","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","Diagram_epsilon2","ha","hc","Diagram_circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","Diagram_epsilon","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","lexicographic","Diagram","sites","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v01","v11","v10","clipCells","edges","triangles","e1","_found","Voronoi","Voronoi_prototype","defaultExtent","diagram","voronoi","src_voronoi","cloudRadians","CloudLayout_cw","ch","CloudLayout","spiral","archimedeanSpiral","words","cloud","place","board","dxdy","maxDelta","cloudCollide","sprite","sw","msx","contextAndRatio","getImageData","zeroArray","tags","xoff","yoff","hasText","cloudSprite","cloudBounds","functor","spirals","di","w32","maxh","wcr","wsr","hcr","hsr","pixels","seenRow","archimedean","rectangular","Wordcloud_Output","Wordcloud_Params","Wordcloud","array32","Uint32Array","Bitmaps_array","Uint16Array","fontSizeRange","fsize","sizeScale","Wordcloud_extent","Dimension","query","added","SortedIndex","oldv","oldi","addv","addi","SortedIndex_sort","index0","value1","index1","SortedIndex_merge","reindex","CrossFilter","_index","_indices","CrossFilter_prototype","ResolveFilter","reinit","eval","remMap","modMap","bits","indexMap","filters","incrementOne","incrementAll","dim","old","lo1","hi1","lo0","hi0","description","ignore","bitmap","pass","src_cursor","cursor","user","setCursor","dataref","_runtime","dataset","render_size_width","_viewWidth","render_size_height","_viewHeight","render_size_offset","events_extend","_renderer","vega","itemGroup","extension","VIEW","TIMER","WINDOW","NO_TRAP","trap","itemFilter","markTarget","invoke","src_element","BindClass","NameClass","RadioClass","OptionClass","src_bind","binding","elements","signal","bind_form","bind_checkbox","bind_select","bind_radio","bind_range","bind_generate","option","valuesEqual","selected","selectedIndex","for","initialize_renderer","_background","initialize_lookup","render_headless","_scenegraph","TokenName","parser_source","parser_index","parser_length","lookahead","RawCode","Literal","Property","ast_Identifier","ArrayExpression","BinaryExpression","CallExpression","ConditionalExpression","LogicalExpression","MemberExpression","ObjectExpression","UnaryExpression","ASTNode","callee","consequent","alternate","argument","ast_children","TokenBooleanLiteral","TokenEOF","TokenIdentifier","TokenKeyword","TokenNullLiteral","TokenNumericLiteral","TokenPunctuator","TokenStringLiteral","SyntaxArrayExpression","SyntaxBinaryExpression","SyntaxCallExpression","SyntaxConditionalExpression","SyntaxIdentifier","SyntaxLiteral","SyntaxLogicalExpression","SyntaxMemberExpression","SyntaxObjectExpression","SyntaxProperty","SyntaxUnaryExpression","MessageUnexpectedToken","MessageUnexpectedNumber","MessageUnexpectedString","MessageUnexpectedIdentifier","MessageUnexpectedReserved","MessageUnexpectedEOS","MessageInvalidRegExp","MessageUnterminatedRegExp","MessageStrictOctalLiteral","MessageStrictDuplicateProperty","ILLEGAL","DISABLED","RegexNonAsciiIdentifierStart","RegexNonAsciiIdentifierPart","assert","condition","isDecimalDigit","isHexDigit","isOctalDigit","isWhiteSpace","isLineTerminator","isIdentifierStart","isIdentifierPart","keywords","if","in","do","var","new","try","let","else","void","with","enum","while","break","throw","const","yield","super","return","typeof","switch","export","import","public","finally","extends","package","private","continue","debugger","interface","protected","instanceof","implements","skipComment","scanHexEscape","throwError","scanUnicodeCodePointEscape","cu1","cu2","getEscapedIdentifier","scanIdentifier","getIdentifier","scanPunctuator","code2","ch2","ch3","ch4","ch1","scanNumericLiteral","scanHexLiteral","octal","scanOctalLiteral","parseFloat","scanRegExp","classMarker","terminated","literal","scanRegExpBody","search","scanRegExpFlags","tmp","$1","exception","testRegExp","regex","advance","scanStringLiteral","lex","finishBinaryExpression","finishCallExpression","finishIdentifier","finishLiteral","finishMemberExpression","computed","member","finishProperty","kind","messageFormat","whole","throwUnexpected","expect","parser_match","matchKeyword","keyword","parseArrayInitialiser","parseConditionalExpression","finishArrayExpression","parseObjectPropertyKey","parseObjectProperty","parseObjectInitialiser","finishObjectExpression","legalKeywords","parsePrimaryExpression","parseExpression","parseGroupExpression","parseArguments","parseNonComputedProperty","isIdentifierName","parseComputedMember","parsePostfixExpression","parseLeftHandSideExpressionAllowCall","parseUnaryExpression","binaryPrecedence","prec","marker","markers","parseBinaryExpression","finishConditionalExpression","src_constants","LOG2E","LOG10E","SQRT1_2","MIN_VALUE","src_functions","codegen","cast","fncall","DATE","utc","datetime","timezoneoffset","utcdate","utcday","utcyear","utcmonth","utchours","utcminutes","utcseconds","utcmilliseconds","indexof","lastindexof","upper","Intersect","Union","TYPE_ENUM","TYPE_RANGE_INC","TYPE_RANGE_EXC","TYPE_RANGE_LE","TYPE_RANGE_RE","UNIT_INDEX","testPoint","dval","selectionResolve_ops","E_union","E_intersect","R_union","R_intersect","DataPrefix","IndexPrefix","selectionVisitor","scope","indexName","dataName","getData","indataRef","tuplesRef","src_data_data","formatCache","formatter","format_timeFormat","dateObj","format_time","getScale","scales","geoMethod","methodName","globalMethod","geoArea","geoBounds","deltaMax","geoCentroid","src_log_log","equal","equalArray","removePredicate","props","EMPTY","tree_datum","treeNodes","_window","prefix_DataPrefix","prefix_IndexPrefix","ScalePrefix","dataVisitor","scaleVisitor","addScaleDependency","scaleName","scaleRef","functionContext","isDefined","isValid","sequence","monthFormat","monthAbbrevFormat","dayFormat","dayAbbrevFormat","inScope","markname","intersect_filter","pinchDistance","touches","pinchAngle","screen","containerSize","container","clientWidth","clientHeight","windowSize","innerWidth","innerHeight","bandspace","setdata","pathShape","retval","toggle","predicate","_trigger","eventFunctions","eventPrefix","thisPrefix","astVisitors","expressionFunction","codeGenerator","functions","miss","unitIdx","resUnit","resolved","acc","codegenParams","blacklist","whitelist","fieldvar","globalvar","constants","visitors","globals","memberDepth","outputGlobal","ast","Generators","stripQuotes","src_codegen","expression_expression","eventExpression","encodeExpression","parseParameters","spec","parseParameter","PARSERS","$ref","$key","$flat","$params","$expr","$name","parameterExpression","$fields","$field","enc","$encode","$output","$compare","$order","$tupleid","$subflow","subctx","src_dataflow","operators","signals","canonicalType","src_operator","operatorExpression","src_update","srcid","handlerExpression","eventConfig","parseOperatorParameters","vega_runtime_src_stream","updates","state_SKIP","src_context","transforms","Context","ContextFork","subcontext","$ingest","$format","$request","unresolved","getState","recurse","setState","substate","src_runtime","Width","Height","size_Padding","Skip","size_viewWidth","size_viewHeight","dataTest","signalTest","proxy","src_tooltip","formatArray","tooltip_formatValue","formatTooltip","View","_elBind","_renderType","_handler","_preventDefault","_timers","_eventListeners","_resizeListeners","_bind","bindings","_eventConfig","defaults","prevent","allow","_resize","resetSize","_resizeWidth","_resizeHeight","resizePadding","initializeResize","hover","View_prototype","lookupSignal","findOperatorHandler","addOperatorListener","removeOperatorListener","_resetRenderer","rerun","addResizeListener","removeResizeListener","addSignalListener","removeSignalListener","addDataListener","removeDataListener","total","elapsed","src_interval","timestamp","finalize","timers","listeners","hoverSet","leaveSet","elBind","Handler","Renderer","prevHandler","initialize_handler","toImageURL","blob","Blob","URL","createObjectURL","toDataURL","toCanvas","toSVG","parsers_autosize","parsers_padding","padding_number","OUTER_INVALID","outerError","parsers_signal","addSignal","addBinding","parsers_expression","preamble","signalName","getSignal","signalRef","Entry","util_entry","util_operator","util_ref","ref","refs","tupleidRef","util_fieldRef","keyFieldRef","compareRef","Descending","aggrField","Scope","util_View","isSignal","util_hasSignal","util_value","specValue","deref","stream_Timer","parseStream","mergeStream","nestedStream","eventStream","streamParameters","addStream","markrole","DEFAULT_SOURCE","MARKS","event_selector","event_selector_VIEW","DEFAULT_MARKS","parseMerge","parseSelector","LBRACK","RBRACK","LBRACE","RBRACE","COLON","COMMA","NAME","GT","event_selector_ILLEGAL","*","event_selector_find","endChar","pushChar","popChar","parseBetween","parseThrottle","event_selector_parseStream","parsers_update","isSubscope","mergeSources","addUpdate","streamSource","transforms_transform","transforms_Aggregate","transforms_AxisTicks","transforms_Bound","transforms_Collect","transforms_Compare","transforms_DataJoin","transforms_Encode","transforms_Expression","transforms_Facet","transforms_Field","transforms_Key","transforms_LegendEntries","transforms_Load","transforms_Mark","transforms_MultiExtent","transforms_MultiValues","transforms_Overlap","transforms_Params","transforms_PreFacet","transforms_Projection","transforms_Proxy","transforms_Relay","transforms_Render","transforms_Scale","transforms_Sieve","transforms_SortItems","transforms_ViewLayout","transforms_Values","FIELD_REF_ID","initScale","isValidScaleType","addScale","parseScale","parseScaleDomain","parseScaleRange","parseArray","parseLiteral","parseScaleInterpolate","objectProperty","parseScaleBins","dataLookupError","coll","addDataPipeline","scale_fieldRef","countsRef","fieldRef","sortRef","parseSort","domainRef","extentRef","valuesRef","multidomain","projection_parseParameter","Vertical","constants_Start","constants_End","Value","GuideLabelStyle","GroupTitleStyle","constants_Symbols","constants_Gradient","constants_Discrete","LegendScales","constants_Skip","constants_zero","constants_one","adjust_spatial_Skip","Swap","adjust_spatial","encode_expression","encode_field","field_resolve","encode_scale","scale_getScale","scaleType","hasBandwidth","encode_property","encode_entry","channel","encode_gradient","encode_color","encode_set","encode_rule","rules","parseEncode","MarkRole","roles_FrameRole","roles_TitleRole","encoder","addEncode","addEncoders","extendEncode","encode_util_encoders","defaultEncode","applyDefaults","guide_mark","dataRef","extras","guide_util_lookup","isVertical","symbolDirection","gradientDirection","gradientLength","gradientWidth","gradientThickness","gradientHeight","entryColumns","getEncoding","anchorExpr","alignExpr","GroupMark","TextMark","legend_gradient","userEncode","thickness","legend_gradient_discrete","vv","legend_gradient_labels","overlap","labelLimit","gradientLabelLimit","labelOffset","gradientLabelOffset","guide_group","legend_symbol_groups","symbols","symbolOffset","valueRef","xSignal","yEncode","symbolBaseFillColor","symbolBaseStrokeColor","facet","isL","isR","isLR","isVG","legend_title_baseline","exprAlign","exprAnchor","exprAngle","exprBaseline","marks_clip","clip_param","marks_role","marks_definition","marks_interactive","parsers_transform","transform_parseParameters","pdef","transform_parseParameter","lookupRef","parseIndexParameter","parseSubParameter","parseSubParameters","projectionRef","parameterValue","transform_isExpr","isField","isCompare","exprRef","outerField","isData","getDataRef","DataScope","aggregate","fromEntries","DataScope_prototype","fieldKey","addSortField","DataScope_cache","ds","optype","sortKey","trigger","parsers_mark","sieve","joinRef","markRef","encodeRef","layoutRef","boundRef","keyRef","marks_data","$context","markpath","md","pushState","subscope","addData","parsers_spec","toRuntime","marks_facet","marks_subflow","popState","tol","parseOverlap","parsers_legend","entryEncode","entryLayout","entryRef","legendEncode","scaleCount","legend_legendType","buildLegendEncode","tickMinStep","legendSymbolLayout","getChannel","getStyle","getFontSize","sizeExpression","_anchor","legend_title","angleExpr","title_baselineExpr","parsers_title","buildTitle","parseData","upstream","data_load","analyze","axis_domain_position","axis_grid","tickPos","vscale","gridScale","axis_grid_offsetValue","flushExpr","parsers_axis","ticksRef","axisX","axisY","or","axisBand","axis_config","axisEncode","tickSize","axis_ticks","isXAxis","flushOffset","flushOn","labelAlign","labelBaseline","axis_labels","u2","axis_domain","titlePos","axis_title","preprocessed","projections","addProjection","parsers_projection","signal_updates","axes","parseLambdas","view_defined","Scope_Scope","lambdas","_id","_subid","_nextsub","_encode","_lookup","_markpath","Subscope","Scope_prototype","propertyLambda","vref","annotate","stable","check","isExpr","sig","addScaleProj","projectionType","dataScope","src_config","configs","config_copy","defaultColor","defaultStrokeWidth","defaultFont","guide-label","guide-title","group-title","defaultSymbolSize","lightGray","bandPosition","domainWidth","domainColor","config_gray","gridWidth","gridColor","labelAngle","labelPadding","tickColor","tickOffset","tickRound","tickWidth","gridAlign","columnPadding","rowPadding","gradientStrokeColor","gradientStrokeWidth","labelOverlap","symbolType","symbolSize","symbolStrokeWidth","titleLimit","titleOrient","category","heatmap","ramp","diverging","src_parse","parseView","vega_transforms_namespaceObject","vega_view_transforms_namespaceObject","vega_encode_namespaceObject","vega_geo_namespaceObject","vega_force_namespaceObject","vega_hierarchy_namespaceObject","vega_regression_namespaceObject","vega_voronoi_namespaceObject","vega_wordcloud_namespaceObject","vega_crossfilter_namespaceObject","isLogicalOr","isLogicalAnd","and","isLogicalNot","not","normalizeLogicalOperand","normalizer","deepEqual","fast_deep_equal_default","duplicate","clone_default","util_pick","omit","assign","Set","fast_json_stable_stringify_default","util_hash","isNullOrFalse","util_contains","util_flatten","mergeDeep","dest","deepMerge_","unique","results","hasIntersection","prefixGenerator","prefixes","wrappedWithAccessors","fieldIntersection","util_keys","util_vals","_vals","flagKeys","util_isBoolean","varName","alphanumericS","logicalExpr","deleteNestedProperty","orderedProps","titlecase","accessPathWithDatum","pieces","replacePathInField","removePathFromField","accessPathDepth","getFirstDefined","idCounter","uniqueId","normalizeAngle","AREA","BAR","LINE","POINT","RECT","RULE","TEXT","TICK","TRAIL","CIRCLE","SQUARE","GEOSHAPE","MARK_INDEX","bar","geoshape","isPathMark","PRIMITIVE_MARKS","isMarkDef","FILL_STROKE_CONFIG","VL_ONLY_MARK_CONFIG_PROPERTIES","isUnitSpec","base_CompositeMarkNormalizer","AGGREGATE_OP_INDEX","isArgminDef","isArgmaxDef","isAggregateOp","COUNTING_OPS","isCountingAggregateOp","SUM_OPS","SHARED_DOMAIN_OP_INDEX","ROW","COLUMN","FACET","channel_X","channel_Y","channel_X2","channel_Y2","LATITUDE","LONGITUDE","LATITUDE2","LONGITUDE2","COLOR","FILL","STROKE","SHAPE","SIZE","OPACITY","FILLOPACITY","STROKEOPACITY","STROKEWIDTH","channel_TEXT","ORDER","DETAIL","KEY","TOOLTIP","HREF","GEOPOSITION_CHANNEL_INDEX","longitude","longitude2","latitude","latitude2","GEOPOSITION_CHANNELS","UNIT_CHANNEL_INDEX","isColorChannel","FACET_CHANNEL_INDEX","FACET_CHANNELS","CHANNEL_INDEX","CHANNELS","_o","channel_d","SINGLE_DEF_CHANNEL_INDEX","_o1","_d1","channel_r","channel_c","_f","SINGLE_DEF_UNIT_CHANNEL_INDEX","isSingleDefUnitChannel","isChannel","SECONDARY_RANGE_CHANNEL","isSecondaryRangeChannel","getMainRangeChannel","_latitude","_longitude","_latitude2","_longitude2","NONPOSITION_CHANNEL_INDEX","NONPOSITION_CHANNELS","POSITION_SCALE_CHANNEL_INDEX","POSITION_SCALE_CHANNELS","_tt","_hr","_dd","_oo","NONPOSITION_SCALE_CHANNEL_INDEX","NONPOSITION_SCALE_CHANNELS","SCALE_CHANNEL_INDEX","SCALE_CHANNELS","isScaleChannel","supportMark","getSupportedMark","rangeType","INVALID_SPEC","FIT_NON_SINGLE","CANNOT_FIX_RANGE_STEP_WITH_FIT","cannotProjectOnChannelWithoutField","nearestNotSupportForContinuous","selectionNotSupported","selectionNotFound","SCALE_BINDINGS_CONTINUOUS","NO_INIT_SCALE_BINDINGS","noSuchRepeatedValue","columnsNotSupportByRowCol","CONCAT_CANNOT_SHARE_AXIS","REPEAT_CANNOT_SHARE_AXIS","unrecognizedParse","differentParse","invalidTransformIgnored","NO_FIELDS_NEEDS_AS","encodingOverridden","channels","projectionOverridden","parentProjection","primitiveChannelDef","invalidFieldType","nonZeroScaleUsedWithLengthMark","zeroFalse","invalidFieldTypeForCountAggregate","invalidAggregate","missingFieldType","newType","droppingColor","emptyFieldDef","fieldDef","latLongDeprecated","newChannel","LINE_WITH_VARYING_SIZE","incompatibleChannel","markOrFacet","when","invalidEncodingChannel","facetChannelShouldBeDiscrete","facetChannelDropped","discreteChannelCannotEncode","BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL","lineWithRange","hasX2","hasY2","orientOverridden","original","CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN","cannotUseScalePropertyWithNonColor","unaggregateDomainHasNoEffectForRawField","unaggregateDomainWithNonSharedDomainOp","unaggregatedDomainWithLogScale","cannotApplySizeToNonOrientedMark","rangeStepDropped","scaleTypeNotWorkWithChannel","defaultScaleType","scaleTypeNotWorkWithFieldDef","scalePropertyNotWorkWithScaleType","propName","scaleTypeNotWorkWithMark","mergeConflictingProperty","propertyOf","independentScaleMeansIndependentGuide","domainSortDropped","UNABLE_TO_MERGE_DOMAINS","MORE_THAN_ONE_SORT","INVALID_CHANNEL_FOR_AXIS","cannotStackRangedMark","cannotStackNonLinearScale","stackNonSummativeAggregate","invalidTimeUnit","unitName","dayReplacedWithDate","fullTimeUnit","droppedDay","errorBarCenterAndExtentAreNotNeeded","errorBarCenterIsUsedWithWrongExtent","errorBarContinuousAxisHasCustomizedAggregate","compositeMark","errorBarCenterIsNotNeeded","errorBand1DNotSupport","channelRequiredForBinned","domainRequiredForThresholdScale","message_namespaceObject","log_main","log_current","log_reset","log_warn","SUNDAY_YEAR","isDateTime","MONTHS","SHORT_MONTHS","DAYS","SHORT_DAYS","dateTimeExpr","lowerM","monthIndex","shortM","shortMonthIndex","normalizeMonth","normalizeQuarter","lowerD","dayIndex","shortD","shortDayIndex","normalizeDay","timeUnit","isFacetMapping","isFacetSpec","TimeUnit","YEAR","MONTH","DAY","HOURS","MINUTES","SECONDS","MILLISECONDS","YEARMONTH","YEARMONTHDATE","YEARMONTHDATEHOURS","YEARMONTHDATEHOURSMINUTES","YEARMONTHDATEHOURSMINUTESSECONDS","MONTHDATE","MONTHDATEHOURS","HOURSMINUTES","HOURSMINUTESSECONDS","MINUTESSECONDS","SECONDSMILLISECONDS","QUARTER","YEARQUARTER","QUARTERMONTH","YEARQUARTERMONTH","UTCYEAR","UTCMONTH","UTCDAY","UTCDATE","UTCHOURS","UTCMINUTES","UTCSECONDS","UTCMILLISECONDS","UTCYEARMONTH","UTCYEARMONTHDATE","UTCYEARMONTHDATEHOURS","UTCYEARMONTHDATEHOURSMINUTES","UTCYEARMONTHDATEHOURSMINUTESSECONDS","UTCMONTHDATE","UTCMONTHDATEHOURS","UTCHOURSMINUTES","UTCHOURSMINUTESSECONDS","UTCMINUTESSECONDS","UTCSECONDSMILLISECONDS","UTCQUARTER","UTCYEARQUARTER","UTCQUARTERMONTH","UTCYEARQUARTERMONTH","LOCAL_SINGLE_TIMEUNIT_INDEX","TIMEUNIT_PARTS","UTC_SINGLE_TIMEUNIT_INDEX","UTC_MULTI_TIMEUNIT_INDEX","utcyearquarter","utcyearquartermonth","utcyearmonth","utcyearmonthdate","utcyearmonthdatehours","utcyearmonthdatehoursminutes","utcyearmonthdatehoursminutesseconds","utcquartermonth","utcmonthdate","utcmonthdatehours","utchoursminutes","utchoursminutesseconds","utcminutesseconds","utcsecondsmilliseconds","UTC_TIMEUNIT_INDEX","isUTCTimeUnit","TIMEUNIT_INDEX","yearquarter","yearquartermonth","yearmonth","yearmonthdate","yearmonthdatehours","yearmonthdatehoursminutes","yearmonthdatehoursminutesseconds","quartermonth","monthdate","monthdatehours","hoursminutes","hoursminutesseconds","minutesseconds","secondsmilliseconds","containsTimeUnit","timeunit_fieldExpr","dateExpr","tu","getDateTimeComponents","shortTimeLabels","dateComponents","hasYear","timeComponents","dateTimeComponents","normalizeTimeUnit","TYPE_INDEX","quantitative","temporal","nominal","QUANTITATIVE","ORDINAL","TEMPORAL","NOMINAL","GEOJSON","toFieldDefBase","bin","isConditionalDef","channelDef","hasConditionalFieldDef","isFieldDef","isTypedFieldDef","isStringFieldDef","isValueDef","isScaleFieldDef","isPositionFieldDef","isMarkPropFieldDef","isTextFieldDef","vgField","argAccessor","isCount","isInternalField","nofn","isOpFieldDef","isBinning","binToString","binSuffix","forAs","flatAccessWithDatum","channeldef_isContinuous","channeldef_isDiscrete","verbalTitleFormatter","countTitle","part","getTimeUnitParts","defaultTitleFormatter","fieldTitle","functionalTitleFormatter","titleFormatter","setTitleFormatter","channeldef_title","allowDisabling","includeDefault","guideTitle","getGuide","defaultTitle","getFieldDef","getTypedFieldDef","channeldef_normalize","primitiveType","normalizeFieldDef","fieldDefWithoutAggregate","normalizeBin","bin_isBinned","fullType","getFullName","defaultType","compatible","warning","COMPATIBLE","channelCompatibility","autoMaxBins","binned","isTimeFormatFieldDef","isTimeFieldDef","valueExpr","undefinedIfExprNotRequired","isLocalSingleTimeUnit","isUtcSingleTimeUnit","valueArray","binRequiresRange","isBinParams","channelHasField","encoding_isAggregate","extractTransformsFromEncoding","oldEncoding","timeUnits","aggOp","guide","isTitleDefined","newField","newFieldDef","isPositionChannel","aggregateEntry","secondaryChannel","isNonPositionScaleChannel","normalizeEncoding","normalizedEncoding","markSupported","primaryFieldDef","markChannelCompatible","fieldDefs","mapping","thisArg","encoding_reduce","getCompositeMarkTooltip","tooltipSummary","continuousAxisChannelDef","encodingWithoutContinuousAxis","withFieldName","fieldPrefix","titlePrefix","makeCompositeAggregatePartFactory","compositeMarkDef","continuousAxis","sharedEncoding","compositeMarkConfig","partName","positionPrefix","endPositionPrefix","extraEncoding","partLayerMixins","markDef","partBaseSpec","compositeMarkContinuousAxis","continuousAxisChannelDef2","continuousAxisChannelDefError","continuousAxisChannelDefError2","filterAggregateFromChannelDef","continuousAxisWithoutAggregate","compositeMarkOrient","BOXPLOT","BOXPLOT_PARTS","outliers","boxPlotNormalizer","normalizeBoxPlot","getBoxPlotType","_encoding","_p","outerSpec","boxplot","sizeValue","boxPlotType","ticksOrient","customTooltipWithoutAggregatedField","continuousFieldName","boxplotSpecificAggregate","boxParamsQuartiles","postAggregateCalculates","calculate","_b","oldEncodingWithoutContinuousAxis","filteredEncoding","customTooltipWithAggregatedField","filterTooltipWithAggregatedField","boxParams","encodingWithoutSizeColorAndContinuousAxis","makeBoxPlotPart","makeBoxPlotExtent","makeBoxPlotBox","makeBoxPlotMidTick","fiveSummaryTooltipEncoding","endTick","whiskerTooltipEncoding","whiskerLayers","boxLayers","filteredLayersMixins","lowerBoxExpr","upperBoxExpr","iqrExpr","lowerWhiskerExpr","upperWhiskerExpr","fieldExpr","joinaggregateTransform","joinaggregate","filteredWhiskerSpec","layer","encodingWithoutSizeColorContinuousAxisAndTooltip","outlierLayersMixins","continousAxisField","ERRORBAR","ERRORBAR_PARTS","errorBarNormalizer","normalizeErrorBar","tooltipEncoding","errorBarParams","makeErrorBarPart","errorbar","errorBarOrientAndInputType","xError","xError2","yError","yError2","errorBarIsInputTypeRaw","inputType","isTypeAggregatedUpperLower","errorBarIsInputTypeAggregatedUpperLower","isTypeAggregatedError","errorBarIsInputTypeAggregatedError","errorBarSpecificAggregate","tooltipTitleWithFieldName","getTitlePrefix","centerOp","lowerExtentOp","upperExtentOp","postAggregateCalculate","errorBarAggregationAndCalculation","_c","_d","oldAggregate","oldGroupBy","operation","ERRORBAND","ERRORBAND_PARTS","borders","errorBandNormalizer","normalizeErrorBand","errorBandDef","makeErrorBandPart","errorband","is2D","bandMark","bordersMark","compositeMarkRegistry","compositemark_add","VL_ONLY_GUIDE_CONFIG","VL_ONLY_LEGEND_CONFIG","COMMON_LEGEND_PROPERTY_INDEX","clipHeight","fillColor","gradientOpacity","labelColor","labelFont","labelFontSize","labelFontStyle","labelFontWeight","labelOpacity","labelSeparation","legendX","legendY","strokeColor","symbolDash","symbolDashOffset","symbolFillColor","symbolOpacity","symbolStrokeColor","titleAlign","titleBaseline","titleColor","titleFont","titleFontSize","titleFontStyle","titleFontWeight","titleOpacity","VG_LEGEND_PROPERTY_INDEX","LEGEND_PROPERTIES","VG_LEGEND_PROPERTIES","ScaleType","LINEAR","LOG","POW","SQRT","SYMLOG","TIME","QUANTILE","QUANTIZE","THRESHOLD","BIN_ORDINAL","BAND","SCALE_CATEGORY_INDEX","bin-ordinal","quantize","SCALE_TYPES","scaleCompatible","scaleType1","scaleType2","scaleCategory1","scaleCategory2","SCALE_PRECEDENCE_INDEX","scaleTypePrecedence","CONTINUOUS_TO_CONTINUOUS_SCALES","CONTINUOUS_TO_CONTINUOUS_INDEX","CONTINUOUS_TO_DISCRETE_INDEX","CONTINUOUS_DOMAIN_SCALES","CONTINUOUS_DOMAIN_INDEX","DISCRETE_DOMAIN_INDEX","hasDiscreteDomain","hasContinuousDomain","isContinuousToContinuous","isContinuousToDiscrete","defaultScaleConfig","textXRangeStep","pointPadding","barBandPaddingInner","rectBandPaddingInner","minBandSize","minFontSize","maxFontSize","minOpacity","maxOpacity","minSize","minStrokeWidth","maxStrokeWidth","quantileCount","quantizeCount","isSelectionDomain","SCALE_PROPERTY_INDEX","scale_type","src_scale_domain","src_scale_range","scale_rangeStep","scale_scheme","NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES","fieldDefType","generateScaleTypeIndexKey","channelSupportScaleType","scaleTypeSupportDataType","generateScaleTypeIndex","scaleTypeSupportProperty","channelScalePropertyIncompatability","specifiedType","SELECTION_ID","isIntervalSelection","defaultConfig","single","multi","encodings","isConcatSpec","isVConcatSpec","isHConcatSpec","isRepeatSpec","COMPOSITION_LAYOUT_PROPERTIES","spacing","extractTitleConfig","titleConfig","titleMarkConfig","nonMark","config_defaultConfig","invalidValues","binSpacing","continuousBandSize","axisLeft","axisRight","axisTop","axisBottom","gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength","headerColumn","headerRow","headerFacet","initConfig","MARK_STYLES","VL_ONLY_CONFIG_PROPERTIES","VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX","stripAndRedirectConfig","markType","vlOnlyMarkSpecificConfigs","redirectConfig","toProp","compositeMarkPart","propConfig","isLayerSpec","map_SpecMapper","mapFacet","mapRepeat","mapHConcat","mapVConcat","mapConcat","mapLayerOrUnit","mapLayer","mapUnit","subspec","hconcat","vconcat","rest","STACK_OFFSET_INDEX","STACKABLE_MARKS","STACK_BY_DEFAULT_MARKS","stack_stack","stackConfig","fieldChannel","xDef","yDef","potentialStackedChannel","stackedFieldDef","stackedField","dimensionChannel","dimensionDef","dimensionField","stackBy","cDef","disallowNonLinearStack","groupbyChannel","dropLineAndPoint","dropLineAndPointFromConfig","getPointOverlay","markConfig","getLineOverlay","pathoverlay_PathOverlayNormalizer","pointOverlay","lineOverlay","stackProps","overlayEncoding","stackFieldChannel","ruleforrangedline_RuleForRangedLineNormalizer","mainChannelDef","mergeEncoding","parentEncoding","overriden","mergeProjection","normalize_normalize","normalize_normalizer","normalizeGenericSpec","nonFacetUnitNormalizers","hasRow","hasColumn","hasFacet","mapFacetedUnit","mapUnitWithParentEncodingOrProjection","normalizeLayerOrUnit","unitNormalizer","hasMatchingType","mergedProjection","mergedEncoding","otherParams","_normalizeAutoSize","TOP_LEVEL_PROPERTIES","extractTopLevelProperties","isUrlData","isInlineData","isNamedData","isGenerator","isSequenceGenerator","isSphereGenerator","isGraticuleGenerator","MAIN","RAW","isFieldEqualPredicate","isFieldLTPredicate","isFieldLTEPredicate","isFieldGTPredicate","isFieldGTEPredicate","isFieldRangePredicate","isFieldOneOfPredicate","oneOf","isFieldPredicate","predicateValueExpr","fieldFilterExpression","useInRange","predicateValuesExpr","isFieldValidPredicate","exprs","normalizePredicate","isFilter","isLookup","isSample","isWindow","isJoinAggregate","isFlatten","isCalculate","isBin","isImpute","transform_isTimeUnit","transform_isAggregate","isStack","isFold","isSignalRef","isVgRangeStep","isDataRefDomain","VG_MARK_CONFIGS","AXIS_PARTS","AXIS_PROPERTY_TYPE","gridDash","gridOpacity","domainOpacity","labelBound","labelFlush","labelFlushOffset","tickExtra","tickOpacity","titleAngle","titleX","titleY","COMMON_AXIS_PROPERTIES_INDEX","domainDash","domainDashOffset","gridDashOffset","tickDash","tickDashOffset","AXIS_PROPERTIES_INDEX","VG_AXIS_PROPERTIES","assembleAxis","axisCmpt","combine","propType","mainExtracted","hasAxisPart","titleString","assembleTitle","assembleAxisSignals","component","sizeType","getSizeSignalRef","HEADER_TITLE_PROPERTIES_MAP","HEADER_LABEL_PROPERTIES_MAP","labelAnchor","labelOrient","HEADER_TITLE_PROPERTIES","HEADER_LABEL_PROPERTIES","DEFAULT_SORT_OP","isSortField","isSortArray","getAxisConfig","configTypes","configType","defaultLabelBaseline","axisOrient","defaultLabelAlign","properties_orient","getStyles","getMarkConfig","vgChannel","getStyleConfig","styleConfigIndex","styleConfig","formatSignalRef","specifiedFormat","isUTCScale","timeFormatExpression","numberFormat","binFormatExpression","formatExpr","numberFormatExpr","startField","endField","rawTimeFormat","alwaysReturn","expression","formatExpression","sortParams","orderDef","fieldRefOption","orderChannelDef","mergeTitleFieldDefs","f1","f2","fdToMerge","fieldDef1","mergeTitle","title1","title2","mergeTitleComponent","explicit","dataflow_DataFlowNode","debugName","_children","_hash","addChild","oldChild","newParent","OutputNode","refCounts","_source","_name","cloneObj","getDependentFields","dependents","startsWithDatum","getName","calculate_CalculateNode","_dependentFields","forEachFieldDef","sortValue","sortArrayIndexField","getHeaderChannel","getHeaderProperty","facetFieldDef","headerSpecificConfig","getHeaderProperties","HEADER_CHANNELS","HEADER_TYPES","assembleTitleGroup","layoutHeaders","headerChannel","defaultHeaderGuideBaseline","defaultHeaderGuideAlign","assembleHeaderProperties","assembleHeaderGroups","layoutHeader","headerType","headerCmpt","assembleHeaderGroup","getSort","assembleLabelTitle","isFacetWithoutRowCol","isFacetModel","hasAxes","sizeChannel","sizeSignal","LAYOUT_TITLE_BAND","getLayoutTitleBand","propertiesMap","assembleLayoutSignals","sizeSignals","layoutSize","scaleComponent","getScaleComponent","stepSignal","sizeExpr","cardinality","timeunit_TimeUnitNode","formula","reduceFieldDef","timeUnitComponent","transforms_scales","selCmpt","selDef","repeater","topLevelSignals","namedSg","VL_SELECTION_RESOLVE","scales_domain","TUPLE_FIELDS","SelectionProjectionComponent","SCALE_TRIGGER","interval_interval","fieldsSg","hasScales","dataSignals","scaleTriggers","filterExpr","interval_events","cs","vname","visual","scaled","coord","assembleInit","channelSignals","toNum","selection_unitName","TUPLE","modifyExpr","xvname","yvname","STORE","vgStroke","singleOrMultiSignals","MODIFY","SELECTION_DOMAIN","compilers","forEachSelection","selections","sel","facetModel","getFacetModel","requiresSelectionId","transforms_nearest","nearest","cellDef","isVoronoi","mixins_tooltip","reactiveGeom","exists","transforms_inputs","sgname","transforms_toggle","tpl","findIndex","addClear","vIdx","tIdx","ANCHOR","DELTA","translate_translate","onDelta","sizeSg","scaleCmpt","zoom_ANCHOR","zoom_DELTA","zoom_zoom","zoom_onDelta","transforms_compilers","sg","cfg","parseInit","allSignals","forEachTransform","assembleUnitSelectionMarks","selCompiler","txCompiler","assembleSelectionPredicate","dfnode","stores","predicateStr","getSelectionComponent","tunode","insertAsParentOf","predicate_expression","filterOp","isSelectionPredicate","midPointWithPositionInvalidTest","midPoint","wrapPositionInvalidTest","fieldInvalidTestValueRef","fieldInvalidPredicate","zeroValueRef","invalid","getOffset","markDefOffsetValue","valueref_bin","side","valueref_fieldRef","mixins","bandRef","binMidSignal","fieldDef2","channel2Def","defaultRef","channel2","offsetMixins","tooltipForEncoding","usedKey","mainChannel","valueref_text","valueref_mid","sizeRef","positionDefault","checkBarAreaWithoutZero","checkBarAreaWithZero","definedValueOrConfig","domainDefinitelyIncludesZero","isVisible","mixins_color","configValue","transparentIfNeeded","defaultFill","defaultStroke","colorVgChannel","fillStrokeMarkDefAndConfig","nonPosition","baseEncodeEntry","markDefProperties","wrapAllFieldsInvalid","mixins_text","allFieldsInvalidPredicate","valueIfDefined","filterIndex","aggregator","mixins_defined","wrapCondition","refFn","conditionValueRef","isConditionalSelection","tooltipRefFromChannelDef","markTooltip","defaultSizeRef","centeredBandPositionMixins","binPosition","pointPosition","valueref_position","pointPosition2","baseChannel","position2","guideEncodeEntry","valueDef","defaultScaleResolve","isLayerModel","isConcatModel","isRepeatModel","parseGuideResolve","channelScaleResolve","split_Split","implicit","getWithExplicit","setWithExplicit","makeExplicit","makeImplicit","tieBreakByComparing","defaultTieBreaker","mergeValuesWithExplicit","tieBreaker","component_LegendComponent","properties_type","properties_defaultType","properties_direction","legendConfig","legendType","defaultDirection","gradientLengthSignal","encode_type","legendCmp","encode_symbols","symbolsSpec","propsList","applyMarkConfig","getMaxValue","getFirstConditionValue","legend_encode_gradient","gradientSpec","encode_labels","labelsSpec","getConditionValue","conditionalDef","reducer","hasConditionalValueDef","parseLegend","isUnitModel","legendComponent","legendCmpt","getLegendDefWithScale","getProperty","isExplicit","legendEncoding","legendEncodingPart","legend_encode_namespaceObject","parseLegendForChannel","parseUnitLegend","mergeLegendComponent","parseNonUnitLegend","defaultGradientLength","properties_defaultLabelOverlap","defaultSymbolType","legend_properties_values","mergedLegend","childLegend","mergedOrient","childOrient","typeMerged","mergedValueWithExplicit","mergeSymbolType","st1","st2","assembleLegends","legendComponentIndex","legendByDomain","domainHash","domains","mergedLegendComponent","assembleProjections","assembleProjectionForModel","assembleProjectionsForModelAndChildren","lookupDataSource","PROJECTION_PROPERTIES","component_ProjectionComponent","specifiedProjection","isFit","parseProjection","hasProjection","posssiblePair","requestDataName","gatherFitData","projectionName","parseUnitProjection","nonUnitProjection","mergable","allPropertiesShared","mergeIfNoConflict","modelProjection","renameProjection","parseNonUnitProjections","source_SourceNode","_data","defaultExtension","_generator","checkLinks","OptimizerBase","_mutated","mutatedFlag","optimizer_BottomUpOptimizer","_continue","continueFlag","setContinue","setMutated","optimizeNextFromLeaves","TopDownOptimizer","addDimension","isGeoPositionChannel","posChannel","getPositionChannelFromLatLong","aggregate_AggregateNode","dimensions","groupBy","isAggregate","fd","meas","argField","scaleDomain","setEqual","parentMeasures","childMeasures","mergeMeasures","log_debug","alias","createBinComponent","isBinTransform","normalizedBin","binKey","extentSignal","getSignalsFromModel","binComponent","bin_BinNode","binComponentIndex","formulaAs","rangeFormula","renameSignal","binAs","remainingAs","binTrans","facet_FacetNode","sortField","sortIndexField","childModel","childIndependentFieldsWithStep","childScaleComponent","getFieldFromDomain","assembleDomain","crossedDataName","childChannel","hasSharedAxis","assembleRowColumnHeaderData","getChildIndependentFieldsWithStep","facetData","assembleFacetHeaderData","filter_FilterNode","unquote","formatparse_ParseNode","_parse","ancestorParse","makeWithAncestors","forEachLeaf","subop","isNumberFieldDef","mainFieldDef","parsedAs","copyAll","parseNothing","formatParse","onlyNested","formatparse_parseExpression","joinaggregate_JoinAggregateTransformNode","getDefaultName","joinAggregateFieldDef","stack_StackNode","_stack","stackTransform","sortFields","sortOrder","normalizedAs","isValidAsArray","stackField","facetby","stackProperties","dimensionFieldDef","stackby","_field","getStackByFields","getGroupbyFields","window_WindowTransformNode","windowFieldDef","optimizers_MoveParseUp","numChildren","producedFields","dependentFields","swapWithParent","optimizers_MergeIdenticalNodes","mergedNode","hashes","buckets","mergeNodes","optimizers_RemoveUnusedSubtrees","optimizers_RemoveDuplicateTimeUnits","pfields","moveFacetDown","facetMain","main","moveMainDownToFacet","cloner","newName","FACET_SCALE_PREFIX","getSource","setSource","outputNodes","addDimensions","optimizers_RemoveUnnecessaryNodes","isRequired","optimizers_MergeParse","parseChildren","commonParse","parseNode","mergedParseNode","optimizers_MergeAggregateNodes","aggChildren","groupedAggregates","groupBys","mergeableAggs","mergedAggs","optimizers_MergeBins","moveBinsUp","promotableBins","remainingBins","promotedBin","remainingBin","MAX_OPTIMIZATION_RUNS","getLeaves","roots","isTrue","runOptimizer","optimizer","runFlags","optimizationDataflowHelper","dataComponent","SignalRefWrapper","exprGenerator","rename","domain_parseScaleDomain","specifiedScales","localScaleComponents","specifiedScale","specifiedDomain","scaleConfig","reason","canUseUnaggregatedDomain","useUnaggregatedDomain","normalizeUnaggregatedDomain","parseSingleChannelDomain","parseDomainForChannel","localScaleCmpt","isFaceted","facetParent","parseUnitScaleDomain","childComponent","parseNonUnitScaleDomain","mapDomainToDataSignal","isStacked","normalizeSortField","isSortByEncoding","domainSort","getSignalName","isDataRefUnionedDomain","nonUnionDomain","isFieldRefUnionDomain","uniqueDomains","_s","sorts","simpleSorts","allData","mergeDomains","assembleScalesForModel","_r","otherScaleProps","scaleRange","assembleScaleRange","isRawSelectionDomain","selDomain","assembleSelectionScaleDomain","component_ScaleComponent","typeWithExplicit","RANGE_PROPERTIES","getSizeType","parseUnitScaleRange","mergedScaleCmpt","sizeSpecified","xyRangeSteps","getRangeStep","getXYRangeStep","rangeWithExplicit","noRangeStep","supportedByScaleType","channelIncompatability","parseScheme","fromName","rangeMin","sizeRangeMin","rangeMax","maxBandSize","minXYRangeStep","maxSize","pointStep","MAX_SIZE_RANGE_STEP_RATIO","sizeRangeMax","rMax","range_interpolateRange","defaultContinuousToDiscreteCount","defaultRange","parseRangeForChannel","binSignal","updatedName","binCount","isExtendedScheme","parseScaleProperty","specifiedValue","sType","copyKeyFromObject","scalePadding","scalePaddingInner","properties_bins","properties_interpolate","properties_nice","barConfig","continuousPadding","properties_padding","paddingValue","bandPaddingInner","properties_paddingInner","paddingInnerValue","bandPaddingOuter","barBandPaddingOuter","rectBandPaddingOuter","properties_paddingOuter","properties_reverse","properties_zero","getDefaultValue","parseUnitScaleProperty","parseNonUnitScaleProperty","properties_parseScaleRange","valueWithExplicit","type_scaleType","type_defaultType","parseScaleCore","scaleComponents","parseUnitScaleCore","scaleTypeWithExplicitIndex","explicitScaleType","childScaleType","scaleTypeTieBreaker","childScale","renameScale","parseNonUnitScaleCore","NameMap","nameMap","oldName","model_Model","parentGivenName","correctDataNames","scaleNameMap","projectionNameMap","signalNameMap","specType","compositionConfig","spacingConfig","extractCompositionLayout","outputNodeRefCounts","parseLayoutSize","renameTopLevelLayoutSizeSignal","parseSelections","parseAxesAndHeaders","parseLegends","parseMarkGroup","parseScales","baseView","isTopLevel","encodeEntry","assembleEncodeFromView","headerComponentIndex","headerComponent","assembleLayoutTitleBand","assembleDefaultLayout","headerMarks","axisComponents","assembleAxes","titleNoEncoding","assembleSignals","assembleLayout","assembleHeaderMarks","assembleMarks","assembleScales","hasDescendantWithFieldOnChannel","fullName","oldSignalName","originalScaleName","localScaleComponent","variableName","origName","model_ModelWithField","getMapping","filterinvalid_FilterInvalidNode","vegaFilters","flatten_FlattenTransformNode","flatten","fold_FoldTransformNode","specifiedAs","fold","geojson_GeoJSONNode","geoJsonCounter","pair","geopoint_GeoPointNode","graticule_GraticuleNode","identifier_IdentifierNode","barPosition","sizeDef","isBarLength","bar_defaultSizeRef","defaultPosRef","centerChannel","centeredPointPositionWithSize","markPropOrConfig","discreteBandSize","point_encodeEntry","fixedShape","shapeMixins","rectPosition","defaultSize","vgSizeChannel","bandSize","markCompiler","vgMark","postEncodingTransform","shapeDef","text_align","text_baseline","vgThicknessChannel","parseMarkGroups","details","pathGroupingFields","pathMarks","getMarkGroups","fromPrefix","FACETED_PATH_PREFIX","parsePathMark","xScale","yScale","scaleClip","projectionClip","dimensionChannelDef","mark_getSort","impute_ImputeNode","imputeTransform","imputedChannel","keyChannel","groupbyFields","initialImpute","processSequence","setImputedField","data_AncestorParse","lookup_LookupNode","secondary","fromSource","findSource","fromOutputName","fromOutputNode","foreign","asName","sample_SampleTransformNode","sequence_SequenceNode","makeWalkTree","datasetIndex","walkTree","dataSource","assembleFormatParse","assembleTransforms","assemble","parseFacetHeader","makeHeaderComponent","mergeChildAxis","axisComponent","mainAxis","parseLayerLayoutSize","parseChildrenLayoutSize","layoutSizeCmpt","parseNonUnitLayoutSizeForChannel","parseRepeatLayoutSize","SIZE_TYPE_TO_MERGE","mergedSize","childSize","scaleResolve","defaultUnitSize","replaceRepeat","replaceRepeaterInFieldDef","isSortableFieldDef","replaceRepeaterInChannelDef","replaceRepeater","facetSortFieldName","facet_FacetModel","buildModel","replaceRepeaterInFacet","initFacet","normalizedFacet","parse_parseData","parseFacetHeaders","assembleSelectionTopLevelSignals","assembleSelectionData","layoutMixins","layoutHeaderComponent","bandType","columnDistinctSignal","getHeaderLayoutMixins","assembleGroup","facetRoot","getCardinalityAggregateForChild","outputName","ORTHOGONAL_ORIENT","assembleFacetData","assembleGroupEncodeEntry","assembleGroupStyle","assembleFacet","facetSortFields","facetSortOrder","assembleFacetSignals","otherData","hasName","existingSource","parseRoot","parentIsLayer","makeFromEncoding","lookupCounter","transformNode","derivedType","makeImplicitFromFilterTransform","makeFromTransform","make","parseTransformArray","makeImplicitFromEncoding","parseAll","parseAllForSortIndex","rawName","mainName","facetName","makeJoinAggregateFromFacet","baseconcat_BaseConcatModel","db","concat_ConcatModel","concatType","getChildren","sizeTypeToMerge","parseConcatLayoutSize","component_AxisComponent","OPPOSITE_ORIENT","mergeAxisComponents","mergedAxisCmpts","childAxisCmpts","mergeAxisComponent","getFieldDefTitle","parseAxis","specifiedAxis","properties_labelAngle","gridChannel","defaultGrid","defaultLabelFlush","defaultLabelOverlap","defaultTickCount","properties_values","parse_getProperty","parse_isExplicit","axisEncoding","axisEncodingPart","specifiedLabelsSpec","axis_encode_labels","normalizeMarkDef","specifiedOrient","xIsContinuous","yIsContinuous","xIsTemporal","yIsTemporal","init_orient","init_opacity","filledConfig","init_filled","init_cursor","unit_UnitModel","parentGivenSize","specifiedAxes","specifiedLegends","initSize","replaceRepeaterInEncoding","initScales","initAxes","initLegend","isGeoShapeMark","hasGeoPosition","_axis","axisSpec","_legend","supportLegend","layoutSizeComponent","parseUnitLayoutSize","selDefs","selCmpts","selectionConfig","parseUnitSelection","hasSelections","assembleTopLevelSignals","assembleUnitSelectionData","layer_LayerModel","axisCount","oppositeOrient","parseLayerAxes","assembleLayerSelectionMarks","repeat_RepeatModel","repeatValues","_initChildren","repeatValue","rowValue","columnValue","childRepeat","unitSize","isAnyConcatSpec","compile","inputSpec","newLogger","topLevelAutosize","configAutosize","isUnitOrLayer","normalizeAutoSize","firstPassCounter","secondPassCounter","optimizeDataflow","topLevelProperties","datasets","usermeta","vgConfig","sourceIndex","newData","whereTo","assembleRootData","layoutSignals","$schema","assembleTopLevelModel","topLevelSpec","getTopLevelProperties","extractor","oldTransforms","extractTransforms","build_package","theme_excel","theme_ggplot2","theme_quartz","theme_vox","theme_dark","theme_fivethirtyeight","colorSchemes","category-6","fire-7","fireandice-6","ice-7","theme_latimes","fontColor","build_style","EL_ID","DEFAULT_OPTIONS","offsetX","offsetY","styleId","theme","disableDefaultStyle","maxDepth","formatValue_rest","formatValue_stringify","build_Handler_Handler","elementId","tooltip_handler","getElementById","createDefaultStyle","valueToHtml","formatValue_formatValue","tooltipBox","calculatePosition","post","editor","open","listen","postMessage","src_style","util_deepMerge_","util_mergeDeep","vl","guessMode","embed_embed","vega_namespaceObject","build_src_namespaceObject","I18N","CLICK_TO_VIEW_ACTIONS","COMPILED_ACTION","EDITOR_ACTION","PNG_ACTION","SOURCE_ACTION","SVG_ACTION","NAMES","vega-lite","VERSION","PREPROCESSOR","vgjson","vljson","SVG_CIRCLES","viewSource","sourceHeader","sourceFooter","footer","win","providedMode","vega_schema_url_parser_default","_arguments","onBeforeParse","actions","png","compiled","i18n","Warn","downloadFileName","defaultStyle","ID","innerText","build_namespaceObject","vgSpec","patchString","runtime","updateSet","wrapper","dn","ctrl","i18nExportAction","json_stringify_pretty_compact_default","editorUrl","fulfilled","rejected","_instanceof","nativeMap","nativeSet","nativePromise","circular","includeNonEnumerable","allParents","allChildren","useBuffer","_clone","__isArray","__isRegExp","__getRegExpFlags","__isDate","getTime","getPrototypeOf","keyChild","valueChild","entryChild","attrs","getOwnPropertyDescriptor","descriptor","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","ignoreCase","multiline","clonePrototype","keyList","hasProp","arrA","arrB","dateA","dateB","regexpA","regexpB","vega_embed_1","__importDefault","vega_embed_2","showError","vegaEmbed","output_area","imgIndex","imageIndex","jsIndex","javascriptIndex","__assign","credentials","imageData","image/png","jupyter-vega","output_type","VegaWidgetDef","DOMWidgetView","_this","viewElement","errorElement","reembed","applyUpdate","__awaiter","newValues","changeSet","sent","ev","checkWidgetUpdate","_i","applyUpdates","VegaWidget","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","nextTick","browser","argv","addListener","once","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt"],"mappings":"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YAAA,OACA61B,cAAA,OACA91B,YAAA,OACAjzJ,OAAA,OACA2vF,WAAA,OACAugE,WAAA,OACAoD,WAAA,OACAnD,cAAA,OACA64B,WAAA,OACAtP,WAAA,OACAuP,WAAA,OACAC,iBAAA,OACAvP,UAAA,OACAC,cAAA,OACAE,gBAAA,OACAtxB,WAAA,OACAuxB,aAAA,OACA9lB,aAAA,OACAV,aAAA,OACAvhF,OAAA,OACAI,UAAA,OACAD,UAAA,OACAzgE,OAAA,OACAwgE,SAAA,OACAshF,UAAA,OACA21B,UAAA,OACA11B,WAAA,OACA21B,YAAA,OACA11B,UAAA,OACA1pH,MAAA,OACA6lH,SAAA,OACAx9E,MAAA,OACAooG,WAAA,OACA4O,WAAA,OACA3O,cAAA,OACAC,WAAA,OACAC,UAAA,OACAC,cAAA,OACAE,gBAAA,OACA1mB,WAAA,OACA2mB,aAAA,OACA1oG,aAAA,OACAg3G,OAAA,OACAC,OAAA,OACA51B,UAAA,OACA19D,UAAA,OACAnqE,OAAA,OACAjzB,MAAA,OACA8iE,OAAA,QAEA6tH,GAAA,CACA1rH,OAAA,EACAk1F,aAAA,EACAj7J,OAAA,EACAm7J,YAAA,EACAu2B,WAAA,EACAC,iBAAA,EACAX,cAAA,EACA91B,YAAA,EACAjzJ,OAAA,EACA2vF,WAAA,EACA5d,KAAA,EACAshF,UAAA,EACAw1B,SAAA,EACAc,eAAA,EACAb,YAAA,EACA11B,UAAA,EACAlD,WAAA,EACAoD,WAAA,EACAnD,cAAA,EACA64B,WAAA,EACAtP,WAAA,EACAuP,WAAA,EACAC,iBAAA,EACAvP,UAAA,EACAC,cAAA,EACAC,eAAA,EACAC,gBAAA,EACAtxB,WAAA,EACAuxB,aAAA,EACA9lB,aAAA,EACAV,aAAA,EACAvhF,OAAA,EACAgoG,gBAAA,EACA5nG,UAAA,EACAD,UAAA,EACAzgE,OAAA,EACAwgE,SAAA,EACAshF,UAAA,EACAv9D,UAAA,EACA2zF,SAAA,EACAC,eAAA,EACAV,UAAA,EACAr7B,YAAA,EACA2F,WAAA,EACA21B,YAAA,EACA11B,UAAA,EACA1pH,MAAA,E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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","export default function(fn, fields, name) {\n fn.fields = fields || [];\n fn.fname = name;\n return fn;\n}\n\nexport function accessorName(fn) {\n return fn == null ? null : fn.fname;\n}\n\nexport function accessorFields(fn) {\n return fn == null ? null : fn.fields;\n}\n","export default function(message) {\n throw Error(message);\n}\n","import error from './error';\n\nexport default function(p) {\n var path = [],\n q = null,\n b = 0,\n n = p.length,\n s = '',\n i, j, c;\n\n p = p + '';\n\n function push() {\n path.push(s + p.substring(i, j));\n s = '';\n i = j + 1;\n }\n\n for (i=j=0; j<n; ++j) {\n c = p[j];\n if (c === '\\\\') {\n s += p.substring(i, j);\n i = ++j;\n } else if (c === q) {\n push();\n q = null;\n b = -1;\n } else if (q) {\n continue;\n } else if (i === b && c === '\"') {\n i = j + 1;\n q = c;\n } else if (i === b && c === \"'\") {\n i = j + 1;\n q = c;\n } else if (c === '.' && !b) {\n if (j > i) {\n push();\n } else {\n i = j + 1;\n }\n } else if (c === '[') {\n if (j > i) push();\n b = i = j + 1;\n } else if (c === ']') {\n if (!b) error('Access path missing open bracket: ' + p);\n if (b > 0) push();\n b = 0;\n i = j + 1;\n }\n }\n\n if (b) error('Access path missing closing bracket: ' + p);\n if (q) error('Access path missing closing quote: ' + p);\n\n if (j > i) {\n j++;\n push();\n }\n\n return path;\n}\n","export default Array.isArray;\n","export default function(_) {\n return _ === Object(_);\n}\n","export default function(_) {\n return typeof _ === 'string';\n}\n","import isArray from './isArray';\nimport isObject from './isObject';\nimport isString from './isString';\n\nexport default function $(x) {\n return isArray(x) ? '[' + x.map($) + ']'\n : isObject(x) || isString(x) ?\n // Output valid JSON and JS source strings.\n // See http://timelessrepo.com/json-isnt-a-javascript-subset\n JSON.stringify(x).replace('\\u2028','\\\\u2028').replace('\\u2029', '\\\\u2029')\n : x;\n}\n","import accessor from './accessor';\nimport splitAccessPath from './splitAccessPath';\nimport stringValue from './stringValue';\n\nexport default function(field, name) {\n var path = splitAccessPath(field),\n code = 'return _[' + path.map(stringValue).join('][') + '];';\n\n return accessor(\n Function('_', code),\n [(field = path.length===1 ? path[0] : field)],\n name || field\n );\n}\n","import accessor from './accessor';\nimport field from './field';\n\nvar empty = [];\n\nexport var id = field('id');\n\nexport var identity = accessor(function(_) { return _; }, empty, 'identity');\n\nexport var zero = accessor(function() { return 0; }, empty, 'zero');\n\nexport var one = accessor(function() { return 1; }, empty, 'one');\n\nexport var truthy = accessor(function() { return true; }, empty, 'true');\n\nexport var falsy = accessor(function() { return false; }, empty, 'false');\n","function log(method, level, input) {\n var msg = [level].concat([].slice.call(input));\n console[method](...msg); // eslint-disable-line no-console\n}\n\nexport var None = 0;\nexport var Error = 1;\nexport var Warn = 2;\nexport var Info = 3;\nexport var Debug = 4;\n\nexport default function(_, method) {\n var level = _ || None;\n return {\n level: function(_) {\n if (arguments.length) {\n level = +_;\n return this;\n } else {\n return level;\n }\n },\n error: function() {\n if (level >= Error) log(method || 'error', 'ERROR', arguments);\n return this;\n },\n warn: function() {\n if (level >= Warn) log(method || 'warn', 'WARN', arguments);\n return this;\n },\n info: function() {\n if (level >= Info) log(method || 'log', 'INFO', arguments);\n return this;\n },\n debug: function() {\n if (level >= Debug) log(method || 'log', 'DEBUG', arguments);\n return this;\n }\n }\n}\n","export default function(array) {\n return array[array.length - 1];\n}\n","export default function(_) {\n return _ == null || _ === '' ? null : +_;\n}\n","import {identity} from './accessors';\nimport peek from './peek';\nimport toNumber from './toNumber';\n\nfunction exp(sign) {\n return function(x) { return sign * Math.exp(x); };\n}\n\nfunction log(sign) {\n return function(x) { return Math.log(sign * x); };\n}\n\nfunction symlog(c) {\n return function(x) { return Math.sign(x) * Math.log1p(Math.abs(x / c)); };\n}\n\nfunction symexp(c) {\n return function(x) { return Math.sign(x) * Math.expm1(Math.abs(x)) * c; };\n}\n\nfunction pow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction pan(domain, delta, lift, ground) {\n var d0 = lift(domain[0]),\n d1 = lift(peek(domain)),\n dd = (d1 - d0) * delta;\n\n return [\n ground(d0 - dd),\n ground(d1 - dd)\n ];\n}\n\nexport function panLinear(domain, delta) {\n return pan(domain, delta, toNumber, identity);\n}\n\nexport function panLog(domain, delta) {\n var sign = Math.sign(domain[0]);\n return pan(domain, delta, log(sign), exp(sign));\n}\n\nexport function panPow(domain, delta, exponent) {\n return pan(domain, delta, pow(exponent), pow(1/exponent));\n}\n\nexport function panSymlog(domain, delta, constant) {\n return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n var d0 = lift(domain[0]),\n d1 = lift(peek(domain)),\n da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n\n return [\n ground(da + (d0 - da) * scale),\n ground(da + (d1 - da) * scale)\n ];\n}\n\nexport function zoomLinear(domain, anchor, scale) {\n return zoom(domain, anchor, scale, toNumber, identity);\n}\n\nexport function zoomLog(domain, anchor, scale) {\n var sign = Math.sign(domain[0]);\n return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\n\nexport function zoomPow(domain, anchor, scale, exponent) {\n return zoom(domain, anchor, scale, pow(exponent), pow(1/exponent));\n}\n\nexport function zoomSymlog(domain, anchor, scale, constant) {\n return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n","export function quarter(date) {\n return 1 + ~~(new Date(date).getMonth() / 3);\n}\n\nexport function utcquarter(date) {\n return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n","import isArray from './isArray';\n\nexport default function(_) {\n return _ != null ? (isArray(_) ? _ : [_]) : [];\n}\n","/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nexport default function(range, min, max) {\n var lo = range[0],\n hi = range[1],\n span;\n\n if (hi < lo) {\n span = hi;\n hi = lo;\n lo = span;\n }\n span = hi - lo;\n\n return span >= (max - min)\n ? [min, max]\n : [\n (lo = Math.min(Math.max(lo, min), max - span)),\n lo + span\n ];\n}\n","export default function(_) {\n return typeof _ === 'function';\n}\n","import {default as accessor, accessorFields} from './accessor';\nimport array from './array';\nimport isFunction from './isFunction';\nimport splitAccessPath from './splitAccessPath';\nimport stringValue from './stringValue';\n\nexport default function(fields, orders) {\n var idx = [],\n cmp = (fields = array(fields)).map(function(f, i) {\n if (f == null) {\n return null;\n } else {\n idx.push(i);\n return isFunction(f) ? f\n : splitAccessPath(f).map(stringValue).join('][');\n }\n }),\n n = idx.length - 1,\n ord = array(orders),\n code = 'var u,v;return ',\n i, j, f, u, v, d, t, lt, gt;\n\n if (n < 0) return null;\n\n for (j=0; j<=n; ++j) {\n i = idx[j];\n f = cmp[i];\n\n if (isFunction(f)) {\n d = 'f' + i;\n u = '(u=this.' + d + '(a))';\n v = '(v=this.' + d + '(b))';\n (t = t || {})[d] = f;\n } else {\n u = '(u=a['+f+'])';\n v = '(v=b['+f+'])';\n }\n\n d = '((v=v instanceof Date?+v:v),(u=u instanceof Date?+u:u))';\n\n if (ord[i] !== 'descending') {\n gt = 1;\n lt = -1;\n } else {\n gt = -1;\n lt = 1;\n }\n\n code += '(' + u+'<'+v+'||u==null)&&v!=null?' + lt\n + ':(u>v||v==null)&&u!=null?' + gt\n + ':'+d+'!==u&&v===v?' + lt\n + ':v!==v&&u===u?' + gt\n + (i < n ? ':' : ':0');\n }\n\n f = Function('a', 'b', code + ';');\n if (t) f = f.bind(t);\n\n fields = fields.reduce(function(map, field) {\n if (isFunction(field)) {\n (accessorFields(field) || []).forEach(function(_) { map[_] = 1; });\n } else if (field != null) {\n map[field + ''] = 1;\n }\n return map;\n }, {});\n\n return accessor(f, Object.keys(fields));\n}\n","import isFunction from './isFunction';\n\nexport default function(_) {\n return isFunction(_) ? _ : function() { return _; };\n}\n","export default function(delay, handler) {\n var tid, evt;\n\n function callback() {\n handler(evt);\n tid = evt = null;\n }\n\n return function(e) {\n evt = e;\n if (tid) clearTimeout(tid);\n tid = setTimeout(callback, delay);\n };\n}\n","export default function(_) {\n for (var x, k, i=1, len=arguments.length; i<len; ++i) {\n x = arguments[i];\n for (k in x) { _[k] = x[k]; }\n }\n return _;\n}\n","/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nexport default function(array, f) {\n var i = 0, n, v, min, max;\n\n if (array && (n = array.length)) {\n if (f == null) {\n // find first valid value\n for (v = array[i]; v == null || v !== v; v = array[++i]);\n min = max = v;\n\n // visit all other values\n for (; i<n; ++i) {\n v = array[i];\n // skip null/undefined; NaN will fail all comparisons\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n } else {\n // find first valid value\n for (v = f(array[i]); v == null || v !== v; v = f(array[++i]));\n min = max = v;\n\n // visit all other values\n for (; i<n; ++i) {\n v = f(array[i]);\n // skip null/undefined; NaN will fail all comparisons\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n }\n }\n\n return [min, max];\n}\n","export default function(array, f) {\n var i = -1,\n n = array.length,\n a, b, c, u, v;\n\n if (f == null) {\n while (++i < n) {\n b = array[i];\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n u = v = i;\n while (++i < n) {\n b = array[i];\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n } else {\n while (++i < n) {\n b = f(array[i], i, array);\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n u = v = i;\n while (++i < n) {\n b = f(array[i], i, array);\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n }\n\n return [u, v];\n}\n","var NULL = {};\n\nexport default function(input) {\n var obj = {},\n map,\n test;\n\n function has(key) {\n return obj.hasOwnProperty(key) && obj[key] !== NULL;\n }\n\n map = {\n size: 0,\n empty: 0,\n object: obj,\n has: has,\n get: function(key) {\n return has(key) ? obj[key] : undefined;\n },\n set: function(key, value) {\n if (!has(key)) {\n ++map.size;\n if (obj[key] === NULL) --map.empty;\n }\n obj[key] = value;\n return this;\n },\n delete: function(key) {\n if (has(key)) {\n --map.size;\n ++map.empty;\n obj[key] = NULL;\n }\n return this;\n },\n clear: function() {\n map.size = map.empty = 0;\n map.object = obj = {};\n },\n test: function(_) {\n if (arguments.length) {\n test = _;\n return map;\n } else {\n return test;\n }\n },\n clean: function() {\n var next = {},\n size = 0,\n key, value;\n for (key in obj) {\n value = obj[key];\n if (value !== NULL && (!test || !test(value))) {\n next[key] = value;\n ++size;\n }\n }\n map.size = size;\n map.empty = 0;\n map.object = (obj = next);\n }\n };\n\n if (input) Object.keys(input).forEach(function(key) {\n map.set(key, input[key]);\n });\n\n return map;\n}\n","import peek from './peek';\n\nexport default function(range, value, threshold, left, right, center) {\n if (!threshold && threshold !== 0) return center;\n\n var a = range[0],\n b = peek(range),\n t = +threshold,\n l, r;\n\n // swap endpoints if range is reversed\n if (b < a) {\n l = a; a = b; b = l;\n }\n\n // compare value to endpoints\n l = Math.abs(value - a);\n r = Math.abs(b - value);\n\n // adjust if value is within threshold distance of endpoint\n return l < r && l <= t ? left : r <= t ? right : center;\n}\n","export default function(child, parent) {\n var proto = (child.prototype = Object.create(parent.prototype));\n proto.constructor = child;\n return proto;\n}\n","/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nexport default function(value, range, left, right) {\n var r0 = range[0], r1 = range[range.length-1], t;\n if (r0 > r1) {\n t = r0;\n r0 = r1;\n r1 = t;\n }\n left = left === undefined || left;\n right = right === undefined || right;\n\n return (left ? r0 <= value : r0 < value) &&\n (right ? value <= r1 : value < r1);\n}\n","export default function(_) {\n return typeof _ === 'boolean';\n}\n","export default function(_) {\n return Object.prototype.toString.call(_) === '[object Date]';\n}\n","export default function(_) {\n return typeof _ === 'number';\n}\n","export default function(_) {\n return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n","import accessor from './accessor';\nimport array from './array';\nimport splitAccessPath from './splitAccessPath';\nimport stringValue from './stringValue';\n\nexport default function(fields, flat) {\n if (fields) {\n fields = flat\n ? array(fields).map(function(f) { return f.replace(/\\\\(.)/g, '$1'); })\n : array(fields);\n }\n\n var fn = !(fields && fields.length)\n ? function() { return ''; }\n : Function('_', 'return \\'\\'+' +\n fields.map(function(f) {\n return '_[' + (flat\n ? stringValue(f)\n : splitAccessPath(f).map(stringValue).join('][')\n ) + ']';\n }).join('+\\'|\\'+') + ';');\n\n return accessor(fn, fields, 'key');\n}\n","import peek from './peek';\n\nexport default function(array, frac) {\n const lo = array[0],\n hi = peek(array),\n f = +frac;\n return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n","export default function(compare, array0, array1, output) {\n var n0 = array0.length,\n n1 = array1.length;\n\n if (!n1) return array0;\n if (!n0) return array1;\n\n var merged = output || new array0.constructor(n0 + n1),\n i0 = 0, i1 = 0, i = 0;\n\n for (; i0<n0 && i1<n1; ++i) {\n merged[i] = compare(array0[i0], array1[i1]) > 0\n ? array1[i1++]\n : array0[i0++];\n }\n\n for (; i0<n0; ++i0, ++i) {\n merged[i] = array0[i0];\n }\n\n for (; i1<n1; ++i1, ++i) {\n merged[i] = array1[i1];\n }\n\n return merged;\n}\n","export default function(str, reps) {\n var s = '';\n while (--reps >= 0) s += str;\n return s;\n}\n","import repeat from './repeat';\n\nexport default function(str, length, padchar, align) {\n var c = padchar || ' ',\n s = str + '',\n n = length - s.length;\n\n return n <= 0 ? s\n : align === 'left' ? repeat(c, n) + s\n : align === 'center' ? repeat(c, ~~(n/2)) + s + repeat(c, Math.ceil(n/2))\n : s + repeat(c, n);\n}\n","import peek from './peek';\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\nexport default function(array) {\n return (peek(array) - array[0]) || 0;\n}\n","export default function(_) {\n return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n","import isDate from './isDate';\nimport isNumber from './isNumber';\n\nfunction defaultParser(_) {\n return isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n}\n\nexport default function(_, parser) {\n parser = parser || defaultParser;\n return _ == null || _ === '' ? null : parser(_);\n}\n","export default function(_) {\n return _ == null || _ === '' ? null : _ + '';\n}\n","export default function(_) {\n for (var s={}, i=0, n=_.length; i<n; ++i) s[_[i]] = true;\n return s;\n}\n","export default function(str, length, align, ellipsis) {\n var e = ellipsis != null ? ellipsis : '\\u2026',\n s = str + '',\n n = s.length,\n l = Math.max(0, length - e.length);\n\n return n <= length ? s\n : align === 'left' ? e + s.slice(n - l)\n : align === 'center' ? s.slice(0, Math.ceil(l/2)) + e + s.slice(n - ~~(l/2))\n : s.slice(0, l) + e;\n}\n","export default function(array, filter, visitor) {\n if (array) {\n var i = 0, n = array.length, t;\n if (filter) {\n for (; i<n; ++i) {\n if (t = filter(array[i])) visitor(t, i, array);\n }\n } else {\n array.forEach(visitor);\n }\n }\n}\n","export {\n default as accessor,\n accessorName,\n accessorFields\n} from './src/accessor';\n\nexport {\n id,\n identity,\n zero,\n one,\n truthy,\n falsy\n} from './src/accessors';\n\nexport {\n default as logger,\n None,\n Error,\n Warn,\n Info,\n Debug\n} from './src/logger';\n\nexport {\n panLinear,\n panLog,\n panPow,\n panSymlog,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog\n} from './src/transform';\n\nexport {\n quarter,\n utcquarter\n} from './src/quarter';\n\nexport {default as array} from './src/array';\nexport {default as clampRange} from './src/clampRange';\nexport {default as compare} from './src/compare';\nexport {default as constant} from './src/constant';\nexport {default as debounce} from './src/debounce';\nexport {default as error} from './src/error';\nexport {default as extend} from './src/extend';\nexport {default as extent} from './src/extent';\nexport {default as extentIndex} from './src/extentIndex';\nexport {default as fastmap} from './src/fastmap';\nexport {default as field} from './src/field';\nexport {default as flush} from './src/flush';\nexport {default as inherits} from './src/inherits';\nexport {default as inrange} from './src/inrange';\nexport {default as isArray} from './src/isArray';\nexport {default as isBoolean} from './src/isBoolean';\nexport {default as isDate} from './src/isDate';\nexport {default as isFunction} from './src/isFunction';\nexport {default as isNumber} from './src/isNumber';\nexport {default as isObject} from './src/isObject';\nexport {default as isRegExp} from './src/isRegExp';\nexport {default as isString} from './src/isString';\nexport {default as key} from './src/key';\nexport {default as lerp} from './src/lerp';\nexport {default as merge} from './src/merge';\nexport {default as pad} from './src/pad';\nexport {default as peek} from './src/peek';\nexport {default as repeat} from './src/repeat';\nexport {default as span} from './src/span';\nexport {default as splitAccessPath} from './src/splitAccessPath';\nexport {default as stringValue} from './src/stringValue';\nexport {default as toBoolean} from './src/toBoolean';\nexport {default as toDate} from './src/toDate';\nexport {default as toNumber} from './src/toNumber';\nexport {default as toString} from './src/toString';\nexport {default as toSet} from './src/toSet';\nexport {default as truncate} from './src/truncate';\nexport {default as visitArray} from './src/visitArray';\n","import {field, identity, isFunction, isObject} from 'vega-util';\n\nfunction isBuffer(_) {\n return (typeof Buffer === 'function' && isFunction(Buffer.isBuffer))\n ? Buffer.isBuffer(_) : false;\n}\n\nexport default function json(data, format) {\n const prop = (format && format.property) ? field(format.property) : identity;\n return isObject(data) && !isBuffer(data)\n ? parseJSON(prop(data))\n : prop(JSON.parse(data));\n}\n\njson.responseType = 'json';\n\nfunction parseJSON(data, format) {\n return (format && format.copy)\n ? JSON.parse(JSON.stringify(data))\n : data;\n}\n","\"use strict\";\n\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\nmodule.exports = function stringify(passedObj, options) {\n var indent, maxLength, replacer;\n\n options = options || {};\n indent = JSON.stringify(\n [1],\n undefined,\n options.indent === undefined ? 2 : options.indent\n ).slice(2, -3);\n maxLength =\n indent === \"\"\n ? Infinity\n : options.maxLength === undefined\n ? 80\n : options.maxLength;\n replacer = options.replacer;\n\n return (function _stringify(obj, currentIndent, reserved) {\n // prettier-ignore\n var end, index, items, key, keyPart, keys, length, nextIndent, prettified, start, string, value;\n\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n\n string = JSON.stringify(obj, replacer);\n\n if (string === undefined) {\n return string;\n }\n\n length = maxLength - currentIndent.length - reserved;\n\n if (string.length <= length) {\n prettified = string.replace(stringOrChar, function(match, stringLiteral) {\n return stringLiteral || match + \" \";\n });\n if (prettified.length <= length) {\n return prettified;\n }\n }\n\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n\n if (typeof obj === \"object\" && obj !== null) {\n nextIndent = currentIndent + indent;\n items = [];\n index = 0;\n\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n length = obj.length;\n for (; index < length; index++) {\n items.push(\n _stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) ||\n \"null\"\n );\n }\n } else {\n start = \"{\";\n end = \"}\";\n keys = Object.keys(obj);\n length = keys.length;\n for (; index < length; index++) {\n key = keys[index];\n keyPart = JSON.stringify(key) + \": \";\n value = _stringify(\n obj[key],\n nextIndent,\n keyPart.length + (index === length - 1 ? 0 : 1)\n );\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n\n if (items.length > 0) {\n return [start, indent + items.join(\",\\n\" + nextIndent), end].join(\n \"\\n\" + currentIndent\n );\n }\n }\n\n return string;\n })(passedObj, \"\", 0);\n};\n","'use strict';\n\nmodule.exports = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n\n if (node === null) return 'null';\n\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n })(data);\n};\n","exports = module.exports = SemVer\n\nvar debug\n/* istanbul ignore next */\nif (typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n args.unshift('SEMVER')\n console.log.apply(console, args)\n }\n} else {\n debug = function () {}\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0'\n\nvar MAX_LENGTH = 256\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16\n\n// The actual regexps go on exports.re\nvar re = exports.re = []\nvar src = exports.src = []\nvar R = 0\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\nvar NUMERICIDENTIFIER = R++\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*'\nvar NUMERICIDENTIFIERLOOSE = R++\nsrc[NUMERICIDENTIFIERLOOSE] = '[0-9]+'\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\nvar NONNUMERICIDENTIFIER = R++\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*'\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\nvar MAINVERSION = R++\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')'\n\nvar MAINVERSIONLOOSE = R++\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')'\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\nvar PRERELEASEIDENTIFIER = R++\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +\n '|' + src[NONNUMERICIDENTIFIER] + ')'\n\nvar PRERELEASEIDENTIFIERLOOSE = R++\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +\n '|' + src[NONNUMERICIDENTIFIER] + ')'\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\nvar PRERELEASE = R++\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))'\n\nvar PRERELEASELOOSE = R++\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\nvar BUILDIDENTIFIER = R++\nsrc[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\nvar BUILD = R++\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] +\n '(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))'\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\nvar FULL = R++\nvar FULLPLAIN = 'v?' + src[MAINVERSION] +\n src[PRERELEASE] + '?' +\n src[BUILD] + '?'\n\nsrc[FULL] = '^' + FULLPLAIN + '$'\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\nvar LOOSEPLAIN = '[v=\\\\s]*' + src[MAINVERSIONLOOSE] +\n src[PRERELEASELOOSE] + '?' +\n src[BUILD] + '?'\n\nvar LOOSE = R++\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$'\n\nvar GTLT = R++\nsrc[GTLT] = '((?:<|>)?=?)'\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\nvar XRANGEIDENTIFIERLOOSE = R++\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*'\nvar XRANGEIDENTIFIER = R++\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*'\n\nvar XRANGEPLAIN = R++\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:' + src[PRERELEASE] + ')?' +\n src[BUILD] + '?' +\n ')?)?'\n\nvar XRANGEPLAINLOOSE = R++\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[PRERELEASELOOSE] + ')?' +\n src[BUILD] + '?' +\n ')?)?'\n\nvar XRANGE = R++\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$'\nvar XRANGELOOSE = R++\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$'\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\nvar COERCE = R++\nsrc[COERCE] = '(?:^|[^\\\\d])' +\n '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:$|[^\\\\d])'\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\nvar LONETILDE = R++\nsrc[LONETILDE] = '(?:~>?)'\n\nvar TILDETRIM = R++\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+'\nre[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')\nvar tildeTrimReplace = '$1~'\n\nvar TILDE = R++\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'\nvar TILDELOOSE = R++\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\nvar LONECARET = R++\nsrc[LONECARET] = '(?:\\\\^)'\n\nvar CARETTRIM = R++\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+'\nre[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')\nvar caretTrimReplace = '$1^'\n\nvar CARET = R++\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'\nvar CARETLOOSE = R++\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\nvar COMPARATORLOOSE = R++\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$'\nvar COMPARATOR = R++\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$'\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\nvar COMPARATORTRIM = R++\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] +\n '\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'\n\n// this one has to use the /g flag\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')\nvar comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\nvar HYPHENRANGE = R++\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAIN] + ')' +\n '\\\\s*$'\n\nvar HYPHENRANGELOOSE = R++\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$'\n\n// Star ranges basically just allow anything at all.\nvar STAR = R++\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*'\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i])\n if (!re[i]) {\n re[i] = new RegExp(src[i])\n }\n}\n\nexports.parse = parse\nfunction parse (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n var r = options.loose ? re[LOOSE] : re[FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nexports.valid = valid\nfunction valid (version, options) {\n var v = parse(version, options)\n return v ? v.version : null\n}\n\nexports.clean = clean\nfunction clean (version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\n\nexports.SemVer = SemVer\n\nfunction SemVer (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n }\n\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options)\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n\n var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])\n\n if (!m) {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n}\n\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.')\n }\n return this.version\n}\n\nSemVer.prototype.toString = function () {\n return this.version\n}\n\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return this.compareMain(other) || this.comparePre(other)\n}\n\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n}\n\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n var i = 0\n do {\n var a = this.prerelease[i]\n var b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\nSemVer.prototype.compareBuild = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n var i = 0\n do {\n var a = this.build[i]\n var b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n var i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error('invalid increment argument: ' + release)\n }\n this.format()\n this.raw = this.version\n return this\n}\n\nexports.inc = inc\nfunction inc (version, release, loose, identifier) {\n if (typeof (loose) === 'string') {\n identifier = loose\n loose = undefined\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\n\nexports.diff = diff\nfunction diff (version1, version2) {\n if (eq(version1, version2)) {\n return null\n } else {\n var v1 = parse(version1)\n var v2 = parse(version2)\n var prefix = ''\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre'\n var defaultResult = 'prerelease'\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers\n\nvar numeric = /^[0-9]+$/\nfunction compareIdentifiers (a, b) {\n var anum = numeric.test(a)\n var bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers\nfunction rcompareIdentifiers (a, b) {\n return compareIdentifiers(b, a)\n}\n\nexports.major = major\nfunction major (a, loose) {\n return new SemVer(a, loose).major\n}\n\nexports.minor = minor\nfunction minor (a, loose) {\n return new SemVer(a, loose).minor\n}\n\nexports.patch = patch\nfunction patch (a, loose) {\n return new SemVer(a, loose).patch\n}\n\nexports.compare = compare\nfunction compare (a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose))\n}\n\nexports.compareLoose = compareLoose\nfunction compareLoose (a, b) {\n return compare(a, b, true)\n}\n\nexports.compareBuild = compareBuild\nfunction compareBuild (a, b, loose) {\n var versionA = new SemVer(a, loose)\n var versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\n\nexports.rcompare = rcompare\nfunction rcompare (a, b, loose) {\n return compare(b, a, loose)\n}\n\nexports.sort = sort\nfunction sort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compareBuild(a, b, loose)\n })\n}\n\nexports.rsort = rsort\nfunction rsort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compareBuild(b, a, loose)\n })\n}\n\nexports.gt = gt\nfunction gt (a, b, loose) {\n return compare(a, b, loose) > 0\n}\n\nexports.lt = lt\nfunction lt (a, b, loose) {\n return compare(a, b, loose) < 0\n}\n\nexports.eq = eq\nfunction eq (a, b, loose) {\n return compare(a, b, loose) === 0\n}\n\nexports.neq = neq\nfunction neq (a, b, loose) {\n return compare(a, b, loose) !== 0\n}\n\nexports.gte = gte\nfunction gte (a, b, loose) {\n return compare(a, b, loose) >= 0\n}\n\nexports.lte = lte\nfunction lte (a, b, loose) {\n return compare(a, b, loose) <= 0\n}\n\nexports.cmp = cmp\nfunction cmp (a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError('Invalid operator: ' + op)\n }\n}\n\nexports.Comparator = Comparator\nfunction Comparator (comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options)\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n}\n\nvar ANY = {}\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]\n var m = comp.match(r)\n\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n}\n\nComparator.prototype.toString = function () {\n return this.value\n}\n\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n version = new SemVer(version, this.options)\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n}\n\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n var rangeTmp\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n rangeTmp = new Range(comp.value, options)\n return satisfies(this.value, rangeTmp, options)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n rangeTmp = new Range(this.value, options)\n return satisfies(comp.semver, rangeTmp, options)\n }\n\n var sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n var sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n var sameSemVer = this.semver.version === comp.semver.version\n var differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n var oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n ((this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<'))\n var oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n ((this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>'))\n\n return sameDirectionIncreasing || sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan || oppositeDirectionsGreaterThan\n}\n\nexports.Range = Range\nfunction Range (range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (range instanceof Range) {\n if (range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n return new Range(range.value, options)\n }\n\n if (!(this instanceof Range)) {\n return new Range(range, options)\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range.split(/\\s*\\|\\|\\s*/).map(function (range) {\n return this.parseRange(range.trim())\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length\n })\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + range)\n }\n\n this.format()\n}\n\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim()\n }).join('||').trim()\n return this.range\n}\n\nRange.prototype.toString = function () {\n return this.range\n}\n\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose\n range = range.trim()\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]\n range = range.replace(hr, hyphenReplace)\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options)\n }, this).join(' ').split(/\\s+/)\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe)\n })\n }\n set = set.map(function (comp) {\n return new Comparator(comp, this.options)\n }, this)\n\n return set\n}\n\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some(function (thisComparators) {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some(function (rangeComparators) {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every(function (thisComparator) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n}\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nfunction isSatisfiable (comparators, options) {\n var result = true\n var remainingComparators = comparators.slice()\n var testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every(function (otherComparator) {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators\nfunction toComparators (range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value\n }).join(' ').trim().split(' ')\n })\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator (comp, options) {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nfunction isX (id) {\n return !id || id.toLowerCase() === 'x' || id === '*'\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options)\n }).join(' ')\n}\n\nfunction replaceTilde (comp, options) {\n var r = options.loose ? re[TILDELOOSE] : re[TILDE]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options)\n }).join(' ')\n}\n\nfunction replaceCaret (comp, options) {\n debug('caret', comp, options)\n var r = options.loose ? re[CARETLOOSE] : re[CARET]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + (+M + 1) + '.0.0'\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0'\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nfunction replaceXRanges (comp, options) {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nfunction replaceXRange (comp, options) {\n comp = comp.trim()\n var r = options.loose ? re[XRANGELOOSE] : re[XRANGE]\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n var xM = isX(M)\n var xm = xM || isX(m)\n var xp = xm || isX(p)\n var anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n ret = gtlt + M + '.' + m + '.' + p\n } else if (xm) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars (comp, options) {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[STAR], '')\n}\n\n// This function is passed to string.replace(re[HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0'\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0'\n } else {\n from = '>=' + from\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0'\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0'\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr\n } else {\n to = '<=' + to\n }\n\n return (from + ' ' + to).trim()\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n version = new SemVer(version, this.options)\n }\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n}\n\nfunction testSet (set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n\nexports.satisfies = satisfies\nfunction satisfies (version, range, options) {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\n\nexports.maxSatisfying = maxSatisfying\nfunction maxSatisfying (versions, range, options) {\n var max = null\n var maxSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\n\nexports.minSatisfying = minSatisfying\nfunction minSatisfying (versions, range, options) {\n var min = null\n var minSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\n\nexports.minVersion = minVersion\nfunction minVersion (range, loose) {\n range = new Range(range, loose)\n\n var minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error('Unexpected operation: ' + comparator.operator)\n }\n })\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\n\nexports.validRange = validRange\nfunction validRange (range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr\nfunction ltr (version, range, options) {\n return outside(version, range, '<', options)\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr\nfunction gtr (version, range, options) {\n return outside(version, range, '>', options)\n}\n\nexports.outside = outside\nfunction outside (version, range, hilo, options) {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n var gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n var high = null\n var low = null\n\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nexports.prerelease = prerelease\nfunction prerelease (version, options) {\n var parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\n\nexports.intersects = intersects\nfunction intersects (r1, r2, options) {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\n\nexports.coerce = coerce\nfunction coerce (version, options) {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n var match = version.match(re[COERCE])\n\n if (match == null) {\n return null\n }\n\n return parse(match[1] +\n '.' + (match[2] || '0') +\n '.' + (match[3] || '0'), options)\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Parse a vega schema url into library and version.\n */\nfunction default_1(url) {\n var regex = /\\/schema\\/([\\w-]+)\\/([\\w\\.\\-]+)\\.json$/g;\n var _a = regex.exec(url).slice(1, 3), library = _a[0], version = _a[1];\n return { library: library, version: version };\n}\nexports.default = default_1;\n//# sourceMappingURL=index.js.map","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross(a)feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8__;","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","import {identity} from 'vega-util';\n\nexport default function UniqueList(idFunc) {\n var $ = idFunc || identity,\n list = [],\n ids = {};\n\n list.add = function(_) {\n var id = $(_);\n if (!ids[id]) {\n ids[id] = 1;\n list.push(_);\n }\n return list;\n };\n\n list.remove = function(_) {\n var id = $(_), idx;\n if (ids[id]) {\n ids[id] = 0;\n if ((idx = list.indexOf(_)) >= 0) {\n list.splice(idx, 1);\n }\n }\n return list;\n };\n\n return list;\n}\n","/**\n * Invoke and await a potentially async callback function. If\n * an error occurs, trap it and route to Dataflow.error.\n * @param {Dataflow} df - The dataflow instance\n * @param {function} callback - A callback function to invoke\n * and then await. The dataflow will be passed as the single\n * argument to the function.\n */\nexport default async function(df, callback) {\n try { await callback(df); } catch (err) { df.error(err); }\n}\n","var TUPLE_ID_KEY = Symbol('vega_id'),\n TUPLE_ID = 1;\n\n/**\n * Resets the internal tuple id counter to one.\n */\nexport function reset() {\n TUPLE_ID = 1;\n}\n\n/**\n * Checks if an input value is a registered tuple.\n * @param {*} t - The value to check.\n * @return {boolean} True if the input is a tuple, false otherwise.\n */\nexport function isTuple(t) {\n return !!(t && tupleid(t));\n}\n\n/**\n * Returns the id of a tuple.\n * @param {object} t - The input tuple.\n * @return {*} the tuple id.\n */\nexport function tupleid(t) {\n return t[TUPLE_ID_KEY];\n}\n\n/**\n * Sets the id of a tuple.\n * @param {object} t - The input tuple.\n * @param {*} id - The id value to set.\n * @return {object} the input tuple.\n */\nfunction setid(t, id) {\n t[TUPLE_ID_KEY] = id;\n return t;\n}\n\n/**\n * Ingest an object or value as a data tuple.\n * If the input value is an object, an id field will be added to it. For\n * efficiency, the input object is modified directly. A copy is not made.\n * If the input value is a literal, it will be wrapped in a new object\n * instance, with the value accessible as the 'data' property.\n * @param datum - The value to ingest.\n * @return {object} The ingested data tuple.\n */\nexport function ingest(datum) {\n var t = (datum === Object(datum)) ? datum : {data: datum};\n return tupleid(t) ? t : setid(t, TUPLE_ID++);\n}\n\n/**\n * Given a source tuple, return a derived copy.\n * @param {object} t - The source tuple.\n * @return {object} The derived tuple.\n */\nexport function derive(t) {\n return rederive(t, ingest({}));\n}\n\n/**\n * Rederive a derived tuple by copying values from the source tuple.\n * @param {object} t - The source tuple.\n * @param {object} d - The derived tuple.\n * @return {object} The derived tuple.\n */\nexport function rederive(t, d) {\n for (var k in t) d[k] = t[k];\n return d;\n}\n\n/**\n * Replace an existing tuple with a new tuple.\n * @param {object} t - The existing data tuple.\n * @param {object} d - The new tuple that replaces the old.\n * @return {object} The new tuple.\n */\nexport function replace(t, d) {\n return setid(d, tupleid(t));\n}\n","import {ingest, tupleid} from './Tuple';\nimport {array, constant, isFunction} from 'vega-util';\n\nexport function isChangeSet(v) {\n return v && v.constructor === changeset;\n}\n\nexport default function changeset() {\n var add = [], // insert tuples\n rem = [], // remove tuples\n mod = [], // modify tuples\n remp = [], // remove by predicate\n modp = [], // modify by predicate\n reflow = false;\n\n return {\n constructor: changeset,\n insert: function(t) {\n var d = array(t), i = 0, n = d.length;\n for (; i<n; ++i) add.push(d[i]);\n return this;\n },\n remove: function(t) {\n var a = isFunction(t) ? remp : rem,\n d = array(t), i = 0, n = d.length;\n for (; i<n; ++i) a.push(d[i]);\n return this;\n },\n modify: function(t, field, value) {\n var m = {field: field, value: constant(value)};\n if (isFunction(t)) {\n m.filter = t;\n modp.push(m);\n } else {\n m.tuple = t;\n mod.push(m);\n }\n return this;\n },\n encode: function(t, set) {\n if (isFunction(t)) modp.push({filter: t, field: set});\n else mod.push({tuple: t, field: set});\n return this;\n },\n reflow: function() {\n reflow = true;\n return this;\n },\n pulse: function(pulse, tuples) {\n var cur = {}, out = {}, i, n, m, f, t, id;\n\n // build lookup table of current tuples\n for (i=0, n=tuples.length; i<n; ++i) {\n cur[tupleid(tuples[i])] = 1;\n }\n\n // process individual tuples to remove\n for (i=0, n=rem.length; i<n; ++i) {\n t = rem[i];\n cur[tupleid(t)] = -1;\n }\n\n // process predicate-based removals\n for (i=0, n=remp.length; i<n; ++i) {\n f = remp[i];\n tuples.forEach(function(t) {\n if (f(t)) cur[tupleid(t)] = -1;\n });\n }\n\n // process all add tuples\n for (i=0, n=add.length; i<n; ++i) {\n t = add[i];\n id = tupleid(t);\n if (cur[id]) {\n // tuple already resides in dataset\n // if flagged for both add and remove, cancel\n cur[id] = 1;\n } else {\n // tuple does not reside in dataset, add\n pulse.add.push(ingest(add[i]));\n }\n }\n\n // populate pulse rem list\n for (i=0, n=tuples.length; i<n; ++i) {\n t = tuples[i];\n if (cur[tupleid(t)] < 0) pulse.rem.push(t);\n }\n\n // modify helper method\n function modify(t, f, v) {\n if (v) {\n t[f] = v(t);\n } else {\n pulse.encode = f;\n }\n if (!reflow) out[tupleid(t)] = t;\n }\n\n // process individual tuples to modify\n for (i=0, n=mod.length; i<n; ++i) {\n m = mod[i];\n t = m.tuple;\n f = m.field;\n id = cur[tupleid(t)];\n if (id > 0) {\n modify(t, f, m.value);\n pulse.modifies(f);\n }\n }\n\n // process predicate-based modifications\n for (i=0, n=modp.length; i<n; ++i) {\n m = modp[i];\n f = m.filter;\n tuples.forEach(function(t) {\n if (f(t) && cur[tupleid(t)] > 0) {\n modify(t, m.field, m.value);\n }\n });\n pulse.modifies(m.field);\n }\n\n // upon reflow request, populate mod with all non-removed tuples\n // otherwise, populate mod with modified tuples only\n if (reflow) {\n pulse.mod = rem.length || remp.length\n ? tuples.filter(function(t) { return cur[tupleid(t)] > 0; })\n : tuples.slice();\n } else {\n for (id in out) pulse.mod.push(out[id]);\n }\n\n return pulse;\n }\n };\n}\n","import {isArray} from 'vega-util';\n\nvar CACHE = '_:mod:_';\n\n/**\n * Hash that tracks modifications to assigned values.\n * Callers *must* use the set method to update values.\n */\nexport default function Parameters() {\n Object.defineProperty(this, CACHE, {writable: true, value: {}});\n}\n\nvar prototype = Parameters.prototype;\n\n/**\n * Set a parameter value. If the parameter value changes, the parameter\n * will be recorded as modified.\n * @param {string} name - The parameter name.\n * @param {number} index - The index into an array-value parameter. Ignored if\n * the argument is undefined, null or less than zero.\n * @param {*} value - The parameter value to set.\n * @param {boolean} [force=false] - If true, records the parameter as modified\n * even if the value is unchanged.\n * @return {Parameters} - This parameter object.\n */\nprototype.set = function(name, index, value, force) {\n var o = this,\n v = o[name],\n mod = o[CACHE];\n\n if (index != null && index >= 0) {\n if (v[index] !== value || force) {\n v[index] = value;\n mod[index + ':' + name] = -1;\n mod[name] = -1;\n }\n } else if (v !== value || force) {\n o[name] = value;\n mod[name] = isArray(value) ? 1 + value.length : -1;\n }\n\n return o;\n};\n\n/**\n * Tests if one or more parameters has been modified. If invoked with no\n * arguments, returns true if any parameter value has changed. If the first\n * argument is array, returns trues if any parameter name in the array has\n * changed. Otherwise, tests if the given name and optional array index has\n * changed.\n * @param {string} name - The parameter name to test.\n * @param {number} [index=undefined] - The parameter array index to test.\n * @return {boolean} - Returns true if a queried parameter was modified.\n */\nprototype.modified = function(name, index) {\n var mod = this[CACHE], k;\n if (!arguments.length) {\n for (k in mod) { if (mod[k]) return true; }\n return false;\n } else if (isArray(name)) {\n for (k=0; k<name.length; ++k) {\n if (mod[name[k]]) return true;\n }\n return false;\n }\n return (index != null && index >= 0)\n ? (index + 1 < mod[name] || !!mod[index + ':' + name])\n : !!mod[name];\n};\n\n/**\n * Clears the modification records. After calling this method,\n * all parameters are considered unmodified.\n */\nprototype.clear = function() {\n this[CACHE] = {};\n return this;\n};\n","import Parameters from './Parameters';\nimport UniqueList from './util/UniqueList';\nimport {array, error, id, isArray} from 'vega-util';\n\nvar OP_ID = 0;\nvar PULSE = 'pulse';\nvar NO_PARAMS = new Parameters();\n\n// Boolean Flags\nvar SKIP = 1,\n MODIFIED = 2;\n\n/**\n * An Operator is a processing node in a dataflow graph.\n * Each operator stores a value and an optional value update function.\n * Operators can accept a hash of named parameters. Parameter values can\n * either be direct (JavaScript literals, arrays, objects) or indirect\n * (other operators whose values will be pulled dynamically). Operators\n * included as parameters will have this operator added as a dependency.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {function(object, Pulse)} [update] - An update function. Upon\n * evaluation of this operator, the update function will be invoked and the\n * return value will be used as the new value of this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n * listen for changes to upstream operators included as parameters.\n * @see parameters\n */\nexport default function Operator(init, update, params, react) {\n this.id = ++OP_ID;\n this.value = init;\n this.stamp = -1;\n this.rank = -1;\n this.qrank = -1;\n this.flags = 0;\n\n if (update) {\n this._update = update;\n }\n if (params) this.parameters(params, react);\n}\n\nvar prototype = Operator.prototype;\n\n/**\n * Returns a list of target operators dependent on this operator.\n * If this list does not exist, it is created and then returned.\n * @return {UniqueList}\n */\nprototype.targets = function() {\n return this._targets || (this._targets = UniqueList(id));\n};\n\n/**\n * Sets the value of this operator.\n * @param {*} value - the value to set.\n * @return {Number} Returns 1 if the operator value has changed\n * according to strict equality, returns 0 otherwise.\n */\nprototype.set = function(value) {\n if (this.value !== value) {\n this.value = value;\n return 1;\n } else {\n return 0;\n }\n};\n\nfunction flag(bit) {\n return function(state) {\n var f = this.flags;\n if (arguments.length === 0) return !!(f & bit);\n this.flags = state ? (f | bit) : (f & ~bit);\n return this;\n };\n}\n\n/**\n * Indicates that operator evaluation should be skipped on the next pulse.\n * This operator will still propagate incoming pulses, but its update function\n * will not be invoked. The skip flag is reset after every pulse, so calling\n * this method will affect processing of the next pulse only.\n */\nprototype.skip = flag(SKIP);\n\n/**\n * Indicates that this operator's value has been modified on its most recent\n * pulse. Normally modification is checked via strict equality; however, in\n * some cases it is more efficient to update the internal state of an object.\n * In those cases, the modified flag can be used to trigger propagation. Once\n * set, the modification flag persists across pulses until unset. The flag can\n * be used with the last timestamp to test if a modification is recent.\n */\nprototype.modified = flag(MODIFIED);\n\n/**\n * Sets the parameters for this operator. The parameter values are analyzed for\n * operator instances. If found, this operator will be added as a dependency\n * of the parameterizing operator. Operator values are dynamically marshalled\n * from each operator parameter prior to evaluation. If a parameter value is\n * an array, the array will also be searched for Operator instances. However,\n * the search does not recurse into sub-arrays or object properties.\n * @param {object} params - A hash of operator parameters.\n * @param {boolean} [react=true] - A flag indicating if this operator should\n * automatically update (react) when parameter values change. In other words,\n * this flag determines if the operator registers itself as a listener on\n * any upstream operators included in the parameters.\n * @param {boolean} [initonly=false] - A flag indicating if this operator\n * should calculate an update only upon its initiatal evaluation, then\n * deregister dependencies and suppress all future update invocations.\n * @return {Operator[]} - An array of upstream dependencies.\n */\nprototype.parameters = function(params, react, initonly) {\n react = react !== false;\n var self = this,\n argval = (self._argval = self._argval || new Parameters()),\n argops = (self._argops = self._argops || []),\n deps = [],\n name, value, n, i;\n\n function add(name, index, value) {\n if (value instanceof Operator) {\n if (value !== self) {\n if (react) value.targets().add(self);\n deps.push(value);\n }\n argops.push({op:value, name:name, index:index});\n } else {\n argval.set(name, index, value);\n }\n }\n\n for (name in params) {\n value = params[name];\n\n if (name === PULSE) {\n array(value).forEach(function(op) {\n if (!(op instanceof Operator)) {\n error('Pulse parameters must be operator instances.');\n } else if (op !== self) {\n op.targets().add(self);\n deps.push(op);\n }\n });\n self.source = value;\n } else if (isArray(value)) {\n argval.set(name, -1, Array(n = value.length));\n for (i=0; i<n; ++i) add(name, i, value[i]);\n } else {\n add(name, -1, value);\n }\n }\n\n this.marshall().clear(); // initialize values\n if (initonly) argops.initonly = true;\n\n return deps;\n};\n\n/**\n * Internal method for marshalling parameter values.\n * Visits each operator dependency to pull the latest value.\n * @return {Parameters} A Parameters object to pass to the update function.\n */\nprototype.marshall = function(stamp) {\n var argval = this._argval || NO_PARAMS,\n argops = this._argops, item, i, n, op, mod;\n\n if (argops) {\n for (i=0, n=argops.length; i<n; ++i) {\n item = argops[i];\n op = item.op;\n mod = op.modified() && op.stamp === stamp;\n argval.set(item.name, item.index, op.value, mod);\n }\n\n if (argops.initonly) {\n for (i=0; i<n; ++i) {\n item = argops[i];\n item.op.targets().remove(this);\n }\n this._argops = null;\n this._update = null;\n }\n }\n return argval;\n};\n\n/**\n * Delegate method to perform operator processing.\n * Subclasses can override this method to perform custom processing.\n * By default, it marshalls parameters and calls the update function\n * if that function is defined. If the update function does not\n * change the operator value then StopPropagation is returned.\n * If no update function is defined, this method does nothing.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return The output pulse or StopPropagation. A falsy return value\n * (including undefined) will let the input pulse pass through.\n */\nprototype.evaluate = function(pulse) {\n var update = this._update;\n if (update) {\n var params = this.marshall(pulse.stamp),\n v = update.call(this, params, pulse);\n\n params.clear();\n if (v !== this.value) {\n this.value = v;\n } else if (!this.modified()) {\n return pulse.StopPropagation;\n }\n }\n};\n\n/**\n * Run this operator for the current pulse. If this operator has already\n * been run at (or after) the pulse timestamp, returns StopPropagation.\n * Internally, this method calls {@link evaluate} to perform processing.\n * If {@link evaluate} returns a falsy value, the input pulse is returned.\n * This method should NOT be overridden, instead overrride {@link evaluate}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return the output pulse for this operator (or StopPropagation)\n */\nprototype.run = function(pulse) {\n if (pulse.stamp <= this.stamp) return pulse.StopPropagation;\n var rv;\n if (this.skip()) {\n this.skip(false);\n rv = 0;\n } else {\n rv = this.evaluate(pulse);\n }\n this.stamp = pulse.stamp;\n return (this.pulse = rv || pulse);\n};\n","import Operator from '../Operator';\nimport {isFunction} from 'vega-util';\n\n/**\n * Add an operator to the dataflow graph. This function accepts a\n * variety of input argument types. The basic signature supports an\n * initial value, update function and parameters. If the first parameter\n * is an Operator instance, it will be added directly. If it is a\n * constructor for an Operator subclass, a new instance will be instantiated.\n * Otherwise, if the first parameter is a function instance, it will be used\n * as the update function and a null initial value is assumed.\n * @param {*} init - One of: the operator to add, the initial value of\n * the operator, an operator class to instantiate, or an update function.\n * @param {function} [update] - The operator update function.\n * @param {object} [params] - The operator parameters.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n * listen for changes to upstream operators included as parameters.\n * @return {Operator} - The added operator.\n */\nexport default function(init, update, params, react) {\n var shift = 1,\n op;\n\n if (init instanceof Operator) {\n op = init;\n } else if (init && init.prototype instanceof Operator) {\n op = new init();\n } else if (isFunction(init)) {\n op = new Operator(null, init);\n } else {\n shift = 0;\n op = new Operator(init, update);\n }\n\n this.rank(op);\n if (shift) {\n react = params;\n params = update;\n }\n if (params) this.connect(op, op.parameters(params, react));\n this.touch(op);\n\n return op;\n}\n","import UniqueList from './util/UniqueList';\nimport {debounce, id, identity, truthy} from 'vega-util';\n\nvar STREAM_ID = 0;\n\n/**\n * Models an event stream.\n * @constructor\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n * Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n * new event values.\n * @param {function(Object)} [receive] - Event callback function to invoke\n * upon receipt of a new event. Use to override standard event processing.\n */\nexport default function EventStream(filter, apply, receive) {\n this.id = ++STREAM_ID;\n this.value = null;\n if (receive) this.receive = receive;\n if (filter) this._filter = filter;\n if (apply) this._apply = apply;\n}\n\n/**\n * Creates a new event stream instance with the provided\n * (optional) filter, apply and receive functions.\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n * Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n * new event values.\n * @see EventStream\n */\nexport function stream(filter, apply, receive) {\n return new EventStream(filter, apply, receive);\n}\n\nvar prototype = EventStream.prototype;\n\nprototype._filter = truthy;\n\nprototype._apply = identity;\n\nprototype.targets = function() {\n return this._targets || (this._targets = UniqueList(id));\n};\n\nprototype.consume = function(_) {\n if (!arguments.length) return !!this._consume;\n this._consume = !!_;\n return this;\n};\n\nprototype.receive = function(evt) {\n if (this._filter(evt)) {\n var val = (this.value = this._apply(evt)),\n trg = this._targets,\n n = trg ? trg.length : 0,\n i = 0;\n\n for (; i<n; ++i) trg[i].receive(val);\n\n if (this._consume) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n }\n};\n\nprototype.filter = function(filter) {\n var s = stream(filter);\n this.targets().add(s);\n return s;\n};\n\nprototype.apply = function(apply) {\n var s = stream(null, apply);\n this.targets().add(s);\n return s;\n};\n\nprototype.merge = function() {\n var s = stream();\n\n this.targets().add(s);\n for (var i=0, n=arguments.length; i<n; ++i) {\n arguments[i].targets().add(s);\n }\n\n return s;\n};\n\nprototype.throttle = function(pause) {\n var t = -1;\n return this.filter(function() {\n var now = Date.now();\n if ((now - t) > pause) {\n t = now;\n return 1;\n } else {\n return 0;\n }\n });\n};\n\nprototype.debounce = function(delay) {\n var s = stream();\n\n this.targets().add(stream(null, null,\n debounce(delay, function(e) {\n var df = e.dataflow;\n s.receive(e);\n if (df && df.run) df.run();\n })\n ));\n\n return s;\n};\n\nprototype.between = function(a, b) {\n var active = false;\n a.targets().add(stream(null, null, function() { active = true; }));\n b.targets().add(stream(null, null, function() { active = false; }));\n return this.filter(function() { return active; });\n};\n","import {stream} from '../EventStream';\nimport {array} from 'vega-util';\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor. The input must\n * support the addEventListener method.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @param {function(object): *} [apply] - Event application function.\n * If provided, this function will be invoked and the result will be\n * used as the downstream event value.\n * @return {EventStream}\n */\nexport default function(source, type, filter, apply) {\n var df = this,\n s = stream(filter, apply),\n send = function(e) {\n e.dataflow = df;\n try {\n s.receive(e);\n } catch (error) {\n df.error(error);\n } finally {\n df.run();\n }\n },\n sources;\n\n if (typeof source === 'string' && typeof document !== 'undefined') {\n sources = document.querySelectorAll(source);\n } else {\n sources = array(source);\n }\n\n for (var i=0, n=sources.length; i<n; ++i) {\n sources[i].addEventListener(type, send);\n }\n\n return s;\n}\n","import {extend, error, isFunction, stringValue} from 'vega-util';\n\n// Matches absolute URLs with optional protocol\n// https://... file://... //...\nvar protocol_re = /^([A-Za-z]+:)?\\/\\//;\n\n// Special treatment in node.js for the file: protocol\nvar fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n * If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n * If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n * param {object} [options] - Optional default loading options to use.\n * return {object} - A new loader instance.\n */\nexport default function(fetch, fs) {\n return function(options) {\n return {\n options: options || {},\n sanitize: sanitize,\n load: load,\n fileAccess: !!fs,\n file: fileLoader(fs),\n http: httpLoader(fetch)\n };\n };\n}\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n * override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nasync function load(uri, options) {\n const opt = await this.sanitize(uri, options),\n url = opt.href;\n\n return opt.localFile\n ? this.file(url)\n : this.http(url, options);\n}\n\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to sanity check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n * sanitized uri data, or rejects it the input uri is deemed invalid.\n * The properties of the resolved object are assumed to be\n * valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n * provided by the 'href' property of the returned object.\n */\nasync function sanitize(uri, options) {\n options = extend({}, this.options, options);\n\n const fileAccess = this.fileAccess,\n result = {href: null};\n\n let isFile, hasProtocol, loadFile, base;\n\n if (uri == null || typeof uri !== 'string') {\n error('Sanitize failure, invalid URI: ' + stringValue(uri));\n }\n\n hasProtocol = protocol_re.test(uri);\n\n // if relative url (no protocol/host), prepend baseURL\n if ((base = options.baseURL) && !hasProtocol) {\n // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n if (!uri.startsWith('/') && base[base.length-1] !== '/') {\n uri = '/' + uri;\n }\n uri = base + uri;\n }\n\n // should we load from file system?\n loadFile = (isFile = uri.startsWith(fileProtocol))\n || options.mode === 'file'\n || options.mode !== 'http' && !hasProtocol && fileAccess;\n\n if (isFile) {\n // strip file protocol\n uri = uri.slice(fileProtocol.length);\n } else if (uri.startsWith('//')) {\n if (options.defaultProtocol === 'file') {\n // if is file, strip protocol and set loadFile flag\n uri = uri.slice(2);\n loadFile = true;\n } else {\n // if relative protocol (starts with '//'), prepend default protocol\n uri = (options.defaultProtocol || 'http') + ':' + uri;\n }\n }\n\n // set non-enumerable mode flag to indicate local file load\n Object.defineProperty(result, 'localFile', {value: !!loadFile});\n\n // set uri\n result.href = uri;\n\n // set default result target, if specified\n if (options.target) {\n result.target = options.target + '';\n }\n\n // set default result rel, if specified (#1542)\n if (options.rel) {\n result.rel = options.rel + '';\n }\n\n // return\n return result;\n}\n\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n * param {string} filename - The file system path to load.\n * param {string} filename - The file system path to load.\n * return {Promise} A promise that resolves to the file contents.\n */\nfunction fileLoader(fs) {\n return fs\n ? function(filename) {\n return new Promise(function(accept, reject) {\n fs.readFile(filename, function(error, data) {\n if (error) reject(error);\n else accept(data);\n });\n });\n }\n : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nasync function fileReject() {\n error('No file system access.');\n}\n\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n * param {string} url - The url to request.\n * param {object} options - An options hash.\n * return {Promise} - A promise that resolves to the file contents.\n */\nfunction httpLoader(fetch) {\n return fetch\n ? async function(url, options) {\n const opt = extend({}, this.options.http, options),\n type = options && options.response,\n response = await fetch(url, opt);\n\n return !response.ok\n ? error(response.status + '' + response.statusText)\n : isFunction(response[type]) ? response[type]()\n : response.text();\n }\n : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nasync function httpReject() {\n error('No HTTP fetch method available.');\n}\n","import {identity, toBoolean, toDate, toNumber, toString} from 'vega-util';\n\nexport var typeParsers = {\n boolean: toBoolean,\n integer: toNumber,\n number: toNumber,\n date: toDate,\n string: toString,\n unknown: identity\n};\n\nvar typeTests = [\n isBoolean,\n isInteger,\n isNumber,\n isDate\n];\n\nvar typeList = [\n 'boolean',\n 'integer',\n 'number',\n 'date'\n];\n\nexport function inferType(values, field) {\n if (!values || !values.length) return 'unknown';\n\n var value, i, j, t = 0,\n n = values.length,\n m = typeTests.length,\n a = typeTests.map(function(_, i) { return i + 1; });\n\n for (i=0, n=values.length; i<n; ++i) {\n value = field ? values[i][field] : values[i];\n for (j=0; j<m; ++j) {\n if (a[j] && isValid(value) && !typeTests[j](value)) {\n a[j] = 0;\n ++t;\n if (t === typeTests.length) return 'string';\n }\n }\n }\n\n t = a.reduce(function(u, v) { return u === 0 ? v : u; }, 0) - 1;\n return typeList[t];\n}\n\nexport function inferTypes(data, fields) {\n return fields.reduce(function(types, field) {\n types[field] = inferType(data, field);\n return types;\n }, {});\n}\n\n// -- Type Checks ----\n\nfunction isValid(_) {\n return _ != null && _ === _;\n}\n\nfunction isBoolean(_) {\n return _ === 'true' || _ === 'false' || _ === true || _ === false;\n}\n\nfunction isDate(_) {\n return !isNaN(Date.parse(_));\n}\n\nfunction isNumber(_) {\n return !isNaN(+_) && !(_ instanceof Date);\n}\n\nfunction isInteger(_) {\n return isNumber(_) && (_=+_) === ~~_;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows\n };\n}\n","import dsv from \"./dsv\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\n","import dsv from \"./dsv\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\n","import {dsvFormat} from 'd3-dsv';\nimport {extend, stringValue} from 'vega-util';\n\nexport function delimitedFormat(delimiter) {\n const parse = function(data, format) {\n const delim = {delimiter: delimiter};\n return dsv(data, format ? extend(format, delim) : delim);\n };\n\n parse.responseType = 'text';\n\n return parse;\n}\n\nexport default function dsv(data, format) {\n if (format.header) {\n data = format.header\n .map(stringValue)\n .join(format.delimiter) + '\\n' + data;\n }\n return dsvFormat(format.delimiter).parse(data + '');\n}\n\ndsv.responseType = 'text';\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity\";\n\nexport default function(transform) {\n if (transform == null) return identity;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(input, i) {\n if (!i) x0 = y0 = 0;\n var j = 2, n = input.length, output = new Array(n);\n output[0] = (x0 += input[0]) * kx + dx;\n output[1] = (y0 += input[1]) * ky + dy;\n while (j < n) output[j] = input[j], ++j;\n return output;\n };\n}\n","export default function(array, n) {\n var t, j = array.length, i = j - n;\n while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}\n","import reverse from \"./reverse\";\nimport transform from \"./transform\";\n\nexport default function(topology, o) {\n return o.type === \"GeometryCollection\"\n ? {type: \"FeatureCollection\", features: o.geometries.map(function(o) { return feature(topology, o); })}\n : feature(topology, o);\n}\n\nexport function feature(topology, o) {\n var id = o.id,\n bbox = o.bbox,\n properties = o.properties == null ? {} : o.properties,\n geometry = object(topology, o);\n return id == null && bbox == null ? {type: \"Feature\", properties: properties, geometry: geometry}\n : bbox == null ? {type: \"Feature\", id: id, properties: properties, geometry: geometry}\n : {type: \"Feature\", id: id, bbox: bbox, properties: properties, geometry: geometry};\n}\n\nexport function object(topology, o) {\n var transformPoint = transform(topology.transform),\n arcs = topology.arcs;\n\n function arc(i, points) {\n if (points.length) points.pop();\n for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length; k < n; ++k) {\n points.push(transformPoint(a[k], k));\n }\n if (i < 0) reverse(points, n);\n }\n\n function point(p) {\n return transformPoint(p);\n }\n\n function line(arcs) {\n var points = [];\n for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n if (points.length < 2) points.push(points[0]); // This should never happen per the specification.\n return points;\n }\n\n function ring(arcs) {\n var points = line(arcs);\n while (points.length < 4) points.push(points[0]); // This may happen if an arc has only two points.\n return points;\n }\n\n function polygon(arcs) {\n return arcs.map(ring);\n }\n\n function geometry(o) {\n var type = o.type, coordinates;\n switch (type) {\n case \"GeometryCollection\": return {type: type, geometries: o.geometries.map(geometry)};\n case \"Point\": coordinates = point(o.coordinates); break;\n case \"MultiPoint\": coordinates = o.coordinates.map(point); break;\n case \"LineString\": coordinates = line(o.arcs); break;\n case \"MultiLineString\": coordinates = o.arcs.map(line); break;\n case \"Polygon\": coordinates = polygon(o.arcs); break;\n case \"MultiPolygon\": coordinates = o.arcs.map(polygon); break;\n default: return null;\n }\n return {type: type, coordinates: coordinates};\n }\n\n return geometry(o);\n}\n","export default function(topology, arcs) {\n var stitchedArcs = {},\n fragmentByStart = {},\n fragmentByEnd = {},\n fragments = [],\n emptyIndex = -1;\n\n // Stitch empty arcs first, since they may be subsumed by other arcs.\n arcs.forEach(function(i, j) {\n var arc = topology.arcs[i < 0 ? ~i : i], t;\n if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n }\n });\n\n arcs.forEach(function(i) {\n var e = ends(i),\n start = e[0],\n end = e[1],\n f, g;\n\n if (f = fragmentByEnd[start]) {\n delete fragmentByEnd[f.end];\n f.push(i);\n f.end = end;\n if (g = fragmentByStart[end]) {\n delete fragmentByStart[g.start];\n var fg = g === f ? f : f.concat(g);\n fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else if (f = fragmentByStart[end]) {\n delete fragmentByStart[f.start];\n f.unshift(i);\n f.start = start;\n if (g = fragmentByEnd[start]) {\n delete fragmentByEnd[g.end];\n var gf = g === f ? f : g.concat(f);\n fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else {\n f = [i];\n fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n }\n });\n\n function ends(i) {\n var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n else p1 = arc[arc.length - 1];\n return i < 0 ? [p1, p0] : [p0, p1];\n }\n\n function flush(fragmentByEnd, fragmentByStart) {\n for (var k in fragmentByEnd) {\n var f = fragmentByEnd[k];\n delete fragmentByStart[f.start];\n delete f.start;\n delete f.end;\n f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n fragments.push(f);\n }\n }\n\n flush(fragmentByEnd, fragmentByStart);\n flush(fragmentByStart, fragmentByEnd);\n arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\n return fragments;\n}\n","import {object} from \"./feature\";\nimport stitch from \"./stitch\";\n\nexport default function(topology) {\n return object(topology, meshArcs.apply(this, arguments));\n}\n\nexport function meshArcs(topology, object, filter) {\n var arcs, i, n;\n if (arguments.length > 1) arcs = extractArcs(topology, object, filter);\n else for (i = 0, arcs = new Array(n = topology.arcs.length); i < n; ++i) arcs[i] = i;\n return {type: \"MultiLineString\", arcs: stitch(topology, arcs)};\n}\n\nfunction extractArcs(topology, object, filter) {\n var arcs = [],\n geomsByArc = [],\n geom;\n\n function extract0(i) {\n var j = i < 0 ? ~i : i;\n (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n }\n\n function extract1(arcs) {\n arcs.forEach(extract0);\n }\n\n function extract2(arcs) {\n arcs.forEach(extract1);\n }\n\n function extract3(arcs) {\n arcs.forEach(extract2);\n }\n\n function geometry(o) {\n switch (geom = o, o.type) {\n case \"GeometryCollection\": o.geometries.forEach(geometry); break;\n case \"LineString\": extract1(o.arcs); break;\n case \"MultiLineString\": case \"Polygon\": extract2(o.arcs); break;\n case \"MultiPolygon\": extract3(o.arcs); break;\n }\n }\n\n geometry(object);\n\n geomsByArc.forEach(filter == null\n ? function(geoms) { arcs.push(geoms[0].i); }\n : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n\n return arcs;\n}\n","import json from './json';\nimport {feature, mesh} from 'topojson-client';\nimport {error} from 'vega-util';\n\nconst filters = {\n interior: (a, b) => a !== b,\n exterior: (a, b) => a === b\n};\n\nexport default function topojson(data, format) {\n let method, object, property, filter;\n data = json(data, format);\n\n if (format && format.feature) {\n method = feature;\n property = format.feature;\n } else if (format && format.mesh) {\n method = mesh;\n property = format.mesh;\n filter = filters[format.filter];\n } else {\n error('Missing TopoJSON feature or mesh parameter.');\n }\n\n object = (object = data.objects[property])\n ? method(data, object, filter)\n : error('Invalid TopoJSON object: ' + property);\n\n return object && object.features || [object];\n}\n\ntopojson.responseType = 'json';\n","import {default as dsv, delimitedFormat} from './dsv';\nimport json from './json';\nimport topojson from './topojson';\n\nexport const format = {\n dsv: dsv,\n csv: delimitedFormat(','),\n tsv: delimitedFormat('\\t'),\n json: json,\n topojson: topojson\n};\n\nexport function formats(name, reader) {\n if (arguments.length > 1) {\n format[name] = reader;\n return this;\n } else {\n return format.hasOwnProperty(name) ? format[name] : null;\n }\n}\n\nexport function responseType(type) {\n const f = formats(type);\n return f && f.responseType || 'text';\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationSecond} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {inferTypes, typeParsers} from './type';\nimport {formats} from './formats/index';\nimport {error} from 'vega-util';\nimport {timeParse, utcParse} from 'd3-time-format';\n\nexport default function(data, schema, dateParse) {\n schema = schema || {};\n\n const reader = formats(schema.type || 'json');\n if (!reader) error('Unknown data format type: ' + schema.type);\n\n data = reader(data, schema);\n if (schema.parse) parse(data, schema.parse, dateParse);\n\n if (data.hasOwnProperty('columns')) delete data.columns;\n return data;\n}\n\nfunction parse(data, types, dateParse) {\n if (!data.length) return; // early exit for empty data\n\n dateParse = dateParse || timeParse;\n\n var fields = data.columns || Object.keys(data[0]),\n parsers, datum, field, i, j, n, m;\n\n if (types === 'auto') types = inferTypes(data, fields);\n\n fields = Object.keys(types);\n parsers = fields.map(function(field) {\n var type = types[field],\n parts, pattern;\n\n if (type && (type.indexOf('date:') === 0 || type.indexOf('utc:') === 0)) {\n parts = type.split(/:(.+)?/, 2); // split on first :\n pattern = parts[1];\n\n if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n (pattern[0] === '\"' && pattern[pattern.length-1] === '\"')) {\n pattern = pattern.slice(1, -1);\n }\n\n return parts[0] === 'utc' ? utcParse(pattern) : dateParse(pattern);\n }\n\n if (!typeParsers[type]) {\n throw Error('Illegal format pattern: ' + field + ':' + type);\n }\n\n return typeParsers[type];\n });\n\n for (i=0, n=data.length, m=fields.length; i<n; ++i) {\n datum = data[i];\n for (j=0; j<m; ++j) {\n field = fields[j];\n datum[field] = parsers[j](datum[field]);\n }\n }\n}\n","import loaderFactory from './src/loader';\n\nexport var loader = loaderFactory(\n typeof fetch !== 'undefined' && fetch, // use built-in fetch API\n null // no file system access\n);\n\nexport {\n default as read\n} from './src/read';\n\nexport {\n inferType,\n inferTypes,\n typeParsers\n} from './src/type';\n\nexport {\n format,\n formats,\n responseType\n} from './src/formats/index';\n","import {read, responseType} from 'vega-loader';\nimport {truthy} from 'vega-util';\n\nexport const parse = read;\n\n/**\n * Ingests new data into the dataflow. First parses the data using the\n * vega-loader read method, then pulses a changeset to the target operator.\n * @param {Operator} target - The Operator to target with ingested data,\n * typically a Collect transform instance.\n * @param {*} data - The input data, prior to parsing. For JSON this may\n * be a string or an object. For CSV, TSV, etc should be a string.\n * @param {object} format - The data format description for parsing\n * loaded data. This object is passed to the vega-loader read method.\n * @returns {Dataflow}\n */\nexport function ingest(target, data, format) {\n return this.pulse(target, this.changeset().insert(parse(data, format)));\n}\n\n/**\n * Request data from an external source, parse it, and return a Promise.\n * @param {string} url - The URL from which to load the data. This string\n * is passed to the vega-loader load method.\n * @param {object} [format] - The data format description for parsing\n * loaded data. This object is passed to the vega-loader read method.\n * @return {Promise} A Promise that resolves upon completion of the request.\n * The resolved object contains the following properties:\n * - data: an array of parsed data (or null upon error)\n * - status: a code for success (0), load fail (-1), or parse fail (-2)\n */\nexport async function request(url, format) {\n const df = this;\n let status = 0, data;\n\n try {\n data = await df.loader().load(url, {\n context: 'dataflow',\n response: responseType(format && format.type)\n });\n try {\n data = parse(data, format);\n } catch (err) {\n status = -2;\n df.warn('Data ingestion failed', url, err);\n }\n } catch (err) {\n status = -1;\n df.warn('Loading failed', url, err);\n }\n\n return {data, status};\n}\n\nexport async function preload(target, url, format) {\n const df = this,\n pending = df._pending || loadPending(df);\n\n pending.requests += 1;\n\n const res = await df.request(url, format);\n df.pulse(target, df.changeset().remove(truthy).insert(res.data || []));\n\n pending.done();\n return res;\n}\n\nfunction loadPending(df) {\n var pending = new Promise(function(a) { accept = a; }),\n accept;\n\n pending.requests = 0;\n\n pending.done = function() {\n if (--pending.requests === 0) {\n df._pending = null;\n accept(df);\n }\n };\n\n return (df._pending = pending);\n}\n","import Operator from '../Operator';\nimport {isChangeSet} from '../ChangeSet';\nimport {constant, extend, isFunction} from 'vega-util';\n\nvar SKIP = {skip: true};\n\n/**\n * Perform operator updates in response to events. Applies an\n * update function to compute a new operator value. If the update function\n * returns a {@link ChangeSet}, the operator will be pulsed with those tuple\n * changes. Otherwise, the operator value will be updated to the return value.\n * @param {EventStream|Operator} source - The event source to react to.\n * This argument can be either an EventStream or an Operator.\n * @param {Operator|function(object):Operator} target - The operator to update.\n * This argument can either be an Operator instance or (if the source\n * argument is an EventStream), a function that accepts an event object as\n * input and returns an Operator to target.\n * @param {function(Parameters,Event): *} [update] - Optional update function\n * to compute the new operator value, or a literal value to set. Update\n * functions expect to receive a parameter object and event as arguments.\n * This function can either return a new operator value or (if the source\n * argument is an EventStream) a {@link ChangeSet} instance to pulse\n * the target operator with tuple changes.\n * @param {object} [params] - The update function parameters.\n * @param {object} [options] - Additional options hash. If not overridden,\n * updated operators will be skipped by default.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @param {boolean} [options.force] - If true, the operator will\n * be re-evaluated even if its value has not changed.\n * @return {Dataflow}\n */\nexport default function(source, target, update, params, options) {\n var fn = source instanceof Operator ? onOperator : onStream;\n fn(this, source, target, update, params, options);\n return this;\n}\n\nfunction onStream(df, stream, target, update, params, options) {\n var opt = extend({}, options, SKIP), func, op;\n\n if (!isFunction(target)) target = constant(target);\n\n if (update === undefined) {\n func = e => df.touch(target(e));\n } else if (isFunction(update)) {\n op = new Operator(null, update, params, false);\n func = e => {\n op.evaluate(e);\n const t = target(e), v = op.value;\n isChangeSet(v) ? df.pulse(t, v, options) : df.update(t, v, opt);\n };\n } else {\n func = e => df.update(target(e), update, opt);\n }\n\n stream.apply(func);\n}\n\nfunction onOperator(df, source, target, update, params, options) {\n if (update === undefined) {\n source.targets().add(target);\n } else {\n const opt = options || {},\n op = new Operator(null, updater(target, update), params, false);\n op.modified(opt.force);\n op.rank = source.rank; // immediately follow source\n source.targets().add(op); // add dependency\n\n if (target) {\n op.skip(true); // skip first invocation\n op.value = target.value; // initialize value\n op.targets().add(target); // chain dependencies\n df.connect(target, [op]); // rerank as needed, #1672\n }\n }\n}\n\nfunction updater(target, update) {\n update = isFunction(update) ? update : constant(update);\n return target\n ? function(_, pulse) {\n const value = update(_, pulse);\n if (!target.skip()) {\n target.skip(value !== this.value).value = value;\n }\n return value;\n }\n : update;\n}\n","import {tupleid} from './Tuple';\nimport {array, isArray, visitArray} from 'vega-util';\n\n/**\n * Sentinel value indicating pulse propagation should stop.\n */\nexport var StopPropagation = {};\n\n// Pulse visit type flags\nvar ADD = (1 << 0),\n REM = (1 << 1),\n MOD = (1 << 2),\n ADD_REM = ADD | REM,\n ADD_MOD = ADD | MOD,\n ALL = ADD | REM | MOD,\n REFLOW = (1 << 3),\n SOURCE = (1 << 4),\n NO_SOURCE = (1 << 5),\n NO_FIELDS = (1 << 6);\n\n/**\n * A Pulse enables inter-operator communication during a run of the\n * dataflow graph. In addition to the current timestamp, a pulse may also\n * contain a change-set of added, removed or modified data tuples, as well as\n * a pointer to a full backing data source. Tuple change sets may not\n * be fully materialized; for example, to prevent needless array creation\n * a change set may include larger arrays and corresponding filter functions.\n * The pulse provides a {@link visit} method to enable proper and efficient\n * iteration over requested data tuples.\n *\n * In addition, each pulse can track modification flags for data tuple fields.\n * Responsible transform operators should call the {@link modifies} method to\n * indicate changes to data fields. The {@link modified} method enables\n * querying of this modification state.\n *\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The current propagation timestamp.\n * @param {string} [encode] - An optional encoding set name, which is then\n * accessible as Pulse.encode. Operators can respond to (or ignore) this\n * setting as appropriate. This parameter can be used in conjunction with\n * the Encode transform in the vega-encode module.\n */\nexport default function Pulse(dataflow, stamp, encode) {\n this.dataflow = dataflow;\n this.stamp = stamp == null ? -1 : stamp;\n this.add = [];\n this.rem = [];\n this.mod = [];\n this.fields = null;\n this.encode = encode || null;\n}\n\nvar prototype = Pulse.prototype;\n\n/**\n * Sentinel value indicating pulse propagation should stop.\n */\nprototype.StopPropagation = StopPropagation;\n\n/**\n * Boolean flag indicating ADD (added) tuples.\n */\nprototype.ADD = ADD;\n\n/**\n * Boolean flag indicating REM (removed) tuples.\n */\nprototype.REM = REM;\n\n/**\n * Boolean flag indicating MOD (modified) tuples.\n */\nprototype.MOD = MOD;\n\n/**\n * Boolean flag indicating ADD (added) and REM (removed) tuples.\n */\nprototype.ADD_REM = ADD_REM;\n\n/**\n * Boolean flag indicating ADD (added) and MOD (modified) tuples.\n */\nprototype.ADD_MOD = ADD_MOD;\n\n/**\n * Boolean flag indicating ADD, REM and MOD tuples.\n */\nprototype.ALL = ALL;\n\n/**\n * Boolean flag indicating all tuples in a data source\n * except for the ADD, REM and MOD tuples.\n */\nprototype.REFLOW = REFLOW;\n\n/**\n * Boolean flag indicating a 'pass-through' to a\n * backing data source, ignoring ADD, REM and MOD tuples.\n */\nprototype.SOURCE = SOURCE;\n\n/**\n * Boolean flag indicating that source data should be\n * suppressed when creating a forked pulse.\n */\nprototype.NO_SOURCE = NO_SOURCE;\n\n/**\n * Boolean flag indicating that field modifications should be\n * suppressed when creating a forked pulse.\n */\nprototype.NO_FIELDS = NO_FIELDS;\n\n/**\n * Creates a new pulse based on the values of this pulse.\n * The dataflow, time stamp and field modification values are copied over.\n * By default, new empty ADD, REM and MOD arrays are created.\n * @param {number} flags - Integer of boolean flags indicating which (if any)\n * tuple arrays should be copied to the new pulse. The supported flag values\n * are ADD, REM and MOD. Array references are copied directly: new array\n * instances are not created.\n * @return {Pulse} - The forked pulse instance.\n * @see init\n */\nprototype.fork = function(flags) {\n return new Pulse(this.dataflow).init(this, flags);\n};\n\n/**\n * Creates a copy of this pulse with new materialized array\n * instances for the ADD, REM, MOD, and SOURCE arrays.\n * The dataflow, time stamp and field modification values are copied over.\n * @return {Pulse} - The cloned pulse instance.\n * @see init\n */\nprototype.clone = function() {\n var p = this.fork(ALL);\n p.add = p.add.slice();\n p.rem = p.rem.slice();\n p.mod = p.mod.slice();\n if (p.source) p.source = p.source.slice();\n return p.materialize(ALL | SOURCE);\n};\n\n/**\n * Returns a pulse that adds all tuples from a backing source. This is\n * useful for cases where operators are added to a dataflow after an\n * upstream data pipeline has already been processed, ensuring that\n * new operators can observe all tuples within a stream.\n * @return {Pulse} - A pulse instance with all source tuples included\n * in the add array. If the current pulse already has all source\n * tuples in its add array, it is returned directly. If the current\n * pulse does not have a backing source, it is returned directly.\n */\nprototype.addAll = function() {\n var p = this;\n if (!this.source || this.source.length === this.add.length) {\n return p;\n } else {\n p = new Pulse(this.dataflow).init(this);\n p.add = p.source;\n return p;\n }\n};\n\n/**\n * Initialize this pulse based on the values of another pulse. This method\n * is used internally by {@link fork} to initialize a new forked tuple.\n * The dataflow, time stamp and field modification values are copied over.\n * By default, new empty ADD, REM and MOD arrays are created.\n * @param {Pulse} src - The source pulse to copy from.\n * @param {number} flags - Integer of boolean flags indicating which (if any)\n * tuple arrays should be copied to the new pulse. The supported flag values\n * are ADD, REM and MOD. Array references are copied directly: new array\n * instances are not created. By default, source data arrays are copied\n * to the new pulse. Use the NO_SOURCE flag to enforce a null source.\n * @return {Pulse} - Returns this Pulse instance.\n */\nprototype.init = function(src, flags) {\n var p = this;\n p.stamp = src.stamp;\n p.encode = src.encode;\n\n if (src.fields && !(flags & NO_FIELDS)) {\n p.fields = src.fields;\n }\n\n if (flags & ADD) {\n p.addF = src.addF;\n p.add = src.add;\n } else {\n p.addF = null;\n p.add = [];\n }\n\n if (flags & REM) {\n p.remF = src.remF;\n p.rem = src.rem;\n } else {\n p.remF = null;\n p.rem = [];\n }\n\n if (flags & MOD) {\n p.modF = src.modF;\n p.mod = src.mod;\n } else {\n p.modF = null;\n p.mod = [];\n }\n\n if (flags & NO_SOURCE) {\n p.srcF = null;\n p.source = null;\n } else {\n p.srcF = src.srcF;\n p.source = src.source;\n }\n\n return p;\n};\n\n/**\n * Schedules a function to run after pulse propagation completes.\n * @param {function} func - The function to run.\n */\nprototype.runAfter = function(func) {\n this.dataflow.runAfter(func);\n};\n\n/**\n * Indicates if tuples have been added, removed or modified.\n * @param {number} [flags] - The tuple types (ADD, REM or MOD) to query.\n * Defaults to ALL, returning true if any tuple type has changed.\n * @return {boolean} - Returns true if one or more queried tuple types have\n * changed, false otherwise.\n */\nprototype.changed = function(flags) {\n var f = flags || ALL;\n return ((f & ADD) && this.add.length)\n || ((f & REM) && this.rem.length)\n || ((f & MOD) && this.mod.length);\n};\n\n/**\n * Forces a \"reflow\" of tuple values, such that all tuples in the backing\n * source are added to the MOD set, unless already present in the ADD set.\n * @param {boolean} [fork=false] - If true, returns a forked copy of this\n * pulse, and invokes reflow on that derived pulse.\n * @return {Pulse} - The reflowed pulse instance.\n */\nprototype.reflow = function(fork) {\n if (fork) return this.fork(ALL).reflow();\n\n var len = this.add.length,\n src = this.source && this.source.length;\n if (src && src !== len) {\n this.mod = this.source;\n if (len) this.filter(MOD, filter(this, ADD));\n }\n return this;\n};\n\n/**\n * Marks one or more data field names as modified to assist dependency\n * tracking and incremental processing by transform operators.\n * @param {string|Array<string>} _ - The field(s) to mark as modified.\n * @return {Pulse} - This pulse instance.\n */\nprototype.modifies = function(_) {\n var fields = array(_),\n hash = this.fields || (this.fields = {});\n fields.forEach(function(f) { hash[f] = true; });\n return this;\n};\n\n/**\n * Checks if one or more data fields have been modified during this pulse\n * propagation timestamp.\n * @param {string|Array<string>} _ - The field(s) to check for modified.\n * @return {boolean} - Returns true if any of the provided fields has been\n * marked as modified, false otherwise.\n */\nprototype.modified = function(_) {\n var fields = this.fields;\n return !(this.mod.length && fields) ? false\n : !arguments.length ? !!fields\n : isArray(_) ? _.some(function(f) { return fields[f]; })\n : fields[_];\n};\n\n/**\n * Adds a filter function to one more tuple sets. Filters are applied to\n * backing tuple arrays, to determine the actual set of tuples considered\n * added, removed or modified. They can be used to delay materialization of\n * a tuple set in order to avoid expensive array copies. In addition, the\n * filter functions can serve as value transformers: unlike standard predicate\n * function (which return boolean values), Pulse filters should return the\n * actual tuple value to process. If a tuple set is already filtered, the\n * new filter function will be appended into a conjuntive ('and') query.\n * @param {number} flags - Flags indicating the tuple set(s) to filter.\n * @param {function(*):object} filter - Filter function that will be applied\n * to the tuple set array, and should return a data tuple if the value\n * should be included in the tuple set, and falsy (or null) otherwise.\n * @return {Pulse} - Returns this pulse instance.\n */\nprototype.filter = function(flags, filter) {\n var p = this;\n if (flags & ADD) p.addF = addFilter(p.addF, filter);\n if (flags & REM) p.remF = addFilter(p.remF, filter);\n if (flags & MOD) p.modF = addFilter(p.modF, filter);\n if (flags & SOURCE) p.srcF = addFilter(p.srcF, filter);\n return p;\n};\n\nfunction addFilter(a, b) {\n return a ? function(t,i) { return a(t,i) && b(t,i); } : b;\n}\n\n/**\n * Materialize one or more tuple sets in this pulse. If the tuple set(s) have\n * a registered filter function, it will be applied and the tuple set(s) will\n * be replaced with materialized tuple arrays.\n * @param {number} flags - Flags indicating the tuple set(s) to materialize.\n * @return {Pulse} - Returns this pulse instance.\n */\nprototype.materialize = function(flags) {\n flags = flags || ALL;\n var p = this;\n if ((flags & ADD) && p.addF) {\n p.add = materialize(p.add, p.addF);\n p.addF = null;\n }\n if ((flags & REM) && p.remF) {\n p.rem = materialize(p.rem, p.remF);\n p.remF = null;\n }\n if ((flags & MOD) && p.modF) {\n p.mod = materialize(p.mod, p.modF);\n p.modF = null;\n }\n if ((flags & SOURCE) && p.srcF) {\n p.source = p.source.filter(p.srcF);\n p.srcF = null;\n }\n return p;\n};\n\nfunction materialize(data, filter) {\n var out = [];\n visitArray(data, filter, function(_) { out.push(_); });\n return out;\n}\n\nfunction filter(pulse, flags) {\n var map = {};\n pulse.visit(flags, function(t) { map[tupleid(t)] = 1; });\n return function(t) { return map[tupleid(t)] ? null : t; };\n}\n\n/**\n * Visit one or more tuple sets in this pulse.\n * @param {number} flags - Flags indicating the tuple set(s) to visit.\n * Legal values are ADD, REM, MOD and SOURCE (if a backing data source\n * has been set).\n * @param {function(object):*} - Visitor function invoked per-tuple.\n * @return {Pulse} - Returns this pulse instance.\n */\nprototype.visit = function(flags, visitor) {\n var p = this, v = visitor, src, sum;\n\n if (flags & SOURCE) {\n visitArray(p.source, p.srcF, v);\n return p;\n }\n\n if (flags & ADD) visitArray(p.add, p.addF, v);\n if (flags & REM) visitArray(p.rem, p.remF, v);\n if (flags & MOD) visitArray(p.mod, p.modF, v);\n\n if ((flags & REFLOW) && (src = p.source)) {\n sum = p.add.length + p.mod.length;\n if (sum === src.length) {\n // do nothing\n } else if (sum) {\n visitArray(src, filter(p, ADD_MOD), v);\n } else {\n // if no add/rem/mod tuples, visit source\n visitArray(src, p.srcF, v);\n }\n }\n\n return p;\n};\n","import Pulse from './Pulse';\nimport {error, inherits, isArray} from 'vega-util';\n\n/**\n * Represents a set of multiple pulses. Used as input for operators\n * that accept multiple pulses at a time. Contained pulses are\n * accessible via the public \"pulses\" array property. This pulse doe\n * not carry added, removed or modified tuples directly. However,\n * the visit method can be used to traverse all such tuples contained\n * in sub-pulses with a timestamp matching this parent multi-pulse.\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The timestamp.\n * @param {Array<Pulse>} pulses - The sub-pulses for this multi-pulse.\n */\nexport default function MultiPulse(dataflow, stamp, pulses, encode) {\n var p = this,\n c = 0,\n pulse, hash, i, n, f;\n\n this.dataflow = dataflow;\n this.stamp = stamp;\n this.fields = null;\n this.encode = encode || null;\n this.pulses = pulses;\n\n for (i=0, n=pulses.length; i<n; ++i) {\n pulse = pulses[i];\n if (pulse.stamp !== stamp) continue;\n\n if (pulse.fields) {\n hash = p.fields || (p.fields = {});\n for (f in pulse.fields) { hash[f] = 1; }\n }\n\n if (pulse.changed(p.ADD)) c |= p.ADD;\n if (pulse.changed(p.REM)) c |= p.REM;\n if (pulse.changed(p.MOD)) c |= p.MOD;\n }\n\n this.changes = c;\n}\n\nvar prototype = inherits(MultiPulse, Pulse);\n\n/**\n * Creates a new pulse based on the values of this pulse.\n * The dataflow, time stamp and field modification values are copied over.\n * @return {Pulse}\n */\nprototype.fork = function(flags) {\n var p = new Pulse(this.dataflow).init(this, flags & this.NO_FIELDS);\n if (flags !== undefined) {\n if (flags & p.ADD) {\n this.visit(p.ADD, function(t) { return p.add.push(t); });\n }\n if (flags & p.REM) {\n this.visit(p.REM, function(t) { return p.rem.push(t); });\n }\n if (flags & p.MOD) {\n this.visit(p.MOD, function(t) { return p.mod.push(t); });\n }\n }\n return p;\n};\n\nprototype.changed = function(flags) {\n return this.changes & flags;\n};\n\nprototype.modified = function(_) {\n var p = this, fields = p.fields;\n return !(fields && (p.changes & p.MOD)) ? 0\n : isArray(_) ? _.some(function(f) { return fields[f]; })\n : fields[_];\n};\n\nprototype.filter = function() {\n error('MultiPulse does not support filtering.');\n};\n\nprototype.materialize = function() {\n error('MultiPulse does not support materialization.');\n};\n\nprototype.visit = function(flags, visitor) {\n var p = this,\n pulses = p.pulses,\n n = pulses.length,\n i = 0;\n\n if (flags & p.SOURCE) {\n for (; i<n; ++i) {\n pulses[i].visit(flags, visitor);\n }\n } else {\n for (; i<n; ++i) {\n if (pulses[i].stamp === p.stamp) {\n pulses[i].visit(flags, visitor);\n }\n }\n }\n\n return p;\n};\n","import {default as Pulse, StopPropagation} from '../Pulse';\nimport MultiPulse from '../MultiPulse';\nimport asyncCallback from '../util/asyncCallback';\nimport UniqueList from '../util/UniqueList';\nimport {id, isArray, Info, Debug} from 'vega-util';\n\n/**\n * Evaluates the dataflow and returns a Promise that resolves when pulse\n * propagation completes. This method will increment the current timestamp\n * and process all updated, pulsed and touched operators. When invoked for\n * the first time, all registered operators will be processed. This method\n * should not be invoked by third-party clients, use {@link runAsync} or\n * {@link run} instead.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n * evaluation completes.\n */\nexport async function evaluate(encode, prerun, postrun) {\n const df = this,\n level = df.logLevel();\n\n // if the pulse value is set, this is a re-entrant call\n if (df._pulse) return reentrant(df);\n\n // wait for pending datasets to load\n if (df._pending) {\n await df._pending;\n }\n\n // invoke prerun function, if provided\n if (prerun) await asyncCallback(df, prerun);\n\n // exit early if there are no updates\n if (!df._touched.length) {\n df.info('Dataflow invoked, but nothing to do.');\n return df;\n }\n\n // increment timestamp clock\n let stamp = ++df._clock,\n count = 0, op, next, dt, error;\n\n // set the current pulse\n df._pulse = new Pulse(df, stamp, encode);\n\n if (level >= Info) {\n dt = Date.now();\n df.debug('-- START PROPAGATION (' + stamp + ') -----');\n }\n\n // initialize priority queue, reset touched operators\n df._touched.forEach(function(op) { df._enqueue(op, true); });\n df._touched = UniqueList(id);\n\n try {\n while (df._heap.size() > 0) {\n // dequeue operator with highest priority\n op = df._heap.pop();\n\n // re-queue if rank changed\n if (op.rank !== op.qrank) { df._enqueue(op, true); continue; }\n\n // otherwise, evaluate the operator\n next = op.run(df._getPulse(op, encode));\n\n // await if operator returned a promise\n if (next.then) {\n next = await next;\n }\n\n if (level >= Debug) {\n df.debug(op.id, next === StopPropagation ? 'STOP' : next, op);\n }\n\n // propagate evaluation, enqueue dependent operators\n if (next !== StopPropagation) {\n df._pulse = next;\n if (op._targets) op._targets.forEach(op => df._enqueue(op));\n }\n\n // increment visit counter\n ++count;\n }\n } catch (err) {\n error = err;\n }\n\n // reset pulse map\n df._pulses = {};\n df._pulse = null;\n\n if (level >= Info) {\n dt = Date.now() - dt;\n df.info('> Pulse ' + stamp + ': ' + count + ' operators; ' + dt + 'ms');\n }\n\n if (error) {\n df._postrun = [];\n df.error(error);\n }\n\n // invoke callbacks queued via runAfter\n if (df._postrun.length) {\n const pr = df._postrun.sort((a, b) => b.priority - a.priority);\n df._postrun = [];\n for (let i=0; i<pr.length; ++i) {\n await asyncCallback(df, pr[i].callback);\n }\n }\n\n // invoke postrun function, if provided\n if (postrun) await asyncCallback(df, postrun);\n\n return df;\n}\n\n/**\n * Queues dataflow evaluation to run once any other queued evaluations have\n * completed and returns a Promise that resolves when the queued pulse\n * propagation completes. If provided, a callback function will be invoked\n * immediately before evaluation commences. This method will ensure a\n * separate evaluation is invoked for each time it is called.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n * evaluation completes.\n */\nexport async function runAsync(encode, prerun, postrun) {\n // await previously queued functions\n while (this._running) await this._running;\n\n // run dataflow, manage running promise\n const clear = () => this._running = null;\n (this._running = this.evaluate(encode, prerun, postrun))\n .then(clear, clear);\n\n return this._running;\n}\n\n/**\n * Requests dataflow evaluation and the immediately returns this dataflow\n * instance. If there are pending data loading or other asynchronous\n * operations, the dataflow will evaluate asynchronously after this method\n * has been invoked. To track when dataflow evaluation completes, use the\n * {@link runAsync} method instead. This method will raise an error if\n * invoked while the dataflow is already in the midst of evaluation.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode module.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Dataflow} - This dataflow instance.\n */\nexport function run(encode, prerun, postrun) {\n return this._pulse ? reentrant(this)\n : (this.evaluate(encode, prerun, postrun), this);\n}\n\n/**\n * Schedules a callback function to be invoked after the current pulse\n * propagation completes. If no propagation is currently occurring,\n * the function is invoked immediately. Callbacks scheduled via runAfter\n * are invoked immediately upon completion of the current cycle, before\n * any request queued via runAsync. This method is primarily intended for\n * internal use. Third-party callers using runAfter to schedule a callback\n * that invokes {@link run} or {@link runAsync} should not use this method,\n * but instead use {@link runAsync} with prerun or postrun arguments.\n * @param {function(Dataflow)} callback - The callback function to run.\n * The callback will be invoked with this Dataflow instance as its\n * sole argument.\n * @param {boolean} enqueue - A boolean flag indicating that the\n * callback should be queued up to run after the next propagation\n * cycle, suppressing immediate invocation when propagation is not\n * currently occurring.\n * @param {number} [priority] - A priority value used to sort registered\n * callbacks to determine execution order. This argument is intended\n * for internal Vega use only.\n */\nexport function runAfter(callback, enqueue, priority) {\n if (this._pulse || enqueue) {\n // pulse propagation is currently running, queue to run after\n this._postrun.push({\n priority: priority || 0,\n callback: callback\n });\n } else {\n // pulse propagation already complete, invoke immediately\n try { callback(this); } catch (err) { this.error(err); }\n }\n}\n\n/**\n * Raise an error for re-entrant dataflow evaluation.\n */\nfunction reentrant(df) {\n df.error('Dataflow already running. Use runAsync() to chain invocations.');\n return df;\n}\n\n/**\n * Enqueue an operator into the priority queue for evaluation. The operator\n * will be enqueued if it has no registered pulse for the current cycle, or if\n * the force argument is true. Upon enqueue, this method also sets the\n * operator's qrank to the current rank value.\n * @param {Operator} op - The operator to enqueue.\n * @param {boolean} [force] - A flag indicating if the operator should be\n * forceably added to the queue, even if it has already been previously\n * enqueued during the current pulse propagation. This is useful when the\n * dataflow graph is dynamically modified and the operator rank changes.\n */\nexport function enqueue(op, force) {\n var p = !this._pulses[op.id];\n if (p) this._pulses[op.id] = this._pulse;\n if (p || force) {\n op.qrank = op.rank;\n this._heap.push(op);\n }\n}\n\n/**\n * Provide a correct pulse for evaluating an operator. If the operator has an\n * explicit source operator, we will try to pull the pulse(s) from it.\n * If there is an array of source operators, we build a multi-pulse.\n * Otherwise, we return a current pulse with correct source data.\n * If the pulse is the pulse map has an explicit target set, we use that.\n * Else if the pulse on the upstream source operator is current, we use that.\n * Else we use the pulse from the pulse map, but copy the source tuple array.\n * @param {Operator} op - The operator for which to get an input pulse.\n * @param {string} [encode] - An (optional) encoding set name with which to\n * annotate the returned pulse. See {@link run} for more information.\n */\nexport function getPulse(op, encode) {\n var s = op.source,\n stamp = this._clock,\n p;\n\n if (s && isArray(s)) {\n p = s.map(function(_) { return _.pulse; });\n return new MultiPulse(this, stamp, p, encode);\n }\n\n p = this._pulses[op.id];\n if (s) {\n s = s.pulse;\n if (!s || s === StopPropagation) {\n p.source = [];\n } else if (s.stamp === stamp && p.target !== op) {\n p = s;\n } else {\n p.source = s.source;\n }\n }\n\n return p;\n}\n","import Pulse from '../Pulse';\n\nvar NO_OPT = {skip: false, force: false};\n\n/**\n * Touches an operator, scheduling it to be evaluated. If invoked outside of\n * a pulse propagation, the operator will be evaluated the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the operator\n * will be queued for evaluation if and only if the operator has not yet been\n * evaluated on the current propagation timestamp.\n * @param {Operator} op - The operator to touch.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nexport function touch(op, options) {\n var opt = options || NO_OPT;\n if (this._pulse) {\n // if in midst of propagation, add to priority queue\n this._enqueue(op);\n } else {\n // otherwise, queue for next propagation\n this._touched.add(op);\n }\n if (opt.skip) op.skip(true);\n return this;\n}\n\n/**\n * Updates the value of the given operator.\n * @param {Operator} op - The operator to update.\n * @param {*} value - The value to set.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.force] - If true, the operator will\n * be re-evaluated even if its value has not changed.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nexport function update(op, value, options) {\n var opt = options || NO_OPT;\n if (op.set(value) || opt.force) {\n this.touch(op, opt);\n }\n return this;\n}\n\n/**\n * Pulses an operator with a changeset of tuples. If invoked outside of\n * a pulse propagation, the pulse will be applied the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the pulse\n * will be added to the set of active pulses and will be applied if and\n * only if the target operator has not yet been evaluated on the current\n * propagation timestamp.\n * @param {Operator} op - The operator to pulse.\n * @param {ChangeSet} value - The tuple changeset to apply.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nexport function pulse(op, changeset, options) {\n this.touch(op, options || NO_OPT);\n\n var p = new Pulse(this, this._clock + (this._pulse ? 0 : 1)),\n t = op.pulse && op.pulse.source || [];\n p.target = op;\n this._pulses[op.id] = changeset.pulse(p, t);\n\n return this;\n}\n","export default function Heap(cmp) {\n var nodes = [];\n return {\n size: () => nodes.length,\n peek: () => nodes[0],\n push: x => {\n nodes.push(x);\n return siftdown(nodes, 0, nodes.length - 1, cmp);\n },\n pop: () => {\n var last = nodes.pop(), item;\n if (nodes.length) {\n item = nodes[0];\n nodes[0] = last;\n siftup(nodes, 0, cmp);\n } else {\n item = last;\n }\n return item;\n }\n };\n}\n\nfunction siftdown(array, start, idx, cmp) {\n var item, parent, pidx;\n\n item = array[idx];\n while (idx > start) {\n pidx = (idx - 1) >> 1;\n parent = array[pidx];\n if (cmp(item, parent) < 0) {\n array[idx] = parent;\n idx = pidx;\n continue;\n }\n break;\n }\n return (array[idx] = item);\n}\n\nfunction siftup(array, idx, cmp) {\n var start = idx,\n end = array.length,\n item = array[idx],\n cidx = (idx << 1) + 1, ridx;\n\n while (cidx < end) {\n ridx = cidx + 1;\n if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n cidx = ridx;\n }\n array[idx] = array[cidx];\n idx = cidx;\n cidx = (idx << 1) + 1;\n }\n array[idx] = item;\n return siftdown(array, start, idx, cmp);\n}\n","import add from './add';\nimport connect from './connect';\nimport events from './events';\nimport {ingest, parse, preload, request} from './load';\nimport on from './on';\nimport {rank, rerank} from './rank';\nimport {evaluate, run, runAsync, runAfter, enqueue, getPulse} from './run';\nimport {pulse, touch, update} from './update';\nimport changeset from '../ChangeSet';\nimport Heap from '../util/Heap';\nimport UniqueList from '../util/UniqueList';\nimport {loader} from 'vega-loader';\nimport {id, logger, Error} from 'vega-util';\n\n/**\n * A dataflow graph for reactive processing of data streams.\n * @constructor\n */\nexport default function Dataflow() {\n this.logger(logger());\n this.logLevel(Error);\n\n this._clock = 0;\n this._rank = 0;\n try {\n this._loader = loader();\n } catch (e) {\n // do nothing if loader module is unavailable\n }\n\n this._touched = UniqueList(id);\n this._pulses = {};\n this._pulse = null;\n\n this._heap = Heap((a, b) => a.qrank - b.qrank);\n this._postrun = [];\n}\n\nvar prototype = Dataflow.prototype;\n\n/**\n * The current timestamp of this dataflow. This value reflects the\n * timestamp of the previous dataflow run. The dataflow is initialized\n * with a stamp value of 0. The initial run of the dataflow will have\n * a timestap of 1, and so on. This value will match the\n * {@link Pulse.stamp} property.\n * @return {number} - The current timestamp value.\n */\nprototype.stamp = function() {\n return this._clock;\n};\n\n/**\n * Gets or sets the loader instance to use for data file loading. A\n * loader object must provide a \"load\" method for loading files and a\n * \"sanitize\" method for checking URL/filename validity. Both methods\n * should accept a URI and options hash as arguments, and return a Promise\n * that resolves to the loaded file contents (load) or a hash containing\n * sanitized URI data with the sanitized url assigned to the \"href\" property\n * (sanitize).\n * @param {object} _ - The loader instance to use.\n * @return {object|Dataflow} - If no arguments are provided, returns\n * the current loader instance. Otherwise returns this Dataflow instance.\n */\nprototype.loader = function(_) {\n if (arguments.length) {\n this._loader = _;\n return this;\n } else {\n return this._loader;\n }\n};\n\n/**\n * Empty entry threshold for garbage cleaning. Map data structures will\n * perform cleaning once the number of empty entries exceeds this value.\n */\nprototype.cleanThreshold = 1e4;\n\n// OPERATOR REGISTRATION\nprototype.add = add;\nprototype.connect = connect;\nprototype.rank = rank;\nprototype.rerank = rerank;\n\n// OPERATOR UPDATES\nprototype.pulse = pulse;\nprototype.touch = touch;\nprototype.update = update;\nprototype.changeset = changeset;\n\n// DATA LOADING\nprototype.ingest = ingest;\nprototype.parse = parse;\nprototype.preload = preload;\nprototype.request = request;\n\n// EVENT HANDLING\nprototype.events = events;\nprototype.on = on;\n\n// PULSE PROPAGATION\nprototype.evaluate = evaluate;\nprototype.run = run;\nprototype.runAsync = runAsync;\nprototype.runAfter = runAfter;\nprototype._enqueue = enqueue;\nprototype._getPulse = getPulse;\n\n// LOGGING AND ERROR HANDLING\n\nfunction logMethod(method) {\n return function() {\n return this._log[method].apply(this, arguments);\n };\n}\n\n/**\n * Get or set the logger instance used to log messages. If no arguments are\n * provided, returns the current logger instance. Otherwise, sets the logger\n * and return this Dataflow instance. Provided loggers must support the full\n * API of logger objects generated by the vega-util logger method. Note that\n * by default the log level of the new logger will be used; use the logLevel\n * method to adjust the log level as needed.\n */\nprototype.logger = function(logger) {\n if (arguments.length) {\n this._log = logger;\n return this;\n } else {\n return this._log;\n }\n};\n\n/**\n * Logs an error message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit error messages.\n */\nprototype.error = logMethod('error');\n\n/**\n * Logs a warning message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit warning messages.\n */\nprototype.warn = logMethod('warn');\n\n/**\n * Logs a information message. By default, logged messages are written to\n * console output. The message will only be logged if the current log level is\n * high enough to permit information messages.\n */\nprototype.info = logMethod('info');\n\n/**\n * Logs a debug message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit debug messages.\n */\nprototype.debug = logMethod('debug');\n\n/**\n * Get or set the current log level. If an argument is provided, it\n * will be used as the new log level.\n * @param {number} [level] - Should be one of None, Warn, Info\n * @return {number} - The current log level.\n */\nprototype.logLevel = logMethod('level');\n","import Operator from './Operator';\nimport {inherits} from 'vega-util';\n\n/**\n * Abstract class for operators that process data tuples.\n * Subclasses must provide a {@link transform} method for operator processing.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {Operator} [source] - The operator from which to receive pulses.\n */\nexport default function Transform(init, params) {\n Operator.call(this, init, null, params);\n}\n\nvar prototype = inherits(Transform, Operator);\n\n/**\n * Overrides {@link Operator.evaluate} for transform operators.\n * Internally, this method calls {@link evaluate} to perform processing.\n * If {@link evaluate} returns a falsy value, the input pulse is returned.\n * This method should NOT be overridden, instead overrride {@link evaluate}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return the output pulse for this operator (or StopPropagation)\n */\nprototype.run = function(pulse) {\n if (pulse.stamp <= this.stamp) return pulse.StopPropagation;\n\n var rv;\n if (this.skip()) {\n this.skip(false);\n } else {\n rv = this.evaluate(pulse);\n }\n rv = rv || pulse;\n\n this.stamp = pulse.stamp;\n\n if (rv.then) {\n rv = rv.then(_ => this.pulse =_);\n } else if (rv !== pulse.StopPropagation) {\n this.pulse = rv;\n }\n\n return rv;\n};\n\n/**\n * Overrides {@link Operator.evaluate} for transform operators.\n * Marshalls parameter values and then invokes {@link transform}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n value (including undefined) will let the input pulse pass through.\n */\nprototype.evaluate = function(pulse) {\n var params = this.marshall(pulse.stamp),\n out = this.transform(params, pulse);\n params.clear();\n return out;\n};\n\n/**\n * Process incoming pulses.\n * Subclasses should override this method to implement transforms.\n * @param {Parameters} _ - The operator parameter values.\n * @param {Pulse} pulse - The current dataflow pulse.\n * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n * value (including undefined) will let the input pulse pass through.\n */\nprototype.transform = function() {};\n","/**\n * Connect a target operator as a dependent of source operators.\n * If necessary, this method will rerank the target operator and its\n * dependents to ensure propagation proceeds in a topologically sorted order.\n * @param {Operator} target - The target operator.\n * @param {Array<Operator>} - The source operators that should propagate\n * to the target operator.\n */\nexport default function(target, sources) {\n var targetRank = target.rank, i, n;\n\n for (i=0, n=sources.length; i<n; ++i) {\n if (targetRank < sources[i].rank) {\n this.rerank(target);\n return;\n }\n }\n}\n","import {error} from 'vega-util';\n\n/**\n * Assigns a rank to an operator. Ranks are assigned in increasing order\n * by incrementing an internal rank counter.\n * @param {Operator} op - The operator to assign a rank.\n */\nexport function rank(op) {\n op.rank = ++this._rank;\n}\n\n/**\n * Re-ranks an operator and all downstream target dependencies. This\n * is necessary when upstream dependencies of higher rank are added to\n * a target operator.\n * @param {Operator} op - The operator to re-rank.\n */\nexport function rerank(op) {\n var queue = [op],\n cur, list, i;\n\n while (queue.length) {\n this.rank(cur = queue.pop());\n if (list = cur._targets) {\n for (i=list.length; --i >= 0;) {\n queue.push(cur = list[i]);\n if (cur === op) error('Cycle detected in dataflow graph.');\n }\n }\n }\n}\n","export var transforms = {};\n\nexport function definition(type) {\n var t = transform(type);\n return t && t.Definition || null;\n}\n\nexport function transform(type) {\n type = type && type.toLowerCase();\n return transforms.hasOwnProperty(type) ? transforms[type] : null;\n}\n","export function multikey(f) {\n return function(x) {\n var n = f.length,\n i = 1,\n k = String(f[0](x));\n\n for (; i<n; ++i) {\n k += '|' + f[i](x);\n }\n\n return k;\n };\n}\n\nexport function groupkey(fields) {\n return !fields || !fields.length ? function() { return ''; }\n : fields.length === 1 ? fields[0]\n : multikey(fields);\n}\n","import {extend, identity} from 'vega-util';\n\nexport function measureName(op, field, as) {\n return as || (op + (!field ? '' : '_' + field));\n}\n\nexport var AggregateOps = {\n 'values': measure({\n name: 'values',\n init: 'cell.store = true;',\n set: 'cell.data.values()', idx: -1\n }),\n 'count': measure({\n name: 'count',\n set: 'cell.num'\n }),\n '__count__': measure({\n name: 'count',\n set: 'this.missing + this.valid'\n }),\n 'missing': measure({\n name: 'missing',\n set: 'this.missing'\n }),\n 'valid': measure({\n name: 'valid',\n set: 'this.valid'\n }),\n 'sum': measure({\n name: 'sum',\n init: 'this.sum = 0;',\n add: 'this.sum += +v;',\n rem: 'this.sum -= v;',\n set: 'this.sum'\n }),\n 'mean': measure({\n name: 'mean',\n init: 'this.mean = 0;',\n add: 'var d = v - this.mean; this.mean += d / this.valid;',\n rem: 'var d = v - this.mean; this.mean -= this.valid ? d / this.valid : this.mean;',\n set: 'this.valid ? this.mean : undefined'\n }),\n 'average': measure({\n name: 'average',\n set: 'this.valid ? this.mean : undefined',\n req: ['mean'], idx: 1\n }),\n 'variance': measure({\n name: 'variance',\n init: 'this.dev = 0;',\n add: 'this.dev += d * (v - this.mean);',\n rem: 'this.dev -= d * (v - this.mean);',\n set: 'this.valid > 1 ? this.dev / (this.valid-1) : undefined',\n req: ['mean'], idx: 1\n }),\n 'variancep': measure({\n name: 'variancep',\n set: 'this.valid > 1 ? this.dev / this.valid : undefined',\n req: ['variance'], idx: 2\n }),\n 'stdev': measure({\n name: 'stdev',\n set: 'this.valid > 1 ? Math.sqrt(this.dev / (this.valid-1)) : undefined',\n req: ['variance'], idx: 2\n }),\n 'stdevp': measure({\n name: 'stdevp',\n set: 'this.valid > 1 ? Math.sqrt(this.dev / this.valid) : undefined',\n req: ['variance'], idx: 2\n }),\n 'stderr': measure({\n name: 'stderr',\n set: 'this.valid > 1 ? Math.sqrt(this.dev / (this.valid * (this.valid-1))) : undefined',\n req: ['variance'], idx: 2\n }),\n 'distinct': measure({\n name: 'distinct',\n set: 'cell.data.distinct(this.get)',\n req: ['values'], idx: 3\n }),\n 'ci0': measure({\n name: 'ci0',\n set: 'cell.data.ci0(this.get)',\n req: ['values'], idx: 3\n }),\n 'ci1': measure({\n name: 'ci1',\n set: 'cell.data.ci1(this.get)',\n req: ['values'], idx: 3\n }),\n 'median': measure({\n name: 'median',\n set: 'cell.data.q2(this.get)',\n req: ['values'], idx: 3\n }),\n 'q1': measure({\n name: 'q1',\n set: 'cell.data.q1(this.get)',\n req: ['values'], idx: 3\n }),\n 'q3': measure({\n name: 'q3',\n set: 'cell.data.q3(this.get)',\n req: ['values'], idx: 3\n }),\n 'argmin': measure({\n name: 'argmin',\n init: 'this.argmin = undefined;',\n add: 'if (v < this.min) this.argmin = t;',\n rem: 'if (v <= this.min) this.argmin = undefined;',\n set: 'this.argmin || cell.data.argmin(this.get)',\n req: ['min'], str: ['values'], idx: 3\n }),\n 'argmax': measure({\n name: 'argmax',\n init: 'this.argmax = undefined;',\n add: 'if (v > this.max) this.argmax = t;',\n rem: 'if (v >= this.max) this.argmax = undefined;',\n set: 'this.argmax || cell.data.argmax(this.get)',\n req: ['max'], str: ['values'], idx: 3\n }),\n 'min': measure({\n name: 'min',\n init: 'this.min = undefined;',\n add: 'if (v < this.min || this.min === undefined) this.min = v;',\n rem: 'if (v <= this.min) this.min = NaN;',\n set: 'this.min = (isNaN(this.min) ? cell.data.min(this.get) : this.min)',\n str: ['values'], idx: 4\n }),\n 'max': measure({\n name: 'max',\n init: 'this.max = undefined;',\n add: 'if (v > this.max || this.max === undefined) this.max = v;',\n rem: 'if (v >= this.max) this.max = NaN;',\n set: 'this.max = (isNaN(this.max) ? cell.data.max(this.get) : this.max)',\n str: ['values'], idx: 4\n })\n};\n\nexport var ValidAggregateOps = Object.keys(AggregateOps);\n\nexport function createMeasure(op, name) {\n return AggregateOps[op](name);\n}\n\nfunction measure(base) {\n return function(out) {\n var m = extend({init:'', add:'', rem:'', idx:0}, base);\n m.out = out || base.name;\n return m;\n };\n}\n\nfunction compareIndex(a, b) {\n return a.idx - b.idx;\n}\n\nfunction resolve(agg, stream) {\n function collect(m, a) {\n function helper(r) { if (!m[r]) collect(m, m[r] = AggregateOps[r]()); }\n if (a.req) a.req.forEach(helper);\n if (stream && a.str) a.str.forEach(helper);\n return m;\n }\n var map = agg.reduce(\n collect,\n agg.reduce(function(m, a) {\n m[a.name] = a;\n return m;\n }, {})\n );\n var values = [], key;\n for (key in map) values.push(map[key]);\n return values.sort(compareIndex);\n}\n\nexport function compileMeasures(agg, field) {\n var get = field || identity,\n all = resolve(agg, true), // assume streaming removes may occur\n init = 'var cell = this.cell; this.valid = 0; this.missing = 0;',\n ctr = 'this.cell = cell; this.init();',\n add = 'if(v==null){++this.missing; return;} if(v!==v) return; ++this.valid;',\n rem = 'if(v==null){--this.missing; return;} if(v!==v) return; --this.valid;',\n set = 'var cell = this.cell;';\n\n all.forEach(function(a) {\n init += a.init;\n add += a.add;\n rem += a.rem;\n });\n agg.slice().sort(compareIndex).forEach(function(a) {\n set += 't[\\'' + a.out + '\\']=' + a.set + ';';\n });\n set += 'return t;';\n\n ctr = Function('cell', ctr);\n ctr.prototype.init = Function(init);\n ctr.prototype.add = Function('v', 't', add);\n ctr.prototype.rem = Function('v', 't', rem);\n ctr.prototype.set = Function('t', set);\n ctr.prototype.get = get;\n ctr.fields = agg.map(function(_) { return _.out; });\n return ctr;\n}\n","export default function(_) {\n // determine range\n var maxb = _.maxbins || 20,\n base = _.base || 10,\n logb = Math.log(base),\n div = _.divide || [5, 2],\n min = _.extent[0],\n max = _.extent[1],\n span = (max - min) || Math.abs(min) || 1,\n step, level, minstep, precision, v, i, n, eps;\n\n if (_.step) {\n // if step size is explicitly given, use that\n step = _.step;\n } else if (_.steps) {\n // if provided, limit choice to acceptable step sizes\n v = span / maxb;\n for (i=0, n=_.steps.length; i < n && _.steps[i] < v; ++i);\n step = _.steps[Math.max(0, i-1)];\n } else {\n // else use span to determine step size\n level = Math.ceil(Math.log(maxb) / logb);\n minstep = _.minstep || 0;\n step = Math.max(\n minstep,\n Math.pow(base, Math.round(Math.log(span) / logb) - level)\n );\n\n // increase step size if too many bins\n while (Math.ceil(span/step) > maxb) { step *= base; }\n\n // decrease step size if allowed\n for (i=0, n=div.length; i<n; ++i) {\n v = step / div[i];\n if (v >= minstep && span / v <= maxb) step = v;\n }\n }\n\n // update precision, min and max\n v = Math.log(step);\n precision = v >= 0 ? 0 : ~~(-v / logb) + 1;\n eps = Math.pow(base, -precision - 1);\n if (_.nice || _.nice === undefined) {\n v = Math.floor(min / step + eps) * step;\n min = min < v ? v - step : v;\n max = Math.ceil(max / step) * step;\n }\n\n return {\n start: min,\n stop: max === min ? min + step : max,\n step: step\n };\n}\n","export default function*(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","export var random = Math.random;\n\nexport function setRandom(r) {\n random = r;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function variance(values, valueof) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n if (count > 1) return sum / (count - 1);\n}\n","export default function(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number.js\";\n\nexport default function quantile(values, p, valueof = number) {\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import ascending from \"./ascending.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = array.length - 1, compare = ascending) {\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import quantile from \"./quantile.js\";\nimport quickselect from \"./quickselect.js\";\n\nfunction* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n\nexport default function(values, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!values.length) return;\n const n = values.length;\n const i = n >> 1;\n quickselect(values, i - 1, 0);\n if ((n & 1) === 0) quickselect(values, i, i);\n return quantile(values, 0.5);\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function(source, keys) {\n return Array.from(keys, key => source[key]);\n}\n","import transpose from \"./transpose.js\";\n\nexport default function() {\n return transpose(arguments);\n}\n","import numbers from './numbers';\nimport {random} from './random';\nimport {quantile, ascending} from 'd3-array';\n\nexport default function(array, samples, alpha, f) {\n if (!array.length) return [undefined, undefined];\n\n var values = Float64Array.from(numbers(array, f)),\n n = values.length,\n m = samples,\n a, i, j, mu;\n\n for (j=0, mu=Array(m); j<m; ++j) {\n for (a=0, i=0; i<n; ++i) {\n a += values[~~(random() * n)];\n }\n mu[j] = a / n;\n }\n\n return [\n quantile(mu.sort(ascending), alpha/2),\n quantile(mu, 1-(alpha/2))\n ];\n}\n","import numbers from './numbers';\nimport {quantile, ascending} from 'd3-array';\n\nexport default function(array, f) {\n var values = Float64Array.from(numbers(array, f));\n\n return [\n quantile(values.sort(ascending), 0.25),\n quantile(values, 0.50),\n quantile(values, 0.75)\n ];\n}\n","export default function(seed) {\n // Random numbers using a Linear Congruential Generator with seed value\n // Uses glibc values from https://en.wikipedia.org/wiki/Linear_congruential_generator\n return function() {\n seed = (1103515245 * seed + 12345) % 2147483647;\n return seed / 2147483647;\n };\n}\n","import {random} from './random';\n\nexport default function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n\n var dist = {},\n a, b, d;\n\n dist.min = function(_) {\n if (arguments.length) {\n a = _ || 0;\n d = b - a;\n return dist;\n } else {\n return a;\n }\n };\n\n dist.max = function(_) {\n if (arguments.length) {\n b = _ || 0;\n d = b - a;\n return dist;\n } else {\n return b;\n }\n };\n\n dist.sample = function() {\n return a + Math.floor(d * random());\n };\n\n dist.pdf = function(x) {\n return (x === Math.floor(x) && x >= a && x < b) ? 1 / d : 0;\n };\n\n dist.cdf = function(x) {\n var v = Math.floor(x);\n return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n };\n\n dist.icdf = function(p) {\n return (p >= 0 && p <= 1) ? a - 1 + Math.floor(p * d) : NaN;\n };\n\n return dist.min(min).max(max);\n}\n","import {random} from './random';\n\nexport default function(mean, stdev) {\n var mu,\n sigma,\n next = NaN,\n dist = {};\n\n dist.mean = function(_) {\n if (arguments.length) {\n mu = _ || 0;\n next = NaN;\n return dist;\n } else {\n return mu;\n }\n };\n\n dist.stdev = function(_) {\n if (arguments.length) {\n sigma = _ == null ? 1 : _;\n next = NaN;\n return dist;\n } else {\n return sigma;\n }\n };\n\n dist.sample = function() {\n var x = 0, y = 0, rds, c;\n if (next === next) {\n x = next;\n next = NaN;\n return x;\n }\n do {\n x = random() * 2 - 1;\n y = random() * 2 - 1;\n rds = x * x + y * y;\n } while (rds === 0 || rds > 1);\n c = Math.sqrt(-2 * Math.log(rds) / rds); // Box-Muller transform\n next = mu + y * c * sigma;\n return mu + x * c * sigma;\n };\n\n dist.pdf = function(x) {\n var exp = Math.exp(Math.pow(x-mu, 2) / (-2 * Math.pow(sigma, 2)));\n return (1 / (sigma * Math.sqrt(2*Math.PI))) * exp;\n };\n\n // Approximation from West (2009)\n // Better Approximations to Cumulative Normal Functions\n dist.cdf = function(x) {\n var cd,\n z = (x - mu) / sigma,\n Z = Math.abs(z);\n if (Z > 37) {\n cd = 0;\n } else {\n var sum, exp = Math.exp(-Z*Z/2);\n if (Z < 7.07106781186547) {\n sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n sum = sum * Z + 6.37396220353165;\n sum = sum * Z + 33.912866078383;\n sum = sum * Z + 112.079291497871;\n sum = sum * Z + 221.213596169931;\n sum = sum * Z + 220.206867912376;\n cd = exp * sum;\n sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n sum = sum * Z + 16.064177579207;\n sum = sum * Z + 86.7807322029461;\n sum = sum * Z + 296.564248779674;\n sum = sum * Z + 637.333633378831;\n sum = sum * Z + 793.826512519948;\n sum = sum * Z + 440.413735824752;\n cd = cd / sum;\n } else {\n sum = Z + 0.65;\n sum = Z + 4 / sum;\n sum = Z + 3 / sum;\n sum = Z + 2 / sum;\n sum = Z + 1 / sum;\n cd = exp / sum / 2.506628274631;\n }\n }\n return z > 0 ? 1 - cd : cd;\n };\n\n // Approximation of Probit function using inverse error function.\n dist.icdf = function(p) {\n if (p <= 0 || p >= 1) return NaN;\n var x = 2*p - 1,\n v = (8 * (Math.PI - 3)) / (3 * Math.PI * (4-Math.PI)),\n a = (2 / (Math.PI*v)) + (Math.log(1 - Math.pow(x,2)) / 2),\n b = Math.log(1 - (x*x)) / v,\n s = (x > 0 ? 1 : -1) * Math.sqrt(Math.sqrt((a*a) - b) - a);\n return mu + sigma * Math.SQRT2 * s;\n };\n\n return dist.mean(mean).stdev(stdev);\n}\n","import gaussian from './normal';\nimport quartiles from './quartiles';\nimport {random} from './random';\nimport {variance} from 'd3-array';\n\n// TODO: support for additional kernels?\nexport default function(support, bandwidth) {\n var kernel = gaussian(),\n dist = {},\n n = 0;\n\n dist.data = function(_) {\n if (arguments.length) {\n support = _;\n n = _ ? _.length : 0;\n return dist.bandwidth(bandwidth);\n } else {\n return support;\n }\n };\n\n dist.bandwidth = function(_) {\n if (!arguments.length) return bandwidth;\n bandwidth = _;\n if (!bandwidth && support) bandwidth = estimateBandwidth(support);\n return dist;\n };\n\n dist.sample = function() {\n return support[~~(random() * n)] + bandwidth * kernel.sample();\n };\n\n dist.pdf = function(x) {\n for (var y=0, i=0; i<n; ++i) {\n y += kernel.pdf((x - support[i]) / bandwidth);\n }\n return y / bandwidth / n;\n };\n\n dist.cdf = function(x) {\n for (var y=0, i=0; i<n; ++i) {\n y += kernel.cdf((x - support[i]) / bandwidth);\n }\n return y / n;\n };\n\n dist.icdf = function() {\n throw Error('KDE icdf not supported.');\n };\n\n return dist.data(support);\n}\n\n// Scott, D. W. (1992) Multivariate Density Estimation:\n// Theory, Practice, and Visualization. Wiley.\nfunction estimateBandwidth(array) {\n var n = array.length,\n q = quartiles(array),\n h = (q[2] - q[0]) / 1.34;\n return 1.06 * Math.min(Math.sqrt(variance(array)), h) * Math.pow(n, -0.2);\n}\n","import {random} from './random';\n\nexport default function(dists, weights) {\n var dist = {}, m = 0, w;\n\n function normalize(x) {\n var w = [], sum = 0, i;\n for (i=0; i<m; ++i) { sum += (w[i] = (x[i]==null ? 1 : +x[i])); }\n for (i=0; i<m; ++i) { w[i] /= sum; }\n return w;\n }\n\n dist.weights = function(_) {\n if (arguments.length) {\n w = normalize(weights = (_ || []));\n return dist;\n }\n return weights;\n };\n\n dist.distributions = function(_) {\n if (arguments.length) {\n if (_) {\n m = _.length;\n dists = _;\n } else {\n m = 0;\n dists = [];\n }\n return dist.weights(weights);\n }\n return dists;\n };\n\n dist.sample = function() {\n var r = random(),\n d = dists[m-1],\n v = w[0],\n i = 0;\n\n // first select distribution\n for (; i<m-1; v += w[++i]) {\n if (r < v) { d = dists[i]; break; }\n }\n // then sample from it\n return d.sample();\n };\n\n dist.pdf = function(x) {\n for (var p=0, i=0; i<m; ++i) {\n p += w[i] * dists[i].pdf(x);\n }\n return p;\n };\n\n dist.cdf = function(x) {\n for (var p=0, i=0; i<m; ++i) {\n p += w[i] * dists[i].cdf(x);\n }\n return p;\n };\n\n dist.icdf = function() {\n throw Error('Mixture icdf not supported.');\n };\n\n return dist.distributions(dists).weights(weights);\n}\n","import {random} from './random';\n\nexport default function(min, max) {\n if (max == null) {\n max = (min == null ? 1 : min);\n min = 0;\n }\n\n var dist = {},\n a, b, d;\n\n dist.min = function(_) {\n if (arguments.length) {\n a = _ || 0;\n d = b - a;\n return dist;\n } else {\n return a;\n }\n };\n\n dist.max = function(_) {\n if (arguments.length) {\n b = _ || 0;\n d = b - a;\n return dist;\n } else {\n return b;\n }\n };\n\n dist.sample = function() {\n return a + d * random();\n };\n\n dist.pdf = function(x) {\n return (x >= a && x <= b) ? 1 / d : 0;\n };\n\n dist.cdf = function(x) {\n return x < a ? 0 : x > b ? 1 : (x - a) / d;\n };\n\n dist.icdf = function(p) {\n return (p >= 0 && p <= 1) ? a + p * d : NaN;\n };\n\n return dist.min(min).max(max);\n}\n","// Ordinary Least Squares\nexport default function(uX, uY, uXY, uX2) {\n const delta = uX2 - uX * uX,\n slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta,\n intercept = uY - slope * uX;\n\n return [intercept, slope];\n}\n","export function points(data, x, y, sort) {\n data = data.filter(d => {\n let u = x(d), v = y(d);\n return u != null && (u = +u) >= u && v != null && (v = +v) >= v;\n });\n\n if (sort) {\n data.sort((a, b) => x(a) - x(b));\n }\n\n const X = new Float64Array(data.length),\n Y = new Float64Array(data.length);\n\n let i = 0;\n for (let d of data) {\n X[i] = x(d);\n Y[i] = y(d);\n ++i;\n }\n\n return [X, Y];\n}\n\nexport function visitPoints(data, x, y, callback) {\n let index = -1, i = -1, u, v;\n\n for (let d of data) {\n u = x(d, ++index, data);\n v = y(d, index, data);\n if (u != null && (u = +u) >= u && v != null && (v = +v) >= v) {\n callback(u, v, ++i);\n }\n }\n}\n","import {visitPoints} from './points';\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nexport default function(data, x, y, uY, predict) {\n let SSE = 0, SST = 0;\n\n visitPoints(data, x, y, (dx, dy) => {\n const sse = dy - predict(dx),\n sst = dy - uY;\n\n SSE += sse * sse;\n SST += sst * sst;\n });\n\n return 1 - SSE / SST;\n}\n","import ols from './ols';\nimport {visitPoints} from './points';\nimport rSquared from './r-squared';\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nexport default function(data, x, y) {\n let X = 0, Y = 0, XY = 0, X2 = 0, n = 0;\n\n visitPoints(data, x, y, (dx, dy) => {\n X += dx;\n Y += dy;\n XY += dx * dy;\n X2 += dx * dx;\n ++n;\n });\n\n const coef = ols(X / n, Y / n, XY / n, X2 / n),\n predict = x => coef[0] + coef[1] * x;\n\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y / n, predict)\n };\n}\n","import ols from './ols';\nimport {visitPoints} from './points';\nimport rSquared from './r-squared';\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nexport default function(data, x, y) {\n let X = 0, Y = 0, XY = 0, X2 = 0, n = 0;\n\n visitPoints(data, x, y, (dx, dy) => {\n dx = Math.log(dx);\n X += dx;\n Y += dy;\n XY += dx * dy;\n X2 += dx * dx;\n ++n;\n });\n\n const coef = ols(X / n, Y / n, XY / n, X2 / n),\n predict = x => coef[0] + coef[1] * Math.log(x);\n\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y / n, predict)\n };\n}\n","import ols from './ols';\nimport {visitPoints} from './points';\nimport rSquared from './r-squared';\n\nexport default function(data, x, y) {\n let Y = 0, YL = 0, XY = 0, XYL = 0, X2Y = 0, n = 0;\n\n visitPoints(data, x, y, (dx, dy) => {\n const ly = Math.log(dy),\n xy = dx * dy;\n Y += dy;\n XY += xy;\n X2Y += dx * xy;\n YL += dy * ly;\n XYL += xy * ly;\n ++n;\n });\n\n const coef = ols(XY / Y, YL / Y, XYL / Y, X2Y / Y),\n predict = x => coef[0] * Math.exp(coef[1] * x);\n\n coef[0] = Math.exp(coef[0]);\n\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y / n, predict)\n };\n}\n","import ols from './ols';\nimport {visitPoints} from './points';\nimport rSquared from './r-squared';\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nexport default function(data, x, y) {\n let X = 0, Y = 0, XY = 0, X2 = 0, YS = 0, n = 0;\n\n visitPoints(data, x, y, (dx, dy) => {\n const lx = Math.log(dx),\n ly = Math.log(dy);\n X += lx;\n Y += ly;\n XY += lx * ly;\n X2 += lx * lx;\n YS += dy;\n ++n;\n });\n\n const coef = ols(X / n, Y / n, XY / n, X2 / n),\n predict = x => coef[0] * Math.pow(x, coef[1]);\n\n coef[0] = Math.exp(coef[0]);\n\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, YS / n, predict)\n };\n}","import {visitPoints} from './points';\nimport rSquared from './r-squared';\n\nexport default function(data, x, y) {\n let X = 0, Y = 0, X2 = 0, X3 = 0, X4 = 0, XY = 0, X2Y = 0, n = 0;\n\n visitPoints(data, x, y, (dx, dy) => {\n const x2 = dx * dx;\n X += dx;\n Y += dy;\n X2 += x2;\n X3 += x2 * dx;\n X4 += x2 * x2;\n XY += dx * dy;\n X2Y += x2 * dy;\n ++n;\n });\n\n Y = Y / n;\n XY = XY - X * Y;\n X2Y = X2Y - X2 * Y;\n\n const XX = X2 - X * X / n,\n XX2 = X3 - (X2 * X / n),\n X2X2 = X4 - (X2 * X2 / n),\n d = (XX * X2X2 - XX2 * XX2),\n a = (X2Y * XX - XY * XX2) / d,\n b = (XY * X2X2 - X2Y * XX2) / d,\n c = Y - (b * (X / n)) - (a * (X2 / n)),\n predict = x => a * x * x + b * x + c;\n\n return {\n coef: [c, b, a],\n predict: predict,\n rSquared: rSquared(data, x, y, Y, predict)\n };\n}\n","import linear from './linear';\nimport {points} from './points';\nimport quad from './quad';\nimport rSquared from './r-squared';\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n// ... which was adapted from regression-js by Tom Alexander\n// Source: https://github.com/Tom-Alexander/regression-js/blob/master/src/regression.j… License: https://github.com/Tom-Alexander/regression-js/blob/master/LICENSE\nexport default function(data, x, y, order) {\n // use more efficient methods for lower orders\n if (order === 1) return linear(data, x, y);\n if (order === 2) return quad(data, x, y);\n\n const [xv, yv] = points(data, x, y),\n n = xv.length,\n lhs = [],\n rhs = [],\n k = order + 1;\n\n let Y = 0, i, j, l, v, c;\n\n for (i = 0; i < n; ++i) {\n Y += yv[i];\n }\n\n for (i = 0; i < k; ++i) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i) * yv[l];\n }\n lhs.push(v);\n\n c = new Float64Array(k);\n for (j = 0; j < k; ++j) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i + j);\n }\n c[j] = v;\n }\n rhs.push(c);\n }\n rhs.push(lhs);\n\n const coef = gaussianElimination(rhs),\n predict = x => {\n let y = 0, i = 0, n = coef.length;\n for (; i < n; ++i) y += coef[i] * Math.pow(x, i);\n return y;\n };\n\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y / n, predict)\n };\n}\n\n// Given an array for a two-dimensional matrix and the polynomial order,\n// solve A * x = b using Gaussian elimination.\nfunction gaussianElimination(matrix) {\n const n = matrix.length - 1,\n coef = [];\n\n let i, j, k, r, t;\n\n for (i = 0; i < n; ++i) {\n r = i; // max row\n for (j = i + 1; j < n; ++j) {\n if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][r])) {\n r = j;\n }\n }\n\n for (k = i; k < n + 1; ++k) {\n t = matrix[k][i];\n matrix[k][i] = matrix[k][r];\n matrix[k][r] = t;\n }\n\n for (j = i + 1; j < n; ++j) {\n for (k = n; k >= i; k--) {\n matrix[k][j] -= (matrix[k][i] * matrix[i][j]) / matrix[i][i];\n }\n }\n }\n\n for (j = n - 1; j >= 0; --j) {\n t = 0;\n for (k = j + 1; k < n; ++k) {\n t += matrix[k][j] * coef[k];\n }\n coef[j] = (matrix[n][j] - t) / matrix[j][j];\n }\n\n return coef;\n}","import ols from './ols';\nimport {points} from './points';\nimport {median} from 'd3-array';\n\nconst maxiters = 2,\n epsilon = 1e-12;\n\n// Adapted from science.js by Jason Davies\n// Source: https://github.com/jasondavies/science.js/blob/master/src/stats/loess.js\n// License: https://github.com/jasondavies/science.js/blob/master/LICENSE\nexport default function(data, x, y, bandwidth) {\n const [xv, yv] = points(data, x, y, true),\n n = xv.length,\n bw = Math.max(2, ~~(bandwidth * n)), // # nearest neighbors\n yhat = new Float64Array(n),\n residuals = new Float64Array(n),\n robustWeights = new Float64Array(n).fill(1);\n\n for (let iter = -1; ++iter <= maxiters; ) {\n const interval = [0, bw - 1];\n\n for (let i = 0; i < n; ++i) {\n const dx = xv[i],\n i0 = interval[0],\n i1 = interval[1],\n edge = (dx - xv[i0]) > (xv[i1] - dx) ? i0 : i1;\n\n let W = 0, X = 0, Y = 0, XY = 0, X2 = 0,\n denom = 1 / Math.abs(xv[edge] - dx || 1); // avoid singularity!\n\n for (let k = i0; k <= i1; ++k) {\n const xk = xv[k],\n yk = yv[k],\n w = tricube(Math.abs(dx - xk) * denom) * robustWeights[k],\n xkw = xk * w;\n\n W += w;\n X += xkw;\n Y += yk * w;\n XY += yk * xkw;\n X2 += xk * xkw;\n }\n\n // linear regression fit\n const [a, b] = ols(X / W, Y / W, XY / W, X2 / W);\n yhat[i] = a + b * dx;\n residuals[i] = Math.abs(yv[i] - yhat[i]);\n\n updateInterval(xv, i + 1, interval);\n }\n\n if (iter === maxiters) {\n break;\n }\n\n const medianResidual = median(residuals);\n if (Math.abs(medianResidual) < epsilon) break;\n\n for (let i = 0, arg, w; i < n; ++i){\n arg = residuals[i] / (6 * medianResidual);\n // default to epsilon (rather than zero) for large deviations\n // keeping weights tiny but non-zero prevents singularites\n robustWeights[i] = (arg >= 1) ? epsilon : ((w = 1 - arg * arg) * w);\n }\n }\n\n return output(xv, yhat);\n}\n\n// weighting kernel for local regression\nfunction tricube(x) {\n return (x = 1 - x * x * x) * x * x;\n}\n\n// advance sliding window interval of nearest neighbors\nfunction updateInterval(xv, i, interval) {\n let val = xv[i],\n left = interval[0],\n right = interval[1] + 1;\n\n if (right >= xv.length) return;\n\n // step right if distance to new right edge is <= distance to old left edge\n // step when distance is equal to ensure movement over duplicate x values\n while (i > left && (xv[right] - val) <= (val - xv[left])) {\n interval[0] = ++left;\n interval[1] = right;\n ++right;\n }\n}\n\n// generate smoothed output points\n// average points with repeated x values\nfunction output(xv, yhat) {\n const n = xv.length,\n out = [];\n\n for (let i=0, cnt=0, prev=[], v; i<n; ++i) {\n v = xv[i];\n if (prev[0] === v) {\n // average output values via online update\n prev[1] += (yhat[i] - prev[1]) / (++cnt);\n } else {\n // add new output point\n cnt = 0;\n prev = [v, yhat[i]];\n out.push(prev);\n }\n }\n return out;\n}\n","// subdivide up to accuracy of 0.1 degrees\nconst MIN_RADIANS = 0.1 * Math.PI / 180;\n\n// Adaptively sample an interpolated function over a domain extent\nexport default function(f, extent, minSteps, maxSteps) {\n minSteps = minSteps || 25;\n maxSteps = Math.max(minSteps, maxSteps || 200);\n\n const point = x => [x, f(x)],\n minX = extent[0],\n maxX = extent[1],\n span = maxX - minX,\n stop = span / maxSteps,\n prev = [point(minX)],\n next = [];\n\n if (minSteps === maxSteps) {\n // no adaptation, sample uniform grid directly and return\n for (let i = 1; i < maxSteps; ++i) {\n prev.push(point(minX + (i / minSteps) * span));\n }\n prev.push(point(maxX));\n return prev;\n } else {\n // sample minimum points on uniform grid\n // then move on to perform adaptive refinement\n next.push(point(maxX));\n for (let i = minSteps; --i > 0;) {\n next.push(point(minX + (i / minSteps) * span));\n }\n }\n\n let p0 = prev[0],\n p1 = next[next.length - 1];\n\n while (p1) {\n const pm = point((p0[0] + p1[0]) / 2);\n\n if (pm[0] - p0[0] >= stop && angleDelta(p0, pm, p1) > MIN_RADIANS) {\n next.push(pm);\n } else {\n p0 = p1;\n prev.push(p1);\n next.pop();\n }\n p1 = next[next.length - 1];\n }\n\n return prev;\n}\n\nfunction angleDelta(p, q, r) {\n const a0 = Math.atan2(r[1] - p[1], r[0] - p[0]),\n a1 = Math.atan2(q[1] - p[1], q[0] - p[0]);\n return Math.abs(a0 - a1);\n}\n","import {tupleid} from 'vega-dataflow';\nimport {bootstrapCI, quartiles} from 'vega-statistics';\nimport {extentIndex, field} from 'vega-util';\n\nexport default function TupleStore(key) {\n this._key = key ? field(key) : tupleid;\n this.reset();\n}\n\nvar prototype = TupleStore.prototype;\n\nprototype.reset = function() {\n this._add = [];\n this._rem = [];\n this._ext = null;\n this._get = null;\n this._q = null;\n};\n\nprototype.add = function(v) {\n this._add.push(v);\n};\n\nprototype.rem = function(v) {\n this._rem.push(v);\n};\n\nprototype.values = function() {\n this._get = null;\n if (this._rem.length === 0) return this._add;\n\n var a = this._add,\n r = this._rem,\n k = this._key,\n n = a.length,\n m = r.length,\n x = Array(n - m),\n map = {}, i, j, v;\n\n // use unique key field to clear removed values\n for (i=0; i<m; ++i) {\n map[k(r[i])] = 1;\n }\n for (i=0, j=0; i<n; ++i) {\n if (map[k(v = a[i])]) {\n map[k(v)] = 0;\n } else {\n x[j++] = v;\n }\n }\n\n this._rem = [];\n return (this._add = x);\n};\n\n// memoizing statistics methods\n\nprototype.distinct = function(get) {\n var v = this.values(),\n n = v.length,\n map = {},\n count = 0, s;\n\n while (--n >= 0) {\n s = get(v[n]) + '';\n if (!map.hasOwnProperty(s)) {\n map[s] = 1;\n ++count;\n }\n }\n\n return count;\n};\n\nprototype.extent = function(get) {\n if (this._get !== get || !this._ext) {\n var v = this.values(),\n i = extentIndex(v, get);\n this._ext = [v[i[0]], v[i[1]]];\n this._get = get;\n }\n return this._ext;\n};\n\nprototype.argmin = function(get) {\n return this.extent(get)[0] || {};\n};\n\nprototype.argmax = function(get) {\n return this.extent(get)[1] || {};\n};\n\nprototype.min = function(get) {\n var m = this.extent(get)[0];\n return m != null ? get(m) : undefined;\n};\n\nprototype.max = function(get) {\n var m = this.extent(get)[1];\n return m != null ? get(m) : undefined;\n};\n\nprototype.quartile = function(get) {\n if (this._get !== get || !this._q) {\n this._q = quartiles(this.values(), get);\n this._get = get;\n }\n return this._q;\n};\n\nprototype.q1 = function(get) {\n return this.quartile(get)[0];\n};\n\nprototype.q2 = function(get) {\n return this.quartile(get)[1];\n};\n\nprototype.q3 = function(get) {\n return this.quartile(get)[2];\n};\n\nprototype.ci = function(get) {\n if (this._get !== get || !this._ci) {\n this._ci = bootstrapCI(this.values(), 1000, 0.05, get);\n this._get = get;\n }\n return this._ci;\n};\n\nprototype.ci0 = function(get) {\n return this.ci(get)[0];\n};\n\nprototype.ci1 = function(get) {\n return this.ci(get)[1];\n};\n","import {groupkey} from './util/AggregateKeys';\nimport {createMeasure, compileMeasures, measureName, ValidAggregateOps} from './util/AggregateOps';\nimport TupleStore from './util/TupleStore';\nimport {ingest, replace, Transform} from 'vega-dataflow';\nimport {accessorFields, accessorName, array, error, inherits} from 'vega-util';\n\n/**\n * Group-by aggregation operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {Array<function(object): *>} [params.fields] - An array of accessors to aggregate.\n * @param {Array<string>} [params.ops] - An array of strings indicating aggregation operations.\n * @param {Array<string>} [params.as] - An array of output field names for aggregated values.\n * @param {boolean} [params.cross=false] - A flag indicating that the full\n * cross-product of groupby values should be generated, including empty cells.\n * If true, the drop parameter is ignored and empty cells are retained.\n * @param {boolean} [params.drop=true] - A flag indicating if empty cells should be removed.\n */\nexport default function Aggregate(params) {\n Transform.call(this, null, params);\n\n this._adds = []; // array of added output tuples\n this._mods = []; // array of modified output tuples\n this._alen = 0; // number of active added tuples\n this._mlen = 0; // number of active modified tuples\n this._drop = true; // should empty aggregation cells be removed\n this._cross = false; // produce full cross-product of group-by values\n\n this._dims = []; // group-by dimension accessors\n this._dnames = []; // group-by dimension names\n\n this._measures = []; // collection of aggregation monoids\n this._countOnly = false; // flag indicating only count aggregation\n this._counts = null; // collection of count fields\n this._prev = null; // previous aggregation cells\n\n this._inputs = null; // array of dependent input tuple field names\n this._outputs = null; // array of output tuple field names\n}\n\nAggregate.Definition = {\n \"type\": \"Aggregate\",\n \"metadata\": {\"generates\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"ops\", \"type\": \"enum\", \"array\": true, \"values\": ValidAggregateOps },\n { \"name\": \"fields\", \"type\": \"field\", \"null\": true, \"array\": true },\n { \"name\": \"as\", \"type\": \"string\", \"null\": true, \"array\": true },\n { \"name\": \"drop\", \"type\": \"boolean\", \"default\": true },\n { \"name\": \"cross\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"key\", \"type\": \"field\" }\n ]\n};\n\nvar prototype = inherits(Aggregate, Transform);\n\nprototype.transform = function(_, pulse) {\n var aggr = this,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n mod;\n\n this.stamp = out.stamp;\n\n if (this.value && ((mod = _.modified()) || pulse.modified(this._inputs))) {\n this._prev = this.value;\n this.value = mod ? this.init(_) : {};\n pulse.visit(pulse.SOURCE, function(t) { aggr.add(t); });\n } else {\n this.value = this.value || this.init(_);\n pulse.visit(pulse.REM, function(t) { aggr.rem(t); });\n pulse.visit(pulse.ADD, function(t) { aggr.add(t); });\n }\n\n // Indicate output fields and return aggregate tuples.\n out.modifies(this._outputs);\n\n // Should empty cells be dropped?\n aggr._drop = _.drop !== false;\n\n // If domain cross-product requested, generate empty cells as needed\n // and ensure that empty cells are not dropped\n if (_.cross && aggr._dims.length > 1) {\n aggr._drop = false;\n this.cross();\n }\n\n return aggr.changes(out);\n};\n\nprototype.cross = function() {\n var aggr = this,\n curr = aggr.value,\n dims = aggr._dnames,\n vals = dims.map(function() { return {}; }),\n n = dims.length;\n\n // collect all group-by domain values\n function collect(cells) {\n var key, i, t, v;\n for (key in cells) {\n t = cells[key].tuple;\n for (i=0; i<n; ++i) {\n vals[i][(v = t[dims[i]])] = v;\n }\n }\n }\n collect(aggr._prev);\n collect(curr);\n\n // iterate over key cross-product, create cells as needed\n function generate(base, tuple, index) {\n var name = dims[index],\n v = vals[index++],\n k, key;\n\n for (k in v) {\n tuple[name] = v[k];\n key = base ? base + '|' + k : k;\n if (index < n) generate(key, tuple, index);\n else if (!curr[key]) aggr.cell(key, tuple);\n }\n }\n generate('', {}, 0);\n};\n\nprototype.init = function(_) {\n // initialize input and output fields\n var inputs = (this._inputs = []),\n outputs = (this._outputs = []),\n inputMap = {};\n\n function inputVisit(get) {\n var fields = array(accessorFields(get)),\n i = 0, n = fields.length, f;\n for (; i<n; ++i) {\n if (!inputMap[f=fields[i]]) {\n inputMap[f] = 1;\n inputs.push(f);\n }\n }\n }\n\n // initialize group-by dimensions\n this._dims = array(_.groupby);\n this._dnames = this._dims.map(function(d) {\n var dname = accessorName(d);\n inputVisit(d);\n outputs.push(dname);\n return dname;\n });\n this.cellkey = _.key ? _.key : groupkey(this._dims);\n\n // initialize aggregate measures\n this._countOnly = true;\n this._counts = [];\n this._measures = [];\n\n var fields = _.fields || [null],\n ops = _.ops || ['count'],\n as = _.as || [],\n n = fields.length,\n map = {},\n field, op, m, mname, outname, i;\n\n if (n !== ops.length) {\n error('Unmatched number of fields and aggregate ops.');\n }\n\n for (i=0; i<n; ++i) {\n field = fields[i];\n op = ops[i];\n\n if (field == null && op !== 'count') {\n error('Null aggregate field specified.');\n }\n mname = accessorName(field);\n outname = measureName(op, mname, as[i]);\n outputs.push(outname);\n\n if (op === 'count') {\n this._counts.push(outname);\n continue;\n }\n\n m = map[mname];\n if (!m) {\n inputVisit(field);\n m = (map[mname] = []);\n m.field = field;\n this._measures.push(m);\n }\n\n if (op !== 'count') this._countOnly = false;\n m.push(createMeasure(op, outname));\n }\n\n this._measures = this._measures.map(function(m) {\n return compileMeasures(m, m.field);\n });\n\n return {}; // aggregation cells (this.value)\n};\n\n// -- Cell Management -----\n\nprototype.cellkey = groupkey();\n\nprototype.cell = function(key, t) {\n var cell = this.value[key];\n if (!cell) {\n cell = this.value[key] = this.newcell(key, t);\n this._adds[this._alen++] = cell;\n } else if (cell.num === 0 && this._drop && cell.stamp < this.stamp) {\n cell.stamp = this.stamp;\n this._adds[this._alen++] = cell;\n } else if (cell.stamp < this.stamp) {\n cell.stamp = this.stamp;\n this._mods[this._mlen++] = cell;\n }\n return cell;\n};\n\nprototype.newcell = function(key, t) {\n var cell = {\n key: key,\n num: 0,\n agg: null,\n tuple: this.newtuple(t, this._prev && this._prev[key]),\n stamp: this.stamp,\n store: false\n };\n\n if (!this._countOnly) {\n var measures = this._measures,\n n = measures.length, i;\n\n cell.agg = Array(n);\n for (i=0; i<n; ++i) {\n cell.agg[i] = new measures[i](cell);\n }\n }\n\n if (cell.store) {\n cell.data = new TupleStore();\n }\n\n return cell;\n};\n\nprototype.newtuple = function(t, p) {\n var names = this._dnames,\n dims = this._dims,\n x = {}, i, n;\n\n for (i=0, n=dims.length; i<n; ++i) {\n x[names[i]] = dims[i](t);\n }\n\n return p ? replace(p.tuple, x) : ingest(x);\n};\n\n// -- Process Tuples -----\n\nprototype.add = function(t) {\n var key = this.cellkey(t),\n cell = this.cell(key, t),\n agg, i, n;\n\n cell.num += 1;\n if (this._countOnly) return;\n\n if (cell.store) cell.data.add(t);\n\n agg = cell.agg;\n for (i=0, n=agg.length; i<n; ++i) {\n agg[i].add(agg[i].get(t), t);\n }\n};\n\nprototype.rem = function(t) {\n var key = this.cellkey(t),\n cell = this.cell(key, t),\n agg, i, n;\n\n cell.num -= 1;\n if (this._countOnly) return;\n\n if (cell.store) cell.data.rem(t);\n\n agg = cell.agg;\n for (i=0, n=agg.length; i<n; ++i) {\n agg[i].rem(agg[i].get(t), t);\n }\n};\n\nprototype.celltuple = function(cell) {\n var tuple = cell.tuple,\n counts = this._counts,\n agg, i, n;\n\n // consolidate stored values\n if (cell.store) {\n cell.data.values();\n }\n\n // update tuple properties\n for (i=0, n=counts.length; i<n; ++i) {\n tuple[counts[i]] = cell.num;\n }\n if (!this._countOnly) {\n agg = cell.agg;\n for (i=0, n=agg.length; i<n; ++i) {\n agg[i].set(tuple);\n }\n }\n\n return tuple;\n};\n\nprototype.changes = function(out) {\n var adds = this._adds,\n mods = this._mods,\n prev = this._prev,\n drop = this._drop,\n add = out.add,\n rem = out.rem,\n mod = out.mod,\n cell, key, i, n;\n\n if (prev) for (key in prev) {\n cell = prev[key];\n if (!drop || cell.num) rem.push(cell.tuple);\n }\n\n for (i=0, n=this._alen; i<n; ++i) {\n add.push(this.celltuple(adds[i]));\n adds[i] = null; // for garbage collection\n }\n\n for (i=0, n=this._mlen; i<n; ++i) {\n cell = mods[i];\n (cell.num === 0 && drop ? rem : mod).push(this.celltuple(cell));\n mods[i] = null; // for garbage collection\n }\n\n this._alen = this._mlen = 0; // reset list of active cells\n this._prev = null;\n return out;\n};\n","import {Transform} from 'vega-dataflow';\nimport {bin} from 'vega-statistics';\nimport {inherits, accessor, accessorFields, accessorName} from 'vega-util';\n\n// epsilon bias to offset floating point error (#1737)\nconst EPSILON = 1e-14;\n\n/**\n * Generates a binning function for discretizing data.\n * @constructor\n * @param {object} params - The parameters for this operator. The\n * provided values should be valid options for the {@link bin} function.\n * @param {function(object): *} params.field - The data field to bin.\n */\nexport default function Bin(params) {\n Transform.call(this, null, params);\n}\n\nBin.Definition = {\n \"type\": \"Bin\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"anchor\", \"type\": \"number\" },\n { \"name\": \"maxbins\", \"type\": \"number\", \"default\": 20 },\n { \"name\": \"base\", \"type\": \"number\", \"default\": 10 },\n { \"name\": \"divide\", \"type\": \"number\", \"array\": true, \"default\": [5, 2] },\n { \"name\": \"extent\", \"type\": \"number\", \"array\": true, \"length\": 2, \"required\": true },\n { \"name\": \"step\", \"type\": \"number\" },\n { \"name\": \"steps\", \"type\": \"number\", \"array\": true },\n { \"name\": \"minstep\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"nice\", \"type\": \"boolean\", \"default\": true },\n { \"name\": \"name\", \"type\": \"string\" },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"bin0\", \"bin1\"] }\n ]\n};\n\nvar prototype = inherits(Bin, Transform);\n\nprototype.transform = function(_, pulse) {\n var bins = this._bins(_),\n start = bins.start,\n step = bins.step,\n as = _.as || ['bin0', 'bin1'],\n b0 = as[0],\n b1 = as[1],\n flag;\n\n if (_.modified()) {\n pulse = pulse.reflow(true);\n flag = pulse.SOURCE;\n } else {\n flag = pulse.modified(accessorFields(_.field)) ? pulse.ADD_MOD : pulse.ADD;\n }\n\n pulse.visit(flag, function(t) {\n var v = bins(t);\n // minimum bin value (inclusive)\n t[b0] = v;\n // maximum bin value (exclusive)\n // use convoluted math for better floating point agreement\n // see https://github.com/vega/vega/issues/830\n t[b1] = v == null ? null : start + step * (1 + (v - start) / step);\n });\n\n return pulse.modifies(as);\n};\n\nprototype._bins = function(_) {\n if (this.value && !_.modified()) {\n return this.value;\n }\n\n var field = _.field,\n bins = bin(_),\n start = bins.start,\n stop = bins.stop,\n step = bins.step,\n a, d;\n\n if ((a = _.anchor) != null) {\n d = a - (start + step * Math.floor((a - start) / step));\n start += d;\n stop += d;\n }\n\n var f = function(t) {\n var v = field(t);\n if (v == null) {\n return null;\n } else {\n v = Math.max(start, Math.min(+v, stop - step));\n return start + step * Math.floor(EPSILON + (v - start) / step);\n }\n };\n\n f.start = start;\n f.stop = stop;\n f.step = step;\n\n return this.value = accessor(\n f,\n accessorFields(field),\n _.name || 'bin_' + accessorName(field)\n );\n};\n","import {merge} from 'vega-util';\n\nexport default function(idFunc, source, input) {\n var $ = idFunc,\n data = source || [],\n add = input || [],\n rem = {},\n cnt = 0;\n\n return {\n add: function(t) { add.push(t); },\n remove: function(t) { rem[$(t)] = ++cnt; },\n size: function() { return data.length; },\n data: function(compare, resort) {\n if (cnt) {\n data = data.filter(function(t) { return !rem[$(t)]; });\n rem = {};\n cnt = 0;\n }\n if (resort && compare) {\n data.sort(compare);\n }\n if (add.length) {\n data = compare\n ? merge(compare, data, add.sort(compare))\n : data.concat(add);\n add = [];\n }\n return data;\n }\n }\n}","import SortedList from './util/SortedList';\nimport {Transform, tupleid} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Collects all data tuples that pass through this operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for additionally sorting the collected tuples.\n */\nexport default function Collect(params) {\n Transform.call(this, [], params);\n}\n\nCollect.Definition = {\n \"type\": \"Collect\",\n \"metadata\": {\"source\": true},\n \"params\": [\n { \"name\": \"sort\", \"type\": \"compare\" }\n ]\n};\n\nvar prototype = inherits(Collect, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n list = SortedList(tupleid, this.value, out.materialize(out.ADD).add),\n sort = _.sort,\n mod = pulse.changed() || (sort &&\n (_.modified('sort') || pulse.modified(sort.fields)));\n\n out.visit(out.REM, list.remove);\n\n this.modified(mod);\n this.value = out.source = list.data(sort, mod);\n\n // propagate tree root if defined\n if (pulse.source && pulse.source.root) {\n this.value.root = pulse.source.root;\n }\n\n return out;\n};\n","import {Operator} from 'vega-dataflow';\nimport {inherits, compare} from 'vega-util';\n\n/**\n * Generates a comparator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<string|function>} params.fields - The fields to compare.\n * @param {Array<string>} [params.orders] - The sort orders.\n * Each entry should be one of \"ascending\" (default) or \"descending\".\n */\nexport default function Compare(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(Compare, Operator);\n\nfunction update(_) {\n return (this.value && !_.modified())\n ? this.value\n : compare(_.fields, _.orders);\n}\n","import {ingest, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Count regexp-defined pattern occurrences in a text field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the text field.\n * @param {string} [params.pattern] - RegExp string defining the text pattern.\n * @param {string} [params.case] - One of 'lower', 'upper' or null (mixed) case.\n * @param {string} [params.stopwords] - RegExp string of words to ignore.\n */\nexport default function CountPattern(params) {\n Transform.call(this, null, params);\n}\n\nCountPattern.Definition = {\n \"type\": \"CountPattern\",\n \"metadata\": {\"generates\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"case\", \"type\": \"enum\", \"values\": [\"upper\", \"lower\", \"mixed\"], \"default\": \"mixed\" },\n { \"name\": \"pattern\", \"type\": \"string\", \"default\": \"[\\\\w\\\"]+\" },\n { \"name\": \"stopwords\", \"type\": \"string\", \"default\": \"\" },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"text\", \"count\"] }\n ]\n};\n\nfunction tokenize(text, tcase, match) {\n switch (tcase) {\n case 'upper': text = text.toUpperCase(); break;\n case 'lower': text = text.toLowerCase(); break;\n }\n return text.match(match);\n}\n\nvar prototype = inherits(CountPattern, Transform);\n\nprototype.transform = function(_, pulse) {\n function process(update) {\n return function(tuple) {\n var tokens = tokenize(get(tuple), _.case, match) || [], t;\n for (var i=0, n=tokens.length; i<n; ++i) {\n if (!stop.test(t = tokens[i])) update(t);\n }\n };\n }\n\n var init = this._parameterCheck(_, pulse),\n counts = this._counts,\n match = this._match,\n stop = this._stop,\n get = _.field,\n as = _.as || ['text', 'count'],\n add = process(function(t) { counts[t] = 1 + (counts[t] || 0); }),\n rem = process(function(t) { counts[t] -= 1; });\n\n if (init) {\n pulse.visit(pulse.SOURCE, add);\n } else {\n pulse.visit(pulse.ADD, add);\n pulse.visit(pulse.REM, rem);\n }\n\n return this._finish(pulse, as); // generate output tuples\n};\n\nprototype._parameterCheck = function(_, pulse) {\n var init = false;\n\n if (_.modified('stopwords') || !this._stop) {\n this._stop = new RegExp('^' + (_.stopwords || '') + '$', 'i');\n init = true;\n }\n\n if (_.modified('pattern') || !this._match) {\n this._match = new RegExp((_.pattern || '[\\\\w\\']+'), 'g');\n init = true;\n }\n\n if (_.modified('field') || pulse.modified(_.field.fields)) {\n init = true;\n }\n\n if (init) this._counts = {};\n return init;\n};\n\nprototype._finish = function(pulse, as) {\n var counts = this._counts,\n tuples = this._tuples || (this._tuples = {}),\n text = as[0],\n count = as[1],\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n w, t, c;\n\n for (w in counts) {\n t = tuples[w];\n c = counts[w] || 0;\n if (!t && c) {\n tuples[w] = (t = ingest({}));\n t[text] = w;\n t[count] = c;\n out.add.push(t);\n } else if (c === 0) {\n if (t) out.rem.push(t);\n counts[w] = null;\n tuples[w] = null;\n } else if (t[count] !== c) {\n t[count] = c;\n out.mod.push(t);\n }\n }\n\n return out.modifies(as);\n};\n","import {ingest, Transform} from 'vega-dataflow';\nimport {inherits, truthy} from 'vega-util';\n\n/**\n * Perform a cross-product of a tuple stream with itself.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object):boolean} [params.filter] - An optional filter\n * function for selectively including tuples in the cross product.\n * @param {Array<string>} [params.as] - The names of the output fields.\n */\nexport default function Cross(params) {\n Transform.call(this, null, params);\n}\n\nCross.Definition = {\n \"type\": \"Cross\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"filter\", \"type\": \"expr\" },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"a\", \"b\"] }\n ]\n};\n\nvar prototype = inherits(Cross, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n data = this.value,\n as = _.as || ['a', 'b'],\n a = as[0], b = as[1],\n reset = !data\n || pulse.changed(pulse.ADD_REM)\n || _.modified('as')\n || _.modified('filter');\n\n if (reset) {\n if (data) out.rem = data;\n data = pulse.materialize(pulse.SOURCE).source;\n out.add = this.value = cross(data, a, b, _.filter || truthy);\n } else {\n out.mod = data;\n }\n\n out.source = this.value;\n return out.modifies(as);\n};\n\nfunction cross(input, a, b, filter) {\n var data = [],\n t = {},\n n = input.length,\n i = 0,\n j, left;\n\n for (; i<n; ++i) {\n t[a] = left = input[i];\n for (j=0; j<n; ++j) {\n t[b] = input[j];\n if (filter(t)) {\n data.push(ingest(t));\n t = {};\n t[a] = left;\n }\n }\n }\n\n return data;\n}\n","import {\n randomKDE,\n randomMixture,\n randomNormal,\n randomUniform\n} from 'vega-statistics';\n\nimport {error} from 'vega-util';\n\nvar Distributions = {\n kde: randomKDE,\n mixture: randomMixture,\n normal: randomNormal,\n uniform: randomUniform\n};\n\nvar DISTRIBUTIONS = 'distributions',\n FUNCTION = 'function',\n FIELD = 'field';\n\n/**\n * Parse a parameter object for a probability distribution.\n * @param {object} def - The distribution parameter object.\n * @param {function():Array<object>} - A method for requesting\n * source data. Used for distributions (such as KDE) that\n * require sample data points. This method will only be\n * invoked if the 'from' parameter for a target data source\n * is not provided. Typically this method returns backing\n * source data for a Pulse object.\n * @return {object} - The output distribution object.\n */\nexport default function parse(def, data) {\n var func = def[FUNCTION];\n if (!Distributions.hasOwnProperty(func)) {\n error('Unknown distribution function: ' + func);\n }\n\n var d = Distributions[func]();\n\n for (var name in def) {\n // if data field, extract values\n if (name === FIELD) {\n d.data((def.from || data()).map(def[name]));\n }\n\n // if distribution mixture, recurse to parse each definition\n else if (name === DISTRIBUTIONS) {\n d[name](def[name].map(function(_) { return parse(_, data); }));\n }\n\n // otherwise, simply set the parameter\n else if (typeof d[name] === FUNCTION) {\n d[name](def[name]);\n }\n }\n\n return d;\n}\n","import parseDist from './util/Distributions';\nimport {ingest, Transform} from 'vega-dataflow';\nimport {sampleCurve} from 'vega-statistics';\nimport {error, extent, inherits} from 'vega-util';\n\n/**\n * Grid sample points for a probability density. Given a distribution and\n * a sampling extent, will generate points suitable for plotting either\n * PDF (probability density function) or CDF (cumulative distribution\n * function) curves.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.distribution - The probability distribution. This\n * is an object parameter dependent on the distribution type.\n * @param {string} [params.method='pdf'] - The distribution method to sample.\n * One of 'pdf' or 'cdf'.\n * @param {Array<number>} [params.extent] - The [min, max] extent over which\n * to sample the distribution. This argument is required in most cases, but\n * can be omitted if the distribution (e.g., 'kde') supports a 'data' method\n * that returns numerical sample points from which the extent can be deduced.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n * for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n * for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n * plotting the density. If specified, overrides both minsteps and maxsteps\n * to set an exact number of uniform samples. Useful in conjunction with\n * a fixed extent to ensure consistent sample points for stacked densities.\n */\nexport default function Density(params) {\n Transform.call(this, null, params);\n}\n\nvar distributions = [\n {\n \"key\": {\"function\": \"normal\"},\n \"params\": [\n { \"name\": \"mean\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"stdev\", \"type\": \"number\", \"default\": 1 }\n ]\n },\n {\n \"key\": {\"function\": \"uniform\"},\n \"params\": [\n { \"name\": \"min\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"max\", \"type\": \"number\", \"default\": 1 }\n ]\n },\n {\n \"key\": {\"function\": \"kde\"},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"from\", \"type\": \"data\" },\n { \"name\": \"bandwidth\", \"type\": \"number\", \"default\": 0 }\n ]\n }\n];\n\nvar mixture = {\n \"key\": {\"function\": \"mixture\"},\n \"params\": [\n { \"name\": \"distributions\", \"type\": \"param\", \"array\": true,\n \"params\": distributions },\n { \"name\": \"weights\", \"type\": \"number\", \"array\": true }\n ]\n};\n\nDensity.Definition = {\n \"type\": \"Density\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"extent\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"steps\", \"type\": \"number\" },\n { \"name\": \"minsteps\", \"type\": \"number\", \"default\": 25 },\n { \"name\": \"maxsteps\", \"type\": \"number\", \"default\": 200 },\n { \"name\": \"method\", \"type\": \"string\", \"default\": \"pdf\",\n \"values\": [\"pdf\", \"cdf\"] },\n { \"name\": \"distribution\", \"type\": \"param\",\n \"params\": distributions.concat(mixture) },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true,\n \"default\": [\"value\", \"density\"] }\n ]\n};\n\nvar prototype = inherits(Density, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n if (!this.value || pulse.changed() || _.modified()) {\n var dist = parseDist(_.distribution, source(pulse)),\n minsteps = _.steps || _.minsteps || 25,\n maxsteps = _.steps || _.maxsteps || 200,\n method = _.method || 'pdf';\n\n if (method !== 'pdf' && method !== 'cdf') {\n error('Invalid density method: ' + method);\n }\n if (!_.extent && !dist.data) {\n error('Missing density extent parameter.');\n }\n method = dist[method];\n\n var as = _.as || ['value', 'density'],\n domain = _.extent || extent(dist.data()),\n values = sampleCurve(method, domain, minsteps, maxsteps).map(v => {\n var tuple = {};\n tuple[as[0]] = v[0];\n tuple[as[1]] = v[1];\n return ingest(tuple);\n });\n\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n\n return out;\n};\n\nfunction source(pulse) {\n return function() { return pulse.materialize(pulse.SOURCE).source; };\n}\n","import {Operator} from 'vega-dataflow';\nimport {accessor, accessorFields, accessorName, inherits} from 'vega-util';\n\n/**\n * Wraps an expression function with access to external parameters.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function} params.expr - The expression function. The\n * function should accept both a datum and a parameter object.\n * This operator's value will be a new function that wraps the\n * expression function with access to this operator's parameters.\n */\nexport default function Expression(params) {\n Operator.call(this, null, update, params);\n this.modified(true);\n}\n\ninherits(Expression, Operator);\n\nfunction update(_) {\n var expr = _.expr;\n return this.value && !_.modified('expr')\n ? this.value\n : accessor(\n datum => expr(datum, _),\n accessorFields(expr),\n accessorName(expr)\n );\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Computes extents (min/max) for a data field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field over which to compute extends.\n */\nexport default function Extent(params) {\n Transform.call(this, [undefined, undefined], params);\n}\n\nExtent.Definition = {\n \"type\": \"Extent\",\n \"metadata\": {},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\", \"required\": true }\n ]\n};\n\nvar prototype = inherits(Extent, Transform);\n\nprototype.transform = function(_, pulse) {\n var extent = this.value,\n field = _.field,\n min = extent[0],\n max = extent[1],\n mod;\n\n mod = pulse.changed()\n || pulse.modified(field.fields)\n || _.modified('field');\n\n if (mod || min == null) {\n min = +Infinity;\n max = -Infinity;\n }\n\n pulse.visit(mod ? pulse.SOURCE : pulse.ADD, function(t) {\n var v = field(t);\n if (v != null) {\n // coerce to number\n v = +v;\n // NaNs will fail all comparisons!\n if (v < min) min = v;\n if (v > max) max = v;\n }\n });\n\n if (!isFinite(min) || !isFinite(max)) {\n min = max = undefined;\n }\n this.value = [min, max];\n};\n","import {Operator} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Provides a bridge between a parent transform and a target subflow that\n * consumes only a subset of the tuples that pass through the parent.\n * @constructor\n * @param {Pulse} pulse - A pulse to use as the value of this operator.\n * @param {Transform} parent - The parent transform (typically a Facet instance).\n * @param {Transform} target - A transform that receives the subflow of tuples.\n */\nexport default function Subflow(pulse, parent) {\n Operator.call(this, pulse);\n this.parent = parent;\n}\n\nvar prototype = inherits(Subflow, Operator);\n\nprototype.connect = function(target) {\n this.targets().add(target);\n return (target.source = this);\n};\n\n/**\n * Add an 'add' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being added.\n */\nprototype.add = function(t) {\n this.value.add.push(t);\n};\n\n/**\n * Add a 'rem' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being removed.\n */\nprototype.rem = function(t) {\n this.value.rem.push(t);\n};\n\n/**\n * Add a 'mod' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being modified.\n */\nprototype.mod = function(t) {\n this.value.mod.push(t);\n};\n\n/**\n * Re-initialize this operator's pulse value.\n * @param {Pulse} pulse - The pulse to copy from.\n * @see Pulse.init\n */\nprototype.init = function(pulse) {\n this.value.init(pulse, pulse.NO_SOURCE);\n};\n\n/**\n * Evaluate this operator. This method overrides the\n * default behavior to simply return the contained pulse value.\n * @return {Pulse}\n */\nprototype.evaluate = function() {\n // assert: this.value.stamp === pulse.stamp\n return this.value;\n};\n","import Subflow from './Subflow';\nimport {Transform, tupleid} from 'vega-dataflow';\nimport {fastmap, inherits} from 'vega-util';\n\n/**\n * Facets a dataflow into a set of subflows based on a key.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n * that generates a subflow of operators and returns its root operator.\n * @param {function(object): *} params.key - The key field to facet by.\n */\nexport default function Facet(params) {\n Transform.call(this, {}, params);\n this._keys = fastmap(); // cache previously calculated key values\n\n // keep track of active subflows, use as targets array for listeners\n // this allows us to limit propagation to only updated subflows\n var a = this._targets = [];\n a.active = 0;\n a.forEach = function(f) {\n for (var i=0, n=a.active; i<n; ++i) f(a[i], i, a);\n };\n}\n\nvar prototype = inherits(Facet, Transform);\n\nprototype.activate = function(flow) {\n this._targets[this._targets.active++] = flow;\n};\n\nprototype.subflow = function(key, flow, pulse, parent) {\n var flows = this.value,\n sf = flows.hasOwnProperty(key) && flows[key],\n df, p;\n\n if (!sf) {\n p = parent || (p = this._group[key]) && p.tuple;\n df = pulse.dataflow;\n sf = df.add(new Subflow(pulse.fork(pulse.NO_SOURCE), this))\n .connect(flow(df, key, p));\n flows[key] = sf;\n this.activate(sf);\n } else if (sf.value.stamp < pulse.stamp) {\n sf.init(pulse);\n this.activate(sf);\n }\n\n return sf;\n};\n\nprototype.transform = function(_, pulse) {\n var df = pulse.dataflow,\n self = this,\n key = _.key,\n flow = _.subflow,\n cache = this._keys,\n rekey = _.modified('key');\n\n function subflow(key) {\n return self.subflow(key, flow, pulse);\n }\n\n this._group = _.group || {};\n this._targets.active = 0; // reset list of active subflows\n\n pulse.visit(pulse.REM, function(t) {\n var id = tupleid(t),\n k = cache.get(id);\n if (k !== undefined) {\n cache.delete(id);\n subflow(k).rem(t);\n }\n });\n\n pulse.visit(pulse.ADD, function(t) {\n var k = key(t);\n cache.set(tupleid(t), k);\n subflow(k).add(t);\n });\n\n if (rekey || pulse.modified(key.fields)) {\n pulse.visit(pulse.MOD, function(t) {\n var id = tupleid(t),\n k0 = cache.get(id),\n k1 = key(t);\n if (k0 === k1) {\n subflow(k1).mod(t);\n } else {\n cache.set(id, k1);\n subflow(k0).rem(t);\n subflow(k1).add(t);\n }\n });\n } else if (pulse.changed(pulse.MOD)) {\n pulse.visit(pulse.MOD, function(t) {\n subflow(cache.get(tupleid(t))).mod(t);\n });\n }\n\n if (rekey) {\n pulse.visit(pulse.REFLOW, function(t) {\n var id = tupleid(t),\n k0 = cache.get(id),\n k1 = key(t);\n if (k0 !== k1) {\n cache.set(id, k1);\n subflow(k0).rem(t);\n subflow(k1).add(t);\n }\n });\n }\n\n if (cache.empty > df.cleanThreshold) df.runAfter(cache.clean);\n return pulse;\n};\n","import {Operator} from 'vega-dataflow';\nimport {array, field, inherits, isArray} from 'vega-util';\n\n/**\n * Generates one or more field accessor functions.\n * If the 'name' parameter is an array, an array of field accessors\n * will be created and the 'as' parameter will be ignored.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.name - The field name(s) to access.\n * @param {string} params.as - The accessor function name.\n */\nexport default function Field(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(Field, Operator);\n\nfunction update(_) {\n return (this.value && !_.modified()) ? this.value\n : isArray(_.name) ? array(_.name).map(function(f) { return field(f); })\n : field(_.name, _.as);\n}\n","import {Transform, tupleid} from 'vega-dataflow';\nimport {fastmap, inherits} from 'vega-util';\n\n/**\n * Filters data tuples according to a predicate function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The predicate expression function\n * that determines a tuple's filter status. Truthy values pass the filter.\n */\nexport default function Filter(params) {\n Transform.call(this, fastmap(), params);\n}\n\nFilter.Definition = {\n \"type\": \"Filter\",\n \"metadata\": {\"changes\": true},\n \"params\": [\n { \"name\": \"expr\", \"type\": \"expr\", \"required\": true }\n ]\n};\n\nvar prototype = inherits(Filter, Transform);\n\nprototype.transform = function(_, pulse) {\n var df = pulse.dataflow,\n cache = this.value, // cache ids of filtered tuples\n output = pulse.fork(),\n add = output.add,\n rem = output.rem,\n mod = output.mod,\n test = _.expr,\n isMod = true;\n\n pulse.visit(pulse.REM, function(t) {\n var id = tupleid(t);\n if (!cache.has(id)) rem.push(t);\n else cache.delete(id);\n });\n\n pulse.visit(pulse.ADD, function(t) {\n if (test(t, _)) add.push(t);\n else cache.set(tupleid(t), 1);\n });\n\n function revisit(t) {\n var id = tupleid(t),\n b = test(t, _),\n s = cache.get(id);\n if (b && s) {\n cache.delete(id);\n add.push(t);\n } else if (!b && !s) {\n cache.set(id, 1);\n rem.push(t);\n } else if (isMod && b && !s) {\n mod.push(t);\n }\n }\n\n pulse.visit(pulse.MOD, revisit);\n\n if (_.modified()) {\n isMod = false;\n pulse.visit(pulse.REFLOW, revisit);\n }\n\n if (cache.empty > df.cleanThreshold) df.runAfter(cache.clean);\n return output;\n};\n","import {accessorName} from 'vega-util';\n\n// use either provided alias or accessor field name\nexport function fieldNames(fields, as) {\n if (!fields) return null;\n return fields.map(function(f, i) {\n return as[i] || accessorName(f);\n });\n}\n","import {fieldNames} from './util/util';\nimport {derive, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Flattens array-typed field values into new data objects.\n * If multiple fields are specified, they are treated as parallel arrays,\n * with output values included for each matching index (or null if missing).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.fields - An array of field\n * accessors for the tuple fields that should be flattened.\n * @param {Array<string>} [params.as] - Output field names for flattened\n * array fields. Any unspecified fields will use the field name provided\n * by the fields accessors.\n */\nexport default function Flatten(params) {\n Transform.call(this, [], params);\n}\n\nFlatten.Definition = {\n \"type\": \"Flatten\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true }\n ]\n};\n\nvar prototype = inherits(Flatten, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n as = fieldNames(fields, _.as || []),\n m = as.length;\n\n // remove any previous results\n out.rem = this.value;\n\n // generate flattened tuples\n pulse.visit(pulse.SOURCE, function(t) {\n var arrays = fields.map(function(f) { return f(t); }),\n maxlen = arrays.reduce(function(l, a) { return Math.max(l, a.length); }, 0),\n i = 0, j, d, v;\n\n for (; i<maxlen; ++i) {\n d = derive(t);\n for (j=0; j<m; ++j) {\n d[as[j]] = (v = arrays[j][i]) == null ? null : v;\n }\n out.add.push(d);\n }\n });\n\n this.value = out.source = out.add;\n return out.modifies(as);\n};\n","import {derive, Transform} from 'vega-dataflow';\nimport {inherits, accessorName} from 'vega-util';\n\n/**\n * Folds one more tuple fields into multiple tuples in which the field\n * name and values are available under new 'key' and 'value' fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.fields - An array of field accessors\n * for the tuple fields that should be folded.\n * @param {Array<string>} [params.as] - Output field names for folded key\n * and value fields, defaults to ['key', 'value'].\n */\nexport default function Fold(params) {\n Transform.call(this, [], params);\n}\n\nFold.Definition = {\n \"type\": \"Fold\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"key\", \"value\"] }\n ]\n};\n\nvar prototype = inherits(Fold, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n fnames = fields.map(accessorName),\n as = _.as || ['key', 'value'],\n k = as[0],\n v = as[1],\n n = fields.length;\n\n out.rem = this.value;\n\n pulse.visit(pulse.SOURCE, function(t) {\n for (var i=0, d; i<n; ++i) {\n d = derive(t);\n d[k] = fnames[i];\n d[v] = fields[i](t);\n out.add.push(d);\n }\n });\n\n this.value = out.source = out.add;\n return out.modifies(as);\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Invokes a function for each data tuple and saves the results as a new field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The formula function to invoke for each tuple.\n * @param {string} params.as - The field name under which to save the result.\n * @param {boolean} [params.initonly=false] - If true, the formula is applied to\n * added tuples only, and does not update in response to modifications.\n */\nexport default function Formula(params) {\n Transform.call(this, null, params);\n}\n\nFormula.Definition = {\n \"type\": \"Formula\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"expr\", \"type\": \"expr\", \"required\": true },\n { \"name\": \"as\", \"type\": \"string\", \"required\": true },\n { \"name\": \"initonly\", \"type\": \"boolean\" }\n ]\n};\n\nvar prototype = inherits(Formula, Transform);\n\nprototype.transform = function(_, pulse) {\n var func = _.expr,\n as = _.as,\n mod = _.modified(),\n flag = _.initonly ? pulse.ADD\n : mod ? pulse.SOURCE\n : pulse.modified(func.fields) ? pulse.ADD_MOD\n : pulse.ADD;\n\n function set(t) {\n t[as] = func(t, _);\n }\n\n if (mod) {\n // parameters updated, need to reflow\n pulse = pulse.materialize().reflow(true);\n }\n\n if (!_.initonly) {\n pulse.modifies(as);\n }\n\n return pulse.visit(flag, set);\n};\n","import {ingest, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Generates data tuples using a provided generator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Parameters): object} params.generator - A tuple generator\n * function. This function is given the operator parameters as input.\n * Changes to any additional parameters will not trigger re-calculation\n * of previously generated tuples. Only future tuples are affected.\n * @param {number} params.size - The number of tuples to produce.\n */\nexport default function Generate(params) {\n Transform.call(this, [], params);\n}\n\nvar prototype = inherits(Generate, Transform);\n\nprototype.transform = function(_, pulse) {\n var data = this.value,\n out = pulse.fork(pulse.ALL),\n num = _.size - data.length,\n gen = _.generator,\n add, rem, t;\n\n if (num > 0) {\n // need more tuples, generate and add\n for (add=[]; --num >= 0;) {\n add.push(t = ingest(gen(_)));\n data.push(t);\n }\n out.add = out.add.length\n ? out.materialize(out.ADD).add.concat(add)\n : add;\n } else {\n // need fewer tuples, remove\n rem = data.slice(0, -num);\n out.rem = out.rem.length\n ? out.materialize(out.REM).rem.concat(rem)\n : rem;\n data = data.slice(-num);\n }\n\n out.source = this.value = data;\n return out;\n};\n","import {ingest, Transform} from 'vega-dataflow';\nimport {accessorName, error, inherits} from 'vega-util';\nimport {mean, min, max, median} from 'd3-array';\n\nvar Methods = {\n value: 'value',\n median: median,\n mean: mean,\n min: min,\n max: max\n};\n\nvar Empty = [];\n\n/**\n * Impute missing values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to impute.\n * @param {Array<function(object): *>} [params.groupby] - An array of\n * accessors to determine series within which to perform imputation.\n * @param {function(object): *} params.key - An accessor for a key value.\n * Each key value should be unique within a group. New tuples will be\n * imputed for any key values that are not found within a group.\n * @param {Array<*>} [params.keyvals] - Optional array of required key\n * values. New tuples will be imputed for any key values that are not\n * found within a group. In addition, these values will be automatically\n * augmented with the key values observed in the input data.\n * @param {string} [method='value'] - The imputation method to use. One of\n * 'value', 'mean', 'median', 'max', 'min'.\n * @param {*} [value=0] - The constant value to use for imputation\n * when using method 'value'.\n */\nexport default function Impute(params) {\n Transform.call(this, [], params);\n}\n\nImpute.Definition = {\n \"type\": \"Impute\",\n \"metadata\": {\"changes\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"key\", \"type\": \"field\", \"required\": true },\n { \"name\": \"keyvals\", \"array\": true },\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"method\", \"type\": \"enum\", \"default\": \"value\",\n \"values\": [\"value\", \"mean\", \"median\", \"max\", \"min\"] },\n { \"name\": \"value\", \"default\": 0 }\n ]\n};\n\nvar prototype = inherits(Impute, Transform);\n\nfunction getValue(_) {\n var m = _.method || Methods.value, v;\n\n if (Methods[m] == null) {\n error('Unrecognized imputation method: ' + m);\n } else if (m === Methods.value) {\n v = _.value !== undefined ? _.value : 0;\n return function() { return v; };\n } else {\n return Methods[m];\n }\n}\n\nfunction getField(_) {\n var f = _.field;\n return function(t) { return t ? f(t) : NaN; };\n}\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n impute = getValue(_),\n field = getField(_),\n fName = accessorName(_.field),\n kName = accessorName(_.key),\n gNames = (_.groupby || []).map(accessorName),\n groups = partition(pulse.source, _.groupby, _.key, _.keyvals),\n curr = [],\n prev = this.value,\n m = groups.domain.length,\n group, value, gVals, kVal, g, i, j, l, n, t;\n\n for (g=0, l=groups.length; g<l; ++g) {\n group = groups[g];\n gVals = group.values;\n value = NaN;\n\n // add tuples for missing values\n for (j=0; j<m; ++j) {\n if (group[j] != null) continue;\n kVal = groups.domain[j];\n\n t = {_impute: true};\n for (i=0, n=gVals.length; i<n; ++i) t[gNames[i]] = gVals[i];\n t[kName] = kVal;\n t[fName] = isNaN(value) ? (value = impute(group, field)) : value;\n\n curr.push(ingest(t));\n }\n }\n\n // update pulse with imputed tuples\n if (curr.length) out.add = out.materialize(out.ADD).add.concat(curr);\n if (prev.length) out.rem = out.materialize(out.REM).rem.concat(prev);\n this.value = curr;\n\n return out;\n};\n\nfunction partition(data, groupby, key, keyvals) {\n var get = function(f) { return f(t); },\n groups = [],\n domain = keyvals ? keyvals.slice() : [],\n kMap = {},\n gMap = {}, gVals, gKey,\n group, i, j, k, n, t;\n\n domain.forEach(function(k, i) { kMap[k] = i + 1; });\n\n for (i=0, n=data.length; i<n; ++i) {\n t = data[i];\n k = key(t);\n j = kMap[k] || (kMap[k] = domain.push(k));\n\n gKey = (gVals = groupby ? groupby.map(get) : Empty) + '';\n if (!(group = gMap[gKey])) {\n group = (gMap[gKey] = []);\n groups.push(group);\n group.values = gVals;\n }\n group[j-1] = t;\n }\n\n groups.domain = domain;\n return groups;\n}\n","export default function mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","import Aggregate from './Aggregate';\nimport {ValidAggregateOps} from './util/AggregateOps';\nimport {extend, inherits} from 'vega-util';\n\n/**\n * Extend input tuples with aggregate values.\n * Calcuates aggregate values and joins them with the input stream.\n * @constructor\n */\nexport default function JoinAggregate(params) {\n Aggregate.call(this, params);\n}\n\nJoinAggregate.Definition = {\n \"type\": \"JoinAggregate\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"fields\", \"type\": \"field\", \"null\": true, \"array\": true },\n { \"name\": \"ops\", \"type\": \"enum\", \"array\": true, \"values\": ValidAggregateOps },\n { \"name\": \"as\", \"type\": \"string\", \"null\": true, \"array\": true },\n { \"name\": \"key\", \"type\": \"field\" }\n ]\n};\n\nvar prototype = inherits(JoinAggregate, Aggregate);\n\nprototype.transform = function(_, pulse) {\n var aggr = this,\n mod = _.modified(),\n cells;\n\n // process all input tuples to calculate aggregates\n if (aggr.value && (mod || pulse.modified(aggr._inputs))) {\n cells = aggr.value = mod ? aggr.init(_) : {};\n pulse.visit(pulse.SOURCE, function(t) { aggr.add(t); });\n } else {\n cells = aggr.value = aggr.value || this.init(_);\n pulse.visit(pulse.REM, function(t) { aggr.rem(t); });\n pulse.visit(pulse.ADD, function(t) { aggr.add(t); });\n }\n\n // update aggregation cells\n aggr.changes();\n\n // write aggregate values to input tuples\n pulse.visit(pulse.SOURCE, function(t) {\n extend(t, cells[aggr.cellkey(t)].tuple);\n });\n\n return pulse.reflow(mod).modifies(this._outputs);\n};\n\nprototype.changes = function() {\n var adds = this._adds,\n mods = this._mods,\n i, n;\n\n for (i=0, n=this._alen; i<n; ++i) {\n this.celltuple(adds[i]);\n adds[i] = null; // for garbage collection\n }\n\n for (i=0, n=this._mlen; i<n; ++i) {\n this.celltuple(mods[i]);\n mods[i] = null; // for garbage collection\n }\n\n this._alen = this._mlen = 0; // reset list of active cells\n};\n","import {randomKDE} from 'vega-statistics';\nimport {ingest, Transform} from 'vega-dataflow';\nimport {sampleCurve} from 'vega-statistics';\nimport {accessorName, error, inherits} from 'vega-util';\nimport {extent} from 'd3-array';\n\n/**\n * Compute kernel density estimates (KDE) for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n * to groupby.\n * @param {function(object): *} params.field - An accessor for the data field\n * to estimate.\n * @param {number} [params.bandwidth=0] - The KDE kernal bandwidth.\n * If zero of unspecified, the bandwidth is automatically determined.\n * @param {string} [params.cumulative=false] - A boolean flag indicating if a\n * density (false) or cumulative distribution (true) should be generated.\n * @param {Array<number>} [params.extent] - The domain extent over which to\n * plot the density. If unspecified, the [min, max] data extent is used.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n * for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n * for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n * plotting the density. If specified, overrides both minsteps and maxsteps\n * to set an exact number of uniform samples. Useful in conjunction with\n * a fixed extent to ensure consistent sample points for stacked densities.\n */\nexport default function KDE(params) {\n Transform.call(this, null, params);\n}\n\nKDE.Definition = {\n \"type\": \"KDE\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"cumulative\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"counts\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"bandwidth\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"extent\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"steps\", \"type\": \"number\" },\n { \"name\": \"minsteps\", \"type\": \"number\", \"default\": 25 },\n { \"name\": \"maxsteps\", \"type\": \"number\", \"default\": 200 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"default\": [\"value\", \"density\"] }\n ]\n};\n\nvar prototype = inherits(KDE, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n if (!this.value || pulse.changed() || _.modified()) {\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby, _.field),\n names = (_.groupby || []).map(accessorName),\n bandwidth = _.bandwidth,\n method = _.cumulative ? 'cdf' : 'pdf',\n minsteps = _.steps || _.minsteps || 25,\n maxsteps = _.steps || _.maxsteps || 200,\n as = _.as || ['value', 'density'],\n values = [];\n\n if (method !== 'pdf' && method !== 'cdf') {\n error('Invalid density method: ' + method);\n }\n\n groups.forEach(g => {\n const density = randomKDE(g, bandwidth)[method],\n scale = _.counts ? g.length : 1,\n domain = _.extent || extent(g);\n\n sampleCurve(density, domain, minsteps, maxsteps).forEach(v => {\n const t = {};\n for (let i=0; i<names.length; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = v[0];\n t[as[1]] = v[1] * scale;\n values.push(ingest(t));\n });\n });\n\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n\n return out;\n};\n\nfunction partition(data, groupby, field) {\n var groups = [],\n get = function(f) { return f(t); },\n map, i, n, t, k, g;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data.map(field));\n } else {\n for (map={}, i=0, n=data.length; i<n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = (g = []);\n g.dims = k;\n groups.push(g);\n }\n g.push(field(t));\n }\n }\n\n return groups;\n}\n","import {Operator} from 'vega-dataflow';\nimport {inherits, key} from 'vega-util';\n\n/**\n * Generates a key function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<string>} params.fields - The field name(s) for the key function.\n * @param {boolean} params.flat - A boolean flag indicating if the field names\n * should be treated as flat property names, side-stepping nested field\n * lookups normally indicated by dot or bracket notation.\n */\nexport default function Key(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(Key, Operator);\n\nfunction update(_) {\n return (this.value && !_.modified()) ? this.value : key(_.fields, _.flat);\n}\n","import {ingest, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Load and parse data from an external source. Marshalls parameter\n * values and then invokes the Dataflow request method.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.url - The URL to load from.\n * @param {object} params.format - The data format options.\n */\nexport default function Load(params) {\n Transform.call(this, [], params);\n}\n\nvar prototype = inherits(Load, Transform);\n\nprototype.transform = function(_, pulse) {\n const df = pulse.dataflow;\n\n if (_.values) {\n // parse and ingest values\n return output(this, pulse, df.parse(_.values, _.format));\n } else {\n // return promise for async loading\n return df.request(_.url, _.format)\n .then(res => output(this, pulse, res.data || []));\n }\n};\n\nfunction output(op, pulse, data) {\n data.forEach(ingest);\n const out = pulse.fork(pulse.NO_FIELDS & pulse.NO_SOURCE);\n out.rem = op.value;\n op.value = out.add = out.source = data;\n return out;\n}\n","import {Transform} from 'vega-dataflow';\nimport {accessorName, error, inherits} from 'vega-util';\n\n/**\n * Extend tuples by joining them with values from a lookup table.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Map} params.index - The lookup table map.\n * @param {Array<function(object): *} params.fields - The fields to lookup.\n * @param {Array<string>} params.as - Output field names for each lookup value.\n * @param {*} [params.default] - A default value to use if lookup fails.\n */\nexport default function Lookup(params) {\n Transform.call(this, {}, params);\n}\n\nLookup.Definition = {\n \"type\": \"Lookup\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"index\", \"type\": \"index\", \"params\": [\n {\"name\": \"from\", \"type\": \"data\", \"required\": true },\n {\"name\": \"key\", \"type\": \"field\", \"required\": true }\n ] },\n { \"name\": \"values\", \"type\": \"field\", \"array\": true },\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true },\n { \"name\": \"default\", \"default\": null }\n ]\n};\n\nvar prototype = inherits(Lookup, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse,\n as = _.as,\n keys = _.fields,\n index = _.index,\n values = _.values,\n defaultValue = _.default==null ? null : _.default,\n reset = _.modified(),\n flag = reset ? pulse.SOURCE : pulse.ADD,\n n = keys.length,\n set, m, mods;\n\n if (values) {\n m = values.length;\n\n if (n > 1 && !as) {\n error('Multi-field lookup requires explicit \"as\" parameter.');\n }\n if (as && as.length !== n * m) {\n error('The \"as\" parameter has too few output field names.');\n }\n as = as || values.map(accessorName);\n\n set = function(t) {\n for (var i=0, k=0, j, v; i<n; ++i) {\n v = index.get(keys[i](t));\n if (v == null) for (j=0; j<m; ++j, ++k) t[as[k]] = defaultValue;\n else for (j=0; j<m; ++j, ++k) t[as[k]] = values[j](v);\n }\n };\n } else {\n if (!as) {\n error('Missing output field names.');\n }\n\n set = function(t) {\n for (var i=0, v; i<n; ++i) {\n v = index.get(keys[i](t));\n t[as[i]] = v==null ? defaultValue : v;\n }\n };\n }\n\n if (reset) {\n out = pulse.reflow(true);\n } else {\n mods = keys.some(function(k) { return pulse.modified(k.fields); });\n flag |= (mods ? pulse.MOD : 0);\n }\n pulse.visit(flag, set);\n\n return out.modifies(as);\n};\n","import {Operator} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Computes global min/max extents over a collection of extents.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<Array<number>>} params.extents - The input extents.\n */\nexport default function MultiExtent(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(MultiExtent, Operator);\n\nfunction update(_) {\n if (this.value && !_.modified()) {\n return this.value;\n }\n\n var min = +Infinity,\n max = -Infinity,\n ext = _.extents,\n i, n, e;\n\n for (i=0, n=ext.length; i<n; ++i) {\n e = ext[i];\n if (e[0] < min) min = e[0];\n if (e[1] > max) max = e[1];\n }\n return [min, max];\n}\n","import {Operator} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Merge a collection of value arrays.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<Array<*>>} params.values - The input value arrrays.\n */\nexport default function MultiValues(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(MultiValues, Operator);\n\nfunction update(_) {\n return (this.value && !_.modified())\n ? this.value\n : _.values.reduce(function(data, _) { return data.concat(_); }, []);\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Operator whose value is simply its parameter hash. This operator is\n * useful for enabling reactive updates to values of nested objects.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function Params(params) {\n Transform.call(this, null, params);\n}\n\ninherits(Params, Transform);\n\nParams.prototype.transform = function(_, pulse) {\n this.modified(_.modified());\n this.value = _;\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS); // do not pass tuples\n};\n","import Aggregate from './Aggregate';\nimport {ValidAggregateOps} from './util/AggregateOps';\nimport {accessor, accessorFields, inherits} from 'vega-util';\n\n/**\n * Aggregate and pivot selected field values to become new fields.\n * This operator is useful to construction cross-tabulations.\n * @constructor\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n * to groupby. These fields act just like groupby fields of an Aggregate transform.\n * @param {function(object): *} params.field - The field to pivot on. The unique\n * values of this field become new field names in the output stream.\n * @param {function(object): *} params.value - The field to populate pivoted fields.\n * The aggregate values of this field become the values of the new pivoted fields.\n * @param {string} [params.op] - The aggregation operation for the value field,\n * applied per cell in the output stream. The default is \"sum\".\n * @param {number} [params.limit] - An optional parameter indicating the maximum\n * number of pivoted fields to generate. The pivoted field names are sorted in\n * ascending order prior to enforcing the limit.\n */\nexport default function Pivot(params) {\n Aggregate.call(this, params);\n}\n\nPivot.Definition = {\n \"type\": \"Pivot\",\n \"metadata\": {\"generates\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"value\", \"type\": \"field\", \"required\": true },\n { \"name\": \"op\", \"type\": \"enum\", \"values\": ValidAggregateOps, \"default\": \"sum\" },\n { \"name\": \"limit\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"key\", \"type\": \"field\" }\n ]\n};\n\nvar prototype = inherits(Pivot, Aggregate);\n\nprototype._transform = prototype.transform;\n\nprototype.transform = function(_, pulse) {\n return this._transform(aggregateParams(_, pulse), pulse);\n};\n\n// Shoehorn a pivot transform into an aggregate transform!\n// First collect all unique pivot field values.\n// Then generate aggregate fields for each output pivot field.\nfunction aggregateParams(_, pulse) {\n var key = _.field,\n value = _.value,\n op = (_.op === 'count' ? '__count__' : _.op) || 'sum',\n fields = accessorFields(key).concat(accessorFields(value)),\n keys = pivotKeys(key, _.limit || 0, pulse);\n\n return {\n key: _.key,\n groupby: _.groupby,\n ops: keys.map(function() { return op; }),\n fields: keys.map(function(k) { return get(k, key, value, fields); }),\n as: keys.map(function(k) { return k + ''; }),\n modified: _.modified.bind(_)\n };\n}\n\n// Generate aggregate field accessor.\n// Output NaN for non-existent values; aggregator will ignore!\nfunction get(k, key, value, fields) {\n return accessor(\n function(d) { return key(d) === k ? value(d) : NaN; },\n fields,\n k + ''\n );\n}\n\n// Collect (and optionally limit) all unique pivot values.\nfunction pivotKeys(key, limit, pulse) {\n var map = {},\n list = [];\n\n pulse.visit(pulse.SOURCE, function(t) {\n var k = key(t);\n if (!map[k]) {\n map[k] = 1;\n list.push(k);\n }\n });\n\n // TODO? Move this comparator to vega-util?\n list.sort(function(u, v) {\n return (u<v||u==null) && v!=null ? -1\n : (u>v||v==null) && u!=null ? 1\n : ((v=v instanceof Date?+v:v),(u=u instanceof Date?+u:u))!==u && v===v ? -1\n : v!==v && u===u ? 1 : 0;\n });\n\n return limit ? list.slice(0, limit) : list;\n}\n","import Facet from './Facet';\nimport {ingest, tupleid} from 'vega-dataflow';\nimport {accessorFields, error, inherits} from 'vega-util';\n\n/**\n * Partitions pre-faceted data into tuple subflows.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n * that generates a subflow of operators and returns its root operator.\n * @param {function(object): Array<object>} params.field - The field\n * accessor for an array of subflow tuple objects.\n */\nexport default function PreFacet(params) {\n Facet.call(this, params);\n}\n\nvar prototype = inherits(PreFacet, Facet);\n\nprototype.transform = function(_, pulse) {\n var self = this,\n flow = _.subflow,\n field = _.field;\n\n if (_.modified('field') || field && pulse.modified(accessorFields(field))) {\n error('PreFacet does not support field modification.');\n }\n\n this._targets.active = 0; // reset list of active subflows\n\n pulse.visit(pulse.MOD, function(t) {\n var sf = self.subflow(tupleid(t), flow, pulse, t);\n field ? field(t).forEach(function(_) { sf.mod(_); }) : sf.mod(t);\n });\n\n pulse.visit(pulse.ADD, function(t) {\n var sf = self.subflow(tupleid(t), flow, pulse, t);\n field ? field(t).forEach(function(_) { sf.add(ingest(_)); }) : sf.add(t);\n });\n\n pulse.visit(pulse.REM, function(t) {\n var sf = self.subflow(tupleid(t), flow, pulse, t);\n field ? field(t).forEach(function(_) { sf.rem(_); }) : sf.rem(t);\n });\n\n return pulse;\n};\n","import {fieldNames} from './util/util';\nimport {ingest, rederive, Transform, tupleid} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Performs a relational projection, copying selected fields from source\n * tuples to a new set of derived tuples.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *} params.fields - The fields to project,\n * as an array of field accessors. If unspecified, all fields will be\n * copied with names unchanged.\n * @param {Array<string>} [params.as] - Output field names for each projected\n * field. Any unspecified fields will use the field name provided by\n * the field accessor.\n */\nexport default function Project(params) {\n Transform.call(this, null, params);\n}\n\nProject.Definition = {\n \"type\": \"Project\",\n \"metadata\": {\"generates\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true },\n { \"name\": \"as\", \"type\": \"string\", \"null\": true, \"array\": true },\n ]\n};\n\nvar prototype = inherits(Project, Transform);\n\nprototype.transform = function(_, pulse) {\n var fields = _.fields,\n as = fieldNames(_.fields, _.as || []),\n derive = fields\n ? function(s, t) { return project(s, t, fields, as); }\n : rederive,\n out, lut;\n\n if (this.value) {\n lut = this.value;\n } else {\n pulse = pulse.addAll();\n lut = this.value = {};\n }\n\n out = pulse.fork(pulse.NO_SOURCE);\n\n pulse.visit(pulse.REM, function(t) {\n var id = tupleid(t);\n out.rem.push(lut[id]);\n lut[id] = null;\n });\n\n pulse.visit(pulse.ADD, function(t) {\n var dt = derive(t, ingest({}));\n lut[tupleid(t)] = dt;\n out.add.push(dt);\n });\n\n pulse.visit(pulse.MOD, function(t) {\n out.mod.push(derive(t, lut[tupleid(t)]));\n });\n\n return out;\n};\n\nfunction project(s, t, fields, as) {\n for (var i=0, n=fields.length; i<n; ++i) {\n t[as[i]] = fields[i](s);\n }\n return t;\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Proxy the value of another operator as a pure signal value.\n * Ensures no tuples are propagated.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {*} params.value - The value to proxy, becomes the value of this operator.\n */\nexport default function Proxy(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Proxy, Transform);\n\nprototype.transform = function(_, pulse) {\n this.value = _.value;\n return _.modified('value')\n ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS)\n : pulse.StopPropagation;\n};\n","import {derive, rederive, Transform, tupleid} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Relays a data stream between data processing pipelines.\n * If the derive parameter is set, this transform will create derived\n * copies of observed tuples. This provides derived data streams in which\n * modifications to the tuples do not pollute an upstream data source.\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.derive=false] - Boolean flag indicating if\n * the transform should make derived copies of incoming tuples.\n * @constructor\n */\nexport default function Relay(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Relay, Transform);\n\nprototype.transform = function(_, pulse) {\n var out, lut;\n\n if (this.value) {\n lut = this.value;\n } else {\n out = pulse = pulse.addAll();\n lut = this.value = {};\n }\n\n if (_.derive) {\n out = pulse.fork(pulse.NO_SOURCE);\n\n pulse.visit(pulse.REM, function(t) {\n var id = tupleid(t);\n out.rem.push(lut[id]);\n lut[id] = null;\n });\n\n pulse.visit(pulse.ADD, function(t) {\n var dt = derive(t);\n lut[tupleid(t)] = dt;\n out.add.push(dt);\n });\n\n pulse.visit(pulse.MOD, function(t) {\n out.mod.push(rederive(t, lut[tupleid(t)]));\n });\n }\n\n return out;\n};\n","import {Transform, tupleid} from 'vega-dataflow';\nimport {random} from 'vega-statistics';\nimport {inherits} from 'vega-util';\n\n/**\n * Samples tuples passing through this operator.\n * Uses reservoir sampling to maintain a representative sample.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.size=1000] - The maximum number of samples.\n */\nexport default function Sample(params) {\n Transform.call(this, [], params);\n this.count = 0;\n}\n\nSample.Definition = {\n \"type\": \"Sample\",\n \"metadata\": {},\n \"params\": [\n { \"name\": \"size\", \"type\": \"number\", \"default\": 1000 }\n ]\n};\n\nvar prototype = inherits(Sample, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n mod = _.modified('size'),\n num = _.size,\n res = this.value,\n cnt = this.count,\n cap = 0,\n map = res.reduce(function(m, t) {\n m[tupleid(t)] = 1;\n return m;\n }, {});\n\n // sample reservoir update function\n function update(t) {\n var p, idx;\n\n if (res.length < num) {\n res.push(t);\n } else {\n idx = ~~((cnt + 1) * random());\n if (idx < res.length && idx >= cap) {\n p = res[idx];\n if (map[tupleid(p)]) out.rem.push(p); // eviction\n res[idx] = t;\n }\n }\n ++cnt;\n }\n\n if (pulse.rem.length) {\n // find all tuples that should be removed, add to output\n pulse.visit(pulse.REM, function(t) {\n var id = tupleid(t);\n if (map[id]) {\n map[id] = -1;\n out.rem.push(t);\n }\n --cnt;\n });\n\n // filter removed tuples out of the sample reservoir\n res = res.filter(function(t) { return map[tupleid(t)] !== -1; });\n }\n\n if ((pulse.rem.length || mod) && res.length < num && pulse.source) {\n // replenish sample if backing data source is available\n cap = cnt = res.length;\n pulse.visit(pulse.SOURCE, function(t) {\n // update, but skip previously sampled tuples\n if (!map[tupleid(t)]) update(t);\n });\n cap = -1;\n }\n\n if (mod && res.length > num) {\n for (var i=0, n=res.length-num; i<n; ++i) {\n map[tupleid(res[i])] = -1;\n out.rem.push(res[i]);\n }\n res = res.slice(n);\n }\n\n if (pulse.mod.length) {\n // propagate modified tuples in the sample reservoir\n pulse.visit(pulse.MOD, function(t) {\n if (map[tupleid(t)]) out.mod.push(t);\n });\n }\n\n if (pulse.add.length) {\n // update sample reservoir\n pulse.visit(pulse.ADD, update);\n }\n\n if (pulse.add.length || cap < 0) {\n // output newly added tuples\n out.add = res.filter(function(t) { return !map[tupleid(t)]; });\n }\n\n this.count = cnt;\n this.value = out.source = res;\n return out;\n};\n","import {ingest, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\nimport {range} from 'd3-array';\n\n/**\n * Generates data tuples for a specified sequence range of numbers.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} params.start - The first number in the sequence.\n * @param {number} params.stop - The last number (exclusive) in the sequence.\n * @param {number} [params.step=1] - The step size between numbers in the sequence.\n */\nexport default function Sequence(params) {\n Transform.call(this, null, params);\n}\n\nSequence.Definition = {\n \"type\": \"Sequence\",\n \"metadata\": {\"changes\": true},\n \"params\": [\n { \"name\": \"start\", \"type\": \"number\", \"required\": true },\n { \"name\": \"stop\", \"type\": \"number\", \"required\": true },\n { \"name\": \"step\", \"type\": \"number\", \"default\": 1 },\n { \"name\": \"as\", \"type\": \"string\", \"default\": \"data\" }\n ]\n};\n\nvar prototype = inherits(Sequence, Transform);\n\nprototype.transform = function(_, pulse) {\n if (this.value && !_.modified()) return;\n\n var out = pulse.materialize().fork(pulse.MOD),\n as = _.as || 'data';\n\n out.rem = this.value ? pulse.rem.concat(this.value) : pulse.rem;\n\n this.value = range(_.start, _.stop, _.step || 1).map(function(v) {\n var t = {};\n t[as] = v;\n return ingest(t);\n });\n\n out.add = pulse.add.concat(this.value);\n\n return out;\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Propagates a new pulse without any tuples so long as the input\n * pulse contains some added, removed or modified tuples.\n * @param {object} params - The parameters for this operator.\n * @constructor\n */\nexport default function Sieve(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\nvar prototype = inherits(Sieve, Transform);\n\nprototype.transform = function(_, pulse) {\n this.value = pulse.source;\n return pulse.changed()\n ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS)\n : pulse.StopPropagation;\n};\n","import {Transform} from 'vega-dataflow';\nimport {fastmap, inherits} from 'vega-util';\n\n/**\n * An index that maps from unique, string-coerced, field values to tuples.\n * Assumes that the field serves as a unique key with no duplicate values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field accessor to index.\n */\nexport default function TupleIndex(params) {\n Transform.call(this, fastmap(), params);\n}\n\nvar prototype = inherits(TupleIndex, Transform);\n\nprototype.transform = function(_, pulse) {\n var df = pulse.dataflow,\n field = _.field,\n index = this.value,\n mod = true;\n\n function set(t) { index.set(field(t), t); }\n\n if (_.modified('field') || pulse.modified(field.fields)) {\n index.clear();\n pulse.visit(pulse.SOURCE, set);\n } else if (pulse.changed()) {\n pulse.visit(pulse.REM, function(t) { index.delete(field(t)); });\n pulse.visit(pulse.ADD, set);\n } else {\n mod = false;\n }\n\n this.modified(mod);\n if (index.empty > df.cleanThreshold) df.runAfter(index.clean);\n return pulse.fork();\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Extracts an array of values. Assumes the source data has already been\n * reduced as needed (e.g., by an upstream Aggregate transform).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The domain field to extract.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for sorting the values. The comparator will be\n * applied to backing tuples prior to value extraction.\n */\nexport default function Values(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Values, Transform);\n\nprototype.transform = function(_, pulse) {\n var run = !this.value\n || _.modified('field')\n || _.modified('sort')\n || pulse.changed()\n || (_.sort && pulse.modified(_.sort.fields));\n\n if (run) {\n this.value = (_.sort\n ? pulse.source.slice().sort(_.sort)\n : pulse.source).map(_.field);\n }\n};\n","import {error, zero} from 'vega-util';\n\nexport function WindowOp(op, field, param, as) {\n let fn = WindowOps[op](field, param);\n return {\n init: fn.init || zero,\n update: function(w, t) { t[as] = fn.next(w); }\n };\n}\n\nexport const WindowOps = {\n row_number: function() {\n return {\n next: w => w.index + 1\n };\n },\n rank: function() {\n let rank;\n return {\n init: () => rank = 1,\n next: w => {\n let i = w.index,\n data = w.data;\n return (i && w.compare(data[i - 1], data[i])) ? (rank = i + 1) : rank;\n }\n };\n },\n dense_rank: function() {\n let drank;\n return {\n init: () => drank = 1,\n next: w => {\n let i = w.index,\n d = w.data;\n return (i && w.compare(d[i - 1], d[i])) ? ++drank : drank;\n }\n };\n },\n percent_rank: function() {\n let rank = WindowOps.rank(),\n next = rank.next;\n return {\n init: rank.init,\n next: w => (next(w) - 1) / (w.data.length - 1)\n };\n },\n cume_dist: function() {\n let cume;\n return {\n init: () => cume = 0,\n next: w => {\n let i = w.index,\n d = w.data,\n c = w.compare;\n if (cume < i) {\n while (i + 1 < d.length && !c(d[i], d[i + 1])) ++i;\n cume = i;\n }\n return (1 + cume) / d.length;\n }\n };\n },\n ntile: function(field, num) {\n num = +num;\n if (!(num > 0)) error('ntile num must be greater than zero.');\n let cume = WindowOps.cume_dist(),\n next = cume.next;\n return {\n init: cume.init,\n next: w => Math.ceil(num * next(w))\n };\n },\n\n lag: function(field, offset) {\n offset = +offset || 1;\n return {\n next: w => {\n let i = w.index - offset;\n return i >= 0 ? field(w.data[i]) : null;\n }\n };\n },\n lead: function(field, offset) {\n offset = +offset || 1;\n return {\n next: w => {\n let i = w.index + offset,\n d = w.data;\n return i < d.length ? field(d[i]) : null;\n }\n };\n },\n\n first_value: function(field) {\n return {\n next: w => field(w.data[w.i0])\n };\n },\n last_value: function(field) {\n return {\n next: w => field(w.data[w.i1 - 1])\n }\n },\n nth_value: function(field, nth) {\n nth = +nth;\n if (!(nth > 0)) error('nth_value nth must be greater than zero.');\n return {\n next: w => {\n let i = w.i0 + (nth - 1);\n return i < w.i1 ? field(w.data[i]) : null;\n }\n }\n },\n\n prev_value: function(field) {\n let prev = null;\n return {\n next: w => {\n let v = field(w.data[w.index]);\n return v != null ? (prev = v) : prev;\n }\n }\n },\n next_value: function(field) {\n let v = null,\n i = -1;\n return {\n next: w => {\n let d = w.data;\n return w.index <= i ? v\n : (i = find(field, d, w.index)) < 0\n ? (i = d.length, v = null)\n : (v = field(d[i]));\n }\n };\n },\n\n};\n\nfunction find(field, data, index) {\n for (let n = data.length; index < n; ++index) {\n let v = field(data[index]);\n if (v != null) return index;\n }\n return -1;\n}\n\nexport var ValidWindowOps = Object.keys(WindowOps);\n","import {createMeasure, compileMeasures, measureName} from './AggregateOps';\nimport TupleStore from './TupleStore';\nimport {WindowOp, WindowOps} from './WindowOps';\nimport {accessorFields, accessorName, array, error} from 'vega-util';\n\nexport default function WindowState(_) {\n let self = this,\n ops = array(_.ops),\n fields = array(_.fields),\n params = array(_.params),\n as = array(_.as),\n outputs = self.outputs = [],\n windows = self.windows = [],\n inputs = {},\n map = {},\n countOnly = true,\n counts = [],\n measures = [];\n\n function visitInputs(f) {\n array(accessorFields(f)).forEach(_ => inputs[_] = 1);\n }\n visitInputs(_.sort);\n\n ops.forEach(function(op, i) {\n let field = fields[i],\n mname = accessorName(field),\n name = measureName(op, mname, as[i]);\n\n visitInputs(field);\n outputs.push(name);\n\n // Window operation\n if (WindowOps.hasOwnProperty(op)) {\n windows.push(WindowOp(op, fields[i], params[i], name));\n }\n\n // Aggregate operation\n else {\n if (field == null && op !== 'count') {\n error('Null aggregate field specified.');\n }\n if (op === 'count') {\n counts.push(name);\n return;\n }\n\n countOnly = false;\n let m = map[mname];\n if (!m) {\n m = (map[mname] = []);\n m.field = field;\n measures.push(m);\n }\n m.push(createMeasure(op, name));\n }\n });\n\n if (counts.length || measures.length) {\n self.cell = cell(measures, counts, countOnly);\n }\n\n self.inputs = Object.keys(inputs);\n}\n\nconst prototype = WindowState.prototype;\n\nprototype.init = function() {\n this.windows.forEach(_ => _.init());\n if (this.cell) this.cell.init();\n};\n\nprototype.update = function(w, t) {\n let self = this,\n cell = self.cell,\n wind = self.windows,\n data = w.data,\n m = wind && wind.length,\n j;\n\n if (cell) {\n for (j=w.p0; j<w.i0; ++j) cell.rem(data[j]);\n for (j=w.p1; j<w.i1; ++j) cell.add(data[j]);\n cell.set(t);\n }\n for (j=0; j<m; ++j) wind[j].update(w, t);\n};\n\nfunction cell(measures, counts, countOnly) {\n measures = measures.map(m => compileMeasures(m, m.field));\n\n let cell = {\n num: 0,\n agg: null,\n store: false,\n count: counts\n };\n\n if (!countOnly) {\n var n = measures.length,\n a = cell.agg = Array(n),\n i = 0;\n for (; i<n; ++i) a[i] = new measures[i](cell);\n }\n\n if (cell.store) {\n var store = cell.data = new TupleStore();\n }\n\n cell.add = function(t) {\n cell.num += 1;\n if (countOnly) return;\n if (store) store.add(t);\n for (let i=0; i<n; ++i) {\n a[i].add(a[i].get(t), t);\n }\n };\n\n cell.rem = function(t) {\n cell.num -= 1;\n if (countOnly) return;\n if (store) store.rem(t);\n for (let i=0; i<n; ++i) {\n a[i].rem(a[i].get(t), t);\n }\n };\n\n cell.set = function(t) {\n let i, n;\n\n // consolidate stored values\n if (store) store.values();\n\n // update tuple properties\n for (i=0, n=counts.length; i<n; ++i) t[counts[i]] = cell.num;\n if (!countOnly) for (i=0, n=a.length; i<n; ++i) a[i].set(t);\n };\n\n cell.init = function() {\n cell.num = 0;\n if (store) store.reset();\n for (let i=0; i<n; ++i) a[i].init();\n };\n\n return cell;\n}\n","import {groupkey} from './util/AggregateKeys';\nimport {ValidAggregateOps} from './util/AggregateOps';\nimport SortedList from './util/SortedList';\nimport {ValidWindowOps} from './util/WindowOps';\nimport WindowState from './util/WindowState';\nimport {Transform, tupleid} from 'vega-dataflow';\nimport {constant, inherits} from 'vega-util';\nimport {bisector} from 'd3-array';\n\n/**\n * Perform window calculations and write results to the input stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator function for sorting tuples within a window.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors by which to partition tuples into separate windows.\n * @param {Array<string>} params.ops - An array of strings indicating window operations to perform.\n * @param {Array<function(object): *>} [params.fields] - An array of accessors\n * for data fields to use as inputs to window operations.\n * @param {Array<*>} [params.params] - An array of parameter values for window operations.\n * @param {Array<string>} [params.as] - An array of output field names for window operations.\n * @param {Array<number>} [params.frame] - Window frame definition as two-element array.\n * @param {boolean} [params.ignorePeers=false] - If true, base window frame boundaries on row\n * number alone, ignoring peers with identical sort values. If false (default),\n * the window boundaries will be adjusted to include peer values.\n */\nexport default function Window(params) {\n Transform.call(this, {}, params);\n this._mlen = 0;\n this._mods = [];\n}\n\nWindow.Definition = {\n \"type\": \"Window\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"ops\", \"type\": \"enum\", \"array\": true, \"values\": ValidWindowOps.concat(ValidAggregateOps) },\n { \"name\": \"params\", \"type\": \"number\", \"null\": true, \"array\": true },\n { \"name\": \"fields\", \"type\": \"field\", \"null\": true, \"array\": true },\n { \"name\": \"as\", \"type\": \"string\", \"null\": true, \"array\": true },\n { \"name\": \"frame\", \"type\": \"number\", \"null\": true, \"array\": true, \"length\": 2, \"default\": [null, 0] },\n { \"name\": \"ignorePeers\", \"type\": \"boolean\", \"default\": false }\n ]\n};\n\nvar prototype = inherits(Window, Transform);\n\nprototype.transform = function(_, pulse) {\n var self = this,\n state = self.state,\n mod = _.modified(),\n i, n;\n\n this.stamp = pulse.stamp;\n\n // initialize window state\n if (!state || mod) {\n state = self.state = new WindowState(_);\n }\n\n // retrieve group for a tuple\n var key = groupkey(_.groupby);\n function group(t) { return self.group(key(t)); }\n\n // partition input tuples\n if (mod || pulse.modified(state.inputs)) {\n self.value = {};\n pulse.visit(pulse.SOURCE, function(t) { group(t).add(t); });\n } else {\n pulse.visit(pulse.REM, function(t) { group(t).remove(t); });\n pulse.visit(pulse.ADD, function(t) { group(t).add(t); });\n }\n\n // perform window calculations for each modified partition\n for (i=0, n=self._mlen; i<n; ++i) {\n processPartition(self._mods[i], state, _);\n }\n self._mlen = 0;\n self._mods = [];\n\n // TODO don't reflow everything?\n return pulse.reflow(mod).modifies(state.outputs);\n};\n\nprototype.group = function(key) {\n var self = this,\n group = self.value[key];\n\n if (!group) {\n group = self.value[key] = SortedList(tupleid);\n group.stamp = -1;\n }\n\n if (group.stamp < self.stamp) {\n group.stamp = self.stamp;\n self._mods[self._mlen++] = group;\n }\n\n return group;\n};\n\nfunction processPartition(list, state, _) {\n var sort = _.sort,\n range = sort && !_.ignorePeers,\n frame = _.frame || [null, 0],\n data = list.data(sort),\n n = data.length,\n i = 0,\n b = range ? bisector(sort) : null,\n w = {\n i0: 0, i1: 0, p0: 0, p1: 0, index: 0,\n data: data, compare: sort || constant(-1)\n };\n\n for (state.init(); i<n; ++i) {\n setWindow(w, frame, i, n);\n if (range) adjustRange(w, b);\n state.update(w, data[i]);\n }\n}\n\nfunction setWindow(w, f, i, n) {\n w.p0 = w.i0;\n w.p1 = w.i1;\n w.i0 = f[0] == null ? 0 : Math.max(0, i - Math.abs(f[0]));\n w.i1 = f[1] == null ? n : Math.min(n, i + Math.abs(f[1]) + 1);\n w.index = i;\n}\n\n// if frame type is 'range', adjust window for peer values\nfunction adjustRange(w, bisect) {\n var r0 = w.i0,\n r1 = w.i1 - 1,\n c = w.compare,\n d = w.data,\n n = d.length - 1;\n\n if (r0 > 0 && !c(d[r0], d[r0-1])) w.i0 = bisect.left(d, d[r0]);\n if (r1 < n && !c(d[r1], d[r1+1])) w.i1 = bisect.right(d, d[r1]);\n}\n","export const Top = 'top';\nexport const Left = 'left';\nexport const Right = 'right';\nexport const Bottom = 'bottom';\n\nexport const TopLeft = 'top-left';\nexport const TopRight = 'top-right';\nexport const BottomLeft = 'bottom-left';\nexport const BottomRight = 'bottom-right';\n\nexport const Start = 'start';\nexport const Middle = 'middle';\nexport const End = 'end';\n\nexport const X = 'x';\nexport const Y = 'y';\n\nexport const Group = 'group';\n\nexport const AxisRole = 'axis';\nexport const TitleRole = 'title';\nexport const FrameRole = 'frame';\nexport const ScopeRole = 'scope';\nexport const LegendRole = 'legend';\n\nexport const RowHeader = 'row-header';\nexport const RowFooter = 'row-footer';\nexport const RowTitle = 'row-title';\nexport const ColHeader = 'column-header';\nexport const ColFooter = 'column-footer';\nexport const ColTitle = 'column-title';\n\nexport const Padding = 'padding';\n\nexport const Symbols = 'symbol';\n\nexport const Fit = 'fit';\nexport const FitX = 'fit-x';\nexport const FitY = 'fit-y';\nexport const Pad = 'pad';\nexport const None = 'none';\n\nexport const All = 'all';\nexport const Each = 'each';\nexport const Flush = 'flush';\n\nexport const Column = 'column';\nexport const Row = 'row';\n","export default function Bounds(b) {\n this.clear();\n if (b) this.union(b);\n}\n\nvar prototype = Bounds.prototype;\n\nprototype.clone = function() {\n return new Bounds(this);\n};\n\nprototype.clear = function() {\n this.x1 = +Number.MAX_VALUE;\n this.y1 = +Number.MAX_VALUE;\n this.x2 = -Number.MAX_VALUE;\n this.y2 = -Number.MAX_VALUE;\n return this;\n};\n\nprototype.empty = function() {\n return (\n this.x1 === +Number.MAX_VALUE &&\n this.y1 === +Number.MAX_VALUE &&\n this.x2 === -Number.MAX_VALUE &&\n this.y2 === -Number.MAX_VALUE\n );\n};\n\nprototype.equals = function(b) {\n return (\n this.x1 === b.x1 &&\n this.y1 === b.y1 &&\n this.x2 === b.x2 &&\n this.y2 === b.y2\n );\n};\n\nprototype.set = function(x1, y1, x2, y2) {\n if (x2 < x1) {\n this.x2 = x1;\n this.x1 = x2;\n } else {\n this.x1 = x1;\n this.x2 = x2;\n }\n if (y2 < y1) {\n this.y2 = y1;\n this.y1 = y2;\n } else {\n this.y1 = y1;\n this.y2 = y2;\n }\n return this;\n};\n\nprototype.add = function(x, y) {\n if (x < this.x1) this.x1 = x;\n if (y < this.y1) this.y1 = y;\n if (x > this.x2) this.x2 = x;\n if (y > this.y2) this.y2 = y;\n return this;\n};\n\nprototype.expand = function(d) {\n this.x1 -= d;\n this.y1 -= d;\n this.x2 += d;\n this.y2 += d;\n return this;\n};\n\nprototype.round = function() {\n this.x1 = Math.floor(this.x1);\n this.y1 = Math.floor(this.y1);\n this.x2 = Math.ceil(this.x2);\n this.y2 = Math.ceil(this.y2);\n return this;\n};\n\nprototype.translate = function(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n return this;\n};\n\nprototype.rotate = function(angle, x, y) {\n const p = this.rotatedPoints(angle, x, y);\n return this.clear()\n .add(p[0], p[1])\n .add(p[2], p[3])\n .add(p[4], p[5])\n .add(p[6], p[7]);\n};\n\nprototype.rotatedPoints = function(angle, x, y) {\n var {x1, y1, x2, y2} = this,\n cos = Math.cos(angle),\n sin = Math.sin(angle),\n cx = x - x*cos + y*sin,\n cy = y - x*sin - y*cos;\n\n return [\n cos*x1 - sin*y1 + cx, sin*x1 + cos*y1 + cy,\n cos*x1 - sin*y2 + cx, sin*x1 + cos*y2 + cy,\n cos*x2 - sin*y1 + cx, sin*x2 + cos*y1 + cy,\n cos*x2 - sin*y2 + cx, sin*x2 + cos*y2 + cy\n ];\n};\n\nprototype.union = function(b) {\n if (b.x1 < this.x1) this.x1 = b.x1;\n if (b.y1 < this.y1) this.y1 = b.y1;\n if (b.x2 > this.x2) this.x2 = b.x2;\n if (b.y2 > this.y2) this.y2 = b.y2;\n return this;\n};\n\nprototype.intersect = function(b) {\n if (b.x1 > this.x1) this.x1 = b.x1;\n if (b.y1 > this.y1) this.y1 = b.y1;\n if (b.x2 < this.x2) this.x2 = b.x2;\n if (b.y2 < this.y2) this.y2 = b.y2;\n return this;\n};\n\nprototype.encloses = function(b) {\n return b && (\n this.x1 <= b.x1 &&\n this.x2 >= b.x2 &&\n this.y1 <= b.y1 &&\n this.y2 >= b.y2\n );\n};\n\nprototype.alignsWith = function(b) {\n return b && (\n this.x1 == b.x1 ||\n this.x2 == b.x2 ||\n this.y1 == b.y1 ||\n this.y2 == b.y2\n );\n};\n\nprototype.intersects = function(b) {\n return b && !(\n this.x2 < b.x1 ||\n this.x1 > b.x2 ||\n this.y2 < b.y1 ||\n this.y1 > b.y2\n );\n};\n\nprototype.contains = function(x, y) {\n return !(\n x < this.x1 ||\n x > this.x2 ||\n y < this.y1 ||\n y > this.y2\n );\n};\n\nprototype.width = function() {\n return this.x2 - this.x1;\n};\n\nprototype.height = function() {\n return this.y2 - this.y1;\n};\n","var gradient_id = 0;\n\nexport const patternPrefix = 'p_';\n\nexport function isGradient(value) {\n return value && value.gradient;\n}\n\nexport function gradientRef(g, defs, base) {\n let id = g.id,\n type = g.gradient,\n prefix = type === 'radial' ? patternPrefix : '';\n\n // check id, assign default values as needed\n if (!id) {\n id = g.id = 'gradient_' + (gradient_id++);\n if (type === 'radial') {\n g.x1 = get(g.x1, 0.5);\n g.y1 = get(g.y1, 0.5);\n g.r1 = get(g.r1, 0);\n g.x2 = get(g.x2, 0.5);\n g.y2 = get(g.y2, 0.5);\n g.r2 = get(g.r2, 0.5);\n prefix = patternPrefix;\n } else {\n g.x1 = get(g.x1, 0);\n g.y1 = get(g.y1, 0);\n g.x2 = get(g.x2, 1);\n g.y2 = get(g.y2, 0);\n }\n }\n\n // register definition\n defs[id] = g;\n\n // return url reference\n return 'url(' + (base || '') + '#' + prefix + id + ')';\n}\n\nfunction get(val, def) {\n return val != null ? val : def;\n}\n\nexport default function(p0, p1) {\n var stops = [], gradient;\n return gradient = {\n gradient: 'linear',\n x1: p0 ? p0[0] : 0,\n y1: p0 ? p0[1] : 0,\n x2: p1 ? p1[0] : 1,\n y2: p1 ? p1[1] : 0,\n stops: stops,\n stop: function(offset, color) {\n stops.push({offset: offset, color: color});\n return gradient;\n }\n };\n}\n","import Bounds from './Bounds';\n\nexport default function Item(mark) {\n this.mark = mark;\n this.bounds = (this.bounds || new Bounds());\n}\n","import Item from './Item';\nimport {inherits} from 'vega-util';\n\nexport default function GroupItem(mark) {\n Item.call(this, mark);\n this.items = (this.items || []);\n}\n\ninherits(GroupItem, Item);\n","export function domCanvas(w, h) {\n if (typeof document !== 'undefined' && document.createElement) {\n var c = document.createElement('canvas');\n if (c && c.getContext) {\n c.width = w;\n c.height = h;\n return c;\n }\n }\n return null;\n}\n\nexport function domImage() {\n return typeof Image !== 'undefined' ? Image : null;\n}\n","import {image} from 'vega-canvas';\nimport {loader} from 'vega-loader';\n\nexport default function ResourceLoader(customLoader) {\n this._pending = 0;\n this._loader = customLoader || loader();\n}\n\nvar prototype = ResourceLoader.prototype;\n\nprototype.pending = function() {\n return this._pending;\n};\n\nfunction increment(loader) {\n loader._pending += 1;\n}\n\nfunction decrement(loader) {\n loader._pending -= 1;\n}\n\nprototype.sanitizeURL = function(uri) {\n var loader = this;\n increment(loader);\n\n return loader._loader.sanitize(uri, {context:'href'})\n .then(function(opt) {\n decrement(loader);\n return opt;\n })\n .catch(function() {\n decrement(loader);\n return null;\n });\n};\n\nprototype.loadImage = function(uri) {\n var loader = this,\n Image = image();\n increment(loader);\n\n return loader._loader\n .sanitize(uri, {context: 'image'})\n .then(function(opt) {\n var url = opt.href;\n if (!url || !Image) throw {url: url};\n\n var img = new Image();\n\n img.onload = function() {\n decrement(loader);\n img.loaded = true;\n };\n\n img.onerror = function() {\n decrement(loader);\n img.loaded = false;\n }\n\n img.src = url;\n return img;\n })\n .catch(function(e) {\n decrement(loader);\n return {loaded: false, width: 0, height: 0, src: e && e.url || ''};\n });\n};\n\nprototype.ready = function() {\n var loader = this;\n return new Promise(function(accept) {\n function poll(value) {\n if (!loader.pending()) accept(value);\n else setTimeout(function() { poll(true); }, 10);\n }\n poll(false);\n });\n};\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport line from \"./line\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import curveLinear from \"./linear\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","export var slice = Array.prototype.slice;\n","import {pi, tau} from \"../math\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","import {pi, tau} from \"../math\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","export default function() {}\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop\";\nimport {point} from \"./basis\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop\";\nimport {point} from \"./cardinal\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math\";\nimport {Cardinal} from \"./cardinal\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed\";\nimport noop from \"../noop\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","import ascending from \"./ascending\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveBundle,\n curveCardinal,\n curveCardinalClosed,\n curveCardinalOpen,\n curveCatmullRom,\n curveCatmullRomClosed,\n curveCatmullRomOpen,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore\n} from 'd3-shape';\n\nvar lookup = {\n 'basis': {\n curve: curveBasis\n },\n 'basis-closed': {\n curve: curveBasisClosed\n },\n 'basis-open': {\n curve: curveBasisOpen\n },\n 'bundle': {\n curve: curveBundle,\n tension: 'beta',\n value: 0.85\n },\n 'cardinal': {\n curve: curveCardinal,\n tension: 'tension',\n value: 0\n },\n 'cardinal-open': {\n curve: curveCardinalOpen,\n tension: 'tension',\n value: 0\n },\n 'cardinal-closed': {\n curve: curveCardinalClosed,\n tension: 'tension',\n value: 0\n },\n 'catmull-rom': {\n curve: curveCatmullRom,\n tension: 'alpha',\n value: 0.5\n },\n 'catmull-rom-closed': {\n curve: curveCatmullRomClosed,\n tension: 'alpha',\n value: 0.5\n },\n 'catmull-rom-open': {\n curve: curveCatmullRomOpen,\n tension: 'alpha',\n value: 0.5\n },\n 'linear': {\n curve: curveLinear\n },\n 'linear-closed': {\n curve: curveLinearClosed\n },\n 'monotone': {\n horizontal: curveMonotoneY,\n vertical: curveMonotoneX\n },\n 'natural': {\n curve: curveNatural\n },\n 'step': {\n curve: curveStep\n },\n 'step-after': {\n curve: curveStepAfter\n },\n 'step-before': {\n curve: curveStepBefore\n }\n};\n\nexport default function curves(type, orientation, tension) {\n var entry = lookup.hasOwnProperty(type) && lookup[type],\n curve = null;\n\n if (entry) {\n curve = entry.curve || entry[orientation || 'vertical'];\n if (entry.tension && tension != null) {\n curve = curve[entry.tension](tension);\n }\n }\n\n return curve;\n}\n","// Path parsing and rendering code adapted from fabric.js -- Thanks!\nvar cmdlen = { m:2, l:2, h:1, v:1, c:6, s:4, q:4, t:2, a:7 },\n regexp = [/([MLHVCSQTAZmlhvcsqtaz])/g, /###/, /(\\d)([-+])/g, /\\s|,|###/];\n\nexport default function(pathstr) {\n var result = [],\n path,\n curr,\n chunks,\n parsed, param,\n cmd, len, i, j, n, m;\n\n // First, break path into command sequence\n path = pathstr\n .slice()\n .replace(regexp[0], '###$1')\n .split(regexp[1])\n .slice(1);\n\n // Next, parse each command in turn\n for (i=0, n=path.length; i<n; ++i) {\n curr = path[i];\n chunks = curr\n .slice(1)\n .trim()\n .replace(regexp[2],'$1###$2')\n .split(regexp[3]);\n cmd = curr.charAt(0);\n\n parsed = [cmd];\n for (j=0, m=chunks.length; j<m; ++j) {\n if ((param = +chunks[j]) === param) { // not NaN\n parsed.push(param);\n }\n }\n\n len = cmdlen[cmd.toLowerCase()];\n if (parsed.length-1 > len) {\n for (j=1, m=parsed.length; j<m; j+=len) {\n result.push([cmd].concat(parsed.slice(j, j+len)));\n }\n }\n else {\n result.push(parsed);\n }\n }\n\n return result;\n}\n","export var DegToRad = Math.PI / 180;\nexport var HalfPi = Math.PI / 2;\nexport var Tau = Math.PI * 2;\nexport var HalfSqrt3 = Math.sqrt(3) / 2;\n","import {DegToRad, HalfPi, Tau} from '../util/constants';\n\nexport var segmentCache = {};\nexport var bezierCache = {};\n\nvar join = [].join;\n\n// Copied from Inkscape svgtopdf, thanks!\nexport function segments(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n var key = join.call(arguments);\n if (segmentCache[key]) {\n return segmentCache[key];\n }\n\n var th = rotateX * DegToRad;\n var sin_th = Math.sin(th);\n var cos_th = Math.cos(th);\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n var px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n var py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n var pl = (px*px) / (rx*rx) + (py*py) / (ry*ry);\n if (pl > 1) {\n pl = Math.sqrt(pl);\n rx *= pl;\n ry *= pl;\n }\n\n var a00 = cos_th / rx;\n var a01 = sin_th / rx;\n var a10 = (-sin_th) / ry;\n var a11 = (cos_th) / ry;\n var x0 = a00 * ox + a01 * oy;\n var y0 = a10 * ox + a11 * oy;\n var x1 = a00 * x + a01 * y;\n var y1 = a10 * x + a11 * y;\n\n var d = (x1-x0) * (x1-x0) + (y1-y0) * (y1-y0);\n var sfactor_sq = 1 / d - 0.25;\n if (sfactor_sq < 0) sfactor_sq = 0;\n var sfactor = Math.sqrt(sfactor_sq);\n if (sweep == large) sfactor = -sfactor;\n var xc = 0.5 * (x0 + x1) - sfactor * (y1-y0);\n var yc = 0.5 * (y0 + y1) + sfactor * (x1-x0);\n\n var th0 = Math.atan2(y0-yc, x0-xc);\n var th1 = Math.atan2(y1-yc, x1-xc);\n\n var th_arc = th1-th0;\n if (th_arc < 0 && sweep === 1) {\n th_arc += Tau;\n } else if (th_arc > 0 && sweep === 0) {\n th_arc -= Tau;\n }\n\n var segs = Math.ceil(Math.abs(th_arc / (HalfPi + 0.001)));\n var result = [];\n for (var i=0; i<segs; ++i) {\n var th2 = th0 + i * th_arc / segs;\n var th3 = th0 + (i+1) * th_arc / segs;\n result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n }\n\n return (segmentCache[key] = result);\n}\n\nexport function bezier(params) {\n var key = join.call(params);\n if (bezierCache[key]) {\n return bezierCache[key];\n }\n\n var cx = params[0],\n cy = params[1],\n th0 = params[2],\n th1 = params[3],\n rx = params[4],\n ry = params[5],\n sin_th = params[6],\n cos_th = params[7];\n\n var a00 = cos_th * rx;\n var a01 = -sin_th * ry;\n var a10 = sin_th * rx;\n var a11 = cos_th * ry;\n\n var cos_th0 = Math.cos(th0);\n var sin_th0 = Math.sin(th0);\n var cos_th1 = Math.cos(th1);\n var sin_th1 = Math.sin(th1);\n\n var th_half = 0.5 * (th1 - th0);\n var sin_th_h2 = Math.sin(th_half * 0.5);\n var t = (8/3) * sin_th_h2 * sin_th_h2 / Math.sin(th_half);\n var x1 = cx + cos_th0 - t * sin_th0;\n var y1 = cy + sin_th0 + t * cos_th0;\n var x3 = cx + cos_th1;\n var y3 = cy + sin_th1;\n var x2 = x3 + t * sin_th1;\n var y2 = y3 - t * cos_th1;\n\n return (bezierCache[key] = [\n a00 * x1 + a01 * y1, a10 * x1 + a11 * y1,\n a00 * x2 + a01 * y2, a10 * x2 + a11 * y2,\n a00 * x3 + a01 * y3, a10 * x3 + a11 * y3\n ]);\n}\n","import {bezier, segments} from './arc';\n\nvar temp = ['l', 0, 0, 0, 0, 0, 0, 0];\n\nfunction scale(current, s) {\n var c = (temp[0] = current[0]);\n if (c === 'a' || c === 'A') {\n temp[1] = s * current[1];\n temp[2] = s * current[2];\n temp[3] = current[3];\n temp[4] = current[4];\n temp[5] = current[5];\n temp[6] = s * current[6];\n temp[7] = s * current[7];\n } else {\n for (var i=1, n=current.length; i<n; ++i) {\n temp[i] = s * current[i];\n }\n }\n return temp;\n}\n\nexport default function(context, path, l, t, s) {\n var current, // current instruction\n previous = null,\n x = 0, // current x\n y = 0, // current y\n controlX = 0, // current control point x\n controlY = 0, // current control point y\n tempX,\n tempY,\n tempControlX,\n tempControlY;\n\n if (l == null) l = 0;\n if (t == null) t = 0;\n if (s == null) s = 1;\n\n if (context.beginPath) context.beginPath();\n\n for (var i=0, len=path.length; i<len; ++i) {\n current = path[i];\n if (s !== 1) current = scale(current, s);\n\n switch (current[0]) { // first letter\n\n case 'l': // lineto, relative\n x += current[1];\n y += current[2];\n context.lineTo(x + l, y + t);\n break;\n\n case 'L': // lineto, absolute\n x = current[1];\n y = current[2];\n context.lineTo(x + l, y + t);\n break;\n\n case 'h': // horizontal lineto, relative\n x += current[1];\n context.lineTo(x + l, y + t);\n break;\n\n case 'H': // horizontal lineto, absolute\n x = current[1];\n context.lineTo(x + l, y + t);\n break;\n\n case 'v': // vertical lineto, relative\n y += current[1];\n context.lineTo(x + l, y + t);\n break;\n\n case 'V': // verical lineto, absolute\n y = current[1];\n context.lineTo(x + l, y + t);\n break;\n\n case 'm': // moveTo, relative\n x += current[1];\n y += current[2];\n context.moveTo(x + l, y + t);\n break;\n\n case 'M': // moveTo, absolute\n x = current[1];\n y = current[2];\n context.moveTo(x + l, y + t);\n break;\n\n case 'c': // bezierCurveTo, relative\n tempX = x + current[5];\n tempY = y + current[6];\n controlX = x + current[3];\n controlY = y + current[4];\n context.bezierCurveTo(\n x + current[1] + l, // x1\n y + current[2] + t, // y1\n controlX + l, // x2\n controlY + t, // y2\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'C': // bezierCurveTo, absolute\n x = current[5];\n y = current[6];\n controlX = current[3];\n controlY = current[4];\n context.bezierCurveTo(\n current[1] + l,\n current[2] + t,\n controlX + l,\n controlY + t,\n x + l,\n y + t\n );\n break;\n\n case 's': // shorthand cubic bezierCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.bezierCurveTo(\n controlX + l,\n controlY + t,\n x + current[1] + l,\n y + current[2] + t,\n tempX + l,\n tempY + t\n );\n\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = x + current[1];\n controlY = y + current[2];\n\n x = tempX;\n y = tempY;\n break;\n\n case 'S': // shorthand cubic bezierCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n // calculate reflection of previous control points\n controlX = 2*x - controlX;\n controlY = 2*y - controlY;\n context.bezierCurveTo(\n controlX + l,\n controlY + t,\n current[1] + l,\n current[2] + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = current[1];\n controlY = current[2];\n\n break;\n\n case 'q': // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n\n controlX = x + current[1];\n controlY = y + current[2];\n\n context.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n\n context.quadraticCurveTo(\n current[1] + l,\n current[2] + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n controlX = current[1];\n controlY = current[2];\n break;\n\n case 't': // shorthand quadraticCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[1];\n tempY = y + current[2];\n\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else if (previous[0] === 't') {\n // calculate reflection of previous control points for t\n controlX = 2 * x - tempControlX;\n controlY = 2 * y - tempControlY;\n }\n else if (previous[0] === 'q') {\n // calculate reflection of previous control points for q\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n tempControlX = controlX;\n tempControlY = controlY;\n\n context.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n controlX = x + current[1];\n controlY = y + current[2];\n break;\n\n case 'T':\n tempX = current[1];\n tempY = current[2];\n\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'a':\n drawArc(context, x + l, y + t, [\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6] + x + l,\n current[7] + y + t\n ]);\n x += current[6];\n y += current[7];\n break;\n\n case 'A':\n drawArc(context, x + l, y + t, [\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6] + l,\n current[7] + t\n ]);\n x = current[6];\n y = current[7];\n break;\n\n case 'z':\n case 'Z':\n context.closePath();\n break;\n }\n previous = current;\n }\n}\n\nfunction drawArc(context, x, y, coords) {\n var seg = segments(\n coords[5], // end x\n coords[6], // end y\n coords[0], // radius x\n coords[1], // radius y\n coords[3], // large flag\n coords[4], // sweep flag\n coords[2], // rotation\n x, y\n );\n for (var i=0; i<seg.length; ++i) {\n var bez = bezier(seg[i]);\n context.bezierCurveTo(bez[0], bez[1], bez[2], bez[3], bez[4], bez[5]);\n }\n}\n","import pathParse from './parse';\nimport pathRender from './render';\nimport {Tau, HalfSqrt3} from '../util/constants';\n\nvar Tan30 = 0.5773502691896257;\n\nvar builtins = {\n 'circle': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2;\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, Tau);\n }\n },\n 'cross': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n s = r / 2.5;\n context.moveTo(-r, -s);\n context.lineTo(-r, s);\n context.lineTo(-s, s);\n context.lineTo(-s, r);\n context.lineTo(s, r);\n context.lineTo(s, s);\n context.lineTo(r, s);\n context.lineTo(r, -s);\n context.lineTo(s, -s);\n context.lineTo(s, -r);\n context.lineTo(-s, -r);\n context.lineTo(-s, -s);\n context.closePath();\n }\n },\n 'diamond': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2;\n context.moveTo(-r, 0);\n context.lineTo(0, -r);\n context.lineTo(r, 0);\n context.lineTo(0, r);\n context.closePath();\n }\n },\n 'square': {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n },\n 'arrow': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n s = r / 7,\n t = r / 2.5,\n v = r / 8;\n context.moveTo(-s, r);\n context.lineTo(s, r);\n context.lineTo(s, -v);\n context.lineTo(t, -v);\n context.lineTo(0, -r);\n context.lineTo(-t, -v);\n context.lineTo(-s, -v);\n context.closePath();\n }\n },\n 'wedge': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r,\n o = (h - r * Tan30),\n b = r / 4;\n context.moveTo(0, -h - o);\n context.lineTo(-b, h - o);\n context.lineTo(b, h - o);\n context.closePath();\n }\n },\n 'triangle': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r,\n o = (h - r * Tan30);\n context.moveTo(0, -h - o);\n context.lineTo(-r, h - o);\n context.lineTo(r, h - o);\n context.closePath();\n }\n },\n 'triangle-up': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(0, -h);\n context.lineTo(-r, h);\n context.lineTo(r, h);\n context.closePath();\n }\n },\n 'triangle-down': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(0, h);\n context.lineTo(-r, -h);\n context.lineTo(r, -h);\n context.closePath();\n }\n },\n 'triangle-right': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(h, 0);\n context.lineTo(-h, -r);\n context.lineTo(-h, r);\n context.closePath();\n }\n },\n 'triangle-left': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(-h, 0);\n context.lineTo(h, -r);\n context.lineTo(h, r);\n context.closePath();\n }\n },\n 'stroke': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2;\n context.moveTo(-r, 0);\n context.lineTo(r, 0);\n }\n }\n};\n\nexport default function symbols(_) {\n return builtins.hasOwnProperty(_) ? builtins[_] : customSymbol(_);\n}\n\nvar custom = {};\n\nfunction customSymbol(path) {\n if (!custom.hasOwnProperty(path)) {\n var parsed = pathParse(path);\n custom[path] = {\n draw: function(context, size) {\n pathRender(context, parsed, 0, 0, Math.sqrt(size) / 2);\n }\n };\n }\n return custom[path];\n}\n","import {path} from 'd3-path';\n\nfunction rectangleX(d) {\n return d.x;\n}\n\nfunction rectangleY(d) {\n return d.y;\n}\n\nfunction rectangleWidth(d) {\n return d.width;\n}\n\nfunction rectangleHeight(d) {\n return d.height;\n}\n\nfunction constant(_) {\n return function() { return _; };\n}\n\nexport default function() {\n var x = rectangleX,\n y = rectangleY,\n width = rectangleWidth,\n height = rectangleHeight,\n cornerRadius = constant(0),\n context = null;\n\n function rectangle(_, x0, y0) {\n var buffer,\n x1 = x0 != null ? x0 : +x.call(this, _),\n y1 = y0 != null ? y0 : +y.call(this, _),\n w = +width.call(this, _),\n h = +height.call(this, _),\n cr = +cornerRadius.call(this, _);\n\n if (!context) context = buffer = path();\n\n if (cr <= 0) {\n context.rect(x1, y1, w, h);\n } else {\n var x2 = x1 + w,\n y2 = y1 + h;\n context.moveTo(x1 + cr, y1);\n context.lineTo(x2 - cr, y1);\n context.quadraticCurveTo(x2, y1, x2, y1 + cr);\n context.lineTo(x2, y2 - cr);\n context.quadraticCurveTo(x2, y2, x2 - cr, y2);\n context.lineTo(x1 + cr, y2);\n context.quadraticCurveTo(x1, y2, x1, y2 - cr);\n context.lineTo(x1, y1 + cr);\n context.quadraticCurveTo(x1, y1, x1 + cr, y1);\n context.closePath();\n }\n\n if (buffer) {\n context = null;\n return buffer + '' || null;\n }\n }\n\n rectangle.x = function(_) {\n if (arguments.length) {\n x = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return x;\n }\n };\n\n rectangle.y = function(_) {\n if (arguments.length) {\n y = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return y;\n }\n };\n\n rectangle.width = function(_) {\n if (arguments.length) {\n width = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return width;\n }\n };\n\n rectangle.height = function(_) {\n if (arguments.length) {\n height = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return height;\n }\n };\n\n rectangle.cornerRadius = function(_) {\n if (arguments.length) {\n cornerRadius = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return cornerRadius;\n }\n };\n\n rectangle.context = function(_) {\n if (arguments.length) {\n context = _ == null ? null : _;\n return rectangle;\n } else {\n return context;\n }\n };\n\n return rectangle;\n}\n","import {Tau} from '../util/constants';\nimport {path} from 'd3-path';\n\nexport default function() {\n var x,\n y,\n size,\n defined,\n context = null,\n ready, x1, y1, r1;\n\n function point(x2, y2, w2) {\n var r2 = w2 / 2;\n\n if (ready) {\n var ux = y1 - y2,\n uy = x2 - x1;\n\n if (ux || uy) {\n // get normal vector\n var ud = Math.sqrt(ux * ux + uy * uy),\n rx = (ux /= ud) * r1,\n ry = (uy /= ud) * r1,\n t = Math.atan2(uy, ux);\n\n // draw segment\n context.moveTo(x1 - rx, y1 - ry);\n context.lineTo(x2 - ux * r2, y2 - uy * r2);\n context.arc(x2, y2, r2, t - Math.PI, t);\n context.lineTo(x1 + rx, y1 + ry);\n context.arc(x1, y1, r1, t, t + Math.PI);\n } else {\n context.arc(x2, y2, r2, 0, Tau);\n }\n context.closePath();\n } else {\n ready = 1;\n }\n x1 = x2;\n y1 = y2;\n r1 = r2;\n }\n\n function trail(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) context = buffer = path();\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) ready = 0;\n }\n if (defined0) point(+x(d, i, data), +y(d, i, data), +size(d, i, data));\n }\n\n if (buffer) {\n context = null;\n return buffer + '' || null;\n }\n }\n\n trail.x = function(_) {\n if (arguments.length) {\n x = _;\n return trail;\n } else {\n return x;\n }\n };\n\n trail.y = function(_) {\n if (arguments.length) {\n y = _;\n return trail;\n } else {\n return y;\n }\n };\n\n trail.size = function(_) {\n if (arguments.length) {\n size = _;\n return trail;\n } else {\n return size;\n }\n };\n\n trail.defined = function(_) {\n if (arguments.length) {\n defined = _;\n return trail;\n } else {\n return defined;\n }\n };\n\n trail.context = function(_) {\n if (arguments.length) {\n if (_ == null) {\n context = null;\n } else {\n context = _;\n }\n return trail;\n } else {\n return context;\n }\n };\n\n return trail;\n}\n","import curves from './curves';\nimport symbols from './symbols';\n\nimport {default as vg_rect} from './rectangle';\nimport {default as vg_trail} from './trail';\n\nimport {\n arc as d3_arc,\n symbol as d3_symbol,\n area as d3_area,\n line as d3_line\n} from 'd3-shape';\n\nfunction x(item) { return item.x || 0; }\nfunction y(item) { return item.y || 0; }\nfunction w(item) { return item.width || 0; }\nfunction ts(item) { return item.size || 1; }\nfunction h(item) { return item.height || 0; }\nfunction xw(item) { return (item.x || 0) + (item.width || 0); }\nfunction yh(item) { return (item.y || 0) + (item.height || 0); }\nfunction sa(item) { return item.startAngle || 0; }\nfunction ea(item) { return item.endAngle || 0; }\nfunction pa(item) { return item.padAngle || 0; }\nfunction ir(item) { return item.innerRadius || 0; }\nfunction or(item) { return item.outerRadius || 0; }\nfunction cr(item) { return item.cornerRadius || 0; }\nfunction def(item) { return !(item.defined === false); }\nfunction size(item) { return item.size == null ? 64 : item.size; }\nfunction type(item) { return symbols(item.shape || 'circle'); }\n\nvar arcShape = d3_arc().startAngle(sa).endAngle(ea).padAngle(pa)\n .innerRadius(ir).outerRadius(or).cornerRadius(cr),\n areavShape = d3_area().x(x).y1(y).y0(yh).defined(def),\n areahShape = d3_area().y(y).x1(x).x0(xw).defined(def),\n lineShape = d3_line().x(x).y(y).defined(def),\n rectShape = vg_rect().x(x).y(y).width(w).height(h).cornerRadius(cr),\n symbolShape = d3_symbol().type(type).size(size),\n trailShape = vg_trail().x(x).y(y).defined(def).size(ts);\n\nexport function arc(context, item) {\n return arcShape.context(context)(item);\n}\n\nexport function area(context, items) {\n var item = items[0],\n interp = item.interpolate || 'linear';\n return (item.orient === 'horizontal' ? areahShape : areavShape)\n .curve(curves(interp, item.orient, item.tension))\n .context(context)(items);\n}\n\nexport function line(context, items) {\n var item = items[0],\n interp = item.interpolate || 'linear';\n return lineShape.curve(curves(interp, item.orient, item.tension))\n .context(context)(items);\n}\n\nexport function rectangle(context, item, x, y) {\n return rectShape.context(context)(item, x, y);\n}\n\nexport function shape(context, item) {\n return (item.mark.shape || item.shape)\n .context(context)(item);\n}\n\nexport function symbol(context, item) {\n return symbolShape.context(context)(item);\n}\n\nexport function trail(context, items) {\n return trailShape.context(context)(items);\n}\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle\";\nimport cross from \"./symbol/cross\";\nimport diamond from \"./symbol/diamond\";\nimport star from \"./symbol/star\";\nimport square from \"./symbol/square\";\nimport triangle from \"./symbol/triangle\";\nimport wye from \"./symbol/wye\";\nimport constant from \"./constant\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function(bounds, item) {\n if (item.stroke && item.opacity !== 0 && item.strokeOpacity !== 0) {\n bounds.expand(item.strokeWidth != null ? +item.strokeWidth : 1);\n }\n return bounds;\n}\n","import {HalfPi, Tau} from '../util/constants';\n\nvar bounds,\n circleThreshold = Tau - 1e-8;\n\nexport default function context(_) {\n bounds = _;\n return context;\n}\n\nfunction noop() {}\n\nfunction add(x, y) { bounds.add(x, y); }\n\ncontext.beginPath = noop;\n\ncontext.closePath = noop;\n\ncontext.moveTo = add;\n\ncontext.lineTo = add;\n\ncontext.rect = function(x, y, w, h) {\n add(x, y);\n add(x + w, y + h);\n};\n\ncontext.quadraticCurveTo = function(x1, y1, x2, y2) {\n add(x1, y1);\n add(x2, y2);\n};\n\ncontext.bezierCurveTo = function(x1, y1, x2, y2, x3, y3) {\n add(x1, y1);\n add(x2, y2);\n add(x3, y3);\n};\n\ncontext.arc = function(cx, cy, r, sa, ea, ccw) {\n if (Math.abs(ea - sa) > circleThreshold) {\n add(cx - r, cy - r);\n add(cx + r, cy + r);\n return;\n }\n\n var xmin = Infinity, xmax = -Infinity,\n ymin = Infinity, ymax = -Infinity,\n s, i, x, y;\n\n function update(a) {\n x = r * Math.cos(a);\n y = r * Math.sin(a);\n if (x < xmin) xmin = x;\n if (x > xmax) xmax = x;\n if (y < ymin) ymin = y;\n if (y > ymax) ymax = y;\n }\n\n // Sample end points and interior points aligned with 90 degrees\n update(sa);\n update(ea);\n\n if (ea !== sa) {\n sa = sa % Tau; if (sa < 0) sa += Tau;\n ea = ea % Tau; if (ea < 0) ea += Tau;\n\n if (ea < sa) {\n ccw = !ccw; // flip direction\n s = sa; sa = ea; ea = s; // swap end-points\n }\n\n if (ccw) {\n ea -= Tau;\n s = sa - (sa % HalfPi);\n for (i=0; i<4 && s>ea; ++i, s-=HalfPi) update(s);\n } else {\n s = sa - (sa % HalfPi) + HalfPi;\n for (i=0; i<4 && s<ea; ++i, s=s+HalfPi) update(s);\n }\n }\n\n add(cx + xmin, cy + ymin);\n add(cx + xmax, cy + ymax);\n};\n","import {canvas} from 'vega-canvas';\n\nexport var context = (context = canvas(1,1))\n ? context.getContext('2d')\n : null;\n","import {context} from './canvas/context';\nimport Bounds from '../Bounds';\n\nconst b = new Bounds();\n\nexport function intersectPath(draw) {\n return function(item, brush) {\n // rely on (inaccurate) bounds intersection if no context\n if (!context) return true;\n\n // add path to offscreen graphics context\n draw(context, item);\n\n // get bounds intersection region\n b.clear().union(item.bounds).intersect(brush).round();\n const {x1, y1, x2, y2} = b;\n\n // iterate over intersection region\n // perform fine grained inclusion test\n for (let y = y1; y <= y2; ++y) {\n for (let x = x1; x <= x2; ++x) {\n if (context.isPointInPath(x, y)) {\n return true;\n }\n }\n }\n\n // false if no hits in intersection region\n return false;\n }\n}\n\nexport function intersectPoint(item, box) {\n return box.contains(item.x || 0, item.y || 0);\n}\n\nexport function intersectRect(item, box) {\n const x = item.x || 0,\n y = item.y || 0,\n w = item.width || 0,\n h = item.height || 0;\n return box.intersects(b.set(x, y, x + w, y + h));\n}\n\nexport function intersectRule(item, box) {\n const x = item.x || 0,\n y = item.y || 0,\n x2 = item.x2 != null ? item.x2 : x,\n y2 = item.y2 != null ? item.y2 : y;\n return intersectBoxLine(box, x, y, x2, y2);\n}\n\nexport function intersectBoxLine(box, x, y, u, v) {\n const {x1, y1, x2, y2} = box,\n dx = u - x,\n dy = v - y;\n\n let t0 = 0, t1 = 1, p, q, r, e;\n\n for (e=0; e<4; ++e) {\n if (e === 0) { p = -dx; q = -(x1 - x); }\n if (e === 1) { p = dx; q = (x2 - x); }\n if (e === 2) { p = -dy; q = -(y1 - y); }\n if (e === 3) { p = dy; q = (y2 - y); }\n\n if (Math.abs(p) < 1e-10 && q < 0) return false;\n\n r = q / p;\n\n if (p < 0) {\n if (r > t1) return false;\n else if (r > t0) t0 = r;\n } else if (p > 0) {\n if (r < t0) return false;\n else if (r < t1) t1 = r;\n }\n }\n\n return true;\n}\n","export default function(context, gradient, bounds) {\n const w = bounds.width(),\n h = bounds.height(),\n stop = gradient.stops,\n n = stop.length;\n\n const canvasGradient = gradient.gradient === 'radial'\n ? context.createRadialGradient(\n bounds.x1 + (gradient.x1 || 0.5) * w,\n bounds.y1 + (gradient.y1 || 0.5) * h,\n Math.max(w, h) * (gradient.r1 || 0),\n bounds.x1 + (gradient.x2 || 0.5) * w,\n bounds.y1 + (gradient.y2 || 0.5) * h,\n Math.max(w, h) * (gradient.r2 || 0.5)\n )\n : context.createLinearGradient(\n bounds.x1 + (gradient.x1 || 0) * w,\n bounds.y1 + (gradient.y1 || 0) * h,\n bounds.x1 + (gradient.x2 || 1) * w,\n bounds.y1 + (gradient.y2 || 0) * h\n );\n\n for (let i=0; i<n; ++i) {\n canvasGradient.addColorStop(stop[i].offset, stop[i].color);\n }\n\n return canvasGradient;\n}\n","import {isGradient} from '../../Gradient';\nimport gradient from './gradient';\n\nexport default function(context, item, value) {\n return isGradient(value) ?\n gradient(context, value, item.bounds) :\n value;\n}\n","import color from './color';\n\nexport default function(context, item, opacity) {\n opacity *= (item.fillOpacity==null ? 1 : item.fillOpacity);\n if (opacity > 0) {\n context.globalAlpha = opacity;\n context.fillStyle = color(context, item, item.fill);\n return true;\n } else {\n return false;\n }\n}\n","import color from './color';\n\nvar Empty = [];\n\nexport default function(context, item, opacity) {\n var lw = (lw = item.strokeWidth) != null ? lw : 1;\n\n if (lw <= 0) return false;\n\n opacity *= (item.strokeOpacity==null ? 1 : item.strokeOpacity);\n if (opacity > 0) {\n context.globalAlpha = opacity;\n context.strokeStyle = color(context, item, item.stroke);\n\n context.lineWidth = lw;\n context.lineCap = item.strokeCap || 'butt';\n context.lineJoin = item.strokeJoin || 'miter';\n context.miterLimit = item.strokeMiterLimit || 10;\n\n if (context.setLineDash) {\n context.setLineDash(item.strokeDash || Empty);\n context.lineDashOffset = item.strokeDashOffset || 0;\n }\n return true;\n } else {\n return false;\n }\n}\n","function compare(a, b) {\n return a.zindex - b.zindex || a.index - b.index;\n}\n\nexport function zorder(scene) {\n if (!scene.zdirty) return scene.zitems;\n\n var items = scene.items,\n output = [], item, i, n;\n\n for (i=0, n=items.length; i<n; ++i) {\n item = items[i];\n item.index = i;\n if (item.zindex) output.push(item);\n }\n\n scene.zdirty = false;\n return scene.zitems = output.sort(compare);\n}\n\nexport function visit(scene, visitor) {\n var items = scene.items, i, n;\n if (!items || !items.length) return;\n\n var zitems = zorder(scene);\n\n if (zitems && zitems.length) {\n for (i=0, n=items.length; i<n; ++i) {\n if (!items[i].zindex) visitor(items[i]);\n }\n items = zitems;\n }\n\n for (i=0, n=items.length; i<n; ++i) {\n visitor(items[i]);\n }\n}\n\nexport function pickVisit(scene, visitor) {\n var items = scene.items, hit, i;\n if (!items || !items.length) return null;\n\n var zitems = zorder(scene);\n if (zitems && zitems.length) items = zitems;\n\n for (i=items.length; --i >= 0;) {\n if (hit = visitor(items[i])) return hit;\n }\n\n if (items === zitems) {\n for (items=scene.items, i=items.length; --i >= 0;) {\n if (!items[i].zindex) {\n if (hit = visitor(items[i])) return hit;\n }\n }\n }\n\n return null;\n}\n","import fill from './fill';\nimport stroke from './stroke';\nimport {visit} from '../visit';\n\nexport function drawAll(path) {\n return function(context, scene, bounds) {\n visit(scene, function(item) {\n if (!bounds || bounds.intersects(item.bounds)) {\n drawPath(path, context, item, item);\n }\n });\n };\n}\n\nexport function drawOne(path) {\n return function(context, scene, bounds) {\n if (scene.items.length && (!bounds || bounds.intersects(scene.bounds))) {\n drawPath(path, context, scene.items[0], scene.items);\n }\n };\n}\n\nfunction drawPath(path, context, item, items) {\n var opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity === 0) return;\n\n if (path(context, items)) return;\n\n if (item.fill && fill(context, item, opacity)) {\n context.fill();\n }\n\n if (item.stroke && stroke(context, item, opacity)) {\n context.stroke();\n }\n}\n","import {pickVisit} from '../visit';\nimport {truthy} from 'vega-util';\n\nexport function pick(test) {\n test = test || truthy;\n\n return function(context, scene, x, y, gx, gy) {\n x *= context.pixelRatio;\n y *= context.pixelRatio;\n\n return pickVisit(scene, function(item) {\n var b = item.bounds;\n // first hit test against bounding box\n if ((b && !b.contains(gx, gy)) || !b) return;\n // if in bounding box, perform more careful test\n if (test(context, item, x, y, gx, gy)) return item;\n });\n };\n}\n\nexport function hitPath(path, filled) {\n return function(context, o, x, y) {\n var item = Array.isArray(o) ? o[0] : o,\n fill = (filled == null) ? item.fill : filled,\n stroke = item.stroke && context.isPointInStroke, lw, lc;\n\n if (stroke) {\n lw = item.strokeWidth;\n lc = item.strokeCap;\n context.lineWidth = lw != null ? lw : 1;\n context.lineCap = lc != null ? lc : 'butt';\n }\n\n return path(context, o) ? false :\n (fill && context.isPointInPath(x, y)) ||\n (stroke && context.isPointInStroke(x, y));\n };\n}\n\nexport function pickPath(path) {\n return pick(hitPath(path));\n}\n","export function translate(x, y) {\n return 'translate(' + x + ',' + y + ')';\n}\n\nexport function rotate(a) {\n return 'rotate(' + a + ')';\n}\n\nexport function translateItem(item) {\n return translate(item.x || 0, item.y || 0);\n}\n\nexport function transformItem(item) {\n return translate(item.x || 0, item.y || 0)\n + (item.angle ? ' ' + rotate(item.angle) : '');\n}\n","import boundStroke from '../bound/boundStroke';\nimport context from '../bound/boundContext';\nimport {intersectPath} from '../util/intersect';\nimport {drawAll} from '../util/canvas/draw';\nimport {pickPath} from '../util/canvas/pick';\nimport {transformItem} from '../util/svg/transform';\nimport {DegToRad} from '../util/constants';\n\nexport default function(type, shape, isect) {\n\n function attr(emit, item) {\n emit('transform', transformItem(item));\n emit('d', shape(null, item));\n }\n\n function bound(bounds, item) {\n var x = item.x || 0,\n y = item.y || 0;\n\n shape(context(bounds), item);\n boundStroke(bounds, item).translate(x, y);\n if (item.angle) {\n bounds.rotate(item.angle * DegToRad, x, y);\n }\n\n return bounds;\n }\n\n function draw(context, item) {\n var x = item.x || 0,\n y = item.y || 0,\n a = item.angle || 0;\n\n context.translate(x, y);\n if (a) context.rotate(a *= DegToRad);\n context.beginPath();\n shape(context, item);\n if (a) context.rotate(-a);\n context.translate(-x, -y);\n }\n\n return {\n type: type,\n tag: 'path',\n nested: false,\n attr: attr,\n bound: bound,\n draw: drawAll(draw),\n pick: pickPath(draw),\n isect: isect || intersectPath(draw)\n };\n\n}\n","import {arc} from '../path/shapes';\nimport markItemPath from './markItemPath';\n\nexport default markItemPath('arc', arc);\n","import boundStroke from '../bound/boundStroke';\nimport context from '../bound/boundContext';\nimport {intersectPoint} from '../util/intersect';\nimport {drawOne} from '../util/canvas/draw';\nimport {hitPath} from '../util/canvas/pick';\n\nexport default function(type, shape, tip) {\n\n function attr(emit, item) {\n var items = item.mark.items;\n if (items.length) emit('d', shape(null, items));\n }\n\n function bound(bounds, mark) {\n var items = mark.items;\n if (items.length === 0) {\n return bounds;\n } else {\n shape(context(bounds), items);\n return boundStroke(bounds, items[0]);\n }\n }\n\n function draw(context, items) {\n context.beginPath();\n shape(context, items);\n }\n\n var hit = hitPath(draw);\n\n function pick(context, scene, x, y, gx, gy) {\n var items = scene.items,\n b = scene.bounds;\n\n if (!items || !items.length || b && !b.contains(gx, gy)) {\n return null;\n }\n\n x *= context.pixelRatio;\n y *= context.pixelRatio;\n return hit(context, items, x, y) ? items[0] : null;\n }\n\n return {\n type: type,\n tag: 'path',\n nested: true,\n attr: attr,\n bound: bound,\n draw: drawOne(draw),\n pick: pick,\n isect: intersectPoint,\n tip: tip\n };\n\n}\n\n\n","import {area} from '../path/shapes';\nimport {pickArea} from '../util/pickPath';\nimport markMultiItemPath from './markMultiItemPath';\n\nexport default markMultiItemPath('area', area, pickArea);\n","export function pickArea(a, p) {\n var v = a[0].orient === 'horizontal' ? p[1] : p[0],\n z = a[0].orient === 'horizontal' ? 'y' : 'x',\n i = a.length,\n min = +Infinity, hit, d;\n\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n d = Math.abs(a[i][z] - v);\n if (d < min) {\n min = d;\n hit = a[i];\n }\n }\n\n return hit;\n}\n\nexport function pickLine(a, p) {\n var t = Math.pow(a[0].strokeWidth || 1, 2),\n i = a.length, dx, dy, dd;\n\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n dx = a[i].x - p[0];\n dy = a[i].y - p[1];\n dd = dx * dx + dy * dy;\n if (dd < t) return a[i];\n }\n\n return null;\n}\n\nexport function pickTrail(a, p) {\n var i = a.length, dx, dy, dd;\n\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n dx = a[i].x - p[0];\n dy = a[i].y - p[1];\n dd = dx * dx + dy * dy;\n dx = a[i].size || 1;\n if (dd < dx*dx) return a[i];\n }\n\n return null;\n}\n","import {isFunction} from 'vega-util';\n\nvar clip_id = 1;\n\nexport function resetSVGClipId() {\n clip_id = 1;\n}\n\nexport default function(renderer, item, size) {\n var clip = item.clip,\n defs = renderer._defs,\n id = item.clip_id || (item.clip_id = 'clip' + clip_id++),\n c = defs.clipping[id] || (defs.clipping[id] = {id: id});\n\n if (isFunction(clip)) {\n c.path = clip(null);\n } else {\n c.width = size.width || 0;\n c.height = size.height || 0;\n }\n\n return 'url(#' + id + ')';\n}\n","import {rectangle} from '../path/shapes';\nimport boundStroke from '../bound/boundStroke';\nimport {intersectRect} from '../util/intersect';\nimport {visit, pickVisit} from '../util/visit';\nimport stroke from '../util/canvas/stroke';\nimport fill from '../util/canvas/fill';\nimport {hitPath} from '../util/canvas/pick';\nimport clip from '../util/svg/clip';\nimport {translateItem} from '../util/svg/transform';\n\nvar StrokeOffset = 0.5;\n\nfunction attr(emit, item) {\n emit('transform', translateItem(item));\n}\n\nfunction background(emit, item) {\n var offset = item.stroke ? StrokeOffset : 0;\n emit('class', 'background');\n emit('d', rectangle(null, item, offset, offset));\n}\n\nfunction foreground(emit, item, renderer) {\n var url = item.clip ? clip(renderer, item, item) : null;\n emit('clip-path', url);\n}\n\nfunction bound(bounds, group) {\n if (!group.clip && group.items) {\n var items = group.items;\n for (var j=0, m=items.length; j<m; ++j) {\n bounds.union(items[j].bounds);\n }\n }\n\n if ((group.clip || group.width || group.height) && !group.noBound) {\n bounds.add(0, 0).add(group.width || 0, group.height || 0);\n }\n\n boundStroke(bounds, group);\n\n return bounds.translate(group.x || 0, group.y || 0);\n}\n\nfunction backgroundPath(context, group) {\n var offset = group.stroke ? StrokeOffset : 0;\n context.beginPath();\n rectangle(context, group, offset, offset);\n}\n\nvar hitBackground = hitPath(backgroundPath);\n\nfunction draw(context, scene, bounds) {\n var renderer = this;\n\n visit(scene, function(group) {\n var gx = group.x || 0,\n gy = group.y || 0,\n w = group.width || 0,\n h = group.height || 0,\n opacity;\n\n // setup graphics context\n context.save();\n context.translate(gx, gy);\n\n // draw group background\n if (group.stroke || group.fill) {\n opacity = group.opacity == null ? 1 : group.opacity;\n if (opacity > 0) {\n backgroundPath(context, group);\n if (group.fill && fill(context, group, opacity)) {\n context.fill();\n }\n if (group.stroke && stroke(context, group, opacity)) {\n context.stroke();\n }\n }\n }\n\n // set clip and bounds\n if (group.clip) {\n context.beginPath();\n context.rect(0, 0, w, h);\n context.clip();\n }\n if (bounds) bounds.translate(-gx, -gy);\n\n // draw group contents\n visit(group, function(item) {\n renderer.draw(context, item, bounds);\n });\n\n // restore graphics context\n if (bounds) bounds.translate(gx, gy);\n context.restore();\n });\n}\n\nfunction pick(context, scene, x, y, gx, gy) {\n if (scene.bounds && !scene.bounds.contains(gx, gy) || !scene.items) {\n return null;\n }\n\n var handler = this,\n cx = x * context.pixelRatio,\n cy = y * context.pixelRatio;\n\n return pickVisit(scene, function(group) {\n var hit, dx, dy, b;\n\n // first hit test against bounding box\n // if a group is clipped, that should be handled by the bounds check.\n b = group.bounds;\n if (b && !b.contains(gx, gy)) return;\n\n // passed bounds check, so test sub-groups\n dx = (group.x || 0);\n dy = (group.y || 0);\n\n context.save();\n context.translate(dx, dy);\n\n dx = gx - dx;\n dy = gy - dy;\n\n // hit test against contained marks\n hit = pickVisit(group, function(mark) {\n return pickMark(mark, dx, dy)\n ? handler.pick(mark, x, y, dx, dy)\n : null;\n });\n\n // hit test against group background\n if (!hit && scene.interactive !== false\n && (group.fill || group.stroke)\n && hitBackground(context, group, cx, cy)) {\n hit = group;\n }\n\n context.restore();\n return hit || null;\n });\n}\n\nfunction pickMark(mark, x, y) {\n return (mark.interactive !== false || mark.marktype === 'group')\n && mark.bounds && mark.bounds.contains(x, y);\n}\n\nexport default {\n type: 'group',\n tag: 'g',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick,\n isect: intersectRect,\n background: background,\n foreground: foreground\n};\n","import {visit} from '../util/visit';\nimport {pick} from '../util/canvas/pick';\nimport {translate} from '../util/svg/transform';\nimport {truthy} from 'vega-util';\n\nfunction getImage(item, renderer) {\n var image = item.image;\n if (!image || image.url !== item.url) {\n image = {loaded: false, width: 0, height: 0};\n renderer.loadImage(item.url).then(function(image) {\n item.image = image;\n item.image.url = item.url;\n });\n }\n return image;\n}\n\nfunction imageXOffset(align, w) {\n return align === 'center' ? w / 2 : align === 'right' ? w : 0;\n}\n\nfunction imageYOffset(baseline, h) {\n return baseline === 'middle' ? h / 2 : baseline === 'bottom' ? h : 0;\n}\n\nfunction attr(emit, item, renderer) {\n var image = getImage(item, renderer),\n x = item.x || 0,\n y = item.y || 0,\n w = (item.width != null ? item.width : image.width) || 0,\n h = (item.height != null ? item.height : image.height) || 0,\n a = item.aspect === false ? 'none' : 'xMidYMid';\n\n x -= imageXOffset(item.align, w);\n y -= imageYOffset(item.baseline, h);\n\n emit('href', image.src || '', 'http://www.w3.org/1999/xlink', 'xlink:href');\n emit('transform', translate(x, y));\n emit('width', w);\n emit('height', h);\n emit('preserveAspectRatio', a);\n}\n\nfunction bound(bounds, item) {\n var image = item.image,\n x = item.x || 0,\n y = item.y || 0,\n w = (item.width != null ? item.width : (image && image.width)) || 0,\n h = (item.height != null ? item.height : (image && image.height)) || 0;\n\n x -= imageXOffset(item.align, w);\n y -= imageYOffset(item.baseline, h);\n\n return bounds.set(x, y, x + w, y + h);\n}\n\nfunction draw(context, scene, bounds) {\n var renderer = this;\n\n visit(scene, function(item) {\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n var image = getImage(item, renderer),\n x = item.x || 0,\n y = item.y || 0,\n w = (item.width != null ? item.width : image.width) || 0,\n h = (item.height != null ? item.height : image.height) || 0,\n opacity, ar0, ar1, t;\n\n x -= imageXOffset(item.align, w);\n y -= imageYOffset(item.baseline, h);\n\n if (item.aspect !== false) {\n ar0 = image.width / image.height;\n ar1 = item.width / item.height;\n if (ar0 === ar0 && ar1 === ar1 && ar0 !== ar1) {\n if (ar1 < ar0) {\n t = w / ar0;\n y += (h - t) / 2;\n h = t;\n } else {\n t = h * ar0;\n x += (w - t) / 2;\n w = t;\n }\n }\n }\n\n if (image.loaded) {\n context.globalAlpha = (opacity = item.opacity) != null ? opacity : 1;\n context.drawImage(image, x, y, w, h);\n }\n });\n}\n\nexport default {\n type: 'image',\n tag: 'image',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick(),\n isect: truthy, // bounds check is sufficient\n get: getImage,\n xOffset: imageXOffset,\n yOffset: imageYOffset\n};\n","import {line} from '../path/shapes';\nimport {pickLine} from '../util/pickPath';\nimport markMultiItemPath from './markMultiItemPath';\n\nexport default markMultiItemPath('line', line, pickLine);\n","import boundStroke from '../bound/boundStroke';\nimport context from '../bound/boundContext';\nimport pathParse from '../path/parse';\nimport pathRender from '../path/render';\nimport {intersectPath} from '../util/intersect';\nimport {drawAll} from '../util/canvas/draw';\nimport {pickPath} from '../util/canvas/pick';\nimport {translateItem} from '../util/svg/transform';\n\nfunction attr(emit, item) {\n emit('transform', translateItem(item));\n emit('d', item.path);\n}\n\nfunction path(context, item) {\n var path = item.path;\n if (path == null) return true;\n\n var cache = item.pathCache;\n if (!cache || cache.path !== path) {\n (item.pathCache = cache = pathParse(path)).path = path;\n }\n pathRender(context, cache, item.x, item.y);\n}\n\nfunction bound(bounds, item) {\n return path(context(bounds), item)\n ? bounds.set(0, 0, 0, 0)\n : boundStroke(bounds, item);\n}\n\nexport default {\n type: 'path',\n tag: 'path',\n nested: false,\n attr: attr,\n bound: bound,\n draw: drawAll(path),\n pick: pickPath(path),\n isect: intersectPath(path)\n};\n","import boundStroke from '../bound/boundStroke';\nimport {rectangle} from '../path/shapes';\nimport {intersectRect} from '../util/intersect';\nimport {drawAll} from '../util/canvas/draw';\nimport {pickPath} from '../util/canvas/pick';\n\nfunction attr(emit, item) {\n emit('d', rectangle(null, item));\n}\n\nfunction bound(bounds, item) {\n var x, y;\n return boundStroke(bounds.set(\n x = item.x || 0,\n y = item.y || 0,\n (x + item.width) || 0,\n (y + item.height) || 0\n ), item);\n}\n\nfunction draw(context, item) {\n context.beginPath();\n rectangle(context, item);\n}\n\nexport default {\n type: 'rect',\n tag: 'path',\n nested: false,\n attr: attr,\n bound: bound,\n draw: drawAll(draw),\n pick: pickPath(draw),\n isect: intersectRect\n};\n","import boundStroke from '../bound/boundStroke';\nimport {intersectRule} from '../util/intersect';\nimport {visit} from '../util/visit';\nimport {pick} from '../util/canvas/pick';\nimport stroke from '../util/canvas/stroke';\nimport {translateItem} from '../util/svg/transform';\n\nfunction attr(emit, item) {\n emit('transform', translateItem(item));\n emit('x2', item.x2 != null ? item.x2 - (item.x || 0) : 0);\n emit('y2', item.y2 != null ? item.y2 - (item.y || 0) : 0);\n}\n\nfunction bound(bounds, item) {\n var x1, y1;\n return boundStroke(bounds.set(\n x1 = item.x || 0,\n y1 = item.y || 0,\n item.x2 != null ? item.x2 : x1,\n item.y2 != null ? item.y2 : y1\n ), item);\n}\n\nfunction path(context, item, opacity) {\n var x1, y1, x2, y2;\n\n if (item.stroke && stroke(context, item, opacity)) {\n x1 = item.x || 0;\n y1 = item.y || 0;\n x2 = item.x2 != null ? item.x2 : x1;\n y2 = item.y2 != null ? item.y2 : y1;\n context.beginPath();\n context.moveTo(x1, y1);\n context.lineTo(x2, y2);\n return true;\n }\n return false;\n}\n\nfunction draw(context, scene, bounds) {\n visit(scene, function(item) {\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n var opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity && path(context, item, opacity)) {\n context.stroke();\n }\n });\n}\n\nfunction hit(context, item, x, y) {\n if (!context.isPointInStroke) return false;\n return path(context, item, 1) && context.isPointInStroke(x, y);\n}\n\nexport default {\n type: 'rule',\n tag: 'line',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick(hit),\n isect: intersectRule\n};\n","import {context} from './canvas/context';\n\nvar currFontHeight;\n\nexport var textMetrics = {\n height: fontSize,\n measureWidth: measureWidth,\n estimateWidth: estimateWidth,\n width: estimateWidth,\n canvas: useCanvas\n};\n\nuseCanvas(true);\n\n// make dumb, simple estimate if no canvas is available\nfunction estimateWidth(item) {\n currFontHeight = fontSize(item);\n return estimate(textValue(item));\n}\n\nfunction estimate(text) {\n return ~~(0.8 * text.length * currFontHeight);\n}\n\n// measure text width if canvas is available\nfunction measureWidth(item) {\n return fontSize(item) <= 0 ? 0\n : (context.font = font(item), measure(textValue(item)));\n}\n\nfunction measure(text) {\n return context.measureText(text).width;\n}\n\nexport function fontSize(item) {\n return item.fontSize != null ? item.fontSize : 11;\n}\n\nfunction useCanvas(use) {\n textMetrics.width = (use && context) ? measureWidth : estimateWidth;\n}\n\nexport function textValue(item) {\n var s = item.text;\n if (s == null) {\n return '';\n } else {\n return item.limit > 0 ? truncate(item) : s + '';\n }\n}\n\nexport function truncate(item) {\n var limit = +item.limit,\n text = item.text + '',\n width;\n\n if (textMetrics.width === measureWidth) {\n // we are using canvas\n context.font = font(item);\n width = measure;\n } else {\n // we are relying on estimates\n currFontHeight = fontSize(item);\n width = estimate;\n }\n\n if (width(text) < limit) return text;\n\n var ellipsis = item.ellipsis || '\\u2026',\n rtl = item.dir === 'rtl',\n lo = 0,\n hi = text.length, mid;\n\n limit -= width(ellipsis);\n\n if (rtl) {\n while (lo < hi) {\n mid = (lo + hi >>> 1);\n if (width(text.slice(mid)) > limit) lo = mid + 1;\n else hi = mid;\n }\n return ellipsis + text.slice(lo);\n } else {\n while (lo < hi) {\n mid = 1 + (lo + hi >>> 1);\n if (width(text.slice(0, mid)) < limit) lo = mid;\n else hi = mid - 1;\n }\n return text.slice(0, lo) + ellipsis;\n }\n}\n\nexport function fontFamily(item, quote) {\n var font = item.font;\n return (quote && font\n ? String(font).replace(/\"/g, '\\'')\n : font) || 'sans-serif';\n}\n\nexport function font(item, quote) {\n return '' +\n (item.fontStyle ? item.fontStyle + ' ' : '') +\n (item.fontVariant ? item.fontVariant + ' ' : '') +\n (item.fontWeight ? item.fontWeight + ' ' : '') +\n fontSize(item) + 'px ' +\n fontFamily(item, quote);\n}\n\nexport function offset(item) {\n // perform our own font baseline calculation\n // why? not all browsers support SVG 1.1 'alignment-baseline' :(\n var baseline = item.baseline,\n h = fontSize(item);\n return Math.round(\n baseline === 'top' ? 0.79*h :\n baseline === 'middle' ? 0.30*h :\n baseline === 'bottom' ? -0.21*h : 0\n );\n}\n","import {shape} from '../path/shapes';\nimport markItemPath from './markItemPath';\n\nexport default markItemPath('shape', shape);\n","import {symbol} from '../path/shapes';\nimport {intersectPoint} from '../util/intersect';\nimport markItemPath from './markItemPath';\n\nexport default markItemPath('symbol', symbol, intersectPoint);\n","import Bounds from '../Bounds';\nimport {DegToRad, HalfPi} from '../util/constants';\nimport {font, offset, textMetrics, textValue} from '../util/text';\nimport {intersectBoxLine} from '../util/intersect';\nimport {visit} from '../util/visit';\nimport fill from '../util/canvas/fill';\nimport {pick} from '../util/canvas/pick';\nimport stroke from '../util/canvas/stroke';\nimport {translate, rotate} from '../util/svg/transform';\n\nvar textAlign = {\n 'left': 'start',\n 'center': 'middle',\n 'right': 'end'\n};\n\nvar tempBounds = new Bounds();\n\nfunction anchorPoint(item) {\n var x = item.x || 0,\n y = item.y || 0,\n r = item.radius || 0, t;\n\n if (r) {\n t = (item.theta || 0) - HalfPi;\n x += r * Math.cos(t);\n y += r * Math.sin(t);\n }\n\n tempBounds.x1 = x;\n tempBounds.y1 = y;\n return tempBounds;\n}\n\nfunction attr(emit, item) {\n var dx = item.dx || 0,\n dy = (item.dy || 0) + offset(item),\n p = anchorPoint(item),\n x = p.x1,\n y = p.y1,\n a = item.angle || 0, t;\n\n emit('text-anchor', textAlign[item.align] || 'start');\n\n if (a) {\n t = translate(x, y) + ' ' + rotate(a);\n if (dx || dy) t += ' ' + translate(dx, dy);\n } else {\n t = translate(x + dx, y + dy);\n }\n emit('transform', t);\n}\n\nfunction bound(bounds, item, mode) {\n var h = textMetrics.height(item),\n a = item.align,\n p = anchorPoint(item),\n x = p.x1,\n y = p.y1,\n dx = item.dx || 0,\n dy = (item.dy || 0) + offset(item) - Math.round(0.8*h), // use 4/5 offset\n w;\n\n // horizontal alignment\n w = textMetrics.width(item);\n if (a === 'center') {\n dx -= (w / 2);\n } else if (a === 'right') {\n dx -= w;\n } else {\n // left by default, do nothing\n }\n\n bounds.set(dx+=x, dy+=y, dx+w, dy+h);\n if (item.angle && !mode) {\n bounds.rotate(item.angle * DegToRad, x, y);\n } else if (mode === 2) {\n return bounds.rotatedPoints(item.angle * DegToRad, x, y);\n }\n return bounds;\n}\n\nfunction draw(context, scene, bounds) {\n visit(scene, function(item) {\n var opacity, p, x, y, str;\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n if (!(str = textValue(item))) return; // get text string\n\n opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity === 0 || item.fontSize <= 0) return;\n\n context.font = font(item);\n context.textAlign = item.align || 'left';\n\n p = anchorPoint(item);\n x = p.x1,\n y = p.y1;\n\n if (item.angle) {\n context.save();\n context.translate(x, y);\n context.rotate(item.angle * DegToRad);\n x = y = 0; // reset x, y\n }\n x += (item.dx || 0);\n y += (item.dy || 0) + offset(item);\n\n if (item.fill && fill(context, item, opacity)) {\n context.fillText(str, x, y);\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.strokeText(str, x, y);\n }\n if (item.angle) context.restore();\n });\n}\n\nfunction hit(context, item, x, y, gx, gy) {\n if (item.fontSize <= 0) return false;\n if (!item.angle) return true; // bounds sufficient if no rotation\n\n // project point into space of unrotated bounds\n var p = anchorPoint(item),\n ax = p.x1,\n ay = p.y1,\n b = bound(tempBounds, item, 1),\n a = -item.angle * DegToRad,\n cos = Math.cos(a),\n sin = Math.sin(a),\n px = cos * gx - sin * gy + (ax - cos * ax + sin * ay),\n py = sin * gx + cos * gy + (ay - sin * ax - cos * ay);\n\n return b.contains(px, py);\n}\n\nfunction intersectText(item, box) {\n var p = bound(tempBounds, item, 2);\n return intersectBoxLine(box, p[0], p[1], p[2], p[3])\n || intersectBoxLine(box, p[0], p[1], p[4], p[5])\n || intersectBoxLine(box, p[4], p[5], p[6], p[7])\n || intersectBoxLine(box, p[2], p[3], p[6], p[7]);\n}\n\nexport default {\n type: 'text',\n tag: 'text',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick(hit),\n isect: intersectText\n};\n","import arc from './arc';\nimport area from './area';\nimport group from './group';\nimport image from './image';\nimport line from './line';\nimport path from './path';\nimport rect from './rect';\nimport rule from './rule';\nimport shape from './shape';\nimport symbol from './symbol';\nimport text from './text';\nimport trail from './trail';\n\nexport default {\n arc: arc,\n area: area,\n group: group,\n image: image,\n line: line,\n path: path,\n rect: rect,\n rule: rule,\n shape: shape,\n symbol: symbol,\n text: text,\n trail: trail\n};\n","import {trail} from '../path/shapes';\nimport {pickTrail} from '../util/pickPath';\nimport markMultiItemPath from './markMultiItemPath';\n\nexport default markMultiItemPath('trail', trail, pickTrail);\n","import Bounds from '../Bounds';\nimport marks from '../marks/index';\n\nexport default function(item, func, opt) {\n var type = marks[item.mark.marktype],\n bound = func || type.bound;\n if (type.nested) item = item.mark;\n\n return bound(item.bounds || (item.bounds = new Bounds()), item, opt);\n}\n","import Bounds from '../Bounds';\nimport boundItem from './boundItem';\nimport marks from '../marks/index';\n\nvar DUMMY = {mark: null};\n\nexport default function(mark, bounds, opt) {\n var type = marks[mark.marktype],\n bound = type.bound,\n items = mark.items,\n hasItems = items && items.length,\n i, n, item, b;\n\n if (type.nested) {\n if (hasItems) {\n item = items[0];\n } else {\n // no items, fake it\n DUMMY.mark = mark;\n item = DUMMY;\n }\n b = boundItem(item, bound, opt);\n bounds = bounds && bounds.union(b) || b;\n return bounds;\n }\n\n bounds = bounds\n || mark.bounds && mark.bounds.clear()\n || new Bounds();\n\n if (hasItems) {\n for (i=0, n=items.length; i<n; ++i) {\n bounds.union(boundItem(items[i], bound, opt));\n }\n }\n\n return mark.bounds = bounds;\n}\n","import boundMark from '../bound/boundMark';\n\nvar keys = [\n 'marktype', 'name', 'role', 'interactive', 'clip', 'items', 'zindex',\n 'x', 'y', 'width', 'height', 'align', 'baseline', // layout\n 'fill', 'fillOpacity', 'opacity', // fill\n 'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap', // stroke\n 'strokeDash', 'strokeDashOffset', // stroke dash\n 'startAngle', 'endAngle', 'innerRadius', 'outerRadius', // arc\n 'cornerRadius', 'padAngle', // arc, rect\n 'interpolate', 'tension', 'orient', 'defined', // area, line\n 'url', // image\n 'path', // path\n 'x2', 'y2', // rule\n 'size', 'shape', // symbol\n 'text', 'angle', 'theta', 'radius', 'dx', 'dy', // text\n 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant' // font\n];\n\nexport function sceneToJSON(scene, indent) {\n return JSON.stringify(scene, keys, indent);\n}\n\nexport function sceneFromJSON(json) {\n var scene = (typeof json === 'string' ? JSON.parse(json) : json);\n return initialize(scene);\n}\n\nfunction initialize(scene) {\n var type = scene.marktype,\n items = scene.items,\n parent, i, n;\n\n if (items) {\n for (i=0, n=items.length; i<n; ++i) {\n parent = type ? 'mark' : 'group';\n items[i][parent] = scene;\n if (items[i].zindex) items[i][parent].zdirty = true;\n if ('group' === (type || parent)) initialize(items[i]);\n }\n }\n\n if (type) boundMark(scene);\n return scene;\n}\n","import Bounds from './Bounds';\nimport GroupItem from './GroupItem';\nimport {sceneFromJSON, sceneToJSON} from './util/serialize';\n\nexport default function Scenegraph(scene) {\n if (arguments.length) {\n this.root = sceneFromJSON(scene);\n } else {\n this.root = createMark({\n marktype: 'group',\n name: 'root',\n role: 'frame'\n });\n this.root.items = [new GroupItem(this.root)];\n }\n}\n\nvar prototype = Scenegraph.prototype;\n\nprototype.toJSON = function(indent) {\n return sceneToJSON(this.root, indent || 0);\n};\n\nprototype.mark = function(markdef, group, index) {\n group = group || this.root.items[0];\n var mark = createMark(markdef, group);\n group.items[index] = mark;\n if (mark.zindex) mark.group.zdirty = true;\n return mark;\n};\n\nfunction createMark(def, group) {\n return {\n bounds: new Bounds(),\n clip: !!def.clip,\n group: group,\n interactive: def.interactive === false ? false : true,\n items: [],\n marktype: def.marktype,\n name: def.name || undefined,\n role: def.role || undefined,\n zindex: def.zindex || 0\n };\n}\n","// create a new DOM element\nexport function domCreate(doc, tag, ns) {\n if (!doc && typeof document !== 'undefined' && document.createElement) {\n doc = document;\n }\n return doc\n ? (ns ? doc.createElementNS(ns, tag) : doc.createElement(tag))\n : null;\n}\n\n// find first child element with matching tag\nexport function domFind(el, tag) {\n tag = tag.toLowerCase();\n var nodes = el.childNodes, i = 0, n = nodes.length;\n for (; i<n; ++i) if (nodes[i].tagName.toLowerCase() === tag) {\n return nodes[i];\n }\n}\n\n// retrieve child element at given index\n// create & insert if doesn't exist or if tags do not match\nexport function domChild(el, index, tag, ns) {\n var a = el.childNodes[index], b;\n if (!a || a.tagName.toLowerCase() !== tag.toLowerCase()) {\n b = a || null;\n a = domCreate(el.ownerDocument, tag, ns);\n el.insertBefore(a, b);\n }\n return a;\n}\n\n// remove all child elements at or above the given index\nexport function domClear(el, index) {\n var nodes = el.childNodes,\n curr = nodes.length;\n while (curr > index) el.removeChild(nodes[--curr]);\n return el;\n}\n\n// generate css class name for mark\nexport function cssClass(mark) {\n return 'mark-' + mark.marktype\n + (mark.role ? ' role-' + mark.role : '')\n + (mark.name ? ' ' + mark.name : '');\n}\n","export default function(event, el) {\n var rect = el.getBoundingClientRect();\n return [\n event.clientX - rect.left - (el.clientLeft || 0),\n event.clientY - rect.top - (el.clientTop || 0)\n ];\n}\n","import {domCreate} from './util/dom';\nimport resolveItem from './util/resolveItem';\nimport {loader} from 'vega-loader';\n\n/**\n * Create a new Handler instance.\n * @param {object} [customLoader] - Optional loader instance for\n * href URL sanitization. If not specified, a standard loader\n * instance will be generated.\n * @param {function} [customTooltip] - Optional tooltip handler\n * function for custom tooltip display.\n * @constructor\n */\nexport default function Handler(customLoader, customTooltip) {\n this._active = null;\n this._handlers = {};\n this._loader = customLoader || loader();\n this._tooltip = customTooltip || defaultTooltip;\n}\n\n// The default tooltip display handler.\n// Sets the HTML title attribute on the visualization container.\nfunction defaultTooltip(handler, event, item, value) {\n handler.element().setAttribute('title', value || '');\n}\n\nvar prototype = Handler.prototype;\n\n/**\n * Initialize a new Handler instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {Array<number>} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {object} [obj] - Optional context object that should serve as\n * the \"this\" context for event callbacks.\n * @return {Handler} - This handler instance.\n */\nprototype.initialize = function(el, origin, obj) {\n this._el = el;\n this._obj = obj || null;\n return this.origin(origin);\n};\n\n/**\n * Returns the parent container element for a visualization.\n * @return {DOMElement} - The containing DOM element.\n */\nprototype.element = function() {\n return this._el;\n};\n\n/**\n * Returns the scene element (e.g., canvas or SVG) of the visualization\n * Subclasses must override if the first child is not the scene element.\n * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n */\nprototype.canvas = function() {\n return this._el && this._el.firstChild;\n};\n\n/**\n * Get / set the origin coordinates of the visualization.\n */\nprototype.origin = function(origin) {\n if (arguments.length) {\n this._origin = origin || [0, 0];\n return this;\n } else {\n return this._origin.slice();\n }\n};\n\n/**\n * Get / set the scenegraph root.\n */\nprototype.scene = function(scene) {\n if (!arguments.length) return this._scene;\n this._scene = scene;\n return this;\n};\n\n/**\n * Add an event handler. Subclasses should override this method.\n */\nprototype.on = function(/*type, handler*/) {};\n\n/**\n * Remove an event handler. Subclasses should override this method.\n */\nprototype.off = function(/*type, handler*/) {};\n\n/**\n * Utility method for finding the array index of an event handler.\n * @param {Array} h - An array of registered event handlers.\n * @param {string} type - The event type.\n * @param {function} handler - The event handler instance to find.\n * @return {number} - The handler's array index or -1 if not registered.\n */\nprototype._handlerIndex = function(h, type, handler) {\n for (var i = h ? h.length : 0; --i>=0;) {\n if (h[i].type === type && (!handler || h[i].handler === handler)) {\n return i;\n }\n }\n return -1;\n};\n\n/**\n * Returns an array with registered event handlers.\n * @param {string} [type] - The event type to query. Any annotations\n * are ignored; for example, for the argument \"click.foo\", \".foo\" will\n * be ignored and the method returns all \"click\" handlers. If type is\n * null or unspecified, this method returns handlers for all types.\n * @return {Array} - A new array containing all registered event handlers.\n */\nprototype.handlers = function(type) {\n var h = this._handlers, a = [], k;\n if (type) {\n a.push.apply(a, h[this.eventName(type)]);\n } else {\n for (k in h) { a.push.apply(a, h[k]); }\n }\n return a;\n};\n\n/**\n * Parses an event name string to return the specific event type.\n * For example, given \"click.foo\" returns \"click\"\n * @param {string} name - The input event type string.\n * @return {string} - A string with the event type only.\n */\nprototype.eventName = function(name) {\n var i = name.indexOf('.');\n return i < 0 ? name : name.slice(0,i);\n};\n\n/**\n * Handle hyperlink navigation in response to an item.href value.\n * @param {Event} event - The event triggering hyperlink navigation.\n * @param {Item} item - The scenegraph item.\n * @param {string} href - The URL to navigate to.\n */\nprototype.handleHref = function(event, item, href) {\n this._loader\n .sanitize(href, {context:'href'})\n .then(function(opt) {\n var e = new MouseEvent(event.type, event),\n a = domCreate(null, 'a');\n for (var name in opt) a.setAttribute(name, opt[name]);\n a.dispatchEvent(e);\n })\n .catch(function() { /* do nothing */ });\n};\n\n/**\n * Handle tooltip display in response to an item.tooltip value.\n * @param {Event} event - The event triggering tooltip display.\n * @param {Item} item - The scenegraph item.\n * @param {boolean} show - A boolean flag indicating whether\n * to show or hide a tooltip for the given item.\n */\nprototype.handleTooltip = function(event, item, show) {\n if (item && item.tooltip != null) {\n item = resolveItem(item, event, this.canvas(), this._origin);\n var value = (show && item && item.tooltip) || null;\n this._tooltip.call(this._obj, this, event, item, value);\n }\n};\n\n/**\n * Returns the size of a scenegraph item and its position relative\n * to the viewport.\n * @param {Item} item - The scenegraph item.\n * @return {object} - A bounding box object (compatible with the\n * DOMRect type) consisting of x, y, width, heigh, top, left,\n * right, and bottom properties.\n */\nprototype.getItemBoundingClientRect = function(item) {\n if (!(el = this.canvas())) return;\n\n var el, rect = el.getBoundingClientRect(),\n origin = this._origin,\n itemBounds = item.bounds,\n x = itemBounds.x1 + origin[0] + rect.left,\n y = itemBounds.y1 + origin[1] + rect.top,\n w = itemBounds.width(),\n h = itemBounds.height();\n\n // translate coordinate for each parent group\n while (item.mark && (item = item.mark.group)) {\n x += item.x || 0;\n y += item.y || 0;\n }\n\n // return DOMRect-compatible bounding box\n return {\n x: x,\n y: y,\n width: w,\n height: h,\n left: x,\n top: y,\n right: x + w,\n bottom: y + h\n };\n};\n","import ResourceLoader from './ResourceLoader';\n\n/**\n * Create a new Renderer instance.\n * @param {object} [loader] - Optional loader instance for\n * image and href URL sanitization. If not specified, a\n * standard loader instance will be generated.\n * @constructor\n */\nexport default function Renderer(loader) {\n this._el = null;\n this._bgcolor = null;\n this._loader = new ResourceLoader(loader);\n}\n\nvar prototype = Renderer.prototype;\n\n/**\n * Initialize a new Renderer instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {number} width - The coordinate width of the display, in pixels.\n * @param {number} height - The coordinate height of the display, in pixels.\n * @param {Array<number>} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {Renderer} - This renderer instance.\n */\nprototype.initialize = function(el, width, height, origin, scaleFactor) {\n this._el = el;\n return this.resize(width, height, origin, scaleFactor);\n};\n\n/**\n * Returns the parent container element for a visualization.\n * @return {DOMElement} - The containing DOM element.\n */\nprototype.element = function() {\n return this._el;\n};\n\n/**\n * Returns the scene element (e.g., canvas or SVG) of the visualization\n * Subclasses must override if the first child is not the scene element.\n * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n */\nprototype.canvas = function() {\n return this._el && this._el.firstChild;\n};\n\n/**\n * Get / set the background color.\n */\nprototype.background = function(bgcolor) {\n if (arguments.length === 0) return this._bgcolor;\n this._bgcolor = bgcolor;\n return this;\n};\n\n/**\n * Resize the display.\n * @param {number} width - The new coordinate width of the display, in pixels.\n * @param {number} height - The new coordinate height of the display, in pixels.\n * @param {Array<number>} origin - The new origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {Renderer} - This renderer instance;\n */\nprototype.resize = function(width, height, origin, scaleFactor) {\n this._width = width;\n this._height = height;\n this._origin = origin || [0, 0];\n this._scale = scaleFactor || 1;\n return this;\n};\n\n/**\n * Report a dirty item whose bounds should be redrawn.\n * This base class method does nothing. Subclasses that perform\n * incremental should implement this method.\n * @param {Item} item - The dirty item whose bounds should be redrawn.\n */\nprototype.dirty = function(/*item*/) {\n};\n\n/**\n * Render an input scenegraph, potentially with a set of dirty items.\n * This method will perform an immediate rendering with available resources.\n * The renderer may also need to perform image loading to perform a complete\n * render. This process can lead to asynchronous re-rendering of the scene\n * after this method returns. To receive notification when rendering is\n * complete, use the renderAsync method instead.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @return {Renderer} - This renderer instance.\n */\nprototype.render = function(scene) {\n var r = this;\n\n // bind arguments into a render call, and cache it\n // this function may be subsequently called for async redraw\n r._call = function() { r._render(scene); };\n\n // invoke the renderer\n r._call();\n\n // clear the cached call for garbage collection\n // async redraws will stash their own copy\n r._call = null;\n\n return r;\n};\n\n/**\n * Internal rendering method. Renderer subclasses should override this\n * method to actually perform rendering.\n * @param {object} scene - The root mark of a scenegraph to render.\n */\nprototype._render = function(/*scene*/) {\n // subclasses to override\n};\n\n/**\n * Asynchronous rendering method. Similar to render, but returns a Promise\n * that resolves when all rendering is completed. Sometimes a renderer must\n * perform image loading to get a complete rendering. The returned\n * Promise will not resolve until this process completes.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @return {Promise} - A Promise that resolves when rendering is complete.\n */\nprototype.renderAsync = function(scene) {\n var r = this.render(scene);\n return this._ready\n ? this._ready.then(function() { return r; })\n : Promise.resolve(r);\n};\n\n/**\n * Internal method for asynchronous resource loading.\n * Proxies method calls to the ImageLoader, and tracks loading\n * progress to invoke a re-render once complete.\n * @param {string} method - The method name to invoke on the ImageLoader.\n * @param {string} uri - The URI for the requested resource.\n * @return {Promise} - A Promise that resolves to the requested resource.\n */\nprototype._load = function(method, uri) {\n var r = this,\n p = r._loader[method](uri);\n\n if (!r._ready) {\n // re-render the scene when loading completes\n var call = r._call;\n r._ready = r._loader.ready()\n .then(function(redraw) {\n if (redraw) call();\n r._ready = null;\n });\n }\n\n return p;\n};\n\n/**\n * Sanitize a URL to include as a hyperlink in the rendered scene.\n * This method proxies a call to ImageLoader.sanitizeURL, but also tracks\n * image loading progress and invokes a re-render once complete.\n * @param {string} uri - The URI string to sanitize.\n * @return {Promise} - A Promise that resolves to the sanitized URL.\n */\nprototype.sanitizeURL = function(uri) {\n return this._load('sanitizeURL', uri);\n};\n\n/**\n * Requests an image to include in the rendered scene.\n * This method proxies a call to ImageLoader.loadImage, but also tracks\n * image loading progress and invokes a re-render once complete.\n * @param {string} uri - The URI string of the image.\n * @return {Promise} - A Promise that resolves to the loaded Image.\n */\nprototype.loadImage = function(uri) {\n return this._load('loadImage', uri);\n};\n","import marks from '../marks/index';\nimport point from './point';\n\nexport default function(item, event, el, origin) {\n var mark = item && item.mark,\n mdef, p;\n\n if (mark && (mdef = marks[mark.marktype]).tip) {\n p = point(event, el);\n p[0] -= origin[0];\n p[1] -= origin[1];\n while (item = item.mark.group) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n }\n item = mdef.tip(mark.items, p);\n }\n\n return item;\n}\n","export var Events = [\n 'keydown',\n 'keypress',\n 'keyup',\n 'dragenter',\n 'dragleave',\n 'dragover',\n 'mousedown',\n 'mouseup',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'click',\n 'dblclick',\n 'wheel',\n 'mousewheel',\n 'touchstart',\n 'touchmove',\n 'touchend'\n];\n\nexport var TooltipShowEvent = 'mousemove';\n\nexport var TooltipHideEvent = 'mouseout';\n\nexport var HrefEvent = 'click';\n","import Handler from './Handler';\nimport Marks from './marks/index';\nimport {Events, HrefEvent, TooltipShowEvent, TooltipHideEvent} from './util/events';\nimport point from './util/point';\nimport {domFind} from './util/dom';\nimport {inherits} from 'vega-util';\n\nexport default function CanvasHandler(loader, tooltip) {\n Handler.call(this, loader, tooltip);\n this._down = null;\n this._touch = null;\n this._first = true;\n}\n\nvar prototype = inherits(CanvasHandler, Handler);\n\nprototype.initialize = function(el, origin, obj) {\n // add event listeners\n var canvas = this._canvas = el && domFind(el, 'canvas');\n if (canvas) {\n var that = this;\n this.events.forEach(function(type) {\n canvas.addEventListener(type, function(evt) {\n if (prototype[type]) {\n prototype[type].call(that, evt);\n } else {\n that.fire(type, evt);\n }\n });\n });\n }\n\n return Handler.prototype.initialize.call(this, el, origin, obj);\n};\n\n// return the backing canvas instance\nprototype.canvas = function() {\n return this._canvas;\n};\n\n// retrieve the current canvas context\nprototype.context = function() {\n return this._canvas.getContext('2d');\n};\n\n// supported events\nprototype.events = Events;\n\n// to keep old versions of firefox happy\nprototype.DOMMouseScroll = function(evt) {\n this.fire('mousewheel', evt);\n};\n\nfunction move(moveEvent, overEvent, outEvent) {\n return function(evt) {\n var a = this._active,\n p = this.pickEvent(evt);\n\n if (p === a) {\n // active item and picked item are the same\n this.fire(moveEvent, evt); // fire move\n } else {\n // active item and picked item are different\n if (!a || !a.exit) {\n // fire out for prior active item\n // suppress if active item was removed from scene\n this.fire(outEvent, evt);\n }\n this._active = p; // set new active item\n this.fire(overEvent, evt); // fire over for new active item\n this.fire(moveEvent, evt); // fire move for new active item\n }\n };\n}\n\nfunction inactive(type) {\n return function(evt) {\n this.fire(type, evt);\n this._active = null;\n };\n}\n\nprototype.mousemove = move('mousemove', 'mouseover', 'mouseout');\nprototype.dragover = move('dragover', 'dragenter', 'dragleave');\n\nprototype.mouseout = inactive('mouseout');\nprototype.dragleave = inactive('dragleave');\n\nprototype.mousedown = function(evt) {\n this._down = this._active;\n this.fire('mousedown', evt);\n};\n\nprototype.click = function(evt) {\n if (this._down === this._active) {\n this.fire('click', evt);\n this._down = null;\n }\n};\n\nprototype.touchstart = function(evt) {\n this._touch = this.pickEvent(evt.changedTouches[0]);\n\n if (this._first) {\n this._active = this._touch;\n this._first = false;\n }\n\n this.fire('touchstart', evt, true);\n};\n\nprototype.touchmove = function(evt) {\n this.fire('touchmove', evt, true);\n};\n\nprototype.touchend = function(evt) {\n this.fire('touchend', evt, true);\n this._touch = null;\n};\n\n// fire an event\nprototype.fire = function(type, evt, touch) {\n var a = touch ? this._touch : this._active,\n h = this._handlers[type], i, len;\n\n // set event type relative to scenegraph items\n evt.vegaType = type;\n\n // handle hyperlinks and tooltips first\n if (type === HrefEvent && a && a.href) {\n this.handleHref(evt, a, a.href);\n } else if (type === TooltipShowEvent || type === TooltipHideEvent) {\n this.handleTooltip(evt, a, type !== TooltipHideEvent);\n }\n\n // invoke all registered handlers\n if (h) {\n for (i=0, len=h.length; i<len; ++i) {\n h[i].handler.call(this._obj, evt, a);\n }\n }\n};\n\n// add an event handler\nprototype.on = function(type, handler) {\n var name = this.eventName(type),\n h = this._handlers,\n i = this._handlerIndex(h[name], type, handler);\n\n if (i < 0) {\n (h[name] || (h[name] = [])).push({\n type: type,\n handler: handler\n });\n }\n\n return this;\n};\n\n// remove an event handler\nprototype.off = function(type, handler) {\n var name = this.eventName(type),\n h = this._handlers[name],\n i = this._handlerIndex(h, type, handler);\n\n if (i >= 0) {\n h.splice(i, 1);\n }\n\n return this;\n};\n\nprototype.pickEvent = function(evt) {\n var p = point(evt, this._canvas),\n o = this._origin;\n return this.pick(this._scene, p[0], p[1], p[0] - o[0], p[1] - o[1]);\n};\n\n// find the scenegraph item at the current mouse position\n// x, y -- the absolute x, y mouse coordinates on the canvas element\n// gx, gy -- the relative coordinates within the current group\nprototype.pick = function(scene, x, y, gx, gy) {\n var g = this.context(),\n mark = Marks[scene.marktype];\n return mark.pick.call(this, g, scene, x, y, gx, gy);\n};\n","function devicePixelRatio() {\n return typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n}\n\nvar pixelRatio = devicePixelRatio();\n\nexport default function(canvas, width, height, origin, scaleFactor, opt) {\n var inDOM = typeof HTMLElement !== 'undefined'\n && canvas instanceof HTMLElement\n && canvas.parentNode != null;\n\n var context = canvas.getContext('2d'),\n ratio = inDOM ? pixelRatio : scaleFactor,\n key;\n\n canvas.width = width * ratio;\n canvas.height = height * ratio;\n\n for (key in opt) {\n context[key] = opt[key];\n }\n\n if (inDOM && ratio !== 1) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n\n context.pixelRatio = ratio;\n context.setTransform(\n ratio, 0, 0, ratio,\n ratio * origin[0],\n ratio * origin[1]\n );\n\n return canvas;\n}\n","import Renderer from './Renderer';\nimport Bounds from './Bounds';\nimport marks from './marks/index';\n\nimport {domClear} from './util/dom';\nimport clip from './util/canvas/clip';\nimport resize from './util/canvas/resize';\nimport {canvas} from 'vega-canvas';\nimport {inherits} from 'vega-util';\n\nexport default function CanvasRenderer(loader) {\n Renderer.call(this, loader);\n this._redraw = false;\n this._dirty = new Bounds();\n}\n\nvar prototype = inherits(CanvasRenderer, Renderer),\n base = Renderer.prototype,\n tempBounds = new Bounds();\n\nprototype.initialize = function(el, width, height, origin, scaleFactor, options) {\n this._options = options;\n this._canvas = canvas(1, 1, options && options.type); // instantiate a small canvas\n\n if (el) {\n domClear(el, 0).appendChild(this._canvas);\n this._canvas.setAttribute('class', 'marks');\n }\n // this method will invoke resize to size the canvas appropriately\n return base.initialize.call(this, el, width, height, origin, scaleFactor);\n};\n\nprototype.resize = function(width, height, origin, scaleFactor) {\n base.resize.call(this, width, height, origin, scaleFactor);\n resize(this._canvas, this._width, this._height,\n this._origin, this._scale, this._options && this._options.context);\n this._redraw = true;\n return this;\n};\n\nprototype.canvas = function() {\n return this._canvas;\n};\n\nprototype.context = function() {\n return this._canvas ? this._canvas.getContext('2d') : null;\n};\n\nprototype.dirty = function(item) {\n var b = translate(item.bounds, item.mark.group);\n this._dirty.union(b);\n};\n\nfunction clipToBounds(g, b, origin) {\n // expand bounds by 1 pixel, then round to pixel boundaries\n b.expand(1).round();\n\n // to avoid artifacts translate if origin has fractional pixels\n b.translate(-(origin[0] % 1), -(origin[1] % 1));\n\n // set clipping path\n g.beginPath();\n g.rect(b.x1, b.y1, b.width(), b.height());\n g.clip();\n\n return b;\n}\n\nfunction translate(bounds, group) {\n if (group == null) return bounds;\n var b = tempBounds.clear().union(bounds);\n for (; group != null; group = group.mark.group) {\n b.translate(group.x || 0, group.y || 0);\n }\n return b;\n}\n\nprototype._render = function(scene) {\n var g = this.context(),\n o = this._origin,\n w = this._width,\n h = this._height,\n b = this._dirty;\n\n // setup\n g.save();\n if (this._redraw || b.empty()) {\n this._redraw = false;\n b = null;\n } else {\n b = clipToBounds(g, b, o);\n }\n\n this.clear(-o[0], -o[1], w, h);\n\n // render\n this.draw(g, scene, b);\n\n // takedown\n g.restore();\n\n this._dirty.clear();\n return this;\n};\n\nprototype.draw = function(ctx, scene, bounds) {\n var mark = marks[scene.marktype];\n if (scene.clip) clip(ctx, scene);\n mark.draw.call(this, ctx, scene, bounds);\n if (scene.clip) ctx.restore();\n};\n\nprototype.clear = function(x, y, w, h) {\n var g = this.context();\n g.clearRect(x, y, w, h);\n if (this._bgcolor != null) {\n g.fillStyle = this._bgcolor;\n g.fillRect(x, y, w, h);\n }\n};\n","import Handler from './Handler';\nimport {domFind} from './util/dom';\nimport {HrefEvent, TooltipShowEvent, TooltipHideEvent} from './util/events';\nimport {inherits} from 'vega-util';\n\nexport default function SVGHandler(loader, tooltip) {\n Handler.call(this, loader, tooltip);\n var h = this;\n h._hrefHandler = listener(h, function(evt, item) {\n if (item && item.href) h.handleHref(evt, item, item.href);\n });\n h._tooltipHandler = listener(h, function(evt, item) {\n h.handleTooltip(evt, item, evt.type !== TooltipHideEvent);\n });\n}\n\nvar prototype = inherits(SVGHandler, Handler);\n\nprototype.initialize = function(el, origin, obj) {\n var svg = this._svg;\n if (svg) {\n svg.removeEventListener(HrefEvent, this._hrefHandler);\n svg.removeEventListener(TooltipShowEvent, this._tooltipHandler);\n svg.removeEventListener(TooltipHideEvent, this._tooltipHandler);\n }\n this._svg = svg = el && domFind(el, 'svg');\n if (svg) {\n svg.addEventListener(HrefEvent, this._hrefHandler);\n svg.addEventListener(TooltipShowEvent, this._tooltipHandler);\n svg.addEventListener(TooltipHideEvent, this._tooltipHandler);\n }\n return Handler.prototype.initialize.call(this, el, origin, obj);\n};\n\nprototype.canvas = function() {\n return this._svg;\n};\n\n// wrap an event listener for the SVG DOM\nfunction listener(context, handler) {\n return function(evt) {\n var target = evt.target,\n item = target.__data__;\n evt.vegaType = evt.type;\n item = Array.isArray(item) ? item[0] : item;\n handler.call(context._obj, evt, item);\n };\n}\n\n// add an event handler\nprototype.on = function(type, handler) {\n var name = this.eventName(type),\n h = this._handlers,\n i = this._handlerIndex(h[name], type, handler);\n\n if (i < 0) {\n var x = {\n type: type,\n handler: handler,\n listener: listener(this, handler)\n };\n\n (h[name] || (h[name] = [])).push(x);\n if (this._svg) {\n this._svg.addEventListener(name, x.listener);\n }\n }\n\n return this;\n};\n\n// remove an event handler\nprototype.off = function(type, handler) {\n var name = this.eventName(type),\n h = this._handlers[name],\n i = this._handlerIndex(h, type, handler);\n\n if (i >= 0) {\n if (this._svg) {\n this._svg.removeEventListener(name, h[i].listener);\n }\n h.splice(i, 1);\n }\n\n return this;\n};\n","import {isFunction} from 'vega-util';\n\nexport default function(context, scene) {\n var clip = scene.clip;\n\n context.save();\n context.beginPath();\n\n if (isFunction(clip)) {\n clip(context);\n } else {\n var group = scene.group;\n context.rect(0, 0, group.width || 0, group.height || 0);\n }\n\n context.clip();\n}\n","// generate string for an opening xml tag\n// tag: the name of the xml tag\n// attr: hash of attribute name-value pairs to include\n// raw: additional raw string to include in tag markup\nexport function openTag(tag, attr, raw) {\n var s = '<' + tag, key, val;\n if (attr) {\n for (key in attr) {\n val = attr[key];\n if (val != null) {\n s += ' ' + key + '=\"' + val + '\"';\n }\n }\n }\n if (raw) s += ' ' + raw;\n return s + '>';\n}\n\n// generate string for closing xml tag\n// tag: the name of the xml tag\nexport function closeTag(tag) {\n return '</' + tag + '>';\n}\n","export default {\n 'version': '1.1',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'xmlns:xlink': 'http://www.w3.org/1999/xlink'\n};","export var styles = {\n 'fill': 'fill',\n 'fillOpacity': 'fill-opacity',\n 'stroke': 'stroke',\n 'strokeOpacity': 'stroke-opacity',\n 'strokeWidth': 'stroke-width',\n 'strokeCap': 'stroke-linecap',\n 'strokeJoin': 'stroke-linejoin',\n 'strokeDash': 'stroke-dasharray',\n 'strokeDashOffset': 'stroke-dashoffset',\n 'strokeMiterLimit': 'stroke-miterlimit',\n 'opacity': 'opacity'\n};\n\nexport var styleProperties = Object.keys(styles);\n","import Renderer from './Renderer';\nimport {gradientRef, isGradient, patternPrefix} from './Gradient';\nimport marks from './marks/index';\nimport {domChild, domClear, domCreate, cssClass} from './util/dom';\nimport {openTag, closeTag} from './util/tags';\nimport {fontFamily, fontSize, textValue} from './util/text';\nimport {visit} from './util/visit';\nimport clip from './util/svg/clip';\nimport metadata from './util/svg/metadata';\nimport {styles, styleProperties} from './util/svg/styles';\nimport {inherits} from 'vega-util';\n\nvar ns = metadata.xmlns;\n\nexport default function SVGRenderer(loader) {\n Renderer.call(this, loader);\n this._dirtyID = 1;\n this._dirty = [];\n this._svg = null;\n this._root = null;\n this._defs = null;\n}\n\nvar prototype = inherits(SVGRenderer, Renderer);\nvar base = Renderer.prototype;\n\nprototype.initialize = function(el, width, height, padding) {\n if (el) {\n this._svg = domChild(el, 0, 'svg', ns);\n this._svg.setAttribute('class', 'marks');\n domClear(el, 1);\n // set the svg root group\n this._root = domChild(this._svg, 0, 'g', ns);\n domClear(this._svg, 1);\n }\n\n // create the svg definitions cache\n this._defs = {\n gradient: {},\n clipping: {}\n };\n\n // set background color if defined\n this.background(this._bgcolor);\n\n return base.initialize.call(this, el, width, height, padding);\n};\n\nprototype.background = function(bgcolor) {\n if (arguments.length && this._svg) {\n this._svg.style.setProperty('background-color', bgcolor);\n }\n return base.background.apply(this, arguments);\n};\n\nprototype.resize = function(width, height, origin, scaleFactor) {\n base.resize.call(this, width, height, origin, scaleFactor);\n\n if (this._svg) {\n this._svg.setAttribute('width', this._width * this._scale);\n this._svg.setAttribute('height', this._height * this._scale);\n this._svg.setAttribute('viewBox', '0 0 ' + this._width + ' ' + this._height);\n this._root.setAttribute('transform', 'translate(' + this._origin + ')');\n }\n\n this._dirty = [];\n\n return this;\n};\n\nprototype.canvas = function() {\n return this._svg;\n};\n\nprototype.svg = function() {\n if (!this._svg) return null;\n\n var attr = {\n class: 'marks',\n width: this._width * this._scale,\n height: this._height * this._scale,\n viewBox: '0 0 ' + this._width + ' ' + this._height\n };\n for (var key in metadata) {\n attr[key] = metadata[key];\n }\n\n var bg = !this._bgcolor ? ''\n : (openTag('rect', {\n width: this._width,\n height: this._height,\n style: 'fill: ' + this._bgcolor + ';'\n }) + closeTag('rect'));\n\n return openTag('svg', attr) + bg + this._svg.innerHTML + closeTag('svg');\n};\n\n\n// -- Render entry point --\n\nprototype._render = function(scene) {\n // perform spot updates and re-render markup\n if (this._dirtyCheck()) {\n if (this._dirtyAll) this._resetDefs();\n this.draw(this._root, scene);\n domClear(this._root, 1);\n }\n\n this.updateDefs();\n\n this._dirty = [];\n ++this._dirtyID;\n\n return this;\n};\n\n// -- Manage SVG definitions ('defs') block --\n\nprototype.updateDefs = function() {\n var svg = this._svg,\n defs = this._defs,\n el = defs.el,\n index = 0, id;\n\n for (id in defs.gradient) {\n if (!el) defs.el = (el = domChild(svg, 0, 'defs', ns));\n index = updateGradient(el, defs.gradient[id], index);\n }\n\n for (id in defs.clipping) {\n if (!el) defs.el = (el = domChild(svg, 0, 'defs', ns));\n index = updateClipping(el, defs.clipping[id], index);\n }\n\n // clean-up\n if (el) {\n if (index === 0) {\n svg.removeChild(el);\n defs.el = null;\n } else {\n domClear(el, index);\n }\n }\n};\n\nfunction updateGradient(el, grad, index) {\n var i, n, stop;\n\n if (grad.gradient === 'radial') {\n // SVG radial gradients automatically transform to normalized bbox\n // coordinates, in a way that is cumbersome to replicate in canvas.\n // So we wrap the radial gradient in a pattern element, allowing us\n // to mantain a circular gradient that matches what canvas provides.\n var pt = domChild(el, index++, 'pattern', ns);\n pt.setAttribute('id', patternPrefix + grad.id);\n pt.setAttribute('viewBox', '0,0,1,1');\n pt.setAttribute('width', '100%');\n pt.setAttribute('height', '100%');\n pt.setAttribute('preserveAspectRatio', 'xMidYMid slice');\n\n pt = domChild(pt, 0, 'rect', ns);\n pt.setAttribute('width', '1');\n pt.setAttribute('height', '1');\n pt.setAttribute('fill', 'url(' + href() + '#' + grad.id + ')');\n\n el = domChild(el, index++, 'radialGradient', ns);\n el.setAttribute('id', grad.id);\n el.setAttribute('fx', grad.x1);\n el.setAttribute('fy', grad.y1);\n el.setAttribute('fr', grad.r1);\n el.setAttribute('cx', grad.x2);\n el.setAttribute('cy', grad.y2);\n el.setAttribute( 'r', grad.r2);\n } else {\n el = domChild(el, index++, 'linearGradient', ns);\n el.setAttribute('id', grad.id);\n el.setAttribute('x1', grad.x1);\n el.setAttribute('x2', grad.x2);\n el.setAttribute('y1', grad.y1);\n el.setAttribute('y2', grad.y2);\n }\n\n for (i=0, n=grad.stops.length; i<n; ++i) {\n stop = domChild(el, i, 'stop', ns);\n stop.setAttribute('offset', grad.stops[i].offset);\n stop.setAttribute('stop-color', grad.stops[i].color);\n }\n domClear(el, i);\n\n return index;\n}\n\nfunction updateClipping(el, clip, index) {\n var mask;\n\n el = domChild(el, index, 'clipPath', ns);\n el.setAttribute('id', clip.id);\n\n if (clip.path) {\n mask = domChild(el, 0, 'path', ns);\n mask.setAttribute('d', clip.path);\n } else {\n mask = domChild(el, 0, 'rect', ns);\n mask.setAttribute('x', 0);\n mask.setAttribute('y', 0);\n mask.setAttribute('width', clip.width);\n mask.setAttribute('height', clip.height);\n }\n\n return index + 1;\n}\n\nprototype._resetDefs = function() {\n var def = this._defs;\n def.gradient = {};\n def.clipping = {};\n};\n\n\n// -- Manage rendering of items marked as dirty --\n\nprototype.dirty = function(item) {\n if (item.dirty !== this._dirtyID) {\n item.dirty = this._dirtyID;\n this._dirty.push(item);\n }\n};\n\nprototype.isDirty = function(item) {\n return this._dirtyAll\n || !item._svg\n || item.dirty === this._dirtyID;\n};\n\nprototype._dirtyCheck = function() {\n this._dirtyAll = true;\n var items = this._dirty;\n if (!items.length) return true;\n\n var id = ++this._dirtyID,\n item, mark, type, mdef, i, n, o;\n\n for (i=0, n=items.length; i<n; ++i) {\n item = items[i];\n mark = item.mark;\n\n if (mark.marktype !== type) {\n // memoize mark instance lookup\n type = mark.marktype;\n mdef = marks[type];\n }\n\n if (mark.zdirty && mark.dirty !== id) {\n this._dirtyAll = false;\n dirtyParents(item, id);\n mark.items.forEach(function(i) { i.dirty = id; });\n }\n if (mark.zdirty) continue; // handle in standard drawing pass\n\n if (item.exit) { // EXIT\n if (mdef.nested && mark.items.length) {\n // if nested mark with remaining points, update instead\n o = mark.items[0];\n if (o._svg) this._update(mdef, o._svg, o);\n } else if (item._svg) {\n // otherwise remove from DOM\n o = item._svg.parentNode;\n if (o) o.removeChild(item._svg);\n }\n item._svg = null;\n continue;\n }\n\n item = (mdef.nested ? mark.items[0] : item);\n if (item._update === id) continue; // already visited\n\n if (!item._svg || !item._svg.ownerSVGElement) {\n // ENTER\n this._dirtyAll = false;\n dirtyParents(item, id);\n } else {\n // IN-PLACE UPDATE\n this._update(mdef, item._svg, item);\n }\n item._update = id;\n }\n return !this._dirtyAll;\n};\n\nfunction dirtyParents(item, id) {\n for (; item && item.dirty !== id; item=item.mark.group) {\n item.dirty = id;\n if (item.mark && item.mark.dirty !== id) {\n item.mark.dirty = id;\n } else return;\n }\n}\n\n\n// -- Construct & maintain scenegraph to SVG mapping ---\n\n// Draw a mark container.\nprototype.draw = function(el, scene, prev) {\n if (!this.isDirty(scene)) return scene._svg;\n\n var renderer = this,\n svg = this._svg,\n mdef = marks[scene.marktype],\n events = scene.interactive === false ? 'none' : null,\n isGroup = mdef.tag === 'g',\n sibling = null,\n i = 0,\n parent;\n\n parent = bind(scene, el, prev, 'g', svg);\n parent.setAttribute('class', cssClass(scene));\n if (!isGroup) {\n parent.style.setProperty('pointer-events', events);\n }\n if (scene.clip) {\n parent.setAttribute('clip-path', clip(renderer, scene, scene.group));\n } else {\n parent.removeAttribute('clip-path');\n }\n\n function process(item) {\n var dirty = renderer.isDirty(item),\n node = bind(item, parent, sibling, mdef.tag, svg);\n\n if (dirty) {\n renderer._update(mdef, node, item);\n if (isGroup) recurse(renderer, node, item);\n }\n\n sibling = node;\n ++i;\n }\n\n if (mdef.nested) {\n if (scene.items.length) process(scene.items[0]);\n } else {\n visit(scene, process);\n }\n\n domClear(parent, i);\n return parent;\n};\n\n// Recursively process group contents.\nfunction recurse(renderer, el, group) {\n el = el.lastChild;\n var prev, idx = 0;\n\n visit(group, function(item) {\n prev = renderer.draw(el, item, prev);\n ++idx;\n });\n\n // remove any extraneous DOM elements\n domClear(el, 1 + idx);\n}\n\n// Bind a scenegraph item to an SVG DOM element.\n// Create new SVG elements as needed.\nfunction bind(item, el, sibling, tag, svg) {\n var node = item._svg, doc;\n\n // create a new dom node if needed\n if (!node) {\n doc = el.ownerDocument;\n node = domCreate(doc, tag, ns);\n item._svg = node;\n\n if (item.mark) {\n node.__data__ = item;\n node.__values__ = {fill: 'default'};\n\n // if group, create background and foreground elements\n if (tag === 'g') {\n var bg = domCreate(doc, 'path', ns);\n bg.setAttribute('class', 'background');\n node.appendChild(bg);\n bg.__data__ = item;\n\n var fg = domCreate(doc, 'g', ns);\n node.appendChild(fg);\n fg.__data__ = item;\n }\n }\n }\n\n // (re-)insert if (a) not contained in SVG or (b) sibling order has changed\n if (node.ownerSVGElement !== svg || hasSiblings(item) && node.previousSibling !== sibling) {\n el.insertBefore(node, sibling ? sibling.nextSibling : el.firstChild);\n }\n\n return node;\n}\n\nfunction hasSiblings(item) {\n var parent = item.mark || item.group;\n return parent && parent.items.length > 1;\n}\n\n\n// -- Set attributes & styles on SVG elements ---\n\nvar element = null, // temp var for current SVG element\n values = null; // temp var for current values hash\n\n// Extra configuration for certain mark types\nvar mark_extras = {\n group: function(mdef, el, item) {\n values = el.__values__; // use parent's values hash\n\n element = el.childNodes[1];\n mdef.foreground(emit, item, this);\n\n element = el.childNodes[0];\n mdef.background(emit, item, this);\n\n var value = item.mark.interactive === false ? 'none' : null;\n if (value !== values.events) {\n element.style.setProperty('pointer-events', value);\n values.events = value;\n }\n },\n text: function(mdef, el, item) {\n var value;\n\n value = textValue(item);\n if (value !== values.text) {\n el.textContent = value;\n values.text = value;\n }\n\n setStyle(el, 'font-family', fontFamily(item));\n setStyle(el, 'font-size', fontSize(item) + 'px');\n setStyle(el, 'font-style', item.fontStyle);\n setStyle(el, 'font-variant', item.fontVariant);\n setStyle(el, 'font-weight', item.fontWeight);\n }\n};\n\nfunction setStyle(el, name, value) {\n if (value !== values[name]) {\n if (value == null) {\n el.style.removeProperty(name);\n } else {\n el.style.setProperty(name, value + '');\n }\n values[name] = value;\n }\n}\n\nprototype._update = function(mdef, el, item) {\n // set dom element and values cache\n // provides access to emit method\n element = el;\n values = el.__values__;\n\n // apply svg attributes\n mdef.attr(emit, item, this);\n\n // some marks need special treatment\n var extra = mark_extras[mdef.type];\n if (extra) extra.call(this, mdef, el, item);\n\n // apply svg css styles\n // note: element may be modified by 'extra' method\n this.style(element, item);\n};\n\nfunction emit(name, value, ns) {\n // early exit if value is unchanged\n if (value === values[name]) return;\n\n if (value != null) {\n // if value is provided, update DOM attribute\n if (ns) {\n element.setAttributeNS(ns, name, value);\n } else {\n element.setAttribute(name, value);\n }\n } else {\n // else remove DOM attribute\n if (ns) {\n element.removeAttributeNS(ns, name);\n } else {\n element.removeAttribute(name);\n }\n }\n\n // note current value for future comparison\n values[name] = value;\n}\n\nprototype.style = function(el, o) {\n if (o == null) return;\n var i, n, prop, name, value;\n\n for (i=0, n=styleProperties.length; i<n; ++i) {\n prop = styleProperties[i];\n value = o[prop];\n\n if (prop === 'font') {\n value = fontFamily(o);\n }\n\n if (value === values[prop]) continue;\n\n name = styles[prop];\n if (value == null) {\n if (name === 'fill') {\n el.style.setProperty(name, 'none');\n } else {\n el.style.removeProperty(name);\n }\n } else {\n if (isGradient(value)) {\n value = gradientRef(value, this._defs.gradient, href());\n }\n el.style.setProperty(name, value + '');\n }\n\n values[prop] = value;\n }\n};\n\nfunction href() {\n var loc;\n return typeof window === 'undefined' ? ''\n : (loc = window.location).hash ? loc.href.slice(0, -loc.hash.length)\n : loc.href;\n}\n","import Renderer from './Renderer';\nimport {gradientRef, isGradient, patternPrefix} from './Gradient';\nimport marks from './marks/index';\nimport {cssClass} from './util/dom';\nimport {openTag, closeTag} from './util/tags';\nimport {fontFamily, fontSize, textValue} from './util/text';\nimport {visit} from './util/visit';\nimport clip from './util/svg/clip';\nimport metadata from './util/svg/metadata';\nimport {styles, styleProperties} from './util/svg/styles';\nimport {inherits} from 'vega-util';\n\nexport default function SVGStringRenderer(loader) {\n Renderer.call(this, loader);\n\n this._text = {\n head: '',\n bg: '',\n root: '',\n foot: '',\n defs: '',\n body: ''\n };\n\n this._defs = {\n gradient: {},\n clipping: {}\n };\n}\n\nvar prototype = inherits(SVGStringRenderer, Renderer);\nvar base = Renderer.prototype;\n\nprototype.resize = function(width, height, origin, scaleFactor) {\n base.resize.call(this, width, height, origin, scaleFactor);\n var o = this._origin,\n t = this._text;\n\n var attr = {\n class: 'marks',\n width: this._width * this._scale,\n height: this._height * this._scale,\n viewBox: '0 0 ' + this._width + ' ' + this._height\n };\n for (var key in metadata) {\n attr[key] = metadata[key];\n }\n\n t.head = openTag('svg', attr);\n\n var bg = this._bgcolor;\n if (bg === 'transparent' || bg === 'none') bg = null;\n\n if (bg) {\n t.bg = openTag('rect', {\n width: this._width,\n height: this._height,\n style: 'fill: ' + bg + ';'\n }) + closeTag('rect');\n } else {\n t.bg = '';\n }\n\n t.root = openTag('g', {\n transform: 'translate(' + o + ')'\n });\n\n t.foot = closeTag('g') + closeTag('svg');\n\n return this;\n};\n\nprototype.background = function() {\n var rv = base.background.apply(this, arguments);\n if (arguments.length && this._text.head) {\n this.resize(this._width, this._height, this._origin, this._scale);\n }\n return rv;\n};\n\nprototype.svg = function() {\n var t = this._text;\n return t.head + t.bg + t.defs + t.root + t.body + t.foot;\n};\n\nprototype._render = function(scene) {\n this._text.body = this.mark(scene);\n this._text.defs = this.buildDefs();\n return this;\n};\n\nprototype.buildDefs = function() {\n var all = this._defs,\n defs = '',\n i, id, def, tag, stops;\n\n for (id in all.gradient) {\n def = all.gradient[id];\n stops = def.stops;\n\n if (def.gradient === 'radial') {\n // SVG radial gradients automatically transform to normalized bbox\n // coordinates, in a way that is cumbersome to replicate in canvas.\n // So we wrap the radial gradient in a pattern element, allowing us\n // to mantain a circular gradient that matches what canvas provides.\n\n defs += openTag(tag = 'pattern', {\n id: patternPrefix + id,\n viewBox: '0,0,1,1',\n width: '100%',\n height: '100%',\n preserveAspectRatio: 'xMidYMid slice'\n });\n\n defs += openTag('rect', {\n width: '1',\n height: '1',\n fill: 'url(#' + id + ')'\n }) + closeTag('rect');\n\n defs += closeTag(tag);\n\n defs += openTag(tag = 'radialGradient', {\n id: id,\n fx: def.x1,\n fy: def.y1,\n fr: def.r1,\n cx: def.x2,\n cy: def.y2,\n r: def.r2\n });\n } else {\n defs += openTag(tag = 'linearGradient', {\n id: id,\n x1: def.x1,\n x2: def.x2,\n y1: def.y1,\n y2: def.y2\n });\n }\n\n for (i=0; i<stops.length; ++i) {\n defs += openTag('stop', {\n offset: stops[i].offset,\n 'stop-color': stops[i].color\n }) + closeTag('stop');\n }\n\n defs += closeTag(tag);\n }\n\n for (id in all.clipping) {\n def = all.clipping[id];\n\n defs += openTag('clipPath', {id: id});\n\n if (def.path) {\n defs += openTag('path', {\n d: def.path\n }) + closeTag('path');\n } else {\n defs += openTag('rect', {\n x: 0,\n y: 0,\n width: def.width,\n height: def.height\n }) + closeTag('rect');\n }\n\n defs += closeTag('clipPath');\n }\n\n return (defs.length > 0) ? openTag('defs') + defs + closeTag('defs') : '';\n};\n\nvar object;\n\nfunction emit(name, value, ns, prefixed) {\n object[prefixed || name] = value;\n}\n\nprototype.attributes = function(attr, item) {\n object = {};\n attr(emit, item, this);\n return object;\n};\n\nprototype.href = function(item) {\n var that = this,\n href = item.href,\n attr;\n\n if (href) {\n if (attr = that._hrefs && that._hrefs[href]) {\n return attr;\n } else {\n that.sanitizeURL(href).then(function(attr) {\n // rewrite to use xlink namespace\n // note that this will be deprecated in SVG 2.0\n attr['xlink:href'] = attr.href;\n attr.href = null;\n (that._hrefs || (that._hrefs = {}))[href] = attr;\n });\n }\n }\n return null;\n};\n\nprototype.mark = function(scene) {\n var renderer = this,\n mdef = marks[scene.marktype],\n tag = mdef.tag,\n defs = this._defs,\n str = '',\n style;\n\n if (tag !== 'g' && scene.interactive === false) {\n style = 'style=\"pointer-events: none;\"';\n }\n\n // render opening group tag\n str += openTag('g', {\n 'class': cssClass(scene),\n 'clip-path': scene.clip ? clip(renderer, scene, scene.group) : null\n }, style);\n\n // render contained elements\n function process(item) {\n var href = renderer.href(item);\n if (href) str += openTag('a', href);\n\n style = (tag !== 'g') ? applyStyles(item, scene, tag, defs) : null;\n str += openTag(tag, renderer.attributes(mdef.attr, item), style);\n\n if (tag === 'text') {\n str += escape_text(textValue(item));\n } else if (tag === 'g') {\n str += openTag('path', renderer.attributes(mdef.background, item),\n applyStyles(item, scene, 'bgrect', defs)) + closeTag('path');\n\n str += openTag('g', renderer.attributes(mdef.foreground, item))\n + renderer.markGroup(item)\n + closeTag('g');\n }\n\n str += closeTag(tag);\n if (href) str += closeTag('a');\n }\n\n if (mdef.nested) {\n if (scene.items && scene.items.length) process(scene.items[0]);\n } else {\n visit(scene, process);\n }\n\n // render closing group tag\n return str + closeTag('g');\n};\n\nprototype.markGroup = function(scene) {\n var renderer = this,\n str = '';\n\n visit(scene, function(item) {\n str += renderer.mark(item);\n });\n\n return str;\n};\n\nfunction applyStyles(o, mark, tag, defs) {\n if (o == null) return '';\n var i, n, prop, name, value, s = '';\n\n if (tag === 'bgrect' && mark.interactive === false) {\n s += 'pointer-events: none; ';\n }\n\n if (tag === 'text') {\n s += 'font-family: ' + fontFamily(o) + '; ';\n s += 'font-size: ' + fontSize(o) + 'px; ';\n if (o.fontStyle) s += 'font-style: ' + o.fontStyle + '; ';\n if (o.fontVariant) s += 'font-variant: ' + o.fontVariant + '; ';\n if (o.fontWeight) s += 'font-weight: ' + o.fontWeight + '; ';\n }\n\n for (i=0, n=styleProperties.length; i<n; ++i) {\n prop = styleProperties[i];\n name = styles[prop];\n value = o[prop];\n\n if (value == null) {\n if (name === 'fill') {\n s += 'fill: none; ';\n }\n } else if (value === 'transparent' && (name === 'fill' || name === 'stroke')) {\n // transparent is not a legal SVG value, so map to none instead\n s += name + ': none; ';\n } else {\n if (isGradient(value)) {\n value = gradientRef(value, defs.gradient, '');\n }\n s += name + ': ' + value + '; ';\n }\n }\n\n return s ? 'style=\"' + s.trim() + '\"' : null;\n}\n\nfunction escape_text(s) {\n return s.replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n}\n","import CanvasHandler from './CanvasHandler';\nimport CanvasRenderer from './CanvasRenderer';\nimport SVGHandler from './SVGHandler';\nimport SVGRenderer from './SVGRenderer';\nimport SVGStringRenderer from './SVGStringRenderer';\n\nvar Canvas = 'canvas';\nvar PNG = 'png';\nvar SVG = 'svg';\nvar None = 'none';\n\nexport var RenderType = {\n Canvas: Canvas,\n PNG: PNG,\n SVG: SVG,\n None: None\n};\n\nvar modules = {};\n\nmodules[Canvas] = modules[PNG] = {\n renderer: CanvasRenderer,\n headless: CanvasRenderer,\n handler: CanvasHandler\n};\n\nmodules[SVG] = {\n renderer: SVGRenderer,\n headless: SVGStringRenderer,\n handler: SVGHandler\n};\n\nmodules[None] = {};\n\nexport function renderModule(name, _) {\n name = String(name || '').toLowerCase();\n if (arguments.length > 1) {\n modules[name] = _;\n return this;\n } else {\n return modules[name];\n }\n}\n","import Marks from './marks/index';\nimport {error} from 'vega-util';\nimport Bounds from './Bounds';\n\nexport function intersect(scene, bounds, filter) {\n const hits = [], // intersection results\n box = new Bounds().union(bounds), // defensive copy\n type = scene.marktype;\n\n return type ? intersectMark(scene, box, filter, hits)\n : type === 'group' ? intersectGroup(scene, box, filter, hits)\n : error('Intersect scene must be mark node or group item.');\n}\n\nfunction intersectMark(mark, box, filter, hits) {\n if (visitMark(mark, box, filter)) {\n const items = mark.items,\n type = mark.marktype,\n n = items.length;\n\n let i = 0;\n\n if (type === 'group') {\n for (; i<n; ++i) {\n intersectGroup(items[i], box, filter, hits);\n }\n } else {\n for (const test = Marks[type].isect; i<n; ++i) {\n let item = items[i];\n if (intersectItem(item, box, test)) hits.push(item);\n }\n }\n }\n return hits;\n}\n\nfunction visitMark(mark, box, filter) {\n // process if bounds intersect and if\n // (1) mark is a group mark (so we must recurse), or\n // (2) mark is interactive and passes filter\n return mark.bounds && box.intersects(mark.bounds) && (\n mark.marktype === 'group' ||\n mark.interactive !== false && (!filter || filter(mark))\n );\n}\n\nfunction intersectGroup(group, box, filter, hits) {\n // test intersect against group\n // skip groups by default unless filter says otherwise\n if ((filter && filter(group.mark)) &&\n intersectItem(group, box, Marks.group.isect)) {\n hits.push(group);\n }\n\n // recursively test children marks\n // translate box to group coordinate space\n const marks = group.items,\n n = marks && marks.length;\n\n if (n) {\n const x = group.x || 0,\n y = group.y || 0;\n box.translate(-x, -y);\n for (let i=0; i<n; ++i) {\n intersectMark(marks[i], box, filter, hits);\n }\n box.translate(x, y);\n }\n\n return hits;\n}\n\nfunction intersectItem(item, box, test) {\n // test bounds enclosure, bounds intersection, then detailed test\n const bounds = item.bounds;\n return box.encloses(bounds) || (box.intersects(bounds) && test(item, box));\n}\n\n","import Bounds from '../Bounds';\nimport boundContext from './boundContext';\nimport {isFunction} from 'vega-util';\n\nvar clipBounds = new Bounds();\n\nexport default function(mark) {\n var clip = mark.clip;\n\n if (isFunction(clip)) {\n clip(boundContext(clipBounds.clear()));\n } else if (clip) {\n clipBounds.set(0, 0, mark.group.width, mark.group.height);\n } else return;\n\n mark.bounds.intersect(clipBounds);\n}\n","import pathParse from '../path/parse';\nimport {isNumber, isObject} from 'vega-util';\n\nvar TOLERANCE = 1e-9;\n\nexport function sceneEqual(a, b, key) {\n return (a === b) ? true\n : (key === 'path') ? pathEqual(a, b)\n : (a instanceof Date && b instanceof Date) ? +a === +b\n : (isNumber(a) && isNumber(b)) ? Math.abs(a - b) <= TOLERANCE\n : (!a || !b || !isObject(a) && !isObject(b)) ? a == b\n : (a == null || b == null) ? false\n : objectEqual(a, b);\n}\n\nexport function pathEqual(a, b) {\n return sceneEqual(pathParse(a), pathParse(b));\n}\n\nfunction objectEqual(a, b) {\n var ka = Object.keys(a),\n kb = Object.keys(b),\n key, i;\n\n if (ka.length !== kb.length) return false;\n\n ka.sort();\n kb.sort();\n\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) return false;\n }\n\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!sceneEqual(a[key], b[key], key)) return false;\n }\n\n return typeof a === typeof b;\n}\n","import {Group, LegendRole} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {boundClip, Marks} from 'vega-scenegraph';\nimport {inherits} from 'vega-util';\n\n/**\n * Calculate bounding boxes for scenegraph items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - The scenegraph mark instance to bound.\n */\nexport default function Bound(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Bound, Transform);\n\nprototype.transform = function(_, pulse) {\n var view = pulse.dataflow,\n mark = _.mark,\n type = mark.marktype,\n entry = Marks[type],\n bound = entry.bound,\n markBounds = mark.bounds, rebound;\n\n if (entry.nested) {\n // multi-item marks have a single bounds instance\n if (mark.items.length) view.dirty(mark.items[0]);\n markBounds = boundItem(mark, bound);\n mark.items.forEach(function(item) {\n item.bounds.clear().union(markBounds);\n });\n }\n\n else if (type === Group || _.modified()) {\n // operator parameters modified -> re-bound all items\n // updates group bounds in response to modified group content\n pulse.visit(pulse.MOD, function(item) { view.dirty(item); });\n markBounds.clear();\n mark.items.forEach(function(item) {\n markBounds.union(boundItem(item, bound));\n });\n\n // force reflow for legends to propagate any layout changes\n // suppress other types to prevent overall layout jumpiness\n if (mark.role === LegendRole) pulse.reflow();\n }\n\n else {\n // incrementally update bounds, re-bound mark as needed\n rebound = pulse.changed(pulse.REM);\n\n pulse.visit(pulse.ADD, function(item) {\n markBounds.union(boundItem(item, bound));\n });\n\n pulse.visit(pulse.MOD, function(item) {\n rebound = rebound || markBounds.alignsWith(item.bounds);\n view.dirty(item);\n markBounds.union(boundItem(item, bound));\n });\n\n if (rebound) {\n markBounds.clear();\n mark.items.forEach(function(item) { markBounds.union(item.bounds); });\n }\n }\n\n // ensure mark bounds do not exceed any clipping region\n boundClip(mark);\n\n return pulse.modifies('bounds');\n};\n\nfunction boundItem(item, bound, opt) {\n return bound(item.bounds.clear(), item, opt);\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\nvar COUNTER_NAME = ':vega_identifier:';\n\n/**\n * Adds a unique identifier to all added tuples.\n * This transform creates a new signal that serves as an id counter.\n * As a result, the id counter is shared across all instances of this\n * transform, generating unique ids across multiple data streams. In\n * addition, this signal value can be included in a snapshot of the\n * dataflow state, enabling correct resumption of id allocation.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.as - The field name for the generated identifier.\n */\nexport default function Identifier(params) {\n Transform.call(this, 0, params);\n}\n\nIdentifier.Definition = {\n \"type\": \"Identifier\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"as\", \"type\": \"string\", \"required\": true }\n ]\n};\n\nvar prototype = inherits(Identifier, Transform);\n\nprototype.transform = function(_, pulse) {\n var counter = getCounter(pulse.dataflow),\n id = counter.value,\n as = _.as;\n\n pulse.visit(pulse.ADD, function(t) {\n if (!t[as]) t[as] = ++id;\n });\n\n counter.set(this.value = id);\n return pulse;\n};\n\nfunction getCounter(view) {\n var counter = view._signals[COUNTER_NAME];\n if (!counter) {\n view._signals[COUNTER_NAME] = (counter = view.add(0));\n }\n return counter;\n}\n","import {Group} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {Item, GroupItem} from 'vega-scenegraph';\nimport {inherits} from 'vega-util';\n\n/**\n * Bind scenegraph items to a scenegraph mark instance.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.markdef - The mark definition for creating the mark.\n * This is an object of legal scenegraph mark properties which *must* include\n * the 'marktype' property.\n */\nexport default function Mark(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Mark, Transform);\n\nprototype.transform = function(_, pulse) {\n var mark = this.value;\n\n // acquire mark on first invocation, bind context and group\n if (!mark) {\n mark = pulse.dataflow.scenegraph().mark(_.markdef, lookup(_), _.index);\n mark.group.context = _.context;\n if (!_.context.group) _.context.group = mark.group;\n mark.source = this;\n mark.clip = _.clip;\n mark.interactive = _.interactive;\n this.value = mark;\n }\n\n // initialize entering items\n var Init = mark.marktype === Group ? GroupItem : Item;\n pulse.visit(pulse.ADD, function(item) { Init.call(item, mark); });\n\n // update clipping and/or interactive status\n if (_.modified('clip') || _.modified('interactive')) {\n mark.clip = _.clip;\n mark.interactive = !!_.interactive;\n mark.zdirty = true; // force scenegraph re-eval\n pulse.reflow();\n }\n\n // bind items array to scenegraph mark\n mark.items = pulse.source;\n return pulse;\n};\n\nfunction lookup(_) {\n var g = _.groups, p = _.parent;\n return g && g.size === 1 ? g.get(Object.keys(g.object)[0])\n : g && p ? g.lookup(p)\n : null;\n}\n","import {Top, Bottom} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {Bounds} from 'vega-scenegraph';\nimport {inherits, peek} from 'vega-util';\n\n/**\n * Analyze items for overlap, changing opacity to hide items with\n * overlapping bounding boxes. This transform will preserve at least\n * two items (e.g., first and last) even if overlap persists.\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting items.\n * @param {object} [params.method] - The overlap removal method to apply.\n * One of 'parity' (default, hide every other item until there is no\n * more overlap) or 'greedy' (sequentially scan and hide and items that\n * overlap with the last visible item).\n * @param {object} [params.boundScale] - A scale whose range should be used\n * to bound the items. Items exceeding the bounds of the scale range\n * will be treated as overlapping. If null or undefined, no bounds check\n * will be applied.\n * @param {object} [params.boundOrient] - The orientation of the scale\n * (top, bottom, left, or right) used to bound items. This parameter is\n * ignored if boundScale is null or undefined.\n * @param {object} [params.boundTolerance] - The tolerance in pixels for\n * bound inclusion testing (default 1). This specifies by how many pixels\n * an item's bounds may exceed the scale range bounds and not be culled.\n * @constructor\n */\nexport default function Overlap(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Overlap, Transform);\n\nvar methods = {\n parity: function(items) {\n return items.filter((item, i) => i % 2 ? (item.opacity = 0) : 1);\n },\n greedy: function(items, sep) {\n var a;\n return items.filter((b, i) => {\n if (!i || !intersect(a.bounds, b.bounds, sep)) {\n a = b;\n return 1;\n } else {\n return b.opacity = 0;\n }\n });\n }\n};\n\n// compute bounding box intersection\n// including padding pixels of separation\nfunction intersect(a, b, sep) {\n return sep > Math.max(\n b.x1 - a.x2,\n a.x1 - b.x2,\n b.y1 - a.y2,\n a.y1 - b.y2\n );\n}\n\nfunction hasOverlap(items, pad) {\n for (var i=1, n=items.length, a=items[0].bounds, b; i<n; a=b, ++i) {\n if (intersect(a, b = items[i].bounds, pad)) return true;\n }\n}\n\nfunction hasBounds(item) {\n var b = item.bounds;\n return b.width() > 1 && b.height() > 1;\n}\n\nfunction boundTest(scale, orient, tolerance) {\n var range = scale.range(),\n b = new Bounds();\n\n if (orient === Top || orient === Bottom) {\n b.set(range[0], -Infinity, range[1], +Infinity);\n } else {\n b.set(-Infinity, range[0], +Infinity, range[1]);\n }\n b.expand(tolerance || 1);\n\n return item => b.encloses(item.bounds);\n}\n\n// reset all items to be fully opaque\nfunction reset(source) {\n source.forEach(item => item.opacity = 1);\n return source;\n}\n\n// add all tuples to mod, fork pulse if parameters were modified\n// fork prevents cross-stream tuple pollution (e.g., pulse from scale)\nfunction reflow(pulse, _) {\n return pulse.reflow(_.modified()).modifies('opacity');\n}\n\nprototype.transform = function(_, pulse) {\n var reduce = methods[_.method] || methods.parity,\n source = pulse.materialize(pulse.SOURCE).source,\n sep = _.separation || 0,\n items, test, bounds;\n\n if (!source || !source.length) return;\n\n if (!_.method) {\n // early exit if method is falsy\n if (_.modified('method')) {\n reset(source);\n pulse = reflow(pulse, _);\n }\n return pulse;\n }\n\n if (_.sort) {\n source = source.slice().sort(_.sort);\n }\n\n // skip labels with no content\n source = source.filter(hasBounds);\n\n items = reset(source);\n pulse = reflow(pulse, _);\n\n if (items.length >= 3 && hasOverlap(items, sep)) {\n do {\n items = reduce(items, sep);\n } while (items.length >= 3 && hasOverlap(items, sep));\n\n if (items.length < 3 && !peek(source).opacity) {\n if (items.length > 1) peek(items).opacity = 0;\n peek(source).opacity = 1;\n }\n }\n\n if (_.boundScale && _.boundTolerance >= 0) {\n test = boundTest(_.boundScale, _.boundOrient, +_.boundTolerance);\n source.forEach(item => {\n if (!test(item)) item.opacity = 0;\n });\n }\n\n // re-calculate mark bounds\n bounds = items[0].mark.bounds.clear();\n source.forEach(item => {\n if (item.opacity) bounds.union(item.bounds);\n });\n\n return pulse;\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Queue modified scenegraph items for rendering.\n * @constructor\n */\nexport default function Render(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Render, Transform);\n\nprototype.transform = function(_, pulse) {\n var view = pulse.dataflow;\n\n pulse.visit(pulse.ALL, function(item) { view.dirty(item); });\n\n // set z-index dirty flag as needed\n if (pulse.fields && pulse.fields['zindex']) {\n var item = pulse.source && pulse.source[0];\n if (item) item.mark.zdirty = true;\n }\n};\n","import {Bounds} from 'vega-scenegraph';\n\nexport const tempBounds = new Bounds();\n\nexport function set(item, property, value) {\n return item[property] === value ? 0\n : (item[property] = value, 1);\n}","import {Top, Bottom, Left, Right} from '../constants';\nimport {set, tempBounds} from './util';\nimport {boundStroke} from 'vega-scenegraph';\n\nconst AxisOffset = 0.5;\n\nexport function isYAxis(mark) {\n var orient = mark.items[0].datum.orient;\n return orient === Left || orient === Right;\n}\n\nfunction axisIndices(datum) {\n var index = +datum.grid;\n return [\n datum.ticks ? index++ : -1, // ticks index\n datum.labels ? index++ : -1, // labels index\n index + (+datum.domain) // title index\n ];\n}\n\nexport function axisLayout(view, axis, width, height) {\n var item = axis.items[0],\n datum = item.datum,\n orient = datum.orient,\n indices = axisIndices(datum),\n range = item.range,\n offset = item.offset,\n position = item.position,\n minExtent = item.minExtent,\n maxExtent = item.maxExtent,\n title = datum.title && item.items[indices[2]].items[0],\n titlePadding = item.titlePadding,\n bounds = item.bounds,\n x = 0, y = 0, i, s;\n\n tempBounds.clear().union(bounds);\n bounds.clear();\n if ((i=indices[0]) > -1) bounds.union(item.items[i].bounds);\n if ((i=indices[1]) > -1) bounds.union(item.items[i].bounds);\n\n // position axis group and title\n switch (orient) {\n case Top:\n x = position || 0;\n y = -offset;\n s = Math.max(minExtent, Math.min(maxExtent, -bounds.y1));\n if (title) s = axisTitleLayout(title, s, titlePadding, 0, -1, bounds);\n bounds.add(0, -s).add(range, 0);\n break;\n case Left:\n x = -offset;\n y = position || 0;\n s = Math.max(minExtent, Math.min(maxExtent, -bounds.x1));\n if (title) s = axisTitleLayout(title, s, titlePadding, 1, -1, bounds);\n bounds.add(-s, 0).add(0, range);\n break;\n case Right:\n x = width + offset;\n y = position || 0;\n s = Math.max(minExtent, Math.min(maxExtent, bounds.x2));\n if (title) s = axisTitleLayout(title, s, titlePadding, 1, 1, bounds);\n bounds.add(0, 0).add(s, range);\n break;\n case Bottom:\n x = position || 0;\n y = height + offset;\n s = Math.max(minExtent, Math.min(maxExtent, bounds.y2));\n if (title) s = axisTitleLayout(title, s, titlePadding, 0, 1, bounds);\n bounds.add(0, 0).add(range, s);\n break;\n default:\n x = item.x;\n y = item.y;\n }\n\n // update bounds\n boundStroke(bounds.translate(x, y), item);\n\n if (set(item, 'x', x + AxisOffset) | set(item, 'y', y + AxisOffset)) {\n item.bounds = tempBounds;\n view.dirty(item);\n item.bounds = bounds;\n view.dirty(item);\n }\n\n return item.mark.bounds.clear().union(bounds);\n}\n\nfunction axisTitleLayout(title, offset, pad, isYAxis, sign, bounds) {\n var b = title.bounds, dx = 0, dy = 0;\n\n if (title.auto) {\n offset += pad;\n\n isYAxis\n ? dx = (title.x || 0) - (title.x = sign * offset)\n : dy = (title.y || 0) - (title.y = sign * offset);\n\n b.translate(-dx, -dy);\n title.mark.bounds.set(b.x1, b.y1, b.x2, b.y2);\n\n if (isYAxis) {\n bounds.add(0, b.y1).add(0, b.y2);\n offset += b.width();\n } else {\n bounds.add(b.x1, 0).add(b.x2, 0);\n offset += b.height();\n }\n } else {\n bounds.union(b);\n }\n\n return offset;\n}\n","import {\n All, Each, Flush, Column, X, Y, Row, Middle, End,\n Group, AxisRole, LegendRole,\n RowHeader, RowFooter, RowTitle,\n ColHeader, ColFooter, ColTitle\n} from '../constants';\nimport {tempBounds} from './util';\nimport {Bounds} from 'vega-scenegraph';\nimport {isObject} from 'vega-util';\n\nfunction gridLayoutGroups(group) {\n var groups = group.items,\n n = groups.length,\n i = 0, mark, items;\n\n var views = {\n marks: [],\n rowheaders: [],\n rowfooters: [],\n colheaders: [],\n colfooters: [],\n rowtitle: null,\n coltitle: null\n };\n\n // layout axes, gather legends, collect bounds\n for (; i<n; ++i) {\n mark = groups[i];\n items = mark.items;\n if (mark.marktype === Group) {\n switch (mark.role) {\n case AxisRole:\n case LegendRole:\n break;\n case RowHeader: views.rowheaders.push(...items); break;\n case RowFooter: views.rowfooters.push(...items); break;\n case ColHeader: views.colheaders.push(...items); break;\n case ColFooter: views.colfooters.push(...items); break;\n case RowTitle: views.rowtitle = items[0]; break;\n case ColTitle: views.coltitle = items[0]; break;\n default: views.marks.push(...items);\n }\n }\n }\n\n return views;\n}\n\nfunction bboxFlush(item) {\n return new Bounds().set(0, 0, item.width || 0, item.height || 0);\n}\n\nfunction bboxFull(item) {\n var b = item.bounds.clone();\n return b.empty()\n ? b.set(0, 0, 0, 0)\n : b.translate(-(item.x || 0), -(item.y || 0));\n}\n\nfunction get(opt, key, d) {\n var v = isObject(opt) ? opt[key] : opt;\n return v != null ? v : (d !== undefined ? d : 0);\n}\n\nfunction offsetValue(v) {\n return v < 0 ? Math.ceil(-v) : 0;\n}\n\nexport function gridLayout(view, groups, opt) {\n var dirty = !opt.nodirty,\n bbox = opt.bounds === Flush ? bboxFlush : bboxFull,\n bounds = tempBounds.set(0, 0, 0, 0),\n alignCol = get(opt.align, Column),\n alignRow = get(opt.align, Row),\n padCol = get(opt.padding, Column),\n padRow = get(opt.padding, Row),\n ncols = opt.columns || groups.length,\n nrows = ncols < 0 ? 1 : Math.ceil(groups.length / ncols),\n n = groups.length,\n xOffset = Array(n), xExtent = Array(ncols), xMax = 0,\n yOffset = Array(n), yExtent = Array(nrows), yMax = 0,\n dx = Array(n), dy = Array(n), boxes = Array(n),\n m, i, c, r, b, g, px, py, x, y, offset;\n\n for (i=0; i<ncols; ++i) xExtent[i] = 0;\n for (i=0; i<nrows; ++i) yExtent[i] = 0;\n\n // determine offsets for each group\n for (i=0; i<n; ++i) {\n g = groups[i];\n b = boxes[i] = bbox(g);\n g.x = g.x || 0; dx[i] = 0;\n g.y = g.y || 0; dy[i] = 0;\n c = i % ncols;\n r = ~~(i / ncols);\n xMax = Math.max(xMax, px = Math.ceil(b.x2));\n yMax = Math.max(yMax, py = Math.ceil(b.y2));\n xExtent[c] = Math.max(xExtent[c], px);\n yExtent[r] = Math.max(yExtent[r], py);\n xOffset[i] = padCol + offsetValue(b.x1);\n yOffset[i] = padRow + offsetValue(b.y1);\n if (dirty) view.dirty(groups[i]);\n }\n\n // set initial alignment offsets\n for (i=0; i<n; ++i) {\n if (i % ncols === 0) xOffset[i] = 0;\n if (i < ncols) yOffset[i] = 0;\n }\n\n // enforce column alignment constraints\n if (alignCol === Each) {\n for (c=1; c<ncols; ++c) {\n for (offset=0, i=c; i<n; i += ncols) {\n if (offset < xOffset[i]) offset = xOffset[i];\n }\n for (i=c; i<n; i += ncols) {\n xOffset[i] = offset + xExtent[c-1];\n }\n }\n } else if (alignCol === All) {\n for (offset=0, i=0; i<n; ++i) {\n if (i % ncols && offset < xOffset[i]) offset = xOffset[i];\n }\n for (i=0; i<n; ++i) {\n if (i % ncols) xOffset[i] = offset + xMax;\n }\n } else {\n for (alignCol=false, c=1; c<ncols; ++c) {\n for (i=c; i<n; i += ncols) {\n xOffset[i] += xExtent[c-1];\n }\n }\n }\n\n // enforce row alignment constraints\n if (alignRow === Each) {\n for (r=1; r<nrows; ++r) {\n for (offset=0, i=r*ncols, m=i+ncols; i<m; ++i) {\n if (offset < yOffset[i]) offset = yOffset[i];\n }\n for (i=r*ncols; i<m; ++i) {\n yOffset[i] = offset + yExtent[r-1];\n }\n }\n } else if (alignRow === All) {\n for (offset=0, i=ncols; i<n; ++i) {\n if (offset < yOffset[i]) offset = yOffset[i];\n }\n for (i=ncols; i<n; ++i) {\n yOffset[i] = offset + yMax;\n }\n } else {\n for (alignRow=false, r=1; r<nrows; ++r) {\n for (i=r*ncols, m=i+ncols; i<m; ++i) {\n yOffset[i] += yExtent[r-1];\n }\n }\n }\n\n // perform horizontal grid layout\n for (x=0, i=0; i<n; ++i) {\n x = xOffset[i] + (i % ncols ? x : 0);\n dx[i] += x - groups[i].x;\n }\n\n // perform vertical grid layout\n for (c=0; c<ncols; ++c) {\n for (y=0, i=c; i<n; i += ncols) {\n y += yOffset[i];\n dy[i] += y - groups[i].y;\n }\n }\n\n // perform horizontal centering\n if (alignCol && get(opt.center, Column) && nrows > 1) {\n for (i=0; i<n; ++i) {\n b = alignCol === All ? xMax : xExtent[i % ncols];\n x = b - boxes[i].x2 - groups[i].x - dx[i];\n if (x > 0) dx[i] += x / 2;\n }\n }\n\n // perform vertical centering\n if (alignRow && get(opt.center, Row) && ncols !== 1) {\n for (i=0; i<n; ++i) {\n b = alignRow === All ? yMax : yExtent[~~(i / ncols)];\n y = b - boxes[i].y2 - groups[i].y - dy[i];\n if (y > 0) dy[i] += y / 2;\n }\n }\n\n // position grid relative to anchor\n for (i=0; i<n; ++i) {\n bounds.union(boxes[i].translate(dx[i], dy[i]));\n }\n x = get(opt.anchor, X);\n y = get(opt.anchor, Y);\n switch (get(opt.anchor, Column)) {\n case End: x -= bounds.width(); break;\n case Middle: x -= bounds.width() / 2;\n }\n switch (get(opt.anchor, Row)) {\n case End: y -= bounds.height(); break;\n case Middle: y -= bounds.height() / 2;\n }\n x = Math.round(x);\n y = Math.round(y);\n\n // update mark positions, bounds, dirty\n bounds.clear();\n for (i=0; i<n; ++i) {\n groups[i].mark.bounds.clear();\n }\n for (i=0; i<n; ++i) {\n g = groups[i];\n g.x += (dx[i] += x);\n g.y += (dy[i] += y);\n bounds.union(g.mark.bounds.union(g.bounds.translate(dx[i], dy[i])));\n if (dirty) view.dirty(g);\n }\n\n return bounds;\n}\n\nexport function trellisLayout(view, group, opt) {\n var views = gridLayoutGroups(group),\n groups = views.marks,\n bbox = opt.bounds === Flush ? boundFlush : boundFull,\n off = opt.offset,\n ncols = opt.columns || groups.length,\n nrows = ncols < 0 ? 1 : Math.ceil(groups.length / ncols),\n cells = nrows * ncols,\n x, y, x2, y2, anchor, band, offset;\n\n // -- initial grid layout\n const bounds = gridLayout(view, groups, opt);\n\n // -- layout grid headers and footers --\n\n // perform row header layout\n if (views.rowheaders) {\n band = get(opt.headerBand, Row, null);\n x = layoutHeaders(view, views.rowheaders, groups, ncols, nrows, -get(off, 'rowHeader'), min, 0, bbox, 'x1', 0, ncols, 1, band);\n }\n\n // perform column header layout\n if (views.colheaders) {\n band = get(opt.headerBand, Column, null);\n y = layoutHeaders(view, views.colheaders, groups, ncols, ncols, -get(off, 'columnHeader'), min, 1, bbox, 'y1', 0, 1, ncols, band);\n }\n\n // perform row footer layout\n if (views.rowfooters) {\n band = get(opt.footerBand, Row, null);\n x2 = layoutHeaders(view, views.rowfooters, groups, ncols, nrows, get(off, 'rowFooter'), max, 0, bbox, 'x2', ncols-1, ncols, 1, band);\n }\n\n // perform column footer layout\n if (views.colfooters) {\n band = get(opt.footerBand, Column, null);\n y2 = layoutHeaders(view, views.colfooters, groups, ncols, ncols, get(off, 'columnFooter'), max, 1, bbox, 'y2', cells-ncols, 1, ncols, band);\n }\n\n // perform row title layout\n if (views.rowtitle) {\n anchor = get(opt.titleAnchor, Row);\n offset = get(off, 'rowTitle');\n offset = anchor === End ? x2 + offset : x - offset;\n band = get(opt.titleBand, Row, 0.5);\n layoutTitle(view, views.rowtitle, offset, 0, bounds, band);\n }\n\n // perform column title layout\n if (views.coltitle) {\n anchor = get(opt.titleAnchor, Column);\n offset = get(off, 'columnTitle');\n offset = anchor === End ? y2 + offset : y - offset;\n band = get(opt.titleBand, Column, 0.5);\n layoutTitle(view, views.coltitle, offset, 1, bounds, band);\n }\n}\n\nfunction boundFlush(item, field) {\n return field === 'x1' ? (item.x || 0)\n : field === 'y1' ? (item.y || 0)\n : field === 'x2' ? (item.x || 0) + (item.width || 0)\n : field === 'y2' ? (item.y || 0) + (item.height || 0)\n : undefined;\n}\n\nfunction boundFull(item, field) {\n return item.bounds[field];\n}\n\n// aggregation functions for grid margin determination\nfunction min(a, b) { return Math.floor(Math.min(a, b)); }\nfunction max(a, b) { return Math.ceil(Math.max(a, b)); }\n\nfunction layoutHeaders(view, headers, groups, ncols, limit, offset, agg, isX, bound, bf, start, stride, back, band) {\n var n = groups.length,\n init = 0,\n edge = 0,\n i, j, k, m, b, h, g, x, y;\n\n // if no groups, early exit and return 0\n if (!n) return init;\n\n // compute margin\n for (i=start; i<n; i+=stride) {\n if (groups[i]) init = agg(init, bound(groups[i], bf));\n }\n\n // if no headers, return margin calculation\n if (!headers.length) return init;\n\n // check if number of headers exceeds number of rows or columns\n if (headers.length > limit) {\n view.warn('Grid headers exceed limit: ' + limit);\n headers = headers.slice(0, limit);\n }\n\n // apply offset\n init += offset;\n\n // clear mark bounds for all headers\n for (j=0, m=headers.length; j<m; ++j) {\n view.dirty(headers[j]);\n headers[j].mark.bounds.clear();\n }\n\n // layout each header\n for (i=start, j=0, m=headers.length; j<m; ++j, i+=stride) {\n h = headers[j];\n b = h.mark.bounds;\n\n // search for nearest group to align to\n // necessary if table has empty cells\n for (k=i; k >= 0 && (g = groups[k]) == null; k-=back);\n\n // assign coordinates and update bounds\n if (isX) {\n x = band == null ? g.x : Math.round(g.bounds.x1 + band * g.bounds.width());\n y = init;\n } else {\n x = init;\n y = band == null ? g.y : Math.round(g.bounds.y1 + band * g.bounds.height());\n }\n b.union(h.bounds.translate(x - (h.x || 0), y - (h.y || 0)));\n h.x = x;\n h.y = y;\n view.dirty(h);\n\n // update current edge of layout bounds\n edge = agg(edge, b[bf]);\n }\n\n return edge;\n}\n\nfunction layoutTitle(view, g, offset, isX, bounds, band) {\n if (!g) return;\n view.dirty(g);\n\n // compute title coordinates\n var x = offset, y = offset;\n isX\n ? (x = Math.round(bounds.x1 + band * bounds.width()))\n : (y = Math.round(bounds.y1 + band * bounds.height()));\n\n // assign coordinates and update bounds\n g.bounds.translate(x - (g.x || 0), y - (g.y || 0));\n g.mark.bounds.clear().union(g.bounds);\n g.x = x;\n g.y = y;\n\n // queue title for redraw\n view.dirty(g);\n}\n","import {\n Symbols, Start, Middle, End, Top, Bottom, Left, Right,\n TopLeft, TopRight, BottomLeft, BottomRight, None,\n Each, Flush\n} from '../constants';\nimport {boundStroke} from 'vega-scenegraph';\n\n// utility for looking up legend layout configuration\nfunction lookup(config, orient) {\n const opt = config[orient] || {};\n return (key, d) => opt[key] != null ? opt[key]\n : config[key] != null ? config[key]\n : d;\n}\n\n// if legends specify offset directly, use the maximum specified value\nfunction offsets(legends, value) {\n var max = -Infinity;\n legends.forEach(item => {\n if (item.offset != null) max = Math.max(max, item.offset);\n });\n return max > -Infinity ? max : value;\n}\n\nexport function legendParams(g, orient, config, xb, yb, w, h) {\n const _ = lookup(config, orient),\n offset = offsets(g, _('offset', 0)),\n anchor = _('anchor', Start),\n mult = anchor === End ? 1 : anchor === Middle ? 0.5 : 0;\n\n const p = {\n align: Each,\n bounds: _('bounds', Flush),\n columns: _('direction') === 'vertical' ? 1 : g.length,\n padding: _('margin', 8),\n center: _('center'),\n nodirty: true\n };\n\n switch (orient) {\n case Left:\n p.anchor = {\n x: Math.floor(xb.x1) - offset, column: End,\n y: mult * (h || xb.height() + 2 * xb.y1), row: anchor\n };\n break;\n case Right:\n p.anchor = {\n x: Math.ceil(xb.x2) + offset,\n y: mult * (h || xb.height() + 2 * xb.y1), row: anchor\n };\n break;\n case Top:\n p.anchor = {\n y: Math.floor(yb.y1) - offset, row: End,\n x: mult * (w || yb.width() + 2 * yb.x1), column: anchor\n };\n break;\n case Bottom:\n p.anchor = {\n y: Math.ceil(yb.y2) + offset,\n x: mult * (w || yb.width() + 2 * yb.x1), column: anchor\n };\n break;\n case TopLeft:\n p.anchor = {x: offset, y: offset};\n break;\n case TopRight:\n p.anchor = {x: w - offset, y: offset, column: End};\n break;\n case BottomLeft:\n p.anchor = {x: offset, y: h - offset, row: End};\n break;\n case BottomRight:\n p.anchor = {x: w - offset, y: h - offset, column: End, row: End};\n break;\n }\n\n return p;\n}\n\nexport function legendLayout(view, legend) {\n var item = legend.items[0],\n datum = item.datum,\n orient = item.orient,\n bounds = item.bounds,\n x = item.x, y = item.y, w, h;\n\n // cache current bounds for later comparison\n item._bounds\n ? item._bounds.clear().union(bounds)\n : item._bounds = bounds.clone();\n bounds.clear();\n\n // adjust legend to accommodate padding and title\n legendGroupLayout(view, item, item.items[0].items[0]);\n\n // aggregate bounds to determine size, and include origin\n bounds = legendBounds(item, bounds);\n w = 2 * item.padding;\n h = 2 * item.padding;\n if (!bounds.empty()) {\n w = Math.ceil(bounds.width() + w);\n h = Math.ceil(bounds.height() + h);\n }\n\n if (datum.type === Symbols) {\n legendEntryLayout(item.items[0].items[0].items[0].items);\n }\n\n if (orient !== None) {\n item.x = x = 0;\n item.y = y = 0;\n }\n item.width = w;\n item.height = h;\n boundStroke(bounds.set(x, y, x + w, y + h), item);\n item.mark.bounds.clear().union(bounds);\n\n return item;\n}\n\nfunction legendBounds(item, b) {\n // aggregate item bounds\n item.items.forEach(_ => b.union(_.bounds));\n\n // anchor to legend origin\n b.x1 = item.padding;\n b.y1 = item.padding;\n\n return b;\n}\n\nfunction legendGroupLayout(view, item, entry) {\n var pad = item.padding,\n ex = pad - entry.x,\n ey = pad - entry.y;\n\n if (!item.datum.title) {\n if (ex || ey) translate(view, entry, ex, ey);\n } else {\n var title = item.items[1].items[0],\n anchor = title.anchor,\n tpad = item.titlePadding || 0,\n tx = pad - title.x,\n ty = pad - title.y;\n\n switch (title.orient) {\n case Left:\n ex += Math.ceil(title.bounds.width()) + tpad;\n break;\n case Right:\n case Bottom:\n break;\n default:\n ey += title.fontSize + tpad;\n }\n if (ex || ey) translate(view, entry, ex, ey);\n\n switch (title.orient) {\n case Left:\n ty += legendTitleOffset(item, entry, title, anchor, 0, 1);\n break;\n case Right:\n tx += legendTitleOffset(item, entry, title, End, 1, 0) + tpad;\n ty += legendTitleOffset(item, entry, title, anchor, 0, 1);\n break;\n case Bottom:\n tx += legendTitleOffset(item, entry, title, anchor, 1, 0);\n ty += legendTitleOffset(item, entry, title, End, 0, 0, 1) + tpad;\n break;\n default:\n tx += legendTitleOffset(item, entry, title, anchor, 1, 0);\n }\n if (tx || ty) translate(view, title, tx, ty);\n\n // translate legend if title pushes into negative coordinates\n if ((tx = Math.round(title.bounds.x1 - pad)) < 0) {\n translate(view, entry, -tx, 0);\n translate(view, title, -tx, 0);\n }\n }\n}\n\nfunction legendTitleOffset(item, entry, title, anchor, x, lr, noBar) {\n const grad = item.datum.type !== 'symbol',\n vgrad = title.datum.vgrad,\n e = grad && (lr || !vgrad) && !noBar ? entry.items[0] : entry,\n s = e.bounds[x ? 'x2' : 'y2'] - item.padding,\n u = vgrad && lr ? s : 0,\n v = vgrad && lr ? 0 : s;\n\n return Math.round(anchor === Start ? u : anchor === End ? v : 0.5 * s);\n}\n\nfunction translate(view, item, dx, dy) {\n item.x += dx;\n item.y += dy;\n item.bounds.translate(dx, dy);\n item.mark.bounds.translate(dx, dy);\n view.dirty(item);\n}\n\nfunction legendEntryLayout(entries) {\n // get max widths for each column\n var widths = entries.reduce(function(w, g) {\n w[g.column] = Math.max(g.bounds.x2 - g.x, w[g.column] || 0);\n return w;\n }, {});\n\n // set dimensions of legend entry groups\n entries.forEach(function(g) {\n g.width = widths[g.column];\n g.height = g.bounds.y2 - g.y;\n });\n}\n","import {\n AxisRole, LegendRole, TitleRole, FrameRole, ScopeRole,\n RowHeader, RowFooter, RowTitle, ColHeader, ColFooter, ColTitle,\n Top, Bottom, Left, Right,\n Fit, FitX, FitY, Pad, None, Padding\n} from './constants';\n\nimport {axisLayout, isYAxis} from './layout/axis';\nimport {gridLayout, trellisLayout} from './layout/grid';\nimport {legendLayout, legendParams} from './layout/legend';\nimport {titleLayout} from './layout/title';\n\nimport {Transform} from 'vega-dataflow';\nimport {Bounds} from 'vega-scenegraph';\nimport {inherits} from 'vega-util';\n\n/**\n * Layout view elements such as axes and legends.\n * Also performs size adjustments.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - Scenegraph mark of groups to layout.\n */\nexport default function ViewLayout(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(ViewLayout, Transform);\n\nprototype.transform = function(_, pulse) {\n // TODO incremental update, output?\n var view = pulse.dataflow;\n _.mark.items.forEach(function(group) {\n if (_.layout) trellisLayout(view, group, _.layout);\n layoutGroup(view, group, _);\n });\n if (_.modified()) pulse.reflow();\n return pulse;\n};\n\nfunction layoutGroup(view, group, _) {\n var items = group.items,\n width = Math.max(0, group.width || 0),\n height = Math.max(0, group.height || 0),\n viewBounds = new Bounds().set(0, 0, width, height),\n xBounds = viewBounds.clone(),\n yBounds = viewBounds.clone(),\n legends = [], title,\n mark, orient, b, i, n;\n\n // layout axes, gather legends, collect bounds\n for (i=0, n=items.length; i<n; ++i) {\n mark = items[i];\n switch (mark.role) {\n case AxisRole:\n b = isYAxis(mark) ? xBounds : yBounds;\n b.union(axisLayout(view, mark, width, height));\n break;\n case TitleRole:\n title = mark;\n break;\n case LegendRole:\n legends.push(legendLayout(view, mark));\n break;\n case FrameRole:\n case ScopeRole:\n case RowHeader:\n case RowFooter:\n case RowTitle:\n case ColHeader:\n case ColFooter:\n case ColTitle:\n xBounds.union(mark.bounds);\n yBounds.union(mark.bounds);\n break;\n default:\n viewBounds.union(mark.bounds);\n }\n }\n\n // layout legends, adjust viewBounds\n if (legends.length) {\n // group legends by orient\n const l = {};\n legends.forEach(item => {\n orient = item.orient || Right;\n if (orient !== None) (l[orient] || (l[orient] = [])).push(item);\n });\n\n // perform grid layout for each orient group\n for (let orient in l) {\n const g = l[orient];\n gridLayout(view, g, legendParams(\n g, orient, _.legends, xBounds, yBounds, width, height\n ));\n }\n\n // update view bounds\n legends.forEach(item => {\n const b = item.bounds;\n\n if (!b.equals(item._bounds)) {\n item.bounds = item._bounds;\n view.dirty(item); // dirty previous location\n item.bounds = b;\n view.dirty(item);\n }\n\n if (_.autosize && _.autosize.type === Fit) {\n // For autosize fit, incorporate the orthogonal dimension only.\n // Legends that overrun the chart area will then be clipped;\n // otherwise the chart area gets reduced to nothing!\n switch(item.orient) {\n case Left:\n case Right:\n viewBounds.add(b.x1, 0).add(b.x2, 0);\n break;\n case Top:\n case Bottom:\n viewBounds.add(0, b.y1).add(0, b.y2);\n }\n } else {\n viewBounds.union(b);\n }\n });\n }\n\n // combine bounding boxes\n viewBounds.union(xBounds).union(yBounds);\n\n // layout title, adjust bounds\n if (title) {\n viewBounds.union(titleLayout(view, title, width, height, viewBounds));\n }\n\n // perform size adjustment\n viewSizeLayout(view, group, viewBounds, _);\n}\n\nfunction viewSizeLayout(view, group, viewBounds, _) {\n var auto = _.autosize || {},\n type = auto.type,\n viewWidth = view._width,\n viewHeight = view._height,\n padding = view.padding();\n\n if (view._autosize < 1 || !type) return;\n\n var width = Math.max(0, group.width || 0),\n left = Math.max(0, Math.ceil(-viewBounds.x1)),\n right = Math.max(0, Math.ceil(viewBounds.x2 - width)),\n height = Math.max(0, group.height || 0),\n top = Math.max(0, Math.ceil(-viewBounds.y1)),\n bottom = Math.max(0, Math.ceil(viewBounds.y2 - height));\n\n if (auto.contains === Padding) {\n viewWidth -= padding.left + padding.right;\n viewHeight -= padding.top + padding.bottom;\n }\n\n if (type === None) {\n left = 0;\n top = 0;\n width = viewWidth;\n height = viewHeight;\n }\n\n else if (type === Fit) {\n width = Math.max(0, viewWidth - left - right);\n height = Math.max(0, viewHeight - top - bottom);\n }\n\n else if (type === FitX) {\n width = Math.max(0, viewWidth - left - right);\n viewHeight = height + top + bottom;\n }\n\n else if (type === FitY) {\n viewWidth = width + left + right;\n height = Math.max(0, viewHeight - top - bottom);\n }\n\n else if (type === Pad) {\n viewWidth = width + left + right;\n viewHeight = height + top + bottom;\n }\n\n view._resizeView(\n viewWidth, viewHeight,\n width, height,\n [left, top],\n auto.resize\n );\n}\n","import {Top, Bottom, Left, Right, Start, End, Group} from '../constants';\nimport {set, tempBounds} from './util';\n\nexport function titleLayout(view, title, width, height, viewBounds) {\n var item = title.items[0],\n frame = item.frame,\n orient = item.orient,\n anchor = item.anchor,\n offset = item.offset,\n bounds = item.bounds,\n vertical = (orient === Left || orient === Right),\n start = 0,\n end = vertical ? height : width,\n x = 0, y = 0, pos;\n\n if (frame !== Group) {\n orient === Left ? (start = viewBounds.y2, end = viewBounds.y1)\n : orient === Right ? (start = viewBounds.y1, end = viewBounds.y2)\n : (start = viewBounds.x1, end = viewBounds.x2);\n } else if (orient === Left) {\n start = height, end = 0;\n }\n\n pos = (anchor === Start) ? start\n : (anchor === End) ? end\n : (start + end) / 2;\n\n tempBounds.clear().union(bounds);\n\n // position title text\n switch (orient) {\n case Top:\n x = pos;\n y = viewBounds.y1 - offset;\n break;\n case Left:\n x = viewBounds.x1 - offset;\n y = pos;\n break;\n case Right:\n x = viewBounds.x2 + offset;\n y = pos;\n break;\n case Bottom:\n x = pos;\n y = viewBounds.y2 + offset;\n break;\n default:\n x = item.x;\n y = item.y;\n }\n\n bounds.translate(x - (item.x || 0), y - (item.y || 0));\n if (set(item, 'x', x) | set(item, 'y', y)) {\n item.bounds = tempBounds;\n view.dirty(item);\n item.bounds = bounds;\n view.dirty(item);\n }\n\n // update bounds\n return title.bounds.clear().union(bounds);\n}\n","export default function(count, paddingInner, paddingOuter) {\n var space = count - paddingInner + paddingOuter * 2;\n return count ? (space > 0 ? space : 1) : 0;\n}\n","export const Identity = 'identity';\n\nexport const Linear = 'linear';\nexport const Log = 'log';\nexport const Pow = 'pow';\nexport const Sqrt = 'sqrt';\nexport const Symlog = 'symlog';\n\nexport const Time = 'time';\nexport const UTC = 'utc';\n\nexport const Sequential = 'sequential';\nexport const Diverging = 'diverging';\n\nexport const Quantile = 'quantile';\nexport const Quantize = 'quantize';\nexport const Threshold = 'threshold';\n\nexport const Ordinal = 'ordinal';\nexport const Point = 'point';\nexport const Band = 'band';\nexport const BinOrdinal = 'bin-ordinal';\n\nexport function isValidScaleType(type) {\n switch (type) {\n case Identity:\n case Linear:\n case Log:\n case Pow:\n case Sqrt:\n case Symlog:\n case Time:\n case UTC:\n case Sequential:\n case Quantile:\n case Quantize:\n case Threshold:\n case Ordinal:\n case Point:\n case Band:\n case BinOrdinal:\n return true;\n }\n return false;\n}\n\nexport function isTemporal(key) {\n return key === Time || key === UTC;\n}\n\nexport function isBinned(key) {\n return key === BinOrdinal;\n}\n\nexport function isQuantile(key) {\n return key === Quantile;\n}\n\nexport function isSequential(key) {\n return key && key.startsWith(Sequential);\n}\n\nexport function isDiverging(key) {\n return key && key.startsWith(Diverging);\n}\n\nexport function isInterpolating(key) {\n return isSequential(key) || isDiverging(key);\n}\n\nexport function isLogarithmic(key) {\n return key === Log || key.endsWith('-log');\n}\n\nexport function isContinuous(key) {\n switch (key) {\n case Linear:\n case Log:\n case Pow:\n case Sqrt:\n case Symlog:\n case Time:\n case UTC:\n case Sequential:\n return true;\n }\n return false;\n}\n\nexport function isDiscrete(key) {\n return key === BinOrdinal\n || key === Ordinal\n || key === Band\n || key === Point;\n}\n\nexport function isDiscretizing(key) {\n return key === BinOrdinal\n || key === Quantile\n || key === Quantize\n || key === Threshold;\n}\n","import {UTC} from './types';\n\nimport {\n timeMillisecond, utcMillisecond,\n timeSecond, utcSecond,\n timeMinute, utcMinute,\n timeHour, utcHour,\n timeDay, utcDay,\n timeWeek, utcWeek,\n timeMonth, utcMonth,\n timeYear, utcYear\n} from 'd3-time';\n\nvar time = {\n millisecond: timeMillisecond,\n second: timeSecond,\n minute: timeMinute,\n hour: timeHour,\n day: timeDay,\n week: timeWeek,\n month: timeMonth,\n year: timeYear\n};\n\nvar utc = {\n millisecond: utcMillisecond,\n second: utcSecond,\n minute: utcMinute,\n hour: utcHour,\n day: utcDay,\n week: utcWeek,\n month: utcMonth,\n year: utcYear\n}\n\nexport function timeInterval(unit, type) {\n const t = (type === UTC ? utc : time);\n return t.hasOwnProperty(unit) && t[unit];\n}\n","export default function(scale) {\n return function(_) {\n var lo = _[0],\n hi = _[1],\n t;\n\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n\n return [\n scale.invert(lo),\n scale.invert(hi)\n ];\n }\n}\n","export default function(scale) {\n return function(_) {\n var range = scale.range(),\n lo = _[0],\n hi = _[1],\n min = -1, max, t, i, n;\n\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n\n for (i=0, n=range.length; i<n; ++i) {\n if (range[i] >= lo && range[i] <= hi) {\n if (min < 0) min = i;\n max = i;\n }\n }\n\n if (min < 0) return undefined;\n\n lo = scale.invertExtent(range[min]);\n hi = scale.invertExtent(range[max]);\n\n return [\n lo[0] === undefined ? lo[1] : lo[0],\n hi[1] === undefined ? hi[0] : hi[1]\n ];\n }\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","import {initRange} from \"./init\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new Map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new Map();\n for (const value of _) {\n const key = value + \"\";\n if (index.has(key)) continue;\n index.set(key, domain.push(value));\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: function() {\n return this.rgb().hex();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format])\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (0 <= this.r && this.r <= 255)\n && (0 <= this.g && this.g <= 255)\n && (0 <= this.b && this.b <= 255)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: function() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n },\n toString: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://beta.observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return labConvert(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value\";\n\nexport default function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import decompose, {identity} from \"./decompose\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number\";\nimport {parseCss, parseSvg} from \"./parse\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","import bandSpace from './bandSpace';\nimport {range as sequence, bisectRight} from 'd3-array';\nimport {scaleOrdinal as ordinal} from 'd3-scale';\n\nexport function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse],\n space = bandSpace(n, paddingInner, paddingOuter);\n\n step = (stop - start) / (space || 1);\n if (round) {\n step = Math.floor(step);\n }\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) {\n start = Math.round(start);\n bandwidth = Math.round(bandwidth);\n }\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n if (arguments.length) {\n domain(_);\n return rescale();\n } else {\n return domain();\n }\n };\n\n scale.range = function(_) {\n if (arguments.length) {\n range = [+_[0], +_[1]];\n return rescale();\n } else {\n return range.slice();\n }\n };\n\n scale.rangeRound = function(_) {\n range = [+_[0], +_[1]];\n round = true;\n return rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n if (arguments.length) {\n round = !!_;\n return rescale();\n } else {\n return round;\n }\n };\n\n scale.padding = function(_) {\n if (arguments.length) {\n paddingOuter = Math.max(0, Math.min(1, _));\n paddingInner = paddingOuter;\n return rescale();\n } else {\n return paddingInner;\n }\n };\n\n scale.paddingInner = function(_) {\n if (arguments.length) {\n paddingInner = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return paddingInner;\n }\n };\n\n scale.paddingOuter = function(_) {\n if (arguments.length) {\n paddingOuter = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return paddingOuter;\n }\n };\n\n scale.align = function(_) {\n if (arguments.length) {\n align = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return align;\n }\n };\n\n scale.invertRange = function(_) {\n // bail if range has null or undefined values\n if (_[0] == null || _[1] == null) return;\n\n var lo = +_[0],\n hi = +_[1],\n reverse = range[1] < range[0],\n values = reverse ? ordinalRange().reverse() : ordinalRange(),\n n = values.length - 1, a, b, t;\n\n // bail if either range endpoint is invalid\n if (lo !== lo || hi !== hi) return;\n\n // order range inputs, bail if outside of scale range\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n if (hi < values[0] || lo > range[1-reverse]) return;\n\n // binary search to index into scale range\n a = Math.max(0, bisectRight(values, lo) - 1);\n b = lo===hi ? a : bisectRight(values, hi) - 1;\n\n // increment index a if lo is within padding gap\n if (lo - values[a] > bandwidth + 1e-10) ++a;\n\n if (reverse) {\n // map + swap\n t = a;\n a = n - b;\n b = n - t;\n }\n return (a > b) ? undefined : domain().slice(a, b+1);\n };\n\n scale.invert = function(_) {\n var value = scale.invertRange([_, _]);\n return value ? value[0] : value;\n };\n\n scale.copy = function() {\n return band()\n .domain(domain())\n .range(range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return rescale();\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band().paddingInner(1));\n}\n","var map = Array.prototype.map;\n\nexport function numbers(_) {\n return map.call(_, function(x) { return +x; });\n}\n","export var slice = Array.prototype.slice;\n","import invertRange from './scales/invertRange';\nimport invertRangeExtent from './scales/invertRangeExtent';\n\nimport {\n Identity,\n Linear, Log, Pow, Sqrt, Symlog,\n Time, UTC, Sequential, Diverging,\n Quantile, Quantize, Threshold,\n BinOrdinal, Ordinal, Band, Point\n} from './scales/types';\n\nimport {\n band as scaleBand,\n point as scalePoint\n} from './scales/scaleBand';\n\nimport {\n scaleBinOrdinal\n} from './scales/scaleBinOrdinal';\n\nimport * as $ from 'd3-scale';\n\n/**\n * Augment scales with their type and needed inverse methods.\n */\nfunction create(type, constructor) {\n return function scale() {\n var s = constructor();\n\n if (!s.invertRange) {\n s.invertRange = s.invert ? invertRange(s)\n : s.invertExtent ? invertRangeExtent(s)\n : undefined;\n }\n\n s.type = type;\n return s;\n };\n}\n\nexport default function scale(type, scale) {\n if (arguments.length > 1) {\n scales[type] = create(type, scale);\n return this;\n } else {\n return scales.hasOwnProperty(type) ? scales[type] : undefined;\n }\n}\n\nvar scales = {\n // identity scale\n [Identity]: $.scaleIdentity,\n\n // continuous scales\n [Linear]: $.scaleLinear,\n [Log]: $.scaleLog,\n [Pow]: $.scalePow,\n [Sqrt]: $.scaleSqrt,\n [Symlog]: $.scaleSymlog,\n [Time]: $.scaleTime,\n [UTC]: $.scaleUtc,\n\n // sequential scales\n [Sequential]: $.scaleSequential, // backwards compat\n [Sequential+'-'+Linear]: $.scaleSequential,\n [Sequential+'-'+Log]: $.scaleSequentialLog,\n [Sequential+'-'+Pow]: $.scaleSequentialPow,\n [Sequential+'-'+Sqrt]: $.scaleSequentialSqrt,\n [Sequential+'-'+Symlog]: $.scaleSequentialSymlog,\n\n // diverging scales\n [Diverging+'-'+Linear]: $.scaleDiverging,\n [Diverging+'-'+Log]: $.scaleDivergingLog,\n [Diverging+'-'+Pow]: $.scaleDivergingPow,\n [Diverging+'-'+Sqrt]: $.scaleDivergingSqrt,\n [Diverging+'-'+Symlog]: $.scaleDivergingSymlog,\n\n // discretizing scales\n [Quantile]: $.scaleQuantile,\n [Quantize]: $.scaleQuantize,\n [Threshold]: $.scaleThreshold,\n\n // discrete scales\n [BinOrdinal]: scaleBinOrdinal,\n [Ordinal]: $.scaleOrdinal,\n [Band]: scaleBand,\n [Point]: scalePoint\n};\n\nfor (var key in scales) {\n scale(key, scales[key]);\n}\n","import {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from 'd3-array';\nimport {tickFormat} from 'd3-scale';\nimport {peek} from 'vega-util';\nimport {numbers} from './numbers';\nimport {slice} from './slice';\n\nexport function scaleBinOrdinal() {\n var domain = [],\n range = [];\n\n function scale(x) {\n return x == null || x !== x\n ? undefined\n : range[(bisect(domain, x) - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (arguments.length) {\n domain = numbers(_);\n return scale;\n } else {\n return domain.slice();\n }\n };\n\n scale.range = function(_) {\n if (arguments.length) {\n range = slice.call(_);\n return scale;\n } else {\n return range.slice();\n }\n };\n\n scale.tickFormat = function(count, specifier) {\n return tickFormat(domain[0], peek(domain), count == null ? 10 : count, specifier);\n };\n\n scale.copy = function() {\n return scaleBinOrdinal().domain(scale.domain()).range(scale.range());\n };\n\n return scale;\n}","import getScale from './scales';\nimport {constant, peek} from 'vega-util';\nimport * as $ from 'd3-interpolate';\n\nconst scaleProps = ['clamp', 'base', 'constant', 'exponent'];\n\nexport function interpolateRange(interpolator, range) {\n var start = range[0],\n span = peek(range) - start;\n return function(i) { return interpolator(start + i * span); };\n}\n\nexport function interpolateColors(colors, type, gamma) {\n return $.piecewise(interpolate(type || 'rgb', gamma), colors);\n}\n\nexport function quantizeInterpolator(interpolator, count) {\n var samples = new Array(count),\n n = count + 1;\n for (var i = 0; i < count;) samples[i] = interpolator(++i / n);\n return samples;\n}\n\nexport function scaleCopy(scale) {\n const t = scale.type,\n s = scale.copy();\n s.type = t;\n return s;\n}\n\nexport function scaleFraction(scale, min, max) {\n var delta = max - min, i, t, s;\n\n if (!delta || !isFinite(delta)) {\n return constant(0.5);\n } else {\n i = (t = scale.type).indexOf('-');\n t = i < 0 ? t : t.slice(i + 1);\n s = getScale(t)().domain([min, max]).range([0, 1]);\n scaleProps.forEach(m => scale[m] ? s[m](scale[m]()) : 0);\n return s;\n }\n}\n\nexport function interpolate(type, gamma) {\n var interp = $[method(type)];\n return (gamma != null && interp && interp.gamma)\n ? interp.gamma(gamma)\n : interp;\n}\n\nfunction method(type) {\n return 'interpolate' + type.toLowerCase()\n .split('-')\n .map(function(s) { return s[0].toUpperCase() + s.slice(1); })\n .join('');\n}\n","import {discrete, continuous} from './palettes';\nimport {interpolateColors} from './interpolate';\n\nfunction colors(palette) {\n var n = palette.length / 6 | 0, c = new Array(n), i = 0;\n while (i < n) c[i] = '#' + palette.slice(i * 6, ++i * 6);\n return c;\n}\n\nfunction apply(_, f) {\n for (let k in _) scheme(k, f(_[k]));\n}\n\nconst schemes = {};\napply(discrete, colors);\napply(continuous, _ => interpolateColors(colors(_)));\n\nexport function scheme(name, scheme) {\n name = name && name.toLowerCase();\n if (arguments.length > 1) {\n schemes[name] = scheme;\n return this;\n } else {\n return schemes[name];\n }\n}\n","import {isLogarithmic, timeInterval, Time} from 'vega-scale';\nimport {error, isNumber, isObject, isString, peek, span} from 'vega-util';\nimport {timeFormat} from 'd3-time-format';\nimport {\n format as numberFormat,\n formatSpecifier\n} from 'd3-format';\n\n/**\n * Determine the tick count or interval function.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} count - The desired tick count or interval specifier.\n * @param {number} minStep - The desired minimum step between tick values.\n * @return {*} - The tick count or interval function.\n */\nexport function tickCount(scale, count, minStep) {\n var step;\n\n if (isNumber(count) && minStep != null) {\n count = Math.min(count, ~~(span(scale.domain()) / minStep) || 1);\n }\n\n if (isObject(count)) {\n step = count.step;\n count = count.interval;\n }\n\n if (isString(count)) {\n count = timeInterval(count, scale.type)\n || error('Only time and utc scales accept interval strings.');\n if (step) count = count.every(step);\n }\n\n return count;\n}\n\n/**\n * Filter a set of candidate tick values, ensuring that only tick values\n * that lie within the scale range are included.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {Array<*>} ticks - The candidate tick values.\n * @param {*} count - The tick count or interval function.\n * @return {Array<*>} - The filtered tick values.\n */\nexport function validTicks(scale, ticks, count) {\n var range = scale.range(),\n lo = Math.floor(range[0]),\n hi = Math.ceil(peek(range));\n\n if (lo > hi) {\n range = hi;\n hi = lo;\n lo = range;\n }\n\n ticks = ticks.filter(function(v) {\n v = scale(v);\n return lo <= v && v <= hi;\n });\n\n if (count > 0 && ticks.length > 1) {\n var endpoints = [ticks[0], peek(ticks)];\n while (ticks.length > count && ticks.length >= 3) {\n ticks = ticks.filter(function(_, i) { return !(i % 2); });\n }\n if (ticks.length < 3) {\n ticks = endpoints;\n }\n }\n\n return ticks;\n}\n\n/**\n * Generate tick values for the given scale and approximate tick count or\n * interval value. If the scale has a 'ticks' method, it will be used to\n * generate the ticks, with the count argument passed as a parameter. If the\n * scale lacks a 'ticks' method, the full scale domain will be returned.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} [count] - The approximate number of desired ticks.\n * @return {Array<*>} - The generated tick values.\n */\nexport function tickValues(scale, count) {\n return scale.bins ? validTicks(scale, binValues(scale.bins, count))\n : scale.ticks ? scale.ticks(count)\n : scale.domain();\n}\n\n/**\n * Generate tick values for an array of bin values.\n * @param {Array<*>} bins - An array of bin boundaries.\n * @param {Number} [count] - The approximate number of desired ticks.\n * @return {Array<*>} - The generated tick values.\n */\nfunction binValues(bins, count) {\n var n = bins.length,\n stride = ~~(n / (count || n));\n\n return stride < 2\n ? bins.slice()\n : bins.filter(function(x, i) { return !(i % stride); });\n}\n\n/**\n * Generate a label format function for a scale. If the scale has a\n * 'tickFormat' method, it will be used to generate the formatter, with the\n * count and specifier arguments passed as parameters. If the scale lacks a\n * 'tickFormat' method, the returned formatter performs simple string coercion.\n * If the input scale is a logarithmic scale and the format specifier does not\n * indicate a desired decimal precision, a special variable precision formatter\n * that automatically trims trailing zeroes will be generated.\n * @param {Scale} scale - The scale for which to generate the label formatter.\n * @param {*} [count] - The approximate number of desired ticks.\n * @param {string} [specifier] - The format specifier. Must be a legal d3\n * specifier string (see https://github.com/d3/d3-format#formatSpecifier).\n * @return {function(*):string} - The generated label formatter.\n */\nexport function tickFormat(scale, count, specifier, formatType) {\n var format = scale.tickFormat ? scale.tickFormat(count, specifier)\n : specifier && formatType === Time ? timeFormat(specifier)\n : specifier ? numberFormat(specifier)\n : String;\n\n if (isLogarithmic(scale.type)) {\n var logfmt = variablePrecision(specifier);\n format = scale.bins ? logfmt : filter(format, logfmt);\n }\n\n return format;\n}\n\nfunction filter(sourceFormat, targetFormat) {\n return function(_) {\n return sourceFormat(_) ? targetFormat(_) : '';\n };\n}\n\nfunction variablePrecision(specifier) {\n var s = formatSpecifier(specifier || ',');\n\n if (s.precision == null) {\n s.precision = 12;\n switch (s.type) {\n case '%': s.precision -= 2; break;\n case 'e': s.precision -= 1; break;\n }\n return trimZeroes(\n numberFormat(s), // number format\n numberFormat('.1f')(1)[1] // decimal point character\n );\n } else {\n return numberFormat(s);\n }\n}\n\nfunction trimZeroes(format, decimalChar) {\n return function(x) {\n var str = format(x),\n dec = str.indexOf(decimalChar),\n idx, end;\n\n if (dec < 0) return str;\n\n idx = rightmostDigit(str, dec);\n end = idx < str.length ? str.slice(idx) : '';\n while (--idx > dec) if (str[idx] !== '0') { ++idx; break; }\n\n return str.slice(0, idx) + end;\n };\n}\n\nfunction rightmostDigit(str, dec) {\n var i = str.lastIndexOf('e'), c;\n if (i > 0) return i;\n for (i=str.length; --i > dec;) {\n c = str.charCodeAt(i);\n if (c >= 48 && c <= 57) return i + 1; // is digit\n }\n}\n","import {tickCount, tickFormat, tickValues, validTicks} from './ticks';\nimport {Transform, ingest} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Generates axis ticks for visualizing a spatial scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate ticks for.\n * @param {*} [params.count=10] - The approximate number of ticks, or\n * desired tick interval, to use.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {function(*):string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid d3 4.0 format specifier.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nexport default function AxisTicks(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(AxisTicks, Transform);\n\nprototype.transform = function(_, pulse) {\n if (this.value && !_.modified()) {\n return pulse.StopPropagation;\n }\n\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n ticks = this.value,\n scale = _.scale,\n tally = _.count == null ? (_.values ? _.values.length : 10) : _.count,\n count = tickCount(scale, tally, _.minstep),\n format = _.format || tickFormat(scale, count, _.formatSpecifier, _.formatType),\n values = _.values ? validTicks(scale, _.values, count) : tickValues(scale, count);\n\n if (ticks) out.rem = ticks;\n\n ticks = values.map(function(value, i) {\n return ingest({\n index: i / (values.length - 1 || 1),\n value: value,\n label: format(value)\n });\n });\n\n if (_.extra && ticks.length) {\n // add an extra tick pegged to the initial domain value\n // this is used to generate axes with 'binned' domains\n ticks.push(ingest({\n index: -1,\n extra: {value: ticks[0].value},\n label: ''\n }));\n }\n\n out.source = ticks;\n out.add = ticks;\n this.value = ticks;\n\n return out;\n};\n","import {Transform, ingest, tupleid} from 'vega-dataflow';\nimport {error, fastmap, inherits, isArray} from 'vega-util';\n\n/**\n * Joins a set of data elements against a set of visual items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): object} [params.item] - An item generator function.\n * @param {function(object): *} [params.key] - The key field associating data and visual items.\n */\nexport default function DataJoin(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(DataJoin, Transform);\n\nfunction defaultItemCreate() {\n return ingest({});\n}\n\nfunction isExit(t) {\n return t.exit;\n}\n\nprototype.transform = function(_, pulse) {\n var df = pulse.dataflow,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n item = _.item || defaultItemCreate,\n key = _.key || tupleid,\n map = this.value;\n\n // prevent transient (e.g., hover) requests from\n // cascading across marks derived from marks\n if (isArray(out.encode)) {\n out.encode = null;\n }\n\n if (map && (_.modified('key') || pulse.modified(key))) {\n error('DataJoin does not support modified key function or fields.');\n }\n\n if (!map) {\n pulse = pulse.addAll();\n this.value = map = fastmap().test(isExit);\n map.lookup = function(t) { return map.get(key(t)); };\n }\n\n pulse.visit(pulse.ADD, function(t) {\n var k = key(t),\n x = map.get(k);\n\n if (x) {\n if (x.exit) {\n map.empty--;\n out.add.push(x);\n } else {\n out.mod.push(x);\n }\n } else {\n map.set(k, (x = item(t)));\n out.add.push(x);\n }\n\n x.datum = t;\n x.exit = false;\n });\n\n pulse.visit(pulse.MOD, function(t) {\n var k = key(t),\n x = map.get(k);\n\n if (x) {\n x.datum = t;\n out.mod.push(x);\n }\n });\n\n pulse.visit(pulse.REM, function(t) {\n var k = key(t),\n x = map.get(k);\n\n if (t === x.datum && !x.exit) {\n out.rem.push(x);\n x.exit = true;\n ++map.empty;\n }\n });\n\n if (pulse.changed(pulse.ADD_MOD)) out.modifies('datum');\n\n if (_.clean && map.empty > df.cleanThreshold) df.runAfter(map.clean);\n\n return out;\n};\n","import {Transform} from 'vega-dataflow';\nimport {falsy, inherits, isArray} from 'vega-util';\n\n/**\n * Invokes encoding functions for visual items.\n * @constructor\n * @param {object} params - The parameters to the encoding functions. This\n * parameter object will be passed through to all invoked encoding functions.\n * @param {object} [params.mod=false] - Flag indicating if tuples in the input\n * mod set that are unmodified by encoders should be included in the output.\n * @param {object} param.encoders - The encoding functions\n * @param {function(object, object): boolean} [param.encoders.update] - Update encoding set\n * @param {function(object, object): boolean} [param.encoders.enter] - Enter encoding set\n * @param {function(object, object): boolean} [param.encoders.exit] - Exit encoding set\n */\nexport default function Encode(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Encode, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.ADD_REM),\n fmod = _.mod || false,\n encoders = _.encoders,\n encode = pulse.encode;\n\n // if an array, the encode directive includes additional sets\n // that must be defined in order for the primary set to be invoked\n // e.g., only run the update set if the hover set is defined\n if (isArray(encode)) {\n if (out.changed() || encode.every(function(e) { return encoders[e]; })) {\n encode = encode[0];\n out.encode = null; // consume targeted encode directive\n } else {\n return pulse.StopPropagation;\n }\n }\n\n // marshall encoder functions\n var reenter = encode === 'enter',\n update = encoders.update || falsy,\n enter = encoders.enter || falsy,\n exit = encoders.exit || falsy,\n set = (encode && !reenter ? encoders[encode] : update) || falsy;\n\n if (pulse.changed(pulse.ADD)) {\n pulse.visit(pulse.ADD, function(t) { enter(t, _); update(t, _); });\n out.modifies(enter.output);\n out.modifies(update.output);\n if (set !== falsy && set !== update) {\n pulse.visit(pulse.ADD, function(t) { set(t, _); });\n out.modifies(set.output);\n }\n }\n\n if (pulse.changed(pulse.REM) && exit !== falsy) {\n pulse.visit(pulse.REM, function(t) { exit(t, _); });\n out.modifies(exit.output);\n }\n\n if (reenter || set !== falsy) {\n var flag = pulse.MOD | (_.modified() ? pulse.REFLOW : 0);\n if (reenter) {\n pulse.visit(flag, function(t) {\n var mod = enter(t, _) || fmod;\n if (set(t, _) || mod) out.mod.push(t);\n });\n if (out.mod.length) out.modifies(enter.output);\n } else {\n pulse.visit(flag, function(t) {\n if (set(t, _) || fmod) out.mod.push(t);\n });\n }\n if (out.mod.length) out.modifies(set.output);\n }\n\n return out.changed() ? out : pulse.StopPropagation;\n};\n","export const continuous = {\n blues: 'cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90',\n greens: 'd3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429',\n greys: 'e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e',\n oranges: 'fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303',\n purples: 'e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c',\n reds: 'fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13',\n\n blueGreen: 'd5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429',\n bluePurple: 'ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71',\n greenBlue: 'd3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1',\n orangeRed: 'fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403',\n purpleBlue: 'dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281',\n purpleBlueGreen: 'dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353',\n purpleRed: 'dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a',\n redPurple: 'fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174',\n yellowGreen: 'e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034',\n yellowOrangeBrown: 'feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204',\n yellowOrangeRed: 'fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225',\n\n blueOrange: '134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07',\n brownBlueGreen: '704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147',\n purpleGreen: '5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29',\n purpleOrange: '4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07',\n redBlue: '8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85',\n redGrey: '8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434',\n yellowGreenBlue: 'eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185',\n redYellowBlue: 'a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695',\n redYellowGreen: 'a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837',\n pinkYellowGreen: '8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419',\n spectral: '9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2',\n\n viridis: '440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725',\n magma: '0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf',\n inferno: '0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4',\n plasma: '0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921',\n\n rainbow: '6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa',\n sinebow: 'ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040',\n\n browns: 'eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632',\n tealBlues: 'bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985',\n teals: 'bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667',\n warmGreys: 'dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e',\n\n goldGreen: 'f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36',\n goldOrange: 'f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26',\n goldRed: 'f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e',\n\n lightGreyRed: 'efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b',\n lightGreyTeal: 'e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc',\n lightMulti: 'e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c',\n lightOrange: 'f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b',\n lightTealBlue: 'e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988',\n\n darkBlue: '3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff',\n darkGold: '3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff',\n darkGreen: '3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa',\n darkMulti: '3737371f5287197d8c29a86995ce3fffe800ffffff',\n darkRed: '3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c'\n};\n\nexport const discrete = {\n category10: '1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf',\n category20: '1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5',\n category20b: '393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6',\n category20c: '3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9',\n tableau10: '4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac',\n tableau20: '4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5',\n accent: '7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666',\n dark2: '1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666',\n paired: 'a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928',\n pastel1: 'fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2',\n pastel2: 'b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc',\n set1: 'e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999',\n set2: '66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3',\n set3: '8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f'\n};\n","export var Symbols = 'symbol';\nexport var Discrete = 'discrete';\nexport var Gradient = 'gradient';\n","import {Symbols, Discrete} from './legend-types';\nimport {tickFormat, tickValues} from './ticks';\n\nimport {\n Quantile,\n Quantize,\n Threshold,\n tickFormat as spanFormat,\n Time\n} from 'vega-scale';\nimport {peek} from 'vega-util';\n\nconst symbols = {\n [Quantile]: 'quantiles',\n [Quantize]: 'thresholds',\n [Threshold]: 'domain'\n};\n\nconst formats = {\n [Quantile]: 'quantiles',\n [Quantize]: 'domain'\n};\n\nexport function labelValues(scale, count) {\n return scale.bins ? binValues(scale.bins)\n : symbols[scale.type] ? thresholdValues(scale[symbols[scale.type]]())\n : tickValues(scale, count);\n}\n\nexport function thresholdFormat(scale, specifier) {\n var _ = scale[formats[scale.type]](),\n n = _.length,\n d = n > 1 ? _[1] - _[0] : _[0], i;\n\n for (i=1; i<n; ++i) {\n d = Math.min(d, _[i] - _[i-1]);\n }\n\n // 3 ticks times 10 for increased resolution\n return spanFormat(0, d, 3 * 10, specifier);\n}\n\nfunction thresholdValues(thresholds) {\n const values = [-Infinity].concat(thresholds);\n values.max = +Infinity;\n\n return values;\n}\n\nfunction binValues(bins) {\n const values = bins.slice(0, -1);\n values.max = peek(bins);\n\n return values;\n}\n\nfunction isDiscreteRange(scale) {\n return symbols[scale.type] || scale.bins;\n}\n\nexport function labelFormat(scale, count, type, specifier, formatType) {\n const format = formats[scale.type] && formatType !== Time\n ? thresholdFormat(scale, specifier)\n : tickFormat(scale, count, specifier, formatType);\n\n return type === Symbols && isDiscreteRange(scale) ? formatRange(format)\n : type === Discrete ? formatDiscrete(format)\n : formatPoint(format);\n}\n\nfunction formatRange(format) {\n return function(value, index, array) {\n var limit = array[index + 1] || array.max || +Infinity,\n lo = formatValue(value, format),\n hi = formatValue(limit, format);\n return lo && hi ? lo + '\\u2013' + hi : hi ? '< ' + hi : '\\u2265 ' + lo;\n };\n}\n\nfunction formatDiscrete(format) {\n return function(value, index) {\n return index ? format(value) : null;\n }\n}\n\nfunction formatPoint(format) {\n return function(value) {\n return format(value);\n };\n}\n\nfunction formatValue(value, format) {\n return isFinite(value) ? format(value) : null;\n}\n\nexport function labelFraction(scale) {\n var domain = scale.domain(),\n count = domain.length - 1,\n lo = +domain[0],\n hi = +peek(domain),\n span = hi - lo;\n\n if (scale.type === Threshold) {\n var adjust = count ? span / count : 0.1;\n lo -= adjust;\n hi += adjust;\n span = hi - lo;\n }\n\n return function(value) {\n return (value - lo) / span;\n };\n}\n","import {labelFormat, labelFraction, labelValues} from './labels';\nimport {Symbols, Gradient} from './legend-types';\nimport {tickCount} from './ticks';\nimport {Transform, ingest} from 'vega-dataflow';\nimport {scaleFraction} from 'vega-scale';\nimport {constant, inherits, isFunction, peek} from 'vega-util';\n\n/**\n * Generates legend entries for visualizing a scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate items for.\n * @param {*} [params.count=5] - The approximate number of items, or\n * desired tick interval, to use.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid D3 format specifier string.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nexport default function LegendEntries(params) {\n Transform.call(this, [], params);\n}\n\nvar prototype = inherits(LegendEntries, Transform);\n\nprototype.transform = function(_, pulse) {\n if (this.value != null && !_.modified()) {\n return pulse.StopPropagation;\n }\n\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n items = this.value,\n type = _.type || Symbols,\n scale = _.scale,\n count = tickCount(scale, _.count == null ? 5 : _.count, _.minstep),\n format = _.format || labelFormat(scale, count, type, _.formatSpecifier, _.formatType),\n values = _.values || labelValues(scale, count, type),\n domain, fraction, size, offset;\n\n if (items) out.rem = items;\n\n if (type === Symbols) {\n if (isFunction(size = _.size)) {\n // if first value maps to size zero, remove from list (vega#717)\n if (!_.values && scale(values[0]) === 0) {\n values = values.slice(1);\n }\n // compute size offset for legend entries\n offset = values.reduce(function(max, value) {\n return Math.max(max, size(value, _));\n }, 0);\n } else {\n size = constant(offset = size || 8);\n }\n\n items = values.map(function(value, index) {\n return ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n offset: offset,\n size: size(value, _)\n });\n });\n }\n\n else if (type === Gradient) {\n domain = scale.domain(),\n fraction = scaleFraction(scale, domain[0], peek(domain));\n\n // if automatic label generation produces 2 or fewer values,\n // use the domain end points instead (fixes vega/vega#1364)\n if (values.length < 3 && !_.values && domain[0] !== peek(domain)) {\n values = [domain[0], peek(domain)];\n }\n\n items = values.map(function(value, index) {\n return ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: fraction(value)\n });\n });\n }\n\n else {\n size = values.length - 1;\n fraction = labelFraction(scale);\n\n items = values.map(function(value, index) {\n return ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: index ? fraction(value) : 0,\n perc2: index === size ? 1 : fraction(values[index+1])\n });\n });\n }\n\n out.source = items;\n out.add = items;\n this.value = items;\n\n return out;\n};\n","import {Transform} from 'vega-dataflow';\nimport {error, fastmap, inherits} from 'vega-util';\n\nvar Paths = fastmap({\n 'line': line,\n 'line-radial': lineR,\n 'arc': arc,\n 'arc-radial': arcR,\n 'curve': curve,\n 'curve-radial': curveR,\n 'orthogonal-horizontal': orthoX,\n 'orthogonal-vertical': orthoY,\n 'orthogonal-radial': orthoR,\n 'diagonal-horizontal': diagonalX,\n 'diagonal-vertical': diagonalY,\n 'diagonal-radial': diagonalR\n});\n\nfunction sourceX(t) { return t.source.x; }\nfunction sourceY(t) { return t.source.y; }\nfunction targetX(t) { return t.target.x; }\nfunction targetY(t) { return t.target.y; }\n\n /**\n * Layout paths linking source and target elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function LinkPath(params) {\n Transform.call(this, {}, params);\n}\n\nLinkPath.Definition = {\n \"type\": \"LinkPath\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"sourceX\", \"type\": \"field\", \"default\": \"source.x\" },\n { \"name\": \"sourceY\", \"type\": \"field\", \"default\": \"source.y\" },\n { \"name\": \"targetX\", \"type\": \"field\", \"default\": \"target.x\" },\n { \"name\": \"targetY\", \"type\": \"field\", \"default\": \"target.y\" },\n { \"name\": \"orient\", \"type\": \"enum\", \"default\": \"vertical\",\n \"values\": [\"horizontal\", \"vertical\", \"radial\"] },\n { \"name\": \"shape\", \"type\": \"enum\", \"default\": \"line\",\n \"values\": [\"line\", \"arc\", \"curve\", \"diagonal\", \"orthogonal\"] },\n { \"name\": \"require\", \"type\": \"signal\" },\n { \"name\": \"as\", \"type\": \"string\", \"default\": \"path\" }\n ]\n};\n\nvar prototype = inherits(LinkPath, Transform);\n\nprototype.transform = function(_, pulse) {\n var sx = _.sourceX || sourceX,\n sy = _.sourceY || sourceY,\n tx = _.targetX || targetX,\n ty = _.targetY || targetY,\n as = _.as || 'path',\n orient = _.orient || 'vertical',\n shape = _.shape || 'line',\n path = Paths.get(shape + '-' + orient) || Paths.get(shape);\n\n if (!path) {\n error('LinkPath unsupported type: ' + _.shape\n + (_.orient ? '-' + _.orient : ''));\n }\n\n pulse.visit(pulse.SOURCE, function(t) {\n t[as] = path(sx(t), sy(t), tx(t), ty(t));\n });\n\n return pulse.reflow(_.modified()).modifies(as);\n};\n\n// -- Link Path Generation Methods -----\n\nfunction line(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy +\n 'L' + tx + ',' + ty;\n}\n\nfunction lineR(sa, sr, ta, tr) {\n return line(\n sr * Math.cos(sa), sr * Math.sin(sa),\n tr * Math.cos(ta), tr * Math.sin(ta)\n );\n}\n\nfunction arc(sx, sy, tx, ty) {\n var dx = tx - sx,\n dy = ty - sy,\n rr = Math.sqrt(dx * dx + dy * dy) / 2,\n ra = 180 * Math.atan2(dy, dx) / Math.PI;\n return 'M' + sx + ',' + sy +\n 'A' + rr + ',' + rr +\n ' ' + ra + ' 0 1' +\n ' ' + tx + ',' + ty;\n}\n\nfunction arcR(sa, sr, ta, tr) {\n return arc(\n sr * Math.cos(sa), sr * Math.sin(sa),\n tr * Math.cos(ta), tr * Math.sin(ta)\n );\n}\n\nfunction curve(sx, sy, tx, ty) {\n var dx = tx - sx,\n dy = ty - sy,\n ix = 0.2 * (dx + dy),\n iy = 0.2 * (dy - dx);\n return 'M' + sx + ',' + sy +\n 'C' + (sx+ix) + ',' + (sy+iy) +\n ' ' + (tx+iy) + ',' + (ty-ix) +\n ' ' + tx + ',' + ty;\n}\n\nfunction curveR(sa, sr, ta, tr) {\n return curve(\n sr * Math.cos(sa), sr * Math.sin(sa),\n tr * Math.cos(ta), tr * Math.sin(ta)\n );\n}\n\nfunction orthoX(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy +\n 'V' + ty + 'H' + tx;\n}\n\nfunction orthoY(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy +\n 'H' + tx + 'V' + ty;\n}\n\nfunction orthoR(sa, sr, ta, tr) {\n var sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa;\n return 'M' + (sr*sc) + ',' + (sr*ss) +\n 'A' + sr + ',' + sr + ' 0 0,' + (sf?1:0) +\n ' ' + (sr*tc) + ',' + (sr*ts) +\n 'L' + (tr*tc) + ',' + (tr*ts);\n}\n\nfunction diagonalX(sx, sy, tx, ty) {\n var m = (sx + tx) / 2;\n return 'M' + sx + ',' + sy +\n 'C' + m + ',' + sy +\n ' ' + m + ',' + ty +\n ' ' + tx + ',' + ty;\n}\n\nfunction diagonalY(sx, sy, tx, ty) {\n var m = (sy + ty) / 2;\n return 'M' + sx + ',' + sy +\n 'C' + sx + ',' + m +\n ' ' + tx + ',' + m +\n ' ' + tx + ',' + ty;\n}\n\nfunction diagonalR(sa, sr, ta, tr) {\n var sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n mr = (sr + tr) / 2;\n return 'M' + (sr*sc) + ',' + (sr*ss) +\n 'C' + (mr*sc) + ',' + (mr*ss) +\n ' ' + (mr*tc) + ',' + (mr*ts) +\n ' ' + (tr*tc) + ',' + (tr*ts);\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits, one} from 'vega-util';\nimport {range, sum} from 'd3-array';\n\n/**\n * Pie and donut chart layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size pie segments.\n * @param {number} [params.startAngle=0] - The start angle (in radians) of the layout.\n * @param {number} [params.endAngle=2π] - The end angle (in radians) of the layout.\n * @param {boolean} [params.sort] - Boolean flag for sorting sectors by value.\n */\nexport default function Pie(params) {\n Transform.call(this, null, params);\n}\n\nPie.Definition = {\n \"type\": \"Pie\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"startAngle\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"endAngle\", \"type\": \"number\", \"default\": 6.283185307179586 },\n { \"name\": \"sort\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"startAngle\", \"endAngle\"] }\n ]\n};\n\nvar prototype = inherits(Pie, Transform);\n\nprototype.transform = function(_, pulse) {\n var as = _.as || ['startAngle', 'endAngle'],\n startAngle = as[0],\n endAngle = as[1],\n field = _.field || one,\n start = _.startAngle || 0,\n stop = _.endAngle != null ? _.endAngle : 2 * Math.PI,\n data = pulse.source,\n values = data.map(field),\n n = values.length,\n a = start,\n k = (stop - start) / sum(values),\n index = range(n),\n i, t, v;\n\n if (_.sort) {\n index.sort(function(a, b) {\n return values[a] - values[b];\n });\n }\n\n for (i=0; i<n; ++i) {\n v = values[index[i]];\n t = data[index[i]];\n t[startAngle] = a;\n t[endAngle] = (a += v * k);\n }\n\n this.value = values;\n return pulse.reflow(_.modified()).modifies(as);\n};\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","import {tickCount} from './ticks';\nimport {Transform} from 'vega-dataflow';\nimport {\n error, inherits, isArray, isFunction, isString, peek, stringValue,\n toSet, zoomLinear, zoomLog, zoomPow, zoomSymlog\n} from 'vega-util';\n\nimport {\n Ordinal, Band, Point, Sequential, Diverging,\n Linear, Log, Pow, Sqrt, Symlog, Time, UTC,\n Quantile, Quantize, Threshold, BinOrdinal,\n isContinuous,\n isInterpolating,\n isLogarithmic,\n bandSpace,\n interpolateColors,\n interpolateRange,\n interpolate as getInterpolate,\n scale as getScale,\n scheme as getScheme,\n scaleImplicit,\n quantizeInterpolator\n} from 'vega-scale';\n\nimport {range as sequence} from 'd3-array';\n\nimport {\n interpolate,\n interpolateRound\n} from 'd3-interpolate';\n\nvar DEFAULT_COUNT = 5;\n\nfunction includeZero(scale) {\n const type = scale.type;\n return !scale.bins && (\n type === Linear || type === Pow || type === Sqrt\n );\n}\n\nfunction includePad(type) {\n return isContinuous(type) && type !== Sequential;\n}\n\nvar SKIP = toSet([\n 'set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount',\n 'domain', 'domainMin', 'domainMid', 'domainMax',\n 'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins',\n 'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma'\n]);\n\n/**\n * Maintains a scale function mapping data values to visual channels.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function Scale(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\nvar prototype = inherits(Scale, Transform);\n\nprototype.transform = function(_, pulse) {\n var df = pulse.dataflow,\n scale = this.value,\n key = scaleKey(_);\n\n if (!scale || key !== scale.type) {\n this.value = scale = getScale(key)();\n }\n\n for (key in _) if (!SKIP[key]) {\n // padding is a scale property for band/point but not others\n if (key === 'padding' && includePad(scale.type)) continue;\n // invoke scale property setter, raise warning if not found\n isFunction(scale[key])\n ? scale[key](_[key])\n : df.warn('Unsupported scale property: ' + key);\n }\n\n configureRange(scale, _,\n configureBins(scale, _, configureDomain(scale, _, df))\n );\n\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n};\n\nfunction scaleKey(_) {\n var t = _.type, d = '', n;\n\n // backwards compatibility pre Vega 5.\n if (t === Sequential) return Sequential + '-' + Linear;\n\n if (isContinuousColor(_)) {\n n = _.rawDomain ? _.rawDomain.length\n : _.domain ? _.domain.length + +(_.domainMid != null)\n : 0;\n d = n === 2 ? Sequential + '-'\n : n === 3 ? Diverging + '-'\n : '';\n }\n\n return ((d + t) || Linear).toLowerCase();\n}\n\nfunction isContinuousColor(_) {\n const t = _.type;\n return isContinuous(t) && t !== Time && t !== UTC && (\n _.scheme || _.range && _.range.length && _.range.every(isString)\n );\n}\n\nfunction configureDomain(scale, _, df) {\n // check raw domain, if provided use that and exit early\n var raw = rawDomain(scale, _.domainRaw, df);\n if (raw > -1) return raw;\n\n var domain = _.domain,\n type = scale.type,\n zero = _.zero || (_.zero === undefined && includeZero(scale)),\n n, mid;\n\n if (!domain) return 0;\n\n // adjust continuous domain for minimum pixel padding\n if (includePad(type) && _.padding && domain[0] !== peek(domain)) {\n domain = padDomain(type, domain, _.range, _.padding, _.exponent, _.constant);\n }\n\n // adjust domain based on zero, min, max settings\n if (zero || _.domainMin != null || _.domainMax != null || _.domainMid != null) {\n n = ((domain = domain.slice()).length - 1) || 1;\n if (zero) {\n if (domain[0] > 0) domain[0] = 0;\n if (domain[n] < 0) domain[n] = 0;\n }\n if (_.domainMin != null) domain[0] = _.domainMin;\n if (_.domainMax != null) domain[n] = _.domainMax;\n\n if (_.domainMid != null) {\n mid = _.domainMid;\n if (mid < domain[0] || mid > domain[n]) {\n df.warn('Scale domainMid exceeds domain min or max.', mid);\n }\n domain.splice(n, 0, mid);\n }\n }\n\n // set the scale domain\n scale.domain(domainCheck(type, domain, df));\n\n // if ordinal scale domain is defined, prevent implicit\n // domain construction as side-effect of scale lookup\n if (type === Ordinal) {\n scale.unknown(_.domainImplicit ? scaleImplicit : undefined);\n }\n\n // perform 'nice' adjustment as requested\n if (_.nice && scale.nice) {\n scale.nice((_.nice !== true && tickCount(scale, _.nice)) || null);\n }\n\n // return the cardinality of the domain\n return domain.length;\n}\n\nfunction rawDomain(scale, raw, df) {\n if (raw) {\n scale.domain(domainCheck(scale.type, raw, df));\n return raw.length;\n } else {\n return -1;\n }\n}\n\nfunction padDomain(type, domain, range, pad, exponent, constant) {\n var span = Math.abs(peek(range) - range[0]),\n frac = span / (span - 2 * pad),\n d = type === Log ? zoomLog(domain, null, frac)\n : type === Sqrt ? zoomPow(domain, null, frac, 0.5)\n : type === Pow ? zoomPow(domain, null, frac, exponent || 1)\n : type === Symlog ? zoomSymlog(domain, null, frac, constant || 1)\n : zoomLinear(domain, null, frac);\n\n domain = domain.slice();\n domain[0] = d[0];\n domain[domain.length-1] = d[1];\n return domain;\n}\n\nfunction domainCheck(type, domain, df) {\n if (isLogarithmic(type)) {\n // sum signs of domain values\n // if all pos or all neg, abs(sum) === domain.length\n var s = Math.abs(domain.reduce(function(s, v) {\n return s + (v < 0 ? -1 : v > 0 ? 1 : 0);\n }, 0));\n\n if (s !== domain.length) {\n df.warn('Log scale domain includes zero: ' + stringValue(domain));\n }\n }\n return domain;\n}\n\nfunction configureBins(scale, _, count) {\n let bins = _.bins;\n\n if (bins && !isArray(bins)) {\n // generate bin boundary array\n const domain = (bins.start == null || bins.stop == null) && scale.domain(),\n start = bins.start == null ? domain[0] : bins.start,\n stop = bins.stop == null ? peek(domain) : bins.stop,\n step = bins.step;\n\n if (!step) error('Scale bins parameter missing step property.');\n bins = sequence(start, stop + step, step);\n }\n\n if (bins) {\n // assign bin boundaries to scale instance\n scale.bins = bins;\n } else if (scale.bins) {\n // no current bins, remove bins if previously set\n delete scale.bins;\n }\n\n // special handling for bin-ordinal scales\n if (scale.type === BinOrdinal) {\n if (!bins) {\n // the domain specifies the bins\n scale.bins = scale.domain();\n } else if (!_.domain && !_.domainRaw) {\n // the bins specify the domain\n scale.domain(bins);\n count = bins.length;\n }\n }\n\n // return domain cardinality\n return count;\n}\n\nfunction configureRange(scale, _, count) {\n var round = _.round || false,\n range = _.range;\n\n // if range step specified, calculate full range extent\n if (_.rangeStep != null) {\n range = configureRangeStep(scale.type, _, count);\n }\n\n // else if a range scheme is defined, use that\n else if (_.scheme) {\n range = configureScheme(scale.type, _, count);\n if (isFunction(range)) return scale.interpolator(range);\n }\n\n // given a range array for an interpolating scale, convert to interpolator\n else if (range && isInterpolating(scale.type)) {\n return scale.interpolator(\n interpolateColors(flip(range, _.reverse), _.interpolate, _.interpolateGamma)\n );\n }\n\n // configure rounding / interpolation\n if (range && _.interpolate && scale.interpolate) {\n scale.interpolate(getInterpolate(_.interpolate, _.interpolateGamma));\n } else if (isFunction(scale.round)) {\n scale.round(round);\n } else if (isFunction(scale.rangeRound)) {\n scale.interpolate(round ? interpolateRound : interpolate);\n }\n\n if (range) scale.range(flip(range, _.reverse));\n}\n\nfunction configureRangeStep(type, _, count) {\n if (type !== Band && type !== Point) {\n error('Only band and point scales support rangeStep.');\n }\n\n // calculate full range based on requested step size and padding\n var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0,\n inner = type === Point ? 1\n : ((_.paddingInner != null ? _.paddingInner : _.padding) || 0);\n return [0, _.rangeStep * bandSpace(count, inner, outer)];\n}\n\nfunction configureScheme(type, _, count) {\n var extent = _.schemeExtent,\n name, scheme;\n\n if (isArray(_.scheme)) {\n scheme = interpolateColors(_.scheme, _.interpolate, _.interpolateGamma);\n } else {\n name = _.scheme.toLowerCase();\n scheme = getScheme(name);\n if (!scheme) error('Unrecognized scheme name: ' + _.scheme);\n }\n\n // determine size for potential discrete range\n count = (type === Threshold) ? count + 1\n : (type === BinOrdinal) ? count - 1\n : (type === Quantile || type === Quantize) ? (+_.schemeCount || DEFAULT_COUNT)\n : count;\n\n // adjust and/or quantize scheme as appropriate\n return isInterpolating(type) ? adjustScheme(scheme, extent, _.reverse)\n : isFunction(scheme) ? quantizeInterpolator(adjustScheme(scheme, extent), count)\n : type === Ordinal ? scheme : scheme.slice(0, count);\n}\n\nfunction adjustScheme(scheme, extent, reverse) {\n return (isFunction(scheme) && (extent || reverse))\n ? interpolateRange(scheme, flip(extent || [0, 1], reverse))\n : scheme;\n}\n\nfunction flip(array, reverse) {\n return reverse ? array.slice().reverse() : array;\n}\n\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Sorts scenegraph items in the pulse source array.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting tuples.\n */\nexport default function SortItems(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(SortItems, Transform);\n\nprototype.transform = function(_, pulse) {\n var mod = _.modified('sort')\n || pulse.changed(pulse.ADD)\n || pulse.modified(_.sort.fields)\n || pulse.modified('datum');\n\n if (mod) pulse.source.sort(_.sort);\n\n this.modified(mod);\n return pulse;\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits, one} from 'vega-util';\n\nvar Zero = 'zero',\n Center = 'center',\n Normalize = 'normalize',\n DefOutput = ['y0', 'y1'];\n\n/**\n * Stack layout for visualization elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to stack.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {function(object,object): number} [params.sort] - A comparator for stack sorting.\n * @param {string} [offset='zero'] - One of 'zero', 'center', 'normalize'.\n */\nexport default function Stack(params) {\n Transform.call(this, null, params);\n}\n\nStack.Definition = {\n \"type\": \"Stack\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"offset\", \"type\": \"enum\", \"default\": Zero, \"values\": [Zero, Center, Normalize] },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": DefOutput }\n ]\n};\n\nvar prototype = inherits(Stack, Transform);\n\nprototype.transform = function(_, pulse) {\n var as = _.as || DefOutput,\n y0 = as[0],\n y1 = as[1],\n field = _.field || one,\n stack = _.offset === Center ? stackCenter\n : _.offset === Normalize ? stackNormalize\n : stackZero,\n groups, i, n, max;\n\n // partition, sum, and sort the stack groups\n groups = partition(pulse.source, _.groupby, _.sort, field);\n\n // compute stack layouts per group\n for (i=0, n=groups.length, max=groups.max; i<n; ++i) {\n stack(groups[i], max, field, y0, y1);\n }\n\n return pulse.reflow(_.modified()).modifies(as);\n};\n\nfunction stackCenter(group, max, field, y0, y1) {\n var last = (max - group.sum) / 2,\n m = group.length,\n j = 0, t;\n\n for (; j<m; ++j) {\n t = group[j];\n t[y0] = last;\n t[y1] = (last += Math.abs(field(t)));\n }\n}\n\nfunction stackNormalize(group, max, field, y0, y1) {\n var scale = 1 / group.sum,\n last = 0,\n m = group.length,\n j = 0, v = 0, t;\n\n for (; j<m; ++j) {\n t = group[j];\n t[y0] = last;\n t[y1] = last = scale * (v += Math.abs(field(t)));\n }\n}\n\nfunction stackZero(group, max, field, y0, y1) {\n var lastPos = 0,\n lastNeg = 0,\n m = group.length,\n j = 0, v, t;\n\n for (; j<m; ++j) {\n t = group[j];\n v = +field(t);\n if (v < 0) {\n t[y0] = lastNeg;\n t[y1] = (lastNeg += v);\n } else {\n t[y0] = lastPos;\n t[y1] = (lastPos += v);\n }\n }\n}\n\nfunction partition(data, groupby, sort, field) {\n var groups = [],\n get = function(f) { return f(t); },\n map, i, n, m, t, k, g, s, max;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data.slice());\n } else {\n for (map={}, i=0, n=data.length; i<n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = (g = []);\n groups.push(g);\n }\n g.push(t);\n }\n }\n\n // compute sums of groups, sort groups as needed\n for (k=0, max=0, m=groups.length; k<m; ++k) {\n g = groups[k];\n for (i=0, s=0, n=g.length; i<n; ++i) {\n s += Math.abs(field(g[i]));\n }\n g.sum = s;\n if (s > max) max = s;\n if (sort) g.sort(sort);\n }\n groups.max = max;\n\n return groups;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","import {ingest, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\nimport {extent} from 'd3-array';\nimport {contours, contourDensity} from 'd3-contour';\n\nvar CONTOUR_PARAMS = ['size', 'smooth'];\nvar DENSITY_PARAMS = ['x', 'y', 'weight', 'size', 'cellSize', 'bandwidth'];\n\n/**\n * Generate contours based on kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<number>} params.size - The dimensions [width, height] over which to compute contours.\n * If the values parameter is provided, this must be the dimensions of the input data.\n * If density estimation is performed, this is the output view dimensions in pixels.\n * @param {Array<number>} [params.values] - An array of numeric values representing an\n * width x height grid of values over which to compute contours. If unspecified, this\n * transform will instead attempt to compute contours for the kernel density estimate\n * using values drawn from data tuples in the input pulse.\n * @param {function(object): number} [params.x] - The pixel x-coordinate accessor for density estimation.\n * @param {function(object): number} [params.y] - The pixel y-coordinate accessor for density estimation.\n * @param {function(object): number} [params.weight] - The data point weight accessor for density estimation.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n * @param {number} [params.bandwidth] - Kernel density estimation bandwidth.\n * @param {Array<number>} [params.thresholds] - Contour threshold array. If\n * this parameter is set, the count and nice parameters will be ignored.\n * @param {number} [params.count] - The desired number of contours.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n * threshold values should be automatically aligned to \"nice\"\n * human-friendly values. Setting this flag may cause the number of\n * thresholds to deviate from the specified count.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n * polygons should be smoothed using linear interpolation. The default is\n * true. The parameter is ignored when using density estimation.\n */\nexport default function Contour(params) {\n Transform.call(this, null, params);\n}\n\nContour.Definition = {\n \"type\": \"Contour\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2, \"required\": true },\n { \"name\": \"values\", \"type\": \"number\", \"array\": true },\n { \"name\": \"x\", \"type\": \"field\" },\n { \"name\": \"y\", \"type\": \"field\" },\n { \"name\": \"weight\", \"type\": \"field\" },\n { \"name\": \"cellSize\", \"type\": \"number\" },\n { \"name\": \"bandwidth\", \"type\": \"number\" },\n { \"name\": \"count\", \"type\": \"number\" },\n { \"name\": \"smooth\", \"type\": \"boolean\" },\n { \"name\": \"nice\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"thresholds\", \"type\": \"number\", \"array\": true }\n ]\n};\n\nvar prototype = inherits(Contour, Transform);\n\nprototype.transform = function(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified())\n return pulse.StopPropagation;\n\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n count = _.count || 10,\n contour, params, values;\n\n if (_.values) {\n contour = contours();\n params = CONTOUR_PARAMS;\n values = _.values;\n } else {\n contour = contourDensity();\n params = DENSITY_PARAMS;\n values = pulse.materialize(pulse.SOURCE).source;\n }\n\n // set threshold parameter\n contour.thresholds(_.thresholds || (_.nice ? count : quantize(count)));\n\n // set all other parameters\n params.forEach(function(param) {\n if (_[param] != null) contour[param](_[param]);\n });\n\n if (this.value) out.rem = this.value;\n values = values && values.length ? contour(values).map(ingest) : [];\n this.value = out.source = out.add = values;\n\n return out;\n};\n\nfunction quantize(k) {\n return function(values) {\n var ex = extent(values), x0 = ex[0], dx = ex[1] - x0,\n t = [], i = 1;\n for (; i<=k; ++i) t.push(x0 + dx * i / (k + 1));\n return t;\n };\n}\n","export var Feature = 'Feature';\nexport var FeatureCollection = 'FeatureCollection';\nexport var MultiPoint = 'MultiPoint';\n","import {Feature, FeatureCollection, MultiPoint} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {accessorFields, inherits} from 'vega-util';\n\n/**\n * Consolidate an array of [longitude, latitude] points or GeoJSON features\n * into a combined GeoJSON object. This transform is particularly useful for\n * combining geo data for a Projection's fit argument. The resulting GeoJSON\n * data is available as this transform's value. Input pulses are unchanged.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.fields] - A two-element array\n * of field accessors for the longitude and latitude values.\n * @param {function(object): *} params.geojson - A field accessor for\n * retrieving GeoJSON feature data.\n */\nexport default function GeoJSON(params) {\n Transform.call(this, null, params);\n}\n\nGeoJSON.Definition = {\n \"type\": \"GeoJSON\",\n \"metadata\": {},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"length\": 2 },\n { \"name\": \"geojson\", \"type\": \"field\" },\n ]\n};\n\nvar prototype = inherits(GeoJSON, Transform);\n\nprototype.transform = function(_, pulse) {\n var features = this._features,\n points = this._points,\n fields = _.fields,\n lon = fields && fields[0],\n lat = fields && fields[1],\n geojson = _.geojson,\n flag = pulse.ADD,\n mod;\n\n mod = _.modified()\n || pulse.changed(pulse.REM)\n || pulse.modified(accessorFields(geojson))\n || (lon && (pulse.modified(accessorFields(lon))))\n || (lat && (pulse.modified(accessorFields(lat))));\n\n if (!this.value || mod) {\n flag = pulse.SOURCE;\n this._features = (features = []);\n this._points = (points = []);\n }\n\n if (geojson) {\n pulse.visit(flag, function(t) {\n features.push(geojson(t));\n });\n }\n\n if (lon && lat) {\n pulse.visit(flag, function(t) {\n var x = lon(t),\n y = lat(t);\n if (x != null && y != null && (x = +x) === x && (y = +y) === y) {\n points.push([x, y]);\n }\n });\n features = features.concat({\n type: Feature,\n geometry: {\n type: MultiPoint,\n coordinates: points\n }\n });\n }\n\n this.value = {\n type: FeatureCollection,\n features: features\n };\n};\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nexport default function(polygon, point) {\n var lambda = point[0],\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = point0[0],\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = point1[0],\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","import clipBuffer from \"./buffer\";\nimport clipRejoin from \"./rejoin\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n // Handle degeneracies.\n // TODO ignore if not clipping polygons.\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n point1[0] += epsilon;\n point1[1] += epsilon;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1]);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"../math\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipRejoin from \"./rejoin\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","export default function(x) {\n return x;\n}\n","import noop from \"../noop\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math\";\nimport noop from \"../noop\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity\";\nimport stream from \"../stream\";\nimport pathArea from \"./area\";\nimport pathBounds from \"./bounds\";\nimport pathCentroid from \"./centroid\";\nimport PathContext from \"./context\";\nimport pathMeasure from \"./measure\";\nimport PathString from \"./string\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream\";\nimport boundsStream from \"../path/bounds\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport clipRectangle from \"../clip/rectangle\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy) {\n function transform(x, y) {\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k, (dy - y) / k];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [ai * x - bi * y + ci, fi - bi * x - ai * y];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math\";\nimport {projectionMutator} from \"./index\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y;\n return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pow, sign, sin, sqrt, tan} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {mercatorRaw} from \"./mercator\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {equirectangularRaw} from \"./equirectangular\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y;\n return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle\";\nimport identity from \"../identity\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({\n point: function(x, y) {\n this.stream.point(x * kx + tx, y * ky + ty);\n }\n });\n}\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect\n x0 = null, y0, x1, y1, // clip extent\n postclip = identity,\n cache,\n cacheStream,\n projection;\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return projection = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n },\n postclip: function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n },\n clipExtent: function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n },\n scale: function(_) {\n return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n },\n translate: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n },\n reflectX: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n },\n reflectY: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n },\n fitExtent: function(extent, object) {\n return fitExtent(projection, extent, object);\n },\n fitSize: function(size, object) {\n return fitSize(projection, size, object);\n },\n fitWidth: function(width, object) {\n return fitWidth(projection, width, object);\n },\n fitHeight: function(height, object) {\n return fitHeight(projection, height, object);\n }\n };\n}\n","import projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math\";\nimport {mercatorProjection} from \"./mercator\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","import {\n geoAlbers,\n geoAlbersUsa,\n geoAzimuthalEqualArea,\n geoAzimuthalEquidistant,\n geoConicConformal,\n geoConicEqualArea,\n geoConicEquidistant,\n geoEquirectangular,\n geoGnomonic,\n geoIdentity,\n geoMercator,\n geoNaturalEarth1,\n geoOrthographic,\n geoStereographic,\n geoTransverseMercator,\n geoPath\n} from 'd3-geo';\n\nvar defaultPath = geoPath();\n\nexport var projectionProperties = [\n // standard properties in d3-geo\n 'clipAngle',\n 'clipExtent',\n 'scale',\n 'translate',\n 'center',\n 'rotate',\n 'parallels',\n 'precision',\n 'reflectX',\n 'reflectY',\n\n // extended properties in d3-geo-projections\n 'coefficient',\n 'distance',\n 'fraction',\n 'lobes',\n 'parallel',\n 'radius',\n 'ratio',\n 'spacing',\n 'tilt'\n];\n\n/**\n * Augment projections with their type and a copy method.\n */\nfunction create(type, constructor) {\n return function projection() {\n var p = constructor();\n\n p.type = type;\n\n p.path = geoPath().projection(p);\n\n p.copy = p.copy || function() {\n var c = projection();\n projectionProperties.forEach(function(prop) {\n if (p.hasOwnProperty(prop)) c[prop](p[prop]());\n });\n c.path.pointRadius(p.path.pointRadius());\n return c;\n };\n\n return p;\n };\n}\n\nexport function projection(type, proj) {\n if (!type || typeof type !== 'string') {\n throw new Error('Projection type must be a name string.');\n }\n type = type.toLowerCase();\n if (arguments.length > 1) {\n projections[type] = create(type, proj);\n return this;\n } else {\n return projections.hasOwnProperty(type) ? projections[type] : null;\n }\n}\n\nexport function getProjectionPath(proj) {\n return (proj && proj.path) || defaultPath;\n}\n\nvar projections = {\n // base d3-geo projection types\n albers: geoAlbers,\n albersusa: geoAlbersUsa,\n azimuthalequalarea: geoAzimuthalEqualArea,\n azimuthalequidistant: geoAzimuthalEquidistant,\n conicconformal: geoConicConformal,\n conicequalarea: geoConicEqualArea,\n conicequidistant: geoConicEquidistant,\n equirectangular: geoEquirectangular,\n gnomonic: geoGnomonic,\n identity: geoIdentity,\n mercator: geoMercator,\n naturalEarth1: geoNaturalEarth1,\n orthographic: geoOrthographic,\n stereographic: geoStereographic,\n transversemercator: geoTransverseMercator\n};\n\nfor (var key in projections) {\n projection(key, projections[key]);\n}\n","import {epsilon} from \"../math\";\nimport albers from \"./albers\";\nimport conicEqualArea from \"./conicEqualArea\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {Transform} from 'vega-dataflow';\nimport {getProjectionPath} from 'vega-projection';\nimport {inherits, identity} from 'vega-util';\n\n/**\n * Map GeoJSON data to an SVG path string.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n * or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='path'] - The output field in which to store\n * the generated path data (default 'path').\n */\nexport default function GeoPath(params) {\n Transform.call(this, null, params);\n}\n\nGeoPath.Definition = {\n \"type\": \"GeoPath\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"projection\", \"type\": \"projection\" },\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"pointRadius\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"as\", \"type\": \"string\", \"default\": \"path\" }\n ]\n};\n\nvar prototype = inherits(GeoPath, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n path = this.value,\n field = _.field || identity,\n as = _.as || 'path',\n flag = out.SOURCE;\n\n function set(t) { t[as] = path(field(t)); }\n\n if (!path || _.modified()) {\n // parameters updated, reset and reflow\n this.value = path = getProjectionPath(_.projection);\n out.materialize().reflow();\n } else {\n flag = field === identity || pulse.modified(field.fields)\n ? out.ADD_MOD\n : out.ADD;\n }\n\n var prev = initPath(path, _.pointRadius);\n out.visit(flag, set);\n path.pointRadius(prev);\n\n return out.modifies(as);\n};\n\nfunction initPath(path, pointRadius) {\n var prev = path.pointRadius();\n path.context(null);\n if (pointRadius != null) {\n path.pointRadius(pointRadius);\n }\n return prev;\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Geo-code a longitude/latitude point to an x/y coordinate.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {Array<function(object): *>} params.fields - A two-element array of\n * field accessors for the longitude and latitude values.\n * @param {Array<string>} [params.as] - A two-element array of field names\n * under which to store the result. Defaults to ['x','y'].\n */\nexport default function GeoPoint(params) {\n Transform.call(this, null, params);\n}\n\nGeoPoint.Definition = {\n \"type\": \"GeoPoint\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"projection\", \"type\": \"projection\", \"required\": true },\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true, \"length\": 2 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"x\", \"y\"] }\n ]\n};\n\nvar prototype = inherits(GeoPoint, Transform);\n\nprototype.transform = function(_, pulse) {\n var proj = _.projection,\n lon = _.fields[0],\n lat = _.fields[1],\n as = _.as || ['x', 'y'],\n x = as[0],\n y = as[1],\n mod;\n\n function set(t) {\n var xy = proj([lon(t), lat(t)]);\n if (xy) {\n t[x] = xy[0];\n t[y] = xy[1];\n } else {\n t[x] = undefined;\n t[y] = undefined;\n }\n }\n\n if (_.modified()) {\n // parameters updated, reflow\n pulse = pulse.materialize().reflow(true).visit(pulse.SOURCE, set);\n } else {\n mod = pulse.modified(lon.fields) || pulse.modified(lat.fields);\n pulse.visit(mod ? pulse.ADD_MOD : pulse.ADD, set);\n }\n\n return pulse.modifies(as);\n};\n","import {Transform} from 'vega-dataflow';\nimport {getProjectionPath} from 'vega-projection';\nimport {inherits, field} from 'vega-util';\n\n/**\n * Annotate items with a geopath shape generator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n * or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='shape'] - The output field in which to store\n * the generated path data (default 'shape').\n */\nexport default function GeoShape(params) {\n Transform.call(this, null, params);\n}\n\nGeoShape.Definition = {\n \"type\": \"GeoShape\",\n \"metadata\": {\"modifies\": true, \"nomod\": true},\n \"params\": [\n { \"name\": \"projection\", \"type\": \"projection\" },\n { \"name\": \"field\", \"type\": \"field\", \"default\": \"datum\" },\n { \"name\": \"pointRadius\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"as\", \"type\": \"string\", \"default\": \"shape\" }\n ]\n};\n\nvar prototype = inherits(GeoShape, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n shape = this.value,\n as = _.as || 'shape',\n flag = out.ADD;\n\n if (!shape || _.modified()) {\n // parameters updated, reset and reflow\n this.value = shape = shapeGenerator(\n getProjectionPath(_.projection),\n _.field || field('datum'),\n _.pointRadius\n );\n out.materialize().reflow();\n flag = out.SOURCE;\n }\n\n out.visit(flag, function(t) { t[as] = shape; });\n\n return out.modifies(as);\n};\n\nfunction shapeGenerator(path, field, pointRadius) {\n var shape = pointRadius == null\n ? function(_) { return path(field(_)); }\n : function(_) {\n var prev = path.pointRadius(),\n value = path.pointRadius(pointRadius)(field(_));\n path.pointRadius(prev);\n return value;\n };\n shape.context = function(_) {\n path.context(_);\n return shape;\n };\n\n return shape;\n}\n","import {Transform, ingest, replace} from 'vega-dataflow';\nimport {inherits, isFunction} from 'vega-util';\nimport {geoGraticule} from 'd3-geo';\n\n/**\n * GeoJSON feature generator for creating graticules.\n * @constructor\n */\nexport default function Graticule(params) {\n Transform.call(this, [], params);\n this.generator = geoGraticule();\n}\n\nGraticule.Definition = {\n \"type\": \"Graticule\",\n \"metadata\": {\"changes\": true},\n \"params\": [\n { \"name\": \"extent\", \"type\": \"array\", \"array\": true, \"length\": 2,\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} },\n { \"name\": \"extentMajor\", \"type\": \"array\", \"array\": true, \"length\": 2,\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} },\n { \"name\": \"extentMinor\", \"type\": \"array\", \"array\": true, \"length\": 2,\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} },\n { \"name\": \"step\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"stepMajor\", \"type\": \"number\", \"array\": true, \"length\": 2, \"default\": [90, 360] },\n { \"name\": \"stepMinor\", \"type\": \"number\", \"array\": true, \"length\": 2, \"default\": [10, 10] },\n { \"name\": \"precision\", \"type\": \"number\", \"default\": 2.5 }\n ]\n};\n\nvar prototype = inherits(Graticule, Transform);\n\nprototype.transform = function(_, pulse) {\n var src = this.value,\n gen = this.generator, t;\n\n if (!src.length || _.modified()) {\n for (var prop in _) {\n if (isFunction(gen[prop])) {\n gen[prop](_[prop]);\n }\n }\n }\n\n t = gen();\n if (src.length) {\n pulse.mod.push(replace(src[0], t));\n } else {\n pulse.add.push(ingest(t));\n }\n src[0] = t;\n\n return pulse;\n};\n","import {Feature, FeatureCollection} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {projection, projectionProperties} from 'vega-projection';\nimport {array, error, inherits, isFunction} from 'vega-util';\n\n/**\n * Maintains a cartographic projection.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function Projection(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\nvar prototype = inherits(Projection, Transform);\n\nprototype.transform = function(_, pulse) {\n var proj = this.value;\n\n if (!proj || _.modified('type')) {\n this.value = (proj = create(_.type));\n projectionProperties.forEach(function(prop) {\n if (_[prop] != null) set(proj, prop, _[prop]);\n });\n } else {\n projectionProperties.forEach(function(prop) {\n if (_.modified(prop)) set(proj, prop, _[prop]);\n });\n }\n\n if (_.pointRadius != null) proj.path.pointRadius(_.pointRadius);\n if (_.fit) fit(proj, _);\n\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n};\n\nfunction fit(proj, _) {\n var data = collectGeoJSON(_.fit);\n _.extent ? proj.fitExtent(_.extent, data)\n : _.size ? proj.fitSize(_.size, data) : 0;\n}\n\nfunction create(type) {\n var constructor = projection((type || 'mercator').toLowerCase());\n if (!constructor) error('Unrecognized projection type: ' + type);\n return constructor();\n}\n\nfunction set(proj, key, value) {\n if (isFunction(proj[key])) proj[key](value);\n}\n\nexport function collectGeoJSON(data) {\n data = array(data);\n return data.length === 1 ? data[0]\n : {\n type: FeatureCollection,\n features: data.reduce((a, f) => a.concat(featurize(f)), [])\n };\n}\n\nfunction featurize(f) {\n return f.type === FeatureCollection\n ? f.features\n : array(f).filter(d => d != null).map(\n d => d.type === Feature ? d : {type: Feature, geometry: d}\n );\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add\";\nimport tree_cover from \"./cover\";\nimport tree_data from \"./data\";\nimport tree_extent from \"./extent\";\nimport tree_find from \"./find\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove\";\nimport tree_root from \"./root\";\nimport tree_size from \"./size\";\nimport tree_visit from \"./visit\";\nimport tree_visitAfter from \"./visitAfter\";\nimport tree_x, {defaultX} from \"./x\";\nimport tree_y, {defaultY} from \"./y\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {Transform} from 'vega-dataflow';\nimport {accessorFields, array, error, inherits, isFunction} from 'vega-util';\nimport {\n forceSimulation, forceCenter, forceCollide,\n forceManyBody, forceLink, forceX, forceY\n} from 'd3-force';\n\nvar ForceMap = {\n center: forceCenter,\n collide: forceCollide,\n nbody: forceManyBody,\n link: forceLink,\n x: forceX,\n y: forceY\n};\n\nvar Forces = 'forces',\n ForceParams = [\n 'alpha', 'alphaMin', 'alphaTarget',\n 'velocityDecay', 'forces'\n ],\n ForceConfig = ['static', 'iterations'],\n ForceOutput = ['x', 'y', 'vx', 'vy'];\n\n/**\n * Force simulation layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<object>} params.forces - The forces to apply.\n */\nexport default function Force(params) {\n Transform.call(this, null, params);\n}\n\nForce.Definition = {\n \"type\": \"Force\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"static\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"restart\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"iterations\", \"type\": \"number\", \"default\": 300 },\n { \"name\": \"alpha\", \"type\": \"number\", \"default\": 1 },\n { \"name\": \"alphaMin\", \"type\": \"number\", \"default\": 0.001 },\n { \"name\": \"alphaTarget\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"velocityDecay\", \"type\": \"number\", \"default\": 0.4 },\n { \"name\": \"forces\", \"type\": \"param\", \"array\": true,\n \"params\": [\n {\n \"key\": {\"force\": \"center\"},\n \"params\": [\n { \"name\": \"x\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"y\", \"type\": \"number\", \"default\": 0 }\n ]\n },\n {\n \"key\": {\"force\": \"collide\"},\n \"params\": [\n { \"name\": \"radius\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"strength\", \"type\": \"number\", \"default\": 0.7 },\n { \"name\": \"iterations\", \"type\": \"number\", \"default\": 1 }\n ]\n },\n {\n \"key\": {\"force\": \"nbody\"},\n \"params\": [\n { \"name\": \"strength\", \"type\": \"number\", \"default\": -30 },\n { \"name\": \"theta\", \"type\": \"number\", \"default\": 0.9 },\n { \"name\": \"distanceMin\", \"type\": \"number\", \"default\": 1 },\n { \"name\": \"distanceMax\", \"type\": \"number\" }\n ]\n },\n {\n \"key\": {\"force\": \"link\"},\n \"params\": [\n { \"name\": \"links\", \"type\": \"data\" },\n { \"name\": \"id\", \"type\": \"field\" },\n { \"name\": \"distance\", \"type\": \"number\", \"default\": 30, \"expr\": true },\n { \"name\": \"strength\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"iterations\", \"type\": \"number\", \"default\": 1 }\n ]\n },\n {\n \"key\": {\"force\": \"x\"},\n \"params\": [\n { \"name\": \"strength\", \"type\": \"number\", \"default\": 0.1 },\n { \"name\": \"x\", \"type\": \"field\" }\n ]\n },\n {\n \"key\": {\"force\": \"y\"},\n \"params\": [\n { \"name\": \"strength\", \"type\": \"number\", \"default\": 0.1 },\n { \"name\": \"y\", \"type\": \"field\" }\n ]\n }\n ] },\n {\n \"name\": \"as\", \"type\": \"string\", \"array\": true, \"modify\": false,\n \"default\": ForceOutput\n }\n ]\n};\n\nvar prototype = inherits(Force, Transform);\n\nprototype.transform = function(_, pulse) {\n var sim = this.value,\n change = pulse.changed(pulse.ADD_REM),\n params = _.modified(ForceParams),\n iters = _.iterations || 300;\n\n // configure simulation\n if (!sim) {\n this.value = sim = simulation(pulse.source, _);\n sim.on('tick', rerun(pulse.dataflow, this));\n if (!_.static) {\n change = true;\n sim.tick(); // ensure we run on init\n }\n pulse.modifies('index');\n } else {\n if (change) {\n pulse.modifies('index');\n sim.nodes(pulse.source);\n }\n if (params || pulse.changed(pulse.MOD)) {\n setup(sim, _, 0, pulse);\n }\n }\n\n // run simulation\n if (params || change || _.modified(ForceConfig)\n || (pulse.changed() && _.restart))\n {\n sim.alpha(Math.max(sim.alpha(), _.alpha || 1))\n .alphaDecay(1 - Math.pow(sim.alphaMin(), 1 / iters));\n\n if (_.static) {\n for (sim.stop(); --iters >= 0;) sim.tick();\n } else {\n if (sim.stopped()) sim.restart();\n if (!change) return pulse.StopPropagation; // defer to sim ticks\n }\n }\n\n return this.finish(_, pulse);\n};\n\nprototype.finish = function(_, pulse) {\n var dataflow = pulse.dataflow;\n\n // inspect dependencies, touch link source data\n for (var args=this._argops, j=0, m=args.length, arg; j<m; ++j) {\n arg = args[j];\n if (arg.name !== Forces || arg.op._argval.force !== 'link') {\n continue;\n }\n for (var ops=arg.op._argops, i=0, n=ops.length, op; i<n; ++i) {\n if (ops[i].name === 'links' && (op = ops[i].op.source)) {\n dataflow.pulse(op, dataflow.changeset().reflow());\n break;\n }\n }\n }\n\n // reflow all nodes\n return pulse.reflow(_.modified()).modifies(ForceOutput);\n};\n\nfunction rerun(df, op) {\n return function() { df.touch(op).run(); }\n}\n\nfunction simulation(nodes, _) {\n var sim = forceSimulation(nodes),\n stopped = false,\n stop = sim.stop,\n restart = sim.restart;\n\n sim.stopped = function() {\n return stopped;\n };\n sim.restart = function() {\n stopped = false;\n return restart();\n };\n sim.stop = function() {\n stopped = true;\n return stop();\n };\n\n return setup(sim, _, true).on('end', function() { stopped = true; });\n}\n\nfunction setup(sim, _, init, pulse) {\n var f = array(_.forces), i, n, p, name;\n\n for (i=0, n=ForceParams.length; i<n; ++i) {\n p = ForceParams[i];\n if (p !== Forces && _.modified(p)) sim[p](_[p]);\n }\n\n for (i=0, n=f.length; i<n; ++i) {\n name = Forces + i;\n p = init || _.modified(Forces, i) ? getForce(f[i])\n : pulse && modified(f[i], pulse) ? sim.force(name)\n : null;\n if (p) sim.force(name, p);\n }\n\n for (n=(sim.numForces || 0); i<n; ++i) {\n sim.force(Forces + i, null); // remove\n }\n\n sim.numForces = f.length;\n return sim;\n}\n\nfunction modified(f, pulse) {\n var k, v;\n for (k in f) {\n if (isFunction(v = f[k]) && pulse.modified(accessorFields(v)))\n return 1;\n }\n return 0;\n}\n\nfunction getForce(_) {\n var f, p;\n\n if (!ForceMap.hasOwnProperty(_.force)) {\n error('Unrecognized force: ' + _.force);\n }\n f = ForceMap[_.force]();\n\n for (p in _) {\n if (isFunction(f[p])) setForceParam(f[p], _[p], _);\n }\n\n return f;\n}\n\nfunction setForceParam(f, v, _) {\n f(isFunction(v) ? function(d) { return v(d, _); } : v);\n}\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","// Build lookup table mapping tuple keys to tree node instances\nexport default function(tree, key, filter) {\n var map = {};\n tree.each(function(node) {\n var t = node.data;\n if (filter(t)) map[key(t)] = node;\n });\n tree.lookup = map;\n return tree;\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count\";\nimport node_each from \"./each\";\nimport node_eachBefore from \"./eachBefore\";\nimport node_eachAfter from \"./eachAfter\";\nimport node_sum from \"./sum\";\nimport node_sort from \"./sort\";\nimport node_path from \"./path\";\nimport node_ancestors from \"./ancestors\";\nimport node_descendants from \"./descendants\";\nimport node_leaves from \"./leaves\";\nimport node_links from \"./links\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings\";\nimport {optional} from \"../accessors\";\nimport constant, {constantZero} from \"../constant\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import {required} from \"./accessors\";\nimport {Node, computeHeight} from \"./hierarchy/index\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\nimport {phi, squarifyRatio} from \"./squarify\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","import lookup from './lookup';\nimport {ingest, isTuple, Transform, tupleid} from 'vega-dataflow';\nimport {array, error, inherits} from 'vega-util';\nimport {hierarchy} from 'd3-hierarchy';\n\n /**\n * Nest tuples into a tree structure, grouped by key values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.keys - The key fields to nest by, in order.\n * @param {boolean} [params.generate=false] - A boolean flag indicating if\n * non-leaf nodes generated by this transform should be included in the\n * output. The default (false) includes only the input data (leaf nodes)\n * in the data stream.\n */\nexport default function Nest(params) {\n Transform.call(this, null, params);\n}\n\nNest.Definition = {\n \"type\": \"Nest\",\n \"metadata\": {\"treesource\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"keys\", \"type\": \"field\", \"array\": true },\n { \"name\": \"generate\", \"type\": \"boolean\" }\n ]\n};\n\nvar prototype = inherits(Nest, Transform);\n\nfunction children(n) {\n return n.values;\n}\n\nprototype.transform = function(_, pulse) {\n if (!pulse.source) {\n error('Nest transform requires an upstream data source.');\n }\n\n var gen = _.generate,\n mod = _.modified(),\n out = pulse.clone(),\n tree = this.value;\n\n if (!tree || mod || pulse.changed()) {\n // collect nodes to remove\n if (tree) {\n tree.each(function(node) {\n if (node.children && isTuple(node.data)) {\n out.rem.push(node.data);\n }\n });\n }\n\n // generate new tree structure\n this.value = tree = hierarchy({\n values: array(_.keys)\n .reduce(function(n, k) { n.key(k); return n; }, nest())\n .entries(out.source)\n }, children);\n\n // collect nodes to add\n if (gen) {\n tree.each(function(node) {\n if (node.children) {\n node = ingest(node.data);\n out.add.push(node);\n out.source.push(node);\n }\n });\n }\n\n // build lookup table\n lookup(tree, tupleid, tupleid);\n }\n\n out.source.root = tree;\n return out;\n};\n\nfunction nest() {\n var keys = [],\n nest;\n\n function apply(array, depth) {\n if (depth >= keys.length) {\n return array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = {},\n values,\n result = {};\n\n while (++i < n) {\n keyValue = key(value = array[i]) + '';\n if (values = valuesByKey[keyValue]) {\n values.push(value);\n } else {\n valuesByKey[keyValue] = [value];\n }\n }\n\n for (keyValue in valuesByKey) {\n result[keyValue] = apply(valuesByKey[keyValue], depth);\n }\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array = [], k;\n for (k in map) {\n array.push({key: k, values: entries(map[k], depth)});\n }\n return array;\n }\n\n return nest = {\n entries: function(array) { return entries(apply(array, 0), 0); },\n key: function(d) { keys.push(d); return nest; }\n };\n}\n","import {Transform} from 'vega-dataflow';\nimport {error, inherits, one} from 'vega-util';\n\n/**\n * Abstract class for tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function HierarchyLayout(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(HierarchyLayout, Transform);\n\nprototype.transform = function(_, pulse) {\n if (!pulse.source || !pulse.source.root) {\n error(this.constructor.name\n + ' transform requires a backing tree data source.');\n }\n\n var layout = this.layout(_.method),\n fields = this.fields,\n root = pulse.source.root,\n as = _.as || fields;\n\n if (_.field) root.sum(_.field);\n if (_.sort) root.sort(_.sort);\n\n setParams(layout, this.params, _);\n if (layout.separation) {\n layout.separation(_.separation !== false ? defaultSeparation : one);\n }\n\n try {\n this.value = layout(root);\n } catch (err) {\n error(err);\n }\n root.each(function(node) { setFields(node, fields, as); });\n\n return pulse.reflow(_.modified()).modifies(as).modifies('leaf');\n};\n\nfunction setParams(layout, params, _) {\n for (var p, i=0, n=params.length; i<n; ++i) {\n p = params[i];\n if (p in _) layout[p](_[p]);\n }\n}\n\nfunction setFields(node, fields, as) {\n var t = node.data;\n for (var i=0, n=fields.length-1; i<n; ++i) {\n t[as[i]] = node[fields[i]];\n }\n t[as[n]] = node.children ? node.children.length : 0;\n}\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n","import HierarchyLayout from './HierarchyLayout';\nimport {inherits} from 'vega-util';\nimport {pack} from 'd3-hierarchy';\n\nvar Output = ['x', 'y', 'r', 'depth', 'children'];\n\n/**\n * Packed circle tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nexport default function Pack(params) {\n HierarchyLayout.call(this, params);\n}\n\nPack.Definition = {\n \"type\": \"Pack\",\n \"metadata\": {\"tree\": true, \"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"padding\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"radius\", \"type\": \"field\", \"default\": null },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": Output.length, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Pack, HierarchyLayout);\n\nprototype.layout = pack;\n\nprototype.params = ['size', 'padding'];\n\nprototype.fields = Output;\n","import HierarchyLayout from './HierarchyLayout';\nimport {inherits} from 'vega-util';\nimport {partition} from 'd3-hierarchy';\n\nvar Output = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Partition tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nexport default function Partition(params) {\n HierarchyLayout.call(this, params);\n}\n\nPartition.Definition = {\n \"type\": \"Partition\",\n \"metadata\": {\"tree\": true, \"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"padding\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"round\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": Output.length, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Partition, HierarchyLayout);\n\nprototype.layout = partition;\n\nprototype.params = ['size', 'round', 'padding'];\n\nprototype.fields = Output;\n","import lookup from './lookup';\nimport {Transform} from 'vega-dataflow';\nimport {error, inherits, truthy} from 'vega-util';\nimport {stratify} from 'd3-hierarchy';\n\n /**\n * Stratify a collection of tuples into a tree structure based on\n * id and parent id fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.key - Unique key field for each tuple.\n * @param {function(object): *} params.parentKey - Field with key for parent tuple.\n */\nexport default function Stratify(params) {\n Transform.call(this, null, params);\n}\n\nStratify.Definition = {\n \"type\": \"Stratify\",\n \"metadata\": {\"treesource\": true},\n \"params\": [\n { \"name\": \"key\", \"type\": \"field\", \"required\": true },\n { \"name\": \"parentKey\", \"type\": \"field\", \"required\": true }\n ]\n};\n\nvar prototype = inherits(Stratify, Transform);\n\nprototype.transform = function(_, pulse) {\n if (!pulse.source) {\n error('Stratify transform requires an upstream data source.');\n }\n\n var tree = this.value,\n mod = _.modified(),\n out = pulse.fork(pulse.ALL).materialize(pulse.SOURCE),\n run = !this.value\n || mod\n || pulse.changed(pulse.ADD_REM)\n || pulse.modified(_.key.fields)\n || pulse.modified(_.parentKey.fields);\n\n // prevent upstream source pollution\n out.source = out.source.slice();\n\n if (run) {\n if (out.source.length) {\n tree = lookup(\n stratify().id(_.key).parentId(_.parentKey)(out.source)\n , _.key, truthy);\n } else {\n tree = lookup(stratify()([{}]), _.key, _.key);\n }\n }\n\n out.source.root = this.value = tree;\n return out;\n};\n","import roundNode from \"./treemap/round\";\nimport treemapDice from \"./treemap/dice\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import HierarchyLayout from './HierarchyLayout';\nimport {error, inherits} from 'vega-util';\nimport {tree, cluster} from 'd3-hierarchy';\n\nvar Layouts = {\n tidy: tree,\n cluster: cluster\n};\n\nvar Output = ['x', 'y', 'depth', 'children'];\n\n/**\n * Tree layout. Depending on the method parameter, performs either\n * Reingold-Tilford 'tidy' layout or dendrogram 'cluster' layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function Tree(params) {\n HierarchyLayout.call(this, params);\n}\n\nTree.Definition = {\n \"type\": \"Tree\",\n \"metadata\": {\"tree\": true, \"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"method\", \"type\": \"enum\", \"default\": \"tidy\", \"values\": [\"tidy\", \"cluster\"] },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"nodeSize\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"separation\", \"type\": \"boolean\", \"default\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": Output.length, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Tree, HierarchyLayout);\n\n/**\n * Tree layout generator. Supports both 'tidy' and 'cluster' layouts.\n */\nprototype.layout = function(method) {\n var m = method || 'tidy';\n if (Layouts.hasOwnProperty(m)) return Layouts[m]();\n else error('Unrecognized Tree layout method: ' + m);\n};\n\nprototype.params = ['size', 'nodeSize'];\n\nprototype.fields = Output;\n","import {ingest, tupleid, Transform} from 'vega-dataflow';\nimport {error, inherits} from 'vega-util';\n\n /**\n * Generate tuples representing links between tree nodes.\n * The resulting tuples will contain 'source' and 'target' fields,\n * which point to parent and child node tuples, respectively.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function TreeLinks(params) {\n Transform.call(this, [], params);\n}\n\nTreeLinks.Definition = {\n \"type\": \"TreeLinks\",\n \"metadata\": {\"tree\": true, \"generates\": true, \"changes\": true},\n \"params\": []\n};\n\nvar prototype = inherits(TreeLinks, Transform);\n\nprototype.transform = function(_, pulse) {\n var links = this.value,\n tree = pulse.source && pulse.source.root,\n out = pulse.fork(pulse.NO_SOURCE),\n lut = {};\n\n if (!tree) error('TreeLinks transform requires a tree data source.');\n\n if (pulse.changed(pulse.ADD_REM)) {\n // remove previous links\n out.rem = links;\n\n // build lookup table of valid tuples\n pulse.visit(pulse.SOURCE, function(t) { lut[tupleid(t)] = 1; });\n\n // generate links for all edges incident on valid tuples\n tree.each(function(node) {\n var t = node.data,\n p = node.parent && node.parent.data;\n if (p && lut[tupleid(t)] && lut[tupleid(p)]) {\n out.add.push(ingest({source: p, target: t}));\n }\n });\n this.value = out.add;\n }\n\n else if (pulse.changed(pulse.MOD)) {\n // build lookup table of modified tuples\n pulse.visit(pulse.MOD, function(t) { lut[tupleid(t)] = 1; });\n\n // gather links incident on modified tuples\n links.forEach(function(link) {\n if (lut[tupleid(link.source)] || lut[tupleid(link.target)]) {\n out.mod.push(link);\n }\n });\n }\n\n return out;\n};\n","import HierarchyLayout from './HierarchyLayout';\nimport {error, inherits} from 'vega-util';\nimport {\n treemap,\n treemapBinary,\n treemapDice,\n treemapSlice,\n treemapSliceDice,\n treemapSquarify,\n treemapResquarify\n} from 'd3-hierarchy';\n\nvar Tiles = {\n binary: treemapBinary,\n dice: treemapDice,\n slice: treemapSlice,\n slicedice: treemapSliceDice,\n squarify: treemapSquarify,\n resquarify: treemapResquarify\n};\n\nvar Output = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Treemap layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nexport default function Treemap(params) {\n HierarchyLayout.call(this, params);\n}\n\nTreemap.Definition = {\n \"type\": \"Treemap\",\n \"metadata\": {\"tree\": true, \"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"method\", \"type\": \"enum\", \"default\": \"squarify\",\n \"values\": [\"squarify\", \"resquarify\", \"binary\", \"dice\", \"slice\", \"slicedice\"] },\n { \"name\": \"padding\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingInner\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingOuter\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingTop\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingRight\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingBottom\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingLeft\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"ratio\", \"type\": \"number\", \"default\": 1.618033988749895 },\n { \"name\": \"round\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": Output.length, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Treemap, HierarchyLayout);\n\n/**\n * Treemap layout generator. Adds 'method' and 'ratio' parameters\n * to configure the underlying tile method.\n */\nprototype.layout = function() {\n var x = treemap();\n x.ratio = function(_) {\n var t = x.tile();\n if (t.ratio) x.tile(t.ratio(_));\n };\n x.method = function(_) {\n if (Tiles.hasOwnProperty(_)) x.tile(Tiles[_]);\n else error('Unrecognized Treemap layout method: ' + _);\n };\n return x;\n};\n\nprototype.params = [\n 'method', 'ratio', 'size', 'round',\n 'padding', 'paddingInner', 'paddingOuter',\n 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'\n];\n\nprototype.fields = Output;\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice\";\nimport slice from \"./slice\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import roundNode from \"./round\";\nimport squarify from \"./squarify\";\nimport {required} from \"../accessors\";\nimport constant, {constantZero} from \"../constant\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(data, groupby) {\n var groups = [],\n get = function(f) { return f(t); },\n map, i, n, t, k, g;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data);\n } else {\n for (map={}, i=0, n=data.length; i<n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = (g = []);\n g.dims = k;\n groups.push(g);\n }\n g.push(t);\n }\n }\n\n return groups;\n}\n","import partition from './partition';\nimport {regressionLoess} from 'vega-statistics';\nimport {ingest, Transform} from 'vega-dataflow';\nimport {accessorName, inherits} from 'vega-util';\n\n/**\n * Compute locally-weighted regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.bandwidth=0.3] - The loess bandwidth.\n */\nexport default function Loess(params) {\n Transform.call(this, null, params);\n}\n\nLoess.Definition = {\n \"type\": \"Loess\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"x\", \"type\": \"field\", \"required\": true },\n { \"name\": \"y\", \"type\": \"field\", \"required\": true },\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"bandwidth\", \"type\": \"number\", \"default\": 0.3 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true }\n ]\n};\n\nvar prototype = inherits(Loess, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n if (!this.value || pulse.changed() || _.modified()) {\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n m = names.length,\n as = _.as || [accessorName(_.x), accessorName(_.y)],\n values = [];\n\n groups.forEach(g => {\n regressionLoess(g, _.x, _.y, _.bandwidth || 0.3).forEach(p => {\n const t = {};\n for (let i=0; i<m; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = p[0];\n t[as[1]] = p[1];\n values.push(ingest(t));\n });\n });\n\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n\n return out;\n};\n","import partition from './partition';\nimport {ingest, Transform} from 'vega-dataflow';\nimport {\n regressionLinear, regressionLog, regressionExp,\n regressionPow, regressionQuad, regressionPoly, sampleCurve\n} from 'vega-statistics';\nimport {accessorName, error, extent, inherits} from 'vega-util';\n\nconst Methods = {\n linear: regressionLinear,\n log: regressionLog,\n exp: regressionExp,\n pow: regressionPow,\n quad: regressionQuad,\n poly: regressionPoly\n};\n\nfunction degreesOfFreedom(method, order) {\n return method === 'poly' ? order : method === 'quad' ? 2 : 1;\n}\n\n/**\n * Compute regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {string} [params.method='linear'] - The regression method to apply.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {Array<number>} [params.extent] - The domain extent over which to plot the regression line.\n * @param {number} [params.order=3] - The polynomial order. Only applies to the 'poly' method.\n */\nexport default function Regression(params) {\n Transform.call(this, null, params);\n}\n\nRegression.Definition = {\n \"type\": \"Regression\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"x\", \"type\": \"field\", \"required\": true },\n { \"name\": \"y\", \"type\": \"field\", \"required\": true },\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"method\", \"type\": \"string\", \"default\": \"linear\", \"values\": Object.keys(Methods) },\n { \"name\": \"order\", \"type\": \"number\", \"default\": 3 },\n { \"name\": \"extent\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"params\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true }\n ]\n};\n\nvar prototype = inherits(Regression, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n if (!this.value || pulse.changed() || _.modified()) {\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n method = _.method || 'linear',\n order = _.order || 3,\n dof = degreesOfFreedom(method, order),\n as = _.as || [accessorName(_.x), accessorName(_.y)],\n fit = Methods[method],\n values = [];\n\n let domain = _.extent;\n\n if (!Methods.hasOwnProperty(method)) {\n error('Invalid regression method: ' + method);\n }\n\n if (domain != null) {\n if (method === 'log' && domain[0] <= 0) {\n pulse.dataflow.warn('Ignoring extent with values <= 0 for log regression.');\n domain = null;\n }\n }\n\n groups.forEach(g => {\n const n = g.length;\n if (n <= dof) {\n pulse.dataflow.warn('Skipping regression with more parameters than data points.');\n return;\n }\n\n const model = fit(g, _.x, _.y, order);\n\n if (_.params) {\n // if parameter vectors requested return those\n values.push(ingest({\n keys: g.dims,\n coef: model.coef,\n rSquared: model.rSquared\n }));\n return;\n }\n\n const dom = domain || extent(g, _.x),\n add = p => {\n const t = {};\n for (let i=0; i<names.length; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = p[0];\n t[as[1]] = p[1];\n values.push(ingest(t));\n };\n\n if (method === 'linear') {\n // for linear regression we only need the end points\n dom.forEach(x => add([x, model.predict(x)]));\n } else {\n // otherwise return trend line sample points\n sampleCurve(model.predict, dom, 25, 200).forEach(add);\n }\n });\n\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n\n return out;\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\nimport {voronoi} from 'd3-voronoi';\n\nexport default function Voronoi(params) {\n Transform.call(this, null, params);\n}\n\nVoronoi.Definition = {\n \"type\": \"Voronoi\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"x\", \"type\": \"field\", \"required\": true },\n { \"name\": \"y\", \"type\": \"field\", \"required\": true },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"extent\", \"type\": \"array\", \"array\": true, \"length\": 2,\n \"default\": [[-1e5, -1e5], [1e5, 1e5]],\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} },\n { \"name\": \"as\", \"type\": \"string\", \"default\": \"path\" }\n ]\n};\n\nvar prototype = inherits(Voronoi, Transform);\n\nvar defaultExtent = [[-1e5, -1e5], [1e5, 1e5]];\n\nprototype.transform = function(_, pulse) {\n var as = _.as || 'path',\n data = pulse.source,\n diagram, polygons, i, n;\n\n // configure and construct voronoi diagram\n diagram = voronoi().x(_.x).y(_.y);\n if (_.size) diagram.size(_.size);\n else diagram.extent(_.extent || defaultExtent);\n\n this.value = (diagram = diagram(data));\n\n // map polygons to paths\n polygons = diagram.polygons();\n for (i=0, n=data.length; i<n; ++i) {\n data[i][as] = polygons[i]\n ? 'M' + polygons[i].join('L') + 'Z'\n : null;\n }\n\n return pulse.reflow(_.modified()).modifies(as);\n};\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","import {canvas} from 'vega-canvas';\n\n/*\nCopyright (c) 2013, Jason Davies.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n * The name Jason Davies may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL JASON DAVIES BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\nOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nvar cloudRadians = Math.PI / 180,\n cw = 1 << 11 >> 5,\n ch = 1 << 11;\n\nexport default function() {\n var size = [256, 256],\n text,\n font,\n fontSize,\n fontStyle,\n fontWeight,\n rotate,\n padding,\n spiral = archimedeanSpiral,\n words = [],\n random = Math.random,\n cloud = {};\n\n cloud.layout = function() {\n var contextAndRatio = getContext(canvas()),\n board = zeroArray((size[0] >> 5) * size[1]),\n bounds = null,\n n = words.length,\n i = -1,\n tags = [],\n data = words.map(function(d) {\n return {\n text: text(d),\n font: font(d),\n style: fontStyle(d),\n weight: fontWeight(d),\n rotate: rotate(d),\n size: ~~fontSize(d),\n padding: padding(d),\n xoff: 0,\n yoff: 0,\n x1: 0,\n y1: 0,\n x0: 0,\n y0: 0,\n hasText: false,\n sprite: null,\n datum: d\n };\n }).sort(function(a, b) { return b.size - a.size; });\n\n while (++i < n) {\n var d = data[i];\n d.x = (size[0] * (random() + .5)) >> 1;\n d.y = (size[1] * (random() + .5)) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n if (bounds) cloudBounds(bounds, d);\n else bounds = [{x: d.x + d.x0, y: d.y + d.y0}, {x: d.x + d.x1, y: d.y + d.y1}];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n\n return tags;\n };\n\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n var ratio = Math.sqrt(canvas.getContext(\"2d\").getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n\n var context = canvas.getContext(\"2d\");\n context.fillStyle = context.strokeStyle = \"red\";\n context.textAlign = \"center\";\n\n return {context: context, ratio: ratio};\n }\n\n function place(board, tag, bounds) {\n var startX = tag.x,\n startY = tag.y,\n maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n s = spiral(size),\n dt = random() < .5 ? 1 : -1,\n t = -dt,\n dxdy,\n dx,\n dy;\n\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n\n tag.x = startX + dx;\n tag.y = startY + dy;\n\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 ||\n tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n var sprite = tag.sprite,\n w = tag.width >> 5,\n sw = size[0] >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n tag.sprite = null;\n return true;\n }\n }\n }\n return false;\n }\n\n cloud.words = function(_) {\n if (arguments.length) {\n words = _;\n return cloud;\n } else {\n return words;\n }\n };\n\n cloud.size = function(_) {\n if (arguments.length) {\n size = [+_[0], +_[1]];\n return cloud;\n } else {\n return size;\n }\n };\n\n cloud.font = function(_) {\n if (arguments.length) {\n font = functor(_);\n return cloud;\n } else {\n return font;\n }\n };\n\n cloud.fontStyle = function(_) {\n if (arguments.length) {\n fontStyle = functor(_);\n return cloud;\n } else {\n return fontStyle;\n }\n };\n\n cloud.fontWeight = function(_) {\n if (arguments.length) {\n fontWeight = functor(_);\n return cloud;\n } else {\n return fontWeight;\n }\n };\n\n cloud.rotate = function(_) {\n if (arguments.length) {\n rotate = functor(_);\n return cloud;\n } else {\n return rotate;\n }\n };\n\n cloud.text = function(_) {\n if (arguments.length) {\n text = functor(_);\n return cloud;\n } else {\n return text;\n }\n };\n\n cloud.spiral = function(_) {\n if (arguments.length) {\n spiral = spirals[_] || _;\n return cloud;\n } else {\n return spiral;\n }\n };\n\n cloud.fontSize = function(_) {\n if (arguments.length) {\n fontSize = functor(_);\n return cloud;\n } else {\n return fontSize;\n }\n };\n\n cloud.padding = function(_) {\n if (arguments.length) {\n padding = functor(_);\n return cloud;\n } else {\n return padding;\n }\n };\n\n cloud.random = function(_) {\n if (arguments.length) {\n random = _;\n return cloud;\n } else {\n return random;\n }\n };\n\n return cloud;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n var c = contextAndRatio.context,\n ratio = contextAndRatio.ratio;\n\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n var x = 0,\n y = 0,\n maxh = 0,\n n = data.length,\n w, w32, h, i, j;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + \" \" + d.weight + \" \" + ~~((d.size + 1) / ratio) + \"px \" + d.font;\n w = c.measureText(d.text + \"m\").width * ratio;\n h = d.size << 1;\n if (d.rotate) {\n var sr = Math.sin(d.rotate * cloudRadians),\n cr = Math.cos(d.rotate * cloudRadians),\n wcr = w * cr,\n wsr = w * sr,\n hcr = h * cr,\n hsr = h * sr;\n w = (Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = (w + 0x1f) >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= (cw << 5)) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) {\n c.lineWidth = 2 * d.padding;\n c.strokeText(d.text, 0, 0);\n }\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n w = d.width;\n w32 = w >> 5;\n h = d.y1 - d.y0;\n // Zero the buffer\n for (i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n var seen = 0,\n seenRow = -1;\n for (j = 0; j < h; j++) {\n for (i = 0; i < w; i++) {\n var k = w32 * j + (i >> 5),\n m = pixels[((y + j) * (cw << 5) + (x + i)) << 2] ? 1 << (31 - (i % 32)) : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;\n else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n var sprite = tag.sprite,\n w = tag.width >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0))\n & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\n\nfunction cloudBounds(bounds, d) {\n var b0 = bounds[0],\n b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\n\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\n\nfunction archimedeanSpiral(size) {\n var e = size[0] / size[1];\n return function(t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\n\nfunction rectangularSpiral(size) {\n var dy = 4,\n dx = dy * size[0] / size[1],\n x = 0,\n y = 0;\n return function(t) {\n var sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) {\n case 0: x += dx; break;\n case 1: y += dy; break;\n case 2: x -= dx; break;\n default: y -= dy; break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n var a = [],\n i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\n\nfunction functor(d) {\n return typeof d === \"function\" ? d : function() { return d; };\n}\n\nvar spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\n","import cloud from './CloudLayout';\nimport {Transform} from 'vega-dataflow';\nimport {constant, error, inherits, isFunction} from 'vega-util';\nimport {scale} from 'vega-scale';\nimport {random} from 'vega-statistics';\n\nvar Output = ['x', 'y', 'font', 'fontSize', 'fontStyle', 'fontWeight', 'angle'];\n\nvar Params = ['text', 'font', 'rotate', 'fontSize', 'fontStyle', 'fontWeight'];\n\nexport default function Wordcloud(params) {\n Transform.call(this, cloud(), params);\n}\n\nWordcloud.Definition = {\n \"type\": \"Wordcloud\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"font\", \"type\": \"string\", \"expr\": true, \"default\": \"sans-serif\" },\n { \"name\": \"fontStyle\", \"type\": \"string\", \"expr\": true, \"default\": \"normal\" },\n { \"name\": \"fontWeight\", \"type\": \"string\", \"expr\": true, \"default\": \"normal\" },\n { \"name\": \"fontSize\", \"type\": \"number\", \"expr\": true, \"default\": 14 },\n { \"name\": \"fontSizeRange\", \"type\": \"number\", \"array\": \"nullable\", \"default\": [10, 50] },\n { \"name\": \"rotate\", \"type\": \"number\", \"expr\": true, \"default\": 0 },\n { \"name\": \"text\", \"type\": \"field\" },\n { \"name\": \"spiral\", \"type\": \"string\", \"values\": [\"archimedean\", \"rectangular\"] },\n { \"name\": \"padding\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 7, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Wordcloud, Transform);\n\nprototype.transform = function(_, pulse) {\n if (_.size && !(_.size[0] && _.size[1])) {\n error('Wordcloud size dimensions must be non-zero.');\n }\n\n function modp(param) {\n var p = _[param];\n return isFunction(p) && pulse.modified(p.fields);\n }\n\n var mod = _.modified();\n if (!(mod || pulse.changed(pulse.ADD_REM) || Params.some(modp))) return;\n\n var data = pulse.materialize(pulse.SOURCE).source,\n layout = this.value,\n as = _.as || Output,\n fontSize = _.fontSize || 14,\n range;\n\n isFunction(fontSize)\n ? (range = _.fontSizeRange)\n : (fontSize = constant(fontSize));\n\n // create font size scaling function as needed\n if (range) {\n var fsize = fontSize,\n sizeScale = scale('sqrt')()\n .domain(extent(fsize, data))\n .range(range);\n fontSize = function(x) { return sizeScale(fsize(x)); };\n }\n\n data.forEach(function(t) {\n t[as[0]] = NaN;\n t[as[1]] = NaN;\n t[as[3]] = 0;\n });\n\n // configure layout\n var words = layout\n .words(data)\n .text(_.text)\n .size(_.size || [500, 500])\n .padding(_.padding || 1)\n .spiral(_.spiral || 'archimedean')\n .rotate(_.rotate || 0)\n .font(_.font || 'sans-serif')\n .fontStyle(_.fontStyle || 'normal')\n .fontWeight(_.fontWeight || 'normal')\n .fontSize(fontSize)\n .random(random)\n .layout();\n\n var size = layout.size(),\n dx = size[0] >> 1,\n dy = size[1] >> 1,\n i = 0,\n n = words.length,\n w, t;\n\n for (; i<n; ++i) {\n w = words[i];\n t = w.datum;\n t[as[0]] = w.x + dx;\n t[as[1]] = w.y + dy;\n t[as[2]] = w.font;\n t[as[3]] = w.size;\n t[as[4]] = w.style;\n t[as[5]] = w.weight;\n t[as[6]] = w.rotate;\n }\n\n return pulse.reflow(mod).modifies(as);\n};\n\nfunction extent(field, data) {\n var min = +Infinity,\n max = -Infinity,\n i = 0,\n n = data.length,\n v;\n\n for (; i<n; ++i) {\n v = field(data[i]);\n if (v < min) min = v;\n if (v > max) max = v;\n }\n\n return [min, max];\n}\n","export function array8(n) { return new Uint8Array(n); }\n\nexport function array16(n) { return new Uint16Array(n); }\n\nexport function array32(n) { return new Uint32Array(n); }\n","import {array8, array16, array32} from './arrays';\n\n/**\n * Maintains CrossFilter state.\n */\nexport default function Bitmaps() {\n\n var width = 8,\n data = [],\n seen = array32(0),\n curr = array(0, width),\n prev = array(0, width);\n\n return {\n\n data: function() { return data; },\n\n seen: function() {\n return (seen = lengthen(seen, data.length));\n },\n\n add: function(array) {\n for (var i=0, j=data.length, n=array.length, t; i<n; ++i) {\n t = array[i];\n t._index = j++;\n data.push(t);\n }\n },\n\n remove: function(num, map) { // map: index -> boolean (true => remove)\n var n = data.length,\n copy = Array(n - num),\n reindex = data, // reuse old data array for index map\n t, i, j;\n\n // seek forward to first removal\n for (i=0; !map[i] && i<n; ++i) {\n copy[i] = data[i];\n reindex[i] = i;\n }\n\n // condense arrays\n for (j=i; i<n; ++i) {\n t = data[i];\n if (!map[i]) {\n reindex[i] = j;\n curr[j] = curr[i];\n prev[j] = prev[i];\n copy[j] = t;\n t._index = j++;\n } else {\n reindex[i] = -1;\n }\n curr[i] = 0; // clear unused bits\n }\n\n data = copy;\n return reindex;\n },\n\n size: function() { return data.length; },\n\n curr: function() { return curr; },\n\n prev: function() { return prev; },\n\n reset: function(k) { prev[k] = curr[k]; },\n\n all: function() {\n return width < 0x101 ? 0xff : width < 0x10001 ? 0xffff : 0xffffffff;\n },\n\n set: function(k, one) { curr[k] |= one; },\n\n clear: function(k, one) { curr[k] &= ~one; },\n\n resize: function(n, m) {\n var k = curr.length;\n if (n > k || m > width) {\n width = Math.max(m, width);\n curr = array(n, width, curr);\n prev = array(n, width);\n }\n }\n };\n}\n\nfunction lengthen(array, length, copy) {\n if (array.length >= length) return array;\n copy = copy || new array.constructor(length);\n copy.set(array);\n return copy;\n}\n\nfunction array(n, m, array) {\n var copy = (m < 0x101 ? array8 : m < 0x10001 ? array16 : array32)(n);\n if (array) copy.set(array);\n return copy;\n}\n","export default function(index, i, query) {\n var bit = (1 << i);\n\n return {\n one: bit,\n zero: ~bit,\n range: query.slice(),\n bisect: index.bisect,\n index: index.index,\n size: index.size,\n\n onAdd: function(added, curr) {\n var dim = this,\n range = dim.bisect(dim.range, added.value),\n idx = added.index,\n lo = range[0],\n hi = range[1],\n n1 = idx.length, i;\n\n for (i=0; i<lo; ++i) curr[idx[i]] |= bit;\n for (i=hi; i<n1; ++i) curr[idx[i]] |= bit;\n return dim;\n }\n };\n}\n","import {array32} from './arrays';\nimport {bisectLeft, bisectRight, permute} from 'd3-array';\n\n/**\n * Maintains a list of values, sorted by key.\n */\nexport default function SortedIndex() {\n var index = array32(0),\n value = [],\n size = 0;\n\n function insert(key, data, base) {\n if (!data.length) return [];\n\n var n0 = size,\n n1 = data.length,\n addv = Array(n1),\n addi = array32(n1),\n oldv, oldi, i;\n\n for (i=0; i<n1; ++i) {\n addv[i] = key(data[i]);\n addi[i] = i;\n }\n addv = sort(addv, addi);\n\n if (n0) {\n oldv = value;\n oldi = index;\n value = Array(n0 + n1);\n index = array32(n0 + n1);\n merge(base, oldv, oldi, n0, addv, addi, n1, value, index);\n } else {\n if (base > 0) for (i=0; i<n1; ++i) {\n addi[i] += base;\n }\n value = addv;\n index = addi;\n }\n size = n0 + n1;\n\n return {index: addi, value: addv};\n }\n\n function remove(num, map) {\n // map: index -> remove\n var n = size,\n idx, i, j;\n\n // seek forward to first removal\n for (i=0; !map[index[i]] && i<n; ++i);\n\n // condense index and value arrays\n for (j=i; i<n; ++i) {\n if (!map[idx=index[i]]) {\n index[j] = idx;\n value[j] = value[i];\n ++j;\n }\n }\n\n size = n - num;\n }\n\n function reindex(map) {\n for (var i=0, n=size; i<n; ++i) {\n index[i] = map[index[i]];\n }\n }\n\n function bisect(range, array) {\n var n;\n if (array) {\n n = array.length;\n } else {\n array = value;\n n = size;\n }\n return [\n bisectLeft(array, range[0], 0, n),\n bisectRight(array, range[1], 0, n)\n ];\n }\n\n return {\n insert: insert,\n remove: remove,\n bisect: bisect,\n reindex: reindex,\n index: function() { return index; },\n size: function() { return size; }\n };\n}\n\nfunction sort(values, index) {\n values.sort.call(index, function(a, b) {\n var x = values[a],\n y = values[b];\n return x < y ? -1 : x > y ? 1 : 0;\n });\n return permute(values, index);\n}\n\nfunction merge(base, value0, index0, n0, value1, index1, n1, value, index) {\n var i0 = 0, i1 = 0, i;\n\n for (i=0; i0 < n0 && i1 < n1; ++i) {\n if (value0[i0] < value1[i1]) {\n value[i] = value0[i0];\n index[i] = index0[i0++];\n } else {\n value[i] = value1[i1];\n index[i] = index1[i1++] + base;\n }\n }\n\n for (; i0 < n0; ++i0, ++i) {\n value[i] = value0[i0];\n index[i] = index0[i0];\n }\n\n for (; i1 < n1; ++i1, ++i) {\n value[i] = value1[i1];\n index[i] = index1[i1] + base;\n }\n}\n","import Bitmaps from './Bitmaps';\nimport Dimension from './Dimension';\nimport SortedIndex from './SortedIndex';\nimport {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * An indexed multi-dimensional filter.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.fields - An array of dimension accessors to filter.\n * @param {Array} params.query - An array of per-dimension range queries.\n */\nexport default function CrossFilter(params) {\n Transform.call(this, Bitmaps(), params);\n this._indices = null;\n this._dims = null;\n}\n\nCrossFilter.Definition = {\n \"type\": \"CrossFilter\",\n \"metadata\": {},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true },\n { \"name\": \"query\", \"type\": \"array\", \"array\": true, \"required\": true,\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} }\n ]\n};\n\nvar prototype = inherits(CrossFilter, Transform);\n\nprototype.transform = function(_, pulse) {\n if (!this._dims) {\n return this.init(_, pulse);\n } else {\n var init = _.modified('fields')\n || _.fields.some(function(f) { return pulse.modified(f.fields); });\n\n return init\n ? this.reinit(_, pulse)\n : this.eval(_, pulse);\n }\n};\n\nprototype.init = function(_, pulse) {\n var fields = _.fields,\n query = _.query,\n indices = this._indices = {},\n dims = this._dims = [],\n m = query.length,\n i = 0, key, index;\n\n // instantiate indices and dimensions\n for (; i<m; ++i) {\n key = fields[i].fname;\n index = indices[key] || (indices[key] = SortedIndex());\n dims.push(Dimension(index, i, query[i]));\n }\n\n return this.eval(_, pulse);\n};\n\nprototype.reinit = function(_, pulse) {\n var output = pulse.materialize().fork(),\n fields = _.fields,\n query = _.query,\n indices = this._indices,\n dims = this._dims,\n bits = this.value,\n curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all(),\n out = (output.rem = output.add),\n mod = output.mod,\n m = query.length,\n adds = {}, add, index, key,\n mods, remMap, modMap, i, n, f;\n\n // set prev to current state\n prev.set(curr);\n\n // if pulse has remove tuples, process them first\n if (pulse.rem.length) {\n remMap = this.remove(_, pulse, output);\n }\n\n // if pulse has added tuples, add them to state\n if (pulse.add.length) {\n bits.add(pulse.add);\n }\n\n // if pulse has modified tuples, create an index map\n if (pulse.mod.length) {\n modMap = {};\n for (mods=pulse.mod, i=0, n=mods.length; i<n; ++i) {\n modMap[mods[i]._index] = 1;\n }\n }\n\n // re-initialize indices as needed, update curr bitmap\n for (i=0; i<m; ++i) {\n f = fields[i];\n if (!dims[i] || _.modified('fields', i) || pulse.modified(f.fields)) {\n key = f.fname;\n if (!(add = adds[key])) {\n indices[key] = index = SortedIndex();\n adds[key] = add = index.insert(f, pulse.source, 0);\n }\n dims[i] = Dimension(index, i, query[i]).onAdd(add, curr);\n }\n }\n\n // visit each tuple\n // if filter state changed, push index to add/rem\n // else if in mod and passes a filter, push index to mod\n for (i=0, n=bits.data().length; i<n; ++i) {\n if (remMap[i]) { // skip if removed tuple\n continue;\n } else if (prev[i] !== curr[i]) { // add if state changed\n out.push(i);\n } else if (modMap[i] && curr[i] !== all) { // otherwise, pass mods through\n mod.push(i);\n }\n }\n\n bits.mask = (1 << m) - 1;\n return output;\n};\n\nprototype.eval = function(_, pulse) {\n var output = pulse.materialize().fork(),\n m = this._dims.length,\n mask = 0;\n\n if (pulse.rem.length) {\n this.remove(_, pulse, output);\n mask |= (1 << m) - 1;\n }\n\n if (_.modified('query') && !_.modified('fields')) {\n mask |= this.update(_, pulse, output);\n }\n\n if (pulse.add.length) {\n this.insert(_, pulse, output);\n mask |= (1 << m) - 1;\n }\n\n if (pulse.mod.length) {\n this.modify(pulse, output);\n mask |= (1 << m) - 1;\n }\n\n this.value.mask = mask;\n return output;\n};\n\nprototype.insert = function(_, pulse, output) {\n var tuples = pulse.add,\n bits = this.value,\n dims = this._dims,\n indices = this._indices,\n fields = _.fields,\n adds = {},\n out = output.add,\n k = bits.size(),\n n = k + tuples.length,\n m = dims.length, j, key, add;\n\n // resize bitmaps and add tuples as needed\n bits.resize(n, m);\n bits.add(tuples);\n\n var curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all();\n\n // add to dimensional indices\n for (j=0; j<m; ++j) {\n key = fields[j].fname;\n add = adds[key] || (adds[key] = indices[key].insert(fields[j], tuples, k));\n dims[j].onAdd(add, curr);\n }\n\n // set previous filters, output if passes at least one filter\n for (; k<n; ++k) {\n prev[k] = all;\n if (curr[k] !== all) out.push(k);\n }\n};\n\nprototype.modify = function(pulse, output) {\n var out = output.mod,\n bits = this.value,\n curr = bits.curr(),\n all = bits.all(),\n tuples = pulse.mod,\n i, n, k;\n\n for (i=0, n=tuples.length; i<n; ++i) {\n k = tuples[i]._index;\n if (curr[k] !== all) out.push(k);\n }\n};\n\nprototype.remove = function(_, pulse, output) {\n var indices = this._indices,\n bits = this.value,\n curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all(),\n map = {},\n out = output.rem,\n tuples = pulse.rem,\n i, n, k, f;\n\n // process tuples, output if passes at least one filter\n for (i=0, n=tuples.length; i<n; ++i) {\n k = tuples[i]._index;\n map[k] = 1; // build index map\n prev[k] = (f = curr[k]);\n curr[k] = all;\n if (f !== all) out.push(k);\n }\n\n // remove from dimensional indices\n for (k in indices) {\n indices[k].remove(n, map);\n }\n\n this.reindex(pulse, n, map);\n return map;\n};\n\n// reindex filters and indices after propagation completes\nprototype.reindex = function(pulse, num, map) {\n var indices = this._indices,\n bits = this.value;\n\n pulse.runAfter(function() {\n var indexMap = bits.remove(num, map);\n for (var key in indices) indices[key].reindex(indexMap);\n });\n};\n\nprototype.update = function(_, pulse, output) {\n var dims = this._dims,\n query = _.query,\n stamp = pulse.stamp,\n m = dims.length,\n mask = 0, i, q;\n\n // survey how many queries have changed\n output.filters = 0;\n for (q=0; q<m; ++q) {\n if (_.modified('query', q)) { i = q; ++mask; }\n }\n\n if (mask === 1) {\n // only one query changed, use more efficient update\n mask = dims[i].one;\n this.incrementOne(dims[i], query[i], output.add, output.rem);\n } else {\n // multiple queries changed, perform full record keeping\n for (q=0, mask=0; q<m; ++q) {\n if (!_.modified('query', q)) continue;\n mask |= dims[q].one;\n this.incrementAll(dims[q], query[q], stamp, output.add);\n output.rem = output.add; // duplicate add/rem for downstream resolve\n }\n }\n\n return mask;\n};\n\nprototype.incrementAll = function(dim, query, stamp, out) {\n var bits = this.value,\n seen = bits.seen(),\n curr = bits.curr(),\n prev = bits.prev(),\n index = dim.index(),\n old = dim.bisect(dim.range),\n range = dim.bisect(query),\n lo1 = range[0],\n hi1 = range[1],\n lo0 = old[0],\n hi0 = old[1],\n one = dim.one,\n i, j, k;\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n }\n\n dim.range = query.slice();\n};\n\nprototype.incrementOne = function(dim, query, add, rem) {\n var bits = this.value,\n curr = bits.curr(),\n index = dim.index(),\n old = dim.bisect(dim.range),\n range = dim.bisect(query),\n lo1 = range[0],\n hi1 = range[1],\n lo0 = old[0],\n hi0 = old[1],\n one = dim.one,\n i, j, k;\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n add.push(k);\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n rem.push(k);\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n add.push(k);\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n rem.push(k);\n }\n }\n\n dim.range = query.slice();\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Selectively filters tuples by resolving against a filter bitmap.\n * Useful for processing the output of a cross-filter transform.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.ignore - A bit mask indicating which filters to ignore.\n * @param {object} params.filter - The per-tuple filter bitmaps. Typically this\n * parameter value is a reference to a {@link CrossFilter} transform.\n */\nexport default function ResolveFilter(params) {\n Transform.call(this, null, params);\n}\n\nResolveFilter.Definition = {\n \"type\": \"ResolveFilter\",\n \"metadata\": {},\n \"params\": [\n { \"name\": \"ignore\", \"type\": \"number\", \"required\": true,\n \"description\": \"A bit mask indicating which filters to ignore.\" },\n { \"name\": \"filter\", \"type\": \"object\", \"required\": true,\n \"description\": \"Per-tuple filter bitmaps from a CrossFilter transform.\" }\n ]\n};\n\nvar prototype = inherits(ResolveFilter, Transform);\n\nprototype.transform = function(_, pulse) {\n var ignore = ~(_.ignore || 0), // bit mask where zeros -> dims to ignore\n bitmap = _.filter,\n mask = bitmap.mask;\n\n // exit early if no relevant filter changes\n if ((mask & ignore) === 0) return pulse.StopPropagation;\n\n var output = pulse.fork(pulse.ALL),\n data = bitmap.data(),\n curr = bitmap.curr(),\n prev = bitmap.prev(),\n pass = function(k) {\n return !(curr[k] & ignore) ? data[k] : null;\n };\n\n // propagate all mod tuples that pass the filter\n output.filter(output.MOD, pass);\n\n // determine add & rem tuples via filter functions\n // for efficiency, we do *not* populate new arrays,\n // instead we add filter functions applied downstream\n\n if (!(mask & (mask-1))) { // only one filter changed\n output.filter(output.ADD, pass);\n output.filter(output.REM, function(k) {\n return (curr[k] & ignore) === mask ? data[k] : null;\n });\n\n } else { // multiple filters changed\n output.filter(output.ADD, function(k) {\n var c = curr[k] & ignore,\n f = !c && (c ^ (prev[k] & ignore));\n return f ? data[k] : null;\n });\n output.filter(output.REM, function(k) {\n var c = curr[k] & ignore,\n f = c && !(c ^ (c ^ (prev[k] & ignore)));\n return f ? data[k] : null;\n });\n }\n\n // add filter to source data in case of reflow...\n return output.filter(output.SOURCE, function(t) { return pass(t._index); });\n};\n","import {isString} from 'vega-util';\n\nvar Default = 'default';\n\nexport default function(view) {\n var cursor = view._signals.cursor;\n\n // add cursor signal to dataflow, if needed\n if (!cursor) {\n view._signals.cursor = (cursor = view.add({user: Default, item: null}));\n }\n\n // evaluate cursor on each mousemove event\n view.on(view.events('view', 'mousemove'), cursor,\n function(_, event) {\n var value = cursor.value,\n user = value ? (isString(value) ? value : value.user) : Default,\n item = event.item && event.item.cursor || null;\n\n return (value && user === value.user && item == value.item) ? value\n : {user: user, item: item};\n }\n );\n\n // when cursor signal updates, set visible cursor\n view.add(null, function(_) {\n var user = _.cursor,\n item = this.value;\n\n if (!isString(user)) {\n item = user.item;\n user = user.user;\n }\n\n setCursor(user && user !== Default ? user : (item || user));\n\n return item;\n }, {cursor: cursor});\n}\n\nfunction setCursor(cursor) {\n // set cursor on document body\n // this ensures cursor applies even if dragging out of view\n if (typeof document !== 'undefined' && document.body) {\n document.body.style.cursor = cursor;\n }\n}\n","import {changeset, isChangeSet} from 'vega-dataflow';\nimport {error} from 'vega-util';\n\nexport function dataref(view, name) {\n var data = view._runtime.data;\n if (!data.hasOwnProperty(name)) {\n error('Unrecognized data set: ' + name);\n }\n return data[name];\n}\n\nexport function data(name) {\n return dataref(this, name).values.value;\n}\n\nexport function change(name, changes) {\n if (!isChangeSet(changes)) {\n error('Second argument to changes must be a changeset.');\n }\n var dataset = dataref(this, name);\n dataset.modified = true;\n return this.pulse(dataset.input, changes);\n}\n\nexport function insert(name, _) {\n return change.call(this, name, changeset().insert(_));\n}\n\nexport function remove(name, _) {\n return change.call(this, name, changeset().remove(_));\n}\n","export function width(view) {\n var padding = view.padding();\n return Math.max(0, view._viewWidth + padding.left + padding.right);\n}\n\nexport function height(view) {\n var padding = view.padding();\n return Math.max(0, view._viewHeight + padding.top + padding.bottom);\n}\n\nexport function offset(view) {\n var padding = view.padding(),\n origin = view._origin;\n return [\n padding.left + origin[0],\n padding.top + origin[1]\n ];\n}\n\nexport function resizeRenderer(view) {\n var origin = offset(view),\n w = width(view),\n h = height(view);\n\n view._renderer.background(view._background);\n view._renderer.resize(w, h, origin);\n view._handler.origin(origin);\n\n view._resizeListeners.forEach(function(handler) {\n try {\n handler(w, h);\n } catch (error) {\n view.error(error);\n }\n });\n}\n","import {offset} from './render-size';\nimport {constant, isString} from 'vega-util';\nimport {point} from 'vega-scenegraph';\n\n/**\n * Extend an event with additional view-specific methods.\n * Adds a new property ('vega') to an event that provides a number\n * of methods for querying information about the current interaction.\n * The vega object provides the following methods:\n * view - Returns the backing View instance.\n * item - Returns the currently active scenegraph item (if any).\n * group - Returns the currently active scenegraph group (if any).\n * This method accepts a single string-typed argument indicating the name\n * of the desired parent group. The scenegraph will be traversed from\n * the item up towards the root to search for a matching group. If no\n * argument is provided the enclosing group for the active item is\n * returned, unless the item it itself a group, in which case it is\n * returned directly.\n * xy - Returns a two-element array containing the x and y coordinates for\n * mouse or touch events. For touch events, this is based on the first\n * elements in the changedTouches array. This method accepts a single\n * argument: either an item instance or mark name that should serve as\n * the reference coordinate system. If no argument is provided the\n * top-level view coordinate system is assumed.\n * x - Returns the current x-coordinate, accepts the same arguments as xy.\n * y - Returns the current y-coordinate, accepts the same arguments as xy.\n * @param {Event} event - The input event to extend.\n * @param {Item} item - The currently active scenegraph item (if any).\n * @return {Event} - The extended input event.\n */\nexport default function(view, event, item) {\n var r = view._renderer,\n el = r && r.canvas(),\n p, e, translate;\n\n if (el) {\n translate = offset(view);\n e = event.changedTouches ? event.changedTouches[0] : event;\n p = point(e, el);\n p[0] -= translate[0];\n p[1] -= translate[1];\n }\n\n event.dataflow = view;\n event.item = item;\n event.vega = extension(view, item, p);\n return event;\n}\n\nfunction extension(view, item, point) {\n var itemGroup = item\n ? item.mark.marktype === 'group' ? item : item.mark.group\n : null;\n\n function group(name) {\n var g = itemGroup, i;\n if (name) for (i = item; i; i = i.mark.group) {\n if (i.mark.name === name) { g = i; break; }\n }\n return g && g.mark && g.mark.interactive ? g : {};\n }\n\n function xy(item) {\n if (!item) return point;\n if (isString(item)) item = group(item);\n\n var p = point.slice();\n while (item) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n item = item.mark && item.mark.group;\n }\n return p;\n }\n\n return {\n view: constant(view),\n item: constant(item || {}),\n group: group,\n xy: xy,\n x: function(item) { return xy(item)[0]; },\n y: function(item) { return xy(item)[1]; }\n };\n}\n","import eventExtend from './events-extend';\nimport {EventStream} from 'vega-dataflow';\nimport {extend, isArray, toSet} from 'vega-util';\n\nvar VIEW = 'view',\n TIMER = 'timer',\n WINDOW = 'window',\n NO_TRAP = {trap: false};\n\n/**\n * Initialize event handling configuration.\n * @param {object} config - The configuration settings.\n * @return {object}\n */\nexport function initializeEventConfig(config) {\n config = extend({}, config);\n\n var def = config.defaults;\n if (def) {\n if (isArray(def.prevent)) {\n def.prevent = toSet(def.prevent);\n }\n if (isArray(def.allow)) {\n def.allow = toSet(def.allow);\n }\n }\n\n return config;\n}\n\nfunction prevent(view, type) {\n var def = view._eventConfig.defaults,\n prevent = def && def.prevent,\n allow = def && def.allow;\n\n return prevent === false || allow === true ? false\n : prevent === true || allow === false ? true\n : prevent ? prevent[type]\n : allow ? !allow[type]\n : view.preventDefault();\n}\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @return {EventStream}\n */\nexport function events(source, type, filter) {\n var view = this,\n s = new EventStream(filter),\n send = function(e, item) {\n view.runAsync(null, () => {\n if (source === VIEW && prevent(view, type)) {\n e.preventDefault();\n }\n s.receive(eventExtend(view, e, item));\n });\n },\n sources;\n\n if (source === TIMER) {\n view.timer(send, type);\n }\n\n else if (source === VIEW) {\n // send traps errors, so use {trap: false} option\n view.addEventListener(type, send, NO_TRAP);\n }\n\n else {\n if (source === WINDOW) {\n if (typeof window !== 'undefined') sources = [window];\n } else if (typeof document !== 'undefined') {\n sources = document.querySelectorAll(source);\n }\n\n if (!sources) {\n view.warn('Can not resolve event source: ' + source);\n } else {\n for (var i=0, n=sources.length; i<n; ++i) {\n sources[i].addEventListener(type, send);\n }\n\n view._eventListeners.push({\n type: type,\n sources: sources,\n handler: send\n });\n }\n }\n\n return s;\n}\n","function itemFilter(event) {\n return event.item;\n}\n\nfunction markTarget(event) {\n // grab upstream collector feeding the mark operator\n var source = event.item.mark.source;\n return source.source || source;\n}\n\nfunction invoke(name) {\n return function(_, event) {\n return event.vega.view()\n .changeset()\n .encode(event.item, name);\n };\n}\n\nexport default function(hoverSet, leaveSet) {\n hoverSet = [hoverSet || 'hover'];\n leaveSet = [leaveSet || 'update', hoverSet[0]];\n\n // invoke hover set upon mouseover\n this.on(\n this.events('view', 'mouseover', itemFilter),\n markTarget,\n invoke(hoverSet)\n );\n\n // invoke leave set upon mouseout\n this.on(\n this.events('view', 'mouseout', itemFilter),\n markTarget,\n invoke(leaveSet)\n );\n\n return this;\n}\n","export default function(tag, attr, text) {\n var el = document.createElement(tag);\n for (var key in attr) el.setAttribute(key, attr[key]);\n if (text != null) el.textContent = text;\n return el;\n}\n","import element from './element';\nimport {debounce} from 'vega-util';\nimport {tickStep} from 'd3-array';\n\nvar BindClass = 'vega-bind',\n NameClass = 'vega-bind-name',\n RadioClass = 'vega-bind-radio',\n OptionClass = 'vega-option-';\n\n/**\n * Bind a signal to an external HTML input element. The resulting two-way\n * binding will propagate input changes to signals, and propagate signal\n * changes to the input element state. If this view instance has no parent\n * element, we assume the view is headless and no bindings are created.\n * @param {Element|string} el - The parent DOM element to which the input\n * element should be appended as a child. If string-valued, this argument\n * will be treated as a CSS selector. If null or undefined, the parent\n * element of this view will be used as the element.\n * @param {object} param - The binding parameters which specify the signal\n * to bind to, the input element type, and type-specific configuration.\n * @return {View} - This view instance.\n */\nexport default function(view, el, binding) {\n if (!el) return;\n\n var param = binding.param,\n bind = binding.state;\n\n if (!bind) {\n bind = binding.state = {\n elements: null,\n active: false,\n set: null,\n update: function(value) {\n if (value !== view.signal(param.signal)) {\n view.runAsync(null, function() {\n bind.source = true;\n view.signal(param.signal, value);\n });\n }\n }\n };\n if (param.debounce) {\n bind.update = debounce(param.debounce, bind.update);\n }\n }\n\n generate(bind, el, param, view.signal(param.signal));\n\n if (!bind.active) {\n view.on(view._signals[param.signal], null, function() {\n bind.source\n ? (bind.source = false)\n : bind.set(view.signal(param.signal));\n });\n bind.active = true;\n }\n\n return bind;\n}\n\n/**\n * Generate an HTML input form element and bind it to a signal.\n */\nfunction generate(bind, el, param, value) {\n var div = element('div', {'class': BindClass});\n\n div.appendChild(element('span',\n {'class': NameClass},\n (param.name || param.signal)\n ));\n\n el.appendChild(div);\n\n var input = form;\n switch (param.input) {\n case 'checkbox': input = checkbox; break;\n case 'select': input = select; break;\n case 'radio': input = radio; break;\n case 'range': input = range; break;\n }\n\n input(bind, div, param, value);\n}\n\n/**\n * Generates an arbitrary input form element.\n * The input type is controlled via user-provided parameters.\n */\nfunction form(bind, el, param, value) {\n var node = element('input');\n\n for (var key in param) {\n if (key !== 'signal' && key !== 'element') {\n node.setAttribute(key === 'input' ? 'type' : key, param[key]);\n }\n }\n node.setAttribute('name', param.signal);\n node.value = value;\n\n el.appendChild(node);\n\n node.addEventListener('input', function() {\n bind.update(node.value);\n });\n\n bind.elements = [node];\n bind.set = function(value) { node.value = value; };\n}\n\n/**\n * Generates a checkbox input element.\n */\nfunction checkbox(bind, el, param, value) {\n var attr = {type: 'checkbox', name: param.signal};\n if (value) attr.checked = true;\n var node = element('input', attr);\n\n el.appendChild(node);\n\n node.addEventListener('change', function() {\n bind.update(node.checked);\n });\n\n bind.elements = [node];\n bind.set = function(value) { node.checked = !!value || null; }\n}\n\n/**\n * Generates a selection list input element.\n */\nfunction select(bind, el, param, value) {\n var node = element('select', {name: param.signal});\n\n param.options.forEach(function(option) {\n var attr = {value: option};\n if (valuesEqual(option, value)) attr.selected = true;\n node.appendChild(element('option', attr, option+''));\n });\n\n el.appendChild(node);\n\n node.addEventListener('change', function() {\n bind.update(param.options[node.selectedIndex]);\n });\n\n bind.elements = [node];\n bind.set = function(value) {\n for (var i=0, n=param.options.length; i<n; ++i) {\n if (valuesEqual(param.options[i], value)) {\n node.selectedIndex = i; return;\n }\n }\n };\n}\n\n/**\n * Generates a radio button group.\n */\nfunction radio(bind, el, param, value) {\n var group = element('span', {'class': RadioClass});\n\n el.appendChild(group);\n\n bind.elements = param.options.map(function(option) {\n var id = OptionClass + param.signal + '-' + option;\n\n var attr = {\n id: id,\n type: 'radio',\n name: param.signal,\n value: option\n };\n if (valuesEqual(option, value)) attr.checked = true;\n\n var input = element('input', attr);\n\n input.addEventListener('change', function() {\n bind.update(option);\n });\n\n group.appendChild(input);\n group.appendChild(element('label', {'for': id}, option+''));\n\n return input;\n });\n\n bind.set = function(value) {\n var nodes = bind.elements,\n i = 0,\n n = nodes.length;\n for (; i<n; ++i) {\n if (valuesEqual(nodes[i].value, value)) nodes[i].checked = true;\n }\n };\n}\n\n/**\n * Generates a slider input element.\n */\nfunction range(bind, el, param, value) {\n value = value !== undefined ? value : ((+param.max) + (+param.min)) / 2;\n\n var min = param.min || Math.min(0, +value) || 0,\n max = param.max || Math.max(100, +value) || 100,\n step = param.step || tickStep(min, max, 100);\n\n var node = element('input', {\n type: 'range',\n name: param.signal,\n min: min,\n max: max,\n step: step\n });\n node.value = value;\n\n var label = element('label', {}, +value);\n\n el.appendChild(node);\n el.appendChild(label);\n\n function update() {\n label.textContent = node.value;\n bind.update(+node.value);\n }\n\n // subscribe to both input and change\n node.addEventListener('input', update);\n node.addEventListener('change', update);\n\n bind.elements = [node];\n bind.set = function(value) {\n node.value = value;\n label.textContent = value;\n };\n}\n\nfunction valuesEqual(a, b) {\n return a === b || (a+'' === b+'');\n}\n","import {width, height, offset} from './render-size';\n\nexport default function(view, r, el, constructor, scaleFactor, opt) {\n r = r || new constructor(view.loader());\n return r\n .initialize(el, width(view), height(view), offset(view), scaleFactor, opt)\n .background(view._background);\n}\n","export default function(view, fn) {\n return !fn ? null : function() {\n try {\n fn.apply(this, arguments);\n } catch (error) {\n view.error(error);\n }\n };\n}\n","import bind from './bind';\nimport element from './element';\nimport initializeRenderer from './initialize-renderer';\nimport initializeHandler from './initialize-handler';\nimport {CanvasHandler, renderModule} from 'vega-scenegraph';\n\nexport default function(el, elBind) {\n var view = this,\n type = view._renderType,\n module = renderModule(type),\n Handler, Renderer;\n\n // containing dom element\n el = view._el = el ? lookup(view, el) : null;\n\n // select appropriate renderer & handler\n if (!module) view.error('Unrecognized renderer type: ' + type);\n Handler = module.handler || CanvasHandler;\n Renderer = (el ? module.renderer : module.headless);\n\n // initialize renderer and input handler\n view._renderer = !Renderer ? null\n : initializeRenderer(view, view._renderer, el, Renderer);\n view._handler = initializeHandler(view, view._handler, el, Handler);\n view._redraw = true;\n\n // initialize signal bindings\n if (el) {\n elBind = elBind ? (view._elBind = lookup(view, elBind))\n : el.appendChild(element('div', {'class': 'vega-bindings'}));\n\n view._bind.forEach(function(_) {\n if (_.param.element) {\n _.element = lookup(view, _.param.element);\n }\n });\n\n view._bind.forEach(function(_) {\n bind(view, _.element || elBind, _);\n });\n }\n\n return view;\n}\n\nfunction lookup(view, el) {\n if (typeof el === 'string') {\n if (typeof document !== 'undefined') {\n el = document.querySelector(el);\n if (!el) {\n view.error('Signal bind element not found: ' + el);\n return null;\n }\n } else {\n view.error('DOM document instance not found.');\n return null;\n }\n }\n if (el) {\n try {\n el.innerHTML = '';\n } catch (e) {\n el = null;\n view.error(e);\n }\n }\n return el;\n}\n","import initializeRenderer from './initialize-renderer';\nimport {renderModule} from 'vega-scenegraph';\nimport {error} from 'vega-util';\n\n/**\n * Render the current scene in a headless fashion.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A Promise that resolves to a renderer.\n */\nexport default async function(view, type, scaleFactor, opt) {\n const module = renderModule(type),\n ctr = module && module.headless;\n\n if (!ctr) error('Unrecognized renderer type: ' + type);\n\n await view.runAsync();\n return initializeRenderer(view, null, null, ctr, scaleFactor, opt)\n .renderAsync(view._scenegraph.root);\n}\n","import renderHeadless from './render-headless';\nimport {RenderType} from 'vega-scenegraph';\n\n/**\n * Produce a Canvas instance containing a rendered visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to a Canvas instance.\n */\nexport default async function(scaleFactor, opt) {\n const r = await renderHeadless(this, RenderType.Canvas, scaleFactor, opt);\n return r.canvas();\n}\n","/*\n The following expression parser is based on Esprima (http://esprima.org/).\n Original header comment and license for Esprima is included here:\n\n Copyright (C) 2013 Ariya Hidayat <ariya.hidayat(a)gmail.com>\n Copyright (C) 2013 Thaddee Tyl <thaddee.tyl(a)gmail.com>\n Copyright (C) 2013 Mathias Bynens <mathias(a)qiwi.be>\n Copyright (C) 2012 Ariya Hidayat <ariya.hidayat(a)gmail.com>\n Copyright (C) 2012 Mathias Bynens <mathias(a)qiwi.be>\n Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim(a)boekesteijn.nl>\n Copyright (C) 2012 Kris Kowal <kris.kowal(a)cixar.com>\n Copyright (C) 2012 Yusuke Suzuki <utatane.tea(a)gmail.com>\n Copyright (C) 2012 Arpad Borsos <arpad.borsos(a)googlemail.com>\n Copyright (C) 2011 Ariya Hidayat <ariya.hidayat(a)gmail.com>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nimport ASTNode from './ast';\n\nvar TokenName,\n source,\n index,\n length,\n lookahead;\n\nvar TokenBooleanLiteral = 1,\n TokenEOF = 2,\n TokenIdentifier = 3,\n TokenKeyword = 4,\n TokenNullLiteral = 5,\n TokenNumericLiteral = 6,\n TokenPunctuator = 7,\n TokenStringLiteral = 8,\n TokenRegularExpression = 9;\n\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '<end>';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\n\nvar SyntaxArrayExpression = 'ArrayExpression',\n SyntaxBinaryExpression = 'BinaryExpression',\n SyntaxCallExpression = 'CallExpression',\n SyntaxConditionalExpression = 'ConditionalExpression',\n SyntaxIdentifier = 'Identifier',\n SyntaxLiteral = 'Literal',\n SyntaxLogicalExpression = 'LogicalExpression',\n SyntaxMemberExpression = 'MemberExpression',\n SyntaxObjectExpression = 'ObjectExpression',\n SyntaxProperty = 'Property',\n SyntaxUnaryExpression = 'UnaryExpression';\n\n// Error messages should be identical to V8.\nvar MessageUnexpectedToken = 'Unexpected token %0',\n MessageUnexpectedNumber = 'Unexpected number',\n MessageUnexpectedString = 'Unexpected string',\n MessageUnexpectedIdentifier = 'Unexpected identifier',\n MessageUnexpectedReserved = 'Unexpected reserved word',\n MessageUnexpectedEOS = 'Unexpected end of input',\n MessageInvalidRegExp = 'Invalid regular expression',\n MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\n\nvar ILLEGAL = 'ILLEGAL',\n DISABLED = 'Disabled.';\n\n// See also tools/generate-unicode-regex.py.\n var RegexNonAsciiIdentifierStart = new RegExp(\"[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]\"),\n RegexNonAsciiIdentifierPart = new RegExp(\"[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]\");\n\n// Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n /* istanbul ignore next */\n if (!condition) {\n throw new Error('ASSERT: ' + message);\n }\n}\n\nfunction isDecimalDigit(ch) {\n return (ch >= 0x30 && ch <= 0x39); // 0..9\n}\n\nfunction isHexDigit(ch) {\n return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\n\nfunction isOctalDigit(ch) {\n return '01234567'.indexOf(ch) >= 0;\n}\n\n// 7.2 White Space\n\nfunction isWhiteSpace(ch) {\n return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) ||\n (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0);\n}\n\n// 7.3 Line Terminators\n\nfunction isLineTerminator(ch) {\n return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029);\n}\n\n// 7.6 Identifier Names and Identifiers\n\nfunction isIdentifierStart(ch) {\n return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n (ch >= 0x41 && ch <= 0x5A) || // A..Z\n (ch >= 0x61 && ch <= 0x7A) || // a..z\n (ch === 0x5C) || // \\ (backslash)\n ((ch >= 0x80) && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch)));\n}\n\nfunction isIdentifierPart(ch) {\n return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n (ch >= 0x41 && ch <= 0x5A) || // A..Z\n (ch >= 0x61 && ch <= 0x7A) || // a..z\n (ch >= 0x30 && ch <= 0x39) || // 0..9\n (ch === 0x5C) || // \\ (backslash)\n ((ch >= 0x80) && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch)));\n}\n\n// 7.6.1.1 Keywords\n\nvar keywords = {\n 'if':1, 'in':1, 'do':1,\n 'var':1, 'for':1, 'new':1, 'try':1, 'let':1,\n 'this':1, 'else':1, 'case':1, 'void':1, 'with':1, 'enum':1,\n 'while':1, 'break':1, 'catch':1, 'throw':1, 'const':1, 'yield':1, 'class':1, 'super':1,\n 'return':1, 'typeof':1, 'delete':1, 'switch':1, 'export':1, 'import':1, 'public':1, 'static':1,\n 'default':1, 'finally':1, 'extends':1, 'package':1, 'private':1,\n 'function':1, 'continue':1, 'debugger':1,\n 'interface':1, 'protected':1,\n 'instanceof':1, 'implements':1\n};\n\nfunction skipComment() {\n var ch;\n\n while (index < length) {\n ch = source.charCodeAt(index);\n\n if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n ++index;\n } else {\n break;\n }\n }\n}\n\nfunction scanHexEscape(prefix) {\n var i, len, ch, code = 0;\n\n len = (prefix === 'u') ? 4 : 2;\n for (i = 0; i < len; ++i) {\n if (index < length && isHexDigit(source[index])) {\n ch = source[index++];\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n } else {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n return String.fromCharCode(code);\n}\n\nfunction scanUnicodeCodePointEscape() {\n var ch, code, cu1, cu2;\n\n ch = source[index];\n code = 0;\n\n // At least, one hex digit is required.\n if (ch === '}') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n while (index < length) {\n ch = source[index++];\n if (!isHexDigit(ch)) {\n break;\n }\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n }\n\n if (code > 0x10FFFF || ch !== '}') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n // UTF-16 Encoding\n if (code <= 0xFFFF) {\n return String.fromCharCode(code);\n }\n cu1 = ((code - 0x10000) >> 10) + 0xD800;\n cu2 = ((code - 0x10000) & 1023) + 0xDC00;\n return String.fromCharCode(cu1, cu2);\n}\n\nfunction getEscapedIdentifier() {\n var ch, id;\n\n ch = source.charCodeAt(index++);\n id = String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n id = ch;\n }\n\n while (index < length) {\n ch = source.charCodeAt(index);\n if (!isIdentifierPart(ch)) {\n break;\n }\n ++index;\n id += String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n id = id.substr(0, id.length - 1);\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n id += ch;\n }\n }\n\n return id;\n}\n\nfunction getIdentifier() {\n var start, ch;\n\n start = index++;\n while (index < length) {\n ch = source.charCodeAt(index);\n if (ch === 0x5C) {\n // Blackslash (U+005C) marks Unicode escape sequence.\n index = start;\n return getEscapedIdentifier();\n }\n if (isIdentifierPart(ch)) {\n ++index;\n } else {\n break;\n }\n }\n\n return source.slice(start, index);\n}\n\nfunction scanIdentifier() {\n var start, id, type;\n\n start = index;\n\n // Backslash (U+005C) starts an escaped character.\n id = (source.charCodeAt(index) === 0x5C) ? getEscapedIdentifier() : getIdentifier();\n\n // There is no keyword or literal with only one character.\n // Thus, it must be an identifier.\n if (id.length === 1) {\n type = TokenIdentifier;\n } else if (keywords.hasOwnProperty(id)) {\n type = TokenKeyword;\n } else if (id === 'null') {\n type = TokenNullLiteral;\n } else if (id === 'true' || id === 'false') {\n type = TokenBooleanLiteral;\n } else {\n type = TokenIdentifier;\n }\n\n return {\n type: type,\n value: id,\n start: start,\n end: index\n };\n}\n\n// 7.7 Punctuators\n\nfunction scanPunctuator() {\n var start = index,\n code = source.charCodeAt(index),\n code2,\n ch1 = source[index],\n ch2,\n ch3,\n ch4;\n\n switch (code) {\n\n // Check for most common single-character punctuators.\n case 0x2E: // . dot\n case 0x28: // ( open bracket\n case 0x29: // ) close bracket\n case 0x3B: // ; semicolon\n case 0x2C: // , comma\n case 0x7B: // { open curly brace\n case 0x7D: // } close curly brace\n case 0x5B: // [\n case 0x5D: // ]\n case 0x3A: // :\n case 0x3F: // ?\n case 0x7E: // ~\n ++index;\n return {\n type: TokenPunctuator,\n value: String.fromCharCode(code),\n start: start,\n end: index\n };\n\n default:\n code2 = source.charCodeAt(index + 1);\n\n // '=' (U+003D) marks an assignment or comparison operator.\n if (code2 === 0x3D) {\n switch (code) {\n case 0x2B: // +\n case 0x2D: // -\n case 0x2F: // /\n case 0x3C: // <\n case 0x3E: // >\n case 0x5E: // ^\n case 0x7C: // |\n case 0x25: // %\n case 0x26: // &\n case 0x2A: // *\n index += 2;\n return {\n type: TokenPunctuator,\n value: String.fromCharCode(code) + String.fromCharCode(code2),\n start: start,\n end: index\n };\n\n case 0x21: // !\n case 0x3D: // =\n index += 2;\n\n // !== and ===\n if (source.charCodeAt(index) === 0x3D) {\n ++index;\n }\n return {\n type: TokenPunctuator,\n value: source.slice(start, index),\n start: start,\n end: index\n };\n }\n }\n }\n\n // 4-character punctuator: >>>=\n\n ch4 = source.substr(index, 4);\n\n if (ch4 === '>>>=') {\n index += 4;\n return {\n type: TokenPunctuator,\n value: ch4,\n start: start,\n end: index\n };\n }\n\n // 3-character punctuators: === !== >>> <<= >>=\n\n ch3 = ch4.substr(0, 3);\n\n if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n index += 3;\n return {\n type: TokenPunctuator,\n value: ch3,\n start: start,\n end: index\n };\n }\n\n // Other 2-character punctuators: ++ -- << >> && ||\n ch2 = ch3.substr(0, 2);\n\n if ((ch1 === ch2[1] && ('+-<>&|'.indexOf(ch1) >= 0)) || ch2 === '=>') {\n index += 2;\n return {\n type: TokenPunctuator,\n value: ch2,\n start: start,\n end: index\n };\n }\n\n // 1-character punctuators: < > = ! + - * % & | ^ /\n\n if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n ++index;\n return {\n type: TokenPunctuator,\n value: ch1,\n start: start,\n end: index\n };\n }\n\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n}\n\n// 7.8.3 Numeric Literals\n\nfunction scanHexLiteral(start) {\n var number = '';\n\n while (index < length) {\n if (!isHexDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n\n if (number.length === 0) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n return {\n type: TokenNumericLiteral,\n value: parseInt('0x' + number, 16),\n start: start,\n end: index\n };\n}\n\nfunction scanOctalLiteral(start) {\n var number = '0' + source[index++];\n while (index < length) {\n if (!isOctalDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n\n if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n return {\n type: TokenNumericLiteral,\n value: parseInt(number, 8),\n octal: true,\n start: start,\n end: index\n };\n}\n\nfunction scanNumericLiteral() {\n var number, start, ch;\n\n ch = source[index];\n assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),\n 'Numeric literal must start with a decimal digit or a decimal point');\n\n start = index;\n number = '';\n if (ch !== '.') {\n number = source[index++];\n ch = source[index];\n\n // Hex number starts with '0x'.\n // Octal number starts with '0'.\n if (number === '0') {\n if (ch === 'x' || ch === 'X') {\n ++index;\n return scanHexLiteral(start);\n }\n if (isOctalDigit(ch)) {\n return scanOctalLiteral(start);\n }\n\n // decimal number starts with '0' such as '09' is illegal.\n if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n\n if (ch === '.') {\n number += source[index++];\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n\n if (ch === 'e' || ch === 'E') {\n number += source[index++];\n\n ch = source[index];\n if (ch === '+' || ch === '-') {\n number += source[index++];\n }\n if (isDecimalDigit(source.charCodeAt(index))) {\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n } else {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n return {\n type: TokenNumericLiteral,\n value: parseFloat(number),\n start: start,\n end: index\n };\n}\n\n// 7.8.4 String Literals\n\nfunction scanStringLiteral() {\n var str = '',\n quote, start, ch, code, octal = false;\n\n quote = source[index];\n assert((quote === '\\'' || quote === '\"'),\n 'String literal must starts with a quote');\n\n start = index;\n ++index;\n\n while (index < length) {\n ch = source[index++];\n\n if (ch === quote) {\n quote = '';\n break;\n } else if (ch === '\\\\') {\n ch = source[index++];\n if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n switch (ch) {\n case 'u':\n case 'x':\n if (source[index] === '{') {\n ++index;\n str += scanUnicodeCodePointEscape();\n } else {\n str += scanHexEscape(ch);\n }\n break;\n case 'n':\n str += '\\n';\n break;\n case 'r':\n str += '\\r';\n break;\n case 't':\n str += '\\t';\n break;\n case 'b':\n str += '\\b';\n break;\n case 'f':\n str += '\\f';\n break;\n case 'v':\n str += '\\x0B';\n break;\n\n default:\n if (isOctalDigit(ch)) {\n code = '01234567'.indexOf(ch);\n\n // \\0 is not octal escape sequence\n if (code !== 0) {\n octal = true;\n }\n\n if (index < length && isOctalDigit(source[index])) {\n octal = true;\n code = code * 8 + '01234567'.indexOf(source[index++]);\n\n // 3 digits are only allowed when string starts\n // with 0, 1, 2, 3\n if ('0123'.indexOf(ch) >= 0 &&\n index < length &&\n isOctalDigit(source[index])) {\n code = code * 8 + '01234567'.indexOf(source[index++]);\n }\n }\n str += String.fromCharCode(code);\n } else {\n str += ch;\n }\n break;\n }\n } else {\n if (ch === '\\r' && source[index] === '\\n') {\n ++index;\n }\n }\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n break;\n } else {\n str += ch;\n }\n }\n\n if (quote !== '') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n return {\n type: TokenStringLiteral,\n value: str,\n octal: octal,\n start: start,\n end: index\n };\n}\n\nfunction testRegExp(pattern, flags) {\n var tmp = pattern;\n\n if (flags.indexOf('u') >= 0) {\n // Replace each astral symbol and every Unicode code point\n // escape sequence with a single ASCII symbol to avoid throwing on\n // regular expressions that are only valid in combination with the\n // `/u` flag.\n // Note: replacing with the ASCII symbol `x` might cause false\n // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n // perfectly valid pattern that is equivalent to `[a-b]`, but it\n // would be replaced by `[x-b]` which throws an error.\n tmp = tmp\n .replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, function($0, $1) {\n if (parseInt($1, 16) <= 0x10FFFF) {\n return 'x';\n }\n throwError({}, MessageInvalidRegExp);\n })\n .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n }\n\n // First, detect invalid regular expressions.\n try {\n new RegExp(tmp);\n } catch (e) {\n throwError({}, MessageInvalidRegExp);\n }\n\n // Return a regular expression object for this pattern-flag pair, or\n // `null` in case the current environment doesn't support the flags it\n // uses.\n try {\n return new RegExp(pattern, flags);\n } catch (exception) {\n return null;\n }\n}\n\nfunction scanRegExpBody() {\n var ch, str, classMarker, terminated, body;\n\n ch = source[index];\n assert(ch === '/', 'Regular expression literal must start with a slash');\n str = source[index++];\n\n classMarker = false;\n terminated = false;\n while (index < length) {\n ch = source[index++];\n str += ch;\n if (ch === '\\\\') {\n ch = source[index++];\n // ECMA-262 7.8.5\n if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, MessageUnterminatedRegExp);\n }\n str += ch;\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, MessageUnterminatedRegExp);\n } else if (classMarker) {\n if (ch === ']') {\n classMarker = false;\n }\n } else {\n if (ch === '/') {\n terminated = true;\n break;\n } else if (ch === '[') {\n classMarker = true;\n }\n }\n }\n\n if (!terminated) {\n throwError({}, MessageUnterminatedRegExp);\n }\n\n // Exclude leading and trailing slash.\n body = str.substr(1, str.length - 2);\n return {\n value: body,\n literal: str\n };\n}\n\nfunction scanRegExpFlags() {\n var ch, str, flags;\n\n str = '';\n flags = '';\n while (index < length) {\n ch = source[index];\n if (!isIdentifierPart(ch.charCodeAt(0))) {\n break;\n }\n\n ++index;\n if (ch === '\\\\' && index < length) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n } else {\n flags += ch;\n str += ch;\n }\n }\n\n if (flags.search(/[^gimuy]/g) >= 0) {\n throwError({}, MessageInvalidRegExp, flags);\n }\n\n return {\n value: flags,\n literal: str\n };\n}\n\nfunction scanRegExp() {\n var start, body, flags, value;\n\n lookahead = null;\n skipComment();\n start = index;\n\n body = scanRegExpBody();\n flags = scanRegExpFlags();\n value = testRegExp(body.value, flags.value);\n\n return {\n literal: body.literal + flags.literal,\n value: value,\n regex: {\n pattern: body.value,\n flags: flags.value\n },\n start: start,\n end: index\n };\n}\n\nfunction isIdentifierName(token) {\n return token.type === TokenIdentifier ||\n token.type === TokenKeyword ||\n token.type === TokenBooleanLiteral ||\n token.type === TokenNullLiteral;\n}\n\nfunction advance() {\n var ch;\n\n skipComment();\n\n if (index >= length) {\n return {\n type: TokenEOF,\n start: index,\n end: index\n };\n }\n\n ch = source.charCodeAt(index);\n\n if (isIdentifierStart(ch)) {\n return scanIdentifier();\n }\n\n // Very common: ( and ) and ;\n if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n return scanPunctuator();\n }\n\n // String literal starts with single quote (U+0027) or double quote (U+0022).\n if (ch === 0x27 || ch === 0x22) {\n return scanStringLiteral();\n }\n\n\n // Dot (.) U+002E can also start a floating-point number, hence the need\n // to check the next character.\n if (ch === 0x2E) {\n if (isDecimalDigit(source.charCodeAt(index + 1))) {\n return scanNumericLiteral();\n }\n return scanPunctuator();\n }\n\n if (isDecimalDigit(ch)) {\n return scanNumericLiteral();\n }\n\n return scanPunctuator();\n}\n\nfunction lex() {\n var token;\n\n token = lookahead;\n index = token.end;\n\n lookahead = advance();\n\n index = token.end;\n\n return token;\n}\n\nfunction peek() {\n var pos;\n\n pos = index;\n\n lookahead = advance();\n index = pos;\n}\n\nfunction finishArrayExpression(elements) {\n var node = new ASTNode(SyntaxArrayExpression);\n node.elements = elements;\n return node;\n}\n\nfunction finishBinaryExpression(operator, left, right) {\n var node = new ASTNode((operator === '||' || operator === '&&') ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n node.operator = operator;\n node.left = left;\n node.right = right;\n return node;\n}\n\nfunction finishCallExpression(callee, args) {\n var node = new ASTNode(SyntaxCallExpression);\n node.callee = callee;\n node.arguments = args;\n return node;\n}\n\nfunction finishConditionalExpression(test, consequent, alternate) {\n var node = new ASTNode(SyntaxConditionalExpression);\n node.test = test;\n node.consequent = consequent;\n node.alternate = alternate;\n return node;\n}\n\nfunction finishIdentifier(name) {\n var node = new ASTNode(SyntaxIdentifier);\n node.name = name;\n return node;\n}\n\nfunction finishLiteral(token) {\n var node = new ASTNode(SyntaxLiteral);\n node.value = token.value;\n node.raw = source.slice(token.start, token.end);\n if (token.regex) {\n if (node.raw === '//') {\n node.raw = '/(?:)/';\n }\n node.regex = token.regex;\n }\n return node;\n}\n\nfunction finishMemberExpression(accessor, object, property) {\n var node = new ASTNode(SyntaxMemberExpression);\n node.computed = accessor === '[';\n node.object = object;\n node.property = property;\n if (!node.computed) property.member = true;\n return node;\n}\n\nfunction finishObjectExpression(properties) {\n var node = new ASTNode(SyntaxObjectExpression);\n node.properties = properties;\n return node;\n}\n\nfunction finishProperty(kind, key, value) {\n var node = new ASTNode(SyntaxProperty);\n node.key = key;\n node.value = value;\n node.kind = kind;\n return node;\n}\n\nfunction finishUnaryExpression(operator, argument) {\n var node = new ASTNode(SyntaxUnaryExpression);\n node.operator = operator;\n node.argument = argument;\n node.prefix = true;\n return node;\n}\n\n// Throw an exception\n\nfunction throwError(token, messageFormat) {\n var error,\n args = Array.prototype.slice.call(arguments, 2),\n msg = messageFormat.replace(\n /%(\\d)/g,\n function(whole, index) {\n assert(index < args.length, 'Message reference must be in range');\n return args[index];\n }\n );\n\n\n error = new Error(msg);\n error.index = index;\n error.description = msg;\n throw error;\n}\n\n// Throw an exception because of the token.\n\nfunction throwUnexpected(token) {\n if (token.type === TokenEOF) {\n throwError(token, MessageUnexpectedEOS);\n }\n\n if (token.type === TokenNumericLiteral) {\n throwError(token, MessageUnexpectedNumber);\n }\n\n if (token.type === TokenStringLiteral) {\n throwError(token, MessageUnexpectedString);\n }\n\n if (token.type === TokenIdentifier) {\n throwError(token, MessageUnexpectedIdentifier);\n }\n\n if (token.type === TokenKeyword) {\n throwError(token, MessageUnexpectedReserved);\n }\n\n // BooleanLiteral, NullLiteral, or Punctuator.\n throwError(token, MessageUnexpectedToken, token.value);\n}\n\n// Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\nfunction expect(value) {\n var token = lex();\n if (token.type !== TokenPunctuator || token.value !== value) {\n throwUnexpected(token);\n }\n}\n\n// Return true if the next token matches the specified punctuator.\n\nfunction match(value) {\n return lookahead.type === TokenPunctuator && lookahead.value === value;\n}\n\n// Return true if the next token matches the specified keyword\n\nfunction matchKeyword(keyword) {\n return lookahead.type === TokenKeyword && lookahead.value === keyword;\n}\n\n// 11.1.4 Array Initialiser\n\nfunction parseArrayInitialiser() {\n var elements = [];\n\n index = lookahead.start;\n expect('[');\n\n while (!match(']')) {\n if (match(',')) {\n lex();\n elements.push(null);\n } else {\n elements.push(parseConditionalExpression());\n\n if (!match(']')) {\n expect(',');\n }\n }\n }\n\n lex();\n\n return finishArrayExpression(elements);\n}\n\n// 11.1.5 Object Initialiser\n\nfunction parseObjectPropertyKey() {\n var token;\n\n index = lookahead.start;\n token = lex();\n\n // Note: This function is called only from parseObjectProperty(), where\n // EOF and Punctuator tokens are already filtered out.\n\n if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n if (token.octal) {\n throwError(token, MessageStrictOctalLiteral);\n }\n return finishLiteral(token);\n }\n\n return finishIdentifier(token.value);\n}\n\nfunction parseObjectProperty() {\n var token, key, id, value;\n\n index = lookahead.start;\n token = lookahead;\n\n if (token.type === TokenIdentifier) {\n id = parseObjectPropertyKey();\n expect(':');\n value = parseConditionalExpression();\n return finishProperty('init', id, value);\n }\n if (token.type === TokenEOF || token.type === TokenPunctuator) {\n throwUnexpected(token);\n } else {\n key = parseObjectPropertyKey();\n expect(':');\n value = parseConditionalExpression();\n return finishProperty('init', key, value);\n }\n}\n\nfunction parseObjectInitialiser() {\n var properties = [],\n property, name, key, map = {},\n toString = String;\n\n index = lookahead.start;\n expect('{');\n\n while (!match('}')) {\n property = parseObjectProperty();\n\n if (property.key.type === SyntaxIdentifier) {\n name = property.key.name;\n } else {\n name = toString(property.key.value);\n }\n\n key = '$' + name;\n if (Object.prototype.hasOwnProperty.call(map, key)) {\n throwError({}, MessageStrictDuplicateProperty);\n } else {\n map[key] = true;\n }\n\n properties.push(property);\n\n if (!match('}')) {\n expect(',');\n }\n }\n\n expect('}');\n\n return finishObjectExpression(properties);\n}\n\n// 11.1.6 The Grouping Operator\n\nfunction parseGroupExpression() {\n var expr;\n\n expect('(');\n\n expr = parseExpression();\n\n expect(')');\n\n return expr;\n}\n\n\n// 11.1 Primary Expressions\n\nvar legalKeywords = {\n \"if\": 1,\n \"this\": 1\n};\n\nfunction parsePrimaryExpression() {\n var type, token, expr;\n\n if (match('(')) {\n return parseGroupExpression();\n }\n\n if (match('[')) {\n return parseArrayInitialiser();\n }\n\n if (match('{')) {\n return parseObjectInitialiser();\n }\n\n type = lookahead.type;\n index = lookahead.start;\n\n\n if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n expr = finishIdentifier(lex().value);\n } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n if (lookahead.octal) {\n throwError(lookahead, MessageStrictOctalLiteral);\n }\n expr = finishLiteral(lex());\n } else if (type === TokenKeyword) {\n throw new Error(DISABLED);\n } else if (type === TokenBooleanLiteral) {\n token = lex();\n token.value = (token.value === 'true');\n expr = finishLiteral(token);\n } else if (type === TokenNullLiteral) {\n token = lex();\n token.value = null;\n expr = finishLiteral(token);\n } else if (match('/') || match('/=')) {\n expr = finishLiteral(scanRegExp());\n peek();\n } else {\n throwUnexpected(lex());\n }\n\n return expr;\n}\n\n// 11.2 Left-Hand-Side Expressions\n\nfunction parseArguments() {\n var args = [];\n\n expect('(');\n\n if (!match(')')) {\n while (index < length) {\n args.push(parseConditionalExpression());\n if (match(')')) {\n break;\n }\n expect(',');\n }\n }\n\n expect(')');\n\n return args;\n}\n\nfunction parseNonComputedProperty() {\n var token;\n index = lookahead.start;\n token = lex();\n\n if (!isIdentifierName(token)) {\n throwUnexpected(token);\n }\n\n return finishIdentifier(token.value);\n}\n\nfunction parseNonComputedMember() {\n expect('.');\n\n return parseNonComputedProperty();\n}\n\nfunction parseComputedMember() {\n var expr;\n\n expect('[');\n\n expr = parseExpression();\n\n expect(']');\n\n return expr;\n}\n\nfunction parseLeftHandSideExpressionAllowCall() {\n var expr, args, property;\n\n expr = parsePrimaryExpression();\n\n for (;;) {\n if (match('.')) {\n property = parseNonComputedMember();\n expr = finishMemberExpression('.', expr, property);\n } else if (match('(')) {\n args = parseArguments();\n expr = finishCallExpression(expr, args);\n } else if (match('[')) {\n property = parseComputedMember();\n expr = finishMemberExpression('[', expr, property);\n } else {\n break;\n }\n }\n\n return expr;\n}\n\n// 11.3 Postfix Expressions\n\nfunction parsePostfixExpression() {\n var expr = parseLeftHandSideExpressionAllowCall();\n\n if (lookahead.type === TokenPunctuator) {\n if ((match('++') || match('--'))) {\n throw new Error(DISABLED);\n }\n }\n\n return expr;\n}\n\n// 11.4 Unary Operators\n\nfunction parseUnaryExpression() {\n var token, expr;\n\n if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n expr = parsePostfixExpression();\n } else if (match('++') || match('--')) {\n throw new Error(DISABLED);\n } else if (match('+') || match('-') || match('~') || match('!')) {\n token = lex();\n expr = parseUnaryExpression();\n expr = finishUnaryExpression(token.value, expr);\n } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n throw new Error(DISABLED);\n } else {\n expr = parsePostfixExpression();\n }\n\n return expr;\n}\n\nfunction binaryPrecedence(token) {\n var prec = 0;\n\n if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n return 0;\n }\n\n switch (token.value) {\n case '||':\n prec = 1;\n break;\n\n case '&&':\n prec = 2;\n break;\n\n case '|':\n prec = 3;\n break;\n\n case '^':\n prec = 4;\n break;\n\n case '&':\n prec = 5;\n break;\n\n case '==':\n case '!=':\n case '===':\n case '!==':\n prec = 6;\n break;\n\n case '<':\n case '>':\n case '<=':\n case '>=':\n case 'instanceof':\n case 'in':\n prec = 7;\n break;\n\n case '<<':\n case '>>':\n case '>>>':\n prec = 8;\n break;\n\n case '+':\n case '-':\n prec = 9;\n break;\n\n case '*':\n case '/':\n case '%':\n prec = 11;\n break;\n\n default:\n break;\n }\n\n return prec;\n}\n\n// 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\nfunction parseBinaryExpression() {\n var marker, markers, expr, token, prec, stack, right, operator, left, i;\n\n marker = lookahead;\n left = parseUnaryExpression();\n\n token = lookahead;\n prec = binaryPrecedence(token);\n if (prec === 0) {\n return left;\n }\n token.prec = prec;\n lex();\n\n markers = [marker, lookahead];\n right = parseUnaryExpression();\n\n stack = [left, token, right];\n\n while ((prec = binaryPrecedence(lookahead)) > 0) {\n\n // Reduce: make a binary expression from the three topmost entries.\n while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {\n right = stack.pop();\n operator = stack.pop().value;\n left = stack.pop();\n markers.pop();\n expr = finishBinaryExpression(operator, left, right);\n stack.push(expr);\n }\n\n // Shift.\n token = lex();\n token.prec = prec;\n stack.push(token);\n markers.push(lookahead);\n expr = parseUnaryExpression();\n stack.push(expr);\n }\n\n // Final reduce to clean-up the stack.\n i = stack.length - 1;\n expr = stack[i];\n markers.pop();\n while (i > 1) {\n markers.pop()\n expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n i -= 2;\n }\n\n return expr;\n}\n\n// 11.12 Conditional Operator\n\nfunction parseConditionalExpression() {\n var expr, consequent, alternate;\n\n expr = parseBinaryExpression();\n\n if (match('?')) {\n lex();\n consequent = parseConditionalExpression();\n expect(':');\n alternate = parseConditionalExpression();\n\n expr = finishConditionalExpression(expr, consequent, alternate);\n }\n\n return expr;\n}\n\n// 11.14 Comma Operator\n\nfunction parseExpression() {\n var expr = parseConditionalExpression();\n\n if (match(',')) {\n throw new Error(DISABLED); // no sequence expressions\n }\n\n return expr;\n}\n\nexport default function(code) {\n source = code;\n index = 0;\n length = source.length;\n lookahead = null;\n\n peek();\n\n var expr = parseExpression();\n\n if (lookahead.type !== TokenEOF) {\n throw new Error(\"Unexpect token after expression.\");\n }\n return expr;\n}\n","export var RawCode = 'RawCode';\nexport var Literal = 'Literal';\nexport var Property = 'Property';\nexport var Identifier = 'Identifier';\n\nexport var ArrayExpression = 'ArrayExpression';\nexport var BinaryExpression = 'BinaryExpression';\nexport var CallExpression = 'CallExpression';\nexport var ConditionalExpression = 'ConditionalExpression';\nexport var LogicalExpression = 'LogicalExpression';\nexport var MemberExpression = 'MemberExpression';\nexport var ObjectExpression = 'ObjectExpression';\nexport var UnaryExpression = 'UnaryExpression';\n\nexport default function ASTNode(type) {\n this.type = type;\n}\n\nASTNode.prototype.visit = function(visitor) {\n var node = this, c, i, n;\n\n if (visitor(node)) return 1;\n\n for (c=children(node), i=0, n=c.length; i<n; ++i) {\n if (c[i].visit(visitor)) return 1;\n }\n};\n\nfunction children(node) {\n switch (node.type) {\n case ArrayExpression:\n return node.elements;\n case BinaryExpression:\n case LogicalExpression:\n return [node.left, node.right];\n case CallExpression:\n var args = node.arguments.slice();\n args.unshift(node.callee);\n return args;\n case ConditionalExpression:\n return [node.test, node.consequent, node.alternate];\n case MemberExpression:\n return [node.object, node.property];\n case ObjectExpression:\n return node.properties;\n case Property:\n return [node.key, node.value];\n case UnaryExpression:\n return [node.argument];\n case Identifier:\n case Literal:\n case RawCode:\n default:\n return [];\n }\n}\n","export default {\n NaN: 'NaN',\n E: 'Math.E',\n LN2: 'Math.LN2',\n LN10: 'Math.LN10',\n LOG2E: 'Math.LOG2E',\n LOG10E: 'Math.LOG10E',\n PI: 'Math.PI',\n SQRT1_2: 'Math.SQRT1_2',\n SQRT2: 'Math.SQRT2',\n MIN_VALUE: 'Number.MIN_VALUE',\n MAX_VALUE: 'Number.MAX_VALUE'\n};\n","import {error} from 'vega-util';\n\nexport default function(codegen) {\n\n function fncall(name, args, cast, type) {\n var obj = codegen(args[0]);\n if (cast) {\n obj = cast + '(' + obj + ')';\n if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n }\n return obj + '.' + name + (type < 0 ? '' : type === 0 ?\n '()' :\n '(' + args.slice(1).map(codegen).join(',') + ')');\n }\n\n function fn(name, cast, type) {\n return function(args) {\n return fncall(name, args, cast, type);\n };\n }\n\n var DATE = 'new Date',\n STRING = 'String',\n REGEXP = 'RegExp';\n\n return {\n // MATH functions\n isNaN: 'isNaN',\n isFinite: 'isFinite',\n abs: 'Math.abs',\n acos: 'Math.acos',\n asin: 'Math.asin',\n atan: 'Math.atan',\n atan2: 'Math.atan2',\n ceil: 'Math.ceil',\n cos: 'Math.cos',\n exp: 'Math.exp',\n floor: 'Math.floor',\n log: 'Math.log',\n max: 'Math.max',\n min: 'Math.min',\n pow: 'Math.pow',\n random: 'Math.random',\n round: 'Math.round',\n sin: 'Math.sin',\n sqrt: 'Math.sqrt',\n tan: 'Math.tan',\n\n clamp: function(args) {\n if (args.length < 3) error('Missing arguments to clamp function.');\n if (args.length > 3) error('Too many arguments to clamp function.');\n var a = args.map(codegen);\n return 'Math.max('+a[1]+', Math.min('+a[2]+','+a[0]+'))';\n },\n\n // DATE functions\n now: 'Date.now',\n utc: 'Date.UTC',\n datetime: DATE,\n date: fn('getDate', DATE, 0),\n day: fn('getDay', DATE, 0),\n year: fn('getFullYear', DATE, 0),\n month: fn('getMonth', DATE, 0),\n hours: fn('getHours', DATE, 0),\n minutes: fn('getMinutes', DATE, 0),\n seconds: fn('getSeconds', DATE, 0),\n milliseconds: fn('getMilliseconds', DATE, 0),\n time: fn('getTime', DATE, 0),\n timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n utcdate: fn('getUTCDate', DATE, 0),\n utcday: fn('getUTCDay', DATE, 0),\n utcyear: fn('getUTCFullYear', DATE, 0),\n utcmonth: fn('getUTCMonth', DATE, 0),\n utchours: fn('getUTCHours', DATE, 0),\n utcminutes: fn('getUTCMinutes', DATE, 0),\n utcseconds: fn('getUTCSeconds', DATE, 0),\n utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n\n // sequence functions\n length: fn('length', null, -1),\n join: fn('join', null),\n indexof: fn('indexOf', null),\n lastindexof: fn('lastIndexOf', null),\n slice: fn('slice', null),\n\n reverse: function(args) {\n return '('+codegen(args[0])+').slice().reverse()';\n },\n\n // STRING functions\n parseFloat: 'parseFloat',\n parseInt: 'parseInt',\n upper: fn('toUpperCase', STRING, 0),\n lower: fn('toLowerCase', STRING, 0),\n substring: fn('substring', STRING),\n split: fn('split', STRING),\n replace: fn('replace', STRING),\n trim: fn('trim', STRING, 0),\n\n // REGEXP functions\n regexp: REGEXP,\n test: fn('test', REGEXP),\n\n // Control Flow functions\n if: function(args) {\n if (args.length < 3) error('Missing arguments to if function.');\n if (args.length > 3) error('Too many arguments to if function.');\n var a = args.map(codegen);\n return '('+a[0]+'?'+a[1]+':'+a[2]+')';\n }\n };\n}\n","export const Intersect = 'intersect';\nexport const Union = 'union';\n","import {Intersect} from './constants';\nimport {field, inrange, isArray, isDate, toNumber} from 'vega-util';\n\nvar TYPE_ENUM = 'E',\n TYPE_RANGE_INC = 'R',\n TYPE_RANGE_EXC = 'R-E',\n TYPE_RANGE_LE = 'R-LE',\n TYPE_RANGE_RE = 'R-RE',\n UNIT_INDEX = 'index:unit';\n\n// TODO: revisit date coercion?\nfunction testPoint(datum, entry) {\n var fields = entry.fields,\n values = entry.values,\n n = fields.length,\n i = 0, dval, f;\n\n for (; i<n; ++i) {\n f = fields[i];\n f.getter = field.getter || field(f.field);\n dval = f.getter(datum);\n\n if (isDate(dval)) dval = toNumber(dval);\n if (isDate(values[i])) values[i] = toNumber(values[i]);\n if (isDate(values[i][0])) values[i] = values[i].map(toNumber);\n\n if (f.type === TYPE_ENUM) {\n // Enumerated fields can either specify individual values (single/multi selections)\n // or an array of values (interval selections).\n if(isArray(values[i]) ? values[i].indexOf(dval) < 0 : dval !== values[i]) {\n return false;\n }\n } else {\n if (f.type === TYPE_RANGE_INC) {\n if (!inrange(dval, values[i])) return false;\n } else if (f.type === TYPE_RANGE_RE) {\n // Discrete selection of bins test within the range [bin_start, bin_end).\n if (!inrange(dval, values[i], true, false)) return false;\n } else if (f.type === TYPE_RANGE_EXC) { // 'R-E'/'R-LE' included for completeness.\n if (!inrange(dval, values[i], false, false)) return false;\n } else if (f.type === TYPE_RANGE_LE) {\n if (!inrange(dval, values[i], false, true)) return false;\n }\n }\n }\n\n return true;\n}\n\n/**\n * Tests if a tuple is contained within an interactive selection.\n * @param {string} name - The name of the data set representing the selection.\n * Tuples in the dataset are of the form\n * {unit: string, fields: array<fielddef>, values: array<*>}.\n * Fielddef is of the form\n * {field: string, channel: string, type: 'E' | 'R'} where\n * 'type' identifies whether tuples in the dataset enumerate\n * values for the field, or specify a continuous range.\n * @param {object} datum - The tuple to test for inclusion.\n * @param {string} op - The set operation for combining selections.\n * One of 'intersect' or 'union' (default).\n * @return {boolean} - True if the datum is in the selection, false otherwise.\n */\nexport function selectionTest(name, datum, op) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n intersect = op === Intersect,\n n = entries.length,\n i = 0,\n entry, miss, count, unit, b;\n\n for (; i<n; ++i) {\n entry = entries[i];\n\n if (unitIdx && intersect) {\n // multi selections union within the same unit and intersect across units.\n miss = miss || {};\n count = miss[unit=entry.unit] || 0;\n\n // if we've already matched this unit, skip.\n if (count === -1) continue;\n\n b = testPoint(datum, entry);\n miss[unit] = b ? -1 : ++count;\n\n // if we match and there are no other units return true\n // if we've missed against all tuples in this unit return false\n if (b && unitIdx.size === 1) return true;\n if (!b && count === unitIdx.get(unit).count) return false;\n } else {\n b = testPoint(datum, entry);\n\n // if we find a miss and we do require intersection return false\n // if we find a match and we don't require intersection return true\n if (intersect ^ b) return b;\n }\n }\n\n // if intersecting and we made it here, then we saw no misses\n // if not intersecting, then we saw no matches\n // if no active selections, return false\n return n && intersect;\n}","import {Union} from './constants';\nimport {array, toNumber} from 'vega-util';\n\n/**\n * Resolves selection for use as a scale domain or reads via the API.\n * @param {string} name - The name of the dataset representing the selection\n * @param {string} [op='union'] - The set operation for combining selections.\n * One of 'intersect' or 'union' (default).\n * @returns {object} An object of selected fields and values.\n */\nexport function selectionResolve(name, op) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n resolved = {}, types = {},\n entry, fields, values, unit, field, res, resUnit, type, union,\n n = entries.length, i = 0, j, m;\n\n // First union all entries within the same unit.\n for (; i < n; ++i) {\n entry = entries[i];\n unit = entry.unit;\n fields = entry.fields;\n values = entry.values;\n\n for (j = 0, m = fields.length; j < m; ++j) {\n field = fields[j];\n res = resolved[field.field] || (resolved[field.field] = {});\n resUnit = res[unit] || (res[unit] = []);\n types[field.field] = type = field.type.charAt(0);\n union = ops[type + '_union'];\n res[unit] = union(resUnit, array(values[j]));\n }\n }\n\n // Then resolve fields across units as per the op.\n op = op || Union;\n Object.keys(resolved).forEach(function (field) {\n resolved[field] = Object.keys(resolved[field])\n .map(function (unit) { return resolved[field][unit]; })\n .reduce(function (acc, curr) {\n return acc === undefined ? curr :\n ops[types[field] + '_' + op](acc, curr);\n });\n });\n\n return resolved;\n}\n\nvar ops = {\n E_union: function(base, value) {\n if (!base.length) return value;\n\n var i = 0, n = value.length;\n for (; i<n; ++i) if (base.indexOf(value[i]) < 0) base.push(value[i]);\n return base;\n },\n\n E_intersect: function(base, value) {\n return !base.length ? value :\n base.filter(function (v) { return value.indexOf(v) >= 0; });\n },\n\n R_union: function(base, value) {\n var lo = toNumber(value[0]), hi = toNumber(value[1]);\n if (lo > hi) {\n lo = value[1];\n hi = value[0];\n }\n\n if (!base.length) return [lo, hi];\n if (base[0] > lo) base[0] = lo;\n if (base[1] < hi) base[1] = hi;\n return base;\n },\n\n R_intersect: function(base, value) {\n var lo = toNumber(value[0]), hi = toNumber(value[1]);\n if (lo > hi) {\n lo = value[1];\n hi = value[0];\n }\n\n if (!base.length) return [lo, hi];\n if (hi < base[0] || base[1] < lo) {\n return [];\n } else {\n if (base[0] < lo) base[0] = lo;\n if (base[1] > hi) base[1] = hi;\n }\n return base;\n }\n};\n","import {Intersect} from './constants';\nimport {Literal} from 'vega-expression';\nimport {error, peek} from 'vega-util';\n\nconst DataPrefix = ':',\n IndexPrefix = '@';\n\nexport function selectionVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to selection functions must be a string literal.');\n\n const data = args[0].value,\n op = args.length >= 2 && peek(args).value,\n field = 'unit',\n indexName = IndexPrefix + field,\n dataName = DataPrefix + data;\n\n if (op === Intersect && !params.hasOwnProperty(indexName)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n\n if (!params.hasOwnProperty(dataName)) {\n params[dataName] = scope.getData(data).tuplesRef();\n }\n}","import {truthy} from 'vega-util';\n\nexport function data(name) {\n const data = this.context.data[name];\n return data ? data.values.value : [];\n}\n\nexport function indata(name, field, value) {\n const index = this.context.data[name]['index:' + field],\n entry = index ? index.value.get(value) : undefined;\n return entry ? entry.count : entry;\n}\n\nexport function setdata(name, tuples) {\n const df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input;\n\n df.pulse(input, df.changeset().remove(truthy).insert(tuples));\n return 1;\n}\n","import {\n format as d3_format\n} from 'd3-format';\n\nimport {\n timeFormat as d3_timeFormat,\n timeParse as d3_timeParse,\n utcFormat as d3_utcFormat,\n utcParse as d3_utcParse\n} from 'd3-time-format';\n\nconst formatCache = {};\n\nfunction formatter(type, method, specifier) {\n let k = type + ':' + specifier,\n e = formatCache[k];\n if (!e || e[0] !== method) {\n formatCache[k] = (e = [method, method(specifier)]);\n }\n return e[1];\n}\n\nexport function format(_, specifier) {\n return formatter('format', d3_format, specifier)(_);\n}\n\nexport function timeFormat(_, specifier) {\n return formatter('timeFormat', d3_timeFormat, specifier)(_);\n}\n\nexport function utcFormat(_, specifier) {\n return formatter('utcFormat', d3_utcFormat, specifier)(_);\n}\n\nexport function timeParse(_, specifier) {\n return formatter('timeParse', d3_timeParse, specifier)(_);\n}\n\nexport function utcParse(_, specifier) {\n return formatter('utcParse', d3_utcParse, specifier)(_);\n}\n\nvar dateObj = new Date(2000, 0, 1);\n\nfunction time(month, day, specifier) {\n dateObj.setMonth(month);\n dateObj.setDate(day);\n return timeFormat(dateObj, specifier);\n}\n\nexport function monthFormat(month) {\n return time(month, 1, '%B');\n}\n\nexport function monthAbbrevFormat(month) {\n return time(month, 1, '%b');\n}\n\nexport function dayFormat(day) {\n return time(0, 2 + day, '%A');\n}\n\nexport function dayAbbrevFormat(day) {\n return time(0, 2 + day, '%a');\n}\n","import {bandSpace} from 'vega-scale';\nimport {isArray, isFunction, isString} from 'vega-util';\n\nexport function getScale(name, ctx) {\n let s;\n return isFunction(name) ? name\n : isString(name) ? (s = ctx.scales[name]) && s.value\n : undefined;\n}\n\nexport function range(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.range ? s.range() : [];\n}\n\nexport function domain(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.domain() : [];\n}\n\nexport function bandwidth(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.bandwidth ? s.bandwidth() : 0;\n}\n\nexport function bandspace(count, paddingInner, paddingOuter) {\n return bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);\n}\n\nexport function copy(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.copy() : undefined;\n}\n\nexport function scale(name, value, group) {\n const s = getScale(name, (group || this).context);\n return s && value !== undefined ? s(value) : undefined;\n}\n\nexport function invert(name, range, group) {\n const s = getScale(name, (group || this).context);\n return !s ? undefined\n : isArray(range) ? (s.invertRange || s.invert)(range)\n : (s.invert || s.invertExtent)(range);\n}\n","import {getScale} from './scale';\nimport {\n geoArea as area,\n geoBounds as bounds,\n geoCentroid as centroid\n} from 'd3-geo';\n\nfunction geoMethod(methodName, globalMethod) {\n return function(projection, geojson, group) {\n if (projection) {\n // projection defined, use it\n const p = getScale(projection, (group || this).context);\n return p && p.path[methodName](geojson);\n } else {\n // projection undefined, use global method\n return globalMethod(geojson);\n }\n };\n}\n\nexport const geoArea = geoMethod('area', area);\nexport const geoBounds = geoMethod('bounds', bounds);\nexport const geoCentroid = geoMethod('centroid', centroid);\n","function log(df, method, args) {\n try {\n df[method].apply(df, ['EXPRESSION'].concat([].slice.call(args)));\n } catch (err) {\n df.warn(err);\n }\n return args[args.length-1];\n}\n\nexport function warn() {\n return log(this.context.dataflow, 'warn', arguments);\n}\n\nexport function info() {\n return log(this.context.dataflow, 'info', arguments);\n}\n\nexport function debug() {\n return log(this.context.dataflow, 'debug', arguments);\n}\n","import {isTuple} from 'vega-dataflow';\nimport {isArray, truthy} from 'vega-util';\n\nfunction equal(a, b) {\n return a === b || a !== a && b !== b ? true\n : isArray(a) && isArray(b) && a.length === b.length ? equalArray(a, b)\n : false;\n}\n\nfunction equalArray(a, b) {\n for (let i=0, n=a.length; i<n; ++i) {\n if (!equal(a[i], b[i])) return false;\n }\n return true;\n}\n\nfunction removePredicate(props) {\n return function(_) {\n for (let key in props) {\n if (!equal(_[key], props[key])) return false;\n }\n return true;\n };\n}\n\nexport default function(name, insert, remove, toggle, modify, values) {\n let df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input,\n changes = data.changes,\n stamp = df.stamp(),\n predicate, key;\n\n if (df._trigger === false || !(input.value.length || insert || toggle)) {\n // nothing to do!\n return 0;\n }\n\n if (!changes || changes.stamp < stamp) {\n data.changes = (changes = df.changeset());\n changes.stamp = stamp;\n df.runAfter(function() {\n data.modified = true;\n df.pulse(input, changes).run();\n }, true, 1);\n }\n\n if (remove) {\n predicate = remove === true ? truthy\n : (isArray(remove) || isTuple(remove)) ? remove\n : removePredicate(remove);\n changes.remove(predicate);\n }\n\n if (insert) {\n changes.insert(insert);\n }\n\n if (toggle) {\n predicate = removePredicate(toggle);\n if (input.value.some(predicate)) {\n changes.remove(predicate);\n } else {\n changes.insert(toggle);\n }\n }\n\n if (modify) {\n for (key in values) {\n changes.modify(modify, key, values[key]);\n }\n }\n\n return 1;\n}\n","import {data} from './data';\n\nconst EMPTY = {};\n\nfunction datum(d) { return d.data; }\n\nfunction treeNodes(name, context) {\n const tree = data.call(context, name);\n return tree.root && tree.root.lookup || EMPTY;\n}\n\nexport function treePath(name, source, target) {\n const nodes = treeNodes(name, this),\n s = nodes[source],\n t = nodes[target];\n return s && t ? s.path(t).map(datum) : undefined;\n}\n\nexport function treeAncestors(name, node) {\n const n = treeNodes(name, this)[node];\n return n ? n.ancestors().map(datum) : undefined;\n}\n","const _window = (typeof window !== 'undefined' && window) || null;\n\nexport function screen() {\n return _window ? _window.screen : {};\n}\n\nexport function windowSize() {\n return _window\n ? [_window.innerWidth, _window.innerHeight]\n : [undefined, undefined];\n}\n\nexport function containerSize() {\n const view = this.context.dataflow,\n el = view.container && view.container();\n return el\n ? [el.clientWidth, el.clientHeight]\n : [undefined, undefined];\n}\n","export const DataPrefix = ':';\nexport const IndexPrefix = '@';\nexport const ScalePrefix = '%';\nexport const SignalPrefix = '$';\n","import {DataPrefix, IndexPrefix, ScalePrefix} from './prefix';\nimport {Identifier, Literal} from 'vega-expression';\nimport {error} from 'vega-util';\n\nexport function dataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) {\n error('First argument to data functions must be a string literal.');\n }\n\n const data = args[0].value,\n dataName = DataPrefix + data;\n\n if (!params.hasOwnProperty(dataName)) {\n params[dataName] = scope.getData(data).tuplesRef();\n }\n}\n\nexport function indataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to indata must be a string literal.');\n if (args[1].type !== Literal) error('Second argument to indata must be a string literal.');\n\n const data = args[0].value,\n field = args[1].value,\n indexName = IndexPrefix + field;\n\n if (!params.hasOwnProperty(indexName)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n}\n\nexport function scaleVisitor(name, args, scope, params) {\n if (args[0].type === Literal) {\n // add scale dependency\n addScaleDependency(scope, params, args[0].value);\n }\n else if (args[0].type === Identifier) {\n // indirect scale lookup; add all scales as parameters\n for (name in scope.scales) {\n addScaleDependency(scope, params, name);\n }\n }\n}\n\nfunction addScaleDependency(scope, params, name) {\n const scaleName = ScalePrefix + name;\n if (!params.hasOwnProperty(scaleName)) {\n try {\n params[scaleName] = scope.scaleRef(name);\n } catch (err) {\n // TODO: error handling? warning?\n }\n }\n}\n","import {\n codegen,\n constants,\n functions\n} from 'vega-expression';\n\nimport {\n isTuple\n} from 'vega-dataflow';\n\nimport {\n selectionTest,\n selectionResolve,\n selectionVisitor\n} from 'vega-selections';\n\nimport {\n random\n} from 'vega-statistics';\n\nimport {\n isArray,\n isBoolean,\n isDate,\n isNumber,\n isObject,\n isRegExp,\n isString,\n panLinear,\n panLog,\n panPow,\n panSymlog,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog,\n toBoolean,\n toDate,\n toNumber,\n toString,\n clampRange,\n extent,\n flush,\n inrange,\n lerp,\n pad,\n peek,\n quarter,\n utcquarter,\n span,\n stringValue,\n truncate\n} from 'vega-util';\n\nimport {\n range as sequence\n} from 'd3-array';\n\nimport {\n rgb,\n lab,\n hcl,\n hsl\n} from 'd3-color';\n\nimport {\n data,\n indata,\n setdata\n} from './data';\n\nimport {\n default as encode\n} from './encode';\n\nimport {\n format,\n utcFormat,\n timeFormat,\n utcParse,\n timeParse,\n monthFormat,\n monthAbbrevFormat,\n dayFormat,\n dayAbbrevFormat\n} from './format';\n\nimport {\n geoArea,\n geoBounds,\n geoCentroid\n} from './geo';\n\nimport {\n default as inScope\n} from './inscope';\n\nimport {\n default as intersect\n} from './intersect';\n\nimport {\n warn,\n info,\n debug\n} from './log';\n\nimport {\n default as merge\n} from './merge';\n\nimport {\n default as modify\n} from './modify';\n\nimport {\n pinchDistance,\n pinchAngle\n} from './pinch';\n\nimport {\n range,\n domain,\n bandwidth,\n bandspace,\n copy,\n scale,\n invert\n} from './scale';\n\nimport {\n default as scaleGradient\n} from './scale-gradient';\n\nimport {\n geoShape,\n pathShape\n} from './shape';\n\nimport {\n treePath,\n treeAncestors\n} from './tree';\n\nimport {\n containerSize,\n screen,\n windowSize\n} from './window';\n\nimport {\n dataVisitor,\n indataVisitor,\n scaleVisitor\n} from './visitors';\n\nimport {SignalPrefix} from './prefix';\n\n// Expression function context object\nexport const functionContext = {\n random: function() { return random(); }, // override default\n isArray,\n isBoolean,\n isDate,\n isDefined: function(_) { return _ !== undefined; },\n isNumber,\n isObject,\n isRegExp,\n isString,\n isTuple,\n isValid: function(_) { return _ != null && _ === _; },\n toBoolean,\n toDate,\n toNumber,\n toString,\n flush,\n lerp,\n merge,\n pad,\n peek,\n span,\n inrange,\n truncate,\n rgb,\n lab,\n hcl,\n hsl,\n sequence,\n format,\n utcFormat,\n utcParse,\n timeFormat,\n timeParse,\n monthFormat,\n monthAbbrevFormat,\n dayFormat,\n dayAbbrevFormat,\n quarter,\n utcquarter,\n warn,\n info,\n debug,\n extent,\n inScope,\n intersect,\n clampRange,\n pinchDistance,\n pinchAngle,\n screen,\n containerSize,\n windowSize,\n bandspace,\n setdata,\n pathShape,\n panLinear,\n panLog,\n panPow,\n panSymlog,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog,\n encode,\n modify\n};\n\nconst eventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'], // event functions\n eventPrefix = 'event.vega.', // event function prefix\n thisPrefix = 'this.', // function context prefix\n astVisitors = {}; // AST visitors for dependency analysis\n\n// Build expression function registry\nfunction buildFunctions(codegen) {\n const fn = functions(codegen);\n eventFunctions.forEach(name => fn[name] = eventPrefix + name);\n for (let name in functionContext) { fn[name] = thisPrefix + name; }\n return fn;\n}\n\n// Register an expression function\nexport function expressionFunction(name, fn, visitor) {\n if (arguments.length === 1) {\n return functionContext[name];\n }\n\n // register with the functionContext\n functionContext[name] = fn;\n\n // if there is an astVisitor register that, too\n if (visitor) astVisitors[name] = visitor;\n\n // if the code generator has already been initialized,\n // we need to also register the function with it\n if (codeGenerator) codeGenerator.functions[name] = thisPrefix + name;\n return this;\n}\n\n// register expression functions with ast visitors\nexpressionFunction('bandwidth', bandwidth, scaleVisitor);\nexpressionFunction('copy', copy, scaleVisitor);\nexpressionFunction('domain', domain, scaleVisitor);\nexpressionFunction('range', range, scaleVisitor);\nexpressionFunction('invert', invert, scaleVisitor);\nexpressionFunction('scale', scale, scaleVisitor);\nexpressionFunction('gradient', scaleGradient, scaleVisitor);\nexpressionFunction('geoArea', geoArea, scaleVisitor);\nexpressionFunction('geoBounds', geoBounds, scaleVisitor);\nexpressionFunction('geoCentroid', geoCentroid, scaleVisitor);\nexpressionFunction('geoShape', geoShape, scaleVisitor);\nexpressionFunction('indata', indata, indataVisitor);\nexpressionFunction('data', data, dataVisitor);\nexpressionFunction('treePath', treePath, dataVisitor);\nexpressionFunction('treeAncestors', treeAncestors, dataVisitor);\n\n// register Vega-Lite selection functions\nexpressionFunction('vlSelectionTest', selectionTest, selectionVisitor);\nexpressionFunction('vlSelectionResolve', selectionResolve, selectionVisitor);\n\n// Export code generator and parameters\nexport const codegenParams = {\n blacklist: ['_'],\n whitelist: ['datum', 'event', 'item'],\n fieldvar: 'datum',\n globalvar: function(id) { return '_[' + stringValue(SignalPrefix + id) + ']'; },\n functions: buildFunctions,\n constants: constants,\n visitors: astVisitors\n};\n\nexport var codeGenerator = codegen(codegenParams);\n","import {extend} from 'vega-util';\n\nexport default function() {\n var args = [].slice.call(arguments);\n args.unshift({});\n return extend.apply(null, args);\n}\n","export default function(item) {\n let group = this.context.group,\n value = false;\n\n if (group) while (item) {\n if (item === group) { value = true; break; }\n item = item.mark.group;\n }\n return value;\n}\n","import {Bounds, intersect} from 'vega-scenegraph';\nimport {array} from 'vega-util';\n\nexport default function(b, opt, group) {\n if (!b) return [];\n\n const [u, v] = b,\n box = new Bounds().set(u[0], u[1], v[0], v[1]),\n scene = group || this.context.dataflow.scenegraph().root;\n\n return intersect(scene, box, filter(opt));\n}\n\nfunction filter(opt) {\n let p = null;\n\n if (opt) {\n const types = array(opt.marktype),\n names = array(opt.markname);\n p = _ => (!types.length || types.some(t => _.marktype === t))\n && (!names.length || names.some(s => _.name === s));\n }\n\n return p;\n}","export function pinchDistance(event) {\n const t = event.touches,\n dx = t[0].clientX - t[1].clientX,\n dy = t[0].clientY - t[1].clientY;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nexport function pinchAngle(event) {\n const t = event.touches;\n return Math.atan2(\n t[0].clientY - t[1].clientY,\n t[0].clientX - t[1].clientX\n );\n}\n","import {getScale} from './scale';\nimport {pathParse, pathRender} from 'vega-scenegraph';\n\nexport function geoShape(projection, geojson, group) {\n const p = getScale(projection, (group || this).context);\n return function(context) {\n return p ? p.path.context(context)(geojson) : '';\n }\n}\n\nexport function pathShape(path) {\n let p = null;\n return function(context) {\n return context\n ? pathRender(context, (p = p || pathParse(path)))\n : path;\n };\n}\n","export default function(item, name, retval) {\n if (item) {\n const df = this.context.dataflow,\n target = item.mark.source;\n df.pulse(target, df.changeset().encode(item, name));\n }\n return retval !== undefined ? retval : item;\n}\n","import {getScale} from './scale';\nimport {scaleFraction, scale as get} from 'vega-scale';\nimport {Gradient} from 'vega-scenegraph';\nimport {identity, peek} from 'vega-util';\n\nexport default function(scale, p0, p1, count, group) {\n scale = getScale(scale, (group || this).context);\n\n const gradient = Gradient(p0, p1);\n\n let stops = scale.domain(),\n min = stops[0],\n max = peek(stops),\n fraction = identity\n\n if (!(max - min)) {\n // expand scale if domain has zero span, fix #1479\n scale = (scale.interpolator\n ? get('sequential')().interpolator(scale.interpolator())\n : get('linear')().interpolate(scale.interpolate()).range(scale.range())\n ).domain([min=0, max=1]);\n } else {\n fraction = scaleFraction(scale, min, max);\n }\n\n if (scale.ticks) {\n stops = scale.ticks(+count || 15);\n if (min !== stops[0]) stops.unshift(min);\n if (max !== peek(stops)) stops.push(max);\n }\n\n stops.forEach(_ => gradient.stop(fraction(_), scale(_)));\n\n return gradient;\n}\n","import Constants from './constants';\nimport Functions from './functions';\nimport {error, isFunction, isString, toSet} from 'vega-util';\n\nfunction stripQuotes(s) {\n var n = s && s.length - 1;\n return n && (\n (s[0]==='\"' && s[n]==='\"') ||\n (s[0]==='\\'' && s[n]==='\\'')\n ) ? s.slice(1, -1) : s;\n}\n\nexport default function(opt) {\n opt = opt || {};\n\n var whitelist = opt.whitelist ? toSet(opt.whitelist) : {},\n blacklist = opt.blacklist ? toSet(opt.blacklist) : {},\n constants = opt.constants || Constants,\n functions = (opt.functions || Functions)(visit),\n globalvar = opt.globalvar,\n fieldvar = opt.fieldvar,\n globals = {},\n fields = {},\n memberDepth = 0;\n\n var outputGlobal = isFunction(globalvar)\n ? globalvar\n : function (id) { return globalvar + '[\"' + id + '\"]'; };\n\n function visit(ast) {\n if (isString(ast)) return ast;\n var generator = Generators[ast.type];\n if (generator == null) error('Unsupported type: ' + ast.type);\n return generator(ast);\n }\n\n var Generators = {\n Literal: function(n) {\n return n.raw;\n },\n\n Identifier: function(n) {\n var id = n.name;\n if (memberDepth > 0) {\n return id;\n } else if (blacklist.hasOwnProperty(id)) {\n return error('Illegal identifier: ' + id);\n } else if (constants.hasOwnProperty(id)) {\n return constants[id];\n } else if (whitelist.hasOwnProperty(id)) {\n return id;\n } else {\n globals[id] = 1;\n return outputGlobal(id);\n }\n },\n\n MemberExpression: function(n) {\n var d = !n.computed;\n var o = visit(n.object);\n if (d) memberDepth += 1;\n var p = visit(n.property);\n if (o === fieldvar) {\n // strip quotes to sanitize field name (#1653)\n fields[stripQuotes(p)] = 1;\n }\n if (d) memberDepth -= 1;\n return o + (d ? '.'+p : '['+p+']');\n },\n\n CallExpression: function(n) {\n if (n.callee.type !== 'Identifier') {\n error('Illegal callee type: ' + n.callee.type);\n }\n var callee = n.callee.name;\n var args = n.arguments;\n var fn = functions.hasOwnProperty(callee) && functions[callee];\n if (!fn) error('Unrecognized function: ' + callee);\n return isFunction(fn)\n ? fn(args)\n : fn + '(' + args.map(visit).join(',') + ')';\n },\n\n ArrayExpression: function(n) {\n return '[' + n.elements.map(visit).join(',') + ']';\n },\n\n BinaryExpression: function(n) {\n return '(' + visit(n.left) + n.operator + visit(n.right) + ')';\n },\n\n UnaryExpression: function(n) {\n return '(' + n.operator + visit(n.argument) + ')';\n },\n\n ConditionalExpression: function(n) {\n return '(' + visit(n.test) +\n '?' + visit(n.consequent) +\n ':' + visit(n.alternate) +\n ')';\n },\n\n LogicalExpression: function(n) {\n return '(' + visit(n.left) + n.operator + visit(n.right) + ')';\n },\n\n ObjectExpression: function(n) {\n return '{' + n.properties.map(visit).join(',') + '}';\n },\n\n Property: function(n) {\n memberDepth += 1;\n var k = visit(n.key);\n memberDepth -= 1;\n return k + ':' + visit(n.value);\n }\n };\n\n function codegen(ast) {\n var result = {\n code: visit(ast),\n globals: Object.keys(globals),\n fields: Object.keys(fields)\n };\n globals = {};\n fields = {};\n return result;\n }\n\n codegen.functions = functions;\n codegen.constants = constants;\n\n return codegen;\n}\n","/**\n * Parse an expression given the argument signature and body code.\n */\nexport default function expression(args, code, ctx) {\n // wrap code in return statement if expression does not terminate\n if (code[code.length-1] !== ';') {\n code = 'return(' + code + ');';\n }\n var fn = Function.apply(null, args.concat(code));\n return ctx && ctx.functions ? fn.bind(ctx.functions) : fn;\n}\n\n/**\n * Parse an expression used to update an operator value.\n */\nexport function operatorExpression(code, ctx) {\n return expression(['_'], code, ctx);\n}\n\n/**\n * Parse an expression provided as an operator parameter value.\n */\nexport function parameterExpression(code, ctx) {\n return expression(['datum', '_'], code, ctx);\n}\n\n/**\n * Parse an expression applied to an event stream.\n */\nexport function eventExpression(code, ctx) {\n return expression(['event'], code, ctx);\n}\n\n/**\n * Parse an expression used to handle an event-driven operator update.\n */\nexport function handlerExpression(code, ctx) {\n return expression(['_', 'event'], code, ctx);\n}\n\n/**\n * Parse an expression that performs visual encoding.\n */\nexport function encodeExpression(code, ctx) {\n return expression(['item', '_'], code, ctx);\n}\n","import parseDataflow from './dataflow';\nimport {parameterExpression, encodeExpression} from './expression';\nimport {tupleid} from 'vega-dataflow';\nimport {accessor, array, compare, error, field, isArray, isObject, key} from 'vega-util';\n\n/**\n * Parse a set of operator parameters.\n */\nexport default function parseParameters(spec, ctx, params) {\n params = params || {};\n var key, value;\n\n for (key in spec) {\n value = spec[key];\n\n params[key] = isArray(value)\n ? value.map(function(v) { return parseParameter(v, ctx, params); })\n : parseParameter(value, ctx, params);\n }\n return params;\n}\n\n/**\n * Parse a single parameter.\n */\nfunction parseParameter(spec, ctx, params) {\n if (!spec || !isObject(spec)) return spec;\n\n for (var i=0, n=PARSERS.length, p; i<n; ++i) {\n p = PARSERS[i];\n if (spec.hasOwnProperty(p.key)) {\n return p.parse(spec, ctx, params);\n }\n }\n return spec;\n}\n\n/** Reference parsers. */\nvar PARSERS = [\n {key: '$ref', parse: getOperator},\n {key: '$key', parse: getKey},\n {key: '$expr', parse: getExpression},\n {key: '$field', parse: getField},\n {key: '$encode', parse: getEncode},\n {key: '$compare', parse: getCompare},\n {key: '$context', parse: getContext},\n {key: '$subflow', parse: getSubflow},\n {key: '$tupleid', parse: getTupleId}\n];\n\n/**\n * Resolve an operator reference.\n */\nfunction getOperator(_, ctx) {\n return ctx.get(_.$ref) || error('Operator not defined: ' + _.$ref);\n}\n\n/**\n * Resolve an expression reference.\n */\nfunction getExpression(_, ctx, params) {\n if (_.$params) { // parse expression parameters\n parseParameters(_.$params, ctx, params);\n }\n var k = 'e:' + _.$expr + '_' + _.$name;\n return ctx.fn[k]\n || (ctx.fn[k] = accessor(parameterExpression(_.$expr, ctx), _.$fields, _.$name));\n}\n\n/**\n * Resolve a key accessor reference.\n */\nfunction getKey(_, ctx) {\n var k = 'k:' + _.$key + '_' + (!!_.$flat);\n return ctx.fn[k] || (ctx.fn[k] = key(_.$key, _.$flat));\n}\n\n/**\n * Resolve a field accessor reference.\n */\nfunction getField(_, ctx) {\n if (!_.$field) return null;\n var k = 'f:' + _.$field + '_' + _.$name;\n return ctx.fn[k] || (ctx.fn[k] = field(_.$field, _.$name));\n}\n\n/**\n * Resolve a comparator function reference.\n */\nfunction getCompare(_, ctx) {\n var k = 'c:' + _.$compare + '_' + _.$order,\n c = array(_.$compare).map(function(_) {\n return (_ && _.$tupleid) ? tupleid : _;\n });\n return ctx.fn[k] || (ctx.fn[k] = compare(c, _.$order));\n}\n\n/**\n * Resolve an encode operator reference.\n */\nfunction getEncode(_, ctx) {\n var spec = _.$encode,\n encode = {}, name, enc;\n\n for (name in spec) {\n enc = spec[name];\n encode[name] = accessor(encodeExpression(enc.$expr, ctx), enc.$fields);\n encode[name].output = enc.$output;\n }\n return encode;\n}\n\n/**\n * Resolve a context reference.\n */\nfunction getContext(_, ctx) {\n return ctx;\n}\n\n/**\n * Resolve a recursive subflow specification.\n */\nfunction getSubflow(_, ctx) {\n var spec = _.$subflow;\n return function(dataflow, key, parent) {\n var subctx = parseDataflow(spec, ctx.fork()),\n op = subctx.get(spec.operators[0].id),\n p = subctx.signals.parent;\n if (p) p.set(parent);\n return op;\n };\n}\n\n/**\n * Resolve a tuple id reference.\n */\nfunction getTupleId() {\n return tupleid;\n}\n","export function canonicalType(type) {\n return (type + '').toLowerCase();\n}\nexport function isOperator(type) {\n return canonicalType(type) === 'operator';\n}\n\nexport function isCollect(type) {\n return canonicalType(type) === 'collect';\n}\n","import {operatorExpression} from './expression';\nimport parseParameters from './parameters';\nimport {isOperator} from './util';\nimport {error} from 'vega-util';\n\n/**\n * Parse a dataflow operator.\n */\nexport default function(spec, ctx) {\n if (isOperator(spec.type) || !spec.type) {\n ctx.operator(spec,\n spec.update ? operatorExpression(spec.update, ctx) : null);\n } else {\n ctx.transform(spec, spec.type);\n }\n}\n\n/**\n * Parse and assign operator parameters.\n */\nexport function parseOperatorParameters(spec, ctx) {\n if (spec.params) {\n var op = ctx.get(spec.id);\n if (!op) error('Invalid operator id: ' + spec.id);\n ctx.dataflow.connect(op, op.parameters(\n parseParameters(spec.params, ctx),\n spec.react,\n spec.initonly\n ));\n }\n}\n","import {eventExpression} from './expression';\nimport {error} from 'vega-util';\n\n/**\n * Parse an event stream specification.\n */\nexport default function(spec, ctx) {\n var filter = spec.filter != null ? eventExpression(spec.filter, ctx) : undefined,\n stream = spec.stream != null ? ctx.get(spec.stream) : undefined,\n args;\n\n if (spec.source) {\n stream = ctx.events(spec.source, spec.type, filter);\n }\n else if (spec.merge) {\n args = spec.merge.map(ctx.get.bind(ctx));\n stream = args[0].merge.apply(args[0], args.slice(1));\n }\n\n if (spec.between) {\n args = spec.between.map(ctx.get.bind(ctx));\n stream = stream.between(args[0], args[1]);\n }\n\n if (spec.filter) {\n stream = stream.filter(filter);\n }\n\n if (spec.throttle != null) {\n stream = stream.throttle(+spec.throttle);\n }\n\n if (spec.debounce != null) {\n stream = stream.debounce(+spec.debounce);\n }\n\n if (stream == null) {\n error('Invalid stream definition: ' + JSON.stringify(spec));\n }\n\n if (spec.consume) stream.consume(true);\n\n ctx.stream(spec, stream);\n}\n","import {eventExpression, handlerExpression} from './expression';\nimport parseParameters from './parameters';\nimport {error, isObject} from 'vega-util';\n\n/**\n * Parse an event-driven operator update.\n */\nexport default function(spec, ctx) {\n var srcid = isObject(srcid = spec.source) ? srcid.$ref : srcid,\n source = ctx.get(srcid),\n target = null,\n update = spec.update,\n params = undefined;\n\n if (!source) error('Source not defined: ' + spec.source);\n\n if (spec.target && spec.target.$expr) {\n target = eventExpression(spec.target.$expr, ctx);\n } else {\n target = ctx.get(spec.target);\n }\n\n if (update && update.$expr) {\n if (update.$params) {\n params = parseParameters(update.$params, ctx);\n }\n update = handlerExpression(update.$expr, ctx);\n }\n\n ctx.update(spec, source, target, update, params);\n}\n","import {default as parseOperator, parseOperatorParameters} from './operator';\nimport parseStream from './stream';\nimport parseUpdate from './update';\n\n/**\n * Parse a serialized dataflow specification.\n */\nexport default function(spec, ctx) {\n var operators = spec.operators || [];\n\n // parse background\n if (spec.background) {\n ctx.background = spec.background;\n }\n\n // parse event configuration\n if (spec.eventConfig) {\n ctx.eventConfig = spec.eventConfig;\n }\n\n // parse operators\n operators.forEach(function(entry) {\n parseOperator(entry, ctx);\n });\n\n // parse operator parameters\n operators.forEach(function(entry) {\n parseOperatorParameters(entry, ctx);\n });\n\n // parse streams\n (spec.streams || []).forEach(function(entry) {\n parseStream(entry, ctx);\n });\n\n // parse updates\n (spec.updates || []).forEach(function(entry) {\n parseUpdate(entry, ctx);\n });\n\n return ctx.resolve();\n}\n","import {truthy} from 'vega-util';\n\nvar SKIP = {skip: true};\n\nexport function getState(options) {\n var ctx = this,\n state = {};\n\n if (options.signals) {\n var signals = (state.signals = {});\n Object.keys(ctx.signals).forEach(function(key) {\n var op = ctx.signals[key];\n if (options.signals(key, op)) {\n signals[key] = op.value;\n }\n });\n }\n\n if (options.data) {\n var data = (state.data = {});\n Object.keys(ctx.data).forEach(function(key) {\n var dataset = ctx.data[key];\n if (options.data(key, dataset)) {\n data[key] = dataset.input.value;\n }\n });\n }\n\n if (ctx.subcontext && options.recurse !== false) {\n state.subcontext = ctx.subcontext.map(function(ctx) {\n return ctx.getState(options);\n });\n }\n\n return state;\n}\n\nexport function setState(state) {\n var ctx = this,\n df = ctx.dataflow,\n data = state.data,\n signals = state.signals;\n\n Object.keys(signals || {}).forEach(function(key) {\n df.update(ctx.signals[key], signals[key], SKIP);\n });\n\n Object.keys(data || {}).forEach(function(key) {\n df.pulse(\n ctx.data[key].input,\n df.changeset().remove(truthy).insert(data[key])\n );\n });\n\n (state.subcontext || []).forEach(function(substate, i) {\n var subctx = ctx.subcontext[i];\n if (subctx) subctx.setState(substate);\n });\n}\n","import {getState, setState} from './state';\nimport {canonicalType, isCollect} from './util';\n\n/**\n * Context objects store the current parse state.\n * Enables lookup of parsed operators, event streams, accessors, etc.\n * Provides a 'fork' method for creating child contexts for subflows.\n */\nexport default function(df, transforms, functions) {\n return new Context(df, transforms, functions);\n}\n\nfunction Context(df, transforms, functions) {\n this.dataflow = df;\n this.transforms = transforms;\n this.events = df.events.bind(df);\n this.signals = {};\n this.scales = {};\n this.nodes = {};\n this.data = {};\n this.fn = {};\n if (functions) {\n this.functions = Object.create(functions);\n this.functions.context = this;\n }\n}\n\nfunction ContextFork(ctx) {\n this.dataflow = ctx.dataflow;\n this.transforms = ctx.transforms;\n this.functions = ctx.functions;\n this.events = ctx.events;\n this.signals = Object.create(ctx.signals);\n this.scales = Object.create(ctx.scales);\n this.nodes = Object.create(ctx.nodes);\n this.data = Object.create(ctx.data);\n this.fn = Object.create(ctx.fn);\n if (ctx.functions) {\n this.functions = Object.create(ctx.functions);\n this.functions.context = this;\n }\n}\n\nContext.prototype = ContextFork.prototype = {\n fork: function() {\n var ctx = new ContextFork(this);\n (this.subcontext || (this.subcontext = [])).push(ctx);\n return ctx;\n },\n get: function(id) {\n return this.nodes[id];\n },\n set: function(id, node) {\n return this.nodes[id] = node;\n },\n add: function(spec, op) {\n var ctx = this,\n df = ctx.dataflow,\n data;\n\n ctx.set(spec.id, op);\n\n if (isCollect(spec.type) && (data = spec.value)) {\n if (data.$ingest) {\n df.ingest(op, data.$ingest, data.$format);\n } else if (data.$request) {\n df.preload(op, data.$request, data.$format);\n } else {\n df.pulse(op, df.changeset().insert(data));\n }\n }\n\n if (spec.root) {\n ctx.root = op;\n }\n\n if (spec.parent) {\n var p = ctx.get(spec.parent.$ref);\n if (p) {\n df.connect(p, [op]);\n op.targets().add(p);\n } else {\n (ctx.unresolved = ctx.unresolved || []).push(function() {\n p = ctx.get(spec.parent.$ref);\n df.connect(p, [op]);\n op.targets().add(p);\n });\n }\n }\n\n if (spec.signal) {\n ctx.signals[spec.signal] = op;\n }\n\n if (spec.scale) {\n ctx.scales[spec.scale] = op;\n }\n\n if (spec.data) {\n for (var name in spec.data) {\n data = ctx.data[name] || (ctx.data[name] = {});\n spec.data[name].forEach(function(role) { data[role] = op; });\n }\n }\n },\n resolve: function() {\n (this.unresolved || []).forEach(function(fn) { fn(); });\n delete this.unresolved;\n return this;\n },\n operator: function(spec, update) {\n this.add(spec, this.dataflow.add(spec.value, update));\n },\n transform: function(spec, type) {\n this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)]));\n },\n stream: function(spec, stream) {\n this.set(spec.id, stream);\n },\n update: function(spec, stream, target, update, params) {\n this.dataflow.on(stream, target, update, params, spec.options);\n },\n getState: getState,\n setState: setState\n};\n","import {transforms} from 'vega-dataflow';\nimport {functionContext} from 'vega-functions';\nimport {parse, context} from 'vega-runtime';\n\nexport default function(view, spec, functions) {\n var fn = functions || functionContext;\n return parse(spec, context(view, transforms, fn));\n}\n","var Width = 'width',\n Height = 'height',\n Padding = 'padding',\n Skip = {skip: true};\n\nexport function viewWidth(view, width) {\n var a = view.autosize(),\n p = view.padding();\n return width - (a && a.contains === Padding ? p.left + p.right : 0);\n}\n\nexport function viewHeight(view, height) {\n var a = view.autosize(),\n p = view.padding();\n return height - (a && a.contains === Padding ? p.top + p.bottom : 0);\n}\n\nexport function initializeResize(view) {\n var s = view._signals,\n w = s[Width],\n h = s[Height],\n p = s[Padding];\n\n function resetSize() {\n view._autosize = view._resize = 1;\n }\n\n // respond to width signal\n view._resizeWidth = view.add(null,\n function(_) {\n view._width = _.size;\n view._viewWidth = viewWidth(view, _.size);\n resetSize();\n },\n {size: w}\n );\n\n // respond to height signal\n view._resizeHeight = view.add(null,\n function(_) {\n view._height = _.size;\n view._viewHeight = viewHeight(view, _.size);\n resetSize();\n },\n {size: h}\n );\n\n // respond to padding signal\n var resizePadding = view.add(null, resetSize, {pad: p});\n\n // set rank to run immediately after source signal\n view._resizeWidth.rank = w.rank + 1;\n view._resizeHeight.rank = h.rank + 1;\n resizePadding.rank = p.rank + 1;\n}\n\nexport function resizeView(viewWidth, viewHeight, width, height, origin, auto) {\n this.runAfter(function(view) {\n var rerun = 0;\n\n // reset autosize flag\n view._autosize = 0;\n\n // width value changed: update signal, skip resize op\n if (view.width() !== width) {\n rerun = 1;\n view.signal(Width, width, Skip); // set width, skip update calc\n view._resizeWidth.skip(true); // skip width resize handler\n }\n\n // height value changed: update signal, skip resize op\n if (view.height() !== height) {\n rerun = 1;\n view.signal(Height, height, Skip); // set height, skip update calc\n view._resizeHeight.skip(true); // skip height resize handler\n }\n\n // view width changed: update view property, set resize flag\n if (view._viewWidth !== viewWidth) {\n view._resize = 1;\n view._viewWidth = viewWidth;\n }\n\n // view height changed: update view property, set resize flag\n if (view._viewHeight !== viewHeight) {\n view._resize = 1;\n view._viewHeight = viewHeight;\n }\n\n // origin changed: update view property, set resize flag\n if (view._origin[0] !== origin[0] || view._origin[1] !== origin[1]) {\n view._resize = 1;\n view._origin = origin;\n }\n\n // run dataflow on width/height signal change\n if (rerun) view.run('enter');\n if (auto) view.runAfter(v => v.resize());\n }, false, 1);\n}\n","import {transforms} from 'vega-dataflow';\nimport {isArray} from 'vega-util';\n\n/**\n * Get the current view state, consisting of signal values and/or data sets.\n * @param {object} [options] - Options flags indicating which state to export.\n * If unspecified, all signals and data sets will be exported.\n * @param {function(string, Operator):boolean} [options.signals] - Optional\n * predicate function for testing if a signal should be included in the\n * exported state. If unspecified, all signals will be included, except for\n * those named 'parent' or those which refer to a Transform value.\n * @param {function(string, object):boolean} [options.data] - Optional\n * predicate function for testing if a data set's input should be included\n * in the exported state. If unspecified, all data sets that have been\n * explicitly modified will be included.\n * @param {boolean} [options.recurse=true] - Flag indicating if the exported\n * state should recursively include state from group mark sub-contexts.\n * @return {object} - An object containing the exported state values.\n */\nexport function getState(options) {\n return this._runtime.getState(options || {\n data: dataTest,\n signals: signalTest,\n recurse: true\n });\n}\n\nfunction dataTest(name, data) {\n return data.modified\n && isArray(data.input.value)\n && name.indexOf('_:vega:_');\n}\n\nfunction signalTest(name, op) {\n return !(name === 'parent' || op instanceof transforms.proxy);\n}\n\n/**\n * Sets the current view state and updates the view by invoking run.\n * @param {object} state - A state object containing signal and/or\n * data set values, following the format used by the getState method.\n * @return {View} - This view instance.\n */\nexport function setState(state) {\n this.runAsync(null,\n v => { v._trigger = false; v._runtime.setState(state); },\n v => { v._trigger = true; }\n );\n return this;\n}\n","import {interval} from 'd3-timer';\n\nexport default function(callback, delay) {\n function tick(elapsed) {\n callback({timestamp: Date.now(), elapsed: elapsed});\n }\n this._timers.push(interval(tick, delay));\n}\n","import {isArray, isDate, isObject} from 'vega-util';\n\nexport default function(handler, event, item, value) {\n var el = handler.element();\n if (el) el.setAttribute('title', formatTooltip(value));\n}\n\nfunction formatTooltip(value) {\n return value == null ? ''\n : isArray(value) ? formatArray(value)\n : isObject(value) && !isDate(value) ? formatObject(value)\n : value + '';\n}\n\nfunction formatObject(obj) {\n return Object.keys(obj).map(function(key) {\n var v = obj[key];\n return key + ': ' + (isArray(v) ? formatArray(v) : formatValue(v));\n }).join('\\n');\n}\n\nfunction formatArray(value) {\n return '[' + value.map(formatValue).join(', ') + ']';\n}\n\nfunction formatValue(value) {\n return isArray(value) ? '[\\u2026]'\n : isObject(value) && !isDate(value) ? '{\\u2026}'\n : value;\n}\n","import cursor from './cursor';\nimport {data, dataref, change, insert, remove} from './data';\nimport {initializeEventConfig, events} from './events';\nimport hover from './hover';\nimport finalize from './finalize';\nimport initialize from './initialize';\nimport renderToImageURL from './render-to-image-url';\nimport renderToCanvas from './render-to-canvas';\nimport renderToSVG from './render-to-svg';\nimport {resizeRenderer} from './render-size';\nimport runtime from './runtime';\nimport {scale} from './scale';\nimport {resizeView, initializeResize, viewWidth, viewHeight} from './size';\nimport {getState, setState} from './state';\nimport timer from './timer';\nimport defaultTooltip from './tooltip';\nimport trap from './trap';\n\nimport {asyncCallback, Dataflow} from 'vega-dataflow';\nimport {error, extend, inherits, stringValue} from 'vega-util';\nimport {\n CanvasHandler, Scenegraph,\n renderModule, RenderType\n} from 'vega-scenegraph';\n\n/**\n * Create a new View instance from a Vega dataflow runtime specification.\n * The generated View will not immediately be ready for display. Callers\n * should also invoke the initialize method (e.g., to set the parent\n * DOM element in browser-based deployment) and then invoke the run\n * method to evaluate the dataflow graph. Rendering will automatically\n * be peformed upon dataflow runs.\n * @constructor\n * @param {object} spec - The Vega dataflow runtime specification.\n */\nexport default function View(spec, options) {\n var view = this;\n options = options || {};\n\n Dataflow.call(view);\n if (options.loader) view.loader(options.loader);\n if (options.logger) view.logger(options.logger);\n if (options.logLevel != null) view.logLevel(options.logLevel);\n\n view._el = null;\n view._elBind = null;\n view._renderType = options.renderer || RenderType.Canvas;\n view._scenegraph = new Scenegraph();\n var root = view._scenegraph.root;\n\n // initialize renderer, handler and event management\n view._renderer = null;\n view._tooltip = options.tooltip || defaultTooltip,\n view._redraw = true;\n view._handler = new CanvasHandler().scene(root);\n view._preventDefault = false;\n view._timers = [];\n view._eventListeners = [];\n view._resizeListeners = [];\n\n // initialize dataflow graph\n var ctx = runtime(view, spec, options.functions);\n view._runtime = ctx;\n view._signals = ctx.signals;\n view._bind = (spec.bindings || []).map(function(_) {\n return {\n state: null,\n param: extend({}, _)\n };\n });\n\n // initialize scenegraph\n if (ctx.root) ctx.root.set(root);\n root.source = ctx.data.root.input;\n view.pulse(\n ctx.data.root.input,\n view.changeset().insert(root.items)\n );\n\n // initialize background color\n view._background = options.background || ctx.background || null;\n\n // initialize event configuration\n view._eventConfig = initializeEventConfig(ctx.eventConfig);\n\n // initialize view size\n view._width = view.width();\n view._height = view.height();\n view._viewWidth = viewWidth(view, view._width);\n view._viewHeight = viewHeight(view, view._height);\n view._origin = [0, 0];\n view._resize = 0;\n view._autosize = 1;\n initializeResize(view);\n\n // initialize cursor\n cursor(view);\n\n // initialize hover proessing, if requested\n if (options.hover) view.hover();\n\n // initialize DOM container(s) and renderer\n if (options.container) view.initialize(options.container, options.bind);\n}\n\nvar prototype = inherits(View, Dataflow);\n\n// -- DATAFLOW / RENDERING ----\n\nprototype.evaluate = async function(encode, prerun, postrun) {\n // evaluate dataflow and prerun\n await Dataflow.prototype.evaluate.call(this, encode, prerun);\n\n // render as needed\n if (this._redraw || this._resize) {\n try {\n if (this._renderer) {\n if (this._resize) {\n this._resize = 0;\n resizeRenderer(this);\n }\n await this._renderer.renderAsync(this._scenegraph.root);\n }\n this._redraw = false;\n } catch (e) {\n this.error(e);\n }\n }\n\n // evaluate postrun\n if (postrun) asyncCallback(this, postrun);\n\n return this;\n};\n\nprototype.dirty = function(item) {\n this._redraw = true;\n this._renderer && this._renderer.dirty(item);\n};\n\n// -- GET / SET ----\n\nprototype.container = function() {\n return this._el;\n};\n\nprototype.scenegraph = function() {\n return this._scenegraph;\n};\n\nprototype.origin = function() {\n return this._origin.slice();\n};\n\nfunction lookupSignal(view, name) {\n return view._signals.hasOwnProperty(name)\n ? view._signals[name]\n : error('Unrecognized signal name: ' + stringValue(name));\n}\n\nprototype.signal = function(name, value, options) {\n var op = lookupSignal(this, name);\n return arguments.length === 1\n ? op.value\n : this.update(op, value, options);\n};\n\nprototype.background = function(_) {\n if (arguments.length) {\n this._background = _;\n this._resize = 1;\n return this;\n } else {\n return this._background;\n }\n};\n\nprototype.width = function(_) {\n return arguments.length ? this.signal('width', _) : this.signal('width');\n};\n\nprototype.height = function(_) {\n return arguments.length ? this.signal('height', _) : this.signal('height');\n};\n\nprototype.padding = function(_) {\n return arguments.length ? this.signal('padding', _) : this.signal('padding');\n};\n\nprototype.autosize = function(_) {\n return arguments.length ? this.signal('autosize', _) : this.signal('autosize');\n};\n\nprototype.renderer = function(type) {\n if (!arguments.length) return this._renderType;\n if (!renderModule(type)) error('Unrecognized renderer type: ' + type);\n if (type !== this._renderType) {\n this._renderType = type;\n this._resetRenderer();\n }\n return this;\n};\n\nprototype.tooltip = function(handler) {\n if (!arguments.length) return this._tooltip;\n if (handler !== this._tooltip) {\n this._tooltip = handler;\n this._resetRenderer();\n }\n return this;\n};\n\nprototype.loader = function(loader) {\n if (!arguments.length) return this._loader;\n if (loader !== this._loader) {\n Dataflow.prototype.loader.call(this, loader);\n this._resetRenderer();\n }\n return this;\n};\n\nprototype.resize = function() {\n // set flag to perform autosize\n this._autosize = 1;\n // touch autosize signal to ensure top-level ViewLayout runs\n return this.touch(lookupSignal(this, 'autosize'));\n};\n\nprototype._resetRenderer = function() {\n if (this._renderer) {\n this._renderer = null;\n this.initialize(this._el, this._elBind);\n }\n};\n\n// -- SIZING ----\nprototype._resizeView = resizeView;\n\n// -- EVENT HANDLING ----\n\nprototype.addEventListener = function(type, handler, options) {\n var callback = handler;\n if (!(options && options.trap === false)) {\n // wrap callback in error handler\n callback = trap(this, handler);\n callback.raw = handler;\n }\n this._handler.on(type, callback);\n return this;\n};\n\nprototype.removeEventListener = function(type, handler) {\n var handlers = this._handler.handlers(type),\n i = handlers.length, h, t;\n\n // search registered handlers, remove if match found\n while (--i >= 0) {\n t = handlers[i].type;\n h = handlers[i].handler;\n if (type === t && (handler === h || handler === h.raw)) {\n this._handler.off(t, h);\n break;\n }\n }\n return this;\n};\n\nprototype.addResizeListener = function(handler) {\n var l = this._resizeListeners;\n if (l.indexOf(handler) < 0) {\n // add handler if it isn't already registered\n // note: error trapping handled elsewhere, so\n // no need to wrap handlers here\n l.push(handler);\n }\n return this;\n};\n\nprototype.removeResizeListener = function(handler) {\n var l = this._resizeListeners,\n i = l.indexOf(handler);\n if (i >= 0) {\n l.splice(i, 1);\n }\n return this;\n};\n\nfunction findOperatorHandler(op, handler) {\n var t = op._targets || [],\n h = t.filter(function(op) {\n var u = op._update;\n return u && u.handler === handler;\n });\n return h.length ? h[0] : null;\n}\n\nfunction addOperatorListener(view, name, op, handler) {\n var h = findOperatorHandler(op, handler);\n if (!h) {\n h = trap(this, function() { handler(name, op.value); });\n h.handler = handler;\n view.on(op, null, h);\n }\n return view;\n}\n\nfunction removeOperatorListener(view, op, handler) {\n var h = findOperatorHandler(op, handler);\n if (h) op._targets.remove(h);\n return view;\n}\n\nprototype.addSignalListener = function(name, handler) {\n return addOperatorListener(this, name, lookupSignal(this, name), handler);\n};\n\nprototype.removeSignalListener = function(name, handler) {\n return removeOperatorListener(this, lookupSignal(this, name), handler);\n};\n\nprototype.addDataListener = function(name, handler) {\n return addOperatorListener(this, name, dataref(this, name).values, handler);\n};\n\nprototype.removeDataListener = function(name, handler) {\n return removeOperatorListener(this, dataref(this, name).values, handler);\n};\n\nprototype.preventDefault = function(_) {\n if (arguments.length) {\n this._preventDefault = _;\n return this;\n } else {\n return this._preventDefault;\n }\n};\n\nprototype.timer = timer;\nprototype.events = events;\nprototype.finalize = finalize;\nprototype.hover = hover;\n\n// -- DATA ----\nprototype.data = data;\nprototype.change = change;\nprototype.insert = insert;\nprototype.remove = remove;\n\n// -- SCALES --\nprototype.scale = scale;\n\n// -- INITIALIZATION ----\nprototype.initialize = initialize;\n\n// -- HEADLESS RENDERING ----\nprototype.toImageURL = renderToImageURL;\nprototype.toCanvas = renderToCanvas;\nprototype.toSVG = renderToSVG;\n\n// -- SAVE / RESTORE STATE ----\nprototype.getState = getState;\nprototype.setState = setState;\n","import {Timer, now} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","/**\n * Finalize a View instance that is being removed.\n * Cancel any running timers.\n * Remove all external event listeners.\n * Remove any currently displayed tooltip.\n */\nexport default function() {\n var tooltip = this._tooltip,\n timers = this._timers,\n listeners = this._eventListeners,\n n, m, e;\n\n n = timers.length;\n while (--n >= 0) {\n timers[n].stop();\n }\n\n n = listeners.length;\n while (--n >= 0) {\n e = listeners[n];\n m = e.sources.length;\n while (--m >= 0) {\n e.sources[m].removeEventListener(e.type, e.handler);\n }\n }\n\n if (tooltip) {\n tooltip.call(this, this._handler, null, null, null);\n }\n\n return this;\n}\n","import {error} from 'vega-util';\n\nexport function scale(name) {\n var scales = this._runtime.scales;\n if (!scales.hasOwnProperty(name)) {\n error('Unrecognized scale or projection: ' + name);\n }\n return scales[name].value;\n}\n","import {offset} from './render-size';\nimport trap from './trap';\n\nexport default function(view, prevHandler, el, constructor) {\n // instantiate scenegraph handler\n var handler = new constructor(view.loader(), trap(view, view.tooltip()))\n .scene(view.scenegraph().root)\n .initialize(el, offset(view), view);\n\n // transfer event handlers\n if (prevHandler) {\n prevHandler.handlers().forEach(function(h) {\n handler.on(h.type, h.handler);\n });\n }\n\n return handler;\n}\n","import renderHeadless from './render-headless';\nimport {RenderType as Type} from 'vega-scenegraph';\nimport {error} from 'vega-util';\n\n/**\n * Produce an image URL for the visualization. Depending on the type\n * parameter, the generated URL contains data for either a PNG or SVG image.\n * The URL can be used (for example) to download images of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @param {string} type - The image type. One of 'svg', 'png' or 'canvas'.\n * The 'canvas' and 'png' types are synonyms for a PNG image.\n * @return {Promise} - A promise that resolves to an image URL.\n */\nexport default async function(type, scaleFactor) {\n if (type !== Type.Canvas && type !== Type.SVG && type !== Type.PNG) {\n error('Unrecognized image type: ' + type);\n }\n\n const r = await renderHeadless(this, type, scaleFactor);\n return type === Type.SVG\n ? toBlobURL(r.svg(), 'image/svg+xml')\n : r.canvas().toDataURL('image/png');\n}\n\nfunction toBlobURL(data, mime) {\n var blob = new Blob([data], {type: mime});\n return window.URL.createObjectURL(blob);\n}\n","import renderHeadless from './render-headless';\nimport {RenderType} from 'vega-scenegraph';\n\n/**\n * Produce a rendered SVG string of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to an SVG string.\n */\nexport default async function(scaleFactor) {\n const r = await renderHeadless(this, RenderType.SVG, scaleFactor);\n return r.svg();\n}\n","import {isObject} from 'vega-util';\n\nexport default function(spec, config) {\n spec = spec || config.autosize;\n return isObject(spec)\n ? spec\n : {type: spec || 'pad'};\n}\n","import {isObject} from 'vega-util';\n\nexport default function(spec, config) {\n spec = spec || config.padding;\n return isObject(spec)\n ? {\n top: number(spec.top),\n bottom: number(spec.bottom),\n left: number(spec.left),\n right: number(spec.right)\n }\n : paddingObject(number(spec));\n}\n\nfunction number(_) {\n return +_ || 0;\n}\n\nfunction paddingObject(_) {\n return {top: _, bottom: _, left: _, right: _};\n}\n","import {error, stringValue} from 'vega-util';\n\nvar OUTER = 'outer',\n OUTER_INVALID = ['value', 'update', 'init', 'react', 'bind'];\n\nfunction outerError(prefix, name) {\n error(prefix + ' for \"outer\" push: ' + stringValue(name));\n}\n\nexport default function(signal, scope) {\n var name = signal.name;\n\n if (signal.push === OUTER) {\n // signal must already be defined, raise error if not\n if (!scope.signals[name]) outerError('No prior signal definition', name);\n // signal push must not use properties reserved for standard definition\n OUTER_INVALID.forEach(function(prop) {\n if (signal[prop] !== undefined) outerError('Invalid property ', prop);\n });\n } else {\n // define a new signal in the current scope\n var op = scope.addSignal(name, signal.value);\n if (signal.react === false) op.react = false;\n if (signal.bind) scope.addBinding(name, signal.bind);\n }\n}\n","import {CallExpression, parse} from 'vega-expression';\nimport {codeGenerator, codegenParams, SignalPrefix} from 'vega-functions';\nimport {error, isString, stringValue} from 'vega-util';\n\nexport default function(expr, scope, preamble) {\n var params = {}, ast, gen;\n\n // parse the expression to an abstract syntax tree (ast)\n try {\n expr = isString(expr) ? expr : (stringValue(expr) + '');\n ast = parse(expr);\n } catch (err) {\n error('Expression parse error: ' + expr);\n }\n\n // analyze ast function calls for dependencies\n ast.visit(function visitor(node) {\n if (node.type !== CallExpression) return;\n var name = node.callee.name,\n visit = codegenParams.visitors[name];\n if (visit) visit(name, node.arguments, scope, params);\n });\n\n // perform code generation\n gen = codeGenerator(ast);\n\n // collect signal dependencies\n gen.globals.forEach(function(name) {\n var signalName = SignalPrefix + name;\n if (!params.hasOwnProperty(signalName) && scope.getSignal(name)) {\n params[signalName] = scope.signalRef(name);\n }\n });\n\n // return generated expression code and dependencies\n return {\n $expr: preamble ? preamble + 'return(' + gen.code + ');' : gen.code,\n $fields: gen.fields,\n $params: params\n };\n}\n","import {isObject} from 'vega-util';\n\nexport function Entry(type, value, params, parent) {\n this.id = -1;\n this.type = type;\n this.value = value;\n this.params = params;\n if (parent) this.parent = parent;\n}\n\nexport function entry(type, value, params, parent) {\n return new Entry(type, value, params, parent);\n}\n\nexport function operator(value, params) {\n return entry('operator', value, params);\n}\n\n// -----\n\nexport function ref(op) {\n var ref = {$ref: op.id};\n // if operator not yet registered, cache ref to resolve later\n if (op.id < 0) (op.refs = op.refs || []).push(ref);\n return ref;\n}\n\nexport var tupleidRef = {\n $tupleid: 1,\n toString: function() { return ':_tupleid_:'; }\n};\n\nexport function fieldRef(field, name) {\n return name ? {$field: field, $name: name} : {$field: field};\n}\n\nexport var keyFieldRef = fieldRef('key');\n\nexport function compareRef(fields, orders) {\n return {$compare: fields, $order: orders};\n}\n\nexport function keyRef(fields, flat) {\n var ref = {$key: fields};\n if (flat) ref.$flat = true;\n return ref;\n}\n\n// -----\n\nexport var Ascending = 'ascending';\n\nexport var Descending = 'descending';\n\nexport function sortKey(sort) {\n return !isObject(sort) ? ''\n : (sort.order === Descending ? '-' : '+')\n + aggrField(sort.op, sort.field);\n}\n\nexport function aggrField(op, field) {\n return (op && op.signal ? '$' + op.signal : op || '')\n + (op && field ? '_' : '')\n + (field && field.signal ? '$' + field.signal : field || '');\n}\n\n// -----\n\nexport var Scope = 'scope';\n\nexport var View = 'view';\n\nexport function isSignal(_) {\n return _ && _.signal;\n}\n\nexport function isExpr(_) {\n return _ && _.expr;\n}\n\nexport function hasSignal(_) {\n if (isSignal(_)) return true;\n if (isObject(_)) for (var key in _) {\n if (hasSignal(_[key])) return true;\n }\n return false;\n}\n\nexport function value(specValue, defaultValue) {\n return specValue != null ? specValue : defaultValue;\n}\n\nexport function deref(v) {\n return v && v.signal || v;\n}\n","import parseExpression from './expression';\nimport {View, Scope} from '../util';\nimport {error, stringValue} from 'vega-util';\n\nvar Timer = 'timer';\n\nexport default function parseStream(stream, scope) {\n var method = stream.merge ? mergeStream\n : stream.stream ? nestedStream\n : stream.type ? eventStream\n : error('Invalid stream specification: ' + stringValue(stream));\n\n return method(stream, scope);\n}\n\nfunction eventSource(source) {\n return source === Scope ? View : (source || View);\n}\n\nfunction mergeStream(stream, scope) {\n var list = stream.merge.map(s => parseStream(s, scope)),\n entry = streamParameters({merge: list}, stream, scope);\n return scope.addStream(entry).id;\n}\n\nfunction nestedStream(stream, scope) {\n var id = parseStream(stream.stream, scope),\n entry = streamParameters({stream: id}, stream, scope);\n return scope.addStream(entry).id;\n}\n\nfunction eventStream(stream, scope) {\n var id, entry;\n\n if (stream.type === Timer) {\n id = scope.event(Timer, stream.throttle);\n stream = {between: stream.between, filter: stream.filter};\n } else {\n id = scope.event(eventSource(stream.source), stream.type);\n }\n\n entry = streamParameters({stream: id}, stream, scope);\n return Object.keys(entry).length === 1\n ? id\n : scope.addStream(entry).id;\n}\n\nfunction streamParameters(entry, stream, scope) {\n var param = stream.between;\n\n if (param) {\n if (param.length !== 2) {\n error('Stream \"between\" parameter must have 2 entries: ' + stringValue(stream));\n }\n entry.between = [\n parseStream(param[0], scope),\n parseStream(param[1], scope)\n ];\n }\n\n param = stream.filter ? [].concat(stream.filter) : [];\n if (stream.marktype || stream.markname || stream.markrole) {\n // add filter for mark type, name and/or role\n param.push(filterMark(stream.marktype, stream.markname, stream.markrole));\n }\n if (stream.source === Scope) {\n // add filter to limit events from sub-scope only\n param.push('inScope(event.item)');\n }\n if (param.length) {\n entry.filter = parseExpression('(' + param.join(')&&(') + ')').$expr;\n }\n\n if ((param = stream.throttle) != null) {\n entry.throttle = +param;\n }\n\n if ((param = stream.debounce) != null) {\n entry.debounce = +param;\n }\n\n if (stream.consume) {\n entry.consume = true;\n }\n\n return entry;\n}\n\nfunction filterMark(type, name, role) {\n var item = 'event.item';\n return item\n + (type && type !== '*' ? '&&' + item + '.mark.marktype===\\'' + type + '\\'' : '')\n + (role ? '&&' + item + '.mark.role===\\'' + role + '\\'' : '')\n + (name ? '&&' + item + '.mark.name===\\'' + name + '\\'' : '');\n}\n","/**\n * Parse an event selector string.\n * Returns an array of event stream definitions.\n */\nexport default function(selector, source, marks) {\n DEFAULT_SOURCE = source || VIEW;\n MARKS = marks || DEFAULT_MARKS;\n return parseMerge(selector.trim()).map(parseSelector);\n}\n\nvar VIEW = 'view',\n LBRACK = '[',\n RBRACK = ']',\n LBRACE = '{',\n RBRACE = '}',\n COLON = ':',\n COMMA = ',',\n NAME = '@',\n GT = '>',\n ILLEGAL = /[[\\]{}]/,\n DEFAULT_SOURCE,\n MARKS,\n DEFAULT_MARKS = {\n '*': 1,\n arc: 1,\n area: 1,\n group: 1,\n image: 1,\n line: 1,\n path: 1,\n rect: 1,\n rule: 1,\n shape: 1,\n symbol: 1,\n text: 1,\n trail: 1\n };\n\nfunction isMarkType(type) {\n return MARKS.hasOwnProperty(type);\n}\n\nfunction find(s, i, endChar, pushChar, popChar) {\n var count = 0,\n n = s.length,\n c;\n for (; i<n; ++i) {\n c = s[i];\n if (!count && c === endChar) return i;\n else if (popChar && popChar.indexOf(c) >= 0) --count;\n else if (pushChar && pushChar.indexOf(c) >= 0) ++count;\n }\n return i;\n}\n\nfunction parseMerge(s) {\n var output = [],\n start = 0,\n n = s.length,\n i = 0;\n\n while (i < n) {\n i = find(s, i, COMMA, LBRACK + LBRACE, RBRACK + RBRACE);\n output.push(s.substring(start, i).trim());\n start = ++i;\n }\n\n if (output.length === 0) {\n throw 'Empty event selector: ' + s;\n }\n return output;\n}\n\nfunction parseSelector(s) {\n return s[0] === '['\n ? parseBetween(s)\n : parseStream(s);\n}\n\nfunction parseBetween(s) {\n var n = s.length,\n i = 1,\n b, stream;\n\n i = find(s, i, RBRACK, LBRACK, RBRACK);\n if (i === n) {\n throw 'Empty between selector: ' + s;\n }\n\n b = parseMerge(s.substring(1, i));\n if (b.length !== 2) {\n throw 'Between selector must have two elements: ' + s;\n }\n\n s = s.slice(i + 1).trim();\n if (s[0] !== GT) {\n throw 'Expected \\'>\\' after between selector: ' + s;\n }\n\n b = b.map(parseSelector);\n\n stream = parseSelector(s.slice(1).trim());\n if (stream.between) {\n return {\n between: b,\n stream: stream\n };\n } else {\n stream.between = b;\n }\n\n return stream;\n}\n\nfunction parseStream(s) {\n var stream = {source: DEFAULT_SOURCE},\n source = [],\n throttle = [0, 0],\n markname = 0,\n start = 0,\n n = s.length,\n i = 0, j,\n filter;\n\n // extract throttle from end\n if (s[n-1] === RBRACE) {\n i = s.lastIndexOf(LBRACE);\n if (i >= 0) {\n try {\n throttle = parseThrottle(s.substring(i+1, n-1));\n } catch (e) {\n throw 'Invalid throttle specification: ' + s;\n }\n s = s.slice(0, i).trim();\n n = s.length;\n } else throw 'Unmatched right brace: ' + s;\n i = 0;\n }\n\n if (!n) throw s;\n\n // set name flag based on first char\n if (s[0] === NAME) markname = ++i;\n\n // extract first part of multi-part stream selector\n j = find(s, i, COLON);\n if (j < n) {\n source.push(s.substring(start, j).trim());\n start = i = ++j;\n }\n\n // extract remaining part of stream selector\n i = find(s, i, LBRACK);\n if (i === n) {\n source.push(s.substring(start, n).trim());\n } else {\n source.push(s.substring(start, i).trim());\n filter = [];\n start = ++i;\n if (start === n) throw 'Unmatched left bracket: ' + s;\n }\n\n // extract filters\n while (i < n) {\n i = find(s, i, RBRACK);\n if (i === n) throw 'Unmatched left bracket: ' + s;\n filter.push(s.substring(start, i).trim());\n if (i < n-1 && s[++i] !== LBRACK) throw 'Expected left bracket: ' + s;\n start = ++i;\n }\n\n // marshall event stream specification\n if (!(n = source.length) || ILLEGAL.test(source[n-1])) {\n throw 'Invalid event selector: ' + s;\n }\n\n if (n > 1) {\n stream.type = source[1];\n if (markname) {\n stream.markname = source[0].slice(1);\n } else if (isMarkType(source[0])) {\n stream.marktype = source[0];\n } else {\n stream.source = source[0];\n }\n } else {\n stream.type = source[0];\n }\n if (stream.type.slice(-1) === '!') {\n stream.consume = true;\n stream.type = stream.type.slice(0, -1)\n }\n if (filter != null) stream.filter = filter;\n if (throttle[0]) stream.throttle = throttle[0];\n if (throttle[1]) stream.debounce = throttle[1];\n\n return stream;\n}\n\nfunction parseThrottle(s) {\n var a = s.split(COMMA);\n if (!s.length || a.length > 2) throw s;\n return a.map(function(_) {\n var x = +_;\n if (x !== x) throw s;\n return x;\n });\n}\n","import parseExpression from './expression';\nimport parseStream from './stream';\nimport {Scope, View} from '../util';\nimport {selector} from 'vega-event-selector';\nimport {array, error, extend, isString, stringValue} from 'vega-util';\n\nvar preamble = 'var datum=event.item&&event.item.datum;';\n\nexport default function(spec, scope, target) {\n var events = spec.events,\n update = spec.update,\n encode = spec.encode,\n sources = [],\n entry = {target: target};\n\n if (!events) {\n error('Signal update missing events specification.');\n }\n\n // interpret as an event selector string\n if (isString(events)) {\n events = selector(events, scope.isSubscope() ? Scope : View);\n }\n\n // separate event streams from signal updates\n events = array(events)\n .filter(s => s.signal || s.scale ? (sources.push(s), 0) : 1);\n\n // merge internal operator listeners\n if (sources.length > 1) {\n sources = [mergeSources(sources)];\n }\n\n // merge event streams, include as source\n if (events.length) {\n sources.push(events.length > 1 ? {merge: events} : events[0]);\n }\n\n if (encode != null) {\n if (update) error('Signal encode and update are mutually exclusive.');\n update = 'encode(item(),' + stringValue(encode) + ')';\n }\n\n // resolve update value\n entry.update = isString(update) ? parseExpression(update, scope, preamble)\n : update.expr != null ? parseExpression(update.expr, scope, preamble)\n : update.value != null ? update.value\n : update.signal != null ? {\n $expr: '_.value',\n $params: {value: scope.signalRef(update.signal)}\n }\n : error('Invalid signal update specification.');\n\n if (spec.force) {\n entry.options = {force: true};\n }\n\n sources.forEach(function(source) {\n scope.addUpdate(extend(streamSource(source, scope), entry));\n });\n}\n\nfunction streamSource(stream, scope) {\n return {\n source: stream.signal ? scope.signalRef(stream.signal)\n : stream.scale ? scope.scaleRef(stream.scale)\n : parseStream(stream, scope)\n };\n}\n\nfunction mergeSources(sources) {\n return {\n signal: '['\n + sources.map(s => s.scale ? 'scale(\"' + s.scale + '\")' : s.signal)\n + ']'\n };\n}\n","import {entry} from './util';\n\nfunction transform(name) {\n return function(params, value, parent) {\n return entry(name, value, params || undefined, parent);\n };\n}\n\nexport var Aggregate = transform('aggregate');\nexport var AxisTicks = transform('axisticks');\nexport var Bound = transform('bound');\nexport var Collect = transform('collect');\nexport var Compare = transform('compare');\nexport var DataJoin = transform('datajoin');\nexport var Encode = transform('encode');\nexport var Expression = transform('expression');\nexport var Extent = transform('extent');\nexport var Facet = transform('facet');\nexport var Field = transform('field');\nexport var Key = transform('key');\nexport var LegendEntries = transform('legendentries');\nexport var Load = transform('load');\nexport var Mark = transform('mark');\nexport var MultiExtent = transform('multiextent');\nexport var MultiValues = transform('multivalues');\nexport var Overlap = transform('overlap');\nexport var Params = transform('params');\nexport var PreFacet = transform('prefacet');\nexport var Projection = transform('projection');\nexport var Proxy = transform('proxy');\nexport var Relay = transform('relay');\nexport var Render = transform('render');\nexport var Scale = transform('scale');\nexport var Sieve = transform('sieve');\nexport var SortItems = transform('sortitems');\nexport var ViewLayout = transform('viewlayout');\nexport var Values = transform('values');\n","import {ref, keyFieldRef} from '../util';\nimport {Collect, Aggregate, MultiExtent, MultiValues, Sieve, Values} from '../transforms';\n\nimport {isValidScaleType, isDiscrete, isQuantile} from 'vega-scale';\nimport {error, extend, isArray, isObject, isString, stringValue} from 'vega-util';\n\nvar FIELD_REF_ID = 0;\n\nexport function initScale(spec, scope) {\n var type = spec.type || 'linear';\n\n if (!isValidScaleType(type)) {\n error('Unrecognized scale type: ' + stringValue(type));\n }\n\n scope.addScale(spec.name, {\n type: type,\n domain: undefined\n });\n}\n\nexport function parseScale(spec, scope) {\n var params = scope.getScale(spec.name).params,\n key;\n\n params.domain = parseScaleDomain(spec.domain, spec, scope);\n\n if (spec.range != null) {\n params.range = parseScaleRange(spec, scope, params);\n }\n\n if (spec.interpolate != null) {\n parseScaleInterpolate(spec.interpolate, params);\n }\n\n if (spec.nice != null) {\n params.nice = parseScaleNice(spec.nice);\n }\n\n if (spec.bins != null) {\n params.bins = parseScaleBins(spec.bins, scope);\n }\n\n for (key in spec) {\n if (params.hasOwnProperty(key) || key === 'name') continue;\n params[key] = parseLiteral(spec[key], scope);\n }\n}\n\nfunction parseLiteral(v, scope) {\n return !isObject(v) ? v\n : v.signal ? scope.signalRef(v.signal)\n : error('Unsupported object: ' + stringValue(v));\n}\n\nfunction parseArray(v, scope) {\n return v.signal\n ? scope.signalRef(v.signal)\n : v.map(v => parseLiteral(v, scope));\n}\n\nfunction dataLookupError(name) {\n error('Can not find data set: ' + stringValue(name));\n}\n\n// -- SCALE DOMAIN ----\n\nfunction parseScaleDomain(domain, spec, scope) {\n if (!domain) {\n if (spec.domainMin != null || spec.domainMax != null) {\n error('No scale domain defined for domainMin/domainMax to override.');\n }\n return; // default domain\n }\n\n return domain.signal ? scope.signalRef(domain.signal)\n : (isArray(domain) ? explicitDomain\n : domain.fields ? multipleDomain\n : singularDomain)(domain, spec, scope);\n}\n\nfunction explicitDomain(domain, spec, scope) {\n return domain.map(function(v) {\n return parseLiteral(v, scope);\n });\n}\n\nfunction singularDomain(domain, spec, scope) {\n var data = scope.getData(domain.data);\n if (!data) dataLookupError(domain.data);\n\n return isDiscrete(spec.type)\n ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false))\n : isQuantile(spec.type) ? data.domainRef(scope, domain.field)\n : data.extentRef(scope, domain.field);\n}\n\nfunction multipleDomain(domain, spec, scope) {\n var data = domain.data,\n fields = domain.fields.reduce(function(dom, d) {\n d = isString(d) ? {data: data, field: d}\n : (isArray(d) || d.signal) ? fieldRef(d, scope)\n : d;\n dom.push(d);\n return dom;\n }, []);\n\n return (isDiscrete(spec.type) ? ordinalMultipleDomain\n : isQuantile(spec.type) ? quantileMultipleDomain\n : numericMultipleDomain)(domain, scope, fields);\n}\n\nfunction fieldRef(data, scope) {\n var name = '_:vega:_' + (FIELD_REF_ID++),\n coll = Collect({});\n\n if (isArray(data)) {\n coll.value = {$ingest: data};\n } else if (data.signal) {\n var code = 'setdata(' + stringValue(name) + ',' + data.signal + ')';\n coll.params.input = scope.signalRef(code);\n }\n scope.addDataPipeline(name, [coll, Sieve({})]);\n return {data: name, field: 'data'};\n}\n\nfunction ordinalMultipleDomain(domain, scope, fields) {\n var counts, a, c, v;\n\n // get value counts for each domain field\n counts = fields.map(function(f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.countsRef(scope, f.field);\n });\n\n // sum counts from all fields\n a = scope.add(Aggregate({\n groupby: keyFieldRef,\n ops:['sum'], fields: [scope.fieldRef('count')], as:['count'],\n pulse: counts\n }));\n\n // collect aggregate output\n c = scope.add(Collect({pulse: ref(a)}));\n\n // extract values for combined domain\n v = scope.add(Values({\n field: keyFieldRef,\n sort: scope.sortRef(parseSort(domain.sort, true)),\n pulse: ref(c)\n }));\n\n return ref(v);\n}\n\nfunction parseSort(sort, multidomain) {\n if (sort) {\n if (!sort.field && !sort.op) {\n if (isObject(sort)) sort.field = 'key';\n else sort = {field: 'key'};\n } else if (!sort.field && sort.op !== 'count') {\n error('No field provided for sort aggregate op: ' + sort.op);\n } else if (multidomain && sort.field) {\n error('Multiple domain scales can not sort by field.');\n } else if (multidomain && sort.op && sort.op !== 'count') {\n error('Multiple domain scales support op count only.');\n }\n }\n return sort;\n}\n\nfunction quantileMultipleDomain(domain, scope, fields) {\n // get value arrays for each domain field\n var values = fields.map(function(f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.domainRef(scope, f.field);\n });\n\n // combine value arrays\n return ref(scope.add(MultiValues({values: values})));\n}\n\nfunction numericMultipleDomain(domain, scope, fields) {\n // get extents for each domain field\n var extents = fields.map(function(f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.extentRef(scope, f.field);\n });\n\n // combine extents\n return ref(scope.add(MultiExtent({extents: extents})));\n}\n\n// -- SCALE BINS -----\n\nfunction parseScaleBins(v, scope) {\n return v.signal || isArray(v)\n ? parseArray(v, scope)\n : scope.objectProperty(v);\n}\n\n// -- SCALE NICE -----\n\nfunction parseScaleNice(nice) {\n return isObject(nice)\n ? {\n interval: parseLiteral(nice.interval),\n step: parseLiteral(nice.step)\n }\n : parseLiteral(nice);\n}\n\n// -- SCALE INTERPOLATION -----\n\nfunction parseScaleInterpolate(interpolate, params) {\n params.interpolate = parseLiteral(interpolate.type || interpolate);\n if (interpolate.gamma != null) {\n params.interpolateGamma = parseLiteral(interpolate.gamma);\n }\n}\n\n// -- SCALE RANGE -----\n\nfunction parseScaleRange(spec, scope, params) {\n var range = spec.range,\n config = scope.config.range;\n\n if (range.signal) {\n return scope.signalRef(range.signal);\n } else if (isString(range)) {\n if (config && config.hasOwnProperty(range)) {\n spec = extend({}, spec, {range: config[range]});\n return parseScaleRange(spec, scope, params);\n } else if (range === 'width') {\n range = [0, {signal: 'width'}]\n } else if (range === 'height') {\n range = isDiscrete(spec.type)\n ? [0, {signal: 'height'}]\n : [{signal: 'height'}, 0]\n } else {\n error('Unrecognized scale range value: ' + stringValue(range));\n }\n } else if (range.scheme) {\n params.scheme = isArray(range.scheme)\n ? parseArray(range.scheme, scope)\n : parseLiteral(range.scheme, scope);\n if (range.extent) params.schemeExtent = parseArray(range.extent, scope);\n if (range.count) params.schemeCount = parseLiteral(range.count, scope);\n return;\n } else if (range.step) {\n params.rangeStep = parseLiteral(range.step, scope);\n return;\n } else if (isDiscrete(spec.type) && !isArray(range)) {\n return parseScaleDomain(range, spec, scope);\n } else if (!isArray(range)) {\n error('Unsupported range type: ' + stringValue(range));\n }\n\n return range.map(v => (isArray(v) ? parseArray : parseLiteral)(v, scope));\n}\n","import {error, isArray, isObject, stringValue} from 'vega-util';\n\nexport default function(proj, scope) {\n var params = {};\n\n for (var name in proj) {\n if (name === 'name') continue;\n params[name] = parseParameter(proj[name], name, scope);\n }\n\n scope.addProjection(proj.name, params);\n}\n\nfunction parseParameter(_, name, scope) {\n return isArray(_) ? _.map(function(_) { return parseParameter(_, name, scope); })\n : !isObject(_) ? _\n : _.signal ? scope.signalRef(_.signal)\n : name === 'fit' ? _\n : error('Unsupported parameter object: ' + stringValue(_));\n}\n","export const Top = 'top';\nexport const Left = 'left';\nexport const Right = 'right';\nexport const Bottom = 'bottom';\nexport const Center = 'center';\n\nexport const Vertical = 'vertical';\n\nexport const Start = 'start';\nexport const Middle = 'middle';\nexport const End = 'end';\n\nexport const Index = 'index';\nexport const Label = 'label';\nexport const Offset = 'offset';\nexport const Perc = 'perc';\nexport const Perc2 = 'perc2';\nexport const Size = 'size';\nexport const Value = 'value';\n\nexport const GuideLabelStyle = 'guide-label';\nexport const GuideTitleStyle = 'guide-title';\nexport const GroupTitleStyle = 'group-title';\n\nexport const Symbols = 'symbol';\nexport const Gradient = 'gradient';\nexport const Discrete = 'discrete';\n\n// Encoding channels supported by legends\n// In priority order of 'canonical' scale\nexport const LegendScales = [\n 'size',\n 'shape',\n 'fill',\n 'stroke',\n 'strokeWidth',\n 'strokeDash',\n 'opacity'\n];\n\nexport const Skip = {\n name: 1,\n interactive: 1\n};\n\nexport const zero = {value: 0};\nexport const one = {value: 1};\n","import {toSet} from 'vega-util';\n\nvar Skip = toSet(['rule']),\n Swap = toSet(['group', 'image', 'rect']);\n\nexport default function(encode, marktype) {\n var code = '';\n\n if (Skip[marktype]) return code;\n\n if (encode.x2) {\n if (encode.x) {\n if (Swap[marktype]) {\n code += 'if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;';\n }\n code += 'o.width=o.x2-o.x;';\n } else {\n code += 'o.x=o.x2-(o.width||0);';\n }\n }\n\n if (encode.xc) {\n code += 'o.x=o.xc-(o.width||0)/2;';\n }\n\n if (encode.y2) {\n if (encode.y) {\n if (Swap[marktype]) {\n code += 'if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;';\n }\n code += 'o.height=o.y2-o.y;';\n } else {\n code += 'o.y=o.y2-(o.height||0);';\n }\n }\n\n if (encode.yc) {\n code += 'o.y=o.yc-(o.height||0)/2;';\n }\n\n return code;\n}\n","import expression from '../expression';\nimport {extend} from 'vega-util';\n\nexport default function(code, scope, params, fields) {\n var expr = expression(code, scope);\n expr.$fields.forEach(function(name) { fields[name] = 1; });\n extend(params, expr.$params);\n return expr.$expr;\n}\n","import expression from './expression';\nimport {error, isString, isObject, splitAccessPath, stringValue} from 'vega-util';\n\nexport default function(ref, scope, params, fields) {\n return resolve(isObject(ref) ? ref : {datum: ref}, scope, params, fields);\n}\n\nfunction resolve(ref, scope, params, fields) {\n var object, level, field;\n\n if (ref.signal) {\n object = 'datum';\n field = expression(ref.signal, scope, params, fields);\n } else if (ref.group || ref.parent) {\n level = Math.max(1, ref.level || 1);\n object = 'item';\n\n while (level-- > 0) {\n object += '.mark.group';\n }\n\n if (ref.parent) {\n field = ref.parent;\n object += '.datum';\n } else {\n field = ref.group;\n }\n } else if (ref.datum) {\n object = 'datum';\n field = ref.datum;\n } else {\n error('Invalid field reference: ' + stringValue(ref));\n }\n\n if (!ref.signal) {\n if (isString(field)) {\n fields[field] = 1; // TODO review field tracking?\n field = splitAccessPath(field).map(stringValue).join('][');\n } else {\n field = resolve(field, scope, params, fields);\n }\n }\n\n return object + '[' + field + ']';\n}\n","import expression from './expression';\nimport field from './field';\nimport {ScalePrefix} from 'vega-functions';\nimport {isString, stringValue} from 'vega-util';\n\nexport default function(enc, value, scope, params, fields) {\n var scale = getScale(enc.scale, scope, params, fields),\n interp, func, flag;\n\n if (enc.range != null) {\n // pull value from scale range\n interp = +enc.range;\n func = scale + '.range()';\n value = (interp === 0) ? (func + '[0]')\n : '($=' + func + ',' + ((interp === 1) ? '$[$.length-1]'\n : '$[0]+' + interp + '*($[$.length-1]-$[0])') + ')';\n } else {\n // run value through scale and/or pull scale bandwidth\n if (value !== undefined) value = scale + '(' + value + ')';\n\n if (enc.band && (flag = hasBandwidth(enc.scale, scope))) {\n func = scale + '.bandwidth';\n interp = +enc.band;\n interp = func + '()' + (interp===1 ? '' : '*' + interp);\n\n // if we don't know the scale type, check for bandwidth\n if (flag < 0) interp = '(' + func + '?' + interp + ':0)';\n\n value = (value ? value + '+' : '') + interp;\n\n if (enc.extra) {\n // include logic to handle extraneous elements\n value = '(datum.extra?' + scale + '(datum.extra.value):' + value + ')';\n }\n }\n\n if (value == null) value = '0';\n }\n\n return value;\n}\n\nfunction hasBandwidth(name, scope) {\n if (!isString(name)) return -1;\n var type = scope.scaleType(name);\n return type === 'band' || type === 'point' ? 1 : 0;\n}\n\nexport function getScale(name, scope, params, fields) {\n var scaleName;\n\n if (isString(name)) {\n // direct scale lookup; add scale as parameter\n scaleName = ScalePrefix + name;\n if (!params.hasOwnProperty(scaleName)) {\n params[scaleName] = scope.scaleRef(name);\n }\n scaleName = stringValue(scaleName);\n } else {\n // indirect scale lookup; add all scales as parameters\n for (scaleName in scope.scales) {\n params[ScalePrefix + scaleName] = scope.scaleRef(scaleName);\n }\n scaleName = stringValue(ScalePrefix) + '+'\n + (name.signal\n ? '(' + expression(name.signal, scope, params, fields) + ')'\n : field(name, scope, params, fields));\n }\n\n return '_[' + scaleName + ']';\n}\n","import {getScale} from './scale';\nimport {stringValue} from 'vega-util';\n\nexport default function(enc, scope, params, fields) {\n return 'this.gradient('\n + getScale(enc.gradient, scope, params, fields)\n + ',' + stringValue(enc.start)\n + ',' + stringValue(enc.stop)\n + ',' + stringValue(enc.count)\n + ')';\n}\n","import entry from './entry';\nimport {isObject} from 'vega-util';\n\nexport default function(property, scope, params, fields) {\n return isObject(property)\n ? '(' + entry(null, property, scope, params, fields) + ')'\n : property;\n}\n","import color from './color';\nimport field from './field';\nimport scale from './scale';\nimport gradient from './gradient';\nimport property from './property';\nimport expression from './expression';\nimport {stringValue} from 'vega-util';\n\nexport default function(channel, enc, scope, params, fields) {\n if (enc.gradient != null) {\n return gradient(enc, scope, params, fields);\n }\n\n var value = enc.signal ? expression(enc.signal, scope, params, fields)\n : enc.color ? color(enc.color, scope, params, fields)\n : enc.field != null ? field(enc.field, scope, params, fields)\n : enc.value !== undefined ? stringValue(enc.value)\n : undefined;\n\n if (enc.scale != null) {\n value = scale(enc, value, scope, params, fields);\n }\n\n if (value === undefined) {\n value = null;\n }\n\n if (enc.exponent != null) {\n value = 'Math.pow(' + value + ','\n + property(enc.exponent, scope, params, fields) + ')';\n }\n\n if (enc.mult != null) {\n value += '*' + property(enc.mult, scope, params, fields);\n }\n\n if (enc.offset != null) {\n value += '+' + property(enc.offset, scope, params, fields);\n }\n\n if (enc.round) {\n value = 'Math.round(' + value + ')';\n }\n\n return value;\n}\n","import entry from './entry';\n\nexport default function(enc, scope, params, fields) {\n function color(type, x, y, z) {\n var a = entry(null, x, scope, params, fields),\n b = entry(null, y, scope, params, fields),\n c = entry(null, z, scope, params, fields);\n return 'this.' + type + '(' + [a, b, c].join(',') + ').toString()';\n }\n\n return (enc.c) ? color('hcl', enc.h, enc.c, enc.l)\n : (enc.h || enc.s) ? color('hsl', enc.h, enc.s, enc.l)\n : (enc.l || enc.a) ? color('lab', enc.l, enc.a, enc.b)\n : (enc.r || enc.g || enc.b) ? color('rgb', enc.r, enc.g, enc.b)\n : null;\n}\n","import {stringValue} from 'vega-util';\n\nexport default function(obj, key, value) {\n const o = obj + '[' + stringValue(key) + ']';\n return `$=${value};if(${o}!==$)${o}=$,m=1;`;\n}\n","import entry from './entry';\nimport set from './set';\nimport expression from './expression';\nimport {peek} from 'vega-util';\n\nexport default function(channel, rules, scope, params, fields) {\n var code = '';\n\n rules.forEach(function(rule) {\n var value = entry(channel, rule, scope, params, fields);\n code += rule.test\n ? expression(rule.test, scope, params, fields) + '?' + value + ':'\n : value;\n });\n\n // if no else clause, terminate with null (vega/vega#1366)\n if (peek(code) === ':') {\n code += 'null';\n }\n\n return set('o', channel, code);\n}\n","import adjustSpatial from './encode/adjust-spatial';\nimport entry from './encode/entry';\nimport rule from './encode/rule';\nimport set from './encode/set';\nimport {isArray} from 'vega-util';\n\nexport default function parseEncode(encode, marktype, params, scope) {\n var fields = {},\n code = 'var o=item,datum=o.datum,m=0,$;',\n channel, enc, value;\n\n for (channel in encode) {\n enc = encode[channel];\n if (isArray(enc)) { // rule\n code += rule(channel, enc, scope, params, fields);\n } else {\n value = entry(channel, enc, scope, params, fields);\n code += set('o', channel, value);\n }\n }\n\n code += adjustSpatial(encode, marktype);\n code += 'return m;';\n\n return {\n $expr: code,\n $fields: Object.keys(fields),\n $output: Object.keys(encode)\n };\n}\n","export var MarkRole = 'mark';\nexport var FrameRole = 'frame';\nexport var ScopeRole = 'scope';\n\nexport var AxisRole = 'axis';\nexport var AxisDomainRole = 'axis-domain';\nexport var AxisGridRole = 'axis-grid';\nexport var AxisLabelRole = 'axis-label';\nexport var AxisTickRole = 'axis-tick';\nexport var AxisTitleRole = 'axis-title';\n\nexport var LegendRole = 'legend';\nexport var LegendBandRole = 'legend-band';\nexport var LegendEntryRole = 'legend-entry';\nexport var LegendGradientRole = 'legend-gradient';\nexport var LegendLabelRole = 'legend-label';\nexport var LegendSymbolRole = 'legend-symbol';\nexport var LegendTitleRole = 'legend-title';\n\nexport var TitleRole = 'title';\n","import parseEncode from '../encode';\nimport {FrameRole, MarkRole} from '../marks/roles';\nimport {array, extend, isArray, isObject} from 'vega-util';\n\nexport function encoder(_) {\n return isObject(_) ? extend({}, _) : {value: _};\n}\n\nexport function addEncode(object, name, value, set) {\n if (value != null) {\n if (isObject(value) && !isArray(value)) {\n object.update[name] = value;\n } else {\n object[set || 'enter'][name] = {value: value};\n }\n return 1;\n } else {\n return 0;\n }\n}\n\nexport function addEncoders(object, enter, update) {\n for (let name in enter) {\n addEncode(object, name, enter[name]);\n }\n for (let name in update) {\n addEncode(object, name, update[name], 'update');\n }\n}\n\nexport function extendEncode(encode, extra, skip) {\n for (var name in extra) {\n if (skip && skip.hasOwnProperty(name)) continue;\n encode[name] = extend(encode[name] || {}, extra[name]);\n }\n return encode;\n}\n\nexport function encoders(encode, type, role, style, scope, params) {\n var enc, key;\n params = params || {};\n params.encoders = {$encode: (enc = {})};\n\n encode = applyDefaults(encode, type, role, style, scope.config);\n\n for (key in encode) {\n enc[key] = parseEncode(encode[key], type, params, scope);\n }\n\n return params;\n}\n\nfunction applyDefaults(encode, type, role, style, config) {\n var enter = {}, key, skip, props;\n\n // ignore legend and axis\n if (role == 'legend' || String(role).indexOf('axis') === 0) {\n role = null;\n }\n\n // resolve mark config\n props = role === FrameRole ? config.group\n : (role === MarkRole) ? extend({}, config.mark, config[type])\n : null;\n\n for (key in props) {\n // do not apply defaults if relevant fields are defined\n skip = has(key, encode)\n || (key === 'fill' || key === 'stroke')\n && (has('fill', encode) || has('stroke', encode));\n\n if (!skip) enter[key] = defaultEncode(props[key]);\n }\n\n // resolve styles, apply with increasing precedence\n array(style).forEach(function(name) {\n var props = config.style && config.style[name];\n for (var key in props) {\n if (!has(key, encode)) {\n enter[key] = defaultEncode(props[key]);\n }\n }\n });\n\n encode = extend({}, encode); // defensive copy\n encode.enter = extend(enter, encode.enter);\n\n return encode;\n}\n\nfunction defaultEncode(value) {\n return value && value.signal\n ? {signal: value.signal}\n : {value: value};\n}\n\nexport function has(key, encode) {\n return encode && (\n (encode.enter && encode.enter[key]) ||\n (encode.update && encode.update[key])\n );\n}\n","import {Skip} from './constants';\nimport {extendEncode} from '../encode/encode-util';\n\nexport default function(type, role, style, key, dataRef, encode, extras) {\n return {\n type: type,\n name: extras ? extras.name : undefined,\n role: role,\n style: (extras && extras.style) || style,\n key: key,\n from: dataRef,\n interactive: !!(extras && extras.interactive),\n encode: extendEncode(encode, extras, Skip)\n };\n}\n","import {Left, Right, Center, Start, End, Vertical} from './constants';\nimport {value} from '../../util';\nimport {stringValue} from 'vega-util';\n\nexport function lookup(spec, config) {\n const _ = name => value(spec[name], config[name]);\n\n _.isVertical = s => Vertical === value(\n spec.direction,\n config.direction || (s ? config.symbolDirection : config.gradientDirection)\n );\n\n _.gradientLength = () => value(\n spec.gradientLength,\n config.gradientLength || config.gradientWidth\n );\n\n _.gradientThickness = () => value(\n spec.gradientThickness,\n config.gradientThickness || config.gradientHeight\n );\n\n _.entryColumns = () => value(\n spec.columns,\n value(config.columns, +_.isVertical(true))\n );\n\n return _;\n}\n\nexport function getEncoding(name, encode) {\n var v = encode && (\n (encode.update && encode.update[name]) ||\n (encode.enter && encode.enter[name])\n );\n return v && v.signal ? v : v ? v.value : null;\n}\n\nexport function getStyle(name, scope, style) {\n var s = scope.config.style[style];\n return s && s[name];\n}\n\nexport function anchorExpr(s, e, m) {\n return `item.anchor === \"${Start}\" ? ${s} : item.anchor === \"${End}\" ? ${e} : ${m}`;\n}\n\nexport const alignExpr = anchorExpr(\n stringValue(Left),\n stringValue(Right),\n stringValue(Center)\n);\n","export var GroupMark = 'group';\nexport var RectMark = 'rect';\nexport var RuleMark = 'rule';\nexport var SymbolMark = 'symbol';\nexport var TextMark = 'text';\n","import {zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {RectMark} from '../marks/marktypes';\nimport {LegendGradientRole} from '../marks/roles';\nimport {addEncoders, encoder} from '../encode/encode-util';\nimport {extend} from 'vega-util';\n\nexport default function(spec, scale, config, userEncode) {\n var _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = _.gradientThickness(),\n length = _.gradientLength(),\n encode, enter, start, stop, width, height;\n\n if (vertical) {\n start = [0, 1];\n stop = [0, 0];\n width = thickness;\n height = length;\n } else {\n start = [0, 0];\n stop = [1, 0];\n width = length;\n height = thickness;\n }\n\n encode = {\n enter: enter = {\n opacity: zero,\n x: zero,\n y: zero,\n width: encoder(width),\n height: encoder(height)\n },\n update: extend({}, enter, {\n opacity: one,\n fill: {gradient: scale, start: start, stop: stop}\n }),\n exit: {\n opacity: zero\n }\n };\n\n addEncoders(encode, {\n stroke: _('gradientStrokeColor'),\n strokeWidth: _('gradientStrokeWidth')\n }, { // update\n opacity: _('gradientOpacity')\n });\n\n return guideMark(RectMark, LegendGradientRole, null, undefined, undefined, encode, userEncode);\n}\n","import {Value, Perc, Perc2, zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {RectMark} from '../marks/marktypes';\nimport {LegendBandRole} from '../marks/roles';\nimport {addEncoders, encoder} from '../encode/encode-util';\nimport {extend} from 'vega-util';\n\nexport default function(spec, scale, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = _.gradientThickness(),\n length = _.gradientLength(),\n encode, enter, u, v, uu, vv, adjust = '';\n\n vertical\n ? (u = 'y', uu = 'y2', v = 'x', vv = 'width', adjust = '1-')\n : (u = 'x', uu = 'x2', v = 'y', vv = 'height');\n\n enter = {\n opacity: zero,\n fill: {scale: scale, field: Value}\n };\n enter[u] = {signal: adjust + 'datum.' + Perc, mult: length};\n enter[v] = zero;\n enter[uu] = {signal: adjust + 'datum.' + Perc2, mult: length};\n enter[vv] = encoder(thickness);\n\n encode = {\n enter: enter,\n update: extend({}, enter, {opacity: one}),\n exit: {opacity: zero}\n };\n\n addEncoders(encode, {\n stroke: _('gradientStrokeColor'),\n strokeWidth: _('gradientStrokeWidth')\n }, { // update\n opacity: _('gradientOpacity')\n });\n\n return guideMark(RectMark, LegendBandRole, null, Value, dataRef, encode, userEncode);\n}\n","import {\n Index, Label, Perc, Value, GuideLabelStyle, zero, one,\n Top, Bottom, Left, Right, Center, Middle\n} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {TextMark} from '../marks/marktypes';\nimport {LegendLabelRole} from '../marks/roles';\nimport {addEncoders, encoder} from '../encode/encode-util';\nimport {value} from '../../util';\n\nconst alignExpr = `datum.${Perc}<=0?\"${Left}\":datum.${Perc}>=1?\"${Right}\":\"${Center}\"`,\n baselineExpr = `datum.${Perc}<=0?\"${Bottom}\":datum.${Perc}>=1?\"${Top}\":\"${Middle}\"`;\n\nexport default function(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = encoder(_.gradientThickness()),\n length = _.gradientLength(),\n overlap = _('labelOverlap'),\n separation = _('labelSeparation'),\n encode, enter, update, u, v, adjust = '';\n\n encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: one,\n text: {field: Label}\n },\n exit: {\n opacity: zero\n }\n };\n\n addEncoders(encode, {\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontStyle: _('labelFontStyle'),\n fontWeight: _('labelFontWeight'),\n limit: value(spec.labelLimit, config.gradientLabelLimit)\n });\n\n if (vertical) {\n enter.align = {value: 'left'};\n enter.baseline = update.baseline = {signal: baselineExpr};\n u = 'y'; v = 'x'; adjust = '1-';\n } else {\n enter.align = update.align = {signal: alignExpr};\n enter.baseline = {value: 'top'};\n u = 'x'; v = 'y';\n }\n\n enter[u] = update[u] = {signal: adjust + 'datum.' + Perc, mult: length};\n\n enter[v] = update[v] = thickness;\n thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0;\n\n spec = guideMark(TextMark, LegendLabelRole, GuideLabelStyle, Value, dataRef, encode, userEncode);\n if (overlap) {\n spec.overlap = {\n separation: separation,\n method: overlap,\n order: 'datum.' + Index\n };\n }\n return spec;\n}\n","import {GroupMark} from '../marks/marktypes';\n\nexport default function(role, style, name, dataRef, interactive, encode, marks, layout) {\n return {\n type: GroupMark,\n name: name,\n role: role,\n style: style,\n from: dataRef,\n interactive: interactive || false,\n encode: encode,\n marks: marks,\n layout: layout\n };\n}\n","import {\n Index, Label, Offset, Size, Value, zero, one,\n Skip, GuideLabelStyle, LegendScales\n} from './constants';\nimport guideGroup from './guide-group';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {SymbolMark, TextMark} from '../marks/marktypes';\nimport {ScopeRole, LegendSymbolRole, LegendLabelRole} from '../marks/roles';\nimport {addEncoders, encoder, extendEncode} from '../encode/encode-util';\n\n// userEncode is top-level, includes entries, symbols, labels\nexport default function(spec, config, userEncode, dataRef, columns) {\n var _ = lookup(spec, config),\n entries = userEncode.entries,\n interactive = !!(entries && entries.interactive),\n name = entries ? entries.name : undefined,\n height = _('clipHeight'),\n symbolOffset = _('symbolOffset'),\n valueRef = {data: 'value'},\n encode = {},\n xSignal = `${columns} ? datum.${Offset} : datum.${Size}`,\n yEncode = height ? encoder(height) : {field: Size},\n index = `datum.${Index}`,\n ncols = `max(1, ${columns})`,\n enter, update, labelOffset, symbols, labels, nrows, sort;\n\n yEncode.mult = 0.5;\n\n // -- LEGEND SYMBOLS --\n encode = {\n enter: enter = {\n opacity: zero,\n x: {signal: xSignal, mult: 0.5, offset: symbolOffset},\n y: yEncode\n },\n update: update = {\n opacity: one,\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero\n }\n };\n\n if (!spec.fill) {\n addEncoders(encode, {\n fill: config.symbolBaseFillColor,\n stroke: config.symbolBaseStrokeColor\n });\n }\n\n addEncoders(encode, {\n fill: _('symbolFillColor'),\n shape: _('symbolType'),\n size: _('symbolSize'),\n stroke: _('symbolStrokeColor'),\n strokeDash: _('symbolDash'),\n strokeDashOffset: _('symbolDashOffset'),\n strokeWidth: _('symbolStrokeWidth')\n }, { // update\n opacity: _('symbolOpacity')\n });\n\n LegendScales.forEach(function(scale) {\n if (spec[scale]) {\n update[scale] = enter[scale] = {scale: spec[scale], field: Value};\n }\n });\n\n symbols = guideMark(\n SymbolMark, LegendSymbolRole, null,\n Value, valueRef, encode, userEncode.symbols\n );\n if (height) symbols.clip = true;\n\n // -- LEGEND LABELS --\n labelOffset = encoder(symbolOffset);\n labelOffset.offset = _('labelOffset');\n\n encode = {\n enter: enter = {\n opacity: zero,\n x: {signal: xSignal, offset: labelOffset},\n y: yEncode\n },\n update: update = {\n opacity: one,\n text: {field: Label},\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero\n }\n };\n\n addEncoders(encode, {\n align: _('labelAlign'),\n baseline: _('labelBaseline'),\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontStyle: _('labelFontStyle'),\n fontWeight: _('labelFontWeight'),\n limit: _('labelLimit')\n });\n\n labels = guideMark(\n TextMark, LegendLabelRole, GuideLabelStyle,\n Value, valueRef, encode, userEncode.labels\n );\n\n // -- LEGEND ENTRY GROUPS --\n encode = {\n enter: {\n noBound: {value: !height}, // ignore width/height in bounds calc\n width: zero,\n height: height ? encoder(height) : zero,\n opacity: zero\n },\n exit: {opacity: zero},\n update: update = {\n opacity: one,\n row: {signal: null},\n column: {signal: null}\n }\n };\n\n // annotate and sort groups to ensure correct ordering\n if (_.isVertical(true)) {\n nrows = `ceil(item.mark.items.length / ${ncols})`;\n update.row.signal = `${index}%${nrows}`;\n update.column.signal = `floor(${index} / ${nrows})`;\n sort = {field: ['row', index]};\n } else {\n update.row.signal = `floor(${index} / ${ncols})`;\n update.column.signal = `${index} % ${ncols}`;\n sort = {field: index};\n }\n // handle zero column case (implies infinite columns)\n update.column.signal = `${columns}?${update.column.signal}:${index}`;\n\n // facet legend entries into sub-groups\n dataRef = {facet: {data: dataRef, name: 'value', groupby: Index}};\n\n spec = guideGroup(\n ScopeRole, null, name, dataRef, interactive,\n extendEncode(encode, entries, Skip), [symbols, labels]\n );\n spec.sort = sort;\n return spec;\n}\n\nexport function legendSymbolLayout(spec, config) {\n const _ = lookup(spec, config);\n\n // layout parameters for legend entries\n return {\n align: _('gridAlign'),\n columns: _.entryColumns(),\n center: {\n row: true,\n column: false\n },\n padding: {\n row: _('rowPadding'),\n column: _('columnPadding')\n }\n };\n}\n","import {GuideTitleStyle, zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup, alignExpr, anchorExpr} from './guide-util';\nimport {TextMark} from '../marks/marktypes';\nimport {LegendTitleRole} from '../marks/roles';\nimport {addEncoders} from '../encode/encode-util';\n\n// expression logic for align, anchor, angle, and baseline calculation\nconst isL = 'item.orient === \"left\"',\n isR = 'item.orient === \"right\"',\n isLR = `(${isL} || ${isR})`,\n isVG = `datum.vgrad && ${isLR}`,\n baseline = anchorExpr('\"top\"', '\"bottom\"', '\"middle\"'),\n alignFlip = anchorExpr('\"right\"', '\"left\"', '\"center\"'),\n exprAlign = `datum.vgrad && ${isR} ? (${alignFlip}) : (${isLR} && !(datum.vgrad && ${isL})) ? \"left\" : ${alignExpr}`,\n exprAnchor = `item._anchor || (${isLR} ? \"middle\" : \"start\")`,\n exprAngle = `${isVG} ? (${isL} ? -90 : 90) : 0`,\n exprBaseline = `${isLR} ? (datum.vgrad ? (${isR} ? \"bottom\" : \"top\") : ${baseline}) : \"top\"`;\n\nexport default function(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config), encode;\n\n encode = {\n enter: {opacity: zero},\n update: {\n opacity: one,\n x: {field: {group: 'padding'}},\n y: {field: {group: 'padding'}}\n },\n exit: {opacity: zero}\n };\n\n addEncoders(encode, {\n orient: _('titleOrient'),\n _anchor: _('titleAnchor'),\n anchor: {signal: exprAnchor},\n angle: {signal: exprAngle},\n align: {signal: exprAlign},\n baseline: {signal: exprBaseline},\n text: spec.title,\n fill: _('titleColor'),\n fillOpacity: _('titleOpacity'),\n font: _('titleFont'),\n fontSize: _('titleFontSize'),\n fontStyle: _('titleFontStyle'),\n fontWeight: _('titleFontWeight'),\n limit: _('titleLimit')\n }, { // require update\n align: _('titleAlign'),\n baseline: _('titleBaseline'),\n });\n\n return guideMark(TextMark, LegendTitleRole, GuideTitleStyle, null, dataRef, encode, userEncode);\n}\n","import {isObject, stringValue} from 'vega-util';\n\nexport default function(clip, scope) {\n var expr;\n\n if (isObject(clip)) {\n if (clip.signal) {\n expr = clip.signal;\n } else if (clip.path) {\n expr = 'pathShape(' + param(clip.path) + ')';\n } else if (clip.sphere) {\n expr = 'geoShape(' + param(clip.sphere) + ', {type: \"Sphere\"})';\n }\n }\n\n return expr\n ? scope.signalRef(expr)\n : !!clip;\n}\n\nfunction param(value) {\n return isObject(value) && value.signal\n ? value.signal\n : stringValue(value);\n}","import {GroupMark} from './marktypes';\nimport {ScopeRole, MarkRole} from './roles';\n\nexport default function(spec) {\n var role = spec.role || '';\n return (!role.indexOf('axis') || !role.indexOf('legend'))\n ? role\n : spec.type === GroupMark ? ScopeRole : (role || MarkRole);\n}\n","import role from './role';\n\nexport default function(spec) {\n return {\n marktype: spec.type,\n name: spec.name || undefined,\n role: spec.role || role(spec),\n zindex: +spec.zindex || undefined\n };\n}\n","export default function(spec, scope) {\n return spec && spec.signal ? scope.signalRef(spec.signal)\n : spec === false ? false\n : true;\n}\n","import parseExpression from './expression';\nimport {entry, fieldRef, isSignal, ref} from '../util';\nimport {Params} from '../transforms';\nimport {definition} from 'vega-dataflow';\nimport {error, extend, isArray, isString, stringValue} from 'vega-util';\n\n/**\n * Parse a data transform specification.\n */\nexport default function(spec, scope) {\n var def = definition(spec.type);\n if (!def) error('Unrecognized transform type: ' + stringValue(spec.type));\n\n var t = entry(def.type.toLowerCase(), null, parseParameters(def, spec, scope));\n if (spec.signal) scope.addSignal(spec.signal, scope.proxy(t));\n t.metadata = def.metadata || {};\n\n return t;\n}\n\n/**\n * Parse all parameters of a data transform.\n */\nfunction parseParameters(def, spec, scope) {\n var params = {}, pdef, i, n;\n for (i=0, n=def.params.length; i<n; ++i) {\n pdef = def.params[i];\n params[pdef.name] = parseParameter(pdef, spec, scope);\n }\n return params;\n}\n\n/**\n * Parse a data transform parameter.\n */\nfunction parseParameter(def, spec, scope) {\n var type = def.type,\n value = spec[def.name];\n\n if (type === 'index') {\n return parseIndexParameter(def, spec, scope);\n } else if (value === undefined) {\n if (def.required) {\n error('Missing required ' + stringValue(spec.type)\n + ' parameter: ' + stringValue(def.name));\n }\n return;\n } else if (type === 'param') {\n return parseSubParameters(def, spec, scope);\n } else if (type === 'projection') {\n return scope.projectionRef(spec[def.name]);\n }\n\n return def.array && !isSignal(value)\n ? value.map(function(v) { return parameterValue(def, v, scope); })\n : parameterValue(def, value, scope);\n}\n\n/**\n * Parse a single parameter value.\n */\nfunction parameterValue(def, value, scope) {\n var type = def.type;\n\n if (isSignal(value)) {\n return isExpr(type) ? error('Expression references can not be signals.')\n : isField(type) ? scope.fieldRef(value)\n : isCompare(type) ? scope.compareRef(value)\n : scope.signalRef(value.signal);\n } else {\n var expr = def.expr || isField(type);\n return expr && outerExpr(value) ? scope.exprRef(value.expr, value.as)\n : expr && outerField(value) ? fieldRef(value.field, value.as)\n : isExpr(type) ? parseExpression(value, scope)\n : isData(type) ? ref(scope.getData(value).values)\n : isField(type) ? fieldRef(value)\n : isCompare(type) ? scope.compareRef(value)\n : value;\n }\n}\n\n/**\n * Parse parameter for accessing an index of another data set.\n */\nfunction parseIndexParameter(def, spec, scope) {\n if (!isString(spec.from)) {\n error('Lookup \"from\" parameter must be a string literal.');\n }\n return scope.getData(spec.from).lookupRef(scope, spec.key);\n}\n\n/**\n * Parse a parameter that contains one or more sub-parameter objects.\n */\nfunction parseSubParameters(def, spec, scope) {\n var value = spec[def.name];\n\n if (def.array) {\n if (!isArray(value)) { // signals not allowed!\n error('Expected an array of sub-parameters. Instead: ' + stringValue(value));\n }\n return value.map(function(v) {\n return parseSubParameter(def, v, scope);\n });\n } else {\n return parseSubParameter(def, value, scope);\n }\n}\n\n/**\n * Parse a sub-parameter object.\n */\nfunction parseSubParameter(def, value, scope) {\n var params, pdef, k, i, n;\n\n // loop over defs to find matching key\n for (i=0, n=def.params.length; i<n; ++i) {\n pdef = def.params[i];\n for (k in pdef.key) {\n if (pdef.key[k] !== value[k]) { pdef = null; break; }\n }\n if (pdef) break;\n }\n // raise error if matching key not found\n if (!pdef) error('Unsupported parameter: ' + stringValue(value));\n\n // parse params, create Params transform, return ref\n params = extend(parseParameters(pdef, value, scope), pdef.key);\n return ref(scope.add(Params(params)));\n}\n\n// -- Utilities -----\n\nexport function outerExpr(_) {\n return _ && _.expr;\n}\n\nexport function outerField(_) {\n return _ && _.field;\n}\n\nexport function isData(_) {\n return _ === 'data';\n}\n\nexport function isExpr(_) {\n return _ === 'expr';\n}\n\nexport function isField(_) {\n return _ === 'field';\n}\n\nexport function isCompare(_) {\n return _ === 'compare'\n}\n","import parseTransform from '../transform';\nimport {ref} from '../../util';\nimport {Collect} from '../../transforms';\nimport {array, error, extend} from 'vega-util';\n\nexport default function(from, group, scope) {\n var facet, key, op, dataRef, parent;\n\n // if no source data, generate singleton datum\n if (!from) {\n dataRef = ref(scope.add(Collect(null, [{}])));\n }\n\n // if faceted, process facet specification\n else if (facet = from.facet) {\n if (!group) error('Only group marks can be faceted.');\n\n // use pre-faceted source data, if available\n if (facet.field != null) {\n dataRef = parent = getDataRef(facet, scope);\n } else {\n // generate facet aggregates if no direct data specification\n if (!from.data) {\n op = parseTransform(extend({\n type: 'aggregate',\n groupby: array(facet.groupby)\n }, facet.aggregate), scope);\n op.params.key = scope.keyRef(facet.groupby);\n op.params.pulse = getDataRef(facet, scope);\n dataRef = parent = ref(scope.add(op));\n } else {\n parent = ref(scope.getData(from.data).aggregate);\n }\n\n key = scope.keyRef(facet.groupby, true);\n }\n }\n\n // if not yet defined, get source data reference\n if (!dataRef) {\n dataRef = getDataRef(from, scope);\n }\n\n return {\n key: key,\n pulse: dataRef,\n parent: parent\n };\n}\n\nexport function getDataRef(from, scope) {\n return from.$ref ? from\n : from.data && from.data.$ref ? from.data\n : ref(scope.getData(from.data).output);\n}","import {entry, ref, keyFieldRef, aggrField, sortKey} from './util';\nimport {Aggregate, Collect} from './transforms';\nimport {isString} from 'vega-util';\n\nexport default function DataScope(scope, input, output, values, aggr) {\n this.scope = scope; // parent scope object\n this.input = input; // first operator in pipeline (tuple input)\n this.output = output; // last operator in pipeline (tuple output)\n this.values = values; // operator for accessing tuples (but not tuple flow)\n\n // last aggregate in transform pipeline\n this.aggregate = aggr;\n\n // lookup table of field indices\n this.index = {};\n}\n\nDataScope.fromEntries = function(scope, entries) {\n var n = entries.length,\n i = 1,\n input = entries[0],\n values = entries[n-1],\n output = entries[n-2],\n aggr = null;\n\n if (input && input.type === 'load') {\n input = entries[1];\n }\n\n // add operator entries to this scope, wire up pulse chain\n scope.add(entries[0]);\n for (; i<n; ++i) {\n entries[i].params.pulse = ref(entries[i-1]);\n scope.add(entries[i]);\n if (entries[i].type === 'aggregate') aggr = entries[i];\n }\n\n return new DataScope(scope, input, output, values, aggr);\n};\n\nvar prototype = DataScope.prototype;\n\nprototype.countsRef = function(scope, field, sort) {\n var ds = this,\n cache = ds.counts || (ds.counts = {}),\n k = fieldKey(field), v, a, p;\n\n if (k != null) {\n scope = ds.scope;\n v = cache[k];\n }\n\n if (!v) {\n p = {\n groupby: scope.fieldRef(field, 'key'),\n pulse: ref(ds.output)\n };\n if (sort && sort.field) addSortField(scope, p, sort);\n a = scope.add(Aggregate(p));\n v = scope.add(Collect({pulse: ref(a)}));\n v = {agg: a, ref: ref(v)};\n if (k != null) cache[k] = v;\n } else if (sort && sort.field) {\n addSortField(scope, v.agg.params, sort);\n }\n\n return v.ref;\n};\n\nfunction fieldKey(field) {\n return isString(field) ? field : null;\n}\n\nfunction addSortField(scope, p, sort) {\n var as = aggrField(sort.op, sort.field), s;\n\n if (p.ops) {\n for (var i=0, n=p.as.length; i<n; ++i) {\n if (p.as[i] === as) return;\n }\n } else {\n p.ops = ['count'];\n p.fields = [null];\n p.as = ['count'];\n }\n if (sort.op) {\n p.ops.push((s=sort.op.signal) ? scope.signalRef(s) : sort.op);\n p.fields.push(scope.fieldRef(sort.field));\n p.as.push(as);\n }\n}\n\nfunction cache(scope, ds, name, optype, field, counts, index) {\n var cache = ds[name] || (ds[name] = {}),\n sort = sortKey(counts),\n k = fieldKey(field), v, op;\n\n if (k != null) {\n scope = ds.scope;\n k = k + (sort ? '|' + sort : '');\n v = cache[k];\n }\n\n if (!v) {\n var params = counts\n ? {field: keyFieldRef, pulse: ds.countsRef(scope, field, counts)}\n : {field: scope.fieldRef(field), pulse: ref(ds.output)};\n if (sort) params.sort = scope.sortRef(counts);\n op = scope.add(entry(optype, undefined, params));\n if (index) ds.index[field] = op;\n v = ref(op);\n if (k != null) cache[k] = v;\n }\n return v;\n}\n\nprototype.tuplesRef = function() {\n return ref(this.values);\n};\n\nprototype.extentRef = function(scope, field) {\n return cache(scope, this, 'extent', 'extent', field, false);\n};\n\nprototype.domainRef = function(scope, field) {\n return cache(scope, this, 'domain', 'values', field, false);\n};\n\nprototype.valuesRef = function(scope, field, sort) {\n return cache(scope, this, 'vals', 'values', field, sort || true);\n};\n\nprototype.lookupRef = function(scope, field) {\n return cache(scope, this, 'lookup', 'tupleindex', field, false);\n};\n\nprototype.indataRef = function(scope, field) {\n return cache(scope, this, 'indata', 'tupleindex', field, true, true);\n};\n","import {getDataRef} from './data';\nimport parseSpec from '../spec';\nimport DataScope from '../../DataScope';\nimport {ref} from '../../util';\nimport {Collect, Facet, PreFacet, Sieve} from '../../transforms';\nimport {error, stringValue} from 'vega-util';\n\nexport default function(spec, scope, group) {\n var facet = spec.from.facet,\n name = facet.name,\n data = getDataRef(facet, scope),\n subscope, source, values, op;\n\n if (!facet.name) {\n error('Facet must have a name: ' + stringValue(facet));\n }\n if (!facet.data) {\n error('Facet must reference a data set: ' + stringValue(facet));\n }\n\n if (facet.field) {\n op = scope.add(PreFacet({\n field: scope.fieldRef(facet.field),\n pulse: data\n }));\n } else if (facet.groupby) {\n op = scope.add(Facet({\n key: scope.keyRef(facet.groupby),\n group: ref(scope.proxy(group.parent)),\n pulse: data\n }));\n } else {\n error('Facet must specify groupby or field: ' + stringValue(facet));\n }\n\n // initialize facet subscope\n subscope = scope.fork();\n source = subscope.add(Collect());\n values = subscope.add(Sieve({pulse: ref(source)}));\n subscope.addData(name, new DataScope(subscope, source, source, values));\n subscope.addSignal('parent', null);\n\n // parse faceted subflow\n op.params.subflow = {\n $subflow: parseSpec(spec, subscope).toRuntime()\n };\n}\n","import parseExpression from './expression';\nimport {operator} from '../util';\n\nexport default function(spec, scope, name) {\n var remove = spec.remove,\n insert = spec.insert,\n toggle = spec.toggle,\n modify = spec.modify,\n values = spec.values,\n op = scope.add(operator()),\n update, expr;\n\n update = 'if(' + spec.trigger + ',modify(\"'\n + name + '\",'\n + [insert, remove, toggle, modify, values]\n .map(function(_) { return _ == null ? 'null' : _; })\n .join(',')\n + '),0)';\n\n expr = parseExpression(update, scope);\n op.update = expr.$expr;\n op.params = expr.$params;\n}\n","import clip from './marks/clip';\nimport definition from './marks/definition';\nimport interactive from './marks/interactive';\nimport parseData from './marks/data';\nimport parseFacet from './marks/facet';\nimport parseSubflow from './marks/subflow';\nimport getRole from './marks/role';\nimport {GroupMark} from './marks/marktypes';\nimport {FrameRole, MarkRole, ScopeRole} from './marks/roles';\nimport {encoders} from './encode/encode-util';\nimport parseTransform from './transform';\nimport parseTrigger from './trigger';\nimport parseSpec from './spec';\nimport DataScope from '../DataScope';\nimport {fieldRef, isSignal, ref} from '../util';\nimport {error} from 'vega-util';\nimport {Bound, Collect, DataJoin, Mark, Encode, Overlap, Render, Sieve, SortItems, ViewLayout} from '../transforms';\n\nexport default function(spec, scope) {\n var role = getRole(spec),\n group = spec.type === GroupMark,\n facet = spec.from && spec.from.facet,\n layout = spec.layout || role === ScopeRole || role === FrameRole,\n nested = role === MarkRole || layout || facet,\n overlap = spec.overlap,\n ops, op, input, store, enc, bound, render, sieve, name,\n joinRef, markRef, encodeRef, layoutRef, boundRef;\n\n // resolve input data\n input = parseData(spec.from, group, scope);\n\n // data join to map tuples to visual items\n op = scope.add(DataJoin({\n key: input.key || (spec.key ? fieldRef(spec.key) : undefined),\n pulse: input.pulse,\n clean: !group\n }));\n joinRef = ref(op);\n\n // collect visual items\n op = store = scope.add(Collect({pulse: joinRef}));\n\n // connect visual items to scenegraph\n op = scope.add(Mark({\n markdef: definition(spec),\n interactive: interactive(spec.interactive, scope),\n clip: clip(spec.clip, scope),\n context: {$context: true},\n groups: scope.lookup(),\n parent: scope.signals.parent ? scope.signalRef('parent') : null,\n index: scope.markpath(),\n pulse: ref(op)\n }));\n markRef = ref(op);\n\n // add visual encoders\n op = enc = scope.add(Encode(encoders(\n spec.encode, spec.type, role, spec.style, scope,\n {mod: false, pulse: markRef}\n )));\n\n // monitor parent marks to propagate changes\n op.params.parent = scope.encode();\n\n // add post-encoding transforms, if defined\n if (spec.transform) {\n spec.transform.forEach(function(_) {\n const tx = parseTransform(_, scope),\n md = tx.metadata;\n if (md.generates || md.changes) {\n error('Mark transforms should not generate new data.');\n }\n if (!md.nomod) enc.params.mod = true; // update encode mod handling\n tx.params.pulse = ref(op);\n scope.add(op = tx);\n });\n }\n\n // if item sort specified, perform post-encoding\n if (spec.sort) {\n op = scope.add(SortItems({\n sort: scope.compareRef(spec.sort, true), // stable sort\n pulse: ref(op)\n }));\n }\n\n encodeRef = ref(op);\n\n // add view layout operator if needed\n if (facet || layout) {\n layout = scope.add(ViewLayout({\n layout: scope.objectProperty(spec.layout),\n legends: scope.legends,\n mark: markRef,\n pulse: encodeRef\n }));\n layoutRef = ref(layout);\n }\n\n // compute bounding boxes\n bound = scope.add(Bound({mark: markRef, pulse: layoutRef || encodeRef}));\n boundRef = ref(bound);\n\n // if group mark, recurse to parse nested content\n if (group) {\n // juggle layout & bounds to ensure they run *after* any faceting transforms\n if (nested) { ops = scope.operators; ops.pop(); if (layout) ops.pop(); }\n\n scope.pushState(encodeRef, layoutRef || boundRef, joinRef);\n facet ? parseFacet(spec, scope, input) // explicit facet\n : nested ? parseSubflow(spec, scope, input) // standard mark group\n : parseSpec(spec, scope); // guide group, we can avoid nested scopes\n scope.popState();\n\n if (nested) { if (layout) ops.push(layout); ops.push(bound); }\n }\n\n // if requested, add overlap removal transform\n if (overlap) {\n boundRef = parseOverlap(overlap, boundRef, scope);\n }\n\n // render / sieve items\n render = scope.add(Render({pulse: boundRef}));\n sieve = scope.add(Sieve({pulse: ref(render)}, undefined, scope.parent()));\n\n // if mark is named, make accessible as reactive geometry\n // add trigger updates if defined\n if (spec.name != null) {\n name = spec.name;\n scope.addData(name, new DataScope(scope, store, render, sieve));\n if (spec.on) spec.on.forEach(function(on) {\n if (on.insert || on.remove || on.toggle) {\n error('Marks only support modify triggers.');\n }\n parseTrigger(on, scope, name);\n });\n }\n}\n\nfunction parseOverlap(overlap, source, scope) {\n var method = overlap.method,\n bound = overlap.bound,\n sep = overlap.separation, tol;\n\n var params = {\n separation: isSignal(sep) ? scope.signalRef(sep.signal) : sep,\n method: isSignal(method) ? scope.signalRef(method.signal) : method,\n pulse: source\n };\n\n if (overlap.order) {\n params.sort = scope.compareRef({field: overlap.order});\n }\n\n if (bound) {\n tol = bound.tolerance;\n params.boundTolerance = isSignal(tol) ? scope.signalRef(tol.signal) : +tol;\n params.boundScale = scope.scaleRef(bound.scale);\n params.boundOrient = bound.orient;\n }\n\n return ref(scope.add(Overlap(params)));\n}\n","import parseSpec from '../spec';\nimport {Sieve, PreFacet} from '../../transforms';\n\nexport default function(spec, scope, input) {\n var op = scope.add(PreFacet({pulse: input.pulse})),\n subscope = scope.fork();\n\n subscope.add(Sieve());\n subscope.addSignal('parent', null);\n\n // parse group mark subflow\n op.params.subflow = {\n $subflow: parseSpec(spec, subscope).toRuntime()\n };\n}\n","import {\n GuideLabelStyle, Skip,\n Symbols, Gradient, Discrete, LegendScales\n} from './guides/constants';\nimport legendGradient from './guides/legend-gradient';\nimport legendGradientDiscrete from './guides/legend-gradient-discrete';\nimport legendGradientLabels from './guides/legend-gradient-labels';\nimport {default as legendSymbolGroups, legendSymbolLayout} from './guides/legend-symbol-groups';\nimport legendTitle from './guides/legend-title';\nimport guideGroup from './guides/guide-group';\nimport {getEncoding, getStyle, lookup} from './guides/guide-util';\nimport parseExpression from './expression';\nimport parseMark from './mark';\nimport {LegendRole, LegendEntryRole} from './marks/roles';\nimport {addEncoders, extendEncode} from './encode/encode-util';\nimport {ref, deref} from '../util';\nimport {Collect, LegendEntries} from '../transforms';\n\nimport {isContinuous, isDiscretizing} from 'vega-scale';\nimport {error} from 'vega-util';\n\nexport default function(spec, scope) {\n var config = scope.config.legend,\n encode = spec.encode || {},\n legendEncode = encode.legend || {},\n name = legendEncode.name || undefined,\n interactive = legendEncode.interactive,\n style = legendEncode.style,\n _ = lookup(spec, config),\n entryEncode, entryLayout, params, children,\n type, datum, dataRef, entryRef, group;\n\n // resolve 'canonical' scale name\n var scale = LegendScales.reduce(function(a, b) { return a || spec[b]; }, 0);\n if (!scale) error('Missing valid scale for legend.');\n\n // resolve legend type (symbol, gradient, or discrete gradient)\n type = legendType(spec, scope.scaleType(scale));\n\n // single-element data source for legend group\n datum = {\n title: spec.title != null,\n type: type,\n vgrad: type !== 'symbol' && _.isVertical()\n };\n dataRef = ref(scope.add(Collect(null, [datum])));\n\n // encoding properties for legend group\n legendEncode = extendEncode(\n buildLegendEncode(_, config), legendEncode, Skip\n );\n\n // encoding properties for legend entry sub-group\n entryEncode = {enter: {x: {value: 0}, y: {value: 0}}};\n\n // data source for legend values\n entryRef = ref(scope.add(LegendEntries(params = {\n type: type,\n scale: scope.scaleRef(scale),\n count: scope.objectProperty(spec.tickCount),\n values: scope.objectProperty(spec.values),\n minstep: scope.property(spec.tickMinStep),\n formatType: scope.property(spec.formatType),\n formatSpecifier: scope.property(spec.format)\n })));\n\n // continuous gradient legend\n if (type === Gradient) {\n children = [\n legendGradient(spec, scale, config, encode.gradient),\n legendGradientLabels(spec, config, encode.labels, entryRef)\n ];\n // adjust default tick count based on the gradient length\n params.count = params.count || scope.signalRef(\n `max(2,2*floor((${deref(_.gradientLength())})/100))`\n );\n }\n\n // discrete gradient legend\n else if (type === Discrete) {\n children = [\n legendGradientDiscrete(spec, scale, config, encode.gradient, entryRef),\n legendGradientLabels(spec, config, encode.labels, entryRef)\n ];\n }\n\n // symbol legend\n else {\n // determine legend symbol group layout\n entryLayout = legendSymbolLayout(spec, config);\n children = [\n legendSymbolGroups(spec, config, encode, entryRef, deref(entryLayout.columns))\n ];\n // pass symbol size information to legend entry generator\n params.size = sizeExpression(spec, scope, children[0].marks);\n }\n\n // generate legend marks\n children = [\n guideGroup(LegendEntryRole, null, null, dataRef, interactive,\n entryEncode, children, entryLayout)\n ];\n\n // include legend title if defined\n if (datum.title) {\n children.push(legendTitle(spec, config, encode.title, dataRef));\n }\n\n // build legend specification\n group = guideGroup(LegendRole, style, name, dataRef, interactive, legendEncode, children);\n if (spec.zindex) group.zindex = spec.zindex;\n\n // parse legend specification\n return parseMark(group, scope);\n}\n\nfunction legendType(spec, scaleType) {\n var type = spec.type || Symbols;\n\n if (!spec.type && scaleCount(spec) === 1 && (spec.fill || spec.stroke)) {\n type = isContinuous(scaleType) ? Gradient\n : isDiscretizing(scaleType) ? Discrete\n : Symbols;\n }\n\n return type !== Gradient ? type\n : isDiscretizing(scaleType) ? Discrete\n : Gradient;\n}\n\nfunction scaleCount(spec) {\n return LegendScales.reduce(function(count, type) {\n return count + (spec[type] ? 1 : 0);\n }, 0);\n}\n\nfunction buildLegendEncode(_, config) {\n var encode = {enter: {}, update: {}};\n\n addEncoders(encode, {\n orient: _('orient'),\n offset: _('offset'),\n padding: _('padding'),\n titlePadding: _('titlePadding'),\n cornerRadius: _('cornerRadius'),\n fill: _('fillColor'),\n stroke: _('strokeColor'),\n strokeWidth: config.strokeWidth,\n strokeDash: config.strokeDash,\n x: _('legendX'),\n y: _('legendY'),\n });\n\n return encode;\n}\n\nfunction sizeExpression(spec, scope, marks) {\n var size = deref(getChannel('size', spec, marks)),\n strokeWidth = deref(getChannel('strokeWidth', spec, marks)),\n fontSize = deref(getFontSize(marks[1].encode, scope, GuideLabelStyle));\n\n return parseExpression(\n `max(ceil(sqrt(${size})+${strokeWidth}),${fontSize})`,\n scope\n );\n}\n\nfunction getChannel(name, spec, marks) {\n return spec[name]\n ? `scale(\"${spec[name]}\",datum)`\n : getEncoding(name, marks[0].encode);\n}\n\nfunction getFontSize(encode, scope, style) {\n return getEncoding('fontSize', encode) || getStyle('fontSize', scope, style);\n}\n","import {Top, Bottom, Left, Right, GroupTitleStyle} from './guides/constants';\nimport guideMark from './guides/guide-mark';\nimport {alignExpr, lookup} from './guides/guide-util';\nimport parseMark from './mark';\nimport {TextMark} from './marks/marktypes';\nimport {TitleRole} from './marks/roles';\nimport {addEncoders} from './encode/encode-util';\nimport {ref} from '../util';\nimport {Collect} from '../transforms';\nimport {extend, isString} from 'vega-util';\n\nconst angleExpr = `item.orient===\"${Left}\"?-90:item.orient===\"${Right}\"?90:0`,\n baselineExpr = `item.orient===\"${Bottom}\"?\"${Top}\":\"${Bottom}\"`;\n\nexport default function(spec, scope) {\n spec = isString(spec) ? {text: spec} : spec;\n\n var config = scope.config.title,\n encode = extend({}, spec.encode),\n dataRef, title;\n\n // single-element data source for group title\n dataRef = ref(scope.add(Collect(null, [{}])));\n\n // build title specification\n encode.name = spec.name;\n encode.interactive = spec.interactive;\n title = buildTitle(spec, config, encode, dataRef);\n if (spec.zindex) title.zindex = spec.zindex;\n\n // parse title specification\n return parseMark(title, scope);\n}\n\nfunction buildTitle(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n zero = {value: 0},\n title = spec.text,\n encode;\n\n encode = {\n enter: {opacity: zero},\n update: {opacity: {value: 1}},\n exit: {opacity: zero}\n };\n\n addEncoders(encode, {\n text: title,\n orient: _('orient'),\n anchor: _('anchor'),\n align: {signal: alignExpr},\n angle: {signal: angleExpr},\n baseline: {signal: baselineExpr},\n dx: _('dx'),\n dy: _('dy'),\n fill: _('color'),\n font: _('font'),\n fontSize: _('fontSize'),\n fontStyle: _('fontStyle'),\n fontWeight: _('fontWeight'),\n frame: _('frame'),\n limit: _('limit'),\n offset: _('offset') || 0\n }, { // update\n align: _('align'),\n angle: _('angle'),\n baseline: _('baseline')\n });\n\n return guideMark(TextMark, TitleRole, spec.style || GroupTitleStyle,\n null, dataRef, encode, userEncode);\n}\n","import parseTransform from './transform';\nimport parseTrigger from './trigger';\nimport {hasSignal, ref} from '../util';\nimport {Collect, Load, Relay, Sieve} from '../transforms';\nimport {array} from 'vega-util';\n\nexport default function parseData(data, scope) {\n var transforms = [];\n\n if (data.transform) {\n data.transform.forEach(function(tx) {\n transforms.push(parseTransform(tx, scope));\n });\n }\n\n if (data.on) {\n data.on.forEach(function(on) {\n parseTrigger(on, scope, data.name);\n });\n }\n\n scope.addDataPipeline(data.name, analyze(data, scope, transforms));\n}\n\n/**\n * Analyze a data pipeline, add needed operators.\n */\nfunction analyze(data, scope, ops) {\n var output = [],\n source = null,\n modify = false,\n generate = false,\n upstream, i, n, t, m;\n\n if (data.values) {\n // hard-wired input data set\n if (hasSignal(data.values) || hasSignal(data.format)) {\n // if either values or format has signal, use dynamic loader\n output.push(load(scope, data));\n output.push(source = collect());\n } else {\n // otherwise, ingest upon dataflow init\n output.push(source = collect({\n $ingest: data.values,\n $format: data.format\n }));\n }\n } else if (data.url) {\n // load data from external source\n if (hasSignal(data.url) || hasSignal(data.format)) {\n // if either url or format has signal, use dynamic loader\n output.push(load(scope, data));\n output.push(source = collect());\n } else {\n // otherwise, request load upon dataflow init\n output.push(source = collect({\n $request: data.url,\n $format: data.format\n }));\n }\n } else if (data.source) {\n // derives from one or more other data sets\n source = upstream = array(data.source).map(function(d) {\n return ref(scope.getData(d).output);\n });\n output.push(null); // populate later\n }\n\n // scan data transforms, add collectors as needed\n for (i=0, n=ops.length; i<n; ++i) {\n t = ops[i];\n m = t.metadata;\n\n if (!source && !m.source) {\n output.push(source = collect());\n }\n output.push(t);\n\n if (m.generates) generate = true;\n if (m.modifies && !generate) modify = true;\n\n if (m.source) source = t;\n else if (m.changes) source = null;\n }\n\n if (upstream) {\n n = upstream.length - 1;\n output[0] = Relay({\n derive: modify,\n pulse: n ? upstream : upstream[0]\n });\n if (modify || n) {\n // collect derived and multi-pulse tuples\n output.splice(1, 0, collect());\n }\n }\n\n if (!source) output.push(collect());\n output.push(Sieve({}));\n return output;\n}\n\nfunction collect(values) {\n var s = Collect({}, values);\n s.metadata = {source: true};\n return s;\n}\n\nfunction load(scope, data) {\n return Load({\n url: data.url ? scope.property(data.url) : undefined,\n values: data.values ? scope.property(data.values) : undefined,\n format: scope.objectProperty(data.format)\n });\n}\n","import {Top, Bottom, zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {RuleMark} from '../marks/marktypes';\nimport {AxisDomainRole} from '../marks/roles';\nimport {addEncoders} from '../encode/encode-util';\n\nexport default function(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n encode, enter, update, u, u2, v;\n\n encode = {\n enter: enter = {opacity: zero},\n update: update = {opacity: one},\n exit: {opacity: zero}\n };\n\n addEncoders(encode, {\n stroke: _('domainColor'),\n strokeDash: _('domainDash'),\n strokeDashOffset: _('domainDashOffset'),\n strokeWidth: _('domainWidth'),\n strokeOpacity: _('domainOpacity')\n });\n\n if (orient === Top || orient === Bottom) {\n u = 'x';\n v = 'y';\n } else {\n u = 'y';\n v = 'x';\n }\n u2 = u + '2';\n\n enter[v] = zero;\n update[u] = enter[u] = position(spec, 0);\n update[u2] = enter[u2] = position(spec, 1);\n\n return guideMark(RuleMark, AxisDomainRole, null, null, dataRef, encode, userEncode);\n}\n\nfunction position(spec, pos) {\n return {scale: spec.scale, range: pos};\n}\n","import {Left, Top, Bottom, Value, zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {RuleMark} from '../marks/marktypes';\nimport {AxisGridRole} from '../marks/roles';\nimport {addEncoders} from '../encode/encode-util';\nimport {extend, isObject} from 'vega-util';\n\nexport default function(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n vscale = spec.gridScale,\n sign = (orient === Left || orient === Top) ? 1 : -1,\n offset = offsetValue(spec.offset, sign),\n encode, enter, exit, update, tickPos, u, v, v2, s;\n\n encode = {\n enter: enter = {opacity: zero},\n update: update = {opacity: one},\n exit: exit = {opacity: zero}\n };\n\n addEncoders(encode, {\n stroke: _('gridColor'),\n strokeDash: _('gridDash'),\n strokeDashOffset: _('gridDashOffset'),\n strokeOpacity: _('gridOpacity'),\n strokeWidth: _('gridWidth')\n });\n\n tickPos = {\n scale: spec.scale,\n field: Value,\n band: _('bandPosition'),\n round: _('tickRound'),\n extra: _('tickExtra'),\n offset: _('tickOffset')\n };\n\n if (orient === Top || orient === Bottom) {\n u = 'x';\n v = 'y';\n s = 'height';\n } else {\n u = 'y';\n v = 'x';\n s = 'width';\n }\n v2 = v + '2';\n\n update[u] = enter[u] = exit[u] = tickPos;\n\n if (vscale) {\n update[v] = enter[v] = {scale: vscale, range: 0, mult: sign, offset: offset};\n update[v2] = enter[v2] = {scale: vscale, range: 1, mult: sign, offset: offset};\n } else {\n update[v] = enter[v] = {value: 0, offset: offset};\n update[v2] = enter[v2] = {signal: s, mult: sign, offset: offset};\n }\n\n return guideMark(RuleMark, AxisGridRole, null, Value, dataRef, encode, userEncode);\n}\n\nfunction offsetValue(offset, sign) {\n if (sign === 1) {\n // do nothing!\n } else if (!isObject(offset)) {\n offset = sign * (offset || 0);\n } else {\n var entry = offset = extend({}, offset);\n\n while (entry.mult != null) {\n if (!isObject(entry.mult)) {\n entry.mult *= sign;\n return offset;\n } else {\n entry = entry.mult = extend({}, entry.mult);\n }\n }\n\n entry.mult = sign;\n }\n\n return offset;\n}\n","import {Top, Bottom, Left, Right, Label, Value, GuideLabelStyle, zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {TextMark} from '../marks/marktypes';\nimport {AxisLabelRole} from '../marks/roles';\nimport {addEncoders, encoder} from '../encode/encode-util';\nimport {deref} from '../../util';\n\nfunction flushExpr(scale, threshold, a, b, c) {\n return {\n signal: 'flush(range(\"' + scale + '\"), '\n + 'scale(\"' + scale + '\", datum.value), '\n + threshold + ',' + a + ',' + b + ',' + c + ')'\n };\n}\n\nexport default function(spec, config, userEncode, dataRef, size) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n sign = (orient === Left || orient === Top) ? -1 : 1,\n isXAxis = (orient === Top || orient === Bottom),\n scale = spec.scale,\n flush = deref(_('labelFlush')),\n flushOffset = deref(_('labelFlushOffset')),\n flushOn = flush === 0 || !!flush,\n labelAlign = _('labelAlign'),\n labelBaseline = _('labelBaseline'),\n encode, enter, tickSize, tickPos, align, baseline, offset,\n bound, overlap, separation;\n\n tickSize = encoder(size);\n tickSize.mult = sign;\n tickSize.offset = encoder(_('labelPadding') || 0);\n tickSize.offset.mult = sign;\n\n tickPos = {\n scale: scale,\n field: Value,\n band: 0.5,\n offset: _('tickOffset')\n };\n\n if (isXAxis) {\n align = labelAlign || (flushOn\n ? flushExpr(scale, flush, '\"left\"', '\"right\"', '\"center\"')\n : 'center');\n baseline = labelBaseline || (orient === Top ? 'bottom' : 'top');\n offset = !labelAlign;\n } else {\n align = labelAlign || (orient === Right ? 'left' : 'right');\n baseline = labelBaseline || (flushOn\n ? flushExpr(scale, flush, '\"top\"', '\"bottom\"', '\"middle\"')\n : 'middle');\n offset = !labelBaseline;\n }\n\n offset = offset && flushOn && flushOffset\n ? flushExpr(scale, flush, '-' + flushOffset, flushOffset, 0)\n : null;\n\n encode = {\n enter: enter = {\n opacity: zero,\n x: isXAxis ? tickPos : tickSize,\n y: isXAxis ? tickSize : tickPos\n },\n update: {\n opacity: one,\n text: {field: Label},\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero,\n x: enter.x,\n y: enter.y\n }\n };\n\n addEncoders(encode, {\n [isXAxis ? 'dx' : 'dy']: offset,\n align: align,\n baseline: baseline,\n angle: _('labelAngle'),\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontWeight: _('labelFontWeight'),\n fontStyle: _('labelFontStyle'),\n limit: _('labelLimit')\n });\n\n bound = _('labelBound');\n overlap = _('labelOverlap');\n separation = _('labelSeparation');\n\n spec = guideMark(TextMark, AxisLabelRole, GuideLabelStyle, Value, dataRef, encode, userEncode);\n\n // if overlap method or bound defined, request label overlap removal\n if (overlap || bound) {\n spec.overlap = {\n separation: separation,\n method: overlap,\n order: 'datum.index',\n bound: bound ? {scale: scale, orient: orient, tolerance: bound} : null\n };\n }\n\n return spec;\n}\n","import axisConfig from './guides/axis-config';\nimport axisDomain from './guides/axis-domain';\nimport axisGrid from './guides/axis-grid';\nimport axisTicks from './guides/axis-ticks';\nimport axisLabels from './guides/axis-labels';\nimport axisTitle from './guides/axis-title';\nimport guideGroup from './guides/guide-group';\nimport {lookup} from './guides/guide-util';\nimport {AxisRole} from './marks/roles';\nimport parseMark from './mark';\nimport {encoder, extendEncode} from './encode/encode-util';\nimport {Skip} from './guides/constants';\nimport {ref, value} from '../util';\nimport {Collect, AxisTicks} from '../transforms';\n\nexport default function(spec, scope) {\n var config = axisConfig(spec, scope),\n encode = spec.encode || {},\n axisEncode = encode.axis || {},\n name = axisEncode.name || undefined,\n interactive = axisEncode.interactive,\n style = axisEncode.style,\n _ = lookup(spec, config),\n datum, dataRef, ticksRef, size, group, children;\n\n // single-element data source for axis group\n datum = {\n orient: spec.orient,\n ticks: !!_('ticks'),\n labels: !!_('labels'),\n grid: !!_('grid'),\n domain: !!_('domain'),\n title: spec.title != null\n };\n dataRef = ref(scope.add(Collect({}, [datum])));\n\n // encoding properties for axis group item\n axisEncode = extendEncode({\n update: {\n offset: encoder(_('offset') || 0),\n position: encoder(value(spec.position, 0)),\n titlePadding: encoder(_('titlePadding')),\n minExtent: encoder(_('minExtent')),\n maxExtent: encoder(_('maxExtent')),\n range: {signal: `abs(span(range(\"${spec.scale}\")))`}\n }\n }, encode.axis, Skip);\n\n // data source for axis ticks\n ticksRef = ref(scope.add(AxisTicks({\n scale: scope.scaleRef(spec.scale),\n extra: scope.property(_('tickExtra')),\n count: scope.objectProperty(spec.tickCount),\n values: scope.objectProperty(spec.values),\n minstep: scope.property(spec.tickMinStep),\n formatType: scope.property(spec.formatType),\n formatSpecifier: scope.property(spec.format)\n })));\n\n // generate axis marks\n children = [];\n\n // include axis gridlines if requested\n if (datum.grid) {\n children.push(axisGrid(spec, config, encode.grid, ticksRef));\n }\n\n // include axis ticks if requested\n if (datum.ticks) {\n size = _('tickSize');\n children.push(axisTicks(spec, config, encode.ticks, ticksRef, size));\n }\n\n // include axis labels if requested\n if (datum.labels) {\n size = datum.ticks ? size : 0;\n children.push(axisLabels(spec, config, encode.labels, ticksRef, size));\n }\n\n // include axis domain path if requested\n if (datum.domain) {\n children.push(axisDomain(spec, config, encode.domain, dataRef));\n }\n\n // include axis title if defined\n if (datum.title) {\n children.push(axisTitle(spec, config, encode.title, dataRef));\n }\n\n // build axis specification\n group = guideGroup(AxisRole, style, name, dataRef, interactive, axisEncode, children);\n if (spec.zindex) group.zindex = spec.zindex;\n\n // parse axis specification\n return parseMark(group, scope);\n}\n","import {Top, Bottom} from './constants';\nimport {extend} from 'vega-util';\n\nexport default function(spec, scope) {\n var config = scope.config,\n orient = spec.orient,\n xy = (orient === Top || orient === Bottom) ? config.axisX : config.axisY,\n or = config['axis' + orient[0].toUpperCase() + orient.slice(1)],\n band = scope.scaleType(spec.scale) === 'band' && config.axisBand;\n\n return (xy || or || band)\n ? extend({}, config.axis, xy, or, band)\n : config.axis;\n}","import {Top, Left, Bottom, Value, zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {RuleMark} from '../marks/marktypes';\nimport {AxisTickRole} from '../marks/roles';\nimport {addEncoders, encoder} from '../encode/encode-util';\n\nexport default function(spec, config, userEncode, dataRef, size) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n sign = (orient === Left || orient === Top) ? -1 : 1,\n encode, enter, exit, update, tickSize, tickPos;\n\n encode = {\n enter: enter = {opacity: zero},\n update: update = {opacity: one},\n exit: exit = {opacity: zero}\n };\n\n addEncoders(encode, {\n stroke: _('tickColor'),\n strokeDash: _('tickDash'),\n strokeDashOffset: _('tickDashOffset'),\n strokeOpacity: _('tickOpacity'),\n strokeWidth: _('tickWidth')\n });\n\n tickSize = encoder(size);\n tickSize.mult = sign;\n\n tickPos = {\n scale: spec.scale,\n field: Value,\n band: _('bandPosition'),\n round: _('tickRound'),\n extra: _('tickExtra'),\n offset: _('tickOffset')\n };\n\n if (orient === Top || orient === Bottom) {\n update.y = enter.y = zero;\n update.y2 = enter.y2 = tickSize;\n update.x = enter.x = exit.x = tickPos;\n } else {\n update.x = enter.x = zero;\n update.x2 = enter.x2 = tickSize;\n update.y = enter.y = exit.y = tickPos;\n }\n\n return guideMark(RuleMark, AxisTickRole, null, Value, dataRef, encode, userEncode);\n}\n","import {Top, Bottom, Left, GuideTitleStyle, zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {alignExpr, anchorExpr, lookup} from './guide-util';\nimport {encoder, has} from '../encode/encode-util';\nimport {TextMark} from '../marks/marktypes';\nimport {AxisTitleRole} from '../marks/roles';\nimport {addEncode, addEncoders} from '../encode/encode-util';\nimport {extend} from 'vega-util';\n\nexport default function(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n sign = (orient === Left || orient === Top) ? -1 : 1,\n horizontal = (orient === Top || orient === Bottom),\n encode, enter, update, titlePos;\n\n encode = {\n enter: enter = {\n opacity: zero,\n anchor: encoder(_('titleAnchor')),\n align: {signal: alignExpr}\n },\n update: update = extend({}, enter, {\n opacity: one,\n text: encoder(spec.title)\n }),\n exit: {\n opacity: zero\n }\n };\n\n titlePos = {\n signal: `lerp(range(\"${spec.scale}\"), ${anchorExpr(0, 1, 0.5)})`\n };\n\n if (horizontal) {\n update.x = titlePos;\n enter.angle = {value: 0};\n enter.baseline = {value: orient === Top ? 'bottom' : 'top'};\n } else {\n update.y = titlePos;\n enter.angle = {value: sign * 90};\n enter.baseline = {value: 'bottom'};\n }\n\n addEncoders(encode, {\n angle: _('titleAngle'),\n baseline: _('titleBaseline'),\n fill: _('titleColor'),\n fillOpacity: _('titleOpacity'),\n font: _('titleFont'),\n fontSize: _('titleFontSize'),\n fontStyle: _('titleFontStyle'),\n fontWeight: _('titleFontWeight'),\n limit: _('titleLimit')\n }, { // require update\n align: _('titleAlign')\n });\n\n !addEncode(encode, 'x', _('titleX'), 'update')\n && !horizontal && !has('x', userEncode)\n && (encode.enter.auto = {value: true});\n\n !addEncode(encode, 'y', _('titleY'), 'update')\n && horizontal && !has('y', userEncode)\n && (encode.enter.auto = {value: true});\n\n return guideMark(TextMark, AxisTitleRole, GuideTitleStyle, null, dataRef, encode, userEncode);\n}\n","import parseSignalUpdates from './signal-updates';\nimport {initScale, parseScale} from './scale';\nimport parseProjection from './projection';\nimport parseLegend from './legend';\nimport parseSignal from './signal';\nimport parseTitle from './title';\nimport parseData from './data';\nimport parseMark from './mark';\nimport parseAxis from './axis';\nimport {array} from 'vega-util';\n\nexport default function(spec, scope, preprocessed) {\n var signals = array(spec.signals),\n scales = array(spec.scales);\n\n if (!preprocessed) signals.forEach(function(_) {\n parseSignal(_, scope);\n });\n\n array(spec.projections).forEach(function(_) {\n parseProjection(_, scope);\n });\n\n scales.forEach(function(_) {\n initScale(_, scope);\n });\n\n array(spec.data).forEach(function(_) {\n parseData(_, scope);\n });\n\n scales.forEach(function(_) {\n parseScale(_, scope);\n });\n\n signals.forEach(function(_) {\n parseSignalUpdates(_, scope);\n });\n\n array(spec.axes).forEach(function(_) {\n parseAxis(_, scope);\n });\n\n array(spec.marks).forEach(function(_) {\n parseMark(_, scope);\n });\n\n array(spec.legends).forEach(function(_) {\n parseLegend(_, scope);\n });\n\n if (spec.title) {\n parseTitle(spec.title, scope);\n }\n\n scope.parseLambdas();\n return scope;\n}\n","import parseExpression from './expression';\nimport parseUpdate from './update';\nimport {error} from 'vega-util';\n\nexport default function(signal, scope) {\n var op = scope.getSignal(signal.name),\n expr = signal.update;\n\n if (signal.init) {\n if (expr) {\n error('Signals can not include both init and update expressions.');\n } else {\n expr = signal.init;\n op.initonly = true;\n }\n }\n\n if (expr) {\n expr = parseExpression(expr, scope);\n op.update = expr.$expr;\n op.params = expr.$params;\n }\n\n if (signal.on) {\n signal.on.forEach(function(_) {\n parseUpdate(_, scope, op.id);\n });\n }\n}\n","import parseAutosize from './autosize';\nimport parsePadding from './padding';\nimport parseSignal from './signal';\nimport parseSpec from './spec';\nimport {encoders, extendEncode} from './encode/encode-util';\nimport {GroupMark} from './marks/marktypes';\nimport {FrameRole} from './marks/roles';\nimport {ref, operator} from '../util';\nimport DataScope from '../DataScope';\nimport {Bound, Collect, Encode, Render, Sieve, ViewLayout} from '../transforms';\nimport {array, toSet} from 'vega-util';\n\nvar defined = toSet(['width', 'height', 'padding', 'autosize']);\n\nexport default function parseView(spec, scope) {\n var config = scope.config,\n op, input, encode, parent, root;\n\n scope.background = spec.background || config.background;\n scope.eventConfig = config.events;\n root = ref(scope.root = scope.add(operator()));\n scope.addSignal('width', spec.width || 0);\n scope.addSignal('height', spec.height || 0);\n scope.addSignal('padding', parsePadding(spec.padding, config));\n scope.addSignal('autosize', parseAutosize(spec.autosize, config));\n scope.legends = scope.objectProperty(config.legend && config.legend.layout);\n\n array(spec.signals).forEach(function(_) {\n if (!defined[_.name]) parseSignal(_, scope);\n });\n\n // Store root group item\n input = scope.add(Collect());\n\n // Encode root group item\n encode = extendEncode({\n enter: { x: {value: 0}, y: {value: 0} },\n update: { width: {signal: 'width'}, height: {signal: 'height'} }\n }, spec.encode);\n\n encode = scope.add(Encode(\n encoders(encode, GroupMark, FrameRole, spec.style, scope, {pulse: ref(input)}))\n );\n\n // Perform view layout\n parent = scope.add(ViewLayout({\n layout: scope.objectProperty(spec.layout),\n legends: scope.legends,\n autosize: scope.signalRef('autosize'),\n mark: root,\n pulse: ref(encode)\n }));\n scope.operators.pop();\n\n // Parse remainder of specification\n scope.pushState(ref(encode), ref(parent), null);\n parseSpec(spec, scope, true);\n scope.operators.push(parent);\n\n // Bound / render / sieve root item\n op = scope.add(Bound({mark: root, pulse: ref(parent)}));\n op = scope.add(Render({pulse: ref(op)}));\n op = scope.add(Sieve({pulse: ref(op)}));\n\n // Track metadata for root item\n scope.addData('root', new DataScope(scope, input, input, op));\n\n return scope;\n}\n","import DataScope from './DataScope';\nimport {\n aggrField, Ascending, compareRef, Entry, isExpr, isSignal,\n fieldRef, keyRef, tupleidRef, operator, ref\n} from './util';\nimport parseExpression from './parsers/expression';\nimport {Compare, Expression, Field, Key, Projection, Proxy, Scale, Sieve} from './transforms';\nimport {array, error, extend, isArray, isString, isObject, peek, stringValue} from 'vega-util';\n\nexport default function Scope(config) {\n this.config = config;\n\n this.bindings = [];\n this.field = {};\n this.signals = {};\n this.lambdas = {};\n this.scales = {};\n this.events = {};\n this.data = {};\n\n this.streams = [];\n this.updates = [];\n this.operators = [];\n this.background = null;\n this.eventConfig = null;\n\n this._id = 0;\n this._subid = 0;\n this._nextsub = [0];\n\n this._parent = [];\n this._encode = [];\n this._lookup = [];\n this._markpath = [];\n}\n\nfunction Subscope(scope) {\n this.config = scope.config;\n this.legends = scope.legends;\n\n this.field = Object.create(scope.field);\n this.signals = Object.create(scope.signals);\n this.lambdas = Object.create(scope.lambdas);\n this.scales = Object.create(scope.scales);\n this.events = Object.create(scope.events);\n this.data = Object.create(scope.data);\n\n this.streams = [];\n this.updates = [];\n this.operators = [];\n\n this._id = 0;\n this._subid = ++scope._nextsub[0];\n this._nextsub = scope._nextsub;\n\n this._parent = scope._parent.slice();\n this._encode = scope._encode.slice();\n this._lookup = scope._lookup.slice();\n this._markpath = scope._markpath;\n}\n\nvar prototype = Scope.prototype = Subscope.prototype;\n\n// ----\n\nprototype.fork = function() {\n return new Subscope(this);\n};\n\nprototype.isSubscope = function() {\n return this._subid > 0;\n};\n\nprototype.toRuntime = function() {\n this.finish();\n return {\n background: this.background,\n operators: this.operators,\n streams: this.streams,\n updates: this.updates,\n bindings: this.bindings,\n eventConfig: this.eventConfig\n };\n};\n\nprototype.id = function() {\n return (this._subid ? this._subid + ':' : 0) + this._id++;\n};\n\nprototype.add = function(op) {\n this.operators.push(op);\n op.id = this.id();\n // if pre-registration references exist, resolve them now\n if (op.refs) {\n op.refs.forEach(function(ref) { ref.$ref = op.id; });\n op.refs = null;\n }\n return op;\n};\n\nprototype.proxy = function(op) {\n var vref = op instanceof Entry ? ref(op) : op;\n return this.add(Proxy({value: vref}));\n};\n\nprototype.addStream = function(stream) {\n this.streams.push(stream);\n stream.id = this.id();\n return stream;\n};\n\nprototype.addUpdate = function(update) {\n this.updates.push(update);\n return update;\n};\n\n// Apply metadata\nprototype.finish = function() {\n var name, ds;\n\n // annotate root\n if (this.root) this.root.root = true;\n\n // annotate signals\n for (name in this.signals) {\n this.signals[name].signal = name;\n }\n\n // annotate scales\n for (name in this.scales) {\n this.scales[name].scale = name;\n }\n\n // annotate data sets\n function annotate(op, name, type) {\n var data, list;\n if (op) {\n data = op.data || (op.data = {});\n list = data[name] || (data[name] = []);\n list.push(type);\n }\n }\n for (name in this.data) {\n ds = this.data[name];\n annotate(ds.input, name, 'input');\n annotate(ds.output, name, 'output');\n annotate(ds.values, name, 'values');\n for (var field in ds.index) {\n annotate(ds.index[field], name, 'index:' + field);\n }\n }\n\n return this;\n};\n\n// ----\n\nprototype.pushState = function(encode, parent, lookup) {\n this._encode.push(ref(this.add(Sieve({pulse: encode}))));\n this._parent.push(parent);\n this._lookup.push(lookup ? ref(this.proxy(lookup)) : null);\n this._markpath.push(-1);\n};\n\nprototype.popState = function() {\n this._encode.pop();\n this._parent.pop();\n this._lookup.pop();\n this._markpath.pop();\n};\n\nprototype.parent = function() {\n return peek(this._parent);\n};\n\nprototype.encode = function() {\n return peek(this._encode);\n};\n\nprototype.lookup = function() {\n return peek(this._lookup);\n};\n\nprototype.markpath = function() {\n var p = this._markpath;\n return ++p[p.length-1];\n};\n\n// ----\n\nprototype.fieldRef = function(field, name) {\n if (isString(field)) return fieldRef(field, name);\n if (!field.signal) {\n error('Unsupported field reference: ' + stringValue(field));\n }\n\n var s = field.signal,\n f = this.field[s],\n params;\n\n if (!f) {\n params = {name: this.signalRef(s)};\n if (name) params.as = name;\n this.field[s] = f = ref(this.add(Field(params)));\n }\n return f;\n};\n\nprototype.compareRef = function(cmp, stable) {\n function check(_) {\n if (isSignal(_)) {\n signal = true;\n return scope.signalRef(_.signal);\n } else if (isExpr(_)) {\n signal = true;\n return scope.exprRef(_.expr);\n } else {\n return _;\n }\n }\n\n var scope = this,\n signal = false,\n fields = array(cmp.field).map(check),\n orders = array(cmp.order).map(check);\n\n if (stable) {\n fields.push(tupleidRef);\n }\n\n return signal\n ? ref(this.add(Compare({fields: fields, orders: orders})))\n : compareRef(fields, orders);\n};\n\nprototype.keyRef = function(fields, flat) {\n function check(_) {\n if (isSignal(_)) {\n signal = true;\n return ref(sig[_.signal]);\n } else {\n return _;\n }\n }\n\n var sig = this.signals,\n signal = false;\n fields = array(fields).map(check);\n\n return signal\n ? ref(this.add(Key({fields: fields, flat: flat})))\n : keyRef(fields, flat);\n};\n\nprototype.sortRef = function(sort) {\n if (!sort) return sort;\n\n // including id ensures stable sorting\n var a = [aggrField(sort.op, sort.field), tupleidRef],\n o = sort.order || Ascending;\n\n return o.signal\n ? ref(this.add(Compare({\n fields: a,\n orders: [o = this.signalRef(o.signal), o]\n })))\n : compareRef(a, [o, o]);\n};\n\n// ----\n\nprototype.event = function(source, type) {\n var key = source + ':' + type;\n if (!this.events[key]) {\n var id = this.id();\n this.streams.push({\n id: id,\n source: source,\n type: type\n });\n this.events[key] = id;\n }\n return this.events[key];\n};\n\n// ----\n\nprototype.addSignal = function(name, value) {\n if (this.signals.hasOwnProperty(name)) {\n error('Duplicate signal name: ' + stringValue(name));\n }\n var op = value instanceof Entry ? value : this.add(operator(value));\n return this.signals[name] = op;\n};\n\nprototype.getSignal = function(name) {\n if (!this.signals[name]) {\n error('Unrecognized signal name: ' + stringValue(name));\n }\n return this.signals[name];\n};\n\nprototype.signalRef = function(s) {\n if (this.signals[s]) {\n return ref(this.signals[s]);\n } else if (!this.lambdas.hasOwnProperty(s)) {\n this.lambdas[s] = this.add(operator(null));\n }\n return ref(this.lambdas[s]);\n};\n\nprototype.parseLambdas = function() {\n var code = Object.keys(this.lambdas);\n for (var i=0, n=code.length; i<n; ++i) {\n var s = code[i],\n e = parseExpression(s, this),\n op = this.lambdas[s];\n op.params = e.$params;\n op.update = e.$expr;\n }\n};\n\nprototype.property = function(spec) {\n return spec && spec.signal ? this.signalRef(spec.signal) : spec;\n};\n\nprototype.objectProperty = function(spec) {\n return (!spec || !isObject(spec)) ? spec\n : this.signalRef(spec.signal || propertyLambda(spec));\n};\n\nfunction propertyLambda(spec) {\n return (isArray(spec) ? arrayLambda : objectLambda)(spec);\n}\n\nfunction arrayLambda(array) {\n var code = '[',\n i = 0,\n n = array.length,\n value;\n\n for (; i<n; ++i) {\n value = array[i];\n code += (i > 0 ? ',' : '')\n + (isObject(value)\n ? (value.signal || propertyLambda(value))\n : stringValue(value));\n }\n return code + ']';\n}\n\nfunction objectLambda(obj) {\n var code = '{',\n i = 0,\n key, value;\n\n for (key in obj) {\n value = obj[key];\n code += (++i > 1 ? ',' : '')\n + stringValue(key) + ':'\n + (isObject(value)\n ? (value.signal || propertyLambda(value))\n : stringValue(value));\n }\n return code + '}';\n}\n\nprototype.exprRef = function(code, name) {\n var params = {expr: parseExpression(code, this)};\n if (name) params.expr.$name = name;\n return ref(this.add(Expression(params)));\n}\n\nprototype.addBinding = function(name, bind) {\n if (!this.bindings) {\n error('Nested signals do not support binding: ' + stringValue(name));\n }\n this.bindings.push(extend({signal: name}, bind));\n};\n\n// ----\n\nprototype.addScaleProj = function(name, transform) {\n if (this.scales.hasOwnProperty(name)) {\n error('Duplicate scale or projection name: ' + stringValue(name));\n }\n this.scales[name] = this.add(transform);\n};\n\nprototype.addScale = function(name, params) {\n this.addScaleProj(name, Scale(params));\n};\n\nprototype.addProjection = function(name, params) {\n this.addScaleProj(name, Projection(params));\n};\n\nprototype.getScale = function(name) {\n if (!this.scales[name]) {\n error('Unrecognized scale name: ' + stringValue(name));\n }\n return this.scales[name];\n};\n\nprototype.projectionRef =\nprototype.scaleRef = function(name) {\n return ref(this.getScale(name));\n};\n\nprototype.projectionType =\nprototype.scaleType = function(name) {\n return this.getScale(name).params.type;\n};\n\n// ----\n\nprototype.addData = function(name, dataScope) {\n if (this.data.hasOwnProperty(name)) {\n error('Duplicate data set name: ' + stringValue(name));\n }\n return (this.data[name] = dataScope);\n};\n\nprototype.getData = function(name) {\n if (!this.data[name]) {\n error('Undefined data set name: ' + stringValue(name));\n }\n return this.data[name];\n};\n\nprototype.addDataPipeline = function(name, entries) {\n if (this.data.hasOwnProperty(name)) {\n error('Duplicate data set name: ' + stringValue(name));\n }\n return this.addData(name, DataScope.fromEntries(this, entries));\n};\n","import {isArray, isObject} from 'vega-util';\n\nexport default function(configs) {\n return (configs || []).reduce((out, config) => {\n for (var key in config) {\n var r = key === 'legend' ? {'layout': 1}\n : key === 'style' ? true : null;\n copy(out, key, config[key], r);\n }\n return out;\n }, defaults());\n}\n\nfunction copy(output, key, value, recurse) {\n var k, o;\n if (isObject(value) && !isArray(value)) {\n o = isObject(output[key]) ? output[key] : (output[key] = {});\n for (k in value) {\n if (recurse && (recurse === true || recurse[k])) {\n copy(o, k, value[k]);\n } else {\n o[k] = value[k];\n }\n }\n } else {\n output[key] = value;\n }\n}\n\nvar defaultFont = 'sans-serif',\n defaultSymbolSize = 30,\n defaultStrokeWidth = 2,\n defaultColor = '#4c78a8',\n black = '#000',\n gray = '#888',\n lightGray = '#ddd';\n\n/**\n * Standard configuration defaults for Vega specification parsing.\n * Users can provide their own (sub-)set of these default values\n * by passing in a config object to the top-level parse method.\n */\nfunction defaults() {\n return {\n // default padding around visualization\n padding: 0,\n\n // default for automatic sizing; options: 'none', 'pad', 'fit'\n // or provide an object (e.g., {'type': 'pad', 'resize': true})\n autosize: 'pad',\n\n // default view background color\n // covers the entire view component\n background: null,\n\n // default event handling configuration\n // preventDefault for view-sourced event types except 'wheel'\n events: {\n defaults: {allow: ['wheel']}\n },\n\n // defaults for top-level group marks\n // accepts mark properties (fill, stroke, etc)\n // covers the data rectangle within group width/height\n group: null,\n\n // defaults for basic mark types\n // each subset accepts mark properties (fill, stroke, etc)\n mark: null,\n arc: { fill: defaultColor },\n area: { fill: defaultColor },\n image: null,\n line: {\n stroke: defaultColor,\n strokeWidth: defaultStrokeWidth\n },\n path: { stroke: defaultColor },\n rect: { fill: defaultColor },\n rule: { stroke: black },\n shape: { stroke: defaultColor },\n symbol: {\n fill: defaultColor,\n size: 64\n },\n text: {\n fill: black,\n font: defaultFont,\n fontSize: 11\n },\n\n // style definitions\n style: {\n // axis & legend labels\n 'guide-label': {\n fill: black,\n font: defaultFont,\n fontSize: 10\n },\n // axis & legend titles\n 'guide-title': {\n fill: black,\n font: defaultFont,\n fontSize: 11,\n fontWeight: 'bold'\n },\n // headers, including chart title\n 'group-title': {\n fill: black,\n font: defaultFont,\n fontSize: 13,\n fontWeight: 'bold'\n },\n // defaults for styled point marks in Vega-Lite\n point: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth,\n shape: 'circle'\n },\n circle: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth\n },\n square: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth,\n shape: 'square'\n },\n // defaults for styled group marks in Vega-Lite\n cell: {\n fill: 'transparent',\n stroke: lightGray\n }\n },\n\n // defaults for title\n title: {\n orient: 'top',\n anchor: 'middle',\n offset: 4\n },\n\n // defaults for axes\n axis: {\n minExtent: 0,\n maxExtent: 200,\n bandPosition: 0.5,\n domain: true,\n domainWidth: 1,\n domainColor: gray,\n grid: false,\n gridWidth: 1,\n gridColor: lightGray,\n labels: true,\n labelAngle: 0,\n labelLimit: 180,\n labelPadding: 2,\n ticks: true,\n tickColor: gray,\n tickOffset: 0,\n tickRound: true,\n tickSize: 5,\n tickWidth: 1,\n titlePadding: 4\n },\n\n // correction for centering bias\n axisBand: {\n tickOffset: -1\n },\n\n // defaults for legends\n legend: {\n orient: 'right',\n padding: 0,\n gridAlign: 'each',\n columnPadding: 10,\n rowPadding: 2,\n symbolDirection: 'vertical',\n gradientDirection: 'vertical',\n gradientLength: 200,\n gradientThickness: 16,\n gradientStrokeColor: lightGray,\n gradientStrokeWidth: 0,\n gradientLabelOffset: 2,\n labelAlign: 'left',\n labelBaseline: 'middle',\n labelLimit: 160,\n labelOffset: 4,\n labelOverlap: true,\n symbolType: 'circle',\n symbolSize: 100,\n symbolOffset: 0,\n symbolStrokeWidth: 1.5,\n symbolBaseFillColor: 'transparent',\n symbolBaseStrokeColor: gray,\n titleLimit: 180,\n titleOrient: 'top',\n titlePadding: 5,\n layout: {\n offset: 18,\n direction: 'horizontal',\n left: { direction: 'vertical' },\n right: { direction: 'vertical' }\n }\n },\n\n // defaults for scale ranges\n range: {\n category: {\n scheme: 'tableau10'\n },\n ordinal: {\n scheme: 'blues'\n },\n heatmap: {\n scheme: 'yellowgreenblue'\n },\n ramp: {\n scheme: 'blues'\n },\n diverging: {\n scheme: 'blueorange',\n extent: [1, 0]\n },\n symbol: [\n 'circle',\n 'square',\n 'triangle-up',\n 'cross',\n 'diamond',\n 'triangle-right',\n 'triangle-down',\n 'triangle-left'\n ]\n }\n };\n}\n","import parseView from './parsers/view';\nimport Scope from './Scope';\nimport defaults from './config';\nimport {error, isObject} from 'vega-util';\n\nexport default function(spec, config) {\n if (!isObject(spec)) error('Input Vega specification must be an object.');\n return parseView(spec, new Scope(defaults([config, spec.config])))\n .toRuntime();\n}\n","// -- Transforms -----\n\nimport {extend} from 'vega-util';\nimport {transforms} from 'vega-dataflow';\nimport * as tx from 'vega-transforms';\nimport * as vtx from 'vega-view-transforms';\nimport * as encode from 'vega-encode';\nimport * as geo from 'vega-geo';\nimport * as force from 'vega-force';\nimport * as tree from 'vega-hierarchy';\nimport * as reg from 'vega-regression';\nimport * as voronoi from 'vega-voronoi';\nimport * as wordcloud from 'vega-wordcloud';\nimport * as xf from 'vega-crossfilter';\nextend(transforms, tx, vtx, encode, geo, force, tree, reg, voronoi, wordcloud, xf);\n\n\n// -- Exports -----\n\nexport {\n version\n} from './package.json';\n\nexport * from 'vega-statistics';\n\nexport * from 'vega-util';\n\nexport * from 'vega-loader';\n\nexport * from 'vega-scenegraph';\n\nexport {\n Dataflow,\n EventStream,\n Parameters,\n Pulse,\n MultiPulse,\n Operator,\n Transform,\n changeset,\n ingest,\n isTuple,\n definition,\n transform,\n transforms,\n tupleid\n} from 'vega-dataflow';\n\nexport {\n scale,\n scheme,\n interpolate,\n interpolateColors,\n interpolateRange,\n timeInterval,\n quantizeInterpolator\n} from 'vega-scale';\n\nexport {\n projection\n} from 'vega-projection';\n\nexport {\n View\n} from 'vega-view';\n\nexport {\n expressionFunction,\n formatLocale,\n timeFormatLocale\n} from 'vega-functions';\n\nexport {\n parse\n} from 'vega-parser';\n\nexport {\n parse as runtime,\n context as runtimeContext\n} from 'vega-runtime';\n","export function isLogicalOr(op) {\n return !!op.or;\n}\nexport function isLogicalAnd(op) {\n return !!op.and;\n}\nexport function isLogicalNot(op) {\n return !!op.not;\n}\nexport function forEachLeaf(op, fn) {\n if (isLogicalNot(op)) {\n forEachLeaf(op.not, fn);\n }\n else if (isLogicalAnd(op)) {\n for (const subop of op.and) {\n forEachLeaf(subop, fn);\n }\n }\n else if (isLogicalOr(op)) {\n for (const subop of op.or) {\n forEachLeaf(subop, fn);\n }\n }\n else {\n fn(op);\n }\n}\nexport function normalizeLogicalOperand(op, normalizer) {\n if (isLogicalNot(op)) {\n return { not: normalizeLogicalOperand(op.not, normalizer) };\n }\n else if (isLogicalAnd(op)) {\n return { and: op.and.map(o => normalizeLogicalOperand(o, normalizer)) };\n }\n else if (isLogicalOr(op)) {\n return { or: op.or.map(o => normalizeLogicalOperand(o, normalizer)) };\n }\n else {\n return normalizer(op);\n }\n}\n//# sourceMappingURL=logical.js.map","import { default as clone_ } from 'clone';\nimport deepEqual_ from 'fast-deep-equal';\nimport stableStringify from 'fast-json-stable-stringify';\nimport { isArray, isNumber, isString, splitAccessPath, stringValue } from 'vega-util';\nimport { isLogicalAnd, isLogicalNot, isLogicalOr } from './logical';\nexport const deepEqual = deepEqual_;\nexport const duplicate = clone_;\n/**\n * Creates an object composed of the picked object properties.\n *\n * var object = {'a': 1, 'b': '2', 'c': 3};\n * pick(object, ['a', 'c']);\n * // → {'a': 1, 'c': 3}\n *\n */\nexport function pick(obj, props) {\n const copy = {};\n for (const prop of props) {\n if (obj.hasOwnProperty(prop)) {\n copy[prop] = obj[prop];\n }\n }\n return copy;\n}\n/**\n * The opposite of _.pick; this method creates an object composed of the own\n * and inherited enumerable string keyed properties of object that are not omitted.\n */\nexport function omit(obj, props) {\n const copy = Object.assign({}, obj);\n for (const prop of props) {\n delete copy[prop];\n }\n return copy;\n}\n/**\n * Monkey patch Set so that `stringify` produces a string representation of sets.\n */\nSet.prototype['toJSON'] = function () {\n return `Set(${[...this].map(x => stableStringify(x)).join(',')})`;\n};\n/**\n * Converts any object to a string representation that can be consumed by humans.\n */\nexport const stringify = stableStringify;\n/**\n * Converts any object to a string of limited size, or a number.\n */\nexport function hash(a) {\n if (isNumber(a)) {\n return a;\n }\n const str = isString(a) ? a : stableStringify(a);\n // short strings can be used as hash directly, longer strings are hashed to reduce memory usage\n if (str.length < 250) {\n return str;\n }\n // from http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-… let h = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n h = (h << 5) - h + char;\n h = h & h; // Convert to 32bit integer\n }\n return h;\n}\nexport function isNullOrFalse(x) {\n return x === false || x === null;\n}\nexport function contains(array, item) {\n return array.indexOf(item) > -1;\n}\n/** Returns the array without the elements in item */\nexport function without(array, excludedItems) {\n return array.filter(item => !contains(excludedItems, item));\n}\nexport function union(array, other) {\n return array.concat(without(other, array));\n}\n/**\n * Returns true if any item returns true.\n */\nexport function some(arr, f) {\n let i = 0;\n for (const [k, a] of arr.entries()) {\n if (f(a, k, i++)) {\n return true;\n }\n }\n return false;\n}\n/**\n * Returns true if all items return true.\n */\nexport function every(arr, f) {\n let i = 0;\n for (const [k, a] of arr.entries()) {\n if (!f(a, k, i++)) {\n return false;\n }\n }\n return true;\n}\nexport function flatten(arrays) {\n return [].concat(...arrays);\n}\nexport function fill(val, len) {\n const arr = new Array(len);\n for (let i = 0; i < len; ++i) {\n arr[i] = val;\n }\n return arr;\n}\n/**\n * recursively merges src into dest\n */\nexport function mergeDeep(dest, ...src) {\n for (const s of src) {\n dest = deepMerge_(dest, s);\n }\n return dest;\n}\n// recursively merges src into dest\nfunction deepMerge_(dest, src) {\n if (typeof src !== 'object' || src === null) {\n return dest;\n }\n for (const p in src) {\n if (!src.hasOwnProperty(p)) {\n continue;\n }\n if (src[p] === undefined) {\n continue;\n }\n if (typeof src[p] !== 'object' || isArray(src[p]) || src[p] === null) {\n dest[p] = src[p];\n }\n else if (typeof dest[p] !== 'object' || dest[p] === null) {\n dest[p] = mergeDeep(isArray(src[p].constructor) ? [] : {}, src[p]);\n }\n else {\n mergeDeep(dest[p], src[p]);\n }\n }\n return dest;\n}\nexport function unique(values, f) {\n const results = [];\n const u = {};\n let v;\n for (const val of values) {\n v = f(val);\n if (v in u) {\n continue;\n }\n u[v] = 1;\n results.push(val);\n }\n return results;\n}\n/**\n * Returns true if the two dictionaries disagree. Applies only to defined values.\n */\nexport function isEqual(dict, other) {\n const dictKeys = keys(dict);\n const otherKeys = keys(other);\n if (dictKeys.length !== otherKeys.length) {\n return false;\n }\n for (const key of dictKeys) {\n if (dict[key] !== other[key]) {\n return false;\n }\n }\n return true;\n}\nexport function setEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const e of a) {\n if (!b.has(e)) {\n return false;\n }\n }\n return true;\n}\nexport function hasIntersection(a, b) {\n for (const key of a) {\n if (b.has(key)) {\n return true;\n }\n }\n return false;\n}\nexport function prefixGenerator(a) {\n const prefixes = new Set();\n for (const x of a) {\n const splitField = splitAccessPath(x);\n // Wrap every element other than the first in `[]`\n const wrappedWithAccessors = splitField.map((y, i) => (i === 0 ? y : `[${y}]`));\n const computedPrefixes = wrappedWithAccessors.map((_, i) => wrappedWithAccessors.slice(0, i + 1).join(''));\n computedPrefixes.forEach(y => prefixes.add(y));\n }\n return prefixes;\n}\nexport function fieldIntersection(a, b) {\n return hasIntersection(prefixGenerator(a), prefixGenerator(b));\n}\nexport function isNumeric(num) {\n return !isNaN(num);\n}\nexport function differArray(array, other) {\n if (array.length !== other.length) {\n return true;\n }\n array.sort();\n other.sort();\n for (let i = 0; i < array.length; i++) {\n if (other[i] !== array[i]) {\n return true;\n }\n }\n return false;\n}\n// This is a stricter version of Object.keys but with better types. See https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208\n… const keys = Object.keys;\nexport function vals(x) {\n const _vals = [];\n for (const k in x) {\n if (x.hasOwnProperty(k)) {\n _vals.push(x[k]);\n }\n }\n return _vals;\n}\nexport function entries(x) {\n const _entries = [];\n for (const k in x) {\n if (x.hasOwnProperty(k)) {\n _entries.push({\n key: k,\n value: x[k]\n });\n }\n }\n return _entries;\n}\nexport function flagKeys(f) {\n return keys(f);\n}\nexport function isBoolean(b) {\n return b === true || b === false;\n}\n/**\n * Convert a string into a valid variable name\n */\nexport function varName(s) {\n // Replace non-alphanumeric characters (anything besides a-zA-Z0-9_) with _\n const alphanumericS = s.replace(/\\W/g, '_');\n // Add _ if the string has leading numbers.\n return (s.match(/^\\d+/) ? '_' : '') + alphanumericS;\n}\nexport function logicalExpr(op, cb) {\n if (isLogicalNot(op)) {\n return '!(' + logicalExpr(op.not, cb) + ')';\n }\n else if (isLogicalAnd(op)) {\n return '(' + op.and.map((and) => logicalExpr(and, cb)).join(') && (') + ')';\n }\n else if (isLogicalOr(op)) {\n return '(' + op.or.map((or) => logicalExpr(or, cb)).join(') || (') + ')';\n }\n else {\n return cb(op);\n }\n}\n/**\n * Delete nested property of an object, and delete the ancestors of the property if they become empty.\n */\nexport function deleteNestedProperty(obj, orderedProps) {\n if (orderedProps.length === 0) {\n return true;\n }\n const prop = orderedProps.shift();\n if (deleteNestedProperty(obj[prop], orderedProps)) {\n delete obj[prop];\n }\n return keys(obj).length === 0;\n}\nexport function titlecase(s) {\n return s.charAt(0).toUpperCase() + s.substr(1);\n}\n/**\n * Converts a path to an access path with datum.\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nexport function accessPathWithDatum(path, datum = 'datum') {\n const pieces = splitAccessPath(path);\n const prefixes = [];\n for (let i = 1; i <= pieces.length; i++) {\n const prefix = `[${pieces\n .slice(0, i)\n .map(stringValue)\n .join('][')}]`;\n prefixes.push(`${datum}${prefix}`);\n }\n return prefixes.join(' && ');\n}\n/**\n * Return access with datum to the flattened field.\n *\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nexport function flatAccessWithDatum(path, datum = 'datum') {\n return `${datum}[${stringValue(splitAccessPath(path).join('.'))}]`;\n}\n/**\n * Replaces path accesses with access to non-nested field.\n * For example, `foo[\"bar\"].baz` becomes `foo\\\\.bar\\\\.baz`.\n */\nexport function replacePathInField(path) {\n return `${splitAccessPath(path)\n .map(p => p.replace('.', '\\\\.'))\n .join('\\\\.')}`;\n}\n/**\n * Remove path accesses with access from field.\n * For example, `foo[\"bar\"].baz` becomes `foo.bar.baz`.\n */\nexport function removePathFromField(path) {\n return `${splitAccessPath(path).join('.')}`;\n}\n/**\n * Count the depth of the path. Returns 1 for fields that are not nested.\n */\nexport function accessPathDepth(path) {\n if (!path) {\n return 0;\n }\n return splitAccessPath(path).length;\n}\n/**\n * This is a replacement for chained || for numeric properties or properties that respect null so that 0 will be included.\n */\nexport function getFirstDefined(...args) {\n for (const arg of args) {\n if (arg !== undefined) {\n return arg;\n }\n }\n return undefined;\n}\n// variable used to generate id\nlet idCounter = 42;\n/**\n * Returns a new random id every time it gets called.\n *\n * Has side effect!\n */\nexport function uniqueId(prefix) {\n const id = ++idCounter;\n return prefix ? String(prefix) + id : id;\n}\n/**\n * Resets the id counter used in uniqueId. This can be useful for testing.\n */\nexport function resetIdCounter() {\n idCounter = 42;\n}\nexport function internalField(name) {\n return isInternalField(name) ? name : `__${name}`;\n}\nexport function isInternalField(name) {\n return name.indexOf('__') === 0;\n}\n/**\n * Normalize angle to be within [0,360).\n */\nexport function normalizeAngle(angle) {\n return ((angle % 360) + 360) % 360;\n}\n//# sourceMappingURL=util.js.map","import { toSet } from 'vega-util';\nimport { contains, flagKeys } from './util';\nexport const AREA = 'area';\nexport const BAR = 'bar';\nexport const LINE = 'line';\nexport const POINT = 'point';\nexport const RECT = 'rect';\nexport const RULE = 'rule';\nexport const TEXT = 'text';\nexport const TICK = 'tick';\nexport const TRAIL = 'trail';\nexport const CIRCLE = 'circle';\nexport const SQUARE = 'square';\nexport const GEOSHAPE = 'geoshape';\n// Using mapped type to declare index, ensuring we always have all marks when we add more.\nconst MARK_INDEX = {\n area: 1,\n bar: 1,\n line: 1,\n point: 1,\n text: 1,\n tick: 1,\n trail: 1,\n rect: 1,\n geoshape: 1,\n rule: 1,\n circle: 1,\n square: 1\n};\nexport function isMark(m) {\n return !!MARK_INDEX[m];\n}\nexport function isPathMark(m) {\n return contains(['line', 'area', 'trail'], m);\n}\nexport const PRIMITIVE_MARKS = flagKeys(MARK_INDEX);\nexport function isMarkDef(mark) {\n return mark['type'];\n}\nconst PRIMITIVE_MARK_INDEX = toSet(PRIMITIVE_MARKS);\nexport function isPrimitiveMark(mark) {\n const markType = isMarkDef(mark) ? mark.type : mark;\n return markType in PRIMITIVE_MARK_INDEX;\n}\nexport const STROKE_CONFIG = [\n 'stroke',\n 'strokeWidth',\n 'strokeDash',\n 'strokeDashOffset',\n 'strokeOpacity',\n 'strokeJoin',\n 'strokeMiterLimit'\n];\nexport const FILL_CONFIG = ['fill', 'fillOpacity'];\nexport const FILL_STROKE_CONFIG = [].concat(STROKE_CONFIG, FILL_CONFIG);\nexport const VL_ONLY_MARK_CONFIG_PROPERTIES = ['filled', 'color', 'tooltip'];\nexport const VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = {\n area: ['line', 'point'],\n bar: ['binSpacing', 'continuousBandSize', 'discreteBandSize'],\n line: ['point'],\n text: ['shortTimeLabels'],\n tick: ['bandSize', 'thickness']\n};\nexport const defaultMarkConfig = {\n color: '#4c78a8',\n tooltip: { content: 'encoding' }\n};\nexport const defaultBarConfig = {\n binSpacing: 1,\n continuousBandSize: 5\n};\nexport const defaultTickConfig = {\n thickness: 1\n};\nexport function getMarkType(m) {\n return isMarkDef(m) ? m.type : m;\n}\n//# sourceMappingURL=mark.js.map","export function isUnitSpec(spec) {\n return !!spec['mark'];\n}\n//# sourceMappingURL=unit.js.map","import { getMarkType } from '../mark';\nimport { isUnitSpec } from '../spec/unit';\nexport class CompositeMarkNormalizer {\n constructor(name, run) {\n this.name = name;\n this.run = run;\n }\n hasMatchingType(spec) {\n if (isUnitSpec(spec)) {\n return getMarkType(spec.mark) === this.name;\n }\n return false;\n }\n}\n//# sourceMappingURL=base.js.map","import { isString, toSet } from 'vega-util';\nimport { contains, flagKeys } from './util';\nconst AGGREGATE_OP_INDEX = {\n argmax: 1,\n argmin: 1,\n average: 1,\n count: 1,\n distinct: 1,\n max: 1,\n mean: 1,\n median: 1,\n min: 1,\n missing: 1,\n q1: 1,\n q3: 1,\n ci0: 1,\n ci1: 1,\n stderr: 1,\n stdev: 1,\n stdevp: 1,\n sum: 1,\n valid: 1,\n values: 1,\n variance: 1,\n variancep: 1\n};\nexport function isArgminDef(a) {\n return !!a && !!a['argmin'];\n}\nexport function isArgmaxDef(a) {\n return !!a && !!a['argmax'];\n}\nexport const AGGREGATE_OPS = flagKeys(AGGREGATE_OP_INDEX);\nexport function isAggregateOp(a) {\n return isString(a) && !!AGGREGATE_OP_INDEX[a];\n}\nexport const COUNTING_OPS = ['count', 'valid', 'missing', 'distinct'];\nexport function isCountingAggregateOp(aggregate) {\n return aggregate && isString(aggregate) && contains(COUNTING_OPS, aggregate);\n}\nexport function isMinMaxOp(aggregate) {\n return aggregate && isString(aggregate) && contains(['min', 'max'], aggregate);\n}\n/** Additive-based aggregation operations. These can be applied to stack. */\nexport const SUM_OPS = ['count', 'sum', 'distinct', 'valid', 'missing'];\n/**\n * Aggregation operators that always produce values within the range [domainMin, domainMax].\n */\nexport const SHARED_DOMAIN_OPS = ['mean', 'average', 'median', 'q1', 'q3', 'min', 'max'];\nexport const SHARED_DOMAIN_OP_INDEX = toSet(SHARED_DOMAIN_OPS);\n//# sourceMappingURL=aggregate.js.map","/*\n * Constants and utilities for encoding channels (Visual variables)\n * such as 'x', 'y', 'color'.\n */\nimport * as tslib_1 from \"tslib\";\nimport { flagKeys } from './util';\n// Facet\nexport const ROW = 'row';\nexport const COLUMN = 'column';\nexport const FACET = 'facet';\n// Position\nexport const X = 'x';\nexport const Y = 'y';\nexport const X2 = 'x2';\nexport const Y2 = 'y2';\n// Geo Position\nexport const LATITUDE = 'latitude';\nexport const LONGITUDE = 'longitude';\nexport const LATITUDE2 = 'latitude2';\nexport const LONGITUDE2 = 'longitude2';\n// Mark property with scale\nexport const COLOR = 'color';\nexport const FILL = 'fill';\nexport const STROKE = 'stroke';\nexport const SHAPE = 'shape';\nexport const SIZE = 'size';\nexport const OPACITY = 'opacity';\nexport const FILLOPACITY = 'fillOpacity';\nexport const STROKEOPACITY = 'strokeOpacity';\nexport const STROKEWIDTH = 'strokeWidth';\n// Non-scale channel\nexport const TEXT = 'text';\nexport const ORDER = 'order';\nexport const DETAIL = 'detail';\nexport const KEY = 'key';\nexport const TOOLTIP = 'tooltip';\nexport const HREF = 'href';\nexport function isGeoPositionChannel(c) {\n switch (c) {\n case LATITUDE:\n case LATITUDE2:\n case LONGITUDE:\n case LONGITUDE2:\n return true;\n }\n return false;\n}\nexport function getPositionChannelFromLatLong(channel) {\n switch (channel) {\n case LATITUDE:\n return 'y';\n case LATITUDE2:\n return 'y2';\n case LONGITUDE:\n return 'x';\n case LONGITUDE2:\n return 'x2';\n }\n}\nexport const GEOPOSITION_CHANNEL_INDEX = {\n longitude: 1,\n longitude2: 1,\n latitude: 1,\n latitude2: 1\n};\nexport const GEOPOSITION_CHANNELS = flagKeys(GEOPOSITION_CHANNEL_INDEX);\nconst UNIT_CHANNEL_INDEX = Object.assign({ \n // position\n x: 1, y: 1, x2: 1, y2: 1 }, GEOPOSITION_CHANNEL_INDEX, { \n // color\n color: 1, fill: 1, stroke: 1, \n // other non-position with scale\n opacity: 1, fillOpacity: 1, strokeOpacity: 1, strokeWidth: 1, size: 1, shape: 1, \n // channels without scales\n order: 1, text: 1, detail: 1, key: 1, tooltip: 1, href: 1 });\nexport function isColorChannel(channel) {\n return channel === 'color' || channel === 'fill' || channel === 'stroke';\n}\nconst FACET_CHANNEL_INDEX = {\n row: 1,\n column: 1,\n facet: 1\n};\nexport const FACET_CHANNELS = flagKeys(FACET_CHANNEL_INDEX);\nconst CHANNEL_INDEX = Object.assign({}, UNIT_CHANNEL_INDEX, FACET_CHANNEL_INDEX);\nexport const CHANNELS = flagKeys(CHANNEL_INDEX);\nconst { order: _o, detail: _d } = CHANNEL_INDEX, SINGLE_DEF_CHANNEL_INDEX = tslib_1.__rest(CHANNEL_INDEX, [\"order\", \"detail\"]);\nconst { order: _o1, detail: _d1, row: _r, column: _c, facet: _f } = CHANNEL_INDEX, SINGLE_DEF_UNIT_CHANNEL_INDEX = tslib_1.__rest(CHANNEL_INDEX, [\"order\", \"detail\", \"row\", \"column\", \"facet\"]);\n/**\n * Channels that cannot have an array of channelDef.\n * model.fieldDef, getFieldDef only work for these channels.\n *\n * (The only two channels that can have an array of channelDefs are \"detail\" and \"order\".\n * Since there can be multiple fieldDefs for detail and order, getFieldDef/model.fieldDef\n * are not applicable for them. Similarly, selection projection won't work with \"detail\" and \"order\".)\n */\nexport const SINGLE_DEF_CHANNELS = flagKeys(SINGLE_DEF_CHANNEL_INDEX);\nexport const SINGLE_DEF_UNIT_CHANNELS = flagKeys(SINGLE_DEF_UNIT_CHANNEL_INDEX);\nexport function isSingleDefUnitChannel(str) {\n return !!SINGLE_DEF_UNIT_CHANNEL_INDEX[str];\n}\nexport function isChannel(str) {\n return !!CHANNEL_INDEX[str];\n}\nexport const SECONDARY_RANGE_CHANNEL = ['x2', 'y2', 'latitude2', 'longitude2'];\nexport function isSecondaryRangeChannel(c) {\n const main = getMainRangeChannel(c);\n return main !== c;\n}\nexport function getMainRangeChannel(channel) {\n switch (channel) {\n case 'x2':\n return 'x';\n case 'y2':\n return 'y';\n case 'latitude2':\n return 'latitude';\n case 'longitude2':\n return 'longitude';\n }\n return channel;\n}\n// CHANNELS without COLUMN, ROW\nexport const UNIT_CHANNELS = flagKeys(UNIT_CHANNEL_INDEX);\n// NONPOSITION_CHANNELS = UNIT_CHANNELS without X, Y, X2, Y2;\nconst { x: _x, y: _y, \n// x2 and y2 share the same scale as x and y\nx2: _x2, y2: _y2, latitude: _latitude, longitude: _longitude, latitude2: _latitude2, longitude2: _longitude2 } = UNIT_CHANNEL_INDEX, \n// The rest of unit channels then have scale\nNONPOSITION_CHANNEL_INDEX = tslib_1.__rest(UNIT_CHANNEL_INDEX, [\"x\", \"y\", \"x2\", \"y2\", \"latitude\", \"longitude\", \"latitude2\", \"longitude2\"]);\nexport const NONPOSITION_CHANNELS = flagKeys(NONPOSITION_CHANNEL_INDEX);\n// POSITION_SCALE_CHANNELS = X and Y;\nconst POSITION_SCALE_CHANNEL_INDEX = { x: 1, y: 1 };\nexport const POSITION_SCALE_CHANNELS = flagKeys(POSITION_SCALE_CHANNEL_INDEX);\n// NON_POSITION_SCALE_CHANNEL = SCALE_CHANNELS without X, Y\nconst { \n// x2 and y2 share the same scale as x and y\n// text and tooltip have format instead of scale,\n// href has neither format, nor scale\ntext: _t, tooltip: _tt, href: _hr, \n// detail and order have no scale\ndetail: _dd, key: _k, order: _oo } = NONPOSITION_CHANNEL_INDEX, NONPOSITION_SCALE_CHANNEL_INDEX = tslib_1.__rest(NONPOSITION_CHANNEL_INDEX, [\"text\", \"tooltip\", \"href\", \"detail\", \"key\", \"order\"]);\nexport const NONPOSITION_SCALE_CHANNELS = flagKeys(NONPOSITION_SCALE_CHANNEL_INDEX);\nexport function isNonPositionScaleChannel(channel) {\n return !!NONPOSITION_CHANNEL_INDEX[channel];\n}\n/**\n * @returns whether Vega supports legends for a particular channel\n */\nexport function supportLegend(channel) {\n switch (channel) {\n case COLOR:\n case FILL:\n case STROKE:\n case SIZE:\n case SHAPE:\n case OPACITY:\n return true;\n case FILLOPACITY:\n case STROKEOPACITY:\n case STROKEWIDTH:\n return false;\n }\n}\n// Declare SCALE_CHANNEL_INDEX\nconst SCALE_CHANNEL_INDEX = Object.assign({}, POSITION_SCALE_CHANNEL_INDEX, NONPOSITION_SCALE_CHANNEL_INDEX);\n/** List of channels with scales */\nexport const SCALE_CHANNELS = flagKeys(SCALE_CHANNEL_INDEX);\nexport function isScaleChannel(channel) {\n return !!SCALE_CHANNEL_INDEX[channel];\n}\n/**\n * Return whether a channel supports a particular mark type.\n * @param channel channel name\n * @param mark the mark type\n * @return whether the mark supports the channel\n */\nexport function supportMark(channel, mark) {\n return getSupportedMark(channel)[mark];\n}\n/**\n * Return a dictionary showing whether a channel supports mark type.\n * @param channel\n * @return A dictionary mapping mark types to 'always', 'binned', or undefined\n */\nfunction getSupportedMark(channel) {\n switch (channel) {\n case COLOR:\n case FILL:\n case STROKE:\n // falls through\n case DETAIL:\n case KEY:\n case TOOLTIP:\n case HREF:\n case ORDER: // TODO: revise (order might not support rect, which is not stackable?)\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n case STROKEWIDTH:\n // falls through\n case FACET:\n case ROW: // falls through\n case COLUMN:\n return {\n // all marks\n point: 'always',\n tick: 'always',\n rule: 'always',\n circle: 'always',\n square: 'always',\n bar: 'always',\n rect: 'always',\n line: 'always',\n trail: 'always',\n area: 'always',\n text: 'always',\n geoshape: 'always'\n };\n case X:\n case Y:\n case LATITUDE:\n case LONGITUDE:\n return {\n // all marks except geoshape. geoshape does not use X, Y -- it uses a projection\n point: 'always',\n tick: 'always',\n rule: 'always',\n circle: 'always',\n square: 'always',\n bar: 'always',\n rect: 'always',\n line: 'always',\n trail: 'always',\n area: 'always',\n text: 'always'\n };\n case X2:\n case Y2:\n case LATITUDE2:\n case LONGITUDE2:\n return {\n rule: 'always',\n bar: 'always',\n rect: 'always',\n area: 'always',\n circle: 'binned',\n point: 'binned',\n square: 'binned',\n tick: 'binned'\n };\n case SIZE:\n return {\n point: 'always',\n tick: 'always',\n rule: 'always',\n circle: 'always',\n square: 'always',\n bar: 'always',\n text: 'always',\n line: 'always',\n trail: 'always'\n };\n case SHAPE:\n return { point: 'always', geoshape: 'always' };\n case TEXT:\n return { text: 'always' };\n }\n}\nexport function rangeType(channel) {\n switch (channel) {\n case X:\n case Y:\n case SIZE:\n case STROKEWIDTH:\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // X2 and Y2 use X and Y scales, so they similarly have continuous range. [falls through]\n case X2:\n case Y2:\n return undefined;\n case FACET:\n case ROW:\n case COLUMN:\n case SHAPE:\n // TEXT, TOOLTIP, and HREF have no scale but have discrete output [falls through]\n case TEXT:\n case TOOLTIP:\n case HREF:\n return 'discrete';\n // Color can be either continuous or discrete, depending on scale type.\n case COLOR:\n case FILL:\n case STROKE:\n return 'flexible';\n // No scale, no range type.\n case LATITUDE:\n case LONGITUDE:\n case LATITUDE2:\n case LONGITUDE2:\n case DETAIL:\n case KEY:\n case ORDER:\n return undefined;\n }\n /* istanbul ignore next: should never reach here. */\n throw new Error('rangeType not implemented for ' + channel);\n}\n//# sourceMappingURL=channel.js.map","import { stringify } from '../util';\n/**\n * Collection of all Vega-Lite Error Messages\n */\nexport const INVALID_SPEC = 'Invalid spec';\n// FIT\nexport const FIT_NON_SINGLE = 'Autosize \"fit\" only works for single views and layered views.';\nexport const CANNOT_FIX_RANGE_STEP_WITH_FIT = 'Cannot use a fixed value of \"rangeStep\" when \"autosize\" is \"fit\".';\n// SELECTION\nexport function cannotProjectOnChannelWithoutField(channel) {\n return `Cannot project a selection on encoding channel \"${channel}\", which has no field.`;\n}\nexport function nearestNotSupportForContinuous(mark) {\n return `The \"nearest\" transform is not supported for ${mark} marks.`;\n}\nexport function selectionNotSupported(mark) {\n return `Selection not supported for ${mark} yet`;\n}\nexport function selectionNotFound(name) {\n return `Cannot find a selection named \"${name}\"`;\n}\nexport const SCALE_BINDINGS_CONTINUOUS = 'Scale bindings are currently only supported for scales with unbinned, continuous domains.';\nexport const NO_INIT_SCALE_BINDINGS = 'Selections bound to scales cannot be separately initialized.';\n// REPEAT\nexport function noSuchRepeatedValue(field) {\n return `Unknown repeated value \"${field}\".`;\n}\nexport function columnsNotSupportByRowCol(type) {\n return `The \"columns\" property cannot be used when \"${type}\" has nested row/column.`;\n}\n// CONCAT\nexport const CONCAT_CANNOT_SHARE_AXIS = 'Axes cannot be shared in concatenated views yet (https://github.com/vega/vega-lite/issues/2415)';\n// REPEAT\nexport const REPEAT_CANNOT_SHARE_AXIS = 'Axes cannot be shared in repeated views yet (https://github.com/vega/vega-lite/issues/2415)';\n// DATA\nexport function unrecognizedParse(p) {\n return `Unrecognized parse \"${p}\".`;\n}\nexport function differentParse(field, local, ancestor) {\n return `An ancestor parsed field \"${field}\" as ${ancestor} but a child wants to parse the field as ${local}.`;\n}\n// TRANSFORMS\nexport function invalidTransformIgnored(transform) {\n return `Ignoring an invalid transform: ${stringify(transform)}.`;\n}\nexport const NO_FIELDS_NEEDS_AS = 'If \"from.fields\" is not specified, \"as\" has to be a string that specifies the key to be used for the data from the secondary source.';\n// ENCODING & FACET\nexport function encodingOverridden(channels) {\n return `Layer's shared ${channels.join(',')} channel ${channels.length === 1 ? 'is' : 'are'} overriden`;\n}\nexport function projectionOverridden(opt) {\n const { parentProjection, projection } = opt;\n return `Layer's shared projection ${stringify(parentProjection)} is overridden by a child projection ${stringify(projection)}.`;\n}\nexport function primitiveChannelDef(channel, type, value) {\n return `Channel ${channel} is a ${type}. Converted to {value: ${stringify(value)}}.`;\n}\nexport function invalidFieldType(type) {\n return `Invalid field type \"${type}\"`;\n}\nexport function nonZeroScaleUsedWithLengthMark(mark, channel, opt) {\n const scaleText = opt.scaleType\n ? `${opt.scaleType} scale`\n : opt.zeroFalse\n ? 'scale with zero=false'\n : 'scale with custom domain that excludes zero';\n return `A ${scaleText} is used to encode ${mark}'s ${channel}. This can be misleading as the ${channel === 'x' ? 'width' : 'height'} of the ${mark} can be arbitrary based on the scale domain. You may want to use point mark instead.`;\n}\nexport function invalidFieldTypeForCountAggregate(type, aggregate) {\n return `Invalid field type \"${type}\" for aggregate: \"${aggregate}\", using \"quantitative\" instead.`;\n}\nexport function invalidAggregate(aggregate) {\n return `Invalid aggregation operator \"${aggregate}\"`;\n}\nexport function missingFieldType(channel, newType) {\n return `Missing type for channel \"${channel}\", using \"${newType}\" instead.`;\n}\nexport function droppingColor(type, opt) {\n const { fill, stroke } = opt;\n return (`Dropping color ${type} as the plot also has ` + (fill && stroke ? 'fill and stroke' : fill ? 'fill' : 'stroke'));\n}\nexport function emptyFieldDef(fieldDef, channel) {\n return `Dropping ${stringify(fieldDef)} from channel \"${channel}\" since it does not contain data field or value.`;\n}\nexport function latLongDeprecated(channel, type, newChannel) {\n return `${channel}-encoding with type ${type} is deprecated. Replacing with ${newChannel}-encoding.`;\n}\nexport const LINE_WITH_VARYING_SIZE = 'Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.';\nexport function incompatibleChannel(channel, markOrFacet, when) {\n return `${channel} dropped as it is incompatible with \"${markOrFacet}\"${when ? ` when ${when}` : ''}.`;\n}\nexport function invalidEncodingChannel(channel) {\n return `${channel}-encoding is dropped as ${channel} is not a valid encoding channel.`;\n}\nexport function facetChannelShouldBeDiscrete(channel) {\n return `${channel} encoding should be discrete (ordinal / nominal / binned).`;\n}\nexport function facetChannelDropped(channels) {\n return `Facet encoding dropped as ${channels.join(' and ')} ${channels.length > 1 ? 'are' : 'is'} also specified.`;\n}\nexport function discreteChannelCannotEncode(channel, type) {\n return `Using discrete channel \"${channel}\" to encode \"${type}\" field can be misleading as it does not encode ${type === 'ordinal' ? 'order' : 'magnitude'}.`;\n}\n// Mark\nexport const BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL = 'Bar mark should not be used with point scale when rangeStep is null. Please use band scale instead.';\nexport function lineWithRange(hasX2, hasY2) {\n const channels = hasX2 && hasY2 ? 'x2 and y2' : hasX2 ? 'x2' : 'y2';\n return `Line mark is for continuous lines and thus cannot be used with ${channels}. We will use the rule mark (line segments) instead.`;\n}\nexport function orientOverridden(original, actual) {\n return `Specified orient \"${original}\" overridden with \"${actual}\"`;\n}\n// SCALE\nexport const CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN = 'custom domain scale cannot be unioned with default field-based domain';\nexport function cannotUseScalePropertyWithNonColor(prop) {\n return `Cannot use the scale property \"${prop}\" with non-color channel.`;\n}\nexport function unaggregateDomainHasNoEffectForRawField(fieldDef) {\n return `Using unaggregated domain with raw field has no effect (${stringify(fieldDef)}).`;\n}\nexport function unaggregateDomainWithNonSharedDomainOp(aggregate) {\n return `Unaggregated domain not applicable for \"${aggregate}\" since it produces values outside the origin domain of the source data.`;\n}\nexport function unaggregatedDomainWithLogScale(fieldDef) {\n return `Unaggregated domain is currently unsupported for log scale (${stringify(fieldDef)}).`;\n}\nexport function cannotApplySizeToNonOrientedMark(mark) {\n return `Cannot apply size to non-oriented mark \"${mark}\".`;\n}\nexport function rangeStepDropped(channel) {\n return `rangeStep for \"${channel}\" is dropped as top-level ${channel === 'x' ? 'width' : 'height'} is provided.`;\n}\nexport function scaleTypeNotWorkWithChannel(channel, scaleType, defaultScaleType) {\n return `Channel \"${channel}\" does not work with \"${scaleType}\" scale. We are using \"${defaultScaleType}\" scale instead.`;\n}\nexport function scaleTypeNotWorkWithFieldDef(scaleType, defaultScaleType) {\n return `FieldDef does not work with \"${scaleType}\" scale. We are using \"${defaultScaleType}\" scale instead.`;\n}\nexport function scalePropertyNotWorkWithScaleType(scaleType, propName, channel) {\n return `${channel}-scale's \"${propName}\" is dropped as it does not work with ${scaleType} scale.`;\n}\nexport function scaleTypeNotWorkWithMark(mark, scaleType) {\n return `Scale type \"${scaleType}\" does not work with mark \"${mark}\".`;\n}\nexport function mergeConflictingProperty(property, propertyOf, v1, v2) {\n return `Conflicting ${propertyOf.toString()} property \"${property.toString()}\" (${stringify(v1)} and ${stringify(v2)}). Using ${stringify(v1)}.`;\n}\nexport function independentScaleMeansIndependentGuide(channel) {\n return `Setting the scale to be independent for \"${channel}\" means we also have to set the guide (axis or legend) to be independent.`;\n}\nexport function domainSortDropped(sort) {\n return `Dropping sort property ${stringify(sort)} as unioned domains only support boolean or op 'count'.`;\n}\nexport const UNABLE_TO_MERGE_DOMAINS = 'Unable to merge domains';\nexport const MORE_THAN_ONE_SORT = 'Domains that should be unioned has conflicting sort properties. Sort will be set to true.';\n// AXIS\nexport const INVALID_CHANNEL_FOR_AXIS = 'Invalid channel for axis.';\n// STACK\nexport function cannotStackRangedMark(channel) {\n return `Cannot stack \"${channel}\" if there is already \"${channel}2\"`;\n}\nexport function cannotStackNonLinearScale(scaleType) {\n return `Cannot stack non-linear scale (${scaleType})`;\n}\nexport function stackNonSummativeAggregate(aggregate) {\n return `Stacking is applied even though the aggregate function is non-summative (\"${aggregate}\")`;\n}\n// TIMEUNIT\nexport function invalidTimeUnit(unitName, value) {\n return `Invalid ${unitName}: ${stringify(value)}`;\n}\nexport function dayReplacedWithDate(fullTimeUnit) {\n return `Time unit \"${fullTimeUnit}\" is not supported. We are replacing it with ${fullTimeUnit.replace('day', 'date')}.`;\n}\nexport function droppedDay(d) {\n return `Dropping day from datetime ${stringify(d)} as day cannot be combined with other units.`;\n}\nexport function errorBarCenterAndExtentAreNotNeeded(center, extent) {\n return `${extent ? 'extent ' : ''}${extent && center ? 'and ' : ''}${center ? 'center ' : ''}${extent && center ? 'are ' : 'is '}not needed when data are aggregated.`;\n}\nexport function errorBarCenterIsUsedWithWrongExtent(center, extent, mark) {\n return `${center} is not usually used with ${extent} for ${mark}.`;\n}\nexport function errorBarContinuousAxisHasCustomizedAggregate(aggregate, compositeMark) {\n return `Continuous axis should not have customized aggregation function ${aggregate}; ${compositeMark} already agregates the axis.`;\n}\nexport function errorBarCenterIsNotNeeded(extent, mark) {\n return `Center is not needed to be specified in ${mark} when extent is ${extent}.`;\n}\nexport function errorBand1DNotSupport(property) {\n return `1D error band does not support ${property}`;\n}\n// CHANNEL\nexport function channelRequiredForBinned(channel) {\n return `Channel ${channel} is required for \"binned\" bin`;\n}\nexport function domainRequiredForThresholdScale(channel) {\n return `Domain for ${channel} is required for threshold scale`;\n}\n//# sourceMappingURL=message.js.map","/**\n * Vega-Lite's singleton logger utility.\n */\nimport { logger, Warn } from 'vega-util';\nimport * as message_ from './message';\nexport const message = message_;\n/**\n * Main (default) Vega Logger instance for Vega-Lite\n */\nconst main = logger(Warn);\nlet current = main;\n/**\n * Logger tool for checking if the code throws correct warning\n */\nexport class LocalLogger {\n constructor() {\n this.warns = [];\n this.infos = [];\n this.debugs = [];\n }\n level() {\n return this;\n }\n warn(...args) {\n this.warns.push(...args);\n return this;\n }\n info(...args) {\n this.infos.push(...args);\n return this;\n }\n debug(...args) {\n this.debugs.push(...args);\n return this;\n }\n error(...args) {\n throw Error(...args);\n return this; // @ts-ignore\n }\n}\nexport function wrap(f) {\n return () => {\n current = new LocalLogger();\n f(current);\n reset();\n };\n}\n/**\n * Set the singleton logger to be a custom logger\n */\nexport function set(newLogger) {\n current = newLogger;\n return current;\n}\n/**\n * Reset the main logger to use the default Vega Logger\n */\nexport function reset() {\n current = main;\n return current;\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function warn(..._) {\n current.warn.apply(current, arguments);\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function info(..._) {\n current.info.apply(current, arguments);\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function debug(..._) {\n current.debug.apply(current, arguments);\n}\n//# sourceMappingURL=index.js.map","// DateTime definition object\nimport { isNumber } from 'vega-util';\nimport * as log from './log';\nimport { duplicate, keys } from './util';\n/*\n * A designated year that starts on Sunday.\n */\nconst SUNDAY_YEAR = 2006;\nexport function isDateTime(o) {\n return (!!o &&\n (!!o.year ||\n !!o.quarter ||\n !!o.month ||\n !!o.date ||\n !!o.day ||\n !!o.hours ||\n !!o.minutes ||\n !!o.seconds ||\n !!o.milliseconds));\n}\nexport const MONTHS = [\n 'january',\n 'february',\n 'march',\n 'april',\n 'may',\n 'june',\n 'july',\n 'august',\n 'september',\n 'october',\n 'november',\n 'december'\n];\nexport const SHORT_MONTHS = MONTHS.map(m => m.substr(0, 3));\nexport const DAYS = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nexport const SHORT_DAYS = DAYS.map(d => d.substr(0, 3));\nfunction normalizeQuarter(q) {\n if (isNumber(q)) {\n if (q > 4) {\n log.warn(log.message.invalidTimeUnit('quarter', q));\n }\n // We accept 1-based quarter, so need to readjust to 0-based quarter\n return (q - 1).toString();\n }\n else {\n // Invalid quarter\n throw new Error(log.message.invalidTimeUnit('quarter', q));\n }\n}\nfunction normalizeMonth(m) {\n if (isNumber(m)) {\n // We accept 1-based month, so need to readjust to 0-based month\n return (m - 1).toString();\n }\n else {\n const lowerM = m.toLowerCase();\n const monthIndex = MONTHS.indexOf(lowerM);\n if (monthIndex !== -1) {\n return monthIndex + ''; // 0 for january, ...\n }\n const shortM = lowerM.substr(0, 3);\n const shortMonthIndex = SHORT_MONTHS.indexOf(shortM);\n if (shortMonthIndex !== -1) {\n return shortMonthIndex + '';\n }\n // Invalid month\n throw new Error(log.message.invalidTimeUnit('month', m));\n }\n}\nfunction normalizeDay(d) {\n if (isNumber(d)) {\n // mod so that this can be both 0-based where 0 = sunday\n // and 1-based where 7=sunday\n return (d % 7) + '';\n }\n else {\n const lowerD = d.toLowerCase();\n const dayIndex = DAYS.indexOf(lowerD);\n if (dayIndex !== -1) {\n return dayIndex + ''; // 0 for january, ...\n }\n const shortD = lowerD.substr(0, 3);\n const shortDayIndex = SHORT_DAYS.indexOf(shortD);\n if (shortDayIndex !== -1) {\n return shortDayIndex + '';\n }\n // Invalid day\n throw new Error(log.message.invalidTimeUnit('day', d));\n }\n}\n/**\n * Return Vega Expression for a particular date time.\n * @param d\n * @param normalize whether to normalize quarter, month, day.\n */\nexport function dateTimeExpr(d, normalize = false) {\n const units = [];\n if (normalize && d.day !== undefined) {\n if (keys(d).length > 1) {\n log.warn(log.message.droppedDay(d));\n d = duplicate(d);\n delete d.day;\n }\n }\n if (d.year !== undefined) {\n units.push(d.year);\n }\n else if (d.day !== undefined) {\n // Set year to 2006 for working with day since January 1 2006 is a Sunday\n units.push(SUNDAY_YEAR);\n }\n else {\n units.push(0);\n }\n if (d.month !== undefined) {\n const month = normalize ? normalizeMonth(d.month) : d.month;\n units.push(month);\n }\n else if (d.quarter !== undefined) {\n const quarter = normalize ? normalizeQuarter(d.quarter) : d.quarter;\n units.push(quarter + '*3');\n }\n else {\n units.push(0); // months start at zero in JS\n }\n if (d.date !== undefined) {\n units.push(d.date);\n }\n else if (d.day !== undefined) {\n // HACK: Day only works as a standalone unit\n // This is only correct because we always set year to 2006 for day\n const day = normalize ? normalizeDay(d.day) : d.day;\n units.push(day + '+1');\n }\n else {\n units.push(1); // Date starts at 1 in JS\n }\n // Note: can't use TimeUnit enum here as importing it will create\n // circular dependency problem!\n for (const timeUnit of ['hours', 'minutes', 'seconds', 'milliseconds']) {\n if (d[timeUnit] !== undefined) {\n units.push(d[timeUnit]);\n }\n else {\n units.push(0);\n }\n }\n if (d.utc) {\n return `utc(${units.join(', ')})`;\n }\n else {\n return `datetime(${units.join(', ')})`;\n }\n}\n//# sourceMappingURL=datetime.js.map","export function isFacetMapping(f) {\n return !!f['row'] || !!f['column'];\n}\nexport function isFacetFieldDef(channelDef) {\n return !!channelDef && !!channelDef['header'];\n}\nexport function isFacetSpec(spec) {\n return spec['facet'] !== undefined;\n}\n//# sourceMappingURL=facet.js.map","import { dateTimeExpr } from './datetime';\nimport * as log from './log';\nimport { accessPathWithDatum, flagKeys } from './util';\nexport var TimeUnit;\n(function (TimeUnit) {\n TimeUnit.YEAR = 'year';\n TimeUnit.MONTH = 'month';\n TimeUnit.DAY = 'day';\n TimeUnit.DATE = 'date';\n TimeUnit.HOURS = 'hours';\n TimeUnit.MINUTES = 'minutes';\n TimeUnit.SECONDS = 'seconds';\n TimeUnit.MILLISECONDS = 'milliseconds';\n TimeUnit.YEARMONTH = 'yearmonth';\n TimeUnit.YEARMONTHDATE = 'yearmonthdate';\n TimeUnit.YEARMONTHDATEHOURS = 'yearmonthdatehours';\n TimeUnit.YEARMONTHDATEHOURSMINUTES = 'yearmonthdatehoursminutes';\n TimeUnit.YEARMONTHDATEHOURSMINUTESSECONDS = 'yearmonthdatehoursminutesseconds';\n // MONTHDATE and MONTHDATEHOURS always include 29 February since we use year 0th (which is a leap year);\n TimeUnit.MONTHDATE = 'monthdate';\n TimeUnit.MONTHDATEHOURS = 'monthdatehours';\n TimeUnit.HOURSMINUTES = 'hoursminutes';\n TimeUnit.HOURSMINUTESSECONDS = 'hoursminutesseconds';\n TimeUnit.MINUTESSECONDS = 'minutesseconds';\n TimeUnit.SECONDSMILLISECONDS = 'secondsmilliseconds';\n TimeUnit.QUARTER = 'quarter';\n TimeUnit.YEARQUARTER = 'yearquarter';\n TimeUnit.QUARTERMONTH = 'quartermonth';\n TimeUnit.YEARQUARTERMONTH = 'yearquartermonth';\n TimeUnit.UTCYEAR = 'utcyear';\n TimeUnit.UTCMONTH = 'utcmonth';\n TimeUnit.UTCDAY = 'utcday';\n TimeUnit.UTCDATE = 'utcdate';\n TimeUnit.UTCHOURS = 'utchours';\n TimeUnit.UTCMINUTES = 'utcminutes';\n TimeUnit.UTCSECONDS = 'utcseconds';\n TimeUnit.UTCMILLISECONDS = 'utcmilliseconds';\n TimeUnit.UTCYEARMONTH = 'utcyearmonth';\n TimeUnit.UTCYEARMONTHDATE = 'utcyearmonthdate';\n TimeUnit.UTCYEARMONTHDATEHOURS = 'utcyearmonthdatehours';\n TimeUnit.UTCYEARMONTHDATEHOURSMINUTES = 'utcyearmonthdatehoursminutes';\n TimeUnit.UTCYEARMONTHDATEHOURSMINUTESSECONDS = 'utcyearmonthdatehoursminutesseconds';\n // UTCMONTHDATE and UTCMONTHDATEHOURS always include 29 February since we use year 0th (which is a leap year);\n TimeUnit.UTCMONTHDATE = 'utcmonthdate';\n TimeUnit.UTCMONTHDATEHOURS = 'utcmonthdatehours';\n TimeUnit.UTCHOURSMINUTES = 'utchoursminutes';\n TimeUnit.UTCHOURSMINUTESSECONDS = 'utchoursminutesseconds';\n TimeUnit.UTCMINUTESSECONDS = 'utcminutesseconds';\n TimeUnit.UTCSECONDSMILLISECONDS = 'utcsecondsmilliseconds';\n TimeUnit.UTCQUARTER = 'utcquarter';\n TimeUnit.UTCYEARQUARTER = 'utcyearquarter';\n TimeUnit.UTCQUARTERMONTH = 'utcquartermonth';\n TimeUnit.UTCYEARQUARTERMONTH = 'utcyearquartermonth';\n})(TimeUnit || (TimeUnit = {}));\n/** Time Unit that only corresponds to only one part of Date objects. */\nconst LOCAL_SINGLE_TIMEUNIT_INDEX = {\n year: 1,\n quarter: 1,\n month: 1,\n day: 1,\n date: 1,\n hours: 1,\n minutes: 1,\n seconds: 1,\n milliseconds: 1\n};\nexport const TIMEUNIT_PARTS = flagKeys(LOCAL_SINGLE_TIMEUNIT_INDEX);\nexport function isLocalSingleTimeUnit(timeUnit) {\n return !!LOCAL_SINGLE_TIMEUNIT_INDEX[timeUnit];\n}\nconst UTC_SINGLE_TIMEUNIT_INDEX = {\n utcyear: 1,\n utcquarter: 1,\n utcmonth: 1,\n utcday: 1,\n utcdate: 1,\n utchours: 1,\n utcminutes: 1,\n utcseconds: 1,\n utcmilliseconds: 1\n};\nexport function isUtcSingleTimeUnit(timeUnit) {\n return !!UTC_SINGLE_TIMEUNIT_INDEX[timeUnit];\n}\nconst LOCAL_MULTI_TIMEUNIT_INDEX = {\n yearquarter: 1,\n yearquartermonth: 1,\n yearmonth: 1,\n yearmonthdate: 1,\n yearmonthdatehours: 1,\n yearmonthdatehoursminutes: 1,\n yearmonthdatehoursminutesseconds: 1,\n quartermonth: 1,\n monthdate: 1,\n monthdatehours: 1,\n hoursminutes: 1,\n hoursminutesseconds: 1,\n minutesseconds: 1,\n secondsmilliseconds: 1\n};\nconst UTC_MULTI_TIMEUNIT_INDEX = {\n utcyearquarter: 1,\n utcyearquartermonth: 1,\n utcyearmonth: 1,\n utcyearmonthdate: 1,\n utcyearmonthdatehours: 1,\n utcyearmonthdatehoursminutes: 1,\n utcyearmonthdatehoursminutesseconds: 1,\n utcquartermonth: 1,\n utcmonthdate: 1,\n utcmonthdatehours: 1,\n utchoursminutes: 1,\n utchoursminutesseconds: 1,\n utcminutesseconds: 1,\n utcsecondsmilliseconds: 1\n};\nconst UTC_TIMEUNIT_INDEX = Object.assign({}, UTC_SINGLE_TIMEUNIT_INDEX, UTC_MULTI_TIMEUNIT_INDEX);\nexport function isUTCTimeUnit(t) {\n return !!UTC_TIMEUNIT_INDEX[t];\n}\nexport function getLocalTimeUnit(t) {\n return t.substr(3);\n}\nconst TIMEUNIT_INDEX = Object.assign({}, LOCAL_SINGLE_TIMEUNIT_INDEX, UTC_SINGLE_TIMEUNIT_INDEX, LOCAL_MULTI_TIMEUNIT_INDEX, UTC_MULTI_TIMEUNIT_INDEX);\nexport const TIMEUNITS = flagKeys(TIMEUNIT_INDEX);\nexport function isTimeUnit(t) {\n return !!TIMEUNIT_INDEX[t];\n}\nconst SET_DATE_METHOD = {\n year: 'setFullYear',\n month: 'setMonth',\n date: 'setDate',\n hours: 'setHours',\n minutes: 'setMinutes',\n seconds: 'setSeconds',\n milliseconds: 'setMilliseconds',\n // Day and quarter have their own special cases\n quarter: null,\n day: null\n};\n/**\n * Converts a date to only have the measurements relevant to the specified unit\n * i.e. ('yearmonth', '2000-12-04 07:58:14') -> '2000-12-01 00:00:00'\n * Note: the base date is Jan 01 1900 00:00:00\n */\nexport function convert(unit, date) {\n const isUTC = isUTCTimeUnit(unit);\n const result = isUTC\n ? // start with uniform date\n new Date(Date.UTC(1972, 0, 1, 0, 0, 0, 0)) // 1972 is the first leap year after 1970, the start of unix time\n : new Date(1972, 0, 1, 0, 0, 0, 0);\n for (const timeUnitPart of TIMEUNIT_PARTS) {\n if (containsTimeUnit(unit, timeUnitPart)) {\n switch (timeUnitPart) {\n case TimeUnit.DAY:\n throw new Error(\"Cannot convert to TimeUnits containing 'day'\");\n case TimeUnit.QUARTER: {\n const { getDateMethod, setDateMethod } = dateMethods('month', isUTC);\n // indicate quarter by setting month to be the first of the quarter i.e. may (4) -> april (3)\n result[setDateMethod](Math.floor(date[getDateMethod]() / 3) * 3);\n break;\n }\n default: {\n const { getDateMethod, setDateMethod } = dateMethods(timeUnitPart, isUTC);\n result[setDateMethod](date[getDateMethod]());\n }\n }\n }\n }\n return result;\n}\nfunction dateMethods(singleUnit, isUtc) {\n const rawSetDateMethod = SET_DATE_METHOD[singleUnit];\n const setDateMethod = isUtc ? 'setUTC' + rawSetDateMethod.substr(3) : rawSetDateMethod;\n const getDateMethod = 'get' + (isUtc ? 'UTC' : '') + rawSetDateMethod.substr(3);\n return { setDateMethod, getDateMethod };\n}\nexport function getTimeUnitParts(timeUnit) {\n return TIMEUNIT_PARTS.reduce((parts, part) => {\n if (containsTimeUnit(timeUnit, part)) {\n return [...parts, part];\n }\n return parts;\n }, []);\n}\n/** Returns true if fullTimeUnit contains the timeUnit, false otherwise. */\nexport function containsTimeUnit(fullTimeUnit, timeUnit) {\n const index = fullTimeUnit.indexOf(timeUnit);\n return (index > -1 && (timeUnit !== TimeUnit.SECONDS || index === 0 || fullTimeUnit.charAt(index - 1) !== 'i') // exclude milliseconds\n );\n}\n/**\n * Returns Vega expresssion for a given timeUnit and fieldRef\n */\nexport function fieldExpr(fullTimeUnit, field) {\n const fieldRef = accessPathWithDatum(field);\n const utc = isUTCTimeUnit(fullTimeUnit) ? 'utc' : '';\n function func(timeUnit) {\n if (timeUnit === TimeUnit.QUARTER) {\n // quarter starting at 0 (0,3,6,9).\n return `(${utc}quarter(${fieldRef})-1)`;\n }\n else {\n return `${utc}${timeUnit}(${fieldRef})`;\n }\n }\n const d = TIMEUNIT_PARTS.reduce((dateExpr, tu) => {\n if (containsTimeUnit(fullTimeUnit, tu)) {\n dateExpr[tu] = func(tu);\n }\n return dateExpr;\n }, {});\n return dateTimeExpr(d);\n}\nexport function getDateTimeComponents(timeUnit, shortTimeLabels) {\n if (!timeUnit) {\n return undefined;\n }\n const dateComponents = [];\n const hasYear = containsTimeUnit(timeUnit, TimeUnit.YEAR);\n if (containsTimeUnit(timeUnit, TimeUnit.MONTH)) {\n // By default use short month name\n dateComponents.push(shortTimeLabels !== false ? '%b' : '%B');\n }\n if (containsTimeUnit(timeUnit, TimeUnit.DAY)) {\n dateComponents.push(shortTimeLabels ? '%a' : '%A');\n }\n else if (containsTimeUnit(timeUnit, TimeUnit.DATE)) {\n dateComponents.push('%d' + (hasYear ? ',' : '')); // add comma if there is year\n }\n if (hasYear) {\n dateComponents.push(shortTimeLabels ? '%y' : '%Y');\n }\n const timeComponents = [];\n if (containsTimeUnit(timeUnit, TimeUnit.HOURS)) {\n timeComponents.push('%H');\n }\n if (containsTimeUnit(timeUnit, TimeUnit.MINUTES)) {\n timeComponents.push('%M');\n }\n if (containsTimeUnit(timeUnit, TimeUnit.SECONDS)) {\n timeComponents.push('%S');\n }\n if (containsTimeUnit(timeUnit, TimeUnit.MILLISECONDS)) {\n timeComponents.push('%L');\n }\n const dateTimeComponents = [];\n if (dateComponents.length > 0) {\n dateTimeComponents.push(dateComponents.join(' '));\n }\n if (timeComponents.length > 0) {\n dateTimeComponents.push(timeComponents.join(':'));\n }\n return dateTimeComponents;\n}\n/**\n * returns the signal expression used for axis labels for a time unit\n */\nexport function formatExpression(timeUnit, field, shortTimeLabels, isUTCScale) {\n if (!timeUnit) {\n return undefined;\n }\n const dateTimeComponents = getDateTimeComponents(timeUnit, shortTimeLabels);\n let expression = '';\n if (containsTimeUnit(timeUnit, TimeUnit.QUARTER)) {\n // special expression for quarter as prefix\n expression = `'Q' + quarter(${field})`;\n }\n if (dateTimeComponents.length > 0) {\n if (expression) {\n // Add space between quarter and main time format\n expression += ` + ' ' + `;\n }\n // We only use utcFormat for utc scale\n // For utc time units, the data is already converted as a part of timeUnit transform.\n // Thus, utc time units should use timeFormat to avoid shifting the time twice.\n if (isUTCScale) {\n expression += `utcFormat(${field}, '${dateTimeComponents.join(' ')}')`;\n }\n else {\n expression += `timeFormat(${field}, '${dateTimeComponents.join(' ')}')`;\n }\n }\n // If expression is still an empty string, return undefined instead.\n return expression || undefined;\n}\nexport function normalizeTimeUnit(timeUnit) {\n if (timeUnit !== 'day' && timeUnit.indexOf('day') >= 0) {\n log.warn(log.message.dayReplacedWithDate(timeUnit));\n return timeUnit.replace('day', 'date');\n }\n return timeUnit;\n}\n//# sourceMappingURL=timeunit.js.map","/** Constants and utilities for data type */\n/** Data type based on level of measurement */\nexport const TYPE_INDEX = {\n quantitative: 1,\n ordinal: 1,\n temporal: 1,\n nominal: 1,\n geojson: 1\n};\nexport function isType(t) {\n return !!TYPE_INDEX[t];\n}\nexport const QUANTITATIVE = 'quantitative';\nexport const ORDINAL = 'ordinal';\nexport const TEMPORAL = 'temporal';\nexport const NOMINAL = 'nominal';\nexport const GEOJSON = 'geojson';\n/**\n * Get full, lowercase type name for a given type.\n * @param type\n * @return Full type name.\n */\nexport function getFullName(type) {\n if (type) {\n type = type.toLowerCase();\n switch (type) {\n case 'q':\n case QUANTITATIVE:\n return 'quantitative';\n case 't':\n case TEMPORAL:\n return 'temporal';\n case 'o':\n case ORDINAL:\n return 'ordinal';\n case 'n':\n case NOMINAL:\n return 'nominal';\n case GEOJSON:\n return 'geojson';\n }\n }\n // If we get invalid input, return undefined type.\n return undefined;\n}\n//# sourceMappingURL=type.js.map","import * as tslib_1 from \"tslib\";\n// Declaration and utility for variants of a field definition object\nimport { isArray, isBoolean, isNumber, isString } from 'vega-util';\nimport { isAggregateOp, isArgmaxDef, isArgminDef, isCountingAggregateOp } from './aggregate';\nimport { autoMaxBins, binToString, isBinned, isBinning } from './bin';\nimport { isScaleChannel, isSecondaryRangeChannel, POSITION_SCALE_CHANNELS, rangeType } from './channel';\nimport { dateTimeExpr, isDateTime } from './datetime';\nimport * as log from './log';\nimport { isFacetFieldDef } from './spec/facet';\nimport { getLocalTimeUnit, getTimeUnitParts, isLocalSingleTimeUnit, isUtcSingleTimeUnit, normalizeTimeUnit } from './timeunit';\nimport { getFullName, QUANTITATIVE } from './type';\nimport { contains, flatAccessWithDatum, getFirstDefined, internalField, replacePathInField, titlecase } from './util';\nexport function isConditionalSelection(c) {\n return c['selection'];\n}\nexport function isRepeatRef(field) {\n return field && !isString(field) && 'repeat' in field;\n}\nexport function toFieldDefBase(fieldDef) {\n const { field, timeUnit, bin, aggregate } = fieldDef;\n return Object.assign({}, (timeUnit ? { timeUnit } : {}), (bin ? { bin } : {}), (aggregate ? { aggregate } : {}), { field });\n}\nexport function isSortableFieldDef(fieldDef) {\n return isTypedFieldDef(fieldDef) && !!fieldDef['sort'];\n}\nexport function isConditionalDef(channelDef) {\n return !!channelDef && !!channelDef.condition;\n}\n/**\n * Return if a channelDef is a ConditionalValueDef with ConditionFieldDef\n */\nexport function hasConditionalFieldDef(channelDef) {\n return !!channelDef && !!channelDef.condition && !isArray(channelDef.condition) && isFieldDef(channelDef.condition);\n}\nexport function hasConditionalValueDef(channelDef) {\n return !!channelDef && !!channelDef.condition && (isArray(channelDef.condition) || isValueDef(channelDef.condition));\n}\nexport function isFieldDef(channelDef) {\n return !!channelDef && (!!channelDef['field'] || channelDef['aggregate'] === 'count');\n}\nexport function isTypedFieldDef(channelDef) {\n return !!channelDef && ((!!channelDef['field'] && !!channelDef['type']) || channelDef['aggregate'] === 'count');\n}\nexport function isStringFieldDef(channelDef) {\n return isFieldDef(channelDef) && isString(channelDef.field);\n}\nexport function isValueDef(channelDef) {\n return channelDef && 'value' in channelDef && channelDef['value'] !== undefined;\n}\nexport function isScaleFieldDef(channelDef) {\n return !!channelDef && (!!channelDef['scale'] || !!channelDef['sort']);\n}\nexport function isPositionFieldDef(channelDef) {\n return !!channelDef && (!!channelDef['axis'] || !!channelDef['stack'] || !!channelDef['impute']);\n}\nexport function isMarkPropFieldDef(channelDef) {\n return !!channelDef && !!channelDef['legend'];\n}\nexport function isTextFieldDef(channelDef) {\n return !!channelDef && !!channelDef['format'];\n}\nfunction isOpFieldDef(fieldDef) {\n return !!fieldDef['op'];\n}\n/**\n * Get a Vega field reference from a Vega-Lite field def.\n */\nexport function vgField(fieldDef, opt = {}) {\n let field = fieldDef.field;\n const prefix = opt.prefix;\n let suffix = opt.suffix;\n let argAccessor = ''; // for accessing argmin/argmax field at the end without getting escaped\n if (isCount(fieldDef)) {\n field = internalField('count');\n }\n else {\n let fn;\n if (!opt.nofn) {\n if (isOpFieldDef(fieldDef)) {\n fn = fieldDef.op;\n }\n else {\n const { bin, aggregate, timeUnit } = fieldDef;\n if (isBinning(bin)) {\n fn = binToString(bin);\n suffix = (opt.binSuffix || '') + (opt.suffix || '');\n }\n else if (aggregate) {\n if (isArgmaxDef(aggregate)) {\n argAccessor = `.${field}`;\n field = `argmax_${aggregate.argmax}`;\n }\n else if (isArgminDef(aggregate)) {\n argAccessor = `.${field}`;\n field = `argmin_${aggregate.argmin}`;\n }\n else {\n fn = String(aggregate);\n }\n }\n else if (timeUnit) {\n fn = String(timeUnit);\n }\n }\n }\n if (fn) {\n field = field ? `${fn}_${field}` : fn;\n }\n }\n if (suffix) {\n field = `${field}_${suffix}`;\n }\n if (prefix) {\n field = `${prefix}_${field}`;\n }\n if (opt.forAs) {\n return field;\n }\n else if (opt.expr) {\n // Expression to access flattened field. No need to escape dots.\n return flatAccessWithDatum(field, opt.expr) + argAccessor;\n }\n else {\n // We flattened all fields so paths should have become dot.\n return replacePathInField(field) + argAccessor;\n }\n}\nexport function isDiscrete(fieldDef) {\n switch (fieldDef.type) {\n case 'nominal':\n case 'ordinal':\n case 'geojson':\n return true;\n case 'quantitative':\n return !!fieldDef.bin;\n case 'temporal':\n return false;\n }\n throw new Error(log.message.invalidFieldType(fieldDef.type));\n}\nexport function isContinuous(fieldDef) {\n return !isDiscrete(fieldDef);\n}\nexport function isCount(fieldDef) {\n return fieldDef.aggregate === 'count';\n}\nexport function verbalTitleFormatter(fieldDef, config) {\n const { field, bin, timeUnit, aggregate } = fieldDef;\n if (aggregate === 'count') {\n return config.countTitle;\n }\n else if (isBinning(bin)) {\n return `${field} (binned)`;\n }\n else if (timeUnit) {\n const units = getTimeUnitParts(timeUnit).join('-');\n return `${field} (${units})`;\n }\n else if (aggregate) {\n if (isArgmaxDef(aggregate)) {\n return `${field} for max ${aggregate.argmax}`;\n }\n else if (isArgminDef(aggregate)) {\n return `${field} for min ${aggregate.argmin}`;\n }\n else {\n return `${titlecase(aggregate)} of ${field}`;\n }\n }\n return field;\n}\nexport function functionalTitleFormatter(fieldDef) {\n const { aggregate, bin, timeUnit, field } = fieldDef;\n if (isArgmaxDef(aggregate)) {\n return `${field} for argmax(${aggregate.argmax})`;\n }\n else if (isArgminDef(aggregate)) {\n return `${field} for argmin(${aggregate.argmin})`;\n }\n const fn = aggregate || timeUnit || (isBinning(bin) && 'bin');\n if (fn) {\n return fn.toUpperCase() + '(' + field + ')';\n }\n else {\n return field;\n }\n}\nexport const defaultTitleFormatter = (fieldDef, config) => {\n switch (config.fieldTitle) {\n case 'plain':\n return fieldDef.field;\n case 'functional':\n return functionalTitleFormatter(fieldDef);\n default:\n return verbalTitleFormatter(fieldDef, config);\n }\n};\nlet titleFormatter = defaultTitleFormatter;\nexport function setTitleFormatter(formatter) {\n titleFormatter = formatter;\n}\nexport function resetTitleFormatter() {\n setTitleFormatter(defaultTitleFormatter);\n}\nexport function title(fieldDef, config, { allowDisabling, includeDefault = true }) {\n const guide = getGuide(fieldDef) || {};\n const guideTitle = guide.title;\n const def = includeDefault ? defaultTitle(fieldDef, config) : undefined;\n if (allowDisabling) {\n return getFirstDefined(guideTitle, fieldDef.title, def);\n }\n else {\n return guideTitle || fieldDef.title || def;\n }\n}\nexport function getGuide(fieldDef) {\n if (isPositionFieldDef(fieldDef) && fieldDef.axis) {\n return fieldDef.axis;\n }\n else if (isMarkPropFieldDef(fieldDef) && fieldDef.legend) {\n return fieldDef.legend;\n }\n else if (isFacetFieldDef(fieldDef) && fieldDef.header) {\n return fieldDef.header;\n }\n return undefined;\n}\nexport function defaultTitle(fieldDef, config) {\n return titleFormatter(fieldDef, config);\n}\nexport function format(fieldDef) {\n if (isTextFieldDef(fieldDef) && fieldDef.format) {\n return fieldDef.format;\n }\n else {\n const guide = getGuide(fieldDef) || {};\n return guide.format;\n }\n}\nexport function defaultType(fieldDef, channel) {\n if (fieldDef.timeUnit) {\n return 'temporal';\n }\n if (isBinning(fieldDef.bin)) {\n return 'quantitative';\n }\n switch (rangeType(channel)) {\n case 'continuous':\n return 'quantitative';\n case 'discrete':\n return 'nominal';\n case 'flexible': // color\n return 'nominal';\n default:\n return 'quantitative';\n }\n}\n/**\n * Returns the fieldDef -- either from the outer channelDef or from the condition of channelDef.\n * @param channelDef\n */\nexport function getFieldDef(channelDef) {\n if (isFieldDef(channelDef)) {\n return channelDef;\n }\n else if (hasConditionalFieldDef(channelDef)) {\n return channelDef.condition;\n }\n return undefined;\n}\nexport function getTypedFieldDef(channelDef) {\n if (isFieldDef(channelDef)) {\n return channelDef;\n }\n else if (hasConditionalFieldDef(channelDef)) {\n return channelDef.condition;\n }\n return undefined;\n}\n/**\n * Convert type to full, lowercase type, or augment the fieldDef with a default type if missing.\n */\nexport function normalize(channelDef, channel) {\n if (isString(channelDef) || isNumber(channelDef) || isBoolean(channelDef)) {\n const primitiveType = isString(channelDef) ? 'string' : isNumber(channelDef) ? 'number' : 'boolean';\n log.warn(log.message.primitiveChannelDef(channel, primitiveType, channelDef));\n return { value: channelDef };\n }\n // If a fieldDef contains a field, we need type.\n if (isFieldDef(channelDef)) {\n return normalizeFieldDef(channelDef, channel);\n }\n else if (hasConditionalFieldDef(channelDef)) {\n return Object.assign({}, channelDef, { \n // Need to cast as normalizeFieldDef normally return FieldDef, but here we know that it is definitely Condition<FieldDef>\n condition: normalizeFieldDef(channelDef.condition, channel) });\n }\n return channelDef;\n}\nexport function normalizeFieldDef(fieldDef, channel) {\n const { aggregate, timeUnit, bin } = fieldDef;\n // Drop invalid aggregate\n if (aggregate && !isAggregateOp(aggregate) && !isArgmaxDef(aggregate) && !isArgminDef(aggregate)) {\n const { aggregate: _ } = fieldDef, fieldDefWithoutAggregate = tslib_1.__rest(fieldDef, [\"aggregate\"]);\n log.warn(log.message.invalidAggregate(aggregate));\n fieldDef = fieldDefWithoutAggregate;\n }\n // Normalize Time Unit\n if (timeUnit) {\n fieldDef = Object.assign({}, fieldDef, { timeUnit: normalizeTimeUnit(timeUnit) });\n }\n // Normalize bin\n if (isBinning(bin)) {\n fieldDef = Object.assign({}, fieldDef, { bin: normalizeBin(bin, channel) });\n }\n if (isBinned(bin) && !contains(POSITION_SCALE_CHANNELS, channel)) {\n log.warn(`Channel ${channel} should not be used with \"binned\" bin`);\n }\n // Normalize Type\n if (isTypedFieldDef(fieldDef)) {\n const { type } = fieldDef;\n const fullType = getFullName(type);\n if (type !== fullType) {\n // convert short type to full type\n fieldDef = Object.assign({}, fieldDef, { type: fullType });\n }\n if (type !== 'quantitative') {\n if (isCountingAggregateOp(aggregate)) {\n log.warn(log.message.invalidFieldTypeForCountAggregate(type, aggregate));\n fieldDef = Object.assign({}, fieldDef, { type: 'quantitative' });\n }\n }\n }\n else if (!isSecondaryRangeChannel(channel)) {\n // If type is empty / invalid, then augment with default type\n const newType = defaultType(fieldDef, channel);\n log.warn(log.message.missingFieldType(channel, newType));\n fieldDef = Object.assign({}, fieldDef, { type: newType });\n }\n if (isTypedFieldDef(fieldDef)) {\n const { compatible, warning } = channelCompatibility(fieldDef, channel);\n if (!compatible) {\n log.warn(warning);\n }\n }\n return fieldDef;\n}\nexport function normalizeBin(bin, channel) {\n if (isBoolean(bin)) {\n return { maxbins: autoMaxBins(channel) };\n }\n else if (bin === 'binned') {\n return {\n binned: true\n };\n }\n else if (!bin.maxbins && !bin.step) {\n return Object.assign({}, bin, { maxbins: autoMaxBins(channel) });\n }\n else {\n return bin;\n }\n}\nconst COMPATIBLE = { compatible: true };\nexport function channelCompatibility(fieldDef, channel) {\n const type = fieldDef.type;\n if (type === 'geojson' && channel !== 'shape') {\n return {\n compatible: false,\n warning: `Channel ${channel} should not be used with a geojson data.`\n };\n }\n switch (channel) {\n case 'row':\n case 'column':\n case 'facet':\n if (isContinuous(fieldDef)) {\n return {\n compatible: false,\n warning: log.message.facetChannelShouldBeDiscrete(channel)\n };\n }\n return COMPATIBLE;\n case 'x':\n case 'y':\n case 'color':\n case 'fill':\n case 'stroke':\n case 'text':\n case 'detail':\n case 'key':\n case 'tooltip':\n case 'href':\n return COMPATIBLE;\n case 'longitude':\n case 'longitude2':\n case 'latitude':\n case 'latitude2':\n if (type !== QUANTITATIVE) {\n return {\n compatible: false,\n warning: `Channel ${channel} should be used with a quantitative field only, not ${fieldDef.type} field.`\n };\n }\n return COMPATIBLE;\n case 'opacity':\n case 'fillOpacity':\n case 'strokeOpacity':\n case 'strokeWidth':\n case 'size':\n case 'x2':\n case 'y2':\n if (type === 'nominal' && !fieldDef['sort']) {\n return {\n compatible: false,\n warning: `Channel ${channel} should not be used with an unsorted discrete field.`\n };\n }\n return COMPATIBLE;\n case 'shape':\n if (!contains(['ordinal', 'nominal', 'geojson'], fieldDef.type)) {\n return {\n compatible: false,\n warning: 'Shape channel should be used with only either discrete or geojson data.'\n };\n }\n return COMPATIBLE;\n case 'order':\n if (fieldDef.type === 'nominal' && !('sort' in fieldDef)) {\n return {\n compatible: false,\n warning: `Channel order is inappropriate for nominal field, which has no inherent order.`\n };\n }\n return COMPATIBLE;\n }\n throw new Error('channelCompatability not implemented for channel ' + channel);\n}\nexport function isNumberFieldDef(fieldDef) {\n return fieldDef.type === 'quantitative' || isBinning(fieldDef.bin);\n}\n/**\n * Check if the field def uses a time format or does not use any format but is temporal (this does not cover field defs that are temporal but use a number format).\n */\nexport function isTimeFormatFieldDef(fieldDef) {\n const formatType = (isPositionFieldDef(fieldDef) && fieldDef.axis && fieldDef.axis.formatType) ||\n (isMarkPropFieldDef(fieldDef) && fieldDef.legend && fieldDef.legend.formatType) ||\n (isTextFieldDef(fieldDef) && fieldDef.formatType);\n return formatType === 'time' || (!formatType && isTimeFieldDef(fieldDef));\n}\n/**\n * Check if field def has tye `temporal`. If you want to also cover field defs that use a time format, use `isTimeFormatFieldDef`.\n */\nexport function isTimeFieldDef(fieldDef) {\n return fieldDef.type === 'temporal' || !!fieldDef.timeUnit;\n}\n/**\n * Getting a value associated with a fielddef.\n * Convert the value to Vega expression if applicable (for datetime object, or string if the field def is temporal or has timeUnit)\n */\nexport function valueExpr(v, { timeUnit, type, time, undefinedIfExprNotRequired }) {\n let expr;\n if (isDateTime(v)) {\n expr = dateTimeExpr(v, true);\n }\n else if (isString(v) || isNumber(v)) {\n if (timeUnit || type === 'temporal') {\n if (isLocalSingleTimeUnit(timeUnit)) {\n expr = dateTimeExpr({ [timeUnit]: v }, true);\n }\n else if (isUtcSingleTimeUnit(timeUnit)) {\n // FIXME is this really correct?\n expr = valueExpr(v, { timeUnit: getLocalTimeUnit(timeUnit) });\n }\n else {\n // just pass the string to date function (which will call JS Date.parse())\n expr = `datetime(${JSON.stringify(v)})`;\n }\n }\n }\n if (expr) {\n return time ? `time(${expr})` : expr;\n }\n // number or boolean or normal string\n return undefinedIfExprNotRequired ? undefined : JSON.stringify(v);\n}\n/**\n * Standardize value array -- convert each value to Vega expression if applicable\n */\nexport function valueArray(fieldDef, values) {\n const { timeUnit, type } = fieldDef;\n return values.map(v => {\n const expr = valueExpr(v, { timeUnit, type, undefinedIfExprNotRequired: true });\n // return signal for the expression if we need an expression\n if (expr !== undefined) {\n return { signal: expr };\n }\n // otherwise just return the original value\n return v;\n });\n}\n/**\n * Checks whether a fieldDef for a particular channel requires a computed bin range.\n */\nexport function binRequiresRange(fieldDef, channel) {\n if (!isBinning(fieldDef.bin)) {\n console.warn('Only use this method with binned field defs');\n return false;\n }\n // We need the range only when the user explicitly forces a binned field to be use discrete scale. In this case, bin range is used in axis and legend labels.\n // We could check whether the axis or legend exists (not disabled) but that seems overkill.\n return isScaleChannel(channel) && contains(['ordinal', 'nominal'], fieldDef.type);\n}\n//# sourceMappingURL=channeldef.js.map","import { isBoolean, isObject } from 'vega-util';\nimport { COLOR, COLUMN, FILL, FILLOPACITY, OPACITY, ROW, SHAPE, SIZE, STROKE, STROKEOPACITY, STROKEWIDTH } from './channel';\nimport { normalizeBin } from './channeldef';\nimport { keys, varName } from './util';\n/**\n * Create a key for the bin configuration. Not for prebinned bin.\n */\nexport function binToString(bin) {\n if (isBoolean(bin)) {\n bin = normalizeBin(bin, undefined);\n }\n return ('bin' +\n keys(bin)\n .map(p => varName(`_${p}_${bin[p]}`))\n .join(''));\n}\n/**\n * Vega-Lite should bin the data.\n */\nexport function isBinning(bin) {\n return bin === true || (isBinParams(bin) && !bin.binned);\n}\n/**\n * The data is already binned and so Vega-Lite should not bin it again.\n */\nexport function isBinned(bin) {\n return bin === 'binned' || (isBinParams(bin) && bin.binned);\n}\nexport function isBinParams(bin) {\n return isObject(bin);\n}\nexport function autoMaxBins(channel) {\n switch (channel) {\n case ROW:\n case COLUMN:\n case SIZE:\n case COLOR:\n case FILL:\n case STROKE:\n case STROKEWIDTH:\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // Facets and Size shouldn't have too many bins\n // We choose 6 like shape to simplify the rule [falls through]\n case SHAPE:\n return 6; // Vega's \"shape\" has 6 distinct values\n default:\n return 10;\n }\n}\n//# sourceMappingURL=bin.js.map","import * as tslib_1 from \"tslib\";\nimport { isArray } from 'vega-util';\nimport { isArgmaxDef, isArgminDef } from './aggregate';\nimport { isBinning } from './bin';\nimport { CHANNELS, isChannel, isNonPositionScaleChannel, isSecondaryRangeChannel, supportMark } from './channel';\nimport { binRequiresRange, getFieldDef, getGuide, getTypedFieldDef, hasConditionalFieldDef, isConditionalDef, isFieldDef, isTypedFieldDef, isValueDef, normalize, normalizeFieldDef, title, vgField } from './channeldef';\nimport * as log from './log';\nimport { getDateTimeComponents } from './timeunit';\nimport { TEMPORAL } from './type';\nimport { keys, some } from './util';\nexport function channelHasField(encoding, channel) {\n const channelDef = encoding && encoding[channel];\n if (channelDef) {\n if (isArray(channelDef)) {\n return some(channelDef, fieldDef => !!fieldDef.field);\n }\n else {\n return isFieldDef(channelDef) || hasConditionalFieldDef(channelDef);\n }\n }\n return false;\n}\nexport function isAggregate(encoding) {\n return some(CHANNELS, channel => {\n if (channelHasField(encoding, channel)) {\n const channelDef = encoding[channel];\n if (isArray(channelDef)) {\n return some(channelDef, fieldDef => !!fieldDef.aggregate);\n }\n else {\n const fieldDef = getFieldDef(channelDef);\n return fieldDef && !!fieldDef.aggregate;\n }\n }\n return false;\n });\n}\nexport function extractTransformsFromEncoding(oldEncoding, config) {\n const groupby = [];\n const bins = [];\n const timeUnits = [];\n const aggregate = [];\n const encoding = {};\n forEach(oldEncoding, (channelDef, channel) => {\n // Extract potential embedded transformations along with remaining properties\n if (isFieldDef(channelDef)) {\n const { field, aggregate: aggOp, timeUnit, bin } = channelDef, remaining = tslib_1.__rest(channelDef, [\"field\", \"aggregate\", \"timeUnit\", \"bin\"]);\n if (aggOp || timeUnit || bin) {\n const guide = getGuide(channelDef);\n const isTitleDefined = guide && guide.title;\n let newField = vgField(channelDef, { forAs: true });\n const newFieldDef = Object.assign({}, (isTitleDefined ? [] : { title: title(channelDef, config, { allowDisabling: true }) }), remaining, { \n // Always overwrite field\n field: newField });\n const isPositionChannel = channel === 'x' || channel === 'y';\n if (aggOp) {\n let op;\n if (isArgmaxDef(aggOp)) {\n op = 'argmax';\n newField = vgField({ aggregate: 'argmax', field: aggOp.argmax }, { forAs: true });\n newFieldDef.field = `${newField}.${field}`;\n }\n else if (isArgminDef(aggOp)) {\n op = 'argmin';\n newField = vgField({ aggregate: 'argmin', field: aggOp.argmin }, { forAs: true });\n newFieldDef.field = `${newField}.${field}`;\n }\n else if (aggOp !== 'boxplot' && aggOp !== 'errorbar' && aggOp !== 'errorband') {\n op = aggOp;\n }\n if (op) {\n const aggregateEntry = {\n op,\n as: newField\n };\n if (field) {\n aggregateEntry.field = field;\n }\n aggregate.push(aggregateEntry);\n }\n }\n else if (isTypedFieldDef(channelDef) && isBinning(bin)) {\n bins.push({ bin, field, as: newField });\n // Add additional groupbys for range and end of bins\n groupby.push(vgField(channelDef, { binSuffix: 'end' }));\n if (binRequiresRange(channelDef, channel)) {\n groupby.push(vgField(channelDef, { binSuffix: 'range' }));\n }\n // Create accompanying 'x2' or 'y2' field if channel is 'x' or 'y' respectively\n if (isPositionChannel) {\n const secondaryChannel = {\n field: newField + '_end'\n };\n encoding[channel + '2'] = secondaryChannel;\n }\n newFieldDef.bin = 'binned';\n if (!isSecondaryRangeChannel(channel)) {\n newFieldDef['type'] = 'quantitative';\n }\n }\n else if (timeUnit) {\n timeUnits.push({ timeUnit, field, as: newField });\n // Add formatting to appropriate property based on the type of channel we're processing\n const format = getDateTimeComponents(timeUnit, config.axis.shortTimeLabels).join(' ');\n const formatType = isTypedFieldDef(channelDef) && channelDef.type !== TEMPORAL && 'time';\n if (channel === 'text' || channel === 'tooltip') {\n newFieldDef['format'] = newFieldDef['format'] || format;\n if (formatType) {\n newFieldDef['formatType'] = formatType;\n }\n }\n else if (isNonPositionScaleChannel(channel)) {\n newFieldDef['legend'] = Object.assign({ format }, (formatType ? { formatType } : {}), newFieldDef['legend']);\n }\n else if (isPositionChannel) {\n newFieldDef['axis'] = Object.assign({ format }, (formatType ? { formatType } : {}), newFieldDef['axis']);\n }\n }\n if (!aggOp) {\n groupby.push(newField);\n }\n // now the field should refer to post-transformed field instead\n encoding[channel] = newFieldDef;\n }\n else {\n groupby.push(field);\n encoding[channel] = oldEncoding[channel];\n }\n }\n else {\n // For value def, just copy\n encoding[channel] = oldEncoding[channel];\n }\n });\n return {\n bins,\n timeUnits,\n aggregate,\n groupby,\n encoding\n };\n}\nexport function markChannelCompatible(encoding, channel, mark) {\n const markSupported = supportMark(channel, mark);\n if (!markSupported) {\n return false;\n }\n else if (markSupported === 'binned') {\n const primaryFieldDef = encoding[channel === 'x2' ? 'x' : 'y'];\n // circle, point, square and tick only support x2/y2 when their corresponding x/y fieldDef\n // has \"binned\" data and thus need x2/y2 to specify the bin-end field.\n if (isFieldDef(primaryFieldDef) && isFieldDef(encoding[channel]) && primaryFieldDef.bin === 'binned') {\n return true;\n }\n else {\n return false;\n }\n }\n return true;\n}\nexport function normalizeEncoding(encoding, mark) {\n return keys(encoding).reduce((normalizedEncoding, channel) => {\n if (!isChannel(channel)) {\n // Drop invalid channel\n log.warn(log.message.invalidEncodingChannel(channel));\n return normalizedEncoding;\n }\n if (!markChannelCompatible(encoding, channel, mark)) {\n // Drop unsupported channel\n log.warn(log.message.incompatibleChannel(channel, mark));\n return normalizedEncoding;\n }\n // Drop line's size if the field is aggregated.\n if (channel === 'size' && mark === 'line') {\n const fieldDef = getTypedFieldDef(encoding[channel]);\n if (fieldDef && fieldDef.aggregate) {\n log.warn(log.message.LINE_WITH_VARYING_SIZE);\n return normalizedEncoding;\n }\n }\n // Drop color if either fill or stroke is specified\n if (channel === 'color' && ('fill' in encoding || 'stroke' in encoding)) {\n log.warn(log.message.droppingColor('encoding', { fill: 'fill' in encoding, stroke: 'stroke' in encoding }));\n return normalizedEncoding;\n }\n const channelDef = encoding[channel];\n if (channel === 'detail' ||\n (channel === 'order' && !isArray(channelDef) && !isValueDef(channelDef)) ||\n (channel === 'tooltip' && isArray(channelDef))) {\n if (channelDef) {\n // Array of fieldDefs for detail channel (or production rule)\n normalizedEncoding[channel] = (isArray(channelDef) ? channelDef : [channelDef]).reduce((defs, fieldDef) => {\n if (!isFieldDef(fieldDef)) {\n log.warn(log.message.emptyFieldDef(fieldDef, channel));\n }\n else {\n defs.push(normalizeFieldDef(fieldDef, channel));\n }\n return defs;\n }, []);\n }\n }\n else {\n if (channel === 'tooltip' && channelDef === null) {\n // Preserve null so we can use it to disable tooltip\n normalizedEncoding[channel] = null;\n }\n else if (!isFieldDef(channelDef) && !isValueDef(channelDef) && !isConditionalDef(channelDef)) {\n log.warn(log.message.emptyFieldDef(channelDef, channel));\n return normalizedEncoding;\n }\n normalizedEncoding[channel] = normalize(channelDef, channel);\n }\n return normalizedEncoding;\n }, {});\n}\nexport function isRanged(encoding) {\n return encoding && ((!!encoding.x && !!encoding.x2) || (!!encoding.y && !!encoding.y2));\n}\nexport function fieldDefs(encoding) {\n const arr = [];\n for (const channel of keys(encoding)) {\n if (channelHasField(encoding, channel)) {\n const channelDef = encoding[channel];\n (isArray(channelDef) ? channelDef : [channelDef]).forEach(def => {\n if (isFieldDef(def)) {\n arr.push(def);\n }\n else if (hasConditionalFieldDef(def)) {\n arr.push(def.condition);\n }\n });\n }\n }\n return arr;\n}\nexport function forEach(mapping, f, thisArg) {\n if (!mapping) {\n return;\n }\n for (const channel of keys(mapping)) {\n const el = mapping[channel];\n if (isArray(el)) {\n el.forEach((channelDef) => {\n f.call(thisArg, channelDef, channel);\n });\n }\n else {\n f.call(thisArg, el, channel);\n }\n }\n}\nexport function reduce(mapping, f, init, thisArg) {\n if (!mapping) {\n return init;\n }\n return keys(mapping).reduce((r, channel) => {\n const map = mapping[channel];\n if (isArray(map)) {\n return map.reduce((r1, channelDef) => {\n return f.call(thisArg, r1, channelDef, channel);\n }, r);\n }\n else {\n return f.call(thisArg, r, map, channel);\n }\n }, init);\n}\n//# sourceMappingURL=encoding.js.map","import * as tslib_1 from \"tslib\";\nimport { isArray, isBoolean, isString } from 'vega-util';\nimport { isContinuous, isFieldDef } from '../channeldef';\nimport { fieldDefs } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nexport function filterTooltipWithAggregatedField(oldEncoding) {\n const { tooltip } = oldEncoding, filteredEncoding = tslib_1.__rest(oldEncoding, [\"tooltip\"]);\n if (!tooltip) {\n return { filteredEncoding: oldEncoding };\n }\n let customTooltipWithAggregatedField;\n let customTooltipWithoutAggregatedField;\n if (isArray(tooltip)) {\n tooltip.forEach((t) => {\n if (t.aggregate) {\n if (!customTooltipWithAggregatedField) {\n customTooltipWithAggregatedField = [];\n }\n customTooltipWithAggregatedField.push(t);\n }\n else {\n if (!customTooltipWithoutAggregatedField) {\n customTooltipWithoutAggregatedField = [];\n }\n customTooltipWithoutAggregatedField.push(t);\n }\n });\n if (customTooltipWithAggregatedField) {\n filteredEncoding.tooltip = customTooltipWithAggregatedField;\n }\n }\n else {\n if (tooltip['aggregate']) {\n filteredEncoding.tooltip = tooltip;\n }\n else {\n customTooltipWithoutAggregatedField = tooltip;\n }\n }\n if (isArray(customTooltipWithoutAggregatedField) && customTooltipWithoutAggregatedField.length === 1) {\n customTooltipWithoutAggregatedField = customTooltipWithoutAggregatedField[0];\n }\n return { customTooltipWithoutAggregatedField, filteredEncoding };\n}\nexport function getCompositeMarkTooltip(tooltipSummary, continuousAxisChannelDef, encodingWithoutContinuousAxis, withFieldName = true) {\n const fiveSummaryTooltip = tooltipSummary.map(({ fieldPrefix, titlePrefix }) => ({\n field: fieldPrefix + continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type,\n title: titlePrefix + (withFieldName ? ' of ' + continuousAxisChannelDef.field : '')\n }));\n return {\n tooltip: [\n ...fiveSummaryTooltip,\n // need to cast because TextFieldDef support fewer types of bin\n ...fieldDefs(encodingWithoutContinuousAxis)\n ]\n };\n}\nexport function makeCompositeAggregatePartFactory(compositeMarkDef, continuousAxis, continuousAxisChannelDef, sharedEncoding, compositeMarkConfig) {\n const { scale, axis } = continuousAxisChannelDef;\n return ({ partName, mark, positionPrefix, endPositionPrefix = undefined, extraEncoding = {} }) => {\n const title = axis && axis.title !== undefined\n ? undefined\n : continuousAxisChannelDef.title !== undefined\n ? continuousAxisChannelDef.title\n : continuousAxisChannelDef.field;\n return partLayerMixins(compositeMarkDef, partName, compositeMarkConfig, {\n mark,\n encoding: Object.assign({ [continuousAxis]: Object.assign({ field: positionPrefix + '_' + continuousAxisChannelDef.field, type: continuousAxisChannelDef.type }, (title ? { title } : {}), (scale ? { scale } : {}), (axis ? { axis } : {})) }, (isString(endPositionPrefix)\n ? {\n [continuousAxis + '2']: {\n field: endPositionPrefix + '_' + continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type\n }\n }\n : {}), sharedEncoding, extraEncoding)\n });\n };\n}\nexport function partLayerMixins(markDef, part, compositeMarkConfig, partBaseSpec) {\n const { clip, color, opacity } = markDef;\n const mark = markDef.type;\n if (markDef[part] || (markDef[part] === undefined && compositeMarkConfig[part])) {\n return [\n Object.assign({}, partBaseSpec, { mark: Object.assign({}, compositeMarkConfig[part], (clip ? { clip } : {}), (color ? { color } : {}), (opacity ? { opacity } : {}), (isMarkDef(partBaseSpec.mark) ? partBaseSpec.mark : { type: partBaseSpec.mark }), { style: `${mark}-${part}` }, (isBoolean(markDef[part]) ? {} : markDef[part])) })\n ];\n }\n return [];\n}\nexport function compositeMarkContinuousAxis(spec, orient, compositeMark) {\n const { encoding } = spec;\n const continuousAxis = orient === 'vertical' ? 'y' : 'x';\n const continuousAxisChannelDef = encoding[continuousAxis]; // Safe to cast because if x is not continuous fielddef, the orient would not be horizontal.\n const continuousAxisChannelDef2 = encoding[continuousAxis + '2'];\n const continuousAxisChannelDefError = encoding[continuousAxis + 'Error'];\n const continuousAxisChannelDefError2 = encoding[continuousAxis + 'Error2'];\n return {\n continuousAxisChannelDef: filterAggregateFromChannelDef(continuousAxisChannelDef, compositeMark),\n continuousAxisChannelDef2: filterAggregateFromChannelDef(continuousAxisChannelDef2, compositeMark),\n continuousAxisChannelDefError: filterAggregateFromChannelDef(continuousAxisChannelDefError, compositeMark),\n continuousAxisChannelDefError2: filterAggregateFromChannelDef(continuousAxisChannelDefError2, compositeMark),\n continuousAxis\n };\n}\nfunction filterAggregateFromChannelDef(continuousAxisChannelDef, compositeMark) {\n if (continuousAxisChannelDef && continuousAxisChannelDef.aggregate) {\n const { aggregate } = continuousAxisChannelDef, continuousAxisWithoutAggregate = tslib_1.__rest(continuousAxisChannelDef, [\"aggregate\"]);\n if (aggregate !== compositeMark) {\n log.warn(log.message.errorBarContinuousAxisHasCustomizedAggregate(aggregate, compositeMark));\n }\n return continuousAxisWithoutAggregate;\n }\n else {\n return continuousAxisChannelDef;\n }\n}\nexport function compositeMarkOrient(spec, compositeMark) {\n const { mark, encoding } = spec;\n if (isFieldDef(encoding.x) && isContinuous(encoding.x)) {\n // x is continuous\n if (isFieldDef(encoding.y) && isContinuous(encoding.y)) {\n // both x and y are continuous\n if (encoding.x.aggregate === undefined && encoding.y.aggregate === compositeMark) {\n return 'vertical';\n }\n else if (encoding.y.aggregate === undefined && encoding.x.aggregate === compositeMark) {\n return 'horizontal';\n }\n else if (encoding.x.aggregate === compositeMark && encoding.y.aggregate === compositeMark) {\n throw new Error('Both x and y cannot have aggregate');\n }\n else {\n if (isMarkDef(mark) && mark.orient) {\n return mark.orient;\n }\n // default orientation = vertical\n return 'vertical';\n }\n }\n // x is continuous but y is not\n return 'horizontal';\n }\n else if (isFieldDef(encoding.y) && isContinuous(encoding.y)) {\n // y is continuous but x is not\n return 'vertical';\n }\n else {\n // Neither x nor y is continuous.\n throw new Error('Need a valid continuous axis for ' + compositeMark + 's');\n }\n}\n//# sourceMappingURL=common.js.map","import * as tslib_1 from \"tslib\";\nimport { isNumber, isObject } from 'vega-util';\nimport { extractTransformsFromEncoding } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { getFirstDefined, keys } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { compositeMarkContinuousAxis, compositeMarkOrient, filterTooltipWithAggregatedField, getCompositeMarkTooltip, makeCompositeAggregatePartFactory, partLayerMixins } from './common';\nexport const BOXPLOT = 'boxplot';\nconst BOXPLOT_PART_INDEX = {\n box: 1,\n median: 1,\n outliers: 1,\n rule: 1,\n ticks: 1\n};\nexport const BOXPLOT_PARTS = keys(BOXPLOT_PART_INDEX);\nexport const boxPlotNormalizer = new CompositeMarkNormalizer(BOXPLOT, normalizeBoxPlot);\nexport function getBoxPlotType(extent) {\n if (isNumber(extent)) {\n return 'tukey';\n }\n // Ham: If we ever want to, we could add another extent syntax `{kIQR: number}` for the original [Q1-k*IQR, Q3+k*IQR] whisker and call this boxPlotType = `kIQR`. However, I'm not exposing this for now.\n return extent;\n}\nexport function normalizeBoxPlot(spec, { config }) {\n // TODO: use selection\n const { mark, encoding: _encoding, selection, projection: _p } = spec, outerSpec = tslib_1.__rest(spec, [\"mark\", \"encoding\", \"selection\", \"projection\"]);\n const markDef = isMarkDef(mark) ? mark : { type: mark };\n // TODO(https://github.com/vega/vega-lite/issues/3702): add selection support\n if (selection) {\n log.warn(log.message.selectionNotSupported('boxplot'));\n }\n const extent = markDef.extent || config.boxplot.extent;\n const sizeValue = getFirstDefined(markDef.size, config.boxplot.size);\n const boxPlotType = getBoxPlotType(extent);\n const { transform, continuousAxisChannelDef, continuousAxis, groupby, aggregate, encodingWithoutContinuousAxis, ticksOrient, customTooltipWithoutAggregatedField } = boxParams(spec, extent, config);\n const { color, size } = encodingWithoutContinuousAxis, encodingWithoutSizeColorAndContinuousAxis = tslib_1.__rest(encodingWithoutContinuousAxis, [\"color\", \"size\"]);\n const makeBoxPlotPart = (sharedEncoding) => {\n return makeCompositeAggregatePartFactory(markDef, continuousAxis, continuousAxisChannelDef, sharedEncoding, config.boxplot);\n };\n const makeBoxPlotExtent = makeBoxPlotPart(encodingWithoutSizeColorAndContinuousAxis);\n const makeBoxPlotBox = makeBoxPlotPart(encodingWithoutContinuousAxis);\n const makeBoxPlotMidTick = makeBoxPlotPart(Object.assign({}, encodingWithoutSizeColorAndContinuousAxis, (size ? { size } : {})));\n const fiveSummaryTooltipEncoding = getCompositeMarkTooltip([\n { fieldPrefix: boxPlotType === 'min-max' ? 'upper_whisker_' : 'max_', titlePrefix: 'Max' },\n { fieldPrefix: 'upper_box_', titlePrefix: 'Q3' },\n { fieldPrefix: 'mid_box_', titlePrefix: 'Median' },\n { fieldPrefix: 'lower_box_', titlePrefix: 'Q1' },\n { fieldPrefix: boxPlotType === 'min-max' ? 'lower_whisker_' : 'min_', titlePrefix: 'Min' }\n ], continuousAxisChannelDef, encodingWithoutContinuousAxis);\n // ## Whisker Layers\n const endTick = { type: 'tick', color: 'black', opacity: 1, orient: ticksOrient };\n const whiskerTooltipEncoding = boxPlotType === 'min-max'\n ? fiveSummaryTooltipEncoding // for min-max, show five-summary tooltip for whisker\n : // for tukey / k-IQR, just show upper/lower-whisker\n getCompositeMarkTooltip([\n { fieldPrefix: 'upper_whisker_', titlePrefix: 'Upper Whisker' },\n { fieldPrefix: 'lower_whisker_', titlePrefix: 'Lower Whisker' }\n ], continuousAxisChannelDef, encodingWithoutContinuousAxis);\n const whiskerLayers = [\n ...makeBoxPlotExtent({\n partName: 'rule',\n mark: 'rule',\n positionPrefix: 'lower_whisker',\n endPositionPrefix: 'lower_box',\n extraEncoding: whiskerTooltipEncoding\n }),\n ...makeBoxPlotExtent({\n partName: 'rule',\n mark: 'rule',\n positionPrefix: 'upper_box',\n endPositionPrefix: 'upper_whisker',\n extraEncoding: whiskerTooltipEncoding\n }),\n ...makeBoxPlotExtent({\n partName: 'ticks',\n mark: endTick,\n positionPrefix: 'lower_whisker',\n extraEncoding: whiskerTooltipEncoding\n }),\n ...makeBoxPlotExtent({\n partName: 'ticks',\n mark: endTick,\n positionPrefix: 'upper_whisker',\n extraEncoding: whiskerTooltipEncoding\n })\n ];\n // ## Box Layers\n // TODO: support hiding certain mark parts\n const boxLayers = [\n ...(boxPlotType !== 'tukey' ? whiskerLayers : []),\n ...makeBoxPlotBox({\n partName: 'box',\n mark: Object.assign({ type: 'bar' }, (sizeValue ? { size: sizeValue } : {})),\n positionPrefix: 'lower_box',\n endPositionPrefix: 'upper_box',\n extraEncoding: fiveSummaryTooltipEncoding\n }),\n ...makeBoxPlotMidTick({\n partName: 'median',\n mark: Object.assign({ type: 'tick' }, (isObject(config.boxplot.median) && config.boxplot.median.color ? { color: config.boxplot.median.color } : {}), (sizeValue ? { size: sizeValue } : {}), { orient: ticksOrient }),\n positionPrefix: 'mid_box',\n extraEncoding: fiveSummaryTooltipEncoding\n })\n ];\n // ## Filtered Layers\n let filteredLayersMixins;\n if (boxPlotType !== 'min-max') {\n const lowerBoxExpr = `datum[\"lower_box_${continuousAxisChannelDef.field}\"]`;\n const upperBoxExpr = `datum[\"upper_box_${continuousAxisChannelDef.field}\"]`;\n const iqrExpr = `(${upperBoxExpr} - ${lowerBoxExpr})`;\n const lowerWhiskerExpr = `${lowerBoxExpr} - ${extent} * ${iqrExpr}`;\n const upperWhiskerExpr = `${upperBoxExpr} + ${extent} * ${iqrExpr}`;\n const fieldExpr = `datum[\"${continuousAxisChannelDef.field}\"]`;\n const joinaggregateTransform = {\n joinaggregate: boxParamsQuartiles(continuousAxisChannelDef.field),\n groupby\n };\n let filteredWhiskerSpec = undefined;\n if (boxPlotType === 'tukey') {\n filteredWhiskerSpec = {\n transform: [\n {\n filter: `(${lowerWhiskerExpr} <= ${fieldExpr}) && (${fieldExpr} <= ${upperWhiskerExpr})`\n },\n {\n aggregate: [\n {\n op: 'min',\n field: continuousAxisChannelDef.field,\n as: 'lower_whisker_' + continuousAxisChannelDef.field\n },\n {\n op: 'max',\n field: continuousAxisChannelDef.field,\n as: 'upper_whisker_' + continuousAxisChannelDef.field\n },\n // preserve lower_box / upper_box\n {\n op: 'min',\n field: 'lower_box_' + continuousAxisChannelDef.field,\n as: 'lower_box_' + continuousAxisChannelDef.field\n },\n {\n op: 'max',\n field: 'upper_box_' + continuousAxisChannelDef.field,\n as: 'upper_box_' + continuousAxisChannelDef.field\n },\n ...aggregate\n ],\n groupby\n }\n ],\n layer: whiskerLayers\n };\n }\n const { tooltip } = encodingWithoutSizeColorAndContinuousAxis, encodingWithoutSizeColorContinuousAxisAndTooltip = tslib_1.__rest(encodingWithoutSizeColorAndContinuousAxis, [\"tooltip\"]);\n const outlierLayersMixins = partLayerMixins(markDef, 'outliers', config.boxplot, {\n transform: [{ filter: `(${fieldExpr} < ${lowerWhiskerExpr}) || (${fieldExpr} > ${upperWhiskerExpr})` }],\n mark: 'point',\n encoding: Object.assign({ [continuousAxis]: {\n field: continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type\n } }, encodingWithoutSizeColorContinuousAxisAndTooltip, (customTooltipWithoutAggregatedField ? { tooltip: customTooltipWithoutAggregatedField } : {}))\n })[0];\n if (outlierLayersMixins && filteredWhiskerSpec) {\n filteredLayersMixins = {\n transform: [joinaggregateTransform],\n layer: [outlierLayersMixins, filteredWhiskerSpec]\n };\n }\n else if (outlierLayersMixins) {\n filteredLayersMixins = outlierLayersMixins;\n filteredLayersMixins.transform.unshift(joinaggregateTransform);\n }\n else if (filteredWhiskerSpec) {\n filteredLayersMixins = filteredWhiskerSpec;\n filteredLayersMixins.transform.unshift(joinaggregateTransform);\n }\n }\n if (filteredLayersMixins) {\n // tukey box plot with outliers included\n return Object.assign({}, outerSpec, { layer: [\n ...(filteredLayersMixins ? [filteredLayersMixins] : []),\n {\n // boxplot\n transform,\n layer: boxLayers\n }\n ] });\n }\n return Object.assign({}, outerSpec, { transform: (outerSpec.transform || []).concat(transform), layer: boxLayers });\n}\nfunction boxParamsQuartiles(continousAxisField) {\n return [\n {\n op: 'q1',\n field: continousAxisField,\n as: 'lower_box_' + continousAxisField\n },\n {\n op: 'q3',\n field: continousAxisField,\n as: 'upper_box_' + continousAxisField\n }\n ];\n}\nfunction boxParams(spec, extent, config) {\n const orient = compositeMarkOrient(spec, BOXPLOT);\n const { continuousAxisChannelDef, continuousAxis } = compositeMarkContinuousAxis(spec, orient, BOXPLOT);\n const continuousFieldName = continuousAxisChannelDef.field;\n const boxPlotType = getBoxPlotType(extent);\n const boxplotSpecificAggregate = [\n ...boxParamsQuartiles(continuousFieldName),\n {\n op: 'median',\n field: continuousFieldName,\n as: 'mid_box_' + continuousFieldName\n },\n {\n op: 'min',\n field: continuousFieldName,\n as: (boxPlotType === 'min-max' ? 'lower_whisker_' : 'min_') + continuousFieldName\n },\n {\n op: 'max',\n field: continuousFieldName,\n as: (boxPlotType === 'min-max' ? 'upper_whisker_' : 'max_') + continuousFieldName\n }\n ];\n const postAggregateCalculates = boxPlotType === 'min-max' || boxPlotType === 'tukey'\n ? []\n : [\n // This is for the original k-IQR, which we do not expose\n {\n calculate: `datum[\"upper_box_${continuousFieldName}\"] - datum[\"lower_box_${continuousFieldName}\"]`,\n as: 'iqr_' + continuousFieldName\n },\n {\n calculate: `min(datum[\"upper_box_${continuousFieldName}\"] + datum[\"iqr_${continuousFieldName}\"] * ${extent}, datum[\"max_${continuousFieldName}\"])`,\n as: 'upper_whisker_' + continuousFieldName\n },\n {\n calculate: `max(datum[\"lower_box_${continuousFieldName}\"] - datum[\"iqr_${continuousFieldName}\"] * ${extent}, datum[\"min_${continuousFieldName}\"])`,\n as: 'lower_whisker_' + continuousFieldName\n }\n ];\n const _a = spec.encoding, _b = continuousAxis, oldContinuousAxisChannelDef = _a[_b], oldEncodingWithoutContinuousAxis = tslib_1.__rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\n const { customTooltipWithoutAggregatedField, filteredEncoding } = filterTooltipWithAggregatedField(oldEncodingWithoutContinuousAxis);\n const { bins, timeUnits, aggregate, groupby, encoding: encodingWithoutContinuousAxis } = extractTransformsFromEncoding(filteredEncoding, config);\n const ticksOrient = orient === 'vertical' ? 'horizontal' : 'vertical';\n return {\n transform: [\n ...bins,\n ...timeUnits,\n {\n aggregate: [...aggregate, ...boxplotSpecificAggregate],\n groupby\n },\n ...postAggregateCalculates\n ],\n groupby,\n aggregate,\n continuousAxisChannelDef,\n continuousAxis,\n encodingWithoutContinuousAxis,\n ticksOrient,\n customTooltipWithoutAggregatedField\n };\n}\n//# sourceMappingURL=boxplot.js.map","import * as tslib_1 from \"tslib\";\nimport { isContinuous, isFieldDef, title } from '../channeldef';\nimport { extractTransformsFromEncoding } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { keys, titlecase } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { compositeMarkContinuousAxis, compositeMarkOrient, getCompositeMarkTooltip, makeCompositeAggregatePartFactory } from './common';\nexport const ERRORBAR = 'errorbar';\nconst ERRORBAR_PART_INDEX = {\n ticks: 1,\n rule: 1\n};\nexport const ERRORBAR_PARTS = keys(ERRORBAR_PART_INDEX);\nexport const errorBarNormalizer = new CompositeMarkNormalizer(ERRORBAR, normalizeErrorBar);\nexport function normalizeErrorBar(spec, { config }) {\n const { transform, continuousAxisChannelDef, continuousAxis, encodingWithoutContinuousAxis, ticksOrient, markDef, outerSpec, tooltipEncoding } = errorBarParams(spec, ERRORBAR, config);\n const makeErrorBarPart = makeCompositeAggregatePartFactory(markDef, continuousAxis, continuousAxisChannelDef, encodingWithoutContinuousAxis, config.errorbar);\n const tick = { type: 'tick', orient: ticksOrient };\n return Object.assign({}, outerSpec, { transform, layer: [\n ...makeErrorBarPart({\n partName: 'ticks',\n mark: tick,\n positionPrefix: 'lower',\n extraEncoding: tooltipEncoding\n }),\n ...makeErrorBarPart({\n partName: 'ticks',\n mark: tick,\n positionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n }),\n ...makeErrorBarPart({\n partName: 'rule',\n mark: 'rule',\n positionPrefix: 'lower',\n endPositionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n })\n ] });\n}\nfunction errorBarOrientAndInputType(spec, compositeMark) {\n const { encoding } = spec;\n if (errorBarIsInputTypeRaw(encoding)) {\n return {\n orient: compositeMarkOrient(spec, compositeMark),\n inputType: 'raw'\n };\n }\n const isTypeAggregatedUpperLower = errorBarIsInputTypeAggregatedUpperLower(encoding);\n const isTypeAggregatedError = errorBarIsInputTypeAggregatedError(encoding);\n const x = encoding.x;\n const y = encoding.y;\n if (isTypeAggregatedUpperLower) {\n // type is aggregated-upper-lower\n if (isTypeAggregatedError) {\n throw new Error(compositeMark + ' cannot be both type aggregated-upper-lower and aggregated-error');\n }\n const x2 = encoding.x2;\n const y2 = encoding.y2;\n if (isFieldDef(x2) && isFieldDef(y2)) {\n // having both x, x2 and y, y2\n throw new Error(compositeMark + ' cannot have both x2 and y2');\n }\n else if (isFieldDef(x2)) {\n if (isFieldDef(x) && isContinuous(x)) {\n // having x, x2 quantitative and field y, y2 are not specified\n return { orient: 'horizontal', inputType: 'aggregated-upper-lower' };\n }\n else {\n // having x, x2 that are not both quantitative\n throw new Error('Both x and x2 have to be quantitative in ' + compositeMark);\n }\n }\n else if (isFieldDef(y2)) {\n // y2 is a FieldDef\n if (isFieldDef(y) && isContinuous(y)) {\n // having y, y2 quantitative and field x, x2 are not specified\n return { orient: 'vertical', inputType: 'aggregated-upper-lower' };\n }\n else {\n // having y, y2 that are not both quantitative\n throw new Error('Both y and y2 have to be quantitative in ' + compositeMark);\n }\n }\n throw new Error('No ranged axis');\n }\n else {\n // type is aggregated-error\n const xError = encoding.xError;\n const xError2 = encoding.xError2;\n const yError = encoding.yError;\n const yError2 = encoding.yError2;\n if (isFieldDef(xError2) && !isFieldDef(xError)) {\n // having xError2 without xError\n throw new Error(compositeMark + ' cannot have xError2 without xError');\n }\n if (isFieldDef(yError2) && !isFieldDef(yError)) {\n // having yError2 without yError\n throw new Error(compositeMark + ' cannot have yError2 without yError');\n }\n if (isFieldDef(xError) && isFieldDef(yError)) {\n // having both xError and yError\n throw new Error(compositeMark + ' cannot have both xError and yError with both are quantiative');\n }\n else if (isFieldDef(xError)) {\n if (isFieldDef(x) && isContinuous(x)) {\n // having x and xError that are all quantitative\n return { orient: 'horizontal', inputType: 'aggregated-error' };\n }\n else {\n // having x, xError, and xError2 that are not all quantitative\n throw new Error('All x, xError, and xError2 (if exist) have to be quantitative');\n }\n }\n else if (isFieldDef(yError)) {\n if (isFieldDef(y) && isContinuous(y)) {\n // having y and yError that are all quantitative\n return { orient: 'vertical', inputType: 'aggregated-error' };\n }\n else {\n // having y, yError, and yError2 that are not all quantitative\n throw new Error('All y, yError, and yError2 (if exist) have to be quantitative');\n }\n }\n throw new Error('No ranged axis');\n }\n}\nfunction errorBarIsInputTypeRaw(encoding) {\n return ((isFieldDef(encoding.x) || isFieldDef(encoding.y)) &&\n !isFieldDef(encoding.x2) &&\n !isFieldDef(encoding.y2) &&\n !isFieldDef(encoding.xError) &&\n !isFieldDef(encoding.xError2) &&\n !isFieldDef(encoding.yError) &&\n !isFieldDef(encoding.yError2));\n}\nfunction errorBarIsInputTypeAggregatedUpperLower(encoding) {\n return isFieldDef(encoding.x2) || isFieldDef(encoding.y2);\n}\nfunction errorBarIsInputTypeAggregatedError(encoding) {\n return (isFieldDef(encoding.xError) ||\n isFieldDef(encoding.xError2) ||\n isFieldDef(encoding.yError) ||\n isFieldDef(encoding.yError2));\n}\nexport function errorBarParams(spec, compositeMark, config) {\n // TODO: use selection\n const { mark, encoding, selection, projection: _p } = spec, outerSpec = tslib_1.__rest(spec, [\"mark\", \"encoding\", \"selection\", \"projection\"]);\n const markDef = isMarkDef(mark) ? mark : { type: mark };\n // TODO(https://github.com/vega/vega-lite/issues/3702): add selection support\n if (selection) {\n log.warn(log.message.selectionNotSupported(compositeMark));\n }\n const { orient, inputType } = errorBarOrientAndInputType(spec, compositeMark);\n const { continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, continuousAxis } = compositeMarkContinuousAxis(spec, orient, compositeMark);\n const { errorBarSpecificAggregate, postAggregateCalculates, tooltipSummary, tooltipTitleWithFieldName } = errorBarAggregationAndCalculation(markDef, continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, inputType, compositeMark, config);\n const _a = continuousAxis, oldContinuousAxisChannelDef = encoding[_a], _b = continuousAxis === 'x' ? 'x2' : 'y2', oldContinuousAxisChannelDef2 = encoding[_b], _c = continuousAxis === 'x' ? 'xError' : 'yError', oldContinuousAxisChannelDefError = encoding[_c], _d = continuousAxis === 'x' ? 'xError2' : 'yError2', oldContinuousAxisChannelDefError2 = encoding[_d], oldEncodingWithoutContinuousAxis = tslib_1.__rest(encoding, [typeof _a === \"symbol\" ? _a : _a + \"\", typeof _b === \"symbol\" ? _b : _b + \"\", typeof _c === \"symbol\" ? _c : _c + \"\", typeof _d === \"symbol\" ? _d : _d + \"\"]);\n const { bins, timeUnits, aggregate: oldAggregate, groupby: oldGroupBy, encoding: encodingWithoutContinuousAxis } = extractTransformsFromEncoding(oldEncodingWithoutContinuousAxis, config);\n const aggregate = [...oldAggregate, ...errorBarSpecificAggregate];\n const groupby = inputType !== 'raw' ? [] : oldGroupBy;\n const tooltipEncoding = getCompositeMarkTooltip(tooltipSummary, continuousAxisChannelDef, encodingWithoutContinuousAxis, tooltipTitleWithFieldName);\n return {\n transform: [\n ...(outerSpec.transform || []),\n ...bins,\n ...timeUnits,\n ...(!aggregate.length ? [] : [{ aggregate, groupby }]),\n ...postAggregateCalculates\n ],\n groupby,\n continuousAxisChannelDef,\n continuousAxis,\n encodingWithoutContinuousAxis,\n ticksOrient: orient === 'vertical' ? 'horizontal' : 'vertical',\n markDef,\n outerSpec,\n tooltipEncoding\n };\n}\nfunction errorBarAggregationAndCalculation(markDef, continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, inputType, compositeMark, config) {\n let errorBarSpecificAggregate = [];\n let postAggregateCalculates = [];\n const continuousFieldName = continuousAxisChannelDef.field;\n let tooltipSummary;\n let tooltipTitleWithFieldName = false;\n if (inputType === 'raw') {\n const center = markDef.center\n ? markDef.center\n : markDef.extent\n ? markDef.extent === 'iqr'\n ? 'median'\n : 'mean'\n : config.errorbar.center;\n const extent = markDef.extent ? markDef.extent : center === 'mean' ? 'stderr' : 'iqr';\n if ((center === 'median') !== (extent === 'iqr')) {\n log.warn(log.message.errorBarCenterIsUsedWithWrongExtent(center, extent, compositeMark));\n }\n if (extent === 'stderr' || extent === 'stdev') {\n errorBarSpecificAggregate = [\n { op: extent, field: continuousFieldName, as: 'extent_' + continuousFieldName },\n { op: center, field: continuousFieldName, as: 'center_' + continuousFieldName }\n ];\n postAggregateCalculates = [\n {\n calculate: `datum[\"center_${continuousFieldName}\"] + datum[\"extent_${continuousFieldName}\"]`,\n as: 'upper_' + continuousFieldName\n },\n {\n calculate: `datum[\"center_${continuousFieldName}\"] - datum[\"extent_${continuousFieldName}\"]`,\n as: 'lower_' + continuousFieldName\n }\n ];\n tooltipSummary = [\n { fieldPrefix: 'center_', titlePrefix: titlecase(center) },\n { fieldPrefix: 'upper_', titlePrefix: getTitlePrefix(center, extent, '+') },\n { fieldPrefix: 'lower_', titlePrefix: getTitlePrefix(center, extent, '-') }\n ];\n tooltipTitleWithFieldName = true;\n }\n else {\n if (markDef.center && markDef.extent) {\n log.warn(log.message.errorBarCenterIsNotNeeded(markDef.extent, compositeMark));\n }\n let centerOp;\n let lowerExtentOp;\n let upperExtentOp;\n if (extent === 'ci') {\n centerOp = 'mean';\n lowerExtentOp = 'ci0';\n upperExtentOp = 'ci1';\n }\n else {\n centerOp = 'median';\n lowerExtentOp = 'q1';\n upperExtentOp = 'q3';\n }\n errorBarSpecificAggregate = [\n { op: lowerExtentOp, field: continuousFieldName, as: 'lower_' + continuousFieldName },\n { op: upperExtentOp, field: continuousFieldName, as: 'upper_' + continuousFieldName },\n { op: centerOp, field: continuousFieldName, as: 'center_' + continuousFieldName }\n ];\n tooltipSummary = [\n {\n fieldPrefix: 'upper_',\n titlePrefix: title({ field: continuousFieldName, aggregate: upperExtentOp, type: 'quantitative' }, config, {\n allowDisabling: false\n })\n },\n {\n fieldPrefix: 'lower_',\n titlePrefix: title({ field: continuousFieldName, aggregate: lowerExtentOp, type: 'quantitative' }, config, {\n allowDisabling: false\n })\n },\n {\n fieldPrefix: 'center_',\n titlePrefix: title({ field: continuousFieldName, aggregate: centerOp, type: 'quantitative' }, config, {\n allowDisabling: false\n })\n }\n ];\n }\n }\n else {\n if (markDef.center || markDef.extent) {\n log.warn(log.message.errorBarCenterAndExtentAreNotNeeded(markDef.center, markDef.extent));\n }\n if (inputType === 'aggregated-upper-lower') {\n tooltipSummary = [];\n postAggregateCalculates = [\n { calculate: `datum[\"${continuousAxisChannelDef2.field}\"]`, as: 'upper_' + continuousFieldName },\n { calculate: `datum[\"${continuousFieldName}\"]`, as: 'lower_' + continuousFieldName }\n ];\n }\n else if (inputType === 'aggregated-error') {\n tooltipSummary = [{ fieldPrefix: '', titlePrefix: continuousFieldName }];\n postAggregateCalculates = [\n {\n calculate: `datum[\"${continuousFieldName}\"] + datum[\"${continuousAxisChannelDefError.field}\"]`,\n as: 'upper_' + continuousFieldName\n }\n ];\n if (continuousAxisChannelDefError2) {\n postAggregateCalculates.push({\n calculate: `datum[\"${continuousFieldName}\"] + datum[\"${continuousAxisChannelDefError2.field}\"]`,\n as: 'lower_' + continuousFieldName\n });\n }\n else {\n postAggregateCalculates.push({\n calculate: `datum[\"${continuousFieldName}\"] - datum[\"${continuousAxisChannelDefError.field}\"]`,\n as: 'lower_' + continuousFieldName\n });\n }\n }\n for (const postAggregateCalculate of postAggregateCalculates) {\n tooltipSummary.push({\n fieldPrefix: postAggregateCalculate.as.substring(0, 6),\n titlePrefix: postAggregateCalculate.calculate\n .replace(new RegExp('datum\\\\[\\\\\"', 'g'), '')\n .replace(new RegExp('\\\\\"\\\\]', 'g'), '')\n });\n }\n }\n return { postAggregateCalculates, errorBarSpecificAggregate, tooltipSummary, tooltipTitleWithFieldName };\n}\nfunction getTitlePrefix(center, extent, operation) {\n return titlecase(center) + ' ' + operation + ' ' + extent;\n}\n//# sourceMappingURL=errorbar.js.map","import * as log from '../log';\nimport { keys } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { makeCompositeAggregatePartFactory } from './common';\nimport { errorBarParams } from './errorbar';\nexport const ERRORBAND = 'errorband';\nconst ERRORBAND_PART_INDEX = {\n band: 1,\n borders: 1\n};\nexport const ERRORBAND_PARTS = keys(ERRORBAND_PART_INDEX);\nexport const errorBandNormalizer = new CompositeMarkNormalizer(ERRORBAND, normalizeErrorBand);\nexport function normalizeErrorBand(spec, { config }) {\n const { transform, continuousAxisChannelDef, continuousAxis, encodingWithoutContinuousAxis, markDef, outerSpec, tooltipEncoding } = errorBarParams(spec, ERRORBAND, config);\n const errorBandDef = markDef;\n const makeErrorBandPart = makeCompositeAggregatePartFactory(errorBandDef, continuousAxis, continuousAxisChannelDef, encodingWithoutContinuousAxis, config.errorband);\n const is2D = spec.encoding.x !== undefined && spec.encoding.y !== undefined;\n let bandMark = { type: is2D ? 'area' : 'rect' };\n let bordersMark = { type: is2D ? 'line' : 'rule' };\n const interpolate = Object.assign({}, (errorBandDef.interpolate ? { interpolate: errorBandDef.interpolate } : {}), (errorBandDef.tension && errorBandDef.interpolate ? { interpolate: errorBandDef.tension } : {}));\n if (is2D) {\n bandMark = Object.assign({}, bandMark, interpolate);\n bordersMark = Object.assign({}, bordersMark, interpolate);\n }\n else if (errorBandDef.interpolate) {\n log.warn(log.message.errorBand1DNotSupport('interpolate'));\n }\n else if (errorBandDef.tension) {\n log.warn(log.message.errorBand1DNotSupport('tension'));\n }\n return Object.assign({}, outerSpec, { transform, layer: [\n ...makeErrorBandPart({\n partName: 'band',\n mark: bandMark,\n positionPrefix: 'lower',\n endPositionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n }),\n ...makeErrorBandPart({\n partName: 'borders',\n mark: bordersMark,\n positionPrefix: 'lower',\n extraEncoding: tooltipEncoding\n }),\n ...makeErrorBandPart({\n partName: 'borders',\n mark: bordersMark,\n positionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n })\n ] });\n}\n//# sourceMappingURL=errorband.js.map","import { keys } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { BOXPLOT, BOXPLOT_PARTS, normalizeBoxPlot } from './boxplot';\nimport { ERRORBAND, ERRORBAND_PARTS, normalizeErrorBand } from './errorband';\nimport { ERRORBAR, ERRORBAR_PARTS, normalizeErrorBar } from './errorbar';\n/**\n * Registry index for all composite mark's normalizer\n */\nconst compositeMarkRegistry = {};\nexport function add(mark, run, parts) {\n const normalizer = new CompositeMarkNormalizer(mark, run);\n compositeMarkRegistry[mark] = { normalizer, parts };\n}\nexport function remove(mark) {\n delete compositeMarkRegistry[mark];\n}\nexport function getAllCompositeMarks() {\n return keys(compositeMarkRegistry);\n}\nadd(BOXPLOT, normalizeBoxPlot, BOXPLOT_PARTS);\nadd(ERRORBAR, normalizeErrorBar, ERRORBAR_PARTS);\nadd(ERRORBAND, normalizeErrorBand, ERRORBAND_PARTS);\n//# sourceMappingURL=index.js.map","export const VL_ONLY_GUIDE_CONFIG = ['shortTimeLabels'];\nexport const VL_ONLY_LEGEND_CONFIG = [\n 'gradientHorizontalMaxLength',\n 'gradientHorizontalMinLength',\n 'gradientVerticalMaxLength',\n 'gradientVerticalMinLength'\n];\n//# sourceMappingURL=guide.js.map","import { flagKeys } from './util';\nexport const defaultLegendConfig = {\n gradientHorizontalMaxLength: 200,\n gradientHorizontalMinLength: 100,\n gradientVerticalMaxLength: 200,\n gradientVerticalMinLength: 64 // This is the Vega's minimum.\n};\nconst COMMON_LEGEND_PROPERTY_INDEX = {\n clipHeight: 1,\n columnPadding: 1,\n columns: 1,\n cornerRadius: 1,\n direction: 1,\n fillColor: 1,\n format: 1,\n formatType: 1,\n gradientLength: 1,\n gradientOpacity: 1,\n gradientStrokeColor: 1,\n gradientStrokeWidth: 1,\n gradientThickness: 1,\n gridAlign: 1,\n labelAlign: 1,\n labelBaseline: 1,\n labelColor: 1,\n labelFont: 1,\n labelFontSize: 1,\n labelFontStyle: 1,\n labelFontWeight: 1,\n labelLimit: 1,\n labelOffset: 1,\n labelOpacity: 1,\n labelOverlap: 1,\n labelPadding: 1,\n labelSeparation: 1,\n legendX: 1,\n legendY: 1,\n offset: 1,\n orient: 1,\n padding: 1,\n rowPadding: 1,\n strokeColor: 1,\n symbolDash: 1,\n symbolDashOffset: 1,\n symbolFillColor: 1,\n symbolOffset: 1,\n symbolOpacity: 1,\n symbolSize: 1,\n symbolStrokeColor: 1,\n symbolStrokeWidth: 1,\n symbolType: 1,\n tickCount: 1,\n tickMinStep: 1,\n title: 1,\n titleAlign: 1,\n titleAnchor: 1,\n titleBaseline: 1,\n titleColor: 1,\n titleFont: 1,\n titleFontSize: 1,\n titleFontStyle: 1,\n titleFontWeight: 1,\n titleLimit: 1,\n titleOpacity: 1,\n titleOrient: 1,\n titlePadding: 1,\n type: 1,\n values: 1,\n zindex: 1\n};\nconst VG_LEGEND_PROPERTY_INDEX = Object.assign({}, COMMON_LEGEND_PROPERTY_INDEX, { \n // channel scales\n opacity: 1, shape: 1, stroke: 1, fill: 1, size: 1, strokeWidth: 1, \n // encode\n encode: 1 });\nexport const LEGEND_PROPERTIES = flagKeys(COMMON_LEGEND_PROPERTY_INDEX);\nexport const VG_LEGEND_PROPERTIES = flagKeys(VG_LEGEND_PROPERTY_INDEX);\n//# sourceMappingURL=legend.js.map","import * as tslib_1 from \"tslib\";\nimport { toSet } from 'vega-util';\nimport * as CHANNEL from './channel';\nimport { CHANNELS, isColorChannel } from './channel';\nimport * as log from './log';\nimport * as TYPE from './type';\nimport { TYPE_INDEX } from './type';\nimport { contains, flagKeys, keys } from './util';\nexport var ScaleType;\n(function (ScaleType) {\n // Continuous - Quantitative\n ScaleType.LINEAR = 'linear';\n ScaleType.LOG = 'log';\n ScaleType.POW = 'pow';\n ScaleType.SQRT = 'sqrt';\n ScaleType.SYMLOG = 'symlog';\n // Continuous - Time\n ScaleType.TIME = 'time';\n ScaleType.UTC = 'utc';\n // Discretizing scales\n ScaleType.QUANTILE = 'quantile';\n ScaleType.QUANTIZE = 'quantize';\n ScaleType.THRESHOLD = 'threshold';\n ScaleType.BIN_ORDINAL = 'bin-ordinal';\n // Discrete scales\n ScaleType.ORDINAL = 'ordinal';\n ScaleType.POINT = 'point';\n ScaleType.BAND = 'band';\n})(ScaleType || (ScaleType = {}));\n/**\n * Index for scale categories -- only scale of the same categories can be merged together.\n * Current implementation is trying to be conservative and avoid merging scale type that might not work together\n */\nconst SCALE_CATEGORY_INDEX = {\n linear: 'numeric',\n log: 'numeric',\n pow: 'numeric',\n sqrt: 'numeric',\n symlog: 'numeric',\n time: 'time',\n utc: 'time',\n ordinal: 'ordinal',\n 'bin-ordinal': 'bin-ordinal',\n point: 'ordinal-position',\n band: 'ordinal-position',\n quantile: 'discretizing',\n quantize: 'discretizing',\n threshold: 'discretizing'\n};\nexport const SCALE_TYPES = keys(SCALE_CATEGORY_INDEX);\n/**\n * Whether the two given scale types can be merged together.\n */\nexport function scaleCompatible(scaleType1, scaleType2) {\n const scaleCategory1 = SCALE_CATEGORY_INDEX[scaleType1];\n const scaleCategory2 = SCALE_CATEGORY_INDEX[scaleType2];\n return (scaleCategory1 === scaleCategory2 ||\n (scaleCategory1 === 'ordinal-position' && scaleCategory2 === 'time') ||\n (scaleCategory2 === 'ordinal-position' && scaleCategory1 === 'time'));\n}\n/**\n * Index for scale precedence -- high score = higher priority for merging.\n */\nconst SCALE_PRECEDENCE_INDEX = {\n // numeric\n linear: 0,\n log: 1,\n pow: 1,\n sqrt: 1,\n symlog: 1,\n // time\n time: 0,\n utc: 0,\n // ordinal-position -- these have higher precedence than continuous scales as they support more types of data\n point: 10,\n band: 11,\n // non grouped types\n ordinal: 0,\n 'bin-ordinal': 0,\n quantile: 0,\n quantize: 0,\n threshold: 0\n};\n/**\n * Return scale categories -- only scale of the same categories can be merged together.\n */\nexport function scaleTypePrecedence(scaleType) {\n return SCALE_PRECEDENCE_INDEX[scaleType];\n}\nexport const CONTINUOUS_TO_CONTINUOUS_SCALES = ['linear', 'log', 'pow', 'sqrt', 'symlog', 'time', 'utc'];\nconst CONTINUOUS_TO_CONTINUOUS_INDEX = toSet(CONTINUOUS_TO_CONTINUOUS_SCALES);\nexport const CONTINUOUS_TO_DISCRETE_SCALES = ['quantile', 'quantize', 'threshold'];\nconst CONTINUOUS_TO_DISCRETE_INDEX = toSet(CONTINUOUS_TO_DISCRETE_SCALES);\nexport const CONTINUOUS_DOMAIN_SCALES = CONTINUOUS_TO_CONTINUOUS_SCALES.concat([\n 'quantile',\n 'quantize',\n 'threshold'\n]);\nconst CONTINUOUS_DOMAIN_INDEX = toSet(CONTINUOUS_DOMAIN_SCALES);\nexport const DISCRETE_DOMAIN_SCALES = ['ordinal', 'bin-ordinal', 'point', 'band'];\nconst DISCRETE_DOMAIN_INDEX = toSet(DISCRETE_DOMAIN_SCALES);\nexport const TIME_SCALE_TYPES = ['time', 'utc'];\nexport function hasDiscreteDomain(type) {\n return type in DISCRETE_DOMAIN_INDEX;\n}\nexport function hasContinuousDomain(type) {\n return type in CONTINUOUS_DOMAIN_INDEX;\n}\nexport function isContinuousToContinuous(type) {\n return type in CONTINUOUS_TO_CONTINUOUS_INDEX;\n}\nexport function isContinuousToDiscrete(type) {\n return type in CONTINUOUS_TO_DISCRETE_INDEX;\n}\nexport const defaultScaleConfig = {\n textXRangeStep: 90,\n rangeStep: 20,\n pointPadding: 0.5,\n barBandPaddingInner: 0.1,\n rectBandPaddingInner: 0,\n minBandSize: 2,\n minFontSize: 8,\n maxFontSize: 40,\n minOpacity: 0.3,\n maxOpacity: 0.8,\n // FIXME: revise if these *can* become ratios of rangeStep\n minSize: 9,\n minStrokeWidth: 1,\n maxStrokeWidth: 4,\n quantileCount: 4,\n quantizeCount: 4\n};\nexport function isExtendedScheme(scheme) {\n return scheme && !!scheme['name'];\n}\nexport function isSelectionDomain(domain) {\n return domain && domain['selection'];\n}\nconst SCALE_PROPERTY_INDEX = {\n type: 1,\n domain: 1,\n range: 1,\n rangeStep: 1,\n scheme: 1,\n bins: 1,\n // Other properties\n reverse: 1,\n round: 1,\n // quantitative / time\n clamp: 1,\n nice: 1,\n // quantitative\n base: 1,\n exponent: 1,\n constant: 1,\n interpolate: 1,\n zero: 1,\n // band/point\n padding: 1,\n paddingInner: 1,\n paddingOuter: 1\n};\nexport const SCALE_PROPERTIES = flagKeys(SCALE_PROPERTY_INDEX);\nconst { type, domain, range, rangeStep, scheme } = SCALE_PROPERTY_INDEX, NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX = tslib_1.__rest(SCALE_PROPERTY_INDEX, [\"type\", \"domain\", \"range\", \"rangeStep\", \"scheme\"]);\nexport const NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES = flagKeys(NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX);\nexport const SCALE_TYPE_INDEX = generateScaleTypeIndex();\nexport function scaleTypeSupportProperty(scaleType, propName) {\n switch (propName) {\n case 'type':\n case 'domain':\n case 'reverse':\n case 'range':\n return true;\n case 'scheme':\n case 'interpolate':\n return !contains(['point', 'band', 'identity'], scaleType);\n case 'bins':\n return !contains(['point', 'band', 'identity', 'ordinal'], scaleType);\n case 'round':\n return isContinuousToContinuous(scaleType) || scaleType === 'band' || scaleType === 'point';\n case 'padding':\n return isContinuousToContinuous(scaleType) || contains(['point', 'band'], scaleType);\n case 'paddingOuter':\n case 'rangeStep':\n return contains(['point', 'band'], scaleType);\n case 'paddingInner':\n return scaleType === 'band';\n case 'clamp':\n return isContinuousToContinuous(scaleType);\n case 'nice':\n return isContinuousToContinuous(scaleType) || scaleType === 'quantize' || scaleType === 'threshold';\n case 'exponent':\n return scaleType === 'pow';\n case 'base':\n return scaleType === 'log';\n case 'constant':\n return scaleType === 'symlog';\n case 'zero':\n return (hasContinuousDomain(scaleType) &&\n !contains([\n 'log',\n 'time',\n 'utc',\n 'threshold',\n 'quantile' // quantile depends on distribution so zero does not matter\n ], scaleType));\n }\n /* istanbul ignore next: should never reach here*/\n throw new Error(`Invalid scale property ${propName}.`);\n}\n/**\n * Returns undefined if the input channel supports the input scale property name\n */\nexport function channelScalePropertyIncompatability(channel, propName) {\n switch (propName) {\n case 'interpolate':\n case 'scheme':\n if (!isColorChannel(channel)) {\n return log.message.cannotUseScalePropertyWithNonColor(channel);\n }\n return undefined;\n case 'type':\n case 'bins':\n case 'domain':\n case 'range':\n case 'base':\n case 'exponent':\n case 'constant':\n case 'nice':\n case 'padding':\n case 'paddingInner':\n case 'paddingOuter':\n case 'rangeStep':\n case 'reverse':\n case 'round':\n case 'clamp':\n case 'zero':\n return undefined; // GOOD!\n }\n /* istanbul ignore next: it should never reach here */\n throw new Error(`Invalid scale property \"${propName}\".`);\n}\nexport function scaleTypeSupportDataType(specifiedType, fieldDefType) {\n if (contains([TYPE.ORDINAL, TYPE.NOMINAL], fieldDefType)) {\n return specifiedType === undefined || hasDiscreteDomain(specifiedType);\n }\n else if (fieldDefType === TYPE.TEMPORAL) {\n return contains([ScaleType.TIME, ScaleType.UTC, undefined], specifiedType);\n }\n else if (fieldDefType === TYPE.QUANTITATIVE) {\n return contains([\n ScaleType.LOG,\n ScaleType.POW,\n ScaleType.SQRT,\n ScaleType.SYMLOG,\n ScaleType.QUANTILE,\n ScaleType.QUANTIZE,\n ScaleType.THRESHOLD,\n ScaleType.LINEAR,\n undefined\n ], specifiedType);\n }\n return true;\n}\nexport function channelSupportScaleType(channel, scaleType) {\n switch (channel) {\n case CHANNEL.X:\n case CHANNEL.Y:\n return isContinuousToContinuous(scaleType) || contains(['band', 'point'], scaleType);\n case CHANNEL.SIZE: // TODO: size and opacity can support ordinal with more modification\n case CHANNEL.STROKEWIDTH:\n case CHANNEL.OPACITY:\n case CHANNEL.FILLOPACITY:\n case CHANNEL.STROKEOPACITY:\n // Although it generally doesn't make sense to use band with size and opacity,\n // it can also work since we use band: 0.5 to get midpoint.\n return (isContinuousToContinuous(scaleType) ||\n isContinuousToDiscrete(scaleType) ||\n contains(['band', 'point'], scaleType));\n case CHANNEL.COLOR:\n case CHANNEL.FILL:\n case CHANNEL.STROKE:\n return scaleType !== 'band'; // band does not make sense with color\n case CHANNEL.SHAPE:\n return scaleType === 'ordinal'; // shape = lookup only\n }\n /* istanbul ignore next: it should never reach here */\n return false;\n}\nexport function getSupportedScaleType(channel, fieldDefType) {\n return SCALE_TYPE_INDEX[generateScaleTypeIndexKey(channel, fieldDefType)];\n}\n// generates ScaleTypeIndex where keys are encoding channels and values are list of valid ScaleTypes\nfunction generateScaleTypeIndex() {\n const index = {};\n for (const channel of CHANNELS) {\n for (const fieldDefType of keys(TYPE_INDEX)) {\n for (const scaleType of SCALE_TYPES) {\n const key = generateScaleTypeIndexKey(channel, fieldDefType);\n if (channelSupportScaleType(channel, scaleType) && scaleTypeSupportDataType(scaleType, fieldDefType)) {\n index[key] = index[key] || [];\n index[key].push(scaleType);\n }\n }\n }\n }\n return index;\n}\nfunction generateScaleTypeIndexKey(channel, fieldDefType) {\n return channel + '_' + fieldDefType;\n}\n//# sourceMappingURL=scale.js.map","export const SELECTION_ID = '_vgsid_';\nexport function isIntervalSelection(s) {\n return s.type === 'interval';\n}\nexport const defaultConfig = {\n single: {\n on: 'click',\n fields: [SELECTION_ID],\n resolve: 'global',\n empty: 'all',\n clear: 'dblclick'\n },\n multi: {\n on: 'click',\n fields: [SELECTION_ID],\n toggle: 'event.shiftKey',\n resolve: 'global',\n empty: 'all',\n clear: 'dblclick'\n },\n interval: {\n on: '[mousedown, window:mouseup] > window:mousemove!',\n encodings: ['x', 'y'],\n translate: '[mousedown, window:mouseup] > window:mousemove!',\n zoom: 'wheel!',\n mark: { fill: '#333', fillOpacity: 0.125, stroke: 'white' },\n resolve: 'global',\n clear: 'dblclick'\n }\n};\n//# sourceMappingURL=selection.js.map","export function isAnyConcatSpec(spec) {\n return isVConcatSpec(spec) || isHConcatSpec(spec) || isConcatSpec(spec);\n}\nexport function isConcatSpec(spec) {\n return spec['concat'] !== undefined;\n}\nexport function isVConcatSpec(spec) {\n return spec['vconcat'] !== undefined;\n}\nexport function isHConcatSpec(spec) {\n return spec['hconcat'] !== undefined;\n}\n//# sourceMappingURL=concat.js.map","export function isRepeatSpec(spec) {\n return spec['repeat'] !== undefined;\n}\n//# sourceMappingURL=repeat.js.map","import { isArray, isNumber } from 'vega-util';\nimport { flagKeys } from '../util';\nimport { isConcatSpec } from './concat';\nimport { isFacetMapping, isFacetSpec } from './facet';\nimport { isRepeatSpec } from './repeat';\nexport const DEFAULT_SPACING = 20;\nconst COMPOSITION_LAYOUT_INDEX = {\n align: 1,\n bounds: 1,\n center: 1,\n columns: 1,\n spacing: 1\n};\nconst COMPOSITION_LAYOUT_PROPERTIES = flagKeys(COMPOSITION_LAYOUT_INDEX);\nexport function extractCompositionLayout(spec, specType, config) {\n const compositionConfig = config[specType];\n const layout = {};\n // Apply config first\n const { spacing: spacingConfig, columns } = compositionConfig;\n if (spacingConfig !== undefined) {\n layout.spacing = spacingConfig;\n }\n if (columns !== undefined) {\n if ((isFacetSpec(spec) && !isFacetMapping(spec.facet)) ||\n (isRepeatSpec(spec) && isArray(spec.repeat)) ||\n isConcatSpec(spec)) {\n layout.columns = columns;\n }\n }\n // Then copy properties from the spec\n for (const prop of COMPOSITION_LAYOUT_PROPERTIES) {\n if (spec[prop] !== undefined) {\n if (prop === 'spacing') {\n const spacing = spec[prop];\n layout[prop] = isNumber(spacing)\n ? spacing\n : {\n row: spacing.row || spacingConfig,\n column: spacing.column || spacingConfig\n };\n }\n else {\n layout[prop] = spec[prop];\n }\n }\n }\n return layout;\n}\n//# sourceMappingURL=base.js.map","import * as tslib_1 from \"tslib\";\nexport function extractTitleConfig(titleConfig) {\n const { \n // These are non-mark title config that need to be hardcoded\n anchor, frame, offset, orient, \n // color needs to be redirect to fill\n color } = titleConfig, \n // The rest are mark config.\n titleMarkConfig = tslib_1.__rest(titleConfig, [\"anchor\", \"frame\", \"offset\", \"orient\", \"color\"]);\n const mark = Object.assign({}, titleMarkConfig, (color ? { fill: color } : {}));\n const nonMark = Object.assign({}, (anchor ? { anchor } : {}), (frame ? { frame } : {}), (offset ? { offset } : {}), (orient ? { orient } : {}));\n return { mark, nonMark };\n}\n//# sourceMappingURL=title.js.map","import { isObject } from 'vega-util';\nimport { getAllCompositeMarks } from './compositemark';\nimport { VL_ONLY_GUIDE_CONFIG, VL_ONLY_LEGEND_CONFIG } from './guide';\nimport { defaultLegendConfig } from './legend';\nimport * as mark from './mark';\nimport { PRIMITIVE_MARKS, VL_ONLY_MARK_CONFIG_PROPERTIES, VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX } from './mark';\nimport { defaultScaleConfig } from './scale';\nimport { defaultConfig as defaultSelectionConfig } from './selection';\nimport { DEFAULT_SPACING } from './spec/base';\nimport { extractTitleConfig } from './title';\nimport { duplicate, keys, mergeDeep } from './util';\nexport const defaultViewConfig = {\n width: 200,\n height: 200\n};\nexport function isVgScheme(rangeConfig) {\n return rangeConfig && !!rangeConfig['scheme'];\n}\nexport const defaultConfig = {\n padding: 5,\n timeFormat: '%b %d, %Y',\n countTitle: 'Count of Records',\n invalidValues: 'filter',\n view: defaultViewConfig,\n mark: mark.defaultMarkConfig,\n area: {},\n bar: mark.defaultBarConfig,\n circle: {},\n geoshape: {},\n line: {},\n point: {},\n rect: {},\n rule: { color: 'black' },\n square: {},\n text: { color: 'black' },\n tick: mark.defaultTickConfig,\n trail: {},\n boxplot: {\n size: 14,\n extent: 1.5,\n box: {},\n median: { color: 'white' },\n outliers: {},\n rule: {},\n ticks: null\n },\n errorbar: {\n center: 'mean',\n rule: true,\n ticks: false\n },\n errorband: {\n band: {\n opacity: 0.3\n },\n borders: false\n },\n scale: defaultScaleConfig,\n projection: {},\n axis: {},\n axisX: {},\n axisY: {},\n axisLeft: {},\n axisRight: {},\n axisTop: {},\n axisBottom: {},\n axisBand: {},\n legend: defaultLegendConfig,\n header: { titlePadding: 10, labelPadding: 10 },\n headerColumn: {},\n headerRow: {},\n headerFacet: {},\n selection: defaultSelectionConfig,\n style: {},\n title: {},\n facet: { spacing: DEFAULT_SPACING },\n repeat: { spacing: DEFAULT_SPACING },\n concat: { spacing: DEFAULT_SPACING }\n};\nexport function initConfig(config) {\n return mergeDeep(duplicate(defaultConfig), config);\n}\nconst MARK_STYLES = ['view', ...PRIMITIVE_MARKS];\nconst VL_ONLY_CONFIG_PROPERTIES = [\n 'padding',\n 'facet',\n 'concat',\n 'repeat',\n 'numberFormat',\n 'timeFormat',\n 'countTitle',\n 'header',\n 'stack',\n 'scale',\n 'selection',\n 'invalidValues',\n 'overlay' // FIXME: Redesign and unhide this\n];\nconst VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = Object.assign({ view: ['width', 'height'] }, VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX);\nexport function stripAndRedirectConfig(config) {\n config = duplicate(config);\n for (const prop of VL_ONLY_CONFIG_PROPERTIES) {\n delete config[prop];\n }\n // Remove Vega-Lite only axis/legend config\n if (config.axis) {\n for (const prop of VL_ONLY_GUIDE_CONFIG) {\n delete config.axis[prop];\n }\n }\n if (config.legend) {\n for (const prop of VL_ONLY_GUIDE_CONFIG) {\n delete config.legend[prop];\n }\n for (const prop of VL_ONLY_LEGEND_CONFIG) {\n delete config.legend[prop];\n }\n }\n // Remove Vega-Lite only generic mark config\n if (config.mark) {\n for (const prop of VL_ONLY_MARK_CONFIG_PROPERTIES) {\n delete config.mark[prop];\n }\n }\n for (const markType of MARK_STYLES) {\n // Remove Vega-Lite-only mark config\n for (const prop of VL_ONLY_MARK_CONFIG_PROPERTIES) {\n delete config[markType][prop];\n }\n // Remove Vega-Lite only mark-specific config\n const vlOnlyMarkSpecificConfigs = VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX[markType];\n if (vlOnlyMarkSpecificConfigs) {\n for (const prop of vlOnlyMarkSpecificConfigs) {\n delete config[markType][prop];\n }\n }\n // Redirect mark config to config.style so that mark config only affect its own mark type\n // without affecting other marks that share the same underlying Vega marks.\n // For example, config.rect should not affect bar marks.\n redirectConfig(config, markType);\n }\n for (const m of getAllCompositeMarks()) {\n // Clean up the composite mark config as we don't need them in the output specs anymore\n delete config[m];\n }\n // Redirect config.title -- so that title config do not\n // affect header labels, which also uses `title` directive to implement.\n redirectConfig(config, 'title', 'group-title');\n // Remove empty config objects\n for (const prop in config) {\n if (isObject(config[prop]) && keys(config[prop]).length === 0) {\n delete config[prop];\n }\n }\n return keys(config).length > 0 ? config : undefined;\n}\nfunction redirectConfig(config, prop, // string = composite mark\ntoProp, compositeMarkPart) {\n const propConfig = prop === 'title'\n ? extractTitleConfig(config.title).mark\n : compositeMarkPart\n ? config[prop][compositeMarkPart]\n : config[prop];\n if (prop === 'view') {\n toProp = 'cell'; // View's default style is \"cell\"\n }\n const style = Object.assign({}, propConfig, config.style[prop]);\n // set config.style if it is not an empty object\n if (keys(style).length > 0) {\n config.style[toProp || prop] = style;\n }\n if (!compositeMarkPart) {\n // For composite mark, so don't delete the whole config yet as we have to do multiple redirections.\n delete config[prop];\n }\n}\n//# sourceMappingURL=config.js.map","export function isLayerSpec(spec) {\n return spec['layer'] !== undefined;\n}\n//# sourceMappingURL=layer.js.map","import * as tslib_1 from \"tslib\";\nimport * as log from '../log';\nimport { isConcatSpec, isHConcatSpec, isVConcatSpec } from './concat';\nimport { isFacetSpec } from './facet';\nimport { isLayerSpec } from './layer';\nimport { isRepeatSpec } from './repeat';\nimport { isUnitSpec } from './unit';\nexport class SpecMapper {\n map(spec, params) {\n if (isFacetSpec(spec)) {\n return this.mapFacet(spec, params);\n }\n else if (isRepeatSpec(spec)) {\n return this.mapRepeat(spec, params);\n }\n else if (isHConcatSpec(spec)) {\n return this.mapHConcat(spec, params);\n }\n else if (isVConcatSpec(spec)) {\n return this.mapVConcat(spec, params);\n }\n else if (isConcatSpec(spec)) {\n return this.mapConcat(spec, params);\n }\n else {\n return this.mapLayerOrUnit(spec, params);\n }\n }\n mapLayerOrUnit(spec, params) {\n if (isLayerSpec(spec)) {\n return this.mapLayer(spec, params);\n }\n else if (isUnitSpec(spec)) {\n return this.mapUnit(spec, params);\n }\n throw new Error(log.message.INVALID_SPEC);\n }\n mapLayer(spec, params) {\n return Object.assign({}, spec, { layer: spec.layer.map(subspec => this.mapLayerOrUnit(subspec, params)) });\n }\n mapHConcat(spec, params) {\n return Object.assign({}, spec, { hconcat: spec.hconcat.map(subspec => this.map(subspec, params)) });\n }\n mapVConcat(spec, params) {\n return Object.assign({}, spec, { vconcat: spec.vconcat.map(subspec => this.map(subspec, params)) });\n }\n mapConcat(spec, params) {\n const { concat } = spec, rest = tslib_1.__rest(spec, [\"concat\"]);\n return Object.assign({}, rest, { concat: concat.map(subspec => this.map(subspec, params)) });\n }\n mapFacet(spec, params) {\n return Object.assign({}, spec, { \n // TODO: remove \"any\" once we support all facet listed in https://github.com/vega/vega-lite/issues/2760\n spec: this.map(spec.spec, params) });\n }\n mapRepeat(spec, params) {\n return Object.assign({}, spec, { spec: this.map(spec.spec, params) });\n }\n}\n//# sourceMappingURL=map.js.map","import { isArray, isBoolean } from 'vega-util';\nimport { SUM_OPS } from './aggregate';\nimport { NONPOSITION_CHANNELS, X, X2, Y2 } from './channel';\nimport { getTypedFieldDef, isFieldDef, isStringFieldDef, vgField } from './channeldef';\nimport { channelHasField } from './encoding';\nimport * as log from './log';\nimport { AREA, BAR, CIRCLE, isMarkDef, isPathMark, LINE, POINT, RULE, SQUARE, TEXT, TICK } from './mark';\nimport { ScaleType } from './scale';\nimport { contains, getFirstDefined } from './util';\nconst STACK_OFFSET_INDEX = {\n zero: 1,\n center: 1,\n normalize: 1\n};\nexport function isStackOffset(s) {\n return !!STACK_OFFSET_INDEX[s];\n}\nexport const STACKABLE_MARKS = [BAR, AREA, RULE, POINT, CIRCLE, SQUARE, LINE, TEXT, TICK];\nexport const STACK_BY_DEFAULT_MARKS = [BAR, AREA];\nfunction potentialStackedChannel(encoding) {\n const xDef = encoding.x;\n const yDef = encoding.y;\n if (isFieldDef(xDef) && isFieldDef(yDef)) {\n if (xDef.type === 'quantitative' && yDef.type === 'quantitative') {\n if (xDef.stack) {\n return 'x';\n }\n else if (yDef.stack) {\n return 'y';\n }\n // if there is no explicit stacking, only apply stack if there is only one aggregate for x or y\n if (!!xDef.aggregate !== !!yDef.aggregate) {\n return xDef.aggregate ? 'x' : 'y';\n }\n }\n else if (xDef.type === 'quantitative') {\n return 'x';\n }\n else if (yDef.type === 'quantitative') {\n return 'y';\n }\n }\n else if (isFieldDef(xDef) && xDef.type === 'quantitative') {\n return 'x';\n }\n else if (isFieldDef(yDef) && yDef.type === 'quantitative') {\n return 'y';\n }\n return undefined;\n}\n// Note: CompassQL uses this method and only pass in required properties of each argument object.\n// If required properties change, make sure to update CompassQL.\nexport function stack(m, encoding, stackConfig, opt = {}) {\n const mark = isMarkDef(m) ? m.type : m;\n // Should have stackable mark\n if (!contains(STACKABLE_MARKS, mark)) {\n return null;\n }\n const fieldChannel = potentialStackedChannel(encoding);\n if (!fieldChannel) {\n return null;\n }\n const stackedFieldDef = encoding[fieldChannel];\n const stackedField = isStringFieldDef(stackedFieldDef) ? vgField(stackedFieldDef, {}) : undefined;\n const dimensionChannel = fieldChannel === 'x' ? 'y' : 'x';\n const dimensionDef = encoding[dimensionChannel];\n const dimensionField = isStringFieldDef(dimensionDef) ? vgField(dimensionDef, {}) : undefined;\n // Should have grouping level of detail that is different from the dimension field\n const stackBy = NONPOSITION_CHANNELS.reduce((sc, channel) => {\n // Ignore tooltip in stackBy (https://github.com/vega/vega-lite/issues/4001)\n if (channel !== 'tooltip' && channelHasField(encoding, channel)) {\n const channelDef = encoding[channel];\n (isArray(channelDef) ? channelDef : [channelDef]).forEach(cDef => {\n const fieldDef = getTypedFieldDef(cDef);\n if (fieldDef.aggregate) {\n return;\n }\n // Check whether the channel's field is identical to x/y's field or if the channel is a repeat\n const f = isStringFieldDef(fieldDef) ? vgField(fieldDef, {}) : undefined;\n if (\n // if fielddef is a repeat, just include it in the stack by\n !f ||\n // otherwise, the field must be different from x and y fields.\n (f !== dimensionField && f !== stackedField)) {\n sc.push({ channel, fieldDef });\n }\n });\n }\n return sc;\n }, []);\n if (stackBy.length === 0) {\n return null;\n }\n // Automatically determine offset\n let offset;\n if (stackedFieldDef.stack !== undefined) {\n if (isBoolean(stackedFieldDef.stack)) {\n offset = stackedFieldDef.stack ? 'zero' : null;\n }\n else {\n offset = stackedFieldDef.stack;\n }\n }\n else if (contains(STACK_BY_DEFAULT_MARKS, mark)) {\n // Bar and Area with sum ops are automatically stacked by default\n offset = getFirstDefined(stackConfig, 'zero');\n }\n else {\n offset = stackConfig;\n }\n if (!offset || !isStackOffset(offset)) {\n return null;\n }\n // warn when stacking non-linear\n if (stackedFieldDef.scale && stackedFieldDef.scale.type && stackedFieldDef.scale.type !== ScaleType.LINEAR) {\n if (opt.disallowNonLinearStack) {\n return null;\n }\n else {\n log.warn(log.message.cannotStackNonLinearScale(stackedFieldDef.scale.type));\n }\n }\n // Check if it is a ranged mark\n if (channelHasField(encoding, fieldChannel === X ? X2 : Y2)) {\n if (stackedFieldDef.stack !== undefined) {\n log.warn(log.message.cannotStackRangedMark(fieldChannel));\n }\n return null;\n }\n // Warn if stacking summative aggregate\n if (stackedFieldDef.aggregate && !contains(SUM_OPS, stackedFieldDef.aggregate)) {\n log.warn(log.message.stackNonSummativeAggregate(stackedFieldDef.aggregate));\n }\n return {\n groupbyChannel: dimensionDef ? dimensionChannel : undefined,\n fieldChannel,\n impute: isPathMark(mark),\n stackBy,\n offset\n };\n}\n//# sourceMappingURL=stack.js.map","import * as tslib_1 from \"tslib\";\nimport { isObject } from 'vega-util';\nimport { isMarkDef } from '../mark';\nimport { isUnitSpec } from '../spec/unit';\nimport { stack } from '../stack';\nimport { keys, omit, pick } from '../util';\nfunction dropLineAndPoint(markDef) {\n const { point: _point, line: _line } = markDef, mark = tslib_1.__rest(markDef, [\"point\", \"line\"]);\n return keys(mark).length > 1 ? mark : mark.type;\n}\nfunction dropLineAndPointFromConfig(config) {\n for (const mark of ['line', 'area', 'rule', 'trail']) {\n if (config[mark]) {\n config = Object.assign({}, config, { [mark]: omit(config[mark], ['point', 'line']) });\n }\n }\n return config;\n}\nfunction getPointOverlay(markDef, markConfig = {}, encoding) {\n if (markDef.point === 'transparent') {\n return { opacity: 0 };\n }\n else if (markDef.point) {\n // truthy : true or object\n return isObject(markDef.point) ? markDef.point : {};\n }\n else if (markDef.point !== undefined) {\n // false or null\n return null;\n }\n else {\n // undefined (not disabled)\n if (markConfig.point || encoding.shape) {\n // enable point overlay if config[mark].point is truthy or if encoding.shape is provided\n return isObject(markConfig.point) ? markConfig.point : {};\n }\n // markDef.point is defined as falsy\n return undefined;\n }\n}\nfunction getLineOverlay(markDef, markConfig = {}) {\n if (markDef.line) {\n // true or object\n return markDef.line === true ? {} : markDef.line;\n }\n else if (markDef.line !== undefined) {\n // false or null\n return null;\n }\n else {\n // undefined (not disabled)\n if (markConfig.line) {\n // enable line overlay if config[mark].line is truthy\n return markConfig.line === true ? {} : markConfig.line;\n }\n // markDef.point is defined as falsy\n return undefined;\n }\n}\nexport class PathOverlayNormalizer {\n constructor() {\n this.name = 'path-overlay';\n }\n hasMatchingType(spec, config) {\n if (isUnitSpec(spec)) {\n const { mark, encoding } = spec;\n const markDef = isMarkDef(mark) ? mark : { type: mark };\n switch (markDef.type) {\n case 'line':\n case 'rule':\n case 'trail':\n return !!getPointOverlay(markDef, config[markDef.type], encoding);\n case 'area':\n return (\n // false / null are also included as we want to remove the properties\n !!getPointOverlay(markDef, config[markDef.type], encoding) ||\n !!getLineOverlay(markDef, config[markDef.type]));\n }\n }\n return false;\n }\n run(spec, params, normalize) {\n const { config } = params;\n const { selection, projection, encoding, mark } = spec, outerSpec = tslib_1.__rest(spec, [\"selection\", \"projection\", \"encoding\", \"mark\"]);\n const markDef = isMarkDef(mark) ? mark : { type: mark };\n const pointOverlay = getPointOverlay(markDef, config[markDef.type], encoding);\n const lineOverlay = markDef.type === 'area' && getLineOverlay(markDef, config[markDef.type]);\n const layer = [\n Object.assign({}, (selection ? { selection } : {}), { \n // Do not include point / line overlay in the normalize spec\n mark: dropLineAndPoint(Object.assign({}, markDef, (markDef.type === 'area' ? { opacity: 0.7 } : {}))), \n // drop shape from encoding as this might be used to trigger point overlay\n encoding: omit(encoding, ['shape']) })\n ];\n // FIXME: determine rules for applying selections.\n // Need to copy stack config to overlayed layer\n const stackProps = stack(markDef, encoding, config ? config.stack : undefined);\n let overlayEncoding = encoding;\n if (stackProps) {\n const { fieldChannel: stackFieldChannel, offset } = stackProps;\n overlayEncoding = Object.assign({}, encoding, { [stackFieldChannel]: Object.assign({}, encoding[stackFieldChannel], (offset ? { stack: offset } : {})) });\n }\n if (lineOverlay) {\n layer.push(Object.assign({}, (projection ? { projection } : {}), { mark: Object.assign({ type: 'line' }, pick(markDef, ['clip', 'interpolate', 'tension']), lineOverlay), encoding: overlayEncoding }));\n }\n if (pointOverlay) {\n layer.push(Object.assign({}, (projection ? { projection } : {}), { mark: Object.assign({ type: 'point', opacity: 1, filled: true }, pick(markDef, ['clip']), pointOverlay), encoding: overlayEncoding }));\n }\n return normalize(Object.assign({}, outerSpec, { layer }), Object.assign({}, params, { config: dropLineAndPointFromConfig(config) }));\n }\n}\n//# sourceMappingURL=pathoverlay.js.map","import { getMainRangeChannel, SECONDARY_RANGE_CHANNEL } from '../channel';\nimport { isFieldDef } from '../channeldef';\nimport * as log from '../log';\nimport { isUnitSpec } from '../spec/unit';\nexport class RuleForRangedLineNormalizer {\n constructor() {\n this.name = 'RuleForRangedLine';\n }\n hasMatchingType(spec) {\n if (isUnitSpec(spec)) {\n const { encoding, mark } = spec;\n if (mark === 'line') {\n for (const channel of SECONDARY_RANGE_CHANNEL) {\n const mainChannel = getMainRangeChannel(channel);\n const mainChannelDef = encoding[mainChannel];\n if (!!encoding[channel] && isFieldDef(mainChannelDef) && mainChannelDef.bin !== 'binned') {\n return true;\n }\n }\n }\n }\n return false;\n }\n run(spec, params, normalize) {\n const { encoding } = spec;\n log.warn(log.message.lineWithRange(!!encoding.x2, !!encoding.y2));\n return normalize(Object.assign({}, spec, { mark: 'rule' }), params);\n }\n}\n//# sourceMappingURL=ruleforrangedline.js.map","import * as tslib_1 from \"tslib\";\nimport { isArray } from 'vega-util';\nimport { COLUMN, FACET, ROW } from '../channel';\nimport { boxPlotNormalizer } from '../compositemark/boxplot';\nimport { errorBandNormalizer } from '../compositemark/errorband';\nimport { errorBarNormalizer } from '../compositemark/errorbar';\nimport { channelHasField } from '../encoding';\nimport * as log from '../log';\nimport { isFacetMapping } from '../spec/facet';\nimport { SpecMapper } from '../spec/map';\nimport { isUnitSpec } from '../spec/unit';\nimport { keys, omit } from '../util';\nimport { PathOverlayNormalizer } from './pathoverlay';\nimport { RuleForRangedLineNormalizer } from './ruleforrangedline';\nexport class CoreNormalizer extends SpecMapper {\n constructor() {\n super(...arguments);\n this.nonFacetUnitNormalizers = [\n boxPlotNormalizer,\n errorBarNormalizer,\n errorBandNormalizer,\n new PathOverlayNormalizer(),\n new RuleForRangedLineNormalizer()\n ];\n }\n map(spec, params) {\n // Special handling for a faceted unit spec as it can return a facet spec, not just a layer or unit spec like a normal unit spec.\n if (isUnitSpec(spec)) {\n const hasRow = channelHasField(spec.encoding, ROW);\n const hasColumn = channelHasField(spec.encoding, COLUMN);\n const hasFacet = channelHasField(spec.encoding, FACET);\n if (hasRow || hasColumn || hasFacet) {\n return this.mapFacetedUnit(spec, params);\n }\n }\n return super.map(spec, params);\n }\n // This is for normalizing non-facet unit\n mapUnit(spec, params) {\n const { parentEncoding, parentProjection } = params;\n if (parentEncoding || parentProjection) {\n return this.mapUnitWithParentEncodingOrProjection(spec, params);\n }\n const normalizeLayerOrUnit = this.mapLayerOrUnit.bind(this);\n for (const unitNormalizer of this.nonFacetUnitNormalizers) {\n if (unitNormalizer.hasMatchingType(spec, params.config)) {\n return unitNormalizer.run(spec, params, normalizeLayerOrUnit);\n }\n }\n return spec;\n }\n mapRepeat(spec, params) {\n const { repeat } = spec;\n if (!isArray(repeat) && spec.columns) {\n // is repeat with row/column\n spec = omit(spec, ['columns']);\n log.warn(log.message.columnsNotSupportByRowCol('repeat'));\n }\n return Object.assign({}, spec, { spec: this.map(spec.spec, params) });\n }\n mapFacet(spec, params) {\n const { facet } = spec;\n if (isFacetMapping(facet) && spec.columns) {\n // is facet with row/column\n spec = omit(spec, ['columns']);\n log.warn(log.message.columnsNotSupportByRowCol('facet'));\n }\n return super.mapFacet(spec, params);\n }\n mapUnitWithParentEncodingOrProjection(spec, params) {\n const { encoding, projection } = spec;\n const { parentEncoding, parentProjection, config } = params;\n const mergedProjection = mergeProjection({ parentProjection, projection });\n const mergedEncoding = mergeEncoding({ parentEncoding, encoding });\n return this.mapUnit(Object.assign({}, spec, (mergedProjection ? { projection: mergedProjection } : {}), (mergedEncoding ? { encoding: mergedEncoding } : {})), { config });\n }\n mapFacetedUnit(spec, params) {\n // New encoding in the inside spec should not contain row / column\n // as row/column should be moved to facet\n const _a = spec.encoding, { row, column, facet } = _a, encoding = tslib_1.__rest(_a, [\"row\", \"column\", \"facet\"]);\n // Mark and encoding should be moved into the inner spec\n const { mark, width, projection, height, selection, encoding: _ } = spec, outerSpec = tslib_1.__rest(spec, [\"mark\", \"width\", \"projection\", \"height\", \"selection\", \"encoding\"]);\n if (facet && (row || column)) {\n log.warn(log.message.facetChannelDropped([...(row ? [ROW] : []), ...(column ? [COLUMN] : [])]));\n }\n return this.mapFacet(Object.assign({}, outerSpec, { \n // row / column has higher precedence than facet\n facet: row || column\n ? Object.assign({}, (row ? { row } : {}), (column ? { column } : {})) : facet, spec: Object.assign({}, (projection ? { projection } : {}), { mark }, (width ? { width } : {}), (height ? { height } : {}), { encoding }, (selection ? { selection } : {})) }), params);\n }\n mapLayer(spec, _a) {\n // Special handling for extended layer spec\n var { parentEncoding, parentProjection } = _a, otherParams = tslib_1.__rest(_a, [\"parentEncoding\", \"parentProjection\"]);\n const { encoding, projection } = spec, rest = tslib_1.__rest(spec, [\"encoding\", \"projection\"]);\n const params = Object.assign({}, otherParams, { parentEncoding: mergeEncoding({ parentEncoding, encoding }), parentProjection: mergeProjection({ parentProjection, projection }) });\n return super.mapLayer(rest, params);\n }\n}\nfunction mergeEncoding(opt) {\n const { parentEncoding, encoding } = opt;\n if (parentEncoding && encoding) {\n const overriden = keys(parentEncoding).reduce((o, key) => {\n if (encoding[key]) {\n o.push(key);\n }\n return o;\n }, []);\n if (overriden.length > 0) {\n log.warn(log.message.encodingOverridden(overriden));\n }\n }\n const merged = Object.assign({}, (parentEncoding || {}), (encoding || {}));\n return keys(merged).length > 0 ? merged : undefined;\n}\nfunction mergeProjection(opt) {\n const { parentProjection, projection } = opt;\n if (parentProjection && projection) {\n log.warn(log.message.projectionOverridden({ parentProjection, projection }));\n }\n return projection || parentProjection;\n}\n//# sourceMappingURL=core.js.map","import { initConfig } from '../config';\nimport { CoreNormalizer } from './core';\nexport function normalize(spec, config) {\n if (config === undefined) {\n config = initConfig(spec.config);\n }\n return normalizeGenericSpec(spec, config);\n}\nconst normalizer = new CoreNormalizer();\n/**\n * Decompose extended unit specs into composition of pure unit specs.\n */\nfunction normalizeGenericSpec(spec, config = {}) {\n return normalizer.map(spec, { config });\n}\n//# sourceMappingURL=index.js.map","import { isString } from 'vega-util';\nimport * as log from '../log';\nfunction _normalizeAutoSize(autosize) {\n return isString(autosize) ? { type: autosize } : autosize || {};\n}\nexport function normalizeAutoSize(topLevelAutosize, configAutosize, isUnitOrLayer = true) {\n const autosize = Object.assign({ type: 'pad' }, _normalizeAutoSize(configAutosize), _normalizeAutoSize(topLevelAutosize));\n if (autosize.type === 'fit') {\n if (!isUnitOrLayer) {\n log.warn(log.message.FIT_NON_SINGLE);\n autosize.type = 'pad';\n }\n }\n return autosize;\n}\nconst TOP_LEVEL_PROPERTIES = [\n 'background',\n 'padding'\n // We do not include \"autosize\" here as it is supported by only unit and layer specs and thus need to be normalized\n];\nexport function extractTopLevelProperties(t) {\n return TOP_LEVEL_PROPERTIES.reduce((o, p) => {\n if (t && t[p] !== undefined) {\n o[p] = t[p];\n }\n return o;\n }, {});\n}\n//# sourceMappingURL=toplevel.js.map","export function isUrlData(data) {\n return !!data['url'];\n}\nexport function isInlineData(data) {\n return !!data['values'];\n}\nexport function isNamedData(data) {\n return !!data['name'] && !isUrlData(data) && !isInlineData(data) && !isGenerator(data);\n}\nexport function isGenerator(data) {\n return data && (isSequenceGenerator(data) || isSphereGenerator(data) || isGraticuleGenerator(data));\n}\nexport function isSequenceGenerator(data) {\n return !!data['sequence'];\n}\nexport function isSphereGenerator(data) {\n return !!data['sphere'];\n}\nexport function isGraticuleGenerator(data) {\n return !!data['graticule'];\n}\nexport const MAIN = 'main';\nexport const RAW = 'raw';\n//# sourceMappingURL=data.js.map","import { isArray } from 'vega-util';\nimport { valueExpr, vgField } from './channeldef';\nimport { fieldExpr as timeUnitFieldExpr, normalizeTimeUnit } from './timeunit';\nexport function isSelectionPredicate(predicate) {\n return predicate && predicate['selection'];\n}\nexport function isFieldEqualPredicate(predicate) {\n return predicate && !!predicate.field && predicate.equal !== undefined;\n}\nexport function isFieldLTPredicate(predicate) {\n return predicate && !!predicate.field && predicate.lt !== undefined;\n}\nexport function isFieldLTEPredicate(predicate) {\n return predicate && !!predicate.field && predicate.lte !== undefined;\n}\nexport function isFieldGTPredicate(predicate) {\n return predicate && !!predicate.field && predicate.gt !== undefined;\n}\nexport function isFieldGTEPredicate(predicate) {\n return predicate && !!predicate.field && predicate.gte !== undefined;\n}\nexport function isFieldRangePredicate(predicate) {\n if (predicate && predicate.field) {\n if (isArray(predicate.range) && predicate.range.length === 2) {\n return true;\n }\n }\n return false;\n}\nexport function isFieldOneOfPredicate(predicate) {\n return (predicate && !!predicate.field && (isArray(predicate.oneOf) || isArray(predicate.in)) // backward compatibility\n );\n}\nexport function isFieldValidPredicate(predicate) {\n return predicate && !!predicate.field && predicate.valid !== undefined;\n}\nexport function isFieldPredicate(predicate) {\n return (isFieldOneOfPredicate(predicate) ||\n isFieldEqualPredicate(predicate) ||\n isFieldRangePredicate(predicate) ||\n isFieldLTPredicate(predicate) ||\n isFieldGTPredicate(predicate) ||\n isFieldLTEPredicate(predicate) ||\n isFieldGTEPredicate(predicate));\n}\nfunction predicateValueExpr(v, timeUnit) {\n return valueExpr(v, { timeUnit, time: true });\n}\nfunction predicateValuesExpr(vals, timeUnit) {\n return vals.map(v => predicateValueExpr(v, timeUnit));\n}\n// This method is used by Voyager. Do not change its behavior without changing Voyager.\nexport function fieldFilterExpression(predicate, useInRange = true) {\n const { field, timeUnit } = predicate;\n const fieldExpr = timeUnit\n ? // For timeUnit, cast into integer with time() so we can use ===, inrange, indexOf to compare values directly.\n // TODO: We calculate timeUnit on the fly here. Consider if we would like to consolidate this with timeUnit pipeline\n // TODO: support utc\n 'time(' + timeUnitFieldExpr(timeUnit, field) + ')'\n : vgField(predicate, { expr: 'datum' });\n if (isFieldEqualPredicate(predicate)) {\n return fieldExpr + '===' + predicateValueExpr(predicate.equal, timeUnit);\n }\n else if (isFieldLTPredicate(predicate)) {\n const upper = predicate.lt;\n return `${fieldExpr}<${predicateValueExpr(upper, timeUnit)}`;\n }\n else if (isFieldGTPredicate(predicate)) {\n const lower = predicate.gt;\n return `${fieldExpr}>${predicateValueExpr(lower, timeUnit)}`;\n }\n else if (isFieldLTEPredicate(predicate)) {\n const upper = predicate.lte;\n return `${fieldExpr}<=${predicateValueExpr(upper, timeUnit)}`;\n }\n else if (isFieldGTEPredicate(predicate)) {\n const lower = predicate.gte;\n return `${fieldExpr}>=${predicateValueExpr(lower, timeUnit)}`;\n }\n else if (isFieldOneOfPredicate(predicate)) {\n return `indexof([${predicateValuesExpr(predicate.oneOf, timeUnit).join(',')}], ${fieldExpr}) !== -1`;\n }\n else if (isFieldValidPredicate(predicate)) {\n return predicate.valid ? `${fieldExpr}!==null&&!isNaN(${fieldExpr})` : `${fieldExpr}===null||isNaN(${fieldExpr})`;\n }\n else if (isFieldRangePredicate(predicate)) {\n const lower = predicate.range[0];\n const upper = predicate.range[1];\n if (lower !== null && upper !== null && useInRange) {\n return ('inrange(' +\n fieldExpr +\n ', [' +\n predicateValueExpr(lower, timeUnit) +\n ', ' +\n predicateValueExpr(upper, timeUnit) +\n '])');\n }\n const exprs = [];\n if (lower !== null) {\n exprs.push(`${fieldExpr} >= ${predicateValueExpr(lower, timeUnit)}`);\n }\n if (upper !== null) {\n exprs.push(`${fieldExpr} <= ${predicateValueExpr(upper, timeUnit)}`);\n }\n return exprs.length > 0 ? exprs.join(' && ') : 'true';\n }\n /* istanbul ignore next: it should never reach here */\n throw new Error(`Invalid field predicate: ${JSON.stringify(predicate)}`);\n}\nexport function normalizePredicate(f) {\n if (isFieldPredicate(f) && f.timeUnit) {\n return Object.assign({}, f, { timeUnit: normalizeTimeUnit(f.timeUnit) });\n }\n return f;\n}\n//# sourceMappingURL=predicate.js.map","import { normalizeLogicalOperand } from './logical';\nimport { normalizePredicate } from './predicate';\nexport function isFilter(t) {\n return t['filter'] !== undefined;\n}\nexport function isImputeSequence(t) {\n return t && t['start'] !== undefined && t['stop'] !== undefined;\n}\nexport function isLookup(t) {\n return t['lookup'] !== undefined;\n}\nexport function isSample(t) {\n return t['sample'] !== undefined;\n}\nexport function isWindow(t) {\n return t['window'] !== undefined;\n}\nexport function isJoinAggregate(t) {\n return t['joinaggregate'] !== undefined;\n}\nexport function isFlatten(t) {\n return t['flatten'] !== undefined;\n}\nexport function isCalculate(t) {\n return t['calculate'] !== undefined;\n}\nexport function isBin(t) {\n return !!t['bin'];\n}\nexport function isImpute(t) {\n return t['impute'] !== undefined;\n}\nexport function isTimeUnit(t) {\n return t['timeUnit'] !== undefined;\n}\nexport function isAggregate(t) {\n return t['aggregate'] !== undefined;\n}\nexport function isStack(t) {\n return t['stack'] !== undefined;\n}\nexport function isFold(t) {\n return t['fold'] !== undefined;\n}\nexport function normalizeTransform(transform) {\n return transform.map(t => {\n if (isFilter(t)) {\n return {\n filter: normalizeLogicalOperand(t.filter, normalizePredicate)\n };\n }\n return t;\n });\n}\n//# sourceMappingURL=transform.js.map","import { isArray } from 'vega-util';\nimport { flagKeys } from './util';\nexport function isSignalRef(o) {\n return !!o['signal'];\n}\nexport function isVgRangeStep(range) {\n return !!range['step'];\n}\nexport function isDataRefUnionedDomain(domain) {\n if (!isArray(domain)) {\n return 'fields' in domain && !('data' in domain);\n }\n return false;\n}\nexport function isFieldRefUnionDomain(domain) {\n if (!isArray(domain)) {\n return 'fields' in domain && 'data' in domain;\n }\n return false;\n}\nexport function isDataRefDomain(domain) {\n if (!isArray(domain)) {\n return 'field' in domain && 'data' in domain;\n }\n return false;\n}\nconst VG_MARK_CONFIG_INDEX = {\n opacity: 1,\n fill: 1,\n fillOpacity: 1,\n stroke: 1,\n strokeCap: 1,\n strokeWidth: 1,\n strokeOpacity: 1,\n strokeDash: 1,\n strokeDashOffset: 1,\n strokeJoin: 1,\n strokeMiterLimit: 1,\n size: 1,\n shape: 1,\n interpolate: 1,\n tension: 1,\n orient: 1,\n align: 1,\n baseline: 1,\n text: 1,\n dir: 1,\n dx: 1,\n dy: 1,\n ellipsis: 1,\n limit: 1,\n radius: 1,\n theta: 1,\n angle: 1,\n font: 1,\n fontSize: 1,\n fontWeight: 1,\n fontStyle: 1,\n cursor: 1,\n href: 1,\n tooltip: 1,\n cornerRadius: 1,\n x: 1,\n y: 1,\n x2: 1,\n y2: 1\n // commented below are vg channel that do not have mark config.\n // xc'|'width'|'yc'|'height'\n // clip: 1,\n // endAngle: 1,\n // innerRadius: 1,\n // outerRadius: 1,\n // path: 1,\n // startAngle: 1,\n // url: 1,\n};\nexport const VG_MARK_CONFIGS = flagKeys(VG_MARK_CONFIG_INDEX);\n//# sourceMappingURL=vega.schema.js.map","import { flagKeys } from './util';\nexport const AXIS_PARTS = ['domain', 'grid', 'labels', 'ticks', 'title'];\n/**\n * A dictionary listing whether a certain axis property is applicable for only main axes or only grid axes.\n * (Properties not listed are applicable for both)\n */\nexport const AXIS_PROPERTY_TYPE = {\n grid: 'grid',\n gridColor: 'grid',\n gridDash: 'grid',\n gridOpacity: 'grid',\n gridScale: 'grid',\n gridWidth: 'grid',\n orient: 'main',\n bandPosition: 'both',\n domain: 'main',\n domainColor: 'main',\n domainOpacity: 'main',\n domainWidth: 'main',\n format: 'main',\n formatType: 'main',\n labelAlign: 'main',\n labelAngle: 'main',\n labelBaseline: 'main',\n labelBound: 'main',\n labelColor: 'main',\n labelFlush: 'main',\n labelFlushOffset: 'main',\n labelFont: 'main',\n labelFontSize: 'main',\n labelFontWeight: 'main',\n labelLimit: 'main',\n labelOpacity: 'main',\n labelOverlap: 'main',\n labelPadding: 'main',\n labels: 'main',\n maxExtent: 'main',\n minExtent: 'main',\n offset: 'main',\n position: 'main',\n tickColor: 'main',\n tickExtra: 'main',\n tickOffset: 'both',\n tickOpacity: 'main',\n tickRound: 'main',\n ticks: 'main',\n tickSize: 'main',\n title: 'main',\n titleAlign: 'main',\n titleAngle: 'main',\n titleBaseline: 'main',\n titleColor: 'main',\n titleFont: 'main',\n titleFontSize: 'main',\n titleFontWeight: 'main',\n titleLimit: 'main',\n titleOpacity: 'main',\n titlePadding: 'main',\n titleX: 'main',\n titleY: 'main',\n tickWidth: 'both',\n tickCount: 'both',\n values: 'both',\n scale: 'both',\n zindex: 'both' // this is actually set afterward, so it doesn't matter\n};\nconst COMMON_AXIS_PROPERTIES_INDEX = {\n orient: 1,\n bandPosition: 1,\n domain: 1,\n domainColor: 1,\n domainDash: 1,\n domainDashOffset: 1,\n domainOpacity: 1,\n domainWidth: 1,\n format: 1,\n formatType: 1,\n grid: 1,\n gridColor: 1,\n gridDash: 1,\n gridDashOffset: 1,\n gridOpacity: 1,\n gridWidth: 1,\n labelAlign: 1,\n labelAngle: 1,\n labelBaseline: 1,\n labelBound: 1,\n labelColor: 1,\n labelFlush: 1,\n labelFlushOffset: 1,\n labelFont: 1,\n labelFontSize: 1,\n labelFontStyle: 1,\n labelFontWeight: 1,\n labelLimit: 1,\n labelOpacity: 1,\n labelOverlap: 1,\n labelPadding: 1,\n labels: 1,\n labelSeparation: 1,\n maxExtent: 1,\n minExtent: 1,\n offset: 1,\n position: 1,\n tickColor: 1,\n tickCount: 1,\n tickDash: 1,\n tickDashOffset: 1,\n tickExtra: 1,\n tickMinStep: 1,\n tickOffset: 1,\n tickOpacity: 1,\n tickRound: 1,\n ticks: 1,\n tickSize: 1,\n tickWidth: 1,\n title: 1,\n titleAlign: 1,\n titleAnchor: 1,\n titleAngle: 1,\n titleBaseline: 1,\n titleColor: 1,\n titleFont: 1,\n titleFontSize: 1,\n titleFontStyle: 1,\n titleFontWeight: 1,\n titleLimit: 1,\n titleOpacity: 1,\n titlePadding: 1,\n titleX: 1,\n titleY: 1,\n values: 1,\n zindex: 1\n};\nconst AXIS_PROPERTIES_INDEX = Object.assign({}, COMMON_AXIS_PROPERTIES_INDEX, { encoding: 1 });\nconst VG_AXIS_PROPERTIES_INDEX = Object.assign({ gridScale: 1, scale: 1 }, COMMON_AXIS_PROPERTIES_INDEX, { encode: 1 });\nexport function isAxisProperty(prop) {\n return !!AXIS_PROPERTIES_INDEX[prop];\n}\nexport const VG_AXIS_PROPERTIES = flagKeys(VG_AXIS_PROPERTIES_INDEX);\n// Export for dependent projects\nexport const AXIS_PROPERTIES = flagKeys(AXIS_PROPERTIES_INDEX);\n//# sourceMappingURL=axis.js.map","import * as tslib_1 from \"tslib\";\nimport { isArray } from 'vega-util';\nimport { AXIS_PARTS, AXIS_PROPERTY_TYPE } from '../../axis';\nimport { POSITION_SCALE_CHANNELS } from '../../channel';\nimport { defaultTitle } from '../../channeldef';\nimport { getFirstDefined, keys } from '../../util';\nfunction assembleTitle(title, config) {\n if (isArray(title)) {\n return title.map(fieldDef => defaultTitle(fieldDef, config)).join(', ');\n }\n return title;\n}\nexport function assembleAxis(axisCmpt, kind, config, opt = { header: false }) {\n const _a = axisCmpt.combine(), { orient, scale, title, zindex } = _a, axis = tslib_1.__rest(_a, [\"orient\", \"scale\", \"title\", \"zindex\"]);\n // Remove properties that are not valid for this kind of axis\n keys(axis).forEach(key => {\n const propType = AXIS_PROPERTY_TYPE[key];\n if (propType && propType !== kind && propType !== 'both') {\n delete axis[key];\n }\n });\n if (kind === 'grid') {\n if (!axis.grid) {\n return undefined;\n }\n // Remove unnecessary encode block\n if (axis.encode) {\n // Only need to keep encode block for grid\n const { grid } = axis.encode;\n axis.encode = Object.assign({}, (grid ? { grid } : {}));\n if (keys(axis.encode).length === 0) {\n delete axis.encode;\n }\n }\n return Object.assign({ scale,\n orient }, axis, { domain: false, labels: false, \n // Always set min/maxExtent to 0 to ensure that `config.axis*.minExtent` and `config.axis*.maxExtent`\n // would not affect gridAxis\n maxExtent: 0, minExtent: 0, ticks: false, zindex: getFirstDefined(zindex, 0) // put grid behind marks by default\n });\n }\n else {\n // kind === 'main'\n if (!opt.header && axisCmpt.mainExtracted) {\n // if mainExtracted has been extracted to a separate facet\n return undefined;\n }\n // Remove unnecessary encode block\n if (axis.encode) {\n for (const part of AXIS_PARTS) {\n if (!axisCmpt.hasAxisPart(part)) {\n delete axis.encode[part];\n }\n }\n if (keys(axis.encode).length === 0) {\n delete axis.encode;\n }\n }\n const titleString = assembleTitle(title, config);\n return Object.assign({ scale,\n orient, grid: false }, (titleString ? { title: titleString } : {}), axis, { zindex: getFirstDefined(zindex, 1) // put axis line above marks by default\n });\n }\n}\n/**\n * Add axis signals so grid line works correctly\n * (Fix https://github.com/vega/vega-lite/issues/4226)\n */\nexport function assembleAxisSignals(model) {\n const { axes } = model.component;\n for (const channel of POSITION_SCALE_CHANNELS) {\n if (axes[channel]) {\n for (const axis of axes[channel]) {\n if (!axis.get('gridScale')) {\n // If there is x-axis but no y-scale for gridScale, need to set height/weight so x-axis can draw the grid with the right height. Same for y-axis and width.\n const sizeType = channel === 'x' ? 'height' : 'width';\n return [\n {\n name: sizeType,\n update: model.getSizeSignalRef(sizeType).signal\n }\n ];\n }\n }\n }\n }\n return [];\n}\nexport function assembleAxes(axisComponents, config) {\n const { x = [], y = [] } = axisComponents;\n return [\n ...x.map(a => assembleAxis(a, 'main', config)),\n ...x.map(a => assembleAxis(a, 'grid', config)),\n ...y.map(a => assembleAxis(a, 'main', config)),\n ...y.map(a => assembleAxis(a, 'grid', config))\n ].filter(a => a); // filter undefined\n}\n//# sourceMappingURL=assemble.js.map","import { keys } from './util';\nexport const HEADER_TITLE_PROPERTIES_MAP = {\n titleAlign: 'align',\n titleAnchor: 'anchor',\n titleAngle: 'angle',\n titleBaseline: 'baseline',\n titleColor: 'color',\n titleFont: 'font',\n titleFontSize: 'fontSize',\n titleFontWeight: 'fontWeight',\n titleLimit: 'limit',\n titleOrient: 'orient',\n titlePadding: 'offset'\n};\nexport const HEADER_LABEL_PROPERTIES_MAP = {\n labelAlign: 'align',\n labelAnchor: 'anchor',\n labelAngle: 'angle',\n labelColor: 'color',\n labelFont: 'font',\n labelFontSize: 'fontSize',\n labelLimit: 'limit',\n labelOrient: 'orient',\n labelPadding: 'offset'\n};\nexport const HEADER_TITLE_PROPERTIES = keys(HEADER_TITLE_PROPERTIES_MAP);\nexport const HEADER_LABEL_PROPERTIES = keys(HEADER_LABEL_PROPERTIES_MAP);\n//# sourceMappingURL=header.js.map","import { isArray } from 'vega-util';\nexport const DEFAULT_SORT_OP = 'mean';\nexport function isSortByEncoding(sort) {\n return !!sort && !!sort['encoding'];\n}\nexport function isSortField(sort) {\n return !!sort && (sort['op'] === 'count' || !!sort['field']);\n}\nexport function isSortArray(sort) {\n return !!sort && isArray(sort);\n}\n//# sourceMappingURL=sort.js.map","export function getAxisConfig(property, config, channel, orient, scaleType) {\n // configTypes to loop, starting from higher precedence\n const configTypes = [\n ...(scaleType === 'band' ? ['axisBand'] : []),\n channel === 'x' ? 'axisX' : 'axisY',\n // axisTop, axisBottom, ...\n ...(orient ? ['axis' + orient.substr(0, 1).toUpperCase() + orient.substr(1)] : []),\n 'axis'\n ];\n for (const configType of configTypes) {\n if (config[configType] && config[configType][property] !== undefined) {\n return config[configType][property];\n }\n }\n return undefined;\n}\n//# sourceMappingURL=config.js.map","import { isBinning } from '../../bin';\nimport { X, Y } from '../../channel';\nimport { valueArray } from '../../channeldef';\nimport * as log from '../../log';\nimport { hasDiscreteDomain } from '../../scale';\nimport { NOMINAL, ORDINAL } from '../../type';\nimport { contains, normalizeAngle } from '../../util';\nimport { getAxisConfig } from './config';\n// TODO: we need to refactor this method after we take care of config refactoring\n/**\n * Default rules for whether to show a grid should be shown for a channel.\n * If `grid` is unspecified, the default value is `true` for ordinal scales that are not binned\n */\nexport function defaultGrid(scaleType, fieldDef) {\n return !hasDiscreteDomain(scaleType) && !isBinning(fieldDef.bin);\n}\nexport function gridScale(model, channel) {\n const gridChannel = channel === 'x' ? 'y' : 'x';\n if (model.getScaleComponent(gridChannel)) {\n return model.scaleName(gridChannel);\n }\n return undefined;\n}\nexport function labelAngle(model, specifiedAxis, channel, fieldDef) {\n // try axis value\n if (specifiedAxis.labelAngle !== undefined) {\n return normalizeAngle(specifiedAxis.labelAngle);\n }\n else {\n // try axis config value\n const angle = getAxisConfig('labelAngle', model.config, channel, orient(channel), model.getScaleComponent(channel).get('type'));\n if (angle !== undefined) {\n return normalizeAngle(angle);\n }\n else {\n // get default value\n if (channel === X && contains([NOMINAL, ORDINAL], fieldDef.type)) {\n return 270;\n }\n // no default\n return undefined;\n }\n }\n}\nexport function defaultLabelBaseline(angle, axisOrient) {\n if (angle !== undefined) {\n angle = normalizeAngle(angle);\n if (axisOrient === 'top' || axisOrient === 'bottom') {\n if (angle <= 45 || 315 <= angle) {\n return axisOrient === 'top' ? 'bottom' : 'top';\n }\n else if (135 <= angle && angle <= 225) {\n return axisOrient === 'top' ? 'top' : 'bottom';\n }\n else {\n return 'middle';\n }\n }\n else {\n if (angle <= 45 || 315 <= angle || (135 <= angle && angle <= 225)) {\n return 'middle';\n }\n else if (45 <= angle && angle <= 135) {\n return axisOrient === 'left' ? 'top' : 'bottom';\n }\n else {\n return axisOrient === 'left' ? 'bottom' : 'top';\n }\n }\n }\n return undefined;\n}\nexport function defaultLabelAlign(angle, axisOrient) {\n if (angle !== undefined) {\n angle = normalizeAngle(angle);\n if (axisOrient === 'top' || axisOrient === 'bottom') {\n if (angle % 180 === 0) {\n return 'center';\n }\n else if (0 < angle && angle < 180) {\n return axisOrient === 'top' ? 'right' : 'left';\n }\n else {\n return axisOrient === 'top' ? 'left' : 'right';\n }\n }\n else {\n if ((angle + 90) % 180 === 0) {\n return 'center';\n }\n else if (90 <= angle && angle < 270) {\n return axisOrient === 'left' ? 'left' : 'right';\n }\n else {\n return axisOrient === 'left' ? 'right' : 'left';\n }\n }\n }\n return undefined;\n}\nexport function defaultLabelFlush(fieldDef, channel) {\n if (channel === 'x' && contains(['quantitative', 'temporal'], fieldDef.type)) {\n return true;\n }\n return undefined;\n}\nexport function defaultLabelOverlap(fieldDef, scaleType) {\n // do not prevent overlap for nominal data because there is no way to infer what the missing labels are\n if (fieldDef.type !== 'nominal') {\n if (scaleType === 'log') {\n return 'greedy';\n }\n return true;\n }\n return undefined;\n}\nexport function orient(channel) {\n switch (channel) {\n case X:\n return 'bottom';\n case Y:\n return 'left';\n }\n /* istanbul ignore next: This should never happen. */\n throw new Error(log.message.INVALID_CHANNEL_FOR_AXIS);\n}\nexport function defaultTickCount({ fieldDef, scaleType, size }) {\n if (!hasDiscreteDomain(scaleType) &&\n scaleType !== 'log' &&\n !contains(['month', 'hours', 'day', 'quarter'], fieldDef.timeUnit)) {\n if (isBinning(fieldDef.bin)) {\n // for binned data, we don't want more ticks than maxbins\n return { signal: `ceil(${size.signal}/10)` };\n }\n return { signal: `ceil(${size.signal}/40)` };\n }\n return undefined;\n}\nexport function values(specifiedAxis, model, fieldDef) {\n const vals = specifiedAxis.values;\n if (vals) {\n return valueArray(fieldDef, vals);\n }\n return undefined;\n}\n//# sourceMappingURL=properties.js.map","import { isArray } from 'vega-util';\nimport { isBinning } from '../bin';\nimport { isScaleFieldDef, isTimeFormatFieldDef, vgField } from '../channeldef';\nimport { ScaleType } from '../scale';\nimport { formatExpression } from '../timeunit';\nimport { QUANTITATIVE } from '../type';\nimport { getFirstDefined, stringify } from '../util';\nexport function applyMarkConfig(e, model, propsList) {\n for (const property of propsList) {\n const value = getMarkConfig(property, model.markDef, model.config);\n if (value !== undefined) {\n e[property] = { value: value };\n }\n }\n return e;\n}\nexport function getStyles(mark) {\n return [].concat(mark.type, mark.style || []);\n}\n/**\n * Return property value from style or mark specific config property if exists.\n * Otherwise, return general mark specific config.\n */\nexport function getMarkConfig(channel, mark, config, { vgChannel } = {} // Note: Ham: I use `any` here as it's too hard to make TS knows that MarkConfig[vgChannel] would have the same type as MarkConfig[P]\n) {\n return getFirstDefined(\n // style config has highest precedence\n vgChannel ? getStyleConfig(channel, mark, config.style) : undefined, getStyleConfig(channel, mark, config.style), \n // then mark-specific config\n vgChannel ? config[mark.type][vgChannel] : undefined, config[mark.type][channel], \n // If there is vgChannel, skip vl channel.\n // For example, vl size for text is vg fontSize, but config.mark.size is only for point size.\n vgChannel ? config.mark[vgChannel] : config.mark[channel]);\n}\nexport function getStyleConfig(prop, mark, styleConfigIndex) {\n const styles = getStyles(mark);\n let value;\n for (const style of styles) {\n const styleConfig = styleConfigIndex[style];\n // MarkConfig extends VgMarkConfig so a prop may not be a valid property for style\n // However here we also check if it is defined, so it is okay to cast here\n const p = prop;\n if (styleConfig && styleConfig[p] !== undefined) {\n value = styleConfig[p];\n }\n }\n return value;\n}\nexport function formatSignalRef(fieldDef, specifiedFormat, expr, config) {\n if (isTimeFormatFieldDef(fieldDef)) {\n const isUTCScale = isScaleFieldDef(fieldDef) && fieldDef['scale'] && fieldDef['scale'].type === ScaleType.UTC;\n return {\n signal: timeFormatExpression(vgField(fieldDef, {\n expr\n }), fieldDef.timeUnit, specifiedFormat, config.text.shortTimeLabels, config.timeFormat, isUTCScale, true)\n };\n }\n else {\n const format = numberFormat(fieldDef, specifiedFormat, config);\n if (isBinning(fieldDef.bin)) {\n const startField = vgField(fieldDef, { expr });\n const endField = vgField(fieldDef, { expr, binSuffix: 'end' });\n return {\n signal: binFormatExpression(startField, endField, format, config)\n };\n }\n else if (fieldDef.type === 'quantitative') {\n return {\n signal: `${formatExpr(vgField(fieldDef, { expr, binSuffix: 'range' }), format)}`\n };\n }\n else {\n return { signal: `''+${vgField(fieldDef, { expr })}` };\n }\n }\n}\n/**\n * Returns number format for a fieldDef\n */\nexport function numberFormat(fieldDef, specifiedFormat, config) {\n // Specified format in axis/legend has higher precedence than fieldDef.format\n if (specifiedFormat) {\n return specifiedFormat;\n }\n if (fieldDef.type === QUANTITATIVE) {\n // we only apply the default if the field is quantitative\n return config.numberFormat;\n }\n return undefined;\n}\nfunction formatExpr(field, format) {\n return `format(${field}, \"${format || ''}\")`;\n}\nexport function numberFormatExpr(field, specifiedFormat, config) {\n return formatExpr(field, specifiedFormat || config.numberFormat);\n}\nexport function binFormatExpression(startField, endField, format, config) {\n return `${startField} === null || isNaN(${startField}) ? \"null\" : ${numberFormatExpr(startField, format, config)} + \" - \" + ${numberFormatExpr(endField, format, config)}`;\n}\n/**\n * Returns the time expression used for axis/legend labels or text mark for a temporal field\n */\nexport function timeFormatExpression(field, timeUnit, format, shortTimeLabels, rawTimeFormat, // should be provided only for actual text and headers, not axis/legend labels\nisUTCScale, alwaysReturn = false) {\n if (!timeUnit || format) {\n // If there is not time unit, or if user explicitly specify format for axis/legend/text.\n format = format || rawTimeFormat; // only use provided timeFormat if there is no timeUnit.\n if (format || alwaysReturn) {\n return `${isUTCScale ? 'utc' : 'time'}Format(${field}, '${format}')`;\n }\n else {\n return undefined;\n }\n }\n else {\n return formatExpression(timeUnit, field, shortTimeLabels, isUTCScale);\n }\n}\n/**\n * Return Vega sort parameters (tuple of field and order).\n */\nexport function sortParams(orderDef, fieldRefOption) {\n return (isArray(orderDef) ? orderDef : [orderDef]).reduce((s, orderChannelDef) => {\n s.field.push(vgField(orderChannelDef, fieldRefOption));\n s.order.push(orderChannelDef.sort || 'ascending');\n return s;\n }, { field: [], order: [] });\n}\nexport function mergeTitleFieldDefs(f1, f2) {\n const merged = [...f1];\n f2.forEach(fdToMerge => {\n for (const fieldDef1 of merged) {\n // If already exists, no need to append to merged array\n if (stringify(fieldDef1) === stringify(fdToMerge)) {\n return;\n }\n }\n merged.push(fdToMerge);\n });\n return merged;\n}\nexport function mergeTitle(title1, title2) {\n if (title1 === title2 || !title2) {\n // if titles are the same or title2 is falsy\n return title1;\n }\n else if (!title1) {\n // if title1 is falsy\n return title2;\n }\n else {\n // join title with comma if they are different\n return title1 + ', ' + title2;\n }\n}\nexport function mergeTitleComponent(v1, v2) {\n if (isArray(v1.value) && isArray(v2.value)) {\n return {\n explicit: v1.explicit,\n value: mergeTitleFieldDefs(v1.value, v2.value)\n };\n }\n else if (!isArray(v1.value) && !isArray(v2.value)) {\n return {\n explicit: v1.explicit,\n value: mergeTitle(v1.value, v2.value)\n };\n }\n /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n throw new Error('It should never reach here');\n}\n//# sourceMappingURL=common.js.map","import { uniqueId } from '../../util';\n/**\n * A node in the dataflow tree.\n */\nexport class DataFlowNode {\n constructor(parent, debugName) {\n this.debugName = debugName;\n this._children = [];\n this._parent = null;\n if (parent) {\n this.parent = parent;\n }\n }\n /**\n * Clone this node with a deep copy but don't clone links to children or parents.\n */\n clone() {\n throw new Error('Cannot clone node');\n }\n /**\n * Return a hash of the node.\n */\n hash() {\n if (this._hash === undefined) {\n this._hash = uniqueId();\n }\n return this._hash;\n }\n /**\n * Set of fields that are being created by this node.\n */\n producedFields() {\n return new Set();\n }\n dependentFields() {\n return new Set();\n }\n get parent() {\n return this._parent;\n }\n /**\n * Set the parent of the node and also add this node to the parent's children.\n */\n set parent(parent) {\n this._parent = parent;\n if (parent) {\n parent.addChild(this);\n }\n }\n get children() {\n return this._children;\n }\n numChildren() {\n return this._children.length;\n }\n addChild(child, loc) {\n // do not add the same child twice\n if (this._children.indexOf(child) > -1) {\n console.warn('Attempt to add the same child twice.');\n return;\n }\n if (loc !== undefined) {\n this._children.splice(loc, 0, child);\n }\n else {\n this._children.push(child);\n }\n }\n removeChild(oldChild) {\n const loc = this._children.indexOf(oldChild);\n this._children.splice(loc, 1);\n return loc;\n }\n /**\n * Remove node from the dataflow.\n */\n remove() {\n let loc = this._parent.removeChild(this);\n for (const child of this._children) {\n // do not use the set method because we want to insert at a particular location\n child._parent = this._parent;\n this._parent.addChild(child, loc++);\n }\n }\n /**\n * Insert another node as a parent of this node.\n */\n insertAsParentOf(other) {\n const parent = other.parent;\n parent.removeChild(this);\n this.parent = parent;\n other.parent = this;\n }\n swapWithParent() {\n const parent = this._parent;\n const newParent = parent.parent;\n // reconnect the children\n for (const child of this._children) {\n child.parent = parent;\n }\n // remove old links\n this._children = []; // equivalent to removing every child link one by one\n parent.removeChild(this);\n parent.parent.removeChild(parent);\n // swap two nodes\n this.parent = newParent;\n parent.parent = this;\n }\n}\nexport class OutputNode extends DataFlowNode {\n /**\n * @param source The name of the source. Will change in assemble.\n * @param type The type of the output node.\n * @param refCounts A global ref counter map.\n */\n constructor(parent, source, type, refCounts) {\n super(parent, source);\n this.type = type;\n this.refCounts = refCounts;\n this._source = this._name = source;\n if (this.refCounts && !(this._name in this.refCounts)) {\n this.refCounts[this._name] = 0;\n }\n }\n clone() {\n const cloneObj = new this.constructor();\n cloneObj.debugName = 'clone_' + this.debugName;\n cloneObj._source = this._source;\n cloneObj._name = 'clone_' + this._name;\n cloneObj.type = this.type;\n cloneObj.refCounts = this.refCounts;\n cloneObj.refCounts[cloneObj._name] = 0;\n return cloneObj;\n }\n /**\n * Request the datasource name and increase the ref counter.\n *\n * During the parsing phase, this will return the simple name such as 'main' or 'raw'.\n * It is crucial to request the name from an output node to mark it as a required node.\n * If nobody ever requests the name, this datasource will not be instantiated in the assemble phase.\n *\n * In the assemble phase, this will return the correct name.\n */\n getSource() {\n this.refCounts[this._name]++;\n return this._source;\n }\n isRequired() {\n return !!this.refCounts[this._name];\n }\n setSource(source) {\n this._source = source;\n }\n}\n//# sourceMappingURL=dataflow.js.map","import { parse } from 'vega-expression';\nfunction getName(node) {\n const name = [];\n if (node.type === 'Identifier') {\n return [node.name];\n }\n if (node.type === 'Literal') {\n return [node.value];\n }\n if (node.type === 'MemberExpression') {\n name.push(...getName(node.object));\n name.push(...getName(node.property));\n }\n return name;\n}\nfunction startsWithDatum(node) {\n if (node.object.type === 'MemberExpression') {\n return startsWithDatum(node.object);\n }\n return node.object.name === 'datum';\n}\nexport function getDependentFields(expression) {\n const ast = parse(expression);\n const dependents = new Set();\n ast.visit((node) => {\n if (node.type === 'MemberExpression' && startsWithDatum(node)) {\n dependents.add(getName(node)\n .slice(1)\n .join('.'));\n }\n });\n return dependents;\n}\n//# sourceMappingURL=expressions.js.map","import { isScaleFieldDef, vgField } from '../../channeldef';\nimport { fieldFilterExpression } from '../../predicate';\nimport { isSortArray } from '../../sort';\nimport { duplicate, hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\nimport { getDependentFields } from './expressions';\n/**\n * We don't know what a calculate node depends on so we should never move it beyond anything that produces fields.\n */\nexport class CalculateNode extends DataFlowNode {\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n this._dependentFields = getDependentFields(this.transform.calculate);\n }\n clone() {\n return new CalculateNode(null, duplicate(this.transform));\n }\n static parseAllForSortIndex(parent, model) {\n // get all the encoding with sort fields from model\n model.forEachFieldDef((fieldDef, channel) => {\n if (!isScaleFieldDef(fieldDef)) {\n return;\n }\n if (isSortArray(fieldDef.sort)) {\n const { field, timeUnit } = fieldDef;\n const sort = fieldDef.sort;\n // generate `datum[\"a\"] === val0 ? 0 : datum[\"a\"] === val1 ? 1 : ... : n` via FieldEqualPredicate\n const calculate = sort\n .map((sortValue, i) => {\n return `${fieldFilterExpression({ field, timeUnit, equal: sortValue })} ? ${i} : `;\n })\n .join('') + sort.length;\n parent = new CalculateNode(parent, {\n calculate,\n as: sortArrayIndexField(fieldDef, channel, { forAs: true })\n });\n }\n });\n return parent;\n }\n producedFields() {\n return new Set([this.transform.as]);\n }\n dependentFields() {\n return this._dependentFields;\n }\n assemble() {\n return {\n type: 'formula',\n expr: this.transform.calculate,\n as: this.transform.as\n };\n }\n hash() {\n return `Calculate ${hash(this.transform)}`;\n }\n}\nexport function sortArrayIndexField(fieldDef, channel, opt) {\n return vgField(fieldDef, Object.assign({ prefix: channel, suffix: 'sort_index' }, (opt || {})));\n}\n//# sourceMappingURL=calculate.js.map","import { contains, getFirstDefined } from '../../util';\n/**\n * Get header channel, which can be different from facet channel when orient is specified or when the facet channel is facet.\n */\nexport function getHeaderChannel(channel, orient) {\n if (contains(['top', 'bottom'], orient)) {\n return 'column';\n }\n else if (contains(['left', 'right'], orient)) {\n return 'row';\n }\n return channel === 'row' ? 'row' : 'column';\n}\nexport function getHeaderProperty(prop, facetFieldDef, config, channel) {\n const headerSpecificConfig = channel === 'row' ? config.headerRow : channel === 'column' ? config.headerColumn : config.headerFacet;\n return getFirstDefined(facetFieldDef && facetFieldDef.header ? facetFieldDef.header[prop] : undefined, headerSpecificConfig[prop], config.header[prop]);\n}\nexport function getHeaderProperties(properties, facetFieldDef, config, channel) {\n const props = {};\n for (const prop of properties) {\n const value = getHeaderProperty(prop, facetFieldDef, config, channel);\n if (value !== undefined) {\n props[prop] = value;\n }\n }\n return props;\n}\n//# sourceMappingURL=common.js.map","export const HEADER_CHANNELS = ['row', 'column'];\nexport const HEADER_TYPES = ['header', 'footer'];\n//# sourceMappingURL=component.js.map","import { isArray } from 'vega-util';\nimport { FACET_CHANNELS } from '../../channel';\nimport { vgField } from '../../channeldef';\nimport { HEADER_LABEL_PROPERTIES, HEADER_LABEL_PROPERTIES_MAP, HEADER_TITLE_PROPERTIES, HEADER_TITLE_PROPERTIES_MAP } from '../../header';\nimport { isSortField } from '../../sort';\nimport { isFacetMapping } from '../../spec/facet';\nimport { contains, keys } from '../../util';\nimport { defaultLabelAlign, defaultLabelBaseline } from '../axis/properties';\nimport { formatSignalRef } from '../common';\nimport { sortArrayIndexField } from '../data/calculate';\nimport { isFacetModel } from '../model';\nimport { getHeaderChannel, getHeaderProperties, getHeaderProperty } from './common';\nimport { HEADER_TYPES } from './component';\n// TODO: rename to assembleHeaderTitleGroup\nexport function assembleTitleGroup(model, channel) {\n const title = model.component.layoutHeaders[channel].title;\n const config = model.config ? model.config : undefined;\n const facetFieldDef = model.component.layoutHeaders[channel].facetFieldDef\n ? model.component.layoutHeaders[channel].facetFieldDef\n : undefined;\n const { titleAnchor, titleAngle, titleOrient } = getHeaderProperties(['titleAnchor', 'titleAngle', 'titleOrient'], facetFieldDef, config, channel);\n const headerChannel = getHeaderChannel(channel, titleOrient);\n return {\n name: `${channel}-title`,\n type: 'group',\n role: `${headerChannel}-title`,\n title: Object.assign({ text: title }, (channel === 'row' ? { orient: 'left' } : {}), { style: 'guide-title' }, defaultHeaderGuideBaseline(titleAngle, headerChannel), defaultHeaderGuideAlign(headerChannel, titleAngle, titleAnchor), assembleHeaderProperties(config, facetFieldDef, channel, HEADER_TITLE_PROPERTIES, HEADER_TITLE_PROPERTIES_MAP))\n };\n}\nexport function defaultHeaderGuideAlign(headerChannel, angle, anchor = 'middle') {\n switch (anchor) {\n case 'start':\n return { align: 'left' };\n case 'end':\n return { align: 'right' };\n }\n const align = defaultLabelAlign(angle, headerChannel === 'row' ? 'left' : 'top');\n return align ? { align } : {};\n}\nexport function defaultHeaderGuideBaseline(angle, channel) {\n const baseline = defaultLabelBaseline(angle, channel === 'row' ? 'left' : 'top');\n return baseline ? { baseline } : {};\n}\nexport function assembleHeaderGroups(model, channel) {\n const layoutHeader = model.component.layoutHeaders[channel];\n const groups = [];\n for (const headerType of HEADER_TYPES) {\n if (layoutHeader[headerType]) {\n for (const headerCmpt of layoutHeader[headerType]) {\n groups.push(assembleHeaderGroup(model, channel, headerType, layoutHeader, headerCmpt));\n }\n }\n }\n return groups;\n}\nfunction getSort(facetFieldDef, channel) {\n const { sort } = facetFieldDef;\n if (isSortField(sort)) {\n return {\n field: vgField(sort, { expr: 'datum' }),\n order: sort.order || 'ascending'\n };\n }\n else if (isArray(sort)) {\n return {\n field: sortArrayIndexField(facetFieldDef, channel, { expr: 'datum' }),\n order: 'ascending'\n };\n }\n else {\n return {\n field: vgField(facetFieldDef, { expr: 'datum' }),\n order: sort || 'ascending'\n };\n }\n}\nexport function assembleLabelTitle(facetFieldDef, channel, config) {\n const { format, labelAngle, labelAnchor, labelOrient } = getHeaderProperties(['format', 'labelAngle', 'labelAnchor', 'labelOrient'], facetFieldDef, config, channel);\n const headerChannel = getHeaderChannel(channel, labelOrient);\n return Object.assign({ text: formatSignalRef(facetFieldDef, format, 'parent', config) }, (channel === 'row' ? { orient: 'left' } : {}), { style: 'guide-label', frame: 'group' }, defaultHeaderGuideBaseline(labelAngle, headerChannel), defaultHeaderGuideAlign(headerChannel, labelAngle, labelAnchor), assembleHeaderProperties(config, facetFieldDef, channel, HEADER_LABEL_PROPERTIES, HEADER_LABEL_PROPERTIES_MAP));\n}\nexport function assembleHeaderGroup(model, channel, headerType, layoutHeader, headerCmpt) {\n if (headerCmpt) {\n let title = null;\n const { facetFieldDef } = layoutHeader;\n const config = model.config ? model.config : undefined;\n if (facetFieldDef && headerCmpt.labels) {\n const { labelOrient } = getHeaderProperties(['labelOrient'], facetFieldDef, config, channel);\n // Include label title in the header if orient aligns with the channel\n if ((channel === 'row' && !contains(['top', 'bottom'], labelOrient)) ||\n (channel === 'column' && !contains(['left', 'right'], labelOrient))) {\n title = assembleLabelTitle(facetFieldDef, channel, config);\n }\n }\n const isFacetWithoutRowCol = isFacetModel(model) && !isFacetMapping(model.facet);\n const axes = headerCmpt.axes;\n const hasAxes = axes && axes.length > 0;\n if (title || hasAxes) {\n const sizeChannel = channel === 'row' ? 'height' : 'width';\n return Object.assign({ name: model.getName(`${channel}_${headerType}`), type: 'group', role: `${channel}-${headerType}` }, (layoutHeader.facetFieldDef\n ? {\n from: { data: model.getName(channel + '_domain') },\n sort: getSort(facetFieldDef, channel)\n }\n : {}), (hasAxes && isFacetWithoutRowCol\n ? {\n from: { data: model.getName(`facet_domain_${channel}`) }\n }\n : {}), (title ? { title } : {}), (headerCmpt.sizeSignal\n ? {\n encode: {\n update: {\n [sizeChannel]: headerCmpt.sizeSignal\n }\n }\n }\n : {}), (hasAxes ? { axes } : {}));\n }\n }\n return null;\n}\nconst LAYOUT_TITLE_BAND = {\n column: {\n start: 0,\n end: 1\n },\n row: {\n start: 1,\n end: 0\n }\n};\nexport function getLayoutTitleBand(titleAnchor, headerChannel) {\n return LAYOUT_TITLE_BAND[headerChannel][titleAnchor];\n}\nexport function assembleLayoutTitleBand(headerComponentIndex, config) {\n const titleBand = {};\n for (const channel of FACET_CHANNELS) {\n const headerComponent = headerComponentIndex[channel];\n if (headerComponent && headerComponent.facetFieldDef) {\n const { titleAnchor, titleOrient } = getHeaderProperties(['titleAnchor', 'titleOrient'], headerComponent.facetFieldDef, config, channel);\n const headerChannel = getHeaderChannel(channel, titleOrient);\n const band = getLayoutTitleBand(titleAnchor, headerChannel);\n if (band !== undefined) {\n titleBand[headerChannel] = band;\n }\n }\n }\n return keys(titleBand).length > 0 ? titleBand : undefined;\n}\nexport function assembleHeaderProperties(config, facetFieldDef, channel, properties, propertiesMap) {\n const props = {};\n for (const prop of properties) {\n if (!propertiesMap[prop]) {\n continue;\n }\n const value = getHeaderProperty(prop, facetFieldDef, config, channel);\n if (value !== undefined) {\n props[propertiesMap[prop]] = value;\n }\n }\n return props;\n}\n//# sourceMappingURL=assemble.js.map","import { hasDiscreteDomain } from '../../scale';\nimport { getFirstDefined } from '../../util';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { isFacetModel } from '../model';\nexport function assembleLayoutSignals(model) {\n return [...sizeSignals(model, 'width'), ...sizeSignals(model, 'height')];\n}\nexport function sizeSignals(model, sizeType) {\n const channel = sizeType === 'width' ? 'x' : 'y';\n const size = model.component.layoutSize.get(sizeType);\n if (!size || size === 'merged') {\n return [];\n }\n // Read size signal name from name map, just in case it is the top-level size signal that got renamed.\n const name = model.getSizeSignalRef(sizeType).signal;\n if (size === 'range-step') {\n const scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n const type = scaleComponent.get('type');\n const range = scaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n const scaleName = model.scaleName(channel);\n if (isFacetModel(model.parent)) {\n // If parent is facet and this is an independent scale, return only signal signal\n // as the width/height will be calculated using the cardinality from\n // facet's aggregate rather than reading from scale domain\n const parentResolve = model.parent.component.resolve;\n if (parentResolve.scale[channel] === 'independent') {\n return [stepSignal(scaleName, range)];\n }\n }\n return [\n stepSignal(scaleName, range),\n {\n name,\n update: sizeExpr(scaleName, scaleComponent, `domain('${scaleName}').length`)\n }\n ];\n }\n }\n /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n throw new Error('layout size is range step although there is no rangeStep.');\n }\n else {\n return [\n {\n name,\n value: size\n }\n ];\n }\n}\nfunction stepSignal(scaleName, range) {\n return {\n name: scaleName + '_step',\n value: range.step\n };\n}\nexport function sizeExpr(scaleName, scaleComponent, cardinality) {\n const type = scaleComponent.get('type');\n const padding = scaleComponent.get('padding');\n const paddingOuter = getFirstDefined(scaleComponent.get('paddingOuter'), padding);\n let paddingInner = scaleComponent.get('paddingInner');\n paddingInner =\n type === 'band'\n ? // only band has real paddingInner\n paddingInner !== undefined\n ? paddingInner\n : padding\n : // For point, as calculated in https://github.com/vega/vega-scale/blob/master/src/band.js#L128,\n // it's equivalent to have paddingInner = 1 since there is only n-1 steps between n points.\n 1;\n return `bandspace(${cardinality}, ${paddingInner}, ${paddingOuter}) * ${scaleName}_step`;\n}\n//# sourceMappingURL=assemble.js.map","import { vgField } from '../../channeldef';\nimport { fieldExpr } from '../../timeunit';\nimport { duplicate, hash, keys, vals } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport class TimeUnitNode extends DataFlowNode {\n constructor(parent, formula) {\n super(parent);\n this.formula = formula;\n }\n clone() {\n return new TimeUnitNode(null, duplicate(this.formula));\n }\n static makeFromEncoding(parent, model) {\n const formula = model.reduceFieldDef((timeUnitComponent, fieldDef) => {\n if (fieldDef.timeUnit) {\n const f = vgField(fieldDef, { forAs: true });\n timeUnitComponent[f] = {\n as: f,\n timeUnit: fieldDef.timeUnit,\n field: fieldDef.field\n };\n }\n return timeUnitComponent;\n }, {});\n if (keys(formula).length === 0) {\n return null;\n }\n return new TimeUnitNode(parent, formula);\n }\n static makeFromTransform(parent, t) {\n return new TimeUnitNode(parent, {\n [t.field]: {\n as: t.as,\n timeUnit: t.timeUnit,\n field: t.field\n }\n });\n }\n merge(other) {\n this.formula = Object.assign({}, this.formula, other.formula);\n other.remove();\n }\n producedFields() {\n return new Set(vals(this.formula).map(f => f.as));\n }\n dependentFields() {\n return new Set(vals(this.formula).map(f => f.field));\n }\n hash() {\n return `TimeUnit ${hash(this.formula)}`;\n }\n assemble() {\n return vals(this.formula).map(c => {\n return {\n type: 'formula',\n as: c.as,\n expr: fieldExpr(c.timeUnit, c.field)\n };\n });\n }\n}\n//# sourceMappingURL=timeunit.js.map","import { stringValue } from 'vega-util';\nimport { VL_SELECTION_RESOLVE } from '..';\nimport { isScaleChannel, X, Y } from '../../../channel';\nimport * as log from '../../../log';\nimport { hasContinuousDomain } from '../../../scale';\nimport { accessPathWithDatum, varName } from '../../../util';\nconst scaleBindings = {\n has: selCmpt => {\n return selCmpt.type === 'interval' && selCmpt.resolve === 'global' && selCmpt.bind && selCmpt.bind === 'scales';\n },\n parse: (model, selDef, selCmpt) => {\n const name = varName(selCmpt.name);\n const bound = (selCmpt.scales = []);\n for (const proj of selCmpt.project.items) {\n const channel = proj.channel;\n if (!isScaleChannel(channel)) {\n continue;\n }\n const scale = model.getScaleComponent(channel);\n const scaleType = scale ? scale.get('type') : undefined;\n if (!scale || !hasContinuousDomain(scaleType)) {\n log.warn(log.message.SCALE_BINDINGS_CONTINUOUS);\n continue;\n }\n scale.set('domainRaw', { signal: accessPathWithDatum(proj.field, name) }, true);\n bound.push(proj);\n // Bind both x/y for diag plot of repeated views.\n if (model.repeater && model.repeater.row === model.repeater.column) {\n const scale2 = model.getScaleComponent(channel === X ? Y : X);\n scale2.set('domainRaw', { signal: accessPathWithDatum(proj.field, name) }, true);\n }\n }\n },\n topLevelSignals: (model, selCmpt, signals) => {\n const bound = selCmpt.scales.filter(proj => !signals.filter(s => s.name === proj.signals.data).length);\n // Top-level signals are only needed for multiview displays and if this\n // view's top-level signals haven't already been generated.\n if (!model.parent || !bound.length) {\n return signals;\n }\n // vlSelectionResolve does not account for the behavior of bound scales in\n // multiview displays. Each unit view adds a tuple to the store, but the\n // state of the selection is the unit selection most recently updated. This\n // state is captured by the top-level signals that we insert and \"push\n // outer\" to from within the units. We need to reassemble this state into\n // the top-level named signal, except no single selCmpt has a global view.\n const namedSg = signals.filter(s => s.name === selCmpt.name)[0];\n const update = namedSg.update;\n if (update.indexOf(VL_SELECTION_RESOLVE) >= 0) {\n namedSg.update = `{${bound.map(proj => `${stringValue(proj.field)}: ${proj.signals.data}`).join(', ')}}`;\n }\n else {\n for (const proj of bound) {\n const mapping = `, ${stringValue(proj.field)}: ${proj.signals.data}`;\n if (update.indexOf(mapping) < 0) {\n namedSg.update = update.substring(0, update.length - 1) + mapping + '}';\n }\n }\n }\n return signals.concat(bound.map(proj => ({ name: proj.signals.data })));\n },\n signals: (model, selCmpt, signals) => {\n // Nested signals need only push to top-level signals with multiview displays.\n if (model.parent) {\n for (const proj of selCmpt.scales) {\n const signal = signals.filter(s => s.name === proj.signals.data)[0];\n signal.push = 'outer';\n delete signal.value;\n delete signal.update;\n }\n }\n return signals;\n }\n};\nexport default scaleBindings;\nexport function domain(model, channel) {\n const scale = stringValue(model.scaleName(channel));\n return `domain(${scale})`;\n}\n//# sourceMappingURL=scales.js.map","import * as tslib_1 from \"tslib\";\nimport { array, isArray } from 'vega-util';\nimport { isSingleDefUnitChannel } from '../../../channel';\nimport * as log from '../../../log';\nimport { hasContinuousDomain } from '../../../scale';\nimport { isIntervalSelection } from '../../../selection';\nimport { keys, varName } from '../../../util';\nimport { TimeUnitNode } from '../../data/timeunit';\nimport scales from './scales';\nexport const TUPLE_FIELDS = '_tuple_fields';\nexport class SelectionProjectionComponent {\n constructor(...items) {\n this.items = items;\n this.has = {};\n }\n}\nconst project = {\n has: () => {\n return true; // This transform handles its own defaults, so always run parse.\n },\n parse: (model, selDef, selCmpt) => {\n const name = selCmpt.name;\n const proj = selCmpt.project || (selCmpt.project = new SelectionProjectionComponent());\n const parsed = {};\n const timeUnits = {};\n const signals = new Set();\n const signalName = (p, range) => {\n const suffix = range === 'visual' ? p.channel : p.field;\n let sg = varName(`${name}_${suffix}`);\n for (let counter = 1; signals.has(sg); counter++) {\n sg = varName(`${name}_${suffix}_${counter}`);\n }\n signals.add(sg);\n return { [range]: sg };\n };\n // If no explicit projection (either fields or encodings) is specified, set some defaults.\n // If an initial value is set, try to infer projections.\n // Otherwise, use the default configuration.\n if (!selDef.fields && !selDef.encodings) {\n const cfg = model.config.selection[selDef.type];\n if (selDef.init) {\n for (const init of array(selDef.init)) {\n for (const key of keys(init)) {\n if (isSingleDefUnitChannel(key)) {\n (selDef.encodings || (selDef.encodings = [])).push(key);\n }\n else {\n if (isIntervalSelection(selDef)) {\n log.warn('Interval selections should be initialized using \"x\" and/or \"y\" keys.');\n selDef.encodings = cfg.encodings;\n }\n else {\n (selDef.fields || (selDef.fields = [])).push(key);\n }\n }\n }\n }\n }\n else {\n selDef.encodings = cfg.encodings;\n selDef.fields = cfg.fields;\n }\n }\n // TODO: find a possible channel mapping for these fields.\n for (const field of selDef.fields || []) {\n const p = { type: 'E', field };\n p.signals = Object.assign({}, signalName(p, 'data'));\n proj.items.push(p);\n }\n for (const channel of selDef.encodings || []) {\n const fieldDef = model.fieldDef(channel);\n if (fieldDef) {\n let field = fieldDef.field;\n if (fieldDef.timeUnit) {\n field = model.vgField(channel);\n // Construct TimeUnitComponents which will be combined into a\n // TimeUnitNode. This node may need to be inserted into the\n // dataflow if the selection is used across views that do not\n // have these time units defined.\n timeUnits[field] = {\n as: field,\n field: fieldDef.field,\n timeUnit: fieldDef.timeUnit\n };\n }\n // Prevent duplicate projections on the same field.\n // TODO: what if the same field is bound to multiple channels (e.g., SPLOM diag).\n if (!parsed[field]) {\n // Determine whether the tuple will store enumerated or ranged values.\n // Interval selections store ranges for continuous scales, and enumerations otherwise.\n // Single/multi selections store ranges for binned fields, and enumerations otherwise.\n let type = 'E';\n if (selCmpt.type === 'interval') {\n const scaleType = model.getScaleComponent(channel).get('type');\n if (hasContinuousDomain(scaleType)) {\n type = 'R';\n }\n }\n else if (fieldDef.bin) {\n type = 'R-RE';\n }\n const p = { field, channel, type };\n p.signals = Object.assign({}, signalName(p, 'data'), signalName(p, 'visual'));\n proj.items.push((parsed[field] = p));\n proj.has[channel] = parsed[field];\n }\n }\n else {\n log.warn(log.message.cannotProjectOnChannelWithoutField(channel));\n }\n }\n if (selDef.init) {\n if (scales.has(selCmpt)) {\n log.warn(log.message.NO_INIT_SCALE_BINDINGS);\n }\n else {\n const parseInit = (i) => {\n return proj.items.map(p => (i[p.channel] !== undefined ? i[p.channel] : i[p.field]));\n };\n if (isIntervalSelection(selDef)) {\n selCmpt.init = parseInit(selDef.init);\n }\n else {\n const init = isArray(selDef.init) ? selDef.init : [selDef.init];\n selCmpt.init = init.map(parseInit);\n }\n }\n }\n if (keys(timeUnits).length) {\n proj.timeUnit = new TimeUnitNode(null, timeUnits);\n }\n },\n signals: (model, selCmpt, allSignals) => {\n const name = selCmpt.name + TUPLE_FIELDS;\n const hasSignal = allSignals.filter(s => s.name === name);\n return hasSignal.length\n ? allSignals\n : allSignals.concat({\n name,\n value: selCmpt.project.items.map(proj => {\n const { signals } = proj, rest = tslib_1.__rest(proj, [\"signals\"]);\n return rest;\n })\n });\n }\n};\nexport default project;\n//# sourceMappingURL=project.js.map","import * as tslib_1 from \"tslib\";\nimport { stringValue } from 'vega-util';\nimport { STORE, TUPLE, unitName } from '.';\nimport { X, Y } from '../../channel';\nimport { warn } from '../../log';\nimport { hasContinuousDomain } from '../../scale';\nimport { keys } from '../../util';\nimport { assembleInit } from './assemble';\nimport { TUPLE_FIELDS } from './transforms/project';\nimport scales from './transforms/scales';\nexport const BRUSH = '_brush';\nexport const SCALE_TRIGGER = '_scale_trigger';\nconst interval = {\n signals: (model, selCmpt) => {\n const name = selCmpt.name;\n const fieldsSg = name + TUPLE_FIELDS;\n const hasScales = scales.has(selCmpt);\n const signals = [];\n const dataSignals = [];\n const scaleTriggers = [];\n if (selCmpt.translate && !hasScales) {\n const filterExpr = `!event.item || event.item.mark.name !== ${stringValue(name + BRUSH)}`;\n events(selCmpt, (_, evt) => {\n const filters = evt.between[0].filter || (evt.between[0].filter = []);\n if (filters.indexOf(filterExpr) < 0) {\n filters.push(filterExpr);\n }\n });\n }\n selCmpt.project.items.forEach((proj, i) => {\n const channel = proj.channel;\n if (channel !== X && channel !== Y) {\n warn('Interval selections only support x and y encoding channels.');\n return;\n }\n const init = selCmpt.init ? selCmpt.init[i] : null;\n const cs = channelSignals(model, selCmpt, proj, init);\n const dname = proj.signals.data;\n const vname = proj.signals.visual;\n const scaleName = stringValue(model.scaleName(channel));\n const scaleType = model.getScaleComponent(channel).get('type');\n const toNum = hasContinuousDomain(scaleType) ? '+' : '';\n signals.push(...cs);\n dataSignals.push(dname);\n scaleTriggers.push({\n scaleName: model.scaleName(channel),\n expr: `(!isArray(${dname}) || ` +\n `(${toNum}invert(${scaleName}, ${vname})[0] === ${toNum}${dname}[0] && ` +\n `${toNum}invert(${scaleName}, ${vname})[1] === ${toNum}${dname}[1]))`\n });\n });\n // Proxy scale reactions to ensure that an infinite loop doesn't occur\n // when an interval selection filter touches the scale.\n if (!hasScales) {\n signals.push({\n name: name + SCALE_TRIGGER,\n value: {},\n on: [\n {\n events: scaleTriggers.map(t => ({ scale: t.scaleName })),\n update: scaleTriggers.map(t => t.expr).join(' && ') + ` ? ${name + SCALE_TRIGGER} : {}`\n }\n ]\n });\n }\n // Only add an interval to the store if it has valid data extents. Data extents\n // are set to null if pixel extents are equal to account for intervals over\n // ordinal/nominal domains which, when inverted, will still produce a valid datum.\n const init = selCmpt.init;\n const update = `unit: ${unitName(model)}, fields: ${fieldsSg}, values`;\n return signals.concat(Object.assign({ name: name + TUPLE }, (init ? { init: `{${update}: ${assembleInit(init)}}` } : {}), { on: [\n {\n events: [{ signal: dataSignals.join(' || ') }],\n update: dataSignals.join(' && ') + ` ? {${update}: [${dataSignals}]} : null`\n }\n ] }));\n },\n modifyExpr: (model, selCmpt) => {\n const tpl = selCmpt.name + TUPLE;\n return tpl + ', ' + (selCmpt.resolve === 'global' ? 'true' : `{unit: ${unitName(model)}}`);\n },\n marks: (model, selCmpt, marks) => {\n const name = selCmpt.name;\n const { x, y } = selCmpt.project.has;\n const xvname = x && x.signals.visual;\n const yvname = y && y.signals.visual;\n const store = `data(${stringValue(selCmpt.name + STORE)})`;\n // Do not add a brush if we're binding to scales.\n if (scales.has(selCmpt)) {\n return marks;\n }\n const update = {\n x: x !== undefined ? { signal: `${xvname}[0]` } : { value: 0 },\n y: y !== undefined ? { signal: `${yvname}[0]` } : { value: 0 },\n x2: x !== undefined ? { signal: `${xvname}[1]` } : { field: { group: 'width' } },\n y2: y !== undefined ? { signal: `${yvname}[1]` } : { field: { group: 'height' } }\n };\n // If the selection is resolved to global, only a single interval is in\n // the store. Wrap brush mark's encodings with a production rule to test\n // this based on the `unit` property. Hide the brush mark if it corresponds\n // to a unit different from the one in the store.\n if (selCmpt.resolve === 'global') {\n for (const key of keys(update)) {\n update[key] = [\n Object.assign({ test: `${store}.length && ${store}[0].unit === ${unitName(model)}` }, update[key]),\n { value: 0 }\n ];\n }\n }\n // Two brush marks ensure that fill colors and other aesthetic choices do\n // not interefere with the core marks, but that the brushed region can still\n // be interacted with (e.g., dragging it around).\n const _a = selCmpt.mark, { fill, fillOpacity } = _a, stroke = tslib_1.__rest(_a, [\"fill\", \"fillOpacity\"]);\n const vgStroke = keys(stroke).reduce((def, k) => {\n def[k] = [\n {\n test: [x !== undefined && `${xvname}[0] !== ${xvname}[1]`, y !== undefined && `${yvname}[0] !== ${yvname}[1]`]\n .filter(t => t)\n .join(' && '),\n value: stroke[k]\n },\n { value: null }\n ];\n return def;\n }, {});\n return [\n {\n name: name + BRUSH + '_bg',\n type: 'rect',\n clip: true,\n encode: {\n enter: {\n fill: { value: fill },\n fillOpacity: { value: fillOpacity }\n },\n update: update\n }\n },\n ...marks,\n {\n name: name + BRUSH,\n type: 'rect',\n clip: true,\n encode: {\n enter: {\n fill: { value: 'transparent' }\n },\n update: Object.assign({}, update, vgStroke)\n }\n }\n ];\n }\n};\nexport default interval;\n/**\n * Returns the visual and data signals for an interval selection.\n */\nfunction channelSignals(model, selCmpt, proj, init) {\n const channel = proj.channel;\n const vname = proj.signals.visual;\n const dname = proj.signals.data;\n const hasScales = scales.has(selCmpt);\n const scaleName = stringValue(model.scaleName(channel));\n const scale = model.getScaleComponent(channel);\n const scaleType = scale ? scale.get('type') : undefined;\n const scaled = (str) => `scale(${scaleName}, ${str})`;\n const size = model.getSizeSignalRef(channel === X ? 'width' : 'height').signal;\n const coord = `${channel}(unit)`;\n const on = events(selCmpt, (def, evt) => {\n return [\n ...def,\n { events: evt.between[0], update: `[${coord}, ${coord}]` },\n { events: evt, update: `[${vname}[0], clamp(${coord}, 0, ${size})]` } // Brush End\n ];\n });\n // React to pan/zooms of continuous scales. Non-continuous scales\n // (band, point) cannot be pan/zoomed and any other changes\n // to their domains (e.g., filtering) should clear the brushes.\n on.push({\n events: { signal: selCmpt.name + SCALE_TRIGGER },\n update: hasContinuousDomain(scaleType) ? `[${scaled(`${dname}[0]`)}, ${scaled(`${dname}[1]`)}]` : `[0, 0]`\n });\n return hasScales\n ? [{ name: dname, on: [] }]\n : [\n Object.assign({ name: vname }, (init ? { init: assembleInit(init, scaled) } : { value: [] }), { on: on }),\n Object.assign({ name: dname }, (init ? { init: assembleInit(init) } : {}), { on: [\n {\n events: { signal: vname },\n update: `${vname}[0] === ${vname}[1] ? null : invert(${scaleName}, ${vname})`\n }\n ] })\n ];\n}\nfunction events(selCmpt, cb) {\n return selCmpt.events.reduce((on, evt) => {\n if (!evt.between) {\n warn(`${evt} is not an ordered event stream for interval selections`);\n return on;\n }\n return cb(on, evt);\n }, []);\n}\n//# sourceMappingURL=interval.js.map","import { stringValue } from 'vega-util';\nimport { STORE, TUPLE, unitName } from '.';\nimport { accessPathWithDatum } from '../../util';\nimport { assembleInit } from './assemble';\nimport { TUPLE_FIELDS } from './transforms/project';\nexport function singleOrMultiSignals(model, selCmpt) {\n const name = selCmpt.name;\n const fieldsSg = name + TUPLE_FIELDS;\n const proj = selCmpt.project;\n const datum = '(item().isVoronoi ? datum.datum : datum)';\n const values = proj.items\n .map(p => {\n const fieldDef = model.fieldDef(p.channel);\n // Binned fields should capture extents, for a range test against the raw field.\n return fieldDef && fieldDef.bin\n ? `[${accessPathWithDatum(model.vgField(p.channel, {}), datum)}, ` +\n `${accessPathWithDatum(model.vgField(p.channel, { binSuffix: 'end' }), datum)}]`\n : `${accessPathWithDatum(p.field, datum)}`;\n })\n .join(', ');\n // Only add a discrete selection to the store if a datum is present _and_\n // the interaction isn't occurring on a group mark. This guards against\n // polluting interactive state with invalid values in faceted displays\n // as the group marks are also data-driven. We force the update to account\n // for constant null states but varying toggles (e.g., shift-click in\n // whitespace followed by a click in whitespace; the store should only\n // be cleared on the second click).\n const update = `unit: ${unitName(model)}, fields: ${fieldsSg}, values`;\n const signals = [\n {\n name: name + TUPLE,\n on: [\n {\n events: selCmpt.events,\n update: `datum && item().mark.marktype !== 'group' ? {${update}: [${values}]} : null`,\n force: true\n }\n ]\n }\n ];\n if (selCmpt.init) {\n const insert = selCmpt.init.map((i) => {\n const str = assembleInit(i);\n return `{${update}: ${str}}`;\n });\n signals.push({\n name: `${name}_init`,\n init: `modify(${stringValue(selCmpt.name + STORE)}, [${insert}])`\n });\n }\n return signals;\n}\nconst multi = {\n signals: singleOrMultiSignals,\n modifyExpr: (model, selCmpt) => {\n const tpl = selCmpt.name + TUPLE;\n return tpl + ', ' + (selCmpt.resolve === 'global' ? 'null' : `{unit: ${unitName(model)}}`);\n }\n};\nexport default multi;\n//# sourceMappingURL=multi.js.map","import { TUPLE, unitName } from '.';\nimport { singleOrMultiSignals } from './multi';\nconst single = {\n signals: singleOrMultiSignals,\n modifyExpr: (model, selCmpt) => {\n const tpl = selCmpt.name + TUPLE;\n return tpl + ', ' + (selCmpt.resolve === 'global' ? 'true' : `{unit: ${unitName(model)}}`);\n }\n};\nexport default single;\n//# sourceMappingURL=single.js.map","import { stringValue } from 'vega-util';\nimport { FACET_CHANNELS } from '../../channel';\nimport { SELECTION_ID } from '../../selection';\nimport { accessPathWithDatum } from '../../util';\nimport { isFacetModel } from '../model';\nimport interval from './interval';\nimport multi from './multi';\nimport single from './single';\nexport const STORE = '_store';\nexport const TUPLE = '_tuple';\nexport const MODIFY = '_modify';\nexport const SELECTION_DOMAIN = '_selection_domain_';\nexport const VL_SELECTION_RESOLVE = 'vlSelectionResolve';\nconst compilers = { single, multi, interval };\nexport function forEachSelection(model, cb) {\n const selections = model.component.selection;\n for (const name in selections) {\n if (selections.hasOwnProperty(name)) {\n const sel = selections[name];\n cb(sel, compilers[sel.type]);\n }\n }\n}\nfunction getFacetModel(model) {\n let parent = model.parent;\n while (parent) {\n if (isFacetModel(parent)) {\n break;\n }\n parent = parent.parent;\n }\n return parent;\n}\nexport function unitName(model) {\n let name = stringValue(model.name);\n const facetModel = getFacetModel(model);\n if (facetModel) {\n const { facet } = facetModel;\n for (const channel of FACET_CHANNELS) {\n if (facet[channel]) {\n name += ` + '__facet_${channel}_' + (${accessPathWithDatum(facetModel.vgField(channel), 'facet')})`;\n }\n }\n }\n return name;\n}\nexport function requiresSelectionId(model) {\n let identifier = false;\n forEachSelection(model, selCmpt => {\n identifier = identifier || selCmpt.project.items.some(proj => proj.field === SELECTION_ID);\n });\n return identifier;\n}\nexport function isRawSelectionDomain(domainRaw) {\n return domainRaw.signal.indexOf(SELECTION_DOMAIN) >= 0;\n}\n//# sourceMappingURL=index.js.map","import * as log from '../../../log';\nimport { isPathMark } from '../../../mark';\nimport { tooltip } from '../../mark/mixins';\nconst VORONOI = 'voronoi';\nconst nearest = {\n has: selCmpt => {\n return selCmpt.type !== 'interval' && selCmpt.nearest;\n },\n marks: (model, selCmpt, marks) => {\n const { x, y } = selCmpt.project.has;\n const markType = model.mark;\n if (isPathMark(markType)) {\n log.warn(log.message.nearestNotSupportForContinuous(markType));\n return marks;\n }\n const cellDef = {\n name: model.getName(VORONOI),\n type: 'path',\n from: { data: model.getName('marks') },\n encode: {\n update: Object.assign({ fill: { value: 'transparent' }, strokeWidth: { value: 0.35 }, stroke: { value: 'transparent' }, isVoronoi: { value: true } }, tooltip(model, { reactiveGeom: true }))\n },\n transform: [\n {\n type: 'voronoi',\n x: { expr: x || (!x && !y) ? 'datum.datum.x || 0' : '0' },\n y: { expr: y || (!x && !y) ? 'datum.datum.y || 0' : '0' },\n size: [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')]\n }\n ]\n };\n let index = 0;\n let exists = false;\n marks.forEach((mark, i) => {\n const name = mark.name || '';\n if (name === model.component.mark[0].name) {\n index = i;\n }\n else if (name.indexOf(VORONOI) >= 0) {\n exists = true;\n }\n });\n if (!exists) {\n marks.splice(index + 1, 0, cellDef);\n }\n return marks;\n }\n};\nexport default nearest;\n//# sourceMappingURL=nearest.js.map","import { TUPLE } from '..';\nimport { accessPathWithDatum, varName } from '../../../util';\nimport { assembleInit } from '../assemble';\nimport nearest from './nearest';\nimport { TUPLE_FIELDS } from './project';\nconst inputBindings = {\n has: selCmpt => {\n return selCmpt.type === 'single' && selCmpt.resolve === 'global' && selCmpt.bind && selCmpt.bind !== 'scales';\n },\n topLevelSignals: (model, selCmpt, signals) => {\n const name = selCmpt.name;\n const proj = selCmpt.project;\n const bind = selCmpt.bind;\n const init = selCmpt.init && selCmpt.init[0]; // Can only exist on single selections (one initial value).\n const datum = nearest.has(selCmpt) ? '(item().isVoronoi ? datum.datum : datum)' : 'datum';\n proj.items.forEach((p, i) => {\n const sgname = varName(`${name}_${p.field}`);\n const hasSignal = signals.filter(s => s.name === sgname);\n if (!hasSignal.length) {\n signals.unshift(Object.assign({ name: sgname }, (init ? { init: assembleInit(init[i]) } : { value: null }), { on: [\n {\n events: selCmpt.events,\n update: `datum && item().mark.marktype !== 'group' ? ${accessPathWithDatum(p.field, datum)} : null`\n }\n ], bind: bind[p.field] || bind[p.channel] || bind }));\n }\n });\n return signals;\n },\n signals: (model, selCmpt, signals) => {\n const name = selCmpt.name;\n const proj = selCmpt.project;\n const signal = signals.filter(s => s.name === name + TUPLE)[0];\n const fields = name + TUPLE_FIELDS;\n const values = proj.items.map(p => varName(`${name}_${p.field}`));\n const valid = values.map(v => `${v} !== null`).join(' && ');\n if (values.length) {\n signal.update = `${valid} ? {fields: ${fields}, values: [${values.join(', ')}]} : null`;\n }\n delete signal.value;\n delete signal.on;\n return signals;\n }\n};\nexport default inputBindings;\n//# sourceMappingURL=inputs.js.map","import { TUPLE, unitName } from '..';\nexport const TOGGLE = '_toggle';\nconst toggle = {\n has: selCmpt => {\n return selCmpt.type === 'multi' && selCmpt.toggle;\n },\n signals: (model, selCmpt, signals) => {\n return signals.concat({\n name: selCmpt.name + TOGGLE,\n value: false,\n on: [{ events: selCmpt.events, update: selCmpt.toggle }]\n });\n },\n modifyExpr: (model, selCmpt) => {\n const tpl = selCmpt.name + TUPLE;\n const signal = selCmpt.name + TOGGLE;\n return (`${signal} ? null : ${tpl}, ` +\n (selCmpt.resolve === 'global' ? `${signal} ? null : true, ` : `${signal} ? null : {unit: ${unitName(model)}}, `) +\n `${signal} ? ${tpl} : null`);\n }\n};\nexport default toggle;\n//# sourceMappingURL=toggle.js.map","import { selector as parseSelector } from 'vega-event-selector';\nimport { TUPLE } from '..';\nimport { varName } from '../../../util';\nimport inputBindings from './inputs';\nimport toggle, { TOGGLE } from './toggle';\nconst clear = {\n has: selCmpt => {\n return selCmpt.clear !== false;\n },\n parse: (model, selDef, selCmpt) => {\n if (selDef.clear) {\n selCmpt.clear = parseSelector(selDef.clear, 'scope');\n }\n },\n topLevelSignals: (model, selCmpt, signals) => {\n if (inputBindings.has(selCmpt)) {\n selCmpt.project.items.forEach(proj => {\n const idx = signals.findIndex(n => n.name === varName(`${selCmpt.name}_${proj.field}`));\n if (idx !== -1) {\n signals[idx].on.push({ events: selCmpt.clear, update: 'null' });\n }\n });\n }\n return signals;\n },\n signals: (model, selCmpt, signals) => {\n function addClear(idx, update) {\n if (idx !== -1 && signals[idx].on) {\n signals[idx].on.push({ events: selCmpt.clear, update });\n }\n }\n // Be as minimalist as possible when adding clear triggers to minimize dataflow execution.\n if (selCmpt.type === 'interval') {\n selCmpt.project.items.forEach(proj => {\n const vIdx = signals.findIndex(n => n.name === proj.signals.visual);\n addClear(vIdx, '[0, 0]');\n if (vIdx === -1) {\n const dIdx = signals.findIndex(n => n.name === proj.signals.data);\n addClear(dIdx, 'null');\n }\n });\n }\n else {\n let tIdx = signals.findIndex(n => n.name === selCmpt.name + TUPLE);\n addClear(tIdx, 'null');\n if (toggle.has(selCmpt)) {\n tIdx = signals.findIndex(n => n.name === selCmpt.name + TOGGLE);\n addClear(tIdx, 'false');\n }\n }\n return signals;\n }\n};\nexport default clear;\n//# sourceMappingURL=clear.js.map","import { selector as parseSelector } from 'vega-event-selector';\nimport { X, Y } from '../../../channel';\nimport { BRUSH as INTERVAL_BRUSH } from '../interval';\nimport scalesCompiler, { domain } from './scales';\nconst ANCHOR = '_translate_anchor';\nconst DELTA = '_translate_delta';\nconst translate = {\n has: selCmpt => {\n return selCmpt.type === 'interval' && selCmpt.translate;\n },\n signals: (model, selCmpt, signals) => {\n const name = selCmpt.name;\n const hasScales = scalesCompiler.has(selCmpt);\n const anchor = name + ANCHOR;\n const { x, y } = selCmpt.project.has;\n let events = parseSelector(selCmpt.translate, 'scope');\n if (!hasScales) {\n events = events.map(e => ((e.between[0].markname = name + INTERVAL_BRUSH), e));\n }\n signals.push({\n name: anchor,\n value: {},\n on: [\n {\n events: events.map(e => e.between[0]),\n update: '{x: x(unit), y: y(unit)' +\n (x !== undefined ? ', extent_x: ' + (hasScales ? domain(model, X) : `slice(${x.signals.visual})`) : '') +\n (y !== undefined ? ', extent_y: ' + (hasScales ? domain(model, Y) : `slice(${y.signals.visual})`) : '') +\n '}'\n }\n ]\n }, {\n name: name + DELTA,\n value: {},\n on: [\n {\n events: events,\n update: `{x: ${anchor}.x - x(unit), y: ${anchor}.y - y(unit)}`\n }\n ]\n });\n if (x !== undefined) {\n onDelta(model, selCmpt, x, 'width', signals);\n }\n if (y !== undefined) {\n onDelta(model, selCmpt, y, 'height', signals);\n }\n return signals;\n }\n};\nexport default translate;\nfunction onDelta(model, selCmpt, proj, size, signals) {\n const name = selCmpt.name;\n const anchor = name + ANCHOR;\n const delta = name + DELTA;\n const channel = proj.channel;\n const hasScales = scalesCompiler.has(selCmpt);\n const signal = signals.filter(s => s.name === proj.signals[hasScales ? 'data' : 'visual'])[0];\n const sizeSg = model.getSizeSignalRef(size).signal;\n const scaleCmpt = model.getScaleComponent(channel);\n const scaleType = scaleCmpt.get('type');\n const sign = hasScales && channel === X ? '-' : ''; // Invert delta when panning x-scales.\n const extent = `${anchor}.extent_${channel}`;\n const offset = `${sign}${delta}.${channel} / ` + (hasScales ? `${sizeSg}` : `span(${extent})`);\n const panFn = !hasScales\n ? 'panLinear'\n : scaleType === 'log'\n ? 'panLog'\n : scaleType === 'pow'\n ? 'panPow'\n : 'panLinear';\n const update = `${panFn}(${extent}, ${offset}` +\n (hasScales && scaleType === 'pow' ? `, ${scaleCmpt.get('exponent') || 1}` : '') +\n ')';\n signal.on.push({\n events: { signal: delta },\n update: hasScales ? update : `clampRange(${update}, 0, ${sizeSg})`\n });\n}\n//# sourceMappingURL=translate.js.map","import { selector as parseSelector } from 'vega-event-selector';\nimport { stringValue } from 'vega-util';\nimport { X, Y } from '../../../channel';\nimport { BRUSH as INTERVAL_BRUSH } from '../interval';\nimport { default as scalesCompiler, domain } from './scales';\nconst ANCHOR = '_zoom_anchor';\nconst DELTA = '_zoom_delta';\nconst zoom = {\n has: selCmpt => {\n return selCmpt.type === 'interval' && selCmpt.zoom;\n },\n signals: (model, selCmpt, signals) => {\n const name = selCmpt.name;\n const hasScales = scalesCompiler.has(selCmpt);\n const delta = name + DELTA;\n const { x, y } = selCmpt.project.has;\n const sx = stringValue(model.scaleName(X));\n const sy = stringValue(model.scaleName(Y));\n let events = parseSelector(selCmpt.zoom, 'scope');\n if (!hasScales) {\n events = events.map(e => ((e.markname = name + INTERVAL_BRUSH), e));\n }\n signals.push({\n name: name + ANCHOR,\n on: [\n {\n events: events,\n update: !hasScales\n ? `{x: x(unit), y: y(unit)}`\n : '{' +\n [sx ? `x: invert(${sx}, x(unit))` : '', sy ? `y: invert(${sy}, y(unit))` : '']\n .filter(expr => !!expr)\n .join(', ') +\n '}'\n }\n ]\n }, {\n name: delta,\n on: [\n {\n events: events,\n force: true,\n update: 'pow(1.001, event.deltaY * pow(16, event.deltaMode))'\n }\n ]\n });\n if (x !== undefined) {\n onDelta(model, selCmpt, x, 'width', signals);\n }\n if (y !== undefined) {\n onDelta(model, selCmpt, y, 'height', signals);\n }\n return signals;\n }\n};\nexport default zoom;\nfunction onDelta(model, selCmpt, proj, size, signals) {\n const name = selCmpt.name;\n const channel = proj.channel;\n const hasScales = scalesCompiler.has(selCmpt);\n const signal = signals.filter(s => s.name === proj.signals[hasScales ? 'data' : 'visual'])[0];\n const sizeSg = model.getSizeSignalRef(size).signal;\n const scaleCmpt = model.getScaleComponent(channel);\n const scaleType = scaleCmpt.get('type');\n const base = hasScales ? domain(model, channel) : signal.name;\n const delta = name + DELTA;\n const anchor = `${name}${ANCHOR}.${channel}`;\n const zoomFn = !hasScales\n ? 'zoomLinear'\n : scaleType === 'log'\n ? 'zoomLog'\n : scaleType === 'pow'\n ? 'zoomPow'\n : 'zoomLinear';\n const update = `${zoomFn}(${base}, ${anchor}, ${delta}` +\n (hasScales && scaleType === 'pow' ? `, ${scaleCmpt.get('exponent') || 1}` : '') +\n ')';\n signal.on.push({\n events: { signal: delta },\n update: hasScales ? update : `clampRange(${update}, 0, ${sizeSg})`\n });\n}\n//# sourceMappingURL=zoom.js.map","import clear from './clear';\nimport inputs from './inputs';\nimport nearest from './nearest';\nimport project from './project';\nimport scales from './scales';\nimport toggle from './toggle';\nimport translate from './translate';\nimport zoom from './zoom';\nconst compilers = [project, toggle, scales, translate, zoom, inputs, nearest, clear];\nexport function forEachTransform(selCmpt, cb) {\n for (const t of compilers) {\n if (t.has(selCmpt)) {\n cb(t);\n }\n }\n}\n//# sourceMappingURL=transforms.js.map","import { selector as parseSelector } from 'vega-event-selector';\nimport { identity, isArray, stringValue } from 'vega-util';\nimport { forEachSelection, MODIFY, SELECTION_DOMAIN, STORE, VL_SELECTION_RESOLVE } from '.';\nimport { dateTimeExpr, isDateTime } from '../../datetime';\nimport { warn } from '../../log';\nimport { accessPathWithDatum, keys, logicalExpr, varName } from '../../util';\nimport { isUnitModel } from '../model';\nimport { forEachTransform } from './transforms/transforms';\nexport function assembleInit(init, wrap = identity) {\n if (isArray(init)) {\n const str = init.map(v => assembleInit(v, wrap)).join(', ');\n return `[${str}]`;\n }\n else if (isDateTime(init)) {\n return wrap(dateTimeExpr(init));\n }\n return wrap(JSON.stringify(init));\n}\nexport function assembleUnitSelectionSignals(model, signals) {\n forEachSelection(model, (selCmpt, selCompiler) => {\n const name = selCmpt.name;\n let modifyExpr = selCompiler.modifyExpr(model, selCmpt);\n signals.push(...selCompiler.signals(model, selCmpt));\n forEachTransform(selCmpt, txCompiler => {\n if (txCompiler.signals) {\n signals = txCompiler.signals(model, selCmpt, signals);\n }\n if (txCompiler.modifyExpr) {\n modifyExpr = txCompiler.modifyExpr(model, selCmpt, modifyExpr);\n }\n });\n signals.push({\n name: name + MODIFY,\n update: `modify(${stringValue(selCmpt.name + STORE)}, ${modifyExpr})`\n });\n });\n return signals;\n}\nexport function assembleFacetSignals(model, signals) {\n if (model.component.selection && keys(model.component.selection).length) {\n const name = stringValue(model.getName('cell'));\n signals.unshift({\n name: 'facet',\n value: {},\n on: [\n {\n events: parseSelector('mousemove', 'scope'),\n update: `isTuple(facet) ? facet : group(${name}).datum`\n }\n ]\n });\n }\n return signals;\n}\nexport function assembleTopLevelSignals(model, signals) {\n let hasSelections = false;\n forEachSelection(model, (selCmpt, selCompiler) => {\n const name = selCmpt.name;\n const store = stringValue(name + STORE);\n const hasSg = signals.filter(s => s.name === name);\n if (!hasSg.length) {\n signals.push({\n name: selCmpt.name,\n update: `${VL_SELECTION_RESOLVE}(${store}` +\n (selCmpt.resolve === 'global' ? ')' : `, ${stringValue(selCmpt.resolve)})`)\n });\n }\n hasSelections = true;\n if (selCompiler.topLevelSignals) {\n signals = selCompiler.topLevelSignals(model, selCmpt, signals);\n }\n forEachTransform(selCmpt, txCompiler => {\n if (txCompiler.topLevelSignals) {\n signals = txCompiler.topLevelSignals(model, selCmpt, signals);\n }\n });\n });\n if (hasSelections) {\n const hasUnit = signals.filter(s => s.name === 'unit');\n if (!hasUnit.length) {\n signals.unshift({\n name: 'unit',\n value: {},\n on: [{ events: 'mousemove', update: 'isTuple(group()) ? group() : unit' }]\n });\n }\n }\n return signals;\n}\nexport function assembleUnitSelectionData(model, data) {\n forEachSelection(model, selCmpt => {\n const contains = data.filter(d => d.name === selCmpt.name + STORE);\n if (!contains.length) {\n data.push({ name: selCmpt.name + STORE });\n }\n });\n return data;\n}\nexport function assembleUnitSelectionMarks(model, marks) {\n forEachSelection(model, (selCmpt, selCompiler) => {\n marks = selCompiler.marks ? selCompiler.marks(model, selCmpt, marks) : marks;\n forEachTransform(selCmpt, txCompiler => {\n if (txCompiler.marks) {\n marks = txCompiler.marks(model, selCmpt, marks);\n }\n });\n });\n return marks;\n}\nexport function assembleLayerSelectionMarks(model, marks) {\n for (const child of model.children) {\n if (isUnitModel(child)) {\n marks = assembleUnitSelectionMarks(child, marks);\n }\n }\n return marks;\n}\nexport function assembleSelectionPredicate(model, selections, dfnode) {\n const stores = [];\n function expr(name) {\n const vname = varName(name);\n const selCmpt = model.getSelectionComponent(vname, name);\n const store = stringValue(vname + STORE);\n if (selCmpt.project.timeUnit) {\n const child = dfnode || model.component.data.raw;\n const tunode = selCmpt.project.timeUnit.clone();\n if (child.parent) {\n tunode.insertAsParentOf(child);\n }\n else {\n child.parent = tunode;\n }\n }\n if (selCmpt.empty !== 'none') {\n stores.push(store);\n }\n return (`vlSelectionTest(${store}, datum` + (selCmpt.resolve === 'global' ? ')' : `, ${stringValue(selCmpt.resolve)})`));\n }\n const predicateStr = logicalExpr(selections, expr);\n return ((stores.length ? '!(' + stores.map(s => `length(data(${s}))`).join(' || ') + ') || ' : '') + `(${predicateStr})`);\n}\n// Selections are parsed _after_ scales. If a scale domain is set to\n// use a selection, the SELECTION_DOMAIN constant is used as the\n// domainRaw.signal during scale.parse and then replaced with the necessary\n// selection expression function during scale.assemble. To not pollute the\n// type signatures to account for this setup, the selection domain definition\n// is coerced to a string and appended to SELECTION_DOMAIN.\nexport function assembleSelectionScaleDomain(model, domainRaw) {\n const selDomain = JSON.parse(domainRaw.signal.replace(SELECTION_DOMAIN, ''));\n const name = varName(selDomain.selection);\n const encoding = selDomain.encoding;\n let field = selDomain.field;\n let selCmpt = model.component.selection && model.component.selection[name];\n if (selCmpt) {\n warn('Use \"bind\": \"scales\" to setup a binding for scales and selections within the same view.');\n }\n else {\n selCmpt = model.getSelectionComponent(name, selDomain.selection);\n if (!encoding && !field) {\n field = selCmpt.project.items[0].field;\n if (selCmpt.project.items.length > 1) {\n warn('A \"field\" or \"encoding\" must be specified when using a selection as a scale domain. ' +\n `Using \"field\": ${stringValue(field)}.`);\n }\n }\n else if (encoding && !field) {\n const encodings = selCmpt.project.items.filter(p => p.channel === encoding);\n if (!encodings.length || encodings.length > 1) {\n field = selCmpt.project.items[0].field;\n warn((!encodings.length ? 'No ' : 'Multiple ') +\n `matching ${stringValue(encoding)} encoding found for selection ${stringValue(selDomain.selection)}. ` +\n `Using \"field\": ${stringValue(field)}.`);\n }\n else {\n field = encodings[0].field;\n }\n }\n return { signal: accessPathWithDatum(field, name) };\n }\n return { signal: 'null' };\n}\n//# sourceMappingURL=assemble.js.map","import { isString } from 'vega-util';\nimport { fieldFilterExpression, isSelectionPredicate } from '../predicate';\nimport { logicalExpr } from '../util';\nimport { assembleSelectionPredicate } from './selection/assemble';\n/**\n * Converts a predicate into an expression.\n */\n// model is only used for selection filters.\nexport function expression(model, filterOp, node) {\n return logicalExpr(filterOp, (predicate) => {\n if (isString(predicate)) {\n return predicate;\n }\n else if (isSelectionPredicate(predicate)) {\n return assembleSelectionPredicate(model, predicate.selection, node);\n }\n else {\n // Filter Object\n return fieldFilterExpression(predicate);\n }\n });\n}\n//# sourceMappingURL=predicate.js.map","import { isFunction, isString, stringValue } from 'vega-util';\nimport { isCountingAggregateOp } from '../../aggregate';\nimport { isBinned, isBinning } from '../../bin';\nimport { getMainRangeChannel, X, X2, Y, Y2 } from '../../channel';\nimport { binRequiresRange, format, hasConditionalFieldDef, isFieldDef, isTypedFieldDef, isValueDef, title, vgField } from '../../channeldef';\nimport { forEach } from '../../encoding';\nimport * as log from '../../log';\nimport { isPathMark } from '../../mark';\nimport { hasDiscreteDomain, isContinuousToContinuous, ScaleType } from '../../scale';\nimport { QUANTITATIVE } from '../../type';\nimport { contains, getFirstDefined } from '../../util';\nimport { formatSignalRef, getMarkConfig } from '../common';\nfunction midPointWithPositionInvalidTest(params) {\n const { channel, channelDef, mark, scale } = params;\n const ref = midPoint(params);\n // Wrap to check if the positional value is invalid, if so, plot the point on the min value\n if (\n // Only this for field def without counting aggregate (as count wouldn't be null)\n isFieldDef(channelDef) &&\n !isCountingAggregateOp(channelDef.aggregate) &&\n // and only for continuous scale without zero (otherwise, null / invalid will be interpreted as zero, which doesn't cause layout problem)\n scale &&\n isContinuousToContinuous(scale.get('type')) &&\n scale.get('zero') === false) {\n return wrapPositionInvalidTest({\n fieldDef: channelDef,\n channel,\n mark,\n ref\n });\n }\n return ref;\n}\nfunction wrapPositionInvalidTest({ fieldDef, channel, mark, ref }) {\n if (!isPathMark(mark)) {\n // Only do this for non-path mark (as path marks will already use \"defined\" to skip points)\n return [fieldInvalidTestValueRef(fieldDef, channel), ref];\n }\n return ref;\n}\nexport function fieldInvalidTestValueRef(fieldDef, channel) {\n const test = fieldInvalidPredicate(fieldDef, true);\n const mainChannel = getMainRangeChannel(channel);\n const zeroValueRef = mainChannel === 'x' ? { value: 0 } : { field: { group: 'height' } };\n return Object.assign({ test }, zeroValueRef);\n}\nexport function fieldInvalidPredicate(field, invalid = true) {\n field = isString(field) ? field : vgField(field, { expr: 'datum' });\n const op = invalid ? '||' : '&&';\n const eq = invalid ? '===' : '!==';\n return `${field} ${eq} null ${op} ${invalid ? '' : '!'}isNaN(${field})`;\n}\n// TODO: we need to find a way to refactor these so that scaleName is a part of scale\n// but that's complicated. For now, this is a huge step moving forward.\n/**\n * @return Vega ValueRef for normal x- or y-position without projection\n */\nexport function position(params) {\n const { channel, channelDef, scaleName, stack, offset } = params;\n if (isFieldDef(channelDef) && stack && channel === stack.fieldChannel) {\n // x or y use stack_end so that stacked line's point mark use stack_end too.\n return fieldRef(channelDef, scaleName, { suffix: 'end' }, { offset });\n }\n return midPointWithPositionInvalidTest(params);\n}\n/**\n * @return Vega ValueRef for normal x2- or y2-position without projection\n */\nexport function position2({ channel, channelDef, channel2Def, scaleName, scale, stack, mark, offset, defaultRef }) {\n if (isFieldDef(channelDef) &&\n stack &&\n // If fieldChannel is X and channel is X2 (or Y and Y2)\n channel.charAt(0) === stack.fieldChannel.charAt(0)) {\n return fieldRef(channelDef, scaleName, { suffix: 'start' }, { offset });\n }\n return midPointWithPositionInvalidTest({\n channel,\n channelDef: channel2Def,\n scaleName,\n scale,\n stack,\n mark,\n offset,\n defaultRef\n });\n}\nexport function getOffset(channel, markDef) {\n const offsetChannel = (channel + 'Offset'); // Need to cast as the type can't be inferred automatically\n // TODO: in the future read from encoding channel too\n const markDefOffsetValue = markDef[offsetChannel];\n if (markDefOffsetValue) {\n return markDefOffsetValue;\n }\n return undefined;\n}\n/**\n * Value Ref for binned fields\n */\nexport function bin({ channel, fieldDef, scaleName, mark, side, offset }) {\n const binSuffix = side === 'start' ? undefined : 'end';\n const ref = fieldRef(fieldDef, scaleName, { binSuffix }, offset ? { offset } : {});\n return wrapPositionInvalidTest({\n fieldDef,\n channel,\n mark,\n ref\n });\n}\nexport function fieldRef(fieldDef, scaleName, opt, mixins) {\n const ref = Object.assign({}, (scaleName ? { scale: scaleName } : {}), { field: vgField(fieldDef, opt) });\n if (mixins) {\n const { offset, band } = mixins;\n return Object.assign({}, ref, (offset ? { offset } : {}), (band ? { band } : {}));\n }\n return ref;\n}\nexport function bandRef(scaleName, band = true) {\n return {\n scale: scaleName,\n band: band\n };\n}\n/**\n * Signal that returns the middle of a bin from start and end field. Should only be used with x and y.\n */\nfunction binMidSignal({ scaleName, fieldDef, fieldDef2, offset }) {\n const start = vgField(fieldDef, { expr: 'datum' });\n const end = fieldDef2 !== undefined\n ? vgField(fieldDef2, { expr: 'datum' })\n : vgField(fieldDef, { binSuffix: 'end', expr: 'datum' });\n return Object.assign({ signal: `scale(\"${scaleName}\", (${start} + ${end}) / 2)` }, (offset ? { offset } : {}));\n}\n/**\n * @returns {VgValueRef} Value Ref for xc / yc or mid point for other channels.\n */\nexport function midPoint({ channel, channelDef, channel2Def, scaleName, scale, stack, offset, defaultRef }) {\n // TODO: datum support\n if (channelDef) {\n /* istanbul ignore else */\n if (isFieldDef(channelDef)) {\n if (isTypedFieldDef(channelDef)) {\n if (isBinning(channelDef.bin)) {\n // Use middle only for x an y to place marks in the center between start and end of the bin range.\n // We do not use the mid point for other channels (e.g. size) so that properties of legends and marks match.\n if (contains([X, Y], channel) && channelDef.type === QUANTITATIVE) {\n if (stack && stack.impute) {\n // For stack, we computed bin_mid so we can impute.\n return fieldRef(channelDef, scaleName, { binSuffix: 'mid' }, { offset });\n }\n // For non-stack, we can just calculate bin mid on the fly using signal.\n return binMidSignal({ scaleName, fieldDef: channelDef, offset });\n }\n return fieldRef(channelDef, scaleName, binRequiresRange(channelDef, channel) ? { binSuffix: 'range' } : {}, {\n offset\n });\n }\n else if (isBinned(channelDef.bin)) {\n if (isFieldDef(channel2Def)) {\n return binMidSignal({ scaleName, fieldDef: channelDef, fieldDef2: channel2Def, offset });\n }\n else {\n const channel2 = channel === X ? X2 : Y2;\n log.warn(log.message.channelRequiredForBinned(channel2));\n }\n }\n }\n if (scale) {\n const scaleType = scale.get('type');\n if (hasDiscreteDomain(scaleType)) {\n if (scaleType === 'band') {\n // For band, to get mid point, need to offset by half of the band\n return fieldRef(channelDef, scaleName, { binSuffix: 'range' }, { band: 0.5, offset });\n }\n return fieldRef(channelDef, scaleName, { binSuffix: 'range' }, { offset });\n }\n }\n return fieldRef(channelDef, scaleName, {}, { offset }); // no need for bin suffix\n }\n else if (isValueDef(channelDef)) {\n const value = channelDef.value;\n const offsetMixins = offset ? { offset } : {};\n if (contains(['x', 'x2'], channel) && value === 'width') {\n return Object.assign({ field: { group: 'width' } }, offsetMixins);\n }\n else if (contains(['y', 'y2'], channel) && value === 'height') {\n return Object.assign({ field: { group: 'height' } }, offsetMixins);\n }\n return Object.assign({ value }, offsetMixins);\n }\n // If channelDef is neither field def or value def, it's a condition-only def.\n // In such case, we will use default ref.\n }\n return isFunction(defaultRef) ? defaultRef() : defaultRef;\n}\nexport function tooltipForEncoding(encoding, config, { reactiveGeom }) {\n const keyValues = [];\n const usedKey = {};\n function add(fieldDef, channel) {\n const mainChannel = getMainRangeChannel(channel);\n if (channel !== mainChannel) {\n fieldDef = Object.assign({}, fieldDef, { type: encoding[mainChannel].type });\n }\n const key = title(fieldDef, config, { allowDisabling: false });\n const value = text(fieldDef, config, reactiveGeom ? 'datum.datum' : 'datum').signal;\n if (!usedKey[key]) {\n keyValues.push(`${stringValue(key)}: ${value}`);\n }\n usedKey[key] = true;\n }\n forEach(encoding, (channelDef, channel) => {\n if (isFieldDef(channelDef)) {\n add(channelDef, channel);\n }\n else if (hasConditionalFieldDef(channelDef)) {\n add(channelDef.condition, channel);\n }\n });\n return keyValues.length ? { signal: `{${keyValues.join(', ')}}` } : undefined;\n}\nexport function text(channelDef, config, expr = 'datum') {\n // text\n if (channelDef) {\n if (isValueDef(channelDef)) {\n return { value: channelDef.value };\n }\n if (isTypedFieldDef(channelDef)) {\n return formatSignalRef(channelDef, format(channelDef), expr, config);\n }\n }\n return undefined;\n}\nexport function mid(sizeRef) {\n return Object.assign({}, sizeRef, { mult: 0.5 });\n}\nexport function positionDefault({ markDef, config, defaultRef, channel, scaleName, scale, mark, checkBarAreaWithoutZero: checkBarAreaWithZero }) {\n return () => {\n const mainChannel = getMainRangeChannel(channel);\n const definedValueOrConfig = getFirstDefined(markDef[channel], getMarkConfig(channel, markDef, config));\n if (definedValueOrConfig !== undefined) {\n return { value: definedValueOrConfig };\n }\n if (isString(defaultRef)) {\n if (scaleName) {\n const scaleType = scale.get('type');\n if (contains([ScaleType.LOG, ScaleType.TIME, ScaleType.UTC], scaleType)) {\n // Log scales cannot have zero.\n // Zero in time scale is arbitrary, and does not affect ratio.\n // (Time is an interval level of measurement, not ratio).\n // See https://en.wikipedia.org/wiki/Level_of_measurement for more info.\n if (checkBarAreaWithZero && (mark === 'bar' || mark === 'area')) {\n log.warn(log.message.nonZeroScaleUsedWithLengthMark(mark, mainChannel, { scaleType }));\n }\n }\n else {\n if (scale.domainDefinitelyIncludesZero) {\n return {\n scale: scaleName,\n value: 0\n };\n }\n if (checkBarAreaWithZero && (mark === 'bar' || mark === 'area')) {\n log.warn(log.message.nonZeroScaleUsedWithLengthMark(mark, mainChannel, { zeroFalse: scale.explicit.zero === false }));\n }\n }\n }\n if (defaultRef === 'zeroOrMin') {\n return mainChannel === 'x' ? { value: 0 } : { field: { group: 'height' } };\n }\n else {\n // zeroOrMax\n return mainChannel === 'x' ? { field: { group: 'width' } } : { value: 0 };\n }\n }\n return defaultRef;\n };\n}\n//# sourceMappingURL=valueref.js.map","import { array, isArray, isObject, isString } from 'vega-util';\nimport { isBinned, isBinning } from '../../bin';\nimport { SCALE_CHANNELS, X, X2, Y2 } from '../../channel';\nimport { getTypedFieldDef, isConditionalSelection, isFieldDef, isValueDef } from '../../channeldef';\nimport * as log from '../../log';\nimport { isPathMark } from '../../mark';\nimport { hasContinuousDomain } from '../../scale';\nimport { contains, getFirstDefined, keys } from '../../util';\nimport { VG_MARK_CONFIGS } from '../../vega.schema';\nimport { getMarkConfig } from '../common';\nimport { expression } from '../predicate';\nimport { assembleSelectionPredicate } from '../selection/assemble';\nimport * as ref from './valueref';\nimport { fieldInvalidPredicate } from './valueref';\nfunction isVisible(c) {\n return c !== 'transparent' && c !== null && c !== undefined;\n}\nexport function color(model) {\n const { markDef, encoding, config } = model;\n const { filled, type: markType } = markDef;\n const configValue = {\n fill: getMarkConfig('fill', markDef, config),\n stroke: getMarkConfig('stroke', markDef, config),\n color: getMarkConfig('color', markDef, config)\n };\n const transparentIfNeeded = contains(['bar', 'point', 'circle', 'square', 'geoshape'], markType)\n ? 'transparent'\n : undefined;\n const defaultFill = getFirstDefined(markDef.fill, configValue.fill, \n // If there is no fill, always fill symbols, bar, geoshape\n // with transparent fills https://github.com/vega/vega-lite/issues/1316\n transparentIfNeeded);\n const defaultStroke = getFirstDefined(markDef.stroke, configValue.stroke);\n const colorVgChannel = filled ? 'fill' : 'stroke';\n const fillStrokeMarkDefAndConfig = Object.assign({}, (defaultFill ? { fill: { value: defaultFill } } : {}), (defaultStroke ? { stroke: { value: defaultStroke } } : {}));\n if (encoding.fill || encoding.stroke) {\n // ignore encoding.color, markDef.color, config.color\n if (markDef.color) {\n // warn for markDef.color (no need to warn encoding.color as it will be dropped in normalized already)\n log.warn(log.message.droppingColor('property', { fill: 'fill' in encoding, stroke: 'stroke' in encoding }));\n }\n return Object.assign({}, nonPosition('fill', model, { defaultValue: getFirstDefined(defaultFill, transparentIfNeeded) }), nonPosition('stroke', model, { defaultValue: defaultStroke }));\n }\n else if (encoding.color) {\n return Object.assign({}, fillStrokeMarkDefAndConfig, nonPosition('color', model, {\n vgChannel: colorVgChannel,\n // apply default fill/stroke first, then color config, then transparent if needed.\n defaultValue: getFirstDefined(markDef[colorVgChannel], markDef.color, configValue[colorVgChannel], configValue.color, filled ? transparentIfNeeded : undefined)\n }));\n }\n else if (isVisible(markDef.fill) || isVisible(markDef.stroke)) {\n // Ignore markDef.color\n if (markDef.color) {\n log.warn(log.message.droppingColor('property', { fill: 'fill' in markDef, stroke: 'stroke' in markDef }));\n }\n return fillStrokeMarkDefAndConfig;\n }\n else if (markDef.color) {\n return Object.assign({}, fillStrokeMarkDefAndConfig, { \n // override config with markDef.color\n [colorVgChannel]: { value: markDef.color } });\n }\n else if (isVisible(configValue.fill) || isVisible(configValue.stroke)) {\n // ignore config.color\n return fillStrokeMarkDefAndConfig;\n }\n else if (configValue.color) {\n return Object.assign({}, (transparentIfNeeded ? { fill: { value: 'transparent' } } : {}), { [colorVgChannel]: { value: configValue.color } });\n }\n return {};\n}\nexport function baseEncodeEntry(model, ignore) {\n const { fill, stroke } = color(model);\n return Object.assign({}, markDefProperties(model.markDef, ignore), wrapAllFieldsInvalid(model, 'fill', fill), wrapAllFieldsInvalid(model, 'stroke', stroke), nonPosition('opacity', model), nonPosition('fillOpacity', model), nonPosition('strokeOpacity', model), nonPosition('strokeWidth', model), tooltip(model), text(model, 'href'));\n}\nfunction wrapAllFieldsInvalid(model, channel, valueRef) {\n const { config, mark } = model;\n if (config.invalidValues === 'hide' && valueRef && !isPathMark(mark)) {\n // For non-path marks, we have to exclude invalid values (null and NaN) for scales with continuous domains.\n // For path marks, we will use \"defined\" property and skip these values instead.\n const test = allFieldsInvalidPredicate(model, { invalid: true, channels: SCALE_CHANNELS });\n if (test) {\n return {\n [channel]: [\n // prepend the invalid case\n // TODO: support custom value\n { test, value: null },\n ...array(valueRef)\n ]\n };\n }\n }\n return valueRef ? { [channel]: valueRef } : {};\n}\nfunction markDefProperties(mark, ignore) {\n return VG_MARK_CONFIGS.reduce((m, prop) => {\n if (mark[prop] !== undefined && ignore[prop] !== 'ignore') {\n m[prop] = { value: mark[prop] };\n }\n return m;\n }, {});\n}\nexport function valueIfDefined(prop, value) {\n if (value !== undefined) {\n return { [prop]: { value: value } };\n }\n return undefined;\n}\nfunction allFieldsInvalidPredicate(model, { invalid = false, channels }) {\n const filterIndex = channels.reduce((aggregator, channel) => {\n const scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n const scaleType = scaleComponent.get('type');\n const field = model.vgField(channel, { expr: 'datum' });\n // While discrete domain scales can handle invalid values, continuous scales can't.\n if (field && hasContinuousDomain(scaleType)) {\n aggregator[field] = true;\n }\n }\n return aggregator;\n }, {});\n const fields = keys(filterIndex);\n if (fields.length > 0) {\n const op = invalid ? '||' : '&&';\n return fields.map(field => fieldInvalidPredicate(field, invalid)).join(` ${op} `);\n }\n return undefined;\n}\nexport function defined(model) {\n if (model.config.invalidValues) {\n const signal = allFieldsInvalidPredicate(model, { channels: ['x', 'y'] });\n if (signal) {\n return { defined: { signal } };\n }\n }\n return {};\n}\n/**\n * Return mixins for non-positional channels with scales. (Text doesn't have scale.)\n */\nexport function nonPosition(channel, model, opt = {}) {\n const { markDef, encoding, config } = model;\n const { vgChannel = channel } = opt;\n let { defaultRef, defaultValue } = opt;\n if (defaultRef === undefined) {\n // prettier-ignore\n defaultValue = defaultValue ||\n (vgChannel === channel\n ? // When vl channel is the same as Vega's, no need to read from config as Vega will apply them correctly\n markDef[channel]\n : // However, when they are different (e.g, vl's text size is vg fontSize), need to read \"size\" from configs\n getFirstDefined(markDef[channel], markDef[vgChannel], getMarkConfig(channel, markDef, config, { vgChannel })));\n defaultRef = defaultValue ? { value: defaultValue } : undefined;\n }\n const channelDef = encoding[channel];\n return wrapCondition(model, channelDef, vgChannel, cDef => {\n return ref.midPoint({\n channel,\n channelDef: cDef,\n scaleName: model.scaleName(channel),\n scale: model.getScaleComponent(channel),\n stack: null,\n defaultRef\n });\n });\n}\n/**\n * Return a mixin that include a Vega production rule for a Vega-Lite conditional channel definition.\n * or a simple mixin if channel def has no condition.\n */\nexport function wrapCondition(model, channelDef, vgChannel, refFn) {\n const condition = channelDef && channelDef.condition;\n const valueRef = refFn(channelDef);\n if (condition) {\n const conditions = isArray(condition) ? condition : [condition];\n const vgConditions = conditions.map(c => {\n const conditionValueRef = refFn(c);\n const test = isConditionalSelection(c)\n ? assembleSelectionPredicate(model, c.selection)\n : expression(model, c.test);\n return Object.assign({ test }, conditionValueRef);\n });\n return {\n [vgChannel]: [...vgConditions, ...(valueRef !== undefined ? [valueRef] : [])]\n };\n }\n else {\n return valueRef !== undefined ? { [vgChannel]: valueRef } : {};\n }\n}\nexport function tooltip(model, opt = {}) {\n const { encoding, markDef, config } = model;\n const channelDef = encoding.tooltip;\n if (isArray(channelDef)) {\n return { tooltip: ref.tooltipForEncoding({ tooltip: channelDef }, config, opt) };\n }\n else {\n return wrapCondition(model, channelDef, 'tooltip', cDef => {\n // use valueRef based on channelDef first\n const tooltipRefFromChannelDef = ref.text(cDef, model.config, opt.reactiveGeom ? 'datum.datum' : 'datum');\n if (tooltipRefFromChannelDef) {\n return tooltipRefFromChannelDef;\n }\n if (cDef === null) {\n // Allow using encoding.tooltip = null to disable tooltip\n return undefined;\n }\n // If tooltipDef does not exist, then use value from markDef or config\n const markTooltip = getFirstDefined(markDef.tooltip, getMarkConfig('tooltip', markDef, config));\n if (isString(markTooltip)) {\n return { value: markTooltip };\n }\n else if (isObject(markTooltip)) {\n // `tooltip` is `{fields: 'encodings' | 'fields'}`\n if (markTooltip.content === 'encoding') {\n return ref.tooltipForEncoding(encoding, config, opt);\n }\n else {\n return { signal: 'datum' };\n }\n }\n return undefined;\n });\n }\n}\nexport function text(model, channel = 'text') {\n const channelDef = model.encoding[channel];\n return wrapCondition(model, channelDef, channel, cDef => ref.text(cDef, model.config));\n}\nexport function bandPosition(fieldDef, channel, model, defaultSizeRef) {\n const scaleName = model.scaleName(channel);\n const sizeChannel = channel === 'x' ? 'width' : 'height';\n if (model.encoding.size ||\n model.markDef.size !== undefined ||\n (defaultSizeRef && defaultSizeRef.value !== undefined)) {\n const orient = model.markDef.orient;\n if (orient) {\n const centeredBandPositionMixins = {\n // Use xc/yc and place the mark at the middle of the band\n // This way we never have to deal with size's condition for x/y position.\n [channel + 'c']: ref.fieldRef(fieldDef, scaleName, {}, { band: 0.5 })\n };\n if (getTypedFieldDef(model.encoding.size)) {\n return Object.assign({}, centeredBandPositionMixins, nonPosition('size', model, { vgChannel: sizeChannel }));\n }\n else if (isValueDef(model.encoding.size)) {\n return Object.assign({}, centeredBandPositionMixins, nonPosition('size', model, { vgChannel: sizeChannel }));\n }\n else if (model.markDef.size !== undefined) {\n return Object.assign({}, centeredBandPositionMixins, { [sizeChannel]: { value: model.markDef.size } });\n }\n else if (defaultSizeRef && defaultSizeRef.value !== undefined) {\n return Object.assign({}, centeredBandPositionMixins, { [sizeChannel]: defaultSizeRef });\n }\n }\n else {\n log.warn(log.message.cannotApplySizeToNonOrientedMark(model.markDef.type));\n }\n }\n return {\n // FIXME: make offset works correctly here when we support group bar (https://github.com/vega/vega-lite/issues/396)\n [channel]: ref.fieldRef(fieldDef, scaleName, { binSuffix: 'range' }, {}),\n [sizeChannel]: defaultSizeRef || ref.bandRef(scaleName)\n };\n}\nexport function centeredPointPositionWithSize(channel, model, defaultPosRef, defaultSizeRef) {\n const centerChannel = channel === 'x' ? 'xc' : 'yc';\n const sizeChannel = channel === 'x' ? 'width' : 'height';\n return Object.assign({}, pointPosition(channel, model, defaultPosRef, centerChannel), nonPosition('size', model, { defaultRef: defaultSizeRef, vgChannel: sizeChannel }));\n}\nexport function binPosition({ fieldDef, fieldDef2, channel, scaleName, mark, spacing = 0, reverse }) {\n const binSpacing = {\n x: reverse ? spacing : 0,\n x2: reverse ? 0 : spacing,\n y: reverse ? 0 : spacing,\n y2: reverse ? spacing : 0\n };\n const channel2 = channel === X ? X2 : Y2;\n if (isBinning(fieldDef.bin)) {\n return {\n [channel2]: ref.bin({\n channel,\n fieldDef,\n scaleName,\n mark,\n side: 'start',\n offset: binSpacing[`${channel}2`]\n }),\n [channel]: ref.bin({ channel, fieldDef, scaleName, mark, side: 'end', offset: binSpacing[channel] })\n };\n }\n else if (isBinned(fieldDef.bin) && isFieldDef(fieldDef2)) {\n return {\n [channel2]: ref.fieldRef(fieldDef, scaleName, {}, { offset: binSpacing[`${channel}2`] }),\n [channel]: ref.fieldRef(fieldDef2, scaleName, {}, { offset: binSpacing[channel] })\n };\n }\n else {\n log.warn(log.message.channelRequiredForBinned(channel2));\n return undefined;\n }\n}\n/**\n * Return mixins for point (non-band) position channels.\n */\nexport function pointPosition(channel, model, defaultRef, vgChannel) {\n // TODO: refactor how refer to scale as discussed in https://github.com/vega/vega-lite/pull/1613\n const { encoding, mark, markDef, config, stack } = model;\n const channelDef = encoding[channel];\n const channel2Def = encoding[channel === X ? X2 : Y2];\n const scaleName = model.scaleName(channel);\n const scale = model.getScaleComponent(channel);\n const offset = ref.getOffset(channel, model.markDef);\n const valueRef = !channelDef && (encoding.latitude || encoding.longitude)\n ? // use geopoint output if there are lat/long and there is no point position overriding lat/long.\n { field: model.getName(channel) }\n : ref.position({\n channel,\n channelDef,\n channel2Def,\n scaleName,\n scale,\n stack,\n mark,\n offset,\n defaultRef: ref.positionDefault({\n markDef,\n config,\n defaultRef,\n channel,\n scaleName,\n scale,\n mark,\n checkBarAreaWithoutZero: !channel2Def // only check for non-ranged marks\n })\n });\n return {\n [vgChannel || channel]: valueRef\n };\n}\n/**\n * Return mixins for x2, y2.\n * If channel is not specified, return one channel based on orientation.\n */\nexport function pointPosition2(model, defaultRef, channel) {\n const { encoding, mark, markDef, stack, config } = model;\n const baseChannel = channel === 'x2' ? 'x' : 'y';\n const channelDef = encoding[baseChannel];\n const scaleName = model.scaleName(baseChannel);\n const scale = model.getScaleComponent(baseChannel);\n const offset = ref.getOffset(channel, model.markDef);\n const valueRef = !channelDef && (encoding.latitude || encoding.longitude)\n ? // use geopoint output if there are lat2/long2 and there is no point position2 overriding lat2/long2.\n { field: model.getName(channel) }\n : ref.position2({\n channel,\n channelDef,\n channel2Def: encoding[channel],\n scaleName,\n scale,\n stack,\n mark,\n offset,\n defaultRef: ref.positionDefault({\n markDef,\n config,\n defaultRef,\n channel,\n scaleName,\n scale,\n mark,\n checkBarAreaWithoutZero: !encoding[channel] // only check for non-ranged marks\n })\n });\n return { [channel]: valueRef };\n}\n//# sourceMappingURL=mixins.js.map","import { keys } from '../util';\nimport { wrapCondition } from './mark/mixins';\nexport function guideEncodeEntry(encoding, model) {\n return keys(encoding).reduce((encode, channel) => {\n const valueDef = encoding[channel];\n return Object.assign({}, encode, wrapCondition(model, valueDef, channel, (x) => ({ value: x.value })));\n }, {});\n}\n//# sourceMappingURL=guide.js.map","import { POSITION_SCALE_CHANNELS } from '../channel';\nimport * as log from '../log';\nimport { contains } from '../util';\nimport { isConcatModel, isFacetModel, isLayerModel, isRepeatModel } from './model';\nexport function defaultScaleResolve(channel, model) {\n if (isLayerModel(model) || isFacetModel(model)) {\n return 'shared';\n }\n else if (isConcatModel(model) || isRepeatModel(model)) {\n return contains(POSITION_SCALE_CHANNELS, channel) ? 'independent' : 'shared';\n }\n /* istanbul ignore next: should never reach here. */\n throw new Error('invalid model type for resolve');\n}\nexport function parseGuideResolve(resolve, channel) {\n const channelScaleResolve = resolve.scale[channel];\n const guide = contains(POSITION_SCALE_CHANNELS, channel) ? 'axis' : 'legend';\n if (channelScaleResolve === 'independent') {\n if (resolve[guide][channel] === 'shared') {\n log.warn(log.message.independentScaleMeansIndependentGuide(channel));\n }\n return 'independent';\n }\n return resolve[guide][channel] || 'shared';\n}\n//# sourceMappingURL=resolve.js.map","import * as log from '../log';\nimport { duplicate, getFirstDefined, keys, stringify } from '../util';\n/**\n * Generic class for storing properties that are explicitly specified\n * and implicitly determined by the compiler.\n * This is important for scale/axis/legend merging as\n * we want to prioritize properties that users explicitly specified.\n */\nexport class Split {\n constructor(explicit = {}, implicit = {}) {\n this.explicit = explicit;\n this.implicit = implicit;\n }\n clone() {\n return new Split(duplicate(this.explicit), duplicate(this.implicit));\n }\n combine() {\n // FIXME remove \"as any\".\n // Add \"as any\" to avoid an error \"Spread types may only be created from object types\".\n return Object.assign({}, this.explicit, this.implicit);\n }\n get(key) {\n // Explicit has higher precedence\n return getFirstDefined(this.explicit[key], this.implicit[key]);\n }\n getWithExplicit(key) {\n // Explicit has higher precedence\n if (this.explicit[key] !== undefined) {\n return { explicit: true, value: this.explicit[key] };\n }\n else if (this.implicit[key] !== undefined) {\n return { explicit: false, value: this.implicit[key] };\n }\n return { explicit: false, value: undefined };\n }\n setWithExplicit(key, value) {\n if (value.value !== undefined) {\n this.set(key, value.value, value.explicit);\n }\n }\n set(key, value, explicit) {\n delete this[explicit ? 'implicit' : 'explicit'][key];\n this[explicit ? 'explicit' : 'implicit'][key] = value;\n return this;\n }\n copyKeyFromSplit(key, s) {\n // Explicit has higher precedence\n if (s.explicit[key] !== undefined) {\n this.set(key, s.explicit[key], true);\n }\n else if (s.implicit[key] !== undefined) {\n this.set(key, s.implicit[key], false);\n }\n }\n copyKeyFromObject(key, s) {\n // Explicit has higher precedence\n if (s[key] !== undefined) {\n this.set(key, s[key], true);\n }\n }\n /**\n * Merge split object into this split object. Properties from the other split\n * overwrite properties from this split.\n */\n copyAll(other) {\n for (const key of keys(other.combine())) {\n const val = other.getWithExplicit(key);\n this.setWithExplicit(key, val);\n }\n }\n}\nexport function makeExplicit(value) {\n return {\n explicit: true,\n value\n };\n}\nexport function makeImplicit(value) {\n return {\n explicit: false,\n value\n };\n}\nexport function tieBreakByComparing(compare) {\n return (v1, v2, property, propertyOf) => {\n const diff = compare(v1.value, v2.value);\n if (diff > 0) {\n return v1;\n }\n else if (diff < 0) {\n return v2;\n }\n return defaultTieBreaker(v1, v2, property, propertyOf);\n };\n}\nexport function defaultTieBreaker(v1, v2, property, propertyOf) {\n if (v1.explicit && v2.explicit) {\n log.warn(log.message.mergeConflictingProperty(property, propertyOf, v1.value, v2.value));\n }\n // If equal score, prefer v1.\n return v1;\n}\nexport function mergeValuesWithExplicit(v1, v2, property, propertyOf, tieBreaker = defaultTieBreaker) {\n if (v1 === undefined || v1.value === undefined) {\n // For first run\n return v2;\n }\n if (v1.explicit && !v2.explicit) {\n return v1;\n }\n else if (v2.explicit && !v1.explicit) {\n return v2;\n }\n else if (stringify(v1.value) === stringify(v2.value)) {\n return v1;\n }\n else {\n return tieBreaker(v1, v2, property, propertyOf);\n }\n}\n//# sourceMappingURL=split.js.map","import { Split } from '../split';\nexport class LegendComponent extends Split {\n}\n//# sourceMappingURL=component.js.map","import { isColorChannel } from '../../channel';\nimport { valueArray } from '../../channeldef';\nimport { isContinuousToContinuous } from '../../scale';\nimport { contains, getFirstDefined } from '../../util';\nexport function values(legend, fieldDef) {\n const vals = legend.values;\n if (vals) {\n return valueArray(fieldDef, vals);\n }\n return undefined;\n}\nexport function defaultSymbolType(mark) {\n return mark === 'line' ? 'stroke' : 'circle';\n}\nexport function clipHeight(legendType) {\n if (legendType === 'gradient') {\n return 20;\n }\n return undefined;\n}\nexport function type(params) {\n const { legend } = params;\n return getFirstDefined(legend.type, defaultType(params));\n}\nexport function defaultType({ channel, timeUnit, scaleType, alwaysReturn }) {\n // Following the logic in https://github.com/vega/vega-parser/blob/master/src/parsers/legend.js\n if (isColorChannel(channel)) {\n if (contains(['quarter', 'month', 'day'], timeUnit)) {\n return 'symbol';\n }\n if (isContinuousToContinuous(scaleType)) {\n return alwaysReturn ? 'gradient' : undefined;\n }\n }\n return alwaysReturn ? 'symbol' : undefined;\n}\nexport function direction({ legend, legendConfig, timeUnit, channel, scaleType }) {\n const orient = getFirstDefined(legend.orient, legendConfig.orient, 'right');\n const legendType = type({ legend, channel, timeUnit, scaleType, alwaysReturn: true });\n return getFirstDefined(legend.direction, legendConfig[legendType ? 'gradientDirection' : 'symbolDirection'], defaultDirection(orient, legendType));\n}\nfunction defaultDirection(orient, legendType) {\n switch (orient) {\n case 'top':\n case 'bottom':\n return 'horizontal';\n case 'left':\n case 'right':\n case 'none':\n case undefined: // undefined = \"right\" in Vega\n return undefined; // vertical is Vega's default\n default:\n // top-left / ...\n // For inner legend, uses compact layout like Tableau\n return legendType === 'gradient' ? 'horizontal' : undefined;\n }\n}\nexport function defaultGradientLength({ legend, legendConfig, model, channel, scaleType }) {\n const { gradientHorizontalMaxLength, gradientHorizontalMinLength, gradientVerticalMaxLength, gradientVerticalMinLength } = legendConfig;\n const dir = direction({ legend, legendConfig, channel, scaleType });\n if (dir === 'horizontal') {\n const orient = getFirstDefined(legend.orient, legendConfig.orient);\n if (orient === 'top' || orient === 'bottom') {\n return gradientLengthSignal(model, 'width', gradientHorizontalMinLength, gradientHorizontalMaxLength);\n }\n else {\n return gradientHorizontalMinLength;\n }\n }\n else {\n // vertical / undefined (Vega uses vertical by default)\n return gradientLengthSignal(model, 'height', gradientVerticalMinLength, gradientVerticalMaxLength);\n }\n}\nfunction gradientLengthSignal(model, sizeType, min, max) {\n const sizeSignal = model.getSizeSignalRef(sizeType).signal;\n return { signal: `clamp(${sizeSignal}, ${min}, ${max})` };\n}\nexport function defaultLabelOverlap(scaleType) {\n if (contains(['quantile', 'threshold', 'log'], scaleType)) {\n return 'greedy';\n }\n return undefined;\n}\n//# sourceMappingURL=properties.js.map","import { isArray } from 'vega-util';\nimport { COLOR, OPACITY, SHAPE } from '../../channel';\nimport { hasConditionalValueDef, isTimeFormatFieldDef, isValueDef } from '../../channeldef';\nimport { AREA, BAR, CIRCLE, FILL_STROKE_CONFIG, GEOSHAPE, LINE, POINT, SQUARE, TEXT, TICK } from '../../mark';\nimport { ScaleType } from '../../scale';\nimport { getFirstDefined, keys } from '../../util';\nimport { applyMarkConfig, timeFormatExpression } from '../common';\nimport * as mixins from '../mark/mixins';\nimport { defaultType } from './properties';\nfunction type(legendCmp, model, channel) {\n const scaleType = model.getScaleComponent(channel).get('type');\n return getFirstDefined(legendCmp.get('type'), defaultType({ channel, scaleType, alwaysReturn: true }));\n}\nexport function symbols(fieldDef, symbolsSpec, model, channel, legendCmp) {\n if (type(legendCmp, model, channel) !== 'symbol') {\n return undefined;\n }\n let out = Object.assign({}, applyMarkConfig({}, model, FILL_STROKE_CONFIG), mixins.color(model)); // FIXME: remove this when VgEncodeEntry is compatible with SymbolEncodeEntry\n switch (model.mark) {\n case BAR:\n case TICK:\n case TEXT:\n out.shape = { value: 'square' };\n break;\n case CIRCLE:\n case SQUARE:\n out.shape = { value: model.mark };\n break;\n case POINT:\n case LINE:\n case GEOSHAPE:\n case AREA:\n // use default circle\n break;\n }\n const { markDef, encoding, config } = model;\n const filled = markDef.filled;\n const opacity = getMaxValue(encoding.opacity) || markDef.opacity;\n if (out.fill) {\n // for fill legend, we don't want any fill in symbol\n if (channel === 'fill' || (filled && channel === COLOR)) {\n delete out.fill;\n }\n else {\n if (out.fill['field']) {\n // For others, set fill to some opaque value (or nothing if a color is already set)\n if (legendCmp.get('symbolFillColor')) {\n delete out.fill;\n }\n else {\n out.fill = { value: config.legend.symbolBaseFillColor || 'black' };\n out.fillOpacity = { value: opacity || 1 };\n }\n }\n else if (isArray(out.fill)) {\n const fill = getFirstConditionValue(encoding.fill || encoding.color) ||\n markDef.fill ||\n (filled && markDef.color);\n if (fill) {\n out.fill = { value: fill };\n }\n }\n }\n }\n if (out.stroke) {\n if (channel === 'stroke' || (!filled && channel === COLOR)) {\n delete out.stroke;\n }\n else {\n if (out.stroke['field']) {\n // For others, remove stroke field\n delete out.stroke;\n }\n else if (isArray(out.stroke)) {\n const stroke = getFirstDefined(getFirstConditionValue(encoding.stroke || encoding.color), markDef.stroke, filled ? markDef.color : undefined);\n if (stroke) {\n out.stroke = { value: stroke };\n }\n }\n }\n }\n if (channel !== SHAPE) {\n const shape = getFirstConditionValue(encoding.shape) || markDef.shape;\n if (shape) {\n out.shape = { value: shape };\n }\n }\n if (channel !== OPACITY) {\n if (opacity) {\n // only apply opacity if it is neither zero or undefined\n out.opacity = { value: opacity };\n }\n }\n out = Object.assign({}, out, symbolsSpec);\n return keys(out).length > 0 ? out : undefined;\n}\nexport function gradient(fieldDef, gradientSpec, model, channel, legendCmp) {\n if (type(legendCmp, model, channel) !== 'gradient') {\n return undefined;\n }\n let out = {};\n const opacity = getMaxValue(model.encoding.opacity) || model.markDef.opacity;\n if (opacity) {\n // only apply opacity if it is neither zero or undefined\n out.opacity = { value: opacity };\n }\n out = Object.assign({}, out, gradientSpec);\n return keys(out).length > 0 ? out : undefined;\n}\nexport function labels(fieldDef, labelsSpec, model, channel) {\n const legend = model.legend(channel);\n const config = model.config;\n let out = {};\n if (isTimeFormatFieldDef(fieldDef)) {\n const isUTCScale = model.getScaleComponent(channel).get('type') === ScaleType.UTC;\n const expr = timeFormatExpression('datum.value', fieldDef.timeUnit, legend.format, config.legend.shortTimeLabels, config.timeFormat, isUTCScale);\n labelsSpec = Object.assign({}, (expr ? { text: { signal: expr } } : {}), labelsSpec);\n }\n out = Object.assign({}, out, labelsSpec);\n return keys(out).length > 0 ? out : undefined;\n}\nfunction getMaxValue(channelDef) {\n return getConditionValue(channelDef, (v, conditionalDef) => Math.max(v, conditionalDef.value));\n}\nfunction getFirstConditionValue(channelDef) {\n return getConditionValue(channelDef, (v, conditionalDef) => {\n return getFirstDefined(v, conditionalDef.value);\n });\n}\nfunction getConditionValue(channelDef, reducer) {\n if (hasConditionalValueDef(channelDef)) {\n return (isArray(channelDef.condition) ? channelDef.condition : [channelDef.condition]).reduce(reducer, channelDef.value);\n }\n else if (isValueDef(channelDef)) {\n return channelDef.value;\n }\n return undefined;\n}\n//# sourceMappingURL=encode.js.map","import { COLOR, FILL, FILLOPACITY, OPACITY, SHAPE, SIZE, STROKE, STROKEOPACITY, STROKEWIDTH } from '../../channel';\nimport { getTypedFieldDef, isFieldDef, isTimeFormatFieldDef, title as fieldDefTitle } from '../../channeldef';\nimport { LEGEND_PROPERTIES, VG_LEGEND_PROPERTIES } from '../../legend';\nimport { GEOJSON } from '../../type';\nimport { deleteNestedProperty, getFirstDefined, keys } from '../../util';\nimport { mergeTitleComponent, numberFormat } from '../common';\nimport { guideEncodeEntry } from '../guide';\nimport { isUnitModel } from '../model';\nimport { parseGuideResolve } from '../resolve';\nimport { defaultTieBreaker, makeImplicit, mergeValuesWithExplicit } from '../split';\nimport { LegendComponent } from './component';\nimport * as encode from './encode';\nimport * as properties from './properties';\nimport { direction, type } from './properties';\nexport function parseLegend(model) {\n if (isUnitModel(model)) {\n model.component.legends = parseUnitLegend(model);\n }\n else {\n model.component.legends = parseNonUnitLegend(model);\n }\n}\nfunction parseUnitLegend(model) {\n const { encoding } = model;\n return [COLOR, FILL, STROKE, STROKEWIDTH, SIZE, SHAPE, OPACITY, FILLOPACITY, STROKEOPACITY].reduce((legendComponent, channel) => {\n const def = encoding[channel];\n if (model.legend(channel) &&\n model.getScaleComponent(channel) &&\n !(isFieldDef(def) && (channel === SHAPE && def.type === GEOJSON))) {\n legendComponent[channel] = parseLegendForChannel(model, channel);\n }\n return legendComponent;\n }, {});\n}\nfunction getLegendDefWithScale(model, channel) {\n const scale = model.scaleName(COLOR);\n if (channel === 'color') {\n return model.markDef.filled ? { fill: scale } : { stroke: scale };\n }\n return { [channel]: model.scaleName(channel) };\n}\nfunction isExplicit(value, property, legend, fieldDef) {\n switch (property) {\n case 'values':\n // specified legend.values is already respected, but may get transformed.\n return !!legend.values;\n case 'title':\n // title can be explicit if fieldDef.title is set\n if (property === 'title' && value === fieldDef.title) {\n return true;\n }\n }\n // Otherwise, things are explicit if the returned value matches the specified property\n return value === legend[property];\n}\nexport function parseLegendForChannel(model, channel) {\n const fieldDef = model.fieldDef(channel);\n const legend = model.legend(channel);\n const legendCmpt = new LegendComponent({}, getLegendDefWithScale(model, channel));\n for (const property of LEGEND_PROPERTIES) {\n const value = getProperty(property, legend, channel, model);\n if (value !== undefined) {\n const explicit = isExplicit(value, property, legend, fieldDef);\n if (explicit || model.config.legend[property] === undefined) {\n legendCmpt.set(property, value, explicit);\n }\n }\n }\n const legendEncoding = legend.encoding || {};\n const legendEncode = ['labels', 'legend', 'title', 'symbols', 'gradient'].reduce((e, part) => {\n const legendEncodingPart = guideEncodeEntry(legendEncoding[part] || {}, model);\n const value = encode[part]\n ? encode[part](fieldDef, legendEncodingPart, model, channel, legendCmpt) // apply rule\n : legendEncodingPart; // no rule -- just default values\n if (value !== undefined && keys(value).length > 0) {\n e[part] = { update: value };\n }\n return e;\n }, {});\n if (keys(legendEncode).length > 0) {\n legendCmpt.set('encode', legendEncode, !!legend.encoding);\n }\n return legendCmpt;\n}\nfunction getProperty(property, legend, channel, model) {\n const { encoding, mark } = model;\n const fieldDef = getTypedFieldDef(encoding[channel]);\n const legendConfig = model.config.legend;\n const { timeUnit } = fieldDef;\n const scaleType = model.getScaleComponent(channel).get('type');\n switch (property) {\n // TODO: enable when https://github.com/vega/vega/issues/1351 is fixed\n // case 'clipHeight':\n // return getFirstDefined(specifiedLegend.clipHeight, properties.clipHeight(properties.type(...)));\n case 'direction':\n return direction({ legend, legendConfig, timeUnit, channel, scaleType });\n case 'format':\n // We don't include temporal field here as we apply format in encode block\n if (isTimeFormatFieldDef(fieldDef)) {\n return undefined;\n }\n return numberFormat(fieldDef, legend.format, model.config);\n case 'formatType':\n // Same as format, We don't include temporal field here as we apply format in encode block\n if (isTimeFormatFieldDef(fieldDef)) {\n return undefined;\n }\n return legend.formatType;\n case 'gradientLength':\n return getFirstDefined(\n // do specified gradientLength first\n legend.gradientLength, legendConfig.gradientLength, \n // Otherwise, use smart default based on plot height\n properties.defaultGradientLength({\n model,\n legend,\n legendConfig,\n channel,\n scaleType\n }));\n case 'labelOverlap':\n return getFirstDefined(legend.labelOverlap, properties.defaultLabelOverlap(scaleType));\n case 'symbolType':\n return getFirstDefined(legend.symbolType, properties.defaultSymbolType(mark));\n case 'title':\n return fieldDefTitle(fieldDef, model.config, { allowDisabling: true }) || undefined;\n case 'type':\n return type({ legend, channel, timeUnit, scaleType, alwaysReturn: false });\n case 'values':\n return properties.values(legend, fieldDef);\n }\n // Otherwise, return specified property.\n return legend[property];\n}\nfunction parseNonUnitLegend(model) {\n const { legends, resolve } = model.component;\n for (const child of model.children) {\n parseLegend(child);\n keys(child.component.legends).forEach((channel) => {\n resolve.legend[channel] = parseGuideResolve(model.component.resolve, channel);\n if (resolve.legend[channel] === 'shared') {\n // If the resolve says shared (and has not been overridden)\n // We will try to merge and see if there is a conflict\n legends[channel] = mergeLegendComponent(legends[channel], child.component.legends[channel]);\n if (!legends[channel]) {\n // If merge returns nothing, there is a conflict so we cannot make the legend shared.\n // Thus, mark legend as independent and remove the legend component.\n resolve.legend[channel] = 'independent';\n delete legends[channel];\n }\n }\n });\n }\n keys(legends).forEach((channel) => {\n for (const child of model.children) {\n if (!child.component.legends[channel]) {\n // skip if the child does not have a particular legend\n continue;\n }\n if (resolve.legend[channel] === 'shared') {\n // After merging shared legend, make sure to remove legend from child\n delete child.component.legends[channel];\n }\n }\n });\n return legends;\n}\nexport function mergeLegendComponent(mergedLegend, childLegend) {\n if (!mergedLegend) {\n return childLegend.clone();\n }\n const mergedOrient = mergedLegend.getWithExplicit('orient');\n const childOrient = childLegend.getWithExplicit('orient');\n if (mergedOrient.explicit && childOrient.explicit && mergedOrient.value !== childOrient.value) {\n // TODO: throw warning if resolve is explicit (We don't have info about explicit/implicit resolve yet.)\n // Cannot merge due to inconsistent orient\n return undefined;\n }\n let typeMerged = false;\n // Otherwise, let's merge\n for (const prop of VG_LEGEND_PROPERTIES) {\n const mergedValueWithExplicit = mergeValuesWithExplicit(mergedLegend.getWithExplicit(prop), childLegend.getWithExplicit(prop), prop, 'legend', \n // Tie breaker function\n (v1, v2) => {\n switch (prop) {\n case 'symbolType':\n return mergeSymbolType(v1, v2);\n case 'title':\n return mergeTitleComponent(v1, v2);\n case 'type':\n // There are only two types. If we have different types, then prefer symbol over gradient.\n typeMerged = true;\n return makeImplicit('symbol');\n }\n return defaultTieBreaker(v1, v2, prop, 'legend');\n });\n mergedLegend.setWithExplicit(prop, mergedValueWithExplicit);\n }\n if (typeMerged) {\n if (((mergedLegend.implicit || {}).encode || {}).gradient) {\n deleteNestedProperty(mergedLegend.implicit, ['encode', 'gradient']);\n }\n if (((mergedLegend.explicit || {}).encode || {}).gradient) {\n deleteNestedProperty(mergedLegend.explicit, ['encode', 'gradient']);\n }\n }\n return mergedLegend;\n}\nfunction mergeSymbolType(st1, st2) {\n if (st2.value === 'circle') {\n // prefer \"circle\" over \"stroke\"\n return st2;\n }\n return st1;\n}\n//# sourceMappingURL=parse.js.map","import { flatten, keys, stringify, vals } from '../../util';\nimport { mergeLegendComponent } from './parse';\nexport function assembleLegends(model) {\n const legendComponentIndex = model.component.legends;\n const legendByDomain = {};\n for (const channel of keys(legendComponentIndex)) {\n const scaleComponent = model.getScaleComponent(channel);\n const domainHash = stringify(scaleComponent.domains);\n if (legendByDomain[domainHash]) {\n for (const mergedLegendComponent of legendByDomain[domainHash]) {\n const merged = mergeLegendComponent(mergedLegendComponent, legendComponentIndex[channel]);\n if (!merged) {\n // If cannot merge, need to add this legend separately\n legendByDomain[domainHash].push(legendComponentIndex[channel]);\n }\n }\n }\n else {\n legendByDomain[domainHash] = [legendComponentIndex[channel].clone()];\n }\n }\n return flatten(vals(legendByDomain)).map((legendCmpt) => {\n const legend = legendCmpt.combine();\n if (legend.encode && legend.encode.symbols) {\n const out = legend.encode.symbols.update;\n if (out.fill && out.fill['value'] !== 'transparent' && !out.stroke && !legend.stroke) {\n // For non color channel's legend, we need to override symbol stroke config from Vega config if stroke channel is not used.\n out.stroke = { value: 'transparent' };\n }\n if (legend.fill) {\n // If top-level fill is defined, for non color channel's legend, we need remove fill.\n delete out.fill;\n }\n }\n return legend;\n });\n}\n//# sourceMappingURL=assemble.js.map","import * as tslib_1 from \"tslib\";\nimport { contains } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { isConcatModel, isLayerModel, isRepeatModel } from '../model';\nexport function assembleProjections(model) {\n if (isLayerModel(model) || isConcatModel(model) || isRepeatModel(model)) {\n return assembleProjectionsForModelAndChildren(model);\n }\n else {\n return assembleProjectionForModel(model);\n }\n}\nexport function assembleProjectionsForModelAndChildren(model) {\n return model.children.reduce((projections, child) => {\n return projections.concat(child.assembleProjections());\n }, assembleProjectionForModel(model));\n}\nexport function assembleProjectionForModel(model) {\n const component = model.component.projection;\n if (!component || component.merged) {\n return [];\n }\n const projection = component.combine();\n const { name } = projection, rest = tslib_1.__rest(projection, [\"name\"]); // we need to extract name so that it is always present in the output and pass TS type validation\n if (!component.data) {\n // generate custom projection, no automatic fitting\n return [\n Object.assign({ name }, { translate: { signal: '[width / 2, height / 2]' } }, rest)\n ];\n }\n else {\n // generate projection that uses extent fitting\n const size = {\n signal: `[${component.size.map(ref => ref.signal).join(', ')}]`\n };\n const fit = component.data.reduce((sources, data) => {\n const source = isSignalRef(data) ? data.signal : `data('${model.lookupDataSource(data)}')`;\n if (!contains(sources, source)) {\n // build a unique list of sources\n sources.push(source);\n }\n return sources;\n }, []);\n if (fit.length <= 0) {\n throw new Error(\"Projection's fit didn't find any data sources\");\n }\n return [\n Object.assign({ name,\n size, fit: {\n signal: fit.length > 1 ? `[${fit.join(', ')}]` : fit[0]\n } }, rest)\n ];\n }\n}\n//# sourceMappingURL=assemble.js.map","export const PROJECTION_PROPERTIES = [\n 'type',\n 'clipAngle',\n 'clipExtent',\n 'center',\n 'rotate',\n 'precision',\n 'reflectX',\n 'reflectY',\n 'coefficient',\n 'distance',\n 'fraction',\n 'lobes',\n 'parallel',\n 'radius',\n 'ratio',\n 'spacing',\n 'tilt'\n];\n//# sourceMappingURL=projection.js.map","import { Split } from '../split';\nexport class ProjectionComponent extends Split {\n constructor(name, specifiedProjection, size, data) {\n super(Object.assign({}, specifiedProjection), // all explicit properties of projection\n { name } // name as initial implicit property\n );\n this.specifiedProjection = specifiedProjection;\n this.size = size;\n this.data = data;\n this.merged = false;\n }\n /**\n * Whether the projection parameters should fit provided data.\n */\n get isFit() {\n return !!this.data;\n }\n}\n//# sourceMappingURL=component.js.map","import { LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2, SHAPE } from '../../channel';\nimport { MAIN } from '../../data';\nimport { PROJECTION_PROPERTIES } from '../../projection';\nimport { GEOJSON } from '../../type';\nimport { duplicate, every, stringify } from '../../util';\nimport { isUnitModel } from '../model';\nimport { ProjectionComponent } from './component';\nexport function parseProjection(model) {\n model.component.projection = isUnitModel(model) ? parseUnitProjection(model) : parseNonUnitProjections(model);\n}\nfunction parseUnitProjection(model) {\n if (model.hasProjection) {\n const proj = model.specifiedProjection;\n const fit = !(proj && (proj.scale != null || proj.translate != null));\n const size = fit ? [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')] : undefined;\n const data = fit ? gatherFitData(model) : undefined;\n return new ProjectionComponent(model.projectionName(true), Object.assign({}, (model.config.projection || {}), (proj || {})), size, data);\n }\n return undefined;\n}\nfunction gatherFitData(model) {\n const data = [];\n [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]].forEach(posssiblePair => {\n if (model.channelHasField(posssiblePair[0]) || model.channelHasField(posssiblePair[1])) {\n data.push({\n signal: model.getName(`geojson_${data.length}`)\n });\n }\n });\n if (model.channelHasField(SHAPE) && model.fieldDef(SHAPE).type === GEOJSON) {\n data.push({\n signal: model.getName(`geojson_${data.length}`)\n });\n }\n if (data.length === 0) {\n // main source is geojson, so we can just use that\n data.push(model.requestDataName(MAIN));\n }\n return data;\n}\nfunction mergeIfNoConflict(first, second) {\n const allPropertiesShared = every(PROJECTION_PROPERTIES, prop => {\n // neither has the property\n if (!first.explicit.hasOwnProperty(prop) && !second.explicit.hasOwnProperty(prop)) {\n return true;\n }\n // both have property and an equal value for property\n if (first.explicit.hasOwnProperty(prop) &&\n second.explicit.hasOwnProperty(prop) &&\n // some properties might be signals or objects and require hashing for comparison\n stringify(first.get(prop)) === stringify(second.get(prop))) {\n return true;\n }\n return false;\n });\n const size = stringify(first.size) === stringify(second.size);\n if (size) {\n if (allPropertiesShared) {\n return first;\n }\n else if (stringify(first.explicit) === stringify({})) {\n return second;\n }\n else if (stringify(second.explicit) === stringify({})) {\n return first;\n }\n }\n // if all properties don't match, let each unit spec have its own projection\n return null;\n}\nfunction parseNonUnitProjections(model) {\n if (model.children.length === 0) {\n return undefined;\n }\n let nonUnitProjection;\n // parse all children first\n model.children.forEach(child => parseProjection(child));\n // analyze parsed projections, attempt to merge\n const mergable = every(model.children, child => {\n const projection = child.component.projection;\n if (!projection) {\n // child layer does not use a projection\n return true;\n }\n else if (!nonUnitProjection) {\n // cached 'projection' is null, cache this one\n nonUnitProjection = projection;\n return true;\n }\n else {\n const merge = mergeIfNoConflict(nonUnitProjection, projection);\n if (merge) {\n nonUnitProjection = merge;\n }\n return !!merge;\n }\n });\n // if cached one and all other children share the same projection,\n if (nonUnitProjection && mergable) {\n // so we can elevate it to the layer level\n const name = model.projectionName(true);\n const modelProjection = new ProjectionComponent(name, nonUnitProjection.specifiedProjection, nonUnitProjection.size, duplicate(nonUnitProjection.data));\n // rename and assign all others as merged\n model.children.forEach(child => {\n const projection = child.component.projection;\n if (projection) {\n if (projection.isFit) {\n modelProjection.data.push(...child.component.projection.data);\n }\n child.renameProjection(projection.get('name'), name);\n projection.merged = true;\n }\n });\n return modelProjection;\n }\n return undefined;\n}\n//# sourceMappingURL=parse.js.map","import { isGenerator, isInlineData, isNamedData, isSphereGenerator, isUrlData } from '../../data';\nimport { contains, keys, omit } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport class SourceNode extends DataFlowNode {\n constructor(data) {\n super(null); // source cannot have parent\n data = data || { name: 'source' };\n let format;\n if (!isGenerator(data)) {\n format = data.format ? Object.assign({}, omit(data.format, ['parse'])) : {};\n }\n if (isInlineData(data)) {\n this._data = { values: data.values };\n }\n else if (isUrlData(data)) {\n this._data = { url: data.url };\n if (!format.type) {\n // Extract extension from URL using snippet from\n // http://stackoverflow.com/questions/680929/how-to-extract-extension-from-fil… let defaultExtension = /(?:\\.([^.]+))?$/.exec(data.url)[1];\n if (!contains(['json', 'csv', 'tsv', 'dsv', 'topojson'], defaultExtension)) {\n defaultExtension = 'json';\n }\n // defaultExtension has type string but we ensure that it is DataFormatType above\n format.type = defaultExtension;\n }\n }\n else if (isSphereGenerator(data)) {\n // hardwire GeoJSON sphere data into output specification\n this._data = { values: [{ type: 'Sphere' }] };\n }\n else if (isNamedData(data) || isGenerator(data)) {\n this._data = {};\n }\n // set flag to check if generator\n this._generator = isGenerator(data);\n // any dataset can be named\n if (data.name) {\n this._name = data.name;\n }\n if (format && keys(format).length > 0) {\n this._data.format = format;\n }\n }\n get data() {\n return this._data;\n }\n hasName() {\n return !!this._name;\n }\n get isGenerator() {\n return this._generator;\n }\n get dataName() {\n return this._name;\n }\n set dataName(name) {\n this._name = name;\n }\n set parent(parent) {\n throw new Error('Source nodes have to be roots.');\n }\n remove() {\n throw new Error('Source nodes are roots and cannot be removed.');\n }\n hash() {\n throw new Error('Cannot hash sources');\n }\n assemble() {\n return Object.assign({ name: this._name }, this._data, { transform: [] });\n }\n}\n//# sourceMappingURL=source.js.map","import { entries, uniqueId } from './../../util';\nimport { SourceNode } from './source';\n/**\n * Print debug information for dataflow tree.\n */\nexport function debug(node) {\n console.log(`${node.constructor.name}${node.debugName ? `(${node.debugName})` : ''} -> ${node.children.map(c => {\n return `${c.constructor.name}${c.debugName ? ` (${c.debugName})` : ''}`;\n })}`);\n console.log(node);\n node.children.forEach(debug);\n}\n/**\n * Print the dataflow tree as graphviz.\n *\n * Render the output in http://viz-js.com/.\n */\nexport function draw(roots) {\n // check the graph before printing it since the logic below assumes a consistent graph\n checkLinks(roots);\n const nodes = {};\n const edges = [];\n function getId(node) {\n let id = node['__uniqueid'];\n if (id === undefined) {\n id = uniqueId();\n node['__uniqueid'] = id;\n }\n return id;\n }\n function getLabel(node) {\n const out = [node.constructor.name.slice(0, -4)];\n if (node.debugName) {\n out.push(`<i>${node.debugName}</i>`);\n }\n else if (node instanceof SourceNode) {\n if (node.data.name || node.data.url) {\n out.push(`<i>${node.data.name || node.data.url}</i>`);\n }\n }\n const dep = node.dependentFields();\n if (dep.size) {\n out.push(`<font color=\"grey\" point-size=\"10\">IN:</font> ${[...node.dependentFields()].join(', ')}`);\n }\n const prod = node.producedFields();\n if (prod.size) {\n out.push(`<font color=\"grey\" point-size=\"10\">OUT:</font> ${[...node.producedFields()].join(', ')}`);\n }\n return out.join('<br/>');\n }\n function collector(node) {\n const id = getId(node);\n nodes[id] = {\n id: id,\n label: getLabel(node),\n hash: node instanceof SourceNode\n ? node.data.url || node.data.name || node.debugName\n : String(node.hash()).replace(/\"/g, '')\n };\n for (const child of node.children) {\n edges.push([id, getId(child)]);\n collector(child);\n }\n }\n roots.forEach(n => collector(n));\n const dot = `digraph DataFlow {\n rankdir = TB;\n node [shape=record]\n ${entries(nodes)\n .map(({ key, value }) => ` \"${key}\" [\n label = <${value.label}>;\n tooltip = \"[${value.id}]
${value.hash}\"\n ]`)\n .join('\\n')}\n\n ${edges.map(([source, target]) => `\"${source}\" -> \"${target}\"`).join(' ')}\n}`;\n console.log(dot);\n return dot;\n}\n/**\n * Iterates over a dataflow graph and checks whether all links are consistent.\n */\nexport function checkLinks(nodes) {\n for (const node of nodes) {\n for (const child of node.children) {\n if (child.parent !== node) {\n console.error('Dataflow graph is inconsistent.', node, child);\n return false;\n }\n }\n if (!checkLinks(node.children)) {\n return false;\n }\n }\n return true;\n}\n//# sourceMappingURL=debug.js.map","import { SourceNode } from './source';\n/**\n * Abstract base class for BottomUpOptimizer and TopDownOptimizer.\n * Contains only mutation handling logic. Subclasses need to implement iteration logic.\n */\nclass OptimizerBase {\n constructor() {\n this._mutated = false;\n }\n // Once true, _mutated is never set to false\n setMutated() {\n this._mutated = true;\n }\n get mutatedFlag() {\n return this._mutated;\n }\n}\n/**\n * Starts from a node and runs the optimization function(the \"run\" method) upwards to the root,\n * depending on the continueFlag and mutatedFlag values returned by the optimization function.\n */\nexport class BottomUpOptimizer extends OptimizerBase {\n constructor() {\n super();\n this._continue = false;\n }\n setContinue() {\n this._continue = true;\n }\n get continueFlag() {\n return this._continue;\n }\n get flags() {\n return { continueFlag: this.continueFlag, mutatedFlag: this.mutatedFlag };\n }\n set flags({ continueFlag, mutatedFlag }) {\n if (continueFlag) {\n this.setContinue();\n }\n if (mutatedFlag) {\n this.setMutated();\n }\n }\n /**\n * Reset the state of the optimizer after it has completed a run from the bottom of the tree to the top.\n */\n reset() {\n // do nothing\n }\n optimizeNextFromLeaves(node) {\n if (node instanceof SourceNode) {\n return false;\n }\n const next = node.parent;\n const { continueFlag } = this.run(node);\n if (continueFlag) {\n this.optimizeNextFromLeaves(next);\n }\n return this.mutatedFlag;\n }\n}\n/**\n * The optimizer function( the \"run\" method), is invoked on the given node and then continues recursively.\n */\nexport class TopDownOptimizer extends OptimizerBase {\n}\n//# sourceMappingURL=optimizer.js.map","import { isArgmaxDef, isArgminDef } from '../../aggregate';\nimport { isBinning } from '../../bin';\nimport { getPositionChannelFromLatLong, isGeoPositionChannel, isScaleChannel } from '../../channel';\nimport { binRequiresRange, isTypedFieldDef, vgField } from '../../channeldef';\nimport * as log from '../../log';\nimport { duplicate, hash, keys, replacePathInField, setEqual } from '../../util';\nimport { DataFlowNode } from './dataflow';\nfunction addDimension(dims, channel, fieldDef, model) {\n if (isTypedFieldDef(fieldDef) && isBinning(fieldDef.bin)) {\n dims.add(vgField(fieldDef, {}));\n dims.add(vgField(fieldDef, { binSuffix: 'end' }));\n if (binRequiresRange(fieldDef, channel)) {\n dims.add(vgField(fieldDef, { binSuffix: 'range' }));\n }\n }\n else if (isGeoPositionChannel(channel)) {\n const posChannel = getPositionChannelFromLatLong(channel);\n dims.add(model.getName(posChannel));\n }\n else {\n dims.add(vgField(fieldDef));\n }\n return dims;\n}\nfunction mergeMeasures(parentMeasures, childMeasures) {\n for (const field of keys(childMeasures)) {\n // when we merge a measure, we either have to add an aggregation operator or even a new field\n const ops = childMeasures[field];\n for (const op of keys(ops)) {\n if (field in parentMeasures) {\n // add operator to existing measure field\n parentMeasures[field][op] = new Set([...(parentMeasures[field][op] || []), ...ops[op]]);\n }\n else {\n parentMeasures[field] = { [op]: ops[op] };\n }\n }\n }\n}\nexport class AggregateNode extends DataFlowNode {\n /**\n * @param dimensions string set for dimensions\n * @param measures dictionary mapping field name => dict of aggregation functions and names to use\n */\n constructor(parent, dimensions, measures) {\n super(parent);\n this.dimensions = dimensions;\n this.measures = measures;\n }\n clone() {\n return new AggregateNode(null, new Set(this.dimensions), duplicate(this.measures));\n }\n get groupBy() {\n return this.dimensions;\n }\n static makeFromEncoding(parent, model) {\n let isAggregate = false;\n model.forEachFieldDef(fd => {\n if (fd.aggregate) {\n isAggregate = true;\n }\n });\n const meas = {};\n const dims = new Set();\n if (!isAggregate) {\n // no need to create this node if the model has no aggregation\n return null;\n }\n model.forEachFieldDef((fieldDef, channel) => {\n const { aggregate, field } = fieldDef;\n if (aggregate) {\n if (aggregate === 'count') {\n meas['*'] = meas['*'] || {};\n meas['*']['count'] = new Set([vgField(fieldDef, { forAs: true })]);\n }\n else {\n if (isArgminDef(aggregate) || isArgmaxDef(aggregate)) {\n const op = isArgminDef(aggregate) ? 'argmin' : 'argmax';\n const argField = aggregate[op];\n meas[argField] = meas[argField] || {};\n meas[argField][op] = new Set([vgField({ op, field: argField }, { forAs: true })]);\n }\n else {\n meas[field] = meas[field] || {};\n meas[field][aggregate] = new Set([vgField(fieldDef, { forAs: true })]);\n }\n // For scale channel with domain === 'unaggregated', add min/max so we can use their union as unaggregated domain\n if (isScaleChannel(channel) && model.scaleDomain(channel) === 'unaggregated') {\n meas[field] = meas[field] || {};\n meas[field]['min'] = new Set([vgField({ field, aggregate: 'min' }, { forAs: true })]);\n meas[field]['max'] = new Set([vgField({ field, aggregate: 'max' }, { forAs: true })]);\n }\n }\n }\n else {\n addDimension(dims, channel, fieldDef, model);\n }\n });\n if (dims.size + keys(meas).length === 0) {\n return null;\n }\n return new AggregateNode(parent, dims, meas);\n }\n static makeFromTransform(parent, t) {\n const dims = new Set();\n const meas = {};\n for (const s of t.aggregate) {\n const { op, field, as } = s;\n if (op) {\n if (op === 'count') {\n meas['*'] = meas['*'] || {};\n meas['*']['count'] = new Set([as ? as : vgField(s, { forAs: true })]);\n }\n else {\n meas[field] = meas[field] || {};\n meas[field][op] = new Set([as ? as : vgField(s, { forAs: true })]);\n }\n }\n }\n for (const s of t.groupby || []) {\n dims.add(s);\n }\n if (dims.size + keys(meas).length === 0) {\n return null;\n }\n return new AggregateNode(parent, dims, meas);\n }\n merge(other) {\n if (setEqual(this.dimensions, other.dimensions)) {\n mergeMeasures(this.measures, other.measures);\n return true;\n }\n else {\n log.debug('different dimensions, cannot merge');\n return false;\n }\n }\n addDimensions(fields) {\n fields.forEach(this.dimensions.add, this.dimensions);\n }\n dependentFields() {\n return new Set([...this.dimensions, ...keys(this.measures)]);\n }\n producedFields() {\n const out = new Set();\n for (const field of keys(this.measures)) {\n for (const op of keys(this.measures[field])) {\n const m = this.measures[field][op];\n if (m.size === 0) {\n out.add(`${op}_${field}`);\n }\n else {\n m.forEach(out.add, out);\n }\n }\n }\n return out;\n }\n hash() {\n return `Aggregate ${hash({ dimensions: this.dimensions, measures: this.measures })}`;\n }\n assemble() {\n const ops = [];\n const fields = [];\n const as = [];\n for (const field of keys(this.measures)) {\n for (const op of keys(this.measures[field])) {\n for (const alias of this.measures[field][op]) {\n as.push(alias);\n ops.push(op);\n fields.push(field === '*' ? null : replacePathInField(field));\n }\n }\n }\n const result = {\n type: 'aggregate',\n groupby: [...this.dimensions],\n ops,\n fields,\n as\n };\n return result;\n }\n}\n//# sourceMappingURL=aggregate.js.map","import { isString } from 'vega-util';\nimport { binToString, isBinning } from '../../bin';\nimport { binRequiresRange, isTypedFieldDef, normalizeBin, vgField } from '../../channeldef';\nimport { duplicate, flatten, hash, keys, unique, vals } from '../../util';\nimport { binFormatExpression } from '../common';\nimport { isUnitModel } from '../model';\nimport { DataFlowNode } from './dataflow';\nfunction rangeFormula(model, fieldDef, channel, config) {\n if (binRequiresRange(fieldDef, channel)) {\n // read format from axis or legend, if there is no format then use config.numberFormat\n const guide = isUnitModel(model) ? model.axis(channel) || model.legend(channel) || {} : {};\n const startField = vgField(fieldDef, { expr: 'datum' });\n const endField = vgField(fieldDef, { expr: 'datum', binSuffix: 'end' });\n return {\n formulaAs: vgField(fieldDef, { binSuffix: 'range', forAs: true }),\n formula: binFormatExpression(startField, endField, guide.format, config)\n };\n }\n return {};\n}\nfunction binKey(bin, field) {\n return `${binToString(bin)}_${field}`;\n}\nfunction getSignalsFromModel(model, key) {\n return {\n signal: model.getName(`${key}_bins`),\n extentSignal: model.getName(`${key}_extent`)\n };\n}\nfunction isBinTransform(t) {\n return 'as' in t;\n}\nfunction createBinComponent(t, bin, model) {\n let as;\n if (isBinTransform(t)) {\n as = isString(t.as) ? [t.as, `${t.as}_end`] : [t.as[0], t.as[1]];\n }\n else {\n as = [vgField(t, { forAs: true }), vgField(t, { binSuffix: 'end', forAs: true })];\n }\n const normalizedBin = normalizeBin(bin, undefined) || {};\n const key = binKey(normalizedBin, t.field);\n const { signal, extentSignal } = getSignalsFromModel(model, key);\n const binComponent = Object.assign({ bin: normalizedBin, field: t.field, as: [as] }, (signal ? { signal } : {}), (extentSignal ? { extentSignal } : {}));\n return { key, binComponent };\n}\nexport class BinNode extends DataFlowNode {\n constructor(parent, bins) {\n super(parent);\n this.bins = bins;\n }\n clone() {\n return new BinNode(null, duplicate(this.bins));\n }\n static makeFromEncoding(parent, model) {\n const bins = model.reduceFieldDef((binComponentIndex, fieldDef, channel) => {\n if (isTypedFieldDef(fieldDef) && isBinning(fieldDef.bin)) {\n const { key, binComponent } = createBinComponent(fieldDef, fieldDef.bin, model);\n binComponentIndex[key] = Object.assign({}, binComponent, binComponentIndex[key], rangeFormula(model, fieldDef, channel, model.config));\n }\n return binComponentIndex;\n }, {});\n if (keys(bins).length === 0) {\n return null;\n }\n return new BinNode(parent, bins);\n }\n /**\n * Creates a bin node from BinTransform.\n * The optional parameter should provide\n */\n static makeFromTransform(parent, t, model) {\n const { key, binComponent } = createBinComponent(t, t.bin, model);\n return new BinNode(parent, {\n [key]: binComponent\n });\n }\n /**\n * Merge bin nodes. This method either integrates the bin config from the other node\n * or if this node already has a bin config, renames the corresponding signal in the model.\n */\n merge(other, renameSignal) {\n for (const key of keys(other.bins)) {\n if (key in this.bins) {\n renameSignal(other.bins[key].signal, this.bins[key].signal);\n // Ensure that we don't have duplicate names for signal pairs\n this.bins[key].as = unique([...this.bins[key].as, ...other.bins[key].as], hash);\n }\n else {\n this.bins[key] = other.bins[key];\n }\n }\n for (const child of other.children) {\n other.removeChild(child);\n child.parent = this;\n }\n other.remove();\n }\n producedFields() {\n return new Set(flatten(flatten(vals(this.bins).map(c => c.as))));\n }\n dependentFields() {\n return new Set(vals(this.bins).map(c => c.field));\n }\n hash() {\n return `Bin ${hash(this.bins)}`;\n }\n assemble() {\n return flatten(vals(this.bins).map(bin => {\n const transform = [];\n const [binAs, ...remainingAs] = bin.as;\n const binTrans = Object.assign({ type: 'bin', field: bin.field, as: binAs, signal: bin.signal }, bin.bin);\n if (!bin.bin.extent && bin.extentSignal) {\n transform.push({\n type: 'extent',\n field: bin.field,\n signal: bin.extentSignal\n });\n binTrans.extent = { signal: bin.extentSignal };\n }\n transform.push(binTrans);\n for (const as of remainingAs) {\n for (let i = 0; i < 2; i++) {\n transform.push({\n type: 'formula',\n expr: vgField({ field: binAs[i] }, { expr: 'datum' }),\n as: as[i]\n });\n }\n }\n if (bin.formula) {\n transform.push({\n type: 'formula',\n expr: bin.formula,\n as: bin.formulaAs\n });\n }\n return transform;\n }));\n }\n}\n//# sourceMappingURL=bin.js.map","import { isArray } from 'vega-util';\nimport { isBinning } from '../../bin';\nimport { COLUMN, FACET_CHANNELS, ROW } from '../../channel';\nimport { vgField } from '../../channeldef';\nimport * as log from '../../log';\nimport { hasDiscreteDomain } from '../../scale';\nimport { DEFAULT_SORT_OP, isSortField } from '../../sort';\nimport { hash } from '../../util';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { HEADER_CHANNELS, HEADER_TYPES } from '../header/component';\nimport { assembleDomain, getFieldFromDomain } from '../scale/domain';\nimport { sortArrayIndexField } from './calculate';\nimport { DataFlowNode } from './dataflow';\n/**\n * A node that helps us track what fields we are faceting by.\n */\nexport class FacetNode extends DataFlowNode {\n /**\n * @param model The facet model.\n * @param name The name that this facet source will have.\n * @param data The source data for this facet data.\n */\n constructor(parent, model, name, data) {\n super(parent);\n this.model = model;\n this.name = name;\n this.data = data;\n for (const channel of FACET_CHANNELS) {\n const fieldDef = model.facet[channel];\n if (fieldDef) {\n const { bin, sort } = fieldDef;\n this[channel] = Object.assign({ name: model.getName(`${channel}_domain`), fields: [vgField(fieldDef), ...(isBinning(bin) ? [vgField(fieldDef, { binSuffix: 'end' })] : [])] }, (isSortField(sort)\n ? { sortField: sort }\n : isArray(sort)\n ? { sortIndexField: sortArrayIndexField(fieldDef, channel) }\n : {}));\n }\n }\n this.childModel = model.child;\n }\n hash() {\n let out = `Facet`;\n for (const channel of FACET_CHANNELS) {\n if (this[channel]) {\n out += ` ${channel.charAt(0)}:${hash(this[channel])}`;\n }\n }\n return out;\n }\n get fields() {\n const f = [];\n for (const channel of FACET_CHANNELS) {\n if (this[channel] && this[channel].fields) {\n f.push(...this[channel].fields);\n }\n }\n return f;\n }\n /**\n * The name to reference this source is its name.\n */\n getSource() {\n return this.name;\n }\n getChildIndependentFieldsWithStep() {\n const childIndependentFieldsWithStep = {};\n for (const channel of ['x', 'y']) {\n const childScaleComponent = this.childModel.component.scales[channel];\n if (childScaleComponent && !childScaleComponent.merged) {\n // independent scale\n const type = childScaleComponent.get('type');\n const range = childScaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n const domain = assembleDomain(this.childModel, channel);\n const field = getFieldFromDomain(domain);\n if (field) {\n childIndependentFieldsWithStep[channel] = field;\n }\n else {\n log.warn('Unknown field for ${channel}. Cannot calculate view size.');\n }\n }\n }\n }\n return childIndependentFieldsWithStep;\n }\n assembleRowColumnHeaderData(channel, crossedDataName, childIndependentFieldsWithStep) {\n const childChannel = { row: 'y', column: 'x' }[channel];\n const fields = [];\n const ops = [];\n const as = [];\n if (childIndependentFieldsWithStep && childIndependentFieldsWithStep[childChannel]) {\n if (crossedDataName) {\n // If there is a crossed data, calculate max\n fields.push(`distinct_${childIndependentFieldsWithStep[childChannel]}`);\n ops.push('max');\n }\n else {\n // If there is no crossed data, just calculate distinct\n fields.push(childIndependentFieldsWithStep[childChannel]);\n ops.push('distinct');\n }\n // Although it is technically a max, just name it distinct so it's easier to refer to it\n as.push(`distinct_${childIndependentFieldsWithStep[childChannel]}`);\n }\n const { sortField, sortIndexField } = this[channel];\n if (sortField) {\n const { op = DEFAULT_SORT_OP, field } = sortField;\n fields.push(field);\n ops.push(op);\n as.push(vgField(sortField, { forAs: true }));\n }\n else if (sortIndexField) {\n fields.push(sortIndexField);\n ops.push('max');\n as.push(sortIndexField);\n }\n return {\n name: this[channel].name,\n // Use data from the crossed one if it exist\n source: crossedDataName || this.data,\n transform: [\n Object.assign({ type: 'aggregate', groupby: this[channel].fields }, (fields.length\n ? {\n fields,\n ops,\n as\n }\n : {}))\n ]\n };\n }\n assembleFacetHeaderData(childIndependentFieldsWithStep) {\n const { columns } = this.model.layout;\n const { layoutHeaders } = this.model.component;\n const data = [];\n const hasSharedAxis = {};\n for (const headerChannel of HEADER_CHANNELS) {\n for (const headerType of HEADER_TYPES) {\n const headers = (layoutHeaders[headerChannel] && layoutHeaders[headerChannel][headerType]) || [];\n for (const header of headers) {\n if (header.axes && header.axes.length > 0) {\n hasSharedAxis[headerChannel] = true;\n break;\n }\n }\n }\n if (hasSharedAxis[headerChannel]) {\n const cardinality = `length(data(\"${this.facet.name}\"))`;\n const stop = headerChannel === 'row'\n ? columns\n ? { signal: `ceil(${cardinality} / ${columns})` }\n : 1\n : columns\n ? { signal: `min(${cardinality}, ${columns})` }\n : { signal: cardinality };\n data.push({\n name: `${this.facet.name}_${headerChannel}`,\n transform: [\n {\n type: 'sequence',\n start: 0,\n stop\n }\n ]\n });\n }\n }\n const { row, column } = hasSharedAxis;\n if (row || column) {\n data.unshift(this.assembleRowColumnHeaderData('facet', null, childIndependentFieldsWithStep));\n }\n return data;\n }\n assemble() {\n const data = [];\n let crossedDataName = null;\n const childIndependentFieldsWithStep = this.getChildIndependentFieldsWithStep();\n const { column, row, facet } = this;\n if (column && row && (childIndependentFieldsWithStep.x || childIndependentFieldsWithStep.y)) {\n // Need to create a cross dataset to correctly calculate cardinality\n crossedDataName = `cross_${this.column.name}_${this.row.name}`;\n const fields = [].concat(childIndependentFieldsWithStep.x || [], childIndependentFieldsWithStep.y || []);\n const ops = fields.map(() => 'distinct');\n data.push({\n name: crossedDataName,\n source: this.data,\n transform: [\n {\n type: 'aggregate',\n groupby: this.fields,\n fields,\n ops\n }\n ]\n });\n }\n for (const channel of [COLUMN, ROW]) {\n if (this[channel]) {\n data.push(this.assembleRowColumnHeaderData(channel, crossedDataName, childIndependentFieldsWithStep));\n }\n }\n if (facet) {\n const facetData = this.assembleFacetHeaderData(childIndependentFieldsWithStep);\n if (facetData) {\n data.push(...facetData);\n }\n }\n return data;\n }\n}\n//# sourceMappingURL=facet.js.map","import { duplicate } from '../../util';\nimport { expression } from '../predicate';\nimport { DataFlowNode } from './dataflow';\nimport { getDependentFields } from './expressions';\nexport class FilterNode extends DataFlowNode {\n constructor(parent, model, filter) {\n super(parent);\n this.model = model;\n this.filter = filter;\n // TODO: refactor this to not take a node and\n // then add a static function makeFromOperand and make the constructor take only an expression\n this.expr = expression(this.model, this.filter, this);\n this._dependentFields = getDependentFields(this.expr);\n }\n clone() {\n return new FilterNode(null, this.model, duplicate(this.filter));\n }\n dependentFields() {\n return this._dependentFields;\n }\n assemble() {\n return {\n type: 'filter',\n expr: this.expr\n };\n }\n hash() {\n return `Filter ${this.expr}`;\n }\n}\n//# sourceMappingURL=filter.js.map","import { isNumber, isString } from 'vega-util';\nimport { isMinMaxOp } from '../../aggregate';\nimport { getMainRangeChannel } from '../../channel';\nimport { isNumberFieldDef, isScaleFieldDef, isTimeFormatFieldDef, isTypedFieldDef } from '../../channeldef';\nimport { isGenerator } from '../../data';\nimport { isDateTime } from '../../datetime';\nimport * as log from '../../log';\nimport { forEachLeaf } from '../../logical';\nimport { isFieldEqualPredicate, isFieldOneOfPredicate, isFieldPredicate, isFieldRangePredicate } from '../../predicate';\nimport { isSortField } from '../../sort';\nimport { accessPathDepth, accessPathWithDatum, duplicate, hash, keys, removePathFromField } from '../../util';\nimport { isFacetModel, isUnitModel } from '../model';\nimport { Split } from '../split';\nimport { DataFlowNode } from './dataflow';\n/**\n * Remove quotes from a string.\n */\nfunction unquote(pattern) {\n if ((pattern[0] === \"'\" && pattern[pattern.length - 1] === \"'\") ||\n (pattern[0] === '\"' && pattern[pattern.length - 1] === '\"')) {\n return pattern.slice(1, -1);\n }\n return pattern;\n}\n/**\n * @param field The field.\n * @param parse What to parse the field as.\n */\nfunction parseExpression(field, parse) {\n const f = accessPathWithDatum(field);\n if (parse === 'number') {\n return `toNumber(${f})`;\n }\n else if (parse === 'boolean') {\n return `toBoolean(${f})`;\n }\n else if (parse === 'string') {\n return `toString(${f})`;\n }\n else if (parse === 'date') {\n return `toDate(${f})`;\n }\n else if (parse === 'flatten') {\n return f;\n }\n else if (parse.indexOf('date:') === 0) {\n const specifier = unquote(parse.slice(5, parse.length));\n return `timeParse(${f},'${specifier}')`;\n }\n else if (parse.indexOf('utc:') === 0) {\n const specifier = unquote(parse.slice(4, parse.length));\n return `utcParse(${f},'${specifier}')`;\n }\n else {\n log.warn(log.message.unrecognizedParse(parse));\n return null;\n }\n}\nexport class ParseNode extends DataFlowNode {\n clone() {\n return new ParseNode(null, duplicate(this._parse));\n }\n constructor(parent, parse) {\n super(parent);\n this._parse = parse;\n }\n hash() {\n return `Parse ${hash(this._parse)}`;\n }\n /**\n * Creates a parse node from a data.format.parse and updates ancestorParse.\n */\n static makeExplicit(parent, model, ancestorParse) {\n // Custom parse\n let explicit = {};\n const data = model.data;\n if (!isGenerator(data) && data && data.format && data.format.parse) {\n explicit = data.format.parse;\n }\n return this.makeWithAncestors(parent, explicit, {}, ancestorParse);\n }\n static makeImplicitFromFilterTransform(parent, transform, ancestorParse) {\n const parse = {};\n forEachLeaf(transform.filter, filter => {\n if (isFieldPredicate(filter)) {\n // Automatically add a parse node for filters with filter objects\n let val = null;\n // For EqualFilter, just use the equal property.\n // For RangeFilter and OneOfFilter, all array members should have\n // the same type, so we only use the first one.\n if (isFieldEqualPredicate(filter)) {\n val = filter.equal;\n }\n else if (isFieldRangePredicate(filter)) {\n val = filter.range[0];\n }\n else if (isFieldOneOfPredicate(filter)) {\n val = (filter.oneOf || filter['in'])[0];\n } // else -- for filter expression, we can't infer anything\n if (val) {\n if (isDateTime(val)) {\n parse[filter.field] = 'date';\n }\n else if (isNumber(val)) {\n parse[filter.field] = 'number';\n }\n else if (isString(val)) {\n parse[filter.field] = 'string';\n }\n }\n if (filter.timeUnit) {\n parse[filter.field] = 'date';\n }\n }\n });\n if (keys(parse).length === 0) {\n return null;\n }\n return this.makeWithAncestors(parent, {}, parse, ancestorParse);\n }\n /**\n * Creates a parse node for implicit parsing from a model and updates ancestorParse.\n */\n static makeImplicitFromEncoding(parent, model, ancestorParse) {\n const implicit = {};\n function add(fieldDef) {\n if (isTimeFormatFieldDef(fieldDef)) {\n implicit[fieldDef.field] = 'date';\n }\n else if (isNumberFieldDef(fieldDef) && isMinMaxOp(fieldDef.aggregate)) {\n implicit[fieldDef.field] = 'number';\n }\n else if (accessPathDepth(fieldDef.field) > 1) {\n // For non-date/non-number (strings and booleans), derive a flattened field for a referenced nested field.\n // (Parsing numbers / dates already flattens numeric and temporal fields.)\n if (!(fieldDef.field in implicit)) {\n implicit[fieldDef.field] = 'flatten';\n }\n }\n else if (isScaleFieldDef(fieldDef) && isSortField(fieldDef.sort) && accessPathDepth(fieldDef.sort.field) > 1) {\n // Flatten fields that we sort by but that are not otherwise flattened.\n if (!(fieldDef.sort.field in implicit)) {\n implicit[fieldDef.sort.field] = 'flatten';\n }\n }\n }\n if (isUnitModel(model) || isFacetModel(model)) {\n // Parse encoded fields\n model.forEachFieldDef((fieldDef, channel) => {\n if (isTypedFieldDef(fieldDef)) {\n add(fieldDef);\n }\n else {\n const mainChannel = getMainRangeChannel(channel);\n if (mainChannel !== channel) {\n const mainFieldDef = model.fieldDef(mainChannel);\n add(Object.assign({}, fieldDef, { type: mainFieldDef.type }));\n }\n else {\n throw new Error(`Non-secondary channel ${channel} must have type in its field definition ${JSON.stringify(fieldDef)}`);\n }\n }\n });\n }\n return this.makeWithAncestors(parent, {}, implicit, ancestorParse);\n }\n /**\n * Creates a parse node from \"explicit\" parse and \"implicit\" parse and updates ancestorParse.\n */\n static makeWithAncestors(parent, explicit, implicit, ancestorParse) {\n // We should not parse what has already been parsed in a parent (explicitly or implicitly) or what has been derived (maked as \"derived\"). We also don't need to flatten a field that has already been parsed.\n for (const field of keys(implicit)) {\n const parsedAs = ancestorParse.getWithExplicit(field);\n if (parsedAs.value !== undefined) {\n // We always ignore derived fields even if they are implicitly defined because we expect users to create the right types.\n if (parsedAs.explicit ||\n parsedAs.value === implicit[field] ||\n parsedAs.value === 'derived' ||\n implicit[field] === 'flatten') {\n delete implicit[field];\n }\n else {\n log.warn(log.message.differentParse(field, implicit[field], parsedAs.value));\n }\n }\n }\n for (const field of keys(explicit)) {\n const parsedAs = ancestorParse.get(field);\n if (parsedAs !== undefined) {\n // Don't parse a field again if it has been parsed with the same type already.\n if (parsedAs === explicit[field]) {\n delete explicit[field];\n }\n else {\n log.warn(log.message.differentParse(field, explicit[field], parsedAs));\n }\n }\n }\n const parse = new Split(explicit, implicit);\n // add the format parse from this model so that children don't parse the same field again\n ancestorParse.copyAll(parse);\n // copy only non-null parses\n const p = {};\n for (const key of keys(parse.combine())) {\n const val = parse.get(key);\n if (val !== null) {\n p[key] = val;\n }\n }\n if (keys(p).length === 0 || ancestorParse.parseNothing) {\n return null;\n }\n return new ParseNode(parent, p);\n }\n get parse() {\n return this._parse;\n }\n merge(other) {\n this._parse = Object.assign({}, this._parse, other.parse);\n other.remove();\n }\n /**\n * Assemble an object for Vega's format.parse property.\n */\n assembleFormatParse() {\n const formatParse = {};\n for (const field of keys(this._parse)) {\n const p = this._parse[field];\n if (accessPathDepth(field) === 1) {\n formatParse[field] = p;\n }\n }\n return formatParse;\n }\n // format parse depends and produces all fields in its parse\n producedFields() {\n return new Set(keys(this._parse));\n }\n dependentFields() {\n return new Set(keys(this._parse));\n }\n assembleTransforms(onlyNested = false) {\n return keys(this._parse)\n .filter(field => (onlyNested ? accessPathDepth(field) > 1 : true))\n .map(field => {\n const expr = parseExpression(field, this._parse[field]);\n if (!expr) {\n return null;\n }\n const formula = {\n type: 'formula',\n expr,\n as: removePathFromField(field) // Vega output is always flattened\n };\n return formula;\n })\n .filter(t => t !== null);\n }\n}\n//# sourceMappingURL=formatparse.js.map","import { vgField } from '../../channeldef';\nimport { duplicate, hash } from '../../util';\nimport { unique } from './../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for the join aggregate transform nodes.\n */\nexport class JoinAggregateTransformNode extends DataFlowNode {\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n }\n clone() {\n return new JoinAggregateTransformNode(null, duplicate(this.transform));\n }\n addDimensions(fields) {\n this.transform.groupby = unique(this.transform.groupby.concat(fields), d => d);\n }\n dependentFields() {\n const out = new Set();\n this.transform.groupby.forEach(f => out.add(f));\n this.transform.joinaggregate\n .map(w => w.field)\n .filter(f => f !== undefined)\n .forEach(f => out.add(f));\n return out;\n }\n producedFields() {\n return new Set(this.transform.joinaggregate.map(this.getDefaultName));\n }\n getDefaultName(joinAggregateFieldDef) {\n return joinAggregateFieldDef.as || vgField(joinAggregateFieldDef);\n }\n hash() {\n return `JoinAggregateTransform ${hash(this.transform)}`;\n }\n assemble() {\n const fields = [];\n const ops = [];\n const as = [];\n for (const joinaggregate of this.transform.joinaggregate) {\n ops.push(joinaggregate.op);\n as.push(this.getDefaultName(joinaggregate));\n fields.push(joinaggregate.field === undefined ? null : joinaggregate.field);\n }\n const groupby = this.transform.groupby;\n return Object.assign({ type: 'joinaggregate', as,\n ops,\n fields }, (groupby !== undefined ? { groupby } : {}));\n }\n}\n//# sourceMappingURL=joinaggregate.js.map","import { isArray, isString } from 'vega-util';\nimport { getTypedFieldDef, isFieldDef, vgField } from '../../channeldef';\nimport { duplicate, getFirstDefined, hash } from '../../util';\nimport { sortParams } from '../common';\nimport { DataFlowNode } from './dataflow';\nfunction getStackByFields(model) {\n return model.stack.stackBy.reduce((fields, by) => {\n const fieldDef = by.fieldDef;\n const _field = vgField(fieldDef);\n if (_field) {\n fields.push(_field);\n }\n return fields;\n }, []);\n}\nfunction isValidAsArray(as) {\n return isArray(as) && as.every(s => isString(s)) && as.length > 1;\n}\nexport class StackNode extends DataFlowNode {\n clone() {\n return new StackNode(null, duplicate(this._stack));\n }\n constructor(parent, stack) {\n super(parent);\n this._stack = stack;\n }\n static makeFromTransform(parent, stackTransform) {\n const { stack, groupby, as, offset = 'zero' } = stackTransform;\n const sortFields = [];\n const sortOrder = [];\n if (stackTransform.sort !== undefined) {\n for (const sortField of stackTransform.sort) {\n sortFields.push(sortField.field);\n sortOrder.push(getFirstDefined(sortField.order, 'ascending'));\n }\n }\n const sort = {\n field: sortFields,\n order: sortOrder\n };\n let normalizedAs;\n if (isValidAsArray(as)) {\n normalizedAs = as;\n }\n else if (isString(as)) {\n normalizedAs = [as, as + '_end'];\n }\n else {\n normalizedAs = [stackTransform.stack + '_start', stackTransform.stack + '_end'];\n }\n return new StackNode(parent, {\n stackField: stack,\n groupby,\n offset,\n sort,\n facetby: [],\n as: normalizedAs\n });\n }\n static makeFromEncoding(parent, model) {\n const stackProperties = model.stack;\n const { encoding } = model;\n if (!stackProperties) {\n return null;\n }\n let dimensionFieldDef;\n if (stackProperties.groupbyChannel) {\n const cDef = encoding[stackProperties.groupbyChannel];\n dimensionFieldDef = getTypedFieldDef(cDef);\n }\n const stackby = getStackByFields(model);\n const orderDef = model.encoding.order;\n let sort;\n if (isArray(orderDef) || isFieldDef(orderDef)) {\n sort = sortParams(orderDef);\n }\n else {\n // default = descending by stackFields\n // FIXME is the default here correct for binned fields?\n sort = stackby.reduce((s, field) => {\n s.field.push(field);\n s.order.push('descending');\n return s;\n }, { field: [], order: [] });\n }\n return new StackNode(parent, {\n dimensionFieldDef,\n stackField: model.vgField(stackProperties.fieldChannel),\n facetby: [],\n stackby,\n sort,\n offset: stackProperties.offset,\n impute: stackProperties.impute,\n as: [\n model.vgField(stackProperties.fieldChannel, { suffix: 'start', forAs: true }),\n model.vgField(stackProperties.fieldChannel, { suffix: 'end', forAs: true })\n ]\n });\n }\n get stack() {\n return this._stack;\n }\n addDimensions(fields) {\n this._stack.facetby.push(...fields);\n }\n dependentFields() {\n const out = new Set();\n out.add(this._stack.stackField);\n this.getGroupbyFields().forEach(out.add);\n this._stack.facetby.forEach(out.add);\n const field = this._stack.sort.field;\n isArray(field) ? field.forEach(out.add) : out.add(field);\n return out;\n }\n producedFields() {\n return new Set(this._stack.as);\n }\n hash() {\n return `Stack ${hash(this._stack)}`;\n }\n getGroupbyFields() {\n const { dimensionFieldDef, impute, groupby } = this._stack;\n if (dimensionFieldDef) {\n if (dimensionFieldDef.bin) {\n if (impute) {\n // For binned group by field with impute, we calculate bin_mid\n // as we cannot impute two fields simultaneously\n return [vgField(dimensionFieldDef, { binSuffix: 'mid' })];\n }\n return [\n // For binned group by field without impute, we need both bin (start) and bin_end\n vgField(dimensionFieldDef, {}),\n vgField(dimensionFieldDef, { binSuffix: 'end' })\n ];\n }\n return [vgField(dimensionFieldDef)];\n }\n return groupby || [];\n }\n assemble() {\n const transform = [];\n const { facetby, dimensionFieldDef, stackField: field, stackby, sort, offset, impute, as } = this._stack;\n // Impute\n if (impute && dimensionFieldDef) {\n if (dimensionFieldDef.bin) {\n // As we can only impute one field at a time, we need to calculate\n // mid point for a binned field\n transform.push({\n type: 'formula',\n expr: '(' +\n vgField(dimensionFieldDef, { expr: 'datum' }) +\n '+' +\n vgField(dimensionFieldDef, { expr: 'datum', binSuffix: 'end' }) +\n ')/2',\n as: vgField(dimensionFieldDef, { binSuffix: 'mid', forAs: true })\n });\n }\n transform.push({\n type: 'impute',\n field,\n groupby: [...stackby, ...facetby],\n key: vgField(dimensionFieldDef, { binSuffix: 'mid' }),\n method: 'value',\n value: 0\n });\n }\n // Stack\n transform.push({\n type: 'stack',\n groupby: [...this.getGroupbyFields(), ...facetby],\n field,\n sort,\n as,\n offset\n });\n return transform;\n }\n}\n//# sourceMappingURL=stack.js.map","import { isAggregateOp } from '../../aggregate';\nimport { vgField } from '../../channeldef';\nimport { duplicate, hash } from '../../util';\nimport { unique } from './../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for the window transform nodes\n */\nexport class WindowTransformNode extends DataFlowNode {\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n }\n clone() {\n return new WindowTransformNode(null, duplicate(this.transform));\n }\n addDimensions(fields) {\n this.transform.groupby = unique(this.transform.groupby.concat(fields), d => d);\n }\n dependentFields() {\n const out = new Set();\n this.transform.groupby.forEach(f => out.add(f));\n this.transform.sort.forEach(m => out.add(m.field));\n this.transform.window\n .map(w => w.field)\n .filter(f => f !== undefined)\n .forEach(f => out.add(f));\n return out;\n }\n producedFields() {\n return new Set(this.transform.window.map(this.getDefaultName));\n }\n getDefaultName(windowFieldDef) {\n return windowFieldDef.as || vgField(windowFieldDef);\n }\n hash() {\n return `WindowTransform ${hash(this.transform)}`;\n }\n assemble() {\n const fields = [];\n const ops = [];\n const as = [];\n const params = [];\n for (const window of this.transform.window) {\n ops.push(window.op);\n as.push(this.getDefaultName(window));\n params.push(window.param === undefined ? null : window.param);\n fields.push(window.field === undefined ? null : window.field);\n }\n const frame = this.transform.frame;\n const groupby = this.transform.groupby;\n if (frame && frame[0] === null && frame[1] === null && ops.every(o => isAggregateOp(o))) {\n // when the window does not rely on any particular window ops or frame, switch to a simpler and more efficient joinaggregate\n return Object.assign({ type: 'joinaggregate', as, ops: ops, fields }, (groupby !== undefined ? { groupby } : {}));\n }\n const sortFields = [];\n const sortOrder = [];\n if (this.transform.sort !== undefined) {\n for (const sortField of this.transform.sort) {\n sortFields.push(sortField.field);\n sortOrder.push(sortField.order || 'ascending');\n }\n }\n const sort = {\n field: sortFields,\n order: sortOrder\n };\n const ignorePeers = this.transform.ignorePeers;\n return Object.assign({ type: 'window', params,\n as,\n ops,\n fields,\n sort }, (ignorePeers !== undefined ? { ignorePeers } : {}), (groupby !== undefined ? { groupby } : {}), (frame !== undefined ? { frame } : {}));\n }\n}\n//# sourceMappingURL=window.js.map","import { MAIN } from '../../data';\nimport { fieldIntersection, flatten, hash, hasIntersection, keys } from '../../util';\nimport { AggregateNode } from './aggregate';\nimport { BinNode } from './bin';\nimport { OutputNode } from './dataflow';\nimport { FacetNode } from './facet';\nimport { FilterNode } from './filter';\nimport { ParseNode } from './formatparse';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nimport { FACET_SCALE_PREFIX } from './optimize';\nimport { BottomUpOptimizer, TopDownOptimizer } from './optimizer';\nimport { SourceNode } from './source';\nimport { StackNode } from './stack';\nimport { TimeUnitNode } from './timeunit';\nimport { WindowTransformNode } from './window';\n/**\n * Start optimization path at the leaves. Useful for merging up or removing things.\n *\n * If the callback returns true, the recursion continues.\n */\nexport function iterateFromLeaves(f) {\n function optimizeNextFromLeaves(node) {\n if (node instanceof SourceNode) {\n return false;\n }\n const next = node.parent;\n const { continueFlag, mutatedFlag } = f(node);\n let childFlag = false;\n if (continueFlag) {\n childFlag = optimizeNextFromLeaves(next);\n }\n return mutatedFlag || childFlag;\n }\n return optimizeNextFromLeaves;\n}\n/**\n * Move parse nodes up to forks.\n */\nexport class MoveParseUp extends BottomUpOptimizer {\n run(node) {\n const parent = node.parent;\n // move parse up by merging or swapping\n if (node instanceof ParseNode) {\n if (parent instanceof SourceNode) {\n return this.flags;\n }\n if (parent.numChildren() > 1) {\n // don't move parse further up but continue with parent.\n this.setContinue();\n return this.flags;\n }\n if (parent instanceof ParseNode) {\n this.setMutated();\n parent.merge(node);\n }\n else {\n // don't swap with nodes that produce something that the parse node depends on (e.g. lookup)\n if (fieldIntersection(parent.producedFields(), node.dependentFields())) {\n this.setContinue();\n return this.flags;\n }\n this.setMutated();\n node.swapWithParent();\n }\n }\n this.setContinue();\n return this.flags;\n }\n}\n/**\n * Merge identical nodes at forks by comparing hashes.\n *\n * Does not need to iterate from leaves so we implement this with recursion as it's a bit simpler.\n */\nexport class MergeIdenticalNodes extends TopDownOptimizer {\n mergeNodes(parent, nodes) {\n const mergedNode = nodes.shift();\n for (const node of nodes) {\n parent.removeChild(node);\n node.parent = mergedNode;\n node.remove();\n }\n }\n run(node) {\n const hashes = node.children.map(x => x.hash());\n const buckets = {};\n for (let i = 0; i < hashes.length; i++) {\n if (buckets[hashes[i]] === undefined) {\n buckets[hashes[i]] = [node.children[i]];\n }\n else {\n buckets[hashes[i]].push(node.children[i]);\n }\n }\n for (const k of keys(buckets)) {\n if (buckets[k].length > 1) {\n this.setMutated();\n this.mergeNodes(node, buckets[k]);\n }\n }\n for (const child of node.children) {\n this.run(child);\n }\n return this.mutatedFlag;\n }\n}\n/**\n * Repeatedly remove leaf nodes that are not output or facet nodes.\n * The reason is that we don't need subtrees that don't have any output nodes.\n * Facet nodes are needed for the row or column domains.\n */\nexport class RemoveUnusedSubtrees extends BottomUpOptimizer {\n run(node) {\n if (node instanceof OutputNode || node.numChildren() > 0 || node instanceof FacetNode) {\n // no need to continue with parent because it is output node or will have children (there was a fork)\n return this.flags;\n }\n else {\n this.setMutated();\n node.remove();\n }\n return this.flags;\n }\n}\n/**\n * Removes duplicate time unit nodes (as determined by the name of the\n * output field) that may be generated due to selections projected over\n * time units.\n */\nexport class RemoveDuplicateTimeUnits extends BottomUpOptimizer {\n constructor() {\n super(...arguments);\n this.fields = new Set();\n }\n run(node) {\n this.setContinue();\n if (node instanceof TimeUnitNode) {\n const pfields = node.producedFields();\n if (hasIntersection(pfields, this.fields)) {\n this.setMutated();\n node.remove();\n }\n else {\n this.fields = new Set([...this.fields, ...pfields]);\n }\n }\n return this.flags;\n }\n reset() {\n this.fields.clear();\n }\n}\n/**\n * Clones the subtree and ignores output nodes except for the leaves, which are renamed.\n */\nfunction cloneSubtree(facet) {\n function clone(node) {\n if (!(node instanceof FacetNode)) {\n const copy = node.clone();\n if (copy instanceof OutputNode) {\n const newName = FACET_SCALE_PREFIX + copy.getSource();\n copy.setSource(newName);\n facet.model.component.data.outputNodes[newName] = copy;\n }\n else if (copy instanceof AggregateNode ||\n copy instanceof StackNode ||\n copy instanceof WindowTransformNode ||\n copy instanceof JoinAggregateTransformNode) {\n copy.addDimensions(facet.fields);\n }\n flatten(node.children.map(clone)).forEach((n) => (n.parent = copy));\n return [copy];\n }\n return flatten(node.children.map(clone));\n }\n return clone;\n}\n/**\n * Move facet nodes down to the next fork or output node. Also pull the main output with the facet node.\n * After moving down the facet node, make a copy of the subtree and make it a child of the main output.\n */\nexport function moveFacetDown(node) {\n if (node instanceof FacetNode) {\n if (node.numChildren() === 1 && !(node.children[0] instanceof OutputNode)) {\n // move down until we hit a fork or output node\n const child = node.children[0];\n if (child instanceof AggregateNode ||\n child instanceof StackNode ||\n child instanceof WindowTransformNode ||\n child instanceof JoinAggregateTransformNode) {\n child.addDimensions(node.fields);\n }\n child.swapWithParent();\n moveFacetDown(node);\n }\n else {\n // move main to facet\n const facetMain = node.model.component.data.main;\n moveMainDownToFacet(facetMain);\n // replicate the subtree and place it before the facet's main node\n const cloner = cloneSubtree(node);\n const copy = flatten(node.children.map(cloner));\n for (const c of copy) {\n c.parent = facetMain;\n }\n }\n }\n else {\n node.children.map(moveFacetDown);\n }\n}\nfunction moveMainDownToFacet(node) {\n if (node instanceof OutputNode && node.type === MAIN) {\n if (node.numChildren() === 1) {\n const child = node.children[0];\n if (!(child instanceof FacetNode)) {\n child.swapWithParent();\n moveMainDownToFacet(node);\n }\n }\n }\n}\n/**\n * Remove nodes that are not required starting from a root.\n */\nexport class RemoveUnnecessaryNodes extends TopDownOptimizer {\n run(node) {\n // remove output nodes that are not required\n if (node instanceof OutputNode && !node.isRequired()) {\n this.setMutated();\n node.remove();\n }\n for (const child of node.children) {\n this.run(child);\n }\n return this.mutatedFlag;\n }\n}\n/**\n * Inserts an Intermediate ParseNode containing all non-conflicting Parse fields and removes the empty ParseNodes\n */\nexport class MergeParse extends BottomUpOptimizer {\n run(node) {\n const parent = node.parent;\n const parseChildren = parent.children.filter((x) => x instanceof ParseNode);\n if (parseChildren.length > 1) {\n const commonParse = {};\n for (const parseNode of parseChildren) {\n const parse = parseNode.parse;\n for (const k of keys(parse)) {\n if (commonParse[k] === undefined) {\n commonParse[k] = parse[k];\n }\n else if (commonParse[k] !== parse[k]) {\n delete commonParse[k];\n }\n }\n }\n if (keys(commonParse).length !== 0) {\n this.setMutated();\n const mergedParseNode = new ParseNode(parent, commonParse);\n for (const parseNode of parseChildren) {\n for (const key of keys(commonParse)) {\n delete parseNode.parse[key];\n }\n parent.removeChild(parseNode);\n parseNode.parent = mergedParseNode;\n if (keys(parseNode.parse).length === 0) {\n parseNode.remove();\n }\n }\n }\n }\n this.setContinue();\n return this.flags;\n }\n}\nexport class MergeAggregateNodes extends BottomUpOptimizer {\n run(node) {\n const parent = node.parent;\n const aggChildren = parent.children.filter((x) => x instanceof AggregateNode);\n // Object which we'll use to map the fields which an aggregate is grouped by to\n // the set of aggregates with that grouping. This is useful as only aggregates\n // with the same group by can be merged\n const groupedAggregates = {};\n // Build groupedAggregates\n for (const agg of aggChildren) {\n const groupBys = hash(keys(agg.groupBy).sort());\n if (!(groupBys in groupedAggregates)) {\n groupedAggregates[groupBys] = [];\n }\n groupedAggregates[groupBys].push(agg);\n }\n // Merge aggregateNodes with same key in groupedAggregates\n for (const group of keys(groupedAggregates)) {\n const mergeableAggs = groupedAggregates[group];\n if (mergeableAggs.length > 1) {\n const mergedAggs = mergeableAggs.pop();\n for (const agg of mergeableAggs) {\n if (mergedAggs.merge(agg)) {\n parent.removeChild(agg);\n agg.parent = mergedAggs;\n agg.remove();\n this.setMutated();\n }\n }\n }\n }\n this.setContinue();\n return this.flags;\n }\n}\n/**\n * Merge bin nodes and move bin nodes up through forks but stop at filters and parse as we want them to stay before the bin node.\n */\nexport class MergeBins extends BottomUpOptimizer {\n constructor(model) {\n super();\n this.model = model;\n }\n run(node) {\n const parent = node.parent;\n const moveBinsUp = !(parent instanceof SourceNode || parent instanceof FilterNode || parent instanceof ParseNode);\n const promotableBins = [];\n const remainingBins = [];\n for (const child of parent.children) {\n if (child instanceof BinNode) {\n if (moveBinsUp && !fieldIntersection(parent.producedFields(), child.dependentFields())) {\n promotableBins.push(child);\n }\n else {\n remainingBins.push(child);\n }\n }\n }\n if (promotableBins.length > 0) {\n const promotedBin = promotableBins.pop();\n for (const bin of promotableBins) {\n promotedBin.merge(bin, this.model.renameSignal.bind(this.model));\n }\n this.setMutated();\n if (parent instanceof BinNode) {\n parent.merge(promotedBin, this.model.renameSignal.bind(this.model));\n }\n else {\n promotedBin.swapWithParent();\n }\n }\n if (remainingBins.length > 1) {\n const remainingBin = remainingBins.pop();\n for (const bin of remainingBins) {\n remainingBin.merge(bin, this.model.renameSignal.bind(this.model));\n }\n this.setMutated();\n }\n this.setContinue();\n return this.flags;\n }\n}\n//# sourceMappingURL=optimizers.js.map","import * as log from '../../log';\nimport { checkLinks } from './debug';\nimport { BottomUpOptimizer } from './optimizer';\nimport * as optimizers from './optimizers';\nexport const FACET_SCALE_PREFIX = 'scale_';\nexport const MAX_OPTIMIZATION_RUNS = 5;\n/**\n * Return all leaf nodes.\n */\nfunction getLeaves(roots) {\n const leaves = [];\n function append(node) {\n if (node.numChildren() === 0) {\n leaves.push(node);\n }\n else {\n node.children.forEach(append);\n }\n }\n roots.forEach(append);\n return leaves;\n}\nexport function isTrue(x) {\n return x;\n}\n/**\n * Run the specified optimizer on the provided nodes.\n *\n * @param optimizer The optimizer instance to run.\n * @param nodes A set of nodes to optimize.\n * @param flag Flag that will be or'ed with return valued from optimization calls to the nodes.\n */\nfunction runOptimizer(optimizer, nodes, flag) {\n const flags = nodes.map(node => {\n if (optimizer instanceof BottomUpOptimizer) {\n const runFlags = optimizer.optimizeNextFromLeaves(node);\n optimizer.reset();\n return runFlags;\n }\n else {\n return optimizer.run(node);\n }\n });\n return flags.some(isTrue) || flag;\n}\nfunction optimizationDataflowHelper(dataComponent, model) {\n let roots = dataComponent.sources;\n let mutatedFlag = false;\n // mutatedFlag should always be on the right side otherwise short circuit logic might cause the mutating method to not execute\n mutatedFlag = runOptimizer(new optimizers.RemoveUnnecessaryNodes(), roots, mutatedFlag);\n // remove source nodes that don't have any children because they also don't have output nodes\n roots = roots.filter(r => r.numChildren() > 0);\n mutatedFlag = runOptimizer(new optimizers.RemoveUnusedSubtrees(), getLeaves(roots), mutatedFlag);\n roots = roots.filter(r => r.numChildren() > 0);\n mutatedFlag = runOptimizer(new optimizers.MoveParseUp(), getLeaves(roots), mutatedFlag);\n mutatedFlag = runOptimizer(new optimizers.MergeBins(model), getLeaves(roots), mutatedFlag);\n mutatedFlag = runOptimizer(new optimizers.RemoveDuplicateTimeUnits(), getLeaves(roots), mutatedFlag);\n mutatedFlag = runOptimizer(new optimizers.MergeParse(), getLeaves(roots), mutatedFlag);\n mutatedFlag = runOptimizer(new optimizers.MergeAggregateNodes(), getLeaves(roots), mutatedFlag);\n mutatedFlag = runOptimizer(new optimizers.MergeIdenticalNodes(), roots, mutatedFlag);\n dataComponent.sources = roots;\n return mutatedFlag;\n}\n/**\n * Optimizes the dataflow of the passed in data component.\n */\nexport function optimizeDataflow(data, model) {\n // check before optimizations\n checkLinks(data.sources);\n let firstPassCounter = 0;\n let secondPassCounter = 0;\n for (let i = 0; i < MAX_OPTIMIZATION_RUNS; i++) {\n if (!optimizationDataflowHelper(data, model)) {\n break;\n }\n firstPassCounter++;\n }\n // move facets down and make a copy of the subtree so that we can have scales at the top level\n data.sources.map(optimizers.moveFacetDown);\n for (let i = 0; i < MAX_OPTIMIZATION_RUNS; i++) {\n if (!optimizationDataflowHelper(data, model)) {\n break;\n }\n secondPassCounter++;\n }\n // check after optimizations\n checkLinks(data.sources);\n if (Math.max(firstPassCounter, secondPassCounter) === MAX_OPTIMIZATION_RUNS) {\n log.warn(`Maximum optimization runs(${MAX_OPTIMIZATION_RUNS}) reached.`);\n }\n}\n//# sourceMappingURL=optimize.js.map","/**\n * A class that behaves like a SignalRef but lazily generates the signal.\n * The provided generator function should use `Model.getSignalName` to use the correct signal name.\n */\nexport class SignalRefWrapper {\n constructor(exprGenerator) {\n Object.defineProperty(this, 'signal', {\n enumerable: true,\n get: exprGenerator\n });\n }\n static fromName(rename, signalName) {\n return new SignalRefWrapper(() => rename(signalName));\n }\n}\n//# sourceMappingURL=signal.js.map","import * as tslib_1 from \"tslib\";\nimport { isObject, isString } from 'vega-util';\nimport { SHARED_DOMAIN_OP_INDEX } from '../../aggregate';\nimport { isBinning } from '../../bin';\nimport { isScaleChannel } from '../../channel';\nimport { binRequiresRange, valueExpr, vgField } from '../../channeldef';\nimport { MAIN, RAW } from '../../data';\nimport * as log from '../../log';\nimport { hasDiscreteDomain, isSelectionDomain } from '../../scale';\nimport { DEFAULT_SORT_OP, isSortArray, isSortByEncoding, isSortField } from '../../sort';\nimport * as util from '../../util';\nimport { isDataRefDomain, isDataRefUnionedDomain, isFieldRefUnionDomain } from '../../vega.schema';\nimport { sortArrayIndexField } from '../data/calculate';\nimport { FACET_SCALE_PREFIX } from '../data/optimize';\nimport { isFacetModel, isUnitModel } from '../model';\nimport { SELECTION_DOMAIN } from '../selection';\nimport { SignalRefWrapper } from '../signal';\nexport function parseScaleDomain(model) {\n if (isUnitModel(model)) {\n parseUnitScaleDomain(model);\n }\n else {\n parseNonUnitScaleDomain(model);\n }\n}\nfunction parseUnitScaleDomain(model) {\n const scales = model.specifiedScales;\n const localScaleComponents = model.component.scales;\n util.keys(localScaleComponents).forEach((channel) => {\n const specifiedScale = scales[channel];\n const specifiedDomain = specifiedScale ? specifiedScale.domain : undefined;\n const domains = parseDomainForChannel(model, channel);\n const localScaleCmpt = localScaleComponents[channel];\n localScaleCmpt.domains = domains;\n if (isSelectionDomain(specifiedDomain)) {\n // As scale parsing occurs before selection parsing, we use a temporary\n // signal here and append the scale.domain definition. This is replaced\n // with the correct domainRaw signal during scale assembly.\n // For more information, see isRawSelectionDomain in selection.ts.\n // FIXME: replace this with a special property in the scaleComponent\n localScaleCmpt.set('domainRaw', {\n signal: SELECTION_DOMAIN + util.hash(specifiedDomain)\n }, true);\n }\n if (model.component.data.isFaceted) {\n // get resolve from closest facet parent as this decides whether we need to refer to cloned subtree or not\n let facetParent = model;\n while (!isFacetModel(facetParent) && facetParent.parent) {\n facetParent = facetParent.parent;\n }\n const resolve = facetParent.component.resolve.scale[channel];\n if (resolve === 'shared') {\n for (const domain of domains) {\n // Replace the scale domain with data output from a cloned subtree after the facet.\n if (isDataRefDomain(domain)) {\n // use data from cloned subtree (which is the same as data but with a prefix added once)\n domain.data = FACET_SCALE_PREFIX + domain.data.replace(FACET_SCALE_PREFIX, '');\n }\n }\n }\n }\n });\n}\nfunction parseNonUnitScaleDomain(model) {\n for (const child of model.children) {\n parseScaleDomain(child);\n }\n const localScaleComponents = model.component.scales;\n util.keys(localScaleComponents).forEach((channel) => {\n let domains;\n let domainRaw = null;\n for (const child of model.children) {\n const childComponent = child.component.scales[channel];\n if (childComponent) {\n if (domains === undefined) {\n domains = childComponent.domains;\n }\n else {\n domains = domains.concat(childComponent.domains);\n }\n const dr = childComponent.get('domainRaw');\n if (domainRaw && dr && domainRaw.signal !== dr.signal) {\n log.warn('The same selection must be used to override scale domains in a layered view.');\n }\n domainRaw = dr;\n }\n }\n localScaleComponents[channel].domains = domains;\n if (domainRaw) {\n localScaleComponents[channel].set('domainRaw', domainRaw, true);\n }\n });\n}\n/**\n * Remove unaggregated domain if it is not applicable\n * Add unaggregated domain if domain is not specified and config.scale.useUnaggregatedDomain is true.\n */\nfunction normalizeUnaggregatedDomain(domain, fieldDef, scaleType, scaleConfig) {\n if (domain === 'unaggregated') {\n const { valid, reason } = canUseUnaggregatedDomain(fieldDef, scaleType);\n if (!valid) {\n log.warn(reason);\n return undefined;\n }\n }\n else if (domain === undefined && scaleConfig.useUnaggregatedDomain) {\n // Apply config if domain is not specified.\n const { valid } = canUseUnaggregatedDomain(fieldDef, scaleType);\n if (valid) {\n return 'unaggregated';\n }\n }\n return domain;\n}\nexport function parseDomainForChannel(model, channel) {\n const scaleType = model.getScaleComponent(channel).get('type');\n const domain = normalizeUnaggregatedDomain(model.scaleDomain(channel), model.fieldDef(channel), scaleType, model.config.scale);\n if (domain !== model.scaleDomain(channel)) {\n model.specifiedScales[channel] = Object.assign({}, model.specifiedScales[channel], { domain });\n }\n // If channel is either X or Y then union them with X2 & Y2 if they exist\n if (channel === 'x' && model.channelHasField('x2')) {\n if (model.channelHasField('x')) {\n return parseSingleChannelDomain(scaleType, domain, model, 'x').concat(parseSingleChannelDomain(scaleType, domain, model, 'x2'));\n }\n else {\n return parseSingleChannelDomain(scaleType, domain, model, 'x2');\n }\n }\n else if (channel === 'y' && model.channelHasField('y2')) {\n if (model.channelHasField('y')) {\n return parseSingleChannelDomain(scaleType, domain, model, 'y').concat(parseSingleChannelDomain(scaleType, domain, model, 'y2'));\n }\n else {\n return parseSingleChannelDomain(scaleType, domain, model, 'y2');\n }\n }\n return parseSingleChannelDomain(scaleType, domain, model, channel);\n}\nfunction mapDomainToDataSignal(domain, type, timeUnit) {\n return domain.map(v => {\n const data = valueExpr(v, { timeUnit, type });\n return { signal: `{data: ${data}}` };\n });\n}\nfunction parseSingleChannelDomain(scaleType, domain, model, channel) {\n const fieldDef = model.fieldDef(channel);\n if (domain && domain !== 'unaggregated' && !isSelectionDomain(domain)) {\n // explicit value\n const { type, timeUnit } = fieldDef;\n if (type === 'temporal' || timeUnit) {\n return mapDomainToDataSignal(domain, type, timeUnit);\n }\n return [domain];\n }\n const stack = model.stack;\n if (stack && channel === stack.fieldChannel) {\n if (stack.offset === 'normalize') {\n return [[0, 1]];\n }\n const data = model.requestDataName(MAIN);\n return [\n {\n data,\n field: model.vgField(channel, { suffix: 'start' })\n },\n {\n data,\n field: model.vgField(channel, { suffix: 'end' })\n }\n ];\n }\n const sort = isScaleChannel(channel)\n ? domainSort(model, channel, scaleType)\n : undefined;\n if (domain === 'unaggregated') {\n const data = model.requestDataName(MAIN);\n const { field } = fieldDef;\n return [\n {\n data,\n field: vgField({ field, aggregate: 'min' })\n },\n {\n data,\n field: vgField({ field, aggregate: 'max' })\n }\n ];\n }\n else if (isBinning(fieldDef.bin)) {\n if (hasDiscreteDomain(scaleType)) {\n if (scaleType === 'bin-ordinal') {\n // we can omit the domain as it is inferred from the `bins` property\n return [];\n }\n // ordinal bin scale takes domain from bin_range, ordered by bin start\n // This is useful for both axis-based scale (x/y) and legend-based scale (other channels).\n return [\n {\n // If sort by aggregation of a specified sort field, we need to use RAW table,\n // so we can aggregate values for the scale independently from the main aggregation.\n data: util.isBoolean(sort) ? model.requestDataName(MAIN) : model.requestDataName(RAW),\n // Use range if we added it and the scale does not support computing a range as a signal.\n field: model.vgField(channel, binRequiresRange(fieldDef, channel) ? { binSuffix: 'range' } : {}),\n // we have to use a sort object if sort = true to make the sort correct by bin start\n sort: sort === true || !isObject(sort)\n ? {\n field: model.vgField(channel, {}),\n op: 'min' // min or max doesn't matter since we sort by the start of the bin range\n }\n : sort\n }\n ];\n }\n else {\n // continuous scales\n if (isBinning(fieldDef.bin)) {\n const signalName = model.getName(vgField(fieldDef, { suffix: 'bins' }));\n return [\n new SignalRefWrapper(() => {\n const signal = model.getSignalName(signalName);\n return `[${signal}.start, ${signal}.stop]`;\n })\n ];\n }\n else {\n return [\n {\n data: model.requestDataName(MAIN),\n field: model.vgField(channel, {})\n }\n ];\n }\n }\n }\n else if (sort) {\n return [\n {\n // If sort by aggregation of a specified sort field, we need to use RAW table,\n // so we can aggregate values for the scale independently from the main aggregation.\n data: util.isBoolean(sort) ? model.requestDataName(MAIN) : model.requestDataName(RAW),\n field: model.vgField(channel),\n sort: sort\n }\n ];\n }\n else {\n return [\n {\n data: model.requestDataName(MAIN),\n field: model.vgField(channel)\n }\n ];\n }\n}\nfunction normalizeSortField(sort, isStacked) {\n const { op, field, order } = sort;\n return Object.assign({ \n // Apply default op\n op: op || (isStacked ? 'sum' : DEFAULT_SORT_OP) }, (field ? { field: util.replacePathInField(field) } : {}), (order ? { order } : {}));\n}\nexport function domainSort(model, channel, scaleType) {\n if (!hasDiscreteDomain(scaleType)) {\n return undefined;\n }\n // save to cast as the only exception is the geojson type for shape, which would not generate a scale\n const fieldDef = model.fieldDef(channel);\n const sort = fieldDef.sort;\n // if the sort is specified with array, use the derived sort index field\n if (isSortArray(sort)) {\n return {\n op: 'min',\n field: sortArrayIndexField(fieldDef, channel),\n order: 'ascending'\n };\n }\n const isStacked = model.stack !== null;\n // Sorted based on an aggregate calculation over a specified sort field (only for ordinal scale)\n if (isSortField(sort)) {\n return normalizeSortField(sort, isStacked);\n }\n else if (isSortByEncoding(sort)) {\n const { encoding, order } = sort;\n const { aggregate, field } = model.fieldDef(encoding);\n const sortField = {\n op: aggregate,\n field,\n order\n };\n return normalizeSortField(sortField, isStacked);\n }\n else if (sort === 'descending') {\n return {\n op: 'min',\n field: model.vgField(channel),\n order: 'descending'\n };\n }\n else if (util.contains(['ascending', undefined /* default =ascending*/], sort)) {\n return true;\n }\n // sort == null\n return undefined;\n}\n/**\n * Determine if a scale can use unaggregated domain.\n * @return {Boolean} Returns true if all of the following conditions apply:\n * 1. `scale.domain` is `unaggregated`\n * 2. Aggregation function is not `count` or `sum`\n * 3. The scale is quantitative or time scale.\n */\nexport function canUseUnaggregatedDomain(fieldDef, scaleType) {\n const { aggregate, type } = fieldDef;\n if (!aggregate) {\n return {\n valid: false,\n reason: log.message.unaggregateDomainHasNoEffectForRawField(fieldDef)\n };\n }\n if (isString(aggregate) && !SHARED_DOMAIN_OP_INDEX[aggregate]) {\n return {\n valid: false,\n reason: log.message.unaggregateDomainWithNonSharedDomainOp(aggregate)\n };\n }\n if (type === 'quantitative') {\n if (scaleType === 'log') {\n return {\n valid: false,\n reason: log.message.unaggregatedDomainWithLogScale(fieldDef)\n };\n }\n }\n return { valid: true };\n}\n/**\n * Converts an array of domains to a single Vega scale domain.\n */\nexport function mergeDomains(domains) {\n const uniqueDomains = util.unique(domains.map(domain => {\n // ignore sort property when computing the unique domains\n if (isDataRefDomain(domain)) {\n const { sort: _s } = domain, domainWithoutSort = tslib_1.__rest(domain, [\"sort\"]);\n return domainWithoutSort;\n }\n return domain;\n }), util.hash);\n const sorts = util.unique(domains\n .map(d => {\n if (isDataRefDomain(d)) {\n const s = d.sort;\n if (s !== undefined && !util.isBoolean(s)) {\n if (s.op === 'count') {\n // let's make sure that if op is count, we don't use a field\n delete s.field;\n }\n if (s.order === 'ascending') {\n // drop order: ascending as it is the default\n delete s.order;\n }\n }\n return s;\n }\n return undefined;\n })\n .filter(s => s !== undefined), util.hash);\n if (uniqueDomains.length === 0) {\n return undefined;\n }\n else if (uniqueDomains.length === 1) {\n const domain = domains[0];\n if (isDataRefDomain(domain) && sorts.length > 0) {\n let sort = sorts[0];\n if (sorts.length > 1) {\n log.warn(log.message.MORE_THAN_ONE_SORT);\n sort = true;\n }\n return Object.assign({}, domain, { sort });\n }\n return domain;\n }\n // only keep simple sort properties that work with unioned domains\n const simpleSorts = util.unique(sorts.map(s => {\n if (util.isBoolean(s)) {\n return s;\n }\n if (s.op === 'count') {\n return s;\n }\n log.warn(log.message.domainSortDropped(s));\n return true;\n }), util.hash);\n let sort;\n if (simpleSorts.length === 1) {\n sort = simpleSorts[0];\n }\n else if (simpleSorts.length > 1) {\n log.warn(log.message.MORE_THAN_ONE_SORT);\n sort = true;\n }\n const allData = util.unique(domains.map(d => {\n if (isDataRefDomain(d)) {\n return d.data;\n }\n return null;\n }), x => x);\n if (allData.length === 1 && allData[0] !== null) {\n // create a union domain of different fields with a single data source\n const domain = Object.assign({ data: allData[0], fields: uniqueDomains.map(d => d.field) }, (sort ? { sort } : {}));\n return domain;\n }\n return Object.assign({ fields: uniqueDomains }, (sort ? { sort } : {}));\n}\n/**\n * Return a field if a scale single field.\n * Return `undefined` otherwise.\n *\n */\nexport function getFieldFromDomain(domain) {\n if (isDataRefDomain(domain) && isString(domain.field)) {\n return domain.field;\n }\n else if (isDataRefUnionedDomain(domain)) {\n let field;\n for (const nonUnionDomain of domain.fields) {\n if (isDataRefDomain(nonUnionDomain) && isString(nonUnionDomain.field)) {\n if (!field) {\n field = nonUnionDomain.field;\n }\n else if (field !== nonUnionDomain.field) {\n log.warn('Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect.');\n return field;\n }\n }\n }\n log.warn('Detected faceted independent scales that union domain of identical fields from different source detected. We will assume that this is the same field from a different fork of the same data source. However, if this is not case, the result view size maybe incorrect.');\n return field;\n }\n else if (isFieldRefUnionDomain(domain)) {\n log.warn('Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.');\n const field = domain.fields[0];\n return isString(field) ? field : undefined;\n }\n return undefined;\n}\nexport function assembleDomain(model, channel) {\n const scaleComponent = model.component.scales[channel];\n const domains = scaleComponent.domains.map(domain => {\n // Correct references to data as the original domain's data was determined\n // in parseScale, which happens before parseData. Thus the original data\n // reference can be incorrect.\n if (isDataRefDomain(domain)) {\n domain.data = model.lookupDataSource(domain.data);\n }\n return domain;\n });\n // domains is an array that has to be merged into a single vega domain\n return mergeDomains(domains);\n}\n//# sourceMappingURL=domain.js.map","import * as tslib_1 from \"tslib\";\nimport { keys } from '../../util';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { isConcatModel, isLayerModel, isRepeatModel } from '../model';\nimport { isRawSelectionDomain } from '../selection';\nimport { assembleSelectionScaleDomain } from '../selection/assemble';\nimport { assembleDomain } from './domain';\nexport function assembleScales(model) {\n if (isLayerModel(model) || isConcatModel(model) || isRepeatModel(model)) {\n // For concat / layer / repeat, include scales of children too\n return model.children.reduce((scales, child) => {\n return scales.concat(assembleScales(child));\n }, assembleScalesForModel(model));\n }\n else {\n // For facet, child scales would not be included in the parent's scope.\n // For unit, there is no child.\n return assembleScalesForModel(model);\n }\n}\nexport function assembleScalesForModel(model) {\n return keys(model.component.scales).reduce((scales, channel) => {\n const scaleComponent = model.component.scales[channel];\n if (scaleComponent.merged) {\n // Skipped merged scales\n return scales;\n }\n const scale = scaleComponent.combine();\n // need to separate const and non const object destruction\n let { domainRaw } = scale;\n const { name, type, domainRaw: _d, range: _r } = scale, otherScaleProps = tslib_1.__rest(scale, [\"name\", \"type\", \"domainRaw\", \"range\"]);\n const range = assembleScaleRange(scale.range, name, channel);\n // As scale parsing occurs before selection parsing, a temporary signal\n // is used for domainRaw. Here, we detect if this temporary signal\n // is set, and replace it with the correct domainRaw signal.\n // For more information, see isRawSelectionDomain in selection.ts.\n if (domainRaw && isRawSelectionDomain(domainRaw)) {\n domainRaw = assembleSelectionScaleDomain(model, domainRaw);\n }\n const domain = assembleDomain(model, channel);\n scales.push(Object.assign({ name,\n type }, (domain ? { domain } : {}), (domainRaw ? { domainRaw } : {}), { range: range }, otherScaleProps));\n return scales;\n }, []);\n}\nexport function assembleScaleRange(scaleRange, scaleName, channel) {\n // add signals to x/y range\n if (channel === 'x' || channel === 'y') {\n if (isVgRangeStep(scaleRange)) {\n // For x/y range step, use a signal created in layout assemble instead of a constant range step.\n return {\n step: { signal: scaleName + '_step' }\n };\n }\n }\n return scaleRange;\n}\n//# sourceMappingURL=assemble.js.map","import { isArray } from 'vega-util';\nimport { some } from '../../util';\nimport { Split } from '../split';\nexport class ScaleComponent extends Split {\n constructor(name, typeWithExplicit) {\n super({}, // no initial explicit property\n { name } // name as initial implicit property\n );\n this.merged = false;\n this.domains = [];\n this.setWithExplicit('type', typeWithExplicit);\n }\n /**\n * Whether the scale definitely includes zero in the domain\n */\n get domainDefinitelyIncludesZero() {\n if (this.get('zero') !== false) {\n return true;\n }\n const domains = this.domains;\n if (isArray(domains)) {\n return some(domains, d => isArray(d) && d.length === 2 && d[0] <= 0 && d[1] >= 0);\n }\n return false;\n }\n}\n//# sourceMappingURL=component.js.map","import { isArray, isNumber } from 'vega-util';\nimport { isBinning } from '../../bin';\nimport { COLOR, FILL, FILLOPACITY, OPACITY, POSITION_SCALE_CHANNELS, SCALE_CHANNELS, SHAPE, SIZE, STROKE, STROKEOPACITY, STROKEWIDTH, X, Y } from '../../channel';\nimport { vgField } from '../../channeldef';\nimport * as log from '../../log';\nimport { channelScalePropertyIncompatability, hasContinuousDomain, hasDiscreteDomain, isContinuousToDiscrete, isExtendedScheme, scaleTypeSupportProperty } from '../../scale';\nimport * as util from '../../util';\nimport { isSignalRef, isVgRangeStep } from '../../vega.schema';\nimport { SignalRefWrapper } from '../signal';\nimport { makeExplicit, makeImplicit } from '../split';\nexport const RANGE_PROPERTIES = ['range', 'rangeStep', 'scheme'];\nfunction getSizeType(channel) {\n return channel === 'x' ? 'width' : channel === 'y' ? 'height' : undefined;\n}\nexport function parseUnitScaleRange(model) {\n const localScaleComponents = model.component.scales;\n // use SCALE_CHANNELS instead of scales[channel] to ensure that x, y come first!\n SCALE_CHANNELS.forEach((channel) => {\n const localScaleCmpt = localScaleComponents[channel];\n if (!localScaleCmpt) {\n return;\n }\n const mergedScaleCmpt = model.getScaleComponent(channel);\n const specifiedScale = model.specifiedScales[channel];\n const fieldDef = model.fieldDef(channel);\n // Read if there is a specified width/height\n const sizeType = getSizeType(channel);\n let sizeSpecified = sizeType ? !!model.component.layoutSize.get(sizeType) : undefined;\n const scaleType = mergedScaleCmpt.get('type');\n // if autosize is fit, size cannot be data driven\n const rangeStep = util.contains(['point', 'band'], scaleType) || !!specifiedScale.rangeStep;\n if (sizeType && model.fit && !sizeSpecified && rangeStep) {\n log.warn(log.message.CANNOT_FIX_RANGE_STEP_WITH_FIT);\n sizeSpecified = true;\n }\n const xyRangeSteps = getXYRangeStep(model);\n const rangeWithExplicit = parseRangeForChannel(channel, model.getSignalName.bind(model), scaleType, fieldDef.type, specifiedScale, model.config, localScaleCmpt.get('zero'), model.mark, sizeSpecified, model.getName(sizeType), xyRangeSteps);\n localScaleCmpt.setWithExplicit('range', rangeWithExplicit);\n });\n}\nfunction getRangeStep(model, channel) {\n const scaleCmpt = model.getScaleComponent(channel);\n if (!scaleCmpt) {\n return undefined;\n }\n const scaleType = scaleCmpt.get('type');\n const fieldDef = model.fieldDef(channel);\n if (hasDiscreteDomain(scaleType)) {\n const range = scaleCmpt && scaleCmpt.get('range');\n if (range && isVgRangeStep(range) && isNumber(range.step)) {\n return range.step;\n // TODO: support the case without range step\n }\n }\n else if (fieldDef && fieldDef.bin && isBinning(fieldDef.bin)) {\n const binSignal = model.getName(vgField(fieldDef, { suffix: 'bins' }));\n // TODO: extract this to be range step signal\n const sizeType = getSizeType(channel);\n const sizeSignal = model.getName(sizeType);\n return new SignalRefWrapper(() => {\n const updatedName = model.getSignalName(binSignal);\n const binCount = `(${updatedName}.stop - ${updatedName}.start) / ${updatedName}.step`;\n return `${model.getSignalName(sizeSignal)} / (${binCount})`;\n });\n }\n return undefined;\n}\nfunction getXYRangeStep(model) {\n const steps = [];\n for (const channel of POSITION_SCALE_CHANNELS) {\n const step = getRangeStep(model, channel);\n if (step !== undefined) {\n steps.push(step);\n }\n }\n return steps;\n}\n/**\n * Return mixins that includes one of the range properties (range, rangeStep, scheme).\n */\nexport function parseRangeForChannel(channel, getSignalName, scaleType, type, specifiedScale, config, zero, mark, sizeSpecified, sizeSignal, xyRangeSteps) {\n const noRangeStep = sizeSpecified || specifiedScale.rangeStep === null;\n // Check if any of the range properties is specified.\n // If so, check if it is compatible and make sure that we only output one of the properties\n for (const property of RANGE_PROPERTIES) {\n if (specifiedScale[property] !== undefined) {\n const supportedByScaleType = scaleTypeSupportProperty(scaleType, property);\n const channelIncompatability = channelScalePropertyIncompatability(channel, property);\n if (!supportedByScaleType) {\n log.warn(log.message.scalePropertyNotWorkWithScaleType(scaleType, property, channel));\n }\n else if (channelIncompatability) {\n // channel\n log.warn(channelIncompatability);\n }\n else {\n switch (property) {\n case 'range':\n return makeExplicit(specifiedScale[property]);\n case 'scheme':\n return makeExplicit(parseScheme(specifiedScale[property]));\n case 'rangeStep': {\n const rangeStep = specifiedScale[property];\n if (rangeStep !== null) {\n if (!sizeSpecified) {\n return makeExplicit({ step: rangeStep });\n }\n else {\n // If top-level size is specified, we ignore specified rangeStep.\n log.warn(log.message.rangeStepDropped(channel));\n }\n }\n }\n }\n }\n }\n }\n return makeImplicit(defaultRange(channel, getSignalName, scaleType, type, config, zero, mark, sizeSignal, xyRangeSteps, noRangeStep, specifiedScale.domain));\n}\nfunction parseScheme(scheme) {\n if (isExtendedScheme(scheme)) {\n return Object.assign({ scheme: scheme.name }, util.omit(scheme, ['name']));\n }\n return { scheme: scheme };\n}\nfunction defaultRange(channel, getSignalName, scaleType, type, config, zero, mark, sizeSignal, xyRangeSteps, noRangeStep, domain) {\n switch (channel) {\n case X:\n case Y:\n if (util.contains(['point', 'band'], scaleType) && !noRangeStep) {\n if (channel === X && mark === 'text') {\n if (config.scale.textXRangeStep) {\n return { step: config.scale.textXRangeStep };\n }\n }\n else {\n if (config.scale.rangeStep) {\n return { step: config.scale.rangeStep };\n }\n }\n }\n // If range step is null, use zero to width or height.\n // Note that these range signals are temporary\n // as they can be merged and renamed.\n // (We do not have the right size signal here since parseLayoutSize() happens after parseScale().)\n // We will later replace these temporary names with\n // the final name in assembleScaleRange()\n if (channel === Y && hasContinuousDomain(scaleType)) {\n // For y continuous scale, we have to start from the height as the bottom part has the max value.\n return [SignalRefWrapper.fromName(getSignalName, sizeSignal), 0];\n }\n else {\n return [0, SignalRefWrapper.fromName(getSignalName, sizeSignal)];\n }\n case SIZE: {\n // TODO: support custom rangeMin, rangeMax\n const rangeMin = sizeRangeMin(mark, zero, config);\n const rangeMax = sizeRangeMax(mark, xyRangeSteps, config);\n if (isContinuousToDiscrete(scaleType)) {\n return interpolateRange(rangeMin, rangeMax, defaultContinuousToDiscreteCount(scaleType, config, domain, channel));\n }\n else {\n return [rangeMin, rangeMax];\n }\n }\n case STROKEWIDTH:\n // TODO: support custom rangeMin, rangeMax\n return [config.scale.minStrokeWidth, config.scale.maxStrokeWidth];\n case SHAPE:\n return 'symbol';\n case COLOR:\n case FILL:\n case STROKE:\n if (scaleType === 'ordinal') {\n // Only nominal data uses ordinal scale by default\n return type === 'nominal' ? 'category' : 'ordinal';\n }\n else {\n return mark === 'rect' || mark === 'geoshape' ? 'heatmap' : 'ramp';\n }\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // TODO: support custom rangeMin, rangeMax\n return [config.scale.minOpacity, config.scale.maxOpacity];\n }\n /* istanbul ignore next: should never reach here */\n throw new Error(`Scale range undefined for channel ${channel}`);\n}\nexport function defaultContinuousToDiscreteCount(scaleType, config, domain, channel) {\n switch (scaleType) {\n case 'quantile':\n return config.scale.quantileCount;\n case 'quantize':\n return config.scale.quantizeCount;\n case 'threshold':\n if (domain !== undefined && isArray(domain)) {\n return domain.length + 1;\n }\n else {\n log.warn(log.message.domainRequiredForThresholdScale(channel));\n // default threshold boundaries for threshold scale since domain has cardinality of 2\n return 3;\n }\n }\n}\n/**\n * Returns the linear interpolation of the range according to the cardinality\n *\n * @param rangeMin start of the range\n * @param rangeMax end of the range\n * @param cardinality number of values in the output range\n */\nexport function interpolateRange(rangeMin, rangeMax, cardinality) {\n // always return a signal since it's better to compute the sequence in Vega later\n const f = () => {\n const rMax = isSignalRef(rangeMax) ? rangeMax.signal : rangeMax;\n const step = `(${rMax} - ${rangeMin}) / (${cardinality} - 1)`;\n return `sequence(${rangeMin}, ${rangeMax} + ${step}, ${step})`;\n };\n if (isSignalRef(rangeMax)) {\n return new SignalRefWrapper(f);\n }\n else {\n return { signal: f() };\n }\n}\nfunction sizeRangeMin(mark, zero, config) {\n if (zero) {\n return 0;\n }\n switch (mark) {\n case 'bar':\n case 'tick':\n return config.scale.minBandSize;\n case 'line':\n case 'trail':\n case 'rule':\n return config.scale.minStrokeWidth;\n case 'text':\n return config.scale.minFontSize;\n case 'point':\n case 'square':\n case 'circle':\n return config.scale.minSize;\n }\n /* istanbul ignore next: should never reach here */\n // sizeRangeMin not implemented for the mark\n throw new Error(log.message.incompatibleChannel('size', mark));\n}\nexport const MAX_SIZE_RANGE_STEP_RATIO = 0.95;\nfunction sizeRangeMax(mark, xyRangeSteps, config) {\n const scaleConfig = config.scale;\n switch (mark) {\n case 'bar':\n case 'tick': {\n if (config.scale.maxBandSize !== undefined) {\n return config.scale.maxBandSize;\n }\n const min = minXYRangeStep(xyRangeSteps, config.scale);\n if (isNumber(min)) {\n return min - 1;\n }\n else {\n return new SignalRefWrapper(() => `${min.signal} - 1`);\n }\n }\n case 'line':\n case 'trail':\n case 'rule':\n return config.scale.maxStrokeWidth;\n case 'text':\n return config.scale.maxFontSize;\n case 'point':\n case 'square':\n case 'circle': {\n if (config.scale.maxSize) {\n return config.scale.maxSize;\n }\n const pointStep = minXYRangeStep(xyRangeSteps, scaleConfig);\n if (isNumber(pointStep)) {\n return Math.pow(MAX_SIZE_RANGE_STEP_RATIO * pointStep, 2);\n }\n else {\n return new SignalRefWrapper(() => `pow(${MAX_SIZE_RANGE_STEP_RATIO} * ${pointStep.signal}, 2)`);\n }\n }\n }\n /* istanbul ignore next: should never reach here */\n // sizeRangeMax not implemented for the mark\n throw new Error(log.message.incompatibleChannel('size', mark));\n}\n/**\n * @returns {number} Range step of x or y or minimum between the two if both are ordinal scale.\n */\nfunction minXYRangeStep(xyRangeSteps, scaleConfig) {\n if (xyRangeSteps.length > 0) {\n let min = Infinity;\n for (const step of xyRangeSteps) {\n if (isSignalRef(step)) {\n min = undefined;\n }\n else {\n if (min !== undefined && step < min) {\n min = step;\n }\n }\n }\n return min !== undefined\n ? min\n : new SignalRefWrapper(() => {\n const exprs = xyRangeSteps.map(e => (isSignalRef(e) ? e.signal : e));\n return `min(${exprs.join(', ')})`;\n });\n }\n if (scaleConfig.rangeStep) {\n return scaleConfig.rangeStep;\n }\n return 21; // FIXME: re-evaluate the default value here.\n}\n//# sourceMappingURL=range.js.map","import { isArray } from 'vega-util';\nimport { isBinned, isBinning, isBinParams } from '../../bin';\nimport { COLOR, FILL, STROKE, X, Y } from '../../channel';\nimport { vgField } from '../../channeldef';\nimport * as log from '../../log';\nimport { channelScalePropertyIncompatability, hasContinuousDomain, isContinuousToContinuous, isContinuousToDiscrete, ScaleType, scaleTypeSupportProperty } from '../../scale';\nimport * as util from '../../util';\nimport { contains, getFirstDefined, keys } from '../../util';\nimport { isUnitModel } from '../model';\nimport { mergeValuesWithExplicit, tieBreakByComparing } from '../split';\nimport { SignalRefWrapper } from './../signal';\nimport { parseUnitScaleRange } from './range';\nexport function parseScaleProperty(model, property) {\n if (isUnitModel(model)) {\n parseUnitScaleProperty(model, property);\n }\n else {\n parseNonUnitScaleProperty(model, property);\n }\n}\nfunction parseUnitScaleProperty(model, property) {\n const localScaleComponents = model.component.scales;\n keys(localScaleComponents).forEach((channel) => {\n const specifiedScale = model.specifiedScales[channel];\n const localScaleCmpt = localScaleComponents[channel];\n const mergedScaleCmpt = model.getScaleComponent(channel);\n const fieldDef = model.fieldDef(channel);\n const config = model.config;\n const specifiedValue = specifiedScale[property];\n const sType = mergedScaleCmpt.get('type');\n const supportedByScaleType = scaleTypeSupportProperty(sType, property);\n const channelIncompatability = channelScalePropertyIncompatability(channel, property);\n if (specifiedValue !== undefined) {\n // If there is a specified value, check if it is compatible with scale type and channel\n if (!supportedByScaleType) {\n log.warn(log.message.scalePropertyNotWorkWithScaleType(sType, property, channel));\n }\n else if (channelIncompatability) {\n // channel\n log.warn(channelIncompatability);\n }\n }\n if (supportedByScaleType && channelIncompatability === undefined) {\n if (specifiedValue !== undefined) {\n // copyKeyFromObject ensures type safety\n localScaleCmpt.copyKeyFromObject(property, specifiedScale);\n }\n else {\n const value = getDefaultValue(property, model, channel, fieldDef, mergedScaleCmpt.get('type'), mergedScaleCmpt.get('padding'), mergedScaleCmpt.get('paddingInner'), specifiedScale.domain, model.markDef, config);\n if (value !== undefined) {\n localScaleCmpt.set(property, value, false);\n }\n }\n }\n });\n}\n// Note: This method is used in Voyager.\nexport function getDefaultValue(property, model, channel, fieldDef, scaleType, scalePadding, scalePaddingInner, specifiedDomain, markDef, config) {\n const scaleConfig = config.scale;\n const { type, sort } = fieldDef;\n // If we have default rule-base, determine default value first\n switch (property) {\n case 'bins':\n return bins(model, fieldDef);\n case 'interpolate':\n return interpolate(channel, type);\n case 'nice':\n return nice(scaleType, channel, fieldDef);\n case 'padding':\n return padding(channel, scaleType, scaleConfig, fieldDef, markDef, config.bar);\n case 'paddingInner':\n return paddingInner(scalePadding, channel, markDef.type, scaleConfig);\n case 'paddingOuter':\n return paddingOuter(scalePadding, channel, scaleType, markDef.type, scalePaddingInner, scaleConfig);\n case 'reverse':\n return reverse(scaleType, sort);\n case 'zero':\n return zero(channel, fieldDef, specifiedDomain, markDef, scaleType);\n }\n // Otherwise, use scale config\n return scaleConfig[property];\n}\n// This method is here rather than in range.ts to avoid circular dependency.\nexport function parseScaleRange(model) {\n if (isUnitModel(model)) {\n parseUnitScaleRange(model);\n }\n else {\n parseNonUnitScaleProperty(model, 'range');\n }\n}\nexport function parseNonUnitScaleProperty(model, property) {\n const localScaleComponents = model.component.scales;\n for (const child of model.children) {\n if (property === 'range') {\n parseScaleRange(child);\n }\n else {\n parseScaleProperty(child, property);\n }\n }\n keys(localScaleComponents).forEach((channel) => {\n let valueWithExplicit;\n for (const child of model.children) {\n const childComponent = child.component.scales[channel];\n if (childComponent) {\n const childValueWithExplicit = childComponent.getWithExplicit(property);\n valueWithExplicit = mergeValuesWithExplicit(valueWithExplicit, childValueWithExplicit, property, 'scale', tieBreakByComparing((v1, v2) => {\n switch (property) {\n case 'range':\n // For range step, prefer larger step\n if (v1.step && v2.step) {\n return v1.step - v2.step;\n }\n return 0;\n // TODO: precedence rule for other properties\n }\n return 0;\n }));\n }\n }\n localScaleComponents[channel].setWithExplicit(property, valueWithExplicit);\n });\n}\nexport function bins(model, fieldDef) {\n const bin = fieldDef.bin;\n if (isBinning(bin)) {\n const signal = model.getName(vgField(fieldDef, { suffix: 'bins' }));\n return new SignalRefWrapper(() => {\n return model.getSignalName(signal);\n });\n }\n else if (isBinned(bin) && isBinParams(bin) && bin.step !== undefined) {\n // start and stop will be determined from the scale domain\n return {\n step: bin.step\n };\n }\n return undefined;\n}\nexport function interpolate(channel, type) {\n if (contains([COLOR, FILL, STROKE], channel) && type !== 'nominal') {\n return 'hcl';\n }\n return undefined;\n}\nexport function nice(scaleType, channel, fieldDef) {\n if (fieldDef.bin || util.contains([ScaleType.TIME, ScaleType.UTC], scaleType)) {\n return undefined;\n }\n return util.contains([X, Y], channel) ? true : undefined;\n}\nexport function padding(channel, scaleType, scaleConfig, fieldDef, markDef, barConfig) {\n if (util.contains([X, Y], channel)) {\n if (isContinuousToContinuous(scaleType)) {\n if (scaleConfig.continuousPadding !== undefined) {\n return scaleConfig.continuousPadding;\n }\n const { type, orient } = markDef;\n if (type === 'bar' && !fieldDef.bin) {\n if ((orient === 'vertical' && channel === 'x') || (orient === 'horizontal' && channel === 'y')) {\n return barConfig.continuousBandSize;\n }\n }\n }\n if (scaleType === ScaleType.POINT) {\n return scaleConfig.pointPadding;\n }\n }\n return undefined;\n}\nexport function paddingInner(paddingValue, channel, mark, scaleConfig) {\n if (paddingValue !== undefined) {\n // If user has already manually specified \"padding\", no need to add default paddingInner.\n return undefined;\n }\n if (util.contains([X, Y], channel)) {\n // Padding is only set for X and Y by default.\n // Basically it doesn't make sense to add padding for color and size.\n // paddingOuter would only be called if it's a band scale, just return the default for bandScale.\n const { bandPaddingInner, barBandPaddingInner, rectBandPaddingInner } = scaleConfig;\n return getFirstDefined(bandPaddingInner, mark === 'bar' ? barBandPaddingInner : rectBandPaddingInner);\n }\n return undefined;\n}\nexport function paddingOuter(paddingValue, channel, scaleType, mark, paddingInnerValue, scaleConfig) {\n if (paddingValue !== undefined) {\n // If user has already manually specified \"padding\", no need to add default paddingOuter.\n return undefined;\n }\n if (util.contains([X, Y], channel)) {\n // Padding is only set for X and Y by default.\n // Basically it doesn't make sense to add padding for color and size.\n if (scaleType === ScaleType.BAND) {\n const { bandPaddingOuter, barBandPaddingOuter, rectBandPaddingOuter } = scaleConfig;\n return getFirstDefined(bandPaddingOuter, mark === 'bar' ? barBandPaddingOuter : rectBandPaddingOuter, \n /* By default, paddingOuter is paddingInner / 2. The reason is that\n size (width/height) = step * (cardinality - paddingInner + 2 * paddingOuter).\n and we want the width/height to be integer by default.\n Note that step (by default) and cardinality are integers.) */\n paddingInnerValue / 2);\n }\n }\n return undefined;\n}\nexport function reverse(scaleType, sort) {\n if (hasContinuousDomain(scaleType) && sort === 'descending') {\n // For continuous domain scales, Vega does not support domain sort.\n // Thus, we reverse range instead if sort is descending\n return true;\n }\n return undefined;\n}\nexport function zero(channel, fieldDef, specifiedDomain, markDef, scaleType) {\n // If users explicitly provide a domain range, we should not augment zero as that will be unexpected.\n const hasCustomDomain = !!specifiedDomain && specifiedDomain !== 'unaggregated';\n if (hasCustomDomain) {\n if (hasContinuousDomain(scaleType)) {\n if (isArray(specifiedDomain)) {\n const first = specifiedDomain[0];\n const last = specifiedDomain[specifiedDomain.length - 1];\n if (first <= 0 && last >= 0) {\n // if the domain includes zero, make zero remains true\n return true;\n }\n }\n return false;\n }\n }\n // If there is no custom domain, return true only for the following cases:\n // 1) using quantitative field with size\n // While this can be either ratio or interval fields, our assumption is that\n // ratio are more common. However, if the scaleType is discretizing scale, we want to return\n // false so that range doesn't start at zero\n if (channel === 'size' && fieldDef.type === 'quantitative' && !isContinuousToDiscrete(scaleType)) {\n return true;\n }\n // 2) non-binned, quantitative x-scale or y-scale\n // (For binning, we should not include zero by default because binning are calculated without zero.)\n if (!fieldDef.bin && util.contains([X, Y], channel)) {\n const { orient, type } = markDef;\n if (contains(['bar', 'area', 'line', 'trail'], type)) {\n if ((orient === 'horizontal' && channel === 'y') || (orient === 'vertical' && channel === 'x')) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n//# sourceMappingURL=properties.js.map","import { isBinning } from '../../bin';\nimport { isColorChannel, isScaleChannel, rangeType } from '../../channel';\nimport * as log from '../../log';\nimport { channelSupportScaleType, scaleTypeSupportDataType } from '../../scale';\nimport * as util from '../../util';\n/**\n * Determine if there is a specified scale type and if it is appropriate,\n * or determine default type if type is unspecified or inappropriate.\n */\n// NOTE: CompassQL uses this method.\nexport function scaleType(specifiedScale, channel, fieldDef, mark) {\n const defaultScaleType = defaultType(channel, fieldDef, mark);\n const { type } = specifiedScale;\n if (!isScaleChannel(channel)) {\n // There is no scale for these channels\n return null;\n }\n if (type !== undefined) {\n // Check if explicitly specified scale type is supported by the channel\n if (!channelSupportScaleType(channel, type)) {\n log.warn(log.message.scaleTypeNotWorkWithChannel(channel, type, defaultScaleType));\n return defaultScaleType;\n }\n // Check if explicitly specified scale type is supported by the data type\n if (!scaleTypeSupportDataType(type, fieldDef.type)) {\n log.warn(log.message.scaleTypeNotWorkWithFieldDef(type, defaultScaleType));\n return defaultScaleType;\n }\n return type;\n }\n return defaultScaleType;\n}\n/**\n * Determine appropriate default scale type.\n */\n// NOTE: Voyager uses this method.\nfunction defaultType(channel, fieldDef, mark) {\n switch (fieldDef.type) {\n case 'nominal':\n case 'ordinal':\n if (isColorChannel(channel) || rangeType(channel) === 'discrete') {\n if (channel === 'shape' && fieldDef.type === 'ordinal') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'ordinal'));\n }\n return 'ordinal';\n }\n if (util.contains(['x', 'y'], channel)) {\n if (util.contains(['rect', 'bar', 'rule'], mark)) {\n // The rect/bar mark should fit into a band.\n // For rule, using band scale to make rule align with axis ticks better https://github.com/vega/vega-lite/issues/3429\n return 'band';\n }\n if (mark === 'bar') {\n return 'band';\n }\n }\n // Otherwise, use ordinal point scale so we can easily get center positions of the marks.\n return 'point';\n case 'temporal':\n if (isColorChannel(channel)) {\n return 'time';\n }\n else if (rangeType(channel) === 'discrete') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'temporal'));\n // TODO: consider using quantize (equivalent to binning) once we have it\n return 'ordinal';\n }\n return 'time';\n case 'quantitative':\n if (isColorChannel(channel)) {\n if (isBinning(fieldDef.bin)) {\n return 'bin-ordinal';\n }\n return 'linear';\n }\n else if (rangeType(channel) === 'discrete') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'quantitative'));\n // TODO: consider using quantize (equivalent to binning) once we have it\n return 'ordinal';\n }\n return 'linear';\n case 'geojson':\n return undefined;\n }\n /* istanbul ignore next: should never reach this */\n throw new Error(log.message.invalidFieldType(fieldDef.type));\n}\n//# sourceMappingURL=type.js.map","import { SCALE_CHANNELS, SHAPE } from '../../channel';\nimport { hasConditionalFieldDef, isFieldDef } from '../../channeldef';\nimport { GEOSHAPE } from '../../mark';\nimport { NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES, scaleCompatible, scaleTypePrecedence } from '../../scale';\nimport { GEOJSON } from '../../type';\nimport { keys } from '../../util';\nimport { isUnitModel } from '../model';\nimport { defaultScaleResolve } from '../resolve';\nimport { mergeValuesWithExplicit, tieBreakByComparing } from '../split';\nimport { ScaleComponent } from './component';\nimport { parseScaleDomain } from './domain';\nimport { parseScaleProperty, parseScaleRange } from './properties';\nimport { scaleType } from './type';\nexport function parseScales(model) {\n parseScaleCore(model);\n parseScaleDomain(model);\n for (const prop of NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES) {\n parseScaleProperty(model, prop);\n }\n // range depends on zero\n parseScaleRange(model);\n}\nexport function parseScaleCore(model) {\n if (isUnitModel(model)) {\n model.component.scales = parseUnitScaleCore(model);\n }\n else {\n model.component.scales = parseNonUnitScaleCore(model);\n }\n}\n/**\n * Parse scales for all channels of a model.\n */\nfunction parseUnitScaleCore(model) {\n const { encoding, mark } = model;\n return SCALE_CHANNELS.reduce((scaleComponents, channel) => {\n let fieldDef;\n let specifiedScale;\n const channelDef = encoding[channel];\n // Don't generate scale for shape of geoshape\n if (isFieldDef(channelDef) && mark === GEOSHAPE && channel === SHAPE && channelDef.type === GEOJSON) {\n return scaleComponents;\n }\n if (isFieldDef(channelDef)) {\n fieldDef = channelDef;\n specifiedScale = channelDef.scale;\n }\n else if (hasConditionalFieldDef(channelDef)) {\n fieldDef = channelDef.condition;\n specifiedScale = channelDef.condition['scale']; // We use ['scale'] since we know that channel here has scale for sure\n }\n if (fieldDef && specifiedScale !== null && specifiedScale !== false) {\n specifiedScale = specifiedScale || {};\n const sType = scaleType(specifiedScale, channel, fieldDef, mark);\n scaleComponents[channel] = new ScaleComponent(model.scaleName(channel + '', true), {\n value: sType,\n explicit: specifiedScale.type === sType\n });\n }\n return scaleComponents;\n }, {});\n}\nconst scaleTypeTieBreaker = tieBreakByComparing((st1, st2) => scaleTypePrecedence(st1) - scaleTypePrecedence(st2));\nfunction parseNonUnitScaleCore(model) {\n const scaleComponents = (model.component.scales = {});\n const scaleTypeWithExplicitIndex = {};\n const resolve = model.component.resolve;\n // Parse each child scale and determine if a particular channel can be merged.\n for (const child of model.children) {\n parseScaleCore(child);\n // Instead of always merging right away -- check if it is compatible to merge first!\n keys(child.component.scales).forEach((channel) => {\n // if resolve is undefined, set default first\n resolve.scale[channel] = resolve.scale[channel] || defaultScaleResolve(channel, model);\n if (resolve.scale[channel] === 'shared') {\n const explicitScaleType = scaleTypeWithExplicitIndex[channel];\n const childScaleType = child.component.scales[channel].getWithExplicit('type');\n if (explicitScaleType) {\n if (scaleCompatible(explicitScaleType.value, childScaleType.value)) {\n // merge scale component if type are compatible\n scaleTypeWithExplicitIndex[channel] = mergeValuesWithExplicit(explicitScaleType, childScaleType, 'type', 'scale', scaleTypeTieBreaker);\n }\n else {\n // Otherwise, update conflicting channel to be independent\n resolve.scale[channel] = 'independent';\n // Remove from the index so they don't get merged\n delete scaleTypeWithExplicitIndex[channel];\n }\n }\n else {\n scaleTypeWithExplicitIndex[channel] = childScaleType;\n }\n }\n });\n }\n // Merge each channel listed in the index\n keys(scaleTypeWithExplicitIndex).forEach((channel) => {\n // Create new merged scale component\n const name = model.scaleName(channel, true);\n const typeWithExplicit = scaleTypeWithExplicitIndex[channel];\n scaleComponents[channel] = new ScaleComponent(name, typeWithExplicit);\n // rename each child and mark them as merged\n for (const child of model.children) {\n const childScale = child.component.scales[channel];\n if (childScale) {\n child.renameScale(childScale.get('name'), name);\n childScale.merged = true;\n }\n }\n });\n return scaleComponents;\n}\n//# sourceMappingURL=parse.js.map","import * as tslib_1 from \"tslib\";\nimport { isString } from 'vega-util';\nimport { FACET_CHANNELS, isChannel, isScaleChannel } from '../channel';\nimport { getFieldDef, vgField } from '../channeldef';\nimport { forEach, reduce } from '../encoding';\nimport * as log from '../log';\nimport { hasDiscreteDomain } from '../scale';\nimport { isFacetSpec, isLayerSpec, isUnitSpec } from '../spec';\nimport { extractCompositionLayout } from '../spec/base';\nimport { extractTitleConfig } from '../title';\nimport { normalizeTransform } from '../transform';\nimport { contains, duplicate, keys, varName } from '../util';\nimport { isVgRangeStep } from '../vega.schema';\nimport { assembleAxes } from './axis/assemble';\nimport { assembleHeaderGroups, assembleLayoutTitleBand, assembleTitleGroup } from './header/assemble';\nimport { HEADER_CHANNELS } from './header/component';\nimport { sizeExpr } from './layoutsize/assemble';\nimport { assembleLegends } from './legend/assemble';\nimport { parseLegend } from './legend/parse';\nimport { assembleProjections } from './projection/assemble';\nimport { parseProjection } from './projection/parse';\nimport { assembleScales } from './scale/assemble';\nimport { assembleDomain, getFieldFromDomain } from './scale/domain';\nimport { parseScales } from './scale/parse';\nimport { Split } from './split';\nexport class NameMap {\n constructor() {\n this.nameMap = {};\n }\n rename(oldName, newName) {\n this.nameMap[oldName] = newName;\n }\n has(name) {\n return this.nameMap[name] !== undefined;\n }\n get(name) {\n // If the name appears in the _nameMap, we need to read its new name.\n // We have to loop over the dict just in case the new name also gets renamed.\n while (this.nameMap[name] && name !== this.nameMap[name]) {\n name = this.nameMap[name];\n }\n return name;\n }\n}\n/*\n We use type guards instead of `instanceof` as `instanceof` makes\n different parts of the compiler depend on the actual implementation of\n the model classes, which in turn depend on different parts of the compiler.\n Thus, `instanceof` leads to circular dependency problems.\n\n On the other hand, type guards only make different parts of the compiler\n depend on the type of the model classes, but not the actual implementation.\n*/\nexport function isUnitModel(model) {\n return model && model.type === 'unit';\n}\nexport function isFacetModel(model) {\n return model && model.type === 'facet';\n}\nexport function isRepeatModel(model) {\n return model && model.type === 'repeat';\n}\nexport function isConcatModel(model) {\n return model && model.type === 'concat';\n}\nexport function isLayerModel(model) {\n return model && model.type === 'layer';\n}\nexport class Model {\n constructor(spec, type, parent, parentGivenName, config, repeater, resolve, view) {\n this.type = type;\n this.parent = parent;\n this.config = config;\n this.repeater = repeater;\n this.view = view;\n this.children = [];\n /**\n * Corrects the data references in marks after assemble.\n */\n this.correctDataNames = (mark) => {\n // TODO: make this correct\n // for normal data references\n if (mark.from && mark.from.data) {\n mark.from.data = this.lookupDataSource(mark.from.data);\n }\n // for access to facet data\n if (mark.from && mark.from.facet && mark.from.facet.data) {\n mark.from.facet.data = this.lookupDataSource(mark.from.facet.data);\n }\n return mark;\n };\n this.parent = parent;\n this.config = config;\n this.repeater = repeater;\n // If name is not provided, always use parent's givenName to avoid name conflicts.\n this.name = spec.name || parentGivenName;\n this.title = isString(spec.title) ? { text: spec.title } : spec.title;\n // Shared name maps\n this.scaleNameMap = parent ? parent.scaleNameMap : new NameMap();\n this.projectionNameMap = parent ? parent.projectionNameMap : new NameMap();\n this.signalNameMap = parent ? parent.signalNameMap : new NameMap();\n this.data = spec.data;\n this.description = spec.description;\n this.transforms = normalizeTransform(spec.transform || []);\n this.layout = isUnitSpec(spec) || isLayerSpec(spec) ? {} : extractCompositionLayout(spec, type, config);\n this.component = {\n data: {\n sources: parent ? parent.component.data.sources : [],\n outputNodes: parent ? parent.component.data.outputNodes : {},\n outputNodeRefCounts: parent ? parent.component.data.outputNodeRefCounts : {},\n // data is faceted if the spec is a facet spec or the parent has faceted data and no data is defined\n isFaceted: isFacetSpec(spec) || (parent && parent.component.data.isFaceted && !spec.data)\n },\n layoutSize: new Split(),\n layoutHeaders: { row: {}, column: {}, facet: {} },\n mark: null,\n resolve: Object.assign({ scale: {}, axis: {}, legend: {} }, (resolve ? duplicate(resolve) : {})),\n selection: null,\n scales: null,\n projection: null,\n axes: {},\n legends: {}\n };\n }\n get width() {\n return this.getSizeSignalRef('width');\n }\n get height() {\n return this.getSizeSignalRef('height');\n }\n initSize(size) {\n const { width, height } = size;\n if (width) {\n this.component.layoutSize.set('width', width, true);\n }\n if (height) {\n this.component.layoutSize.set('height', height, true);\n }\n }\n parse() {\n this.parseScale();\n this.parseLayoutSize(); // depends on scale\n this.renameTopLevelLayoutSizeSignal();\n this.parseSelections();\n this.parseProjection();\n this.parseData(); // (pathorder) depends on markDef; selection filters depend on parsed selections; depends on projection because some transforms require the finalized projection name.\n this.parseAxesAndHeaders(); // depends on scale and layout size\n this.parseLegends(); // depends on scale, markDef\n this.parseMarkGroup(); // depends on data name, scale, layout size, axisGroup, and children's scale, axis, legend and mark.\n }\n parseScale() {\n parseScales(this);\n }\n parseProjection() {\n parseProjection(this);\n }\n /**\n * Rename top-level spec's size to be just width / height, ignoring model name.\n * This essentially merges the top-level spec's width/height signals with the width/height signals\n * to help us reduce redundant signals declaration.\n */\n renameTopLevelLayoutSizeSignal() {\n if (this.getName('width') !== 'width') {\n this.renameSignal(this.getName('width'), 'width');\n }\n if (this.getName('height') !== 'height') {\n this.renameSignal(this.getName('height'), 'height');\n }\n }\n parseLegends() {\n parseLegend(this);\n }\n assembleGroupStyle() {\n if (this.type === 'unit' || this.type === 'layer') {\n return (this.view && this.view.style) || 'cell';\n }\n return undefined;\n }\n assembleEncodeFromView(view) {\n // Exclude \"style\"\n const { style: _ } = view, baseView = tslib_1.__rest(view, [\"style\"]);\n const e = {};\n for (const property in baseView) {\n if (baseView.hasOwnProperty(property)) {\n const value = baseView[property];\n if (value !== undefined) {\n e[property] = { value };\n }\n }\n }\n return e;\n }\n assembleGroupEncodeEntry(isTopLevel) {\n let encodeEntry = undefined;\n if (this.view) {\n encodeEntry = this.assembleEncodeFromView(this.view);\n }\n if (!isTopLevel) {\n // For top-level spec, we can set the global width and height signal to adjust the group size.\n // For other child specs, we have to manually set width and height in the encode entry.\n if (this.type === 'unit' || this.type === 'layer') {\n return Object.assign({ width: this.getSizeSignalRef('width'), height: this.getSizeSignalRef('height') }, (encodeEntry || {}));\n }\n }\n return encodeEntry;\n }\n assembleLayout() {\n if (!this.layout) {\n return undefined;\n }\n const _a = this.layout, { spacing } = _a, layout = tslib_1.__rest(_a, [\"spacing\"]);\n const { component, config } = this;\n const titleBand = assembleLayoutTitleBand(component.layoutHeaders, config);\n return Object.assign({ padding: spacing }, this.assembleDefaultLayout(), layout, (titleBand ? { titleBand } : {}));\n }\n assembleDefaultLayout() {\n return {};\n }\n assembleHeaderMarks() {\n const { layoutHeaders } = this.component;\n let headerMarks = [];\n for (const channel of FACET_CHANNELS) {\n if (layoutHeaders[channel].title) {\n headerMarks.push(assembleTitleGroup(this, channel));\n }\n }\n for (const channel of HEADER_CHANNELS) {\n headerMarks = headerMarks.concat(assembleHeaderGroups(this, channel));\n }\n return headerMarks;\n }\n assembleAxes() {\n return assembleAxes(this.component.axes, this.config);\n }\n assembleLegends() {\n return assembleLegends(this);\n }\n assembleProjections() {\n return assembleProjections(this);\n }\n assembleTitle() {\n const _a = this.title || {}, { encoding } = _a, titleNoEncoding = tslib_1.__rest(_a, [\"encoding\"]);\n const title = Object.assign({}, extractTitleConfig(this.config.title).nonMark, titleNoEncoding, (encoding ? { encode: { update: encoding } } : {}));\n if (title.text) {\n if (contains(['unit', 'layer'], this.type)) {\n // Unit/Layer\n if (contains(['middle', undefined], title.anchor)) {\n title.frame = title.frame || 'group';\n }\n }\n else {\n // composition with Vega layout\n // Set title = \"start\" by default for composition as \"middle\" does not look nice\n // https://github.com/vega/vega/issues/960#issuecomment-471360328\n title.anchor = title.anchor || 'start';\n }\n return keys(title).length > 0 ? title : undefined;\n }\n return undefined;\n }\n /**\n * Assemble the mark group for this model. We accept optional `signals` so that we can include concat top-level signals with the top-level model's local signals.\n */\n assembleGroup(signals = []) {\n const group = {};\n signals = signals.concat(this.assembleSignals());\n if (signals.length > 0) {\n group.signals = signals;\n }\n const layout = this.assembleLayout();\n if (layout) {\n group.layout = layout;\n }\n group.marks = [].concat(this.assembleHeaderMarks(), this.assembleMarks());\n // Only include scales if this spec is top-level or if parent is facet.\n // (Otherwise, it will be merged with upper-level's scope.)\n const scales = !this.parent || isFacetModel(this.parent) ? assembleScales(this) : [];\n if (scales.length > 0) {\n group.scales = scales;\n }\n const axes = this.assembleAxes();\n if (axes.length > 0) {\n group.axes = axes;\n }\n const legends = this.assembleLegends();\n if (legends.length > 0) {\n group.legends = legends;\n }\n return group;\n }\n hasDescendantWithFieldOnChannel(channel) {\n for (const child of this.children) {\n if (isUnitModel(child)) {\n if (child.channelHasField(channel)) {\n return true;\n }\n }\n else {\n if (child.hasDescendantWithFieldOnChannel(channel)) {\n return true;\n }\n }\n }\n return false;\n }\n getName(text) {\n return varName((this.name ? this.name + '_' : '') + text);\n }\n /**\n * Request a data source name for the given data source type and mark that data source as required. This method should be called in parse, so that all used data source can be correctly instantiated in assembleData().\n */\n requestDataName(name) {\n const fullName = this.getName(name);\n // Increase ref count. This is critical because otherwise we won't create a data source.\n // We also increase the ref counts on OutputNode.getSource() calls.\n const refCounts = this.component.data.outputNodeRefCounts;\n refCounts[fullName] = (refCounts[fullName] || 0) + 1;\n return fullName;\n }\n getSizeSignalRef(sizeType) {\n if (isFacetModel(this.parent)) {\n const channel = sizeType === 'width' ? 'x' : 'y';\n const scaleComponent = this.component.scales[channel];\n if (scaleComponent && !scaleComponent.merged) {\n // independent scale\n const type = scaleComponent.get('type');\n const range = scaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n const scaleName = scaleComponent.get('name');\n const domain = assembleDomain(this, channel);\n const field = getFieldFromDomain(domain);\n if (field) {\n const fieldRef = vgField({ aggregate: 'distinct', field }, { expr: 'datum' });\n return {\n signal: sizeExpr(scaleName, scaleComponent, fieldRef)\n };\n }\n else {\n log.warn('Unknown field for ${channel}. Cannot calculate view size.');\n return null;\n }\n }\n }\n }\n return {\n signal: this.signalNameMap.get(this.getName(sizeType))\n };\n }\n /**\n * Lookup the name of the datasource for an output node. You probably want to call this in assemble.\n */\n lookupDataSource(name) {\n const node = this.component.data.outputNodes[name];\n if (!node) {\n // Name not found in map so let's just return what we got.\n // This can happen if we already have the correct name.\n return name;\n }\n return node.getSource();\n }\n getSignalName(oldSignalName) {\n return this.signalNameMap.get(oldSignalName);\n }\n renameSignal(oldName, newName) {\n this.signalNameMap.rename(oldName, newName);\n }\n renameScale(oldName, newName) {\n this.scaleNameMap.rename(oldName, newName);\n }\n renameProjection(oldName, newName) {\n this.projectionNameMap.rename(oldName, newName);\n }\n /**\n * @return scale name for a given channel after the scale has been parsed and named.\n */\n scaleName(originalScaleName, parse) {\n if (parse) {\n // During the parse phase always return a value\n // No need to refer to rename map because a scale can't be renamed\n // before it has the original name.\n return this.getName(originalScaleName);\n }\n // If there is a scale for the channel, it should either\n // be in the scale component or exist in the name map\n if (\n // If there is a scale for the channel, there should be a local scale component for it\n (isChannel(originalScaleName) && isScaleChannel(originalScaleName) && this.component.scales[originalScaleName]) ||\n // in the scale name map (the scale get merged by its parent)\n this.scaleNameMap.has(this.getName(originalScaleName))) {\n return this.scaleNameMap.get(this.getName(originalScaleName));\n }\n return undefined;\n }\n /**\n * @return projection name after the projection has been parsed and named.\n */\n projectionName(parse) {\n if (parse) {\n // During the parse phase always return a value\n // No need to refer to rename map because a projection can't be renamed\n // before it has the original name.\n return this.getName('projection');\n }\n if ((this.component.projection && !this.component.projection.merged) ||\n this.projectionNameMap.has(this.getName('projection'))) {\n return this.projectionNameMap.get(this.getName('projection'));\n }\n return undefined;\n }\n /**\n * Traverse a model's hierarchy to get the scale component for a particular channel.\n */\n getScaleComponent(channel) {\n /* istanbul ignore next: This is warning for debugging test */\n if (!this.component.scales) {\n throw new Error('getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().');\n }\n const localScaleComponent = this.component.scales[channel];\n if (localScaleComponent && !localScaleComponent.merged) {\n return localScaleComponent;\n }\n return this.parent ? this.parent.getScaleComponent(channel) : undefined;\n }\n /**\n * Traverse a model's hierarchy to get a particular selection component.\n */\n getSelectionComponent(variableName, origName) {\n let sel = this.component.selection[variableName];\n if (!sel && this.parent) {\n sel = this.parent.getSelectionComponent(variableName, origName);\n }\n if (!sel) {\n throw new Error(log.message.selectionNotFound(origName));\n }\n return sel;\n }\n}\n/** Abstract class for UnitModel and FacetModel. Both of which can contain fieldDefs as a part of its own specification. */\nexport class ModelWithField extends Model {\n /** Get \"field\" reference for Vega */\n vgField(channel, opt = {}) {\n const fieldDef = this.fieldDef(channel);\n if (!fieldDef) {\n return undefined;\n }\n return vgField(fieldDef, opt);\n }\n reduceFieldDef(f, init, t) {\n return reduce(this.getMapping(), (acc, cd, c) => {\n const fieldDef = getFieldDef(cd);\n if (fieldDef) {\n return f(acc, fieldDef, c);\n }\n return acc;\n }, init, t);\n }\n forEachFieldDef(f, t) {\n forEach(this.getMapping(), (cd, c) => {\n const fieldDef = getFieldDef(cd);\n if (fieldDef) {\n f(fieldDef, c);\n }\n }, t);\n }\n}\n//# sourceMappingURL=model.js.map","import { isScaleChannel } from '../../channel';\nimport { vgField as fieldRef } from '../../channeldef';\nimport { isPathMark } from '../../mark';\nimport { hasContinuousDomain } from '../../scale';\nimport { keys } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport class FilterInvalidNode extends DataFlowNode {\n constructor(parent, fieldDefs) {\n super(parent);\n this.fieldDefs = fieldDefs;\n }\n clone() {\n return new FilterInvalidNode(null, Object.assign({}, this.fieldDefs));\n }\n static make(parent, model) {\n const { config, mark } = model;\n if (config.invalidValues !== 'filter') {\n return null;\n }\n const filter = model.reduceFieldDef((aggregator, fieldDef, channel) => {\n const scaleComponent = isScaleChannel(channel) && model.getScaleComponent(channel);\n if (scaleComponent) {\n const scaleType = scaleComponent.get('type');\n // While discrete domain scales can handle invalid values, continuous scales can't.\n // Thus, for non-path marks, we have to filter null for scales with continuous domains.\n // (For path marks, we will use \"defined\" property and skip these values instead.)\n if (hasContinuousDomain(scaleType) && !fieldDef.aggregate && !isPathMark(mark)) {\n aggregator[fieldDef.field] = fieldDef;\n }\n }\n return aggregator;\n }, {});\n if (!keys(filter).length) {\n return null;\n }\n return new FilterInvalidNode(parent, filter);\n }\n get filter() {\n return this.fieldDefs;\n }\n // create the VgTransforms for each of the filtered fields\n assemble() {\n const filters = keys(this.filter).reduce((vegaFilters, field) => {\n const fieldDef = this.fieldDefs[field];\n const ref = fieldRef(fieldDef, { expr: 'datum' });\n if (fieldDef !== null) {\n vegaFilters.push(`${ref} !== null`);\n vegaFilters.push(`!isNaN(${ref})`);\n }\n return vegaFilters;\n }, []);\n return filters.length > 0\n ? {\n type: 'filter',\n expr: filters.join(' && ')\n }\n : null;\n }\n}\n//# sourceMappingURL=filterinvalid.js.map","import { duplicate, hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for flatten transform nodes\n */\nexport class FlattenTransformNode extends DataFlowNode {\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n this.transform = duplicate(transform); // duplicate to prevent side effects\n const { flatten, as = [] } = this.transform;\n this.transform.as = flatten.map((f, i) => as[i] || f);\n }\n clone() {\n return new FlattenTransformNode(this.parent, duplicate(this.transform));\n }\n producedFields() {\n return new Set(this.transform.as);\n }\n hash() {\n return `FlattenTransform ${hash(this.transform)}`;\n }\n assemble() {\n const { flatten: fields, as } = this.transform;\n const result = {\n type: 'flatten',\n fields,\n as\n };\n return result;\n }\n}\n//# sourceMappingURL=flatten.js.map","import { duplicate, hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for flatten transform nodes\n */\nexport class FoldTransformNode extends DataFlowNode {\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n this.transform = duplicate(transform); // duplicate to prevent side effects\n const specifiedAs = this.transform.as || [undefined, undefined];\n this.transform.as = [specifiedAs[0] || 'key', specifiedAs[1] || 'value'];\n }\n clone() {\n return new FoldTransformNode(null, duplicate(this.transform));\n }\n producedFields() {\n return new Set(this.transform.as);\n }\n hash() {\n return `FoldTransform ${hash(this.transform)}`;\n }\n assemble() {\n const { fold, as } = this.transform;\n const result = {\n type: 'fold',\n fields: fold,\n as\n };\n return result;\n }\n}\n//# sourceMappingURL=fold.js.map","import { LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2, SHAPE } from '../../channel';\nimport { isValueDef } from '../../channeldef';\nimport { GEOJSON } from '../../type';\nimport { duplicate } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport class GeoJSONNode extends DataFlowNode {\n constructor(parent, fields, geojson, signal) {\n super(parent);\n this.fields = fields;\n this.geojson = geojson;\n this.signal = signal;\n }\n clone() {\n return new GeoJSONNode(null, duplicate(this.fields), this.geojson, this.signal);\n }\n static parseAll(parent, model) {\n if (model.component.projection && !model.component.projection.isFit) {\n return parent;\n }\n let geoJsonCounter = 0;\n [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]].forEach((coordinates) => {\n const pair = coordinates.map(channel => model.channelHasField(channel)\n ? model.fieldDef(channel).field\n : isValueDef(model.encoding[channel])\n ? { expr: model.encoding[channel].value + '' }\n : undefined);\n if (pair[0] || pair[1]) {\n parent = new GeoJSONNode(parent, pair, null, model.getName(`geojson_${geoJsonCounter++}`));\n }\n });\n if (model.channelHasField(SHAPE)) {\n const fieldDef = model.fieldDef(SHAPE);\n if (fieldDef.type === GEOJSON) {\n parent = new GeoJSONNode(parent, null, fieldDef.field, model.getName(`geojson_${geoJsonCounter++}`));\n }\n }\n return parent;\n }\n assemble() {\n return Object.assign({ type: 'geojson' }, (this.fields ? { fields: this.fields } : {}), (this.geojson ? { geojson: this.geojson } : {}), { signal: this.signal });\n }\n}\n//# sourceMappingURL=geojson.js.map","import { LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2 } from '../../channel';\nimport { isValueDef } from '../../channeldef';\nimport { duplicate } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport class GeoPointNode extends DataFlowNode {\n constructor(parent, projection, fields, as) {\n super(parent);\n this.projection = projection;\n this.fields = fields;\n this.as = as;\n }\n clone() {\n return new GeoPointNode(null, this.projection, duplicate(this.fields), duplicate(this.as));\n }\n static parseAll(parent, model) {\n if (!model.projectionName()) {\n return parent;\n }\n [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]].forEach((coordinates) => {\n const pair = coordinates.map(channel => model.channelHasField(channel)\n ? model.fieldDef(channel).field\n : isValueDef(model.encoding[channel])\n ? { expr: model.encoding[channel].value + '' }\n : undefined);\n const suffix = coordinates[0] === LONGITUDE2 ? '2' : '';\n if (pair[0] || pair[1]) {\n parent = new GeoPointNode(parent, model.projectionName(), pair, [\n model.getName('x' + suffix),\n model.getName('y' + suffix)\n ]);\n }\n });\n return parent;\n }\n assemble() {\n return {\n type: 'geopoint',\n projection: this.projection,\n fields: this.fields,\n as: this.as\n };\n }\n}\n//# sourceMappingURL=geopoint.js.map","import { DataFlowNode } from './dataflow';\nexport class GraticuleNode extends DataFlowNode {\n constructor(parent, params) {\n super(parent);\n this.params = params;\n }\n clone() {\n return new GraticuleNode(null, this.params);\n }\n assemble() {\n return Object.assign({ type: 'graticule' }, (this.params === true ? {} : this.params));\n }\n}\n//# sourceMappingURL=graticule.js.map","import { SELECTION_ID } from '../../selection';\nimport { DataFlowNode } from './dataflow';\nexport class IdentifierNode extends DataFlowNode {\n clone() {\n return new IdentifierNode(null);\n }\n constructor(parent) {\n super(parent);\n }\n producedFields() {\n return new Set([SELECTION_ID]);\n }\n hash() {\n return 'Identifier';\n }\n assemble() {\n return { type: 'identifier', as: SELECTION_ID };\n }\n}\n//# sourceMappingURL=identifier.js.map","import { isNumber } from 'vega-util';\nimport { isBinned, isBinning } from '../../bin';\nimport { isFieldDef } from '../../channeldef';\nimport * as log from '../../log';\nimport { hasDiscreteDomain, ScaleType } from '../../scale';\nimport { getFirstDefined } from '../../util';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { getMarkConfig } from '../common';\nimport * as mixins from './mixins';\nimport * as ref from './valueref';\nexport const bar = {\n vgMark: 'rect',\n encodeEntry: (model) => {\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), barPosition(model, 'x'), barPosition(model, 'y'));\n }\n};\nfunction barPosition(model, channel) {\n const { config, encoding, markDef } = model;\n const orient = markDef.orient;\n const sizeDef = encoding.size;\n const isBarLength = channel === 'x' ? orient === 'horizontal' : orient === 'vertical';\n const channel2 = channel === 'x' ? 'x2' : 'y2';\n const fieldDef = encoding[channel];\n const fieldDef2 = encoding[channel2];\n const scaleName = model.scaleName(channel);\n const scale = model.getScaleComponent(channel);\n const spacing = getFirstDefined(markDef.binSpacing, config.bar.binSpacing);\n const reverse = scale ? scale.get('reverse') : undefined;\n const mark = 'bar';\n // x, x2, and width -- we must specify two of these in all conditions\n if (isFieldDef(fieldDef) && isBinned(fieldDef.bin)) {\n return mixins.binPosition({ fieldDef, fieldDef2, channel, mark, scaleName, spacing, reverse });\n }\n else if (isBarLength || fieldDef2) {\n return Object.assign({}, mixins.pointPosition(channel, model, 'zeroOrMin'), mixins.pointPosition2(model, 'zeroOrMin', channel2));\n }\n else {\n const sizeChannel = channel === 'x' ? 'width' : 'height';\n // vertical\n if (isFieldDef(fieldDef)) {\n const scaleType = scale.get('type');\n if (isBinning(fieldDef.bin) && !sizeDef && !hasDiscreteDomain(scaleType)) {\n return mixins.binPosition({ fieldDef, channel, scaleName, mark, spacing, reverse });\n }\n else {\n if (scaleType === ScaleType.BAND) {\n return mixins.bandPosition(fieldDef, channel, model, defaultSizeRef(markDef, sizeChannel, scaleName, scale, config));\n }\n }\n }\n // sized bin, normal point-ordinal axis, quantitative x-axis, or no x\n return mixins.centeredPointPositionWithSize(channel, model, ref.mid(model[sizeChannel]), defaultSizeRef(markDef, sizeChannel, scaleName, scale, config));\n }\n}\nfunction defaultSizeRef(markDef, sizeChannel, scaleName, scale, config) {\n const markPropOrConfig = getFirstDefined(markDef[sizeChannel], markDef.size, getMarkConfig('size', markDef, config, { vgChannel: sizeChannel }));\n if (markPropOrConfig !== undefined) {\n return { value: markPropOrConfig };\n }\n if (scale) {\n const scaleType = scale.get('type');\n if (scaleType === 'point' || scaleType === 'band') {\n if (config.bar.discreteBandSize !== undefined) {\n return { value: config.bar.discreteBandSize };\n }\n if (scaleType === ScaleType.POINT) {\n const scaleRange = scale.get('range');\n if (isVgRangeStep(scaleRange) && isNumber(scaleRange.step)) {\n return { value: scaleRange.step - 1 };\n }\n log.warn(log.message.BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL);\n }\n else {\n // BAND\n return ref.bandRef(scaleName);\n }\n }\n else {\n // continuous scale\n return { value: config.bar.continuousBandSize };\n }\n }\n // No Scale\n const value = getFirstDefined(\n // No scale is like discrete bar (with one item)\n config.bar.discreteBandSize, config.scale.rangeStep ? config.scale.rangeStep - 1 : undefined, \n // If somehow default rangeStep is set to null or undefined, use 20 as back up\n 20);\n return { value };\n}\n//# sourceMappingURL=bar.js.map","import * as mixins from './mixins';\nimport * as ref from './valueref';\nfunction encodeEntry(model, fixedShape) {\n const { config, width, height } = model;\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'include', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width)), mixins.pointPosition('y', model, ref.mid(height)), mixins.nonPosition('size', model), shapeMixins(model, config, fixedShape));\n}\nexport function shapeMixins(model, config, fixedShape) {\n if (fixedShape) {\n return { shape: { value: fixedShape } };\n }\n return mixins.nonPosition('shape', model);\n}\nexport const point = {\n vgMark: 'symbol',\n encodeEntry: (model) => {\n return encodeEntry(model);\n }\n};\nexport const circle = {\n vgMark: 'symbol',\n encodeEntry: (model) => {\n return encodeEntry(model, 'circle');\n }\n};\nexport const square = {\n vgMark: 'symbol',\n encodeEntry: (model) => {\n return encodeEntry(model, 'square');\n }\n};\n//# sourceMappingURL=point.js.map","import { isBinned, isBinning } from '../../bin';\nimport { isFieldDef } from '../../channeldef';\nimport * as log from '../../log';\nimport { RECT } from '../../mark';\nimport { hasDiscreteDomain, ScaleType } from '../../scale';\nimport * as mixins from './mixins';\nexport const rect = {\n vgMark: 'rect',\n encodeEntry: (model) => {\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), rectPosition(model, 'x'), rectPosition(model, 'y'));\n }\n};\nexport function rectPosition(model, channel) {\n const channel2 = channel === 'x' ? 'x2' : 'y2';\n const fieldDef = model.encoding[channel];\n const fieldDef2 = model.encoding[channel2];\n const scale = model.getScaleComponent(channel);\n const scaleType = scale ? scale.get('type') : undefined;\n const scaleName = model.scaleName(channel);\n if (isFieldDef(fieldDef) && (isBinning(fieldDef.bin) || isBinned(fieldDef.bin))) {\n return mixins.binPosition({\n fieldDef,\n fieldDef2,\n channel,\n mark: 'rect',\n scaleName,\n spacing: 0,\n reverse: scale.get('reverse')\n });\n }\n else if (isFieldDef(fieldDef) && scale && hasDiscreteDomain(scaleType)) {\n /* istanbul ignore else */\n if (scaleType === ScaleType.BAND) {\n return mixins.bandPosition(fieldDef, channel, model);\n }\n else {\n // We don't support rect mark with point/ordinal scale\n throw new Error(log.message.scaleTypeNotWorkWithMark(RECT, scaleType));\n }\n }\n else {\n // continuous scale or no scale\n return Object.assign({}, mixins.pointPosition(channel, model, 'zeroOrMax'), mixins.pointPosition2(model, 'zeroOrMin', channel2));\n }\n}\n//# sourceMappingURL=rect.js.map","import { getFirstDefined } from '../../util';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { getMarkConfig } from '../common';\nimport * as mixins from './mixins';\nimport * as ref from './valueref';\nexport const tick = {\n vgMark: 'rect',\n encodeEntry: (model) => {\n const { config, markDef, width, height } = model;\n const orient = markDef.orient;\n const vgSizeChannel = orient === 'horizontal' ? 'width' : 'height';\n const vgThicknessChannel = orient === 'horizontal' ? 'height' : 'width';\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width), 'xc'), mixins.pointPosition('y', model, ref.mid(height), 'yc'), mixins.nonPosition('size', model, {\n defaultValue: defaultSize(model),\n vgChannel: vgSizeChannel\n }), { [vgThicknessChannel]: { value: getFirstDefined(markDef.thickness, config.tick.thickness) } });\n }\n};\nfunction defaultSize(model) {\n const { config, markDef } = model;\n const { orient } = markDef;\n const vgSizeChannel = orient === 'horizontal' ? 'width' : 'height';\n const scale = model.getScaleComponent(orient === 'horizontal' ? 'x' : 'y');\n const markPropOrConfig = getFirstDefined(markDef[vgSizeChannel], markDef.size, getMarkConfig('size', markDef, config, { vgChannel: vgSizeChannel }), config.tick.bandSize);\n if (markPropOrConfig !== undefined) {\n return markPropOrConfig;\n }\n else {\n const scaleRange = scale ? scale.get('range') : undefined;\n const rangeStep = scaleRange && isVgRangeStep(scaleRange) ? scaleRange.step : config.scale.rangeStep;\n if (typeof rangeStep !== 'number') {\n // FIXME consolidate this log\n throw new Error('Function does not handle non-numeric rangeStep');\n }\n return (rangeStep * 3) / 4;\n }\n}\n//# sourceMappingURL=tick.js.map","import { isArray } from 'vega-util';\nimport { getTypedFieldDef, isFieldDef, isValueDef, vgField } from '../../channeldef';\nimport { MAIN } from '../../data';\nimport { isAggregate } from '../../encoding';\nimport { AREA, isPathMark, LINE, TRAIL } from '../../mark';\nimport { isSortField } from '../../sort';\nimport { contains, getFirstDefined, isNullOrFalse, keys } from '../../util';\nimport { getMarkConfig, getStyles, sortParams } from '../common';\nimport { area } from './area';\nimport { bar } from './bar';\nimport { geoshape } from './geoshape';\nimport { line, trail } from './line';\nimport { circle, point, square } from './point';\nimport { rect } from './rect';\nimport { rule } from './rule';\nimport { text } from './text';\nimport { tick } from './tick';\nconst markCompiler = {\n area,\n bar,\n circle,\n geoshape,\n line,\n point,\n rect,\n rule,\n square,\n text,\n tick,\n trail\n};\nexport function parseMarkGroups(model) {\n if (contains([LINE, AREA, TRAIL], model.mark)) {\n return parsePathMark(model);\n }\n else {\n return getMarkGroups(model);\n }\n}\nconst FACETED_PATH_PREFIX = 'faceted_path_';\nfunction parsePathMark(model) {\n const details = pathGroupingFields(model.mark, model.encoding);\n const pathMarks = getMarkGroups(model, {\n // If has subfacet for line/area group, need to use faceted data from below.\n fromPrefix: details.length > 0 ? FACETED_PATH_PREFIX : ''\n });\n if (details.length > 0) {\n // have level of details - need to facet line into subgroups\n // TODO: for non-stacked plot, map order to zindex. (Maybe rename order for layer to zindex?)\n return [\n {\n name: model.getName('pathgroup'),\n type: 'group',\n from: {\n facet: {\n name: FACETED_PATH_PREFIX + model.requestDataName(MAIN),\n data: model.requestDataName(MAIN),\n groupby: details\n }\n },\n encode: {\n update: {\n width: { field: { group: 'width' } },\n height: { field: { group: 'height' } }\n }\n },\n marks: pathMarks\n }\n ];\n }\n else {\n return pathMarks;\n }\n}\nexport function getSort(model) {\n const { encoding, stack, mark, markDef, config } = model;\n const order = encoding.order;\n if ((!isArray(order) && isValueDef(order) && isNullOrFalse(order.value)) ||\n ((!order && isNullOrFalse(markDef.order)) || isNullOrFalse(getMarkConfig('order', markDef, config)))) {\n return undefined;\n }\n else if ((isArray(order) || isFieldDef(order)) && !stack) {\n // Sort by the order field if it is specified and the field is not stacked. (For stacked field, order specify stack order.)\n return sortParams(order, { expr: 'datum' });\n }\n else if (isPathMark(mark)) {\n // For both line and area, we sort values based on dimension by default\n const dimensionChannelDef = encoding[markDef.orient === 'horizontal' ? 'y' : 'x'];\n if (isFieldDef(dimensionChannelDef)) {\n const s = dimensionChannelDef.sort;\n const sortField = isSortField(s)\n ? vgField({\n // FIXME: this op might not already exist?\n // FIXME: what if dimensionChannel (x or y) contains custom domain?\n aggregate: isAggregate(model.encoding) ? s.op : undefined,\n field: s.field\n }, { expr: 'datum' })\n : vgField(dimensionChannelDef, {\n // For stack with imputation, we only have bin_mid\n binSuffix: model.stack && model.stack.impute ? 'mid' : undefined,\n expr: 'datum'\n });\n return {\n field: sortField,\n order: 'descending'\n };\n }\n return undefined;\n }\n return undefined;\n}\nfunction getMarkGroups(model, opt = { fromPrefix: '' }) {\n const mark = model.mark;\n const clip = getFirstDefined(model.markDef.clip, scaleClip(model), projectionClip(model));\n const style = getStyles(model.markDef);\n const key = model.encoding.key;\n const sort = getSort(model);\n const postEncodingTransform = markCompiler[mark].postEncodingTransform\n ? markCompiler[mark].postEncodingTransform(model)\n : null;\n return [\n Object.assign({ name: model.getName('marks'), type: markCompiler[mark].vgMark }, (clip ? { clip: true } : {}), (style ? { style } : {}), (key ? { key: { field: key.field } } : {}), (sort ? { sort } : {}), { from: { data: opt.fromPrefix + model.requestDataName(MAIN) }, encode: {\n update: markCompiler[mark].encodeEntry(model)\n } }, (postEncodingTransform\n ? {\n transform: postEncodingTransform\n }\n : {}))\n ];\n}\n/**\n * Returns list of path grouping fields\n * that the model's spec contains.\n */\nexport function pathGroupingFields(mark, encoding) {\n return keys(encoding).reduce((details, channel) => {\n switch (channel) {\n // x, y, x2, y2, lat, long, lat1, long2, order, tooltip, href, cursor should not cause lines to group\n case 'x':\n case 'y':\n case 'order':\n case 'href':\n case 'x2':\n case 'y2':\n // falls through\n case 'latitude':\n case 'longitude':\n case 'latitude2':\n case 'longitude2':\n // TODO: case 'cursor':\n // text, shape, shouldn't be a part of line/trail/area [falls through]\n case 'text':\n case 'shape':\n // falls through\n // tooltip fields should not be added to group by [falls through]\n case 'tooltip':\n return details;\n case 'detail':\n case 'key': {\n const channelDef = encoding[channel];\n if (isArray(channelDef) || isFieldDef(channelDef)) {\n (isArray(channelDef) ? channelDef : [channelDef]).forEach(fieldDef => {\n if (!fieldDef.aggregate) {\n details.push(vgField(fieldDef, {}));\n }\n });\n }\n return details;\n }\n case 'size':\n if (mark === 'trail') {\n // For trail, size should not group trail lines.\n return details;\n }\n // For line, it should group lines.\n // falls through\n case 'color':\n case 'fill':\n case 'stroke':\n case 'opacity':\n case 'fillOpacity':\n case 'strokeOpacity':\n case 'strokeWidth': {\n // TODO strokeDashOffset:\n // falls through\n const fieldDef = getTypedFieldDef(encoding[channel]);\n if (fieldDef && !fieldDef.aggregate) {\n details.push(vgField(fieldDef, {}));\n }\n return details;\n }\n default:\n throw new Error(`Bug: Channel ${channel} unimplemented for line mark`);\n }\n }, []);\n}\n/**\n * If scales are bound to interval selections, we want to automatically clip\n * marks to account for panning/zooming interactions. We identify bound scales\n * by the domainRaw property, which gets added during scale parsing.\n */\nfunction scaleClip(model) {\n const xScale = model.getScaleComponent('x');\n const yScale = model.getScaleComponent('y');\n return (xScale && xScale.get('domainRaw')) || (yScale && yScale.get('domainRaw')) ? true : undefined;\n}\n/**\n * If we use a custom projection with auto-fitting to the geodata extent,\n * we need to clip to ensure the chart size doesn't explode.\n */\nfunction projectionClip(model) {\n const projection = model.component.projection;\n return projection && !projection.isFit ? true : undefined;\n}\n//# sourceMappingURL=mark.js.map","import * as mixins from './mixins';\nexport const area = {\n vgMark: 'area',\n encodeEntry: (model) => {\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'include' }), mixins.pointPosition('x', model, 'zeroOrMin'), mixins.pointPosition('y', model, 'zeroOrMin'), mixins.pointPosition2(model, 'zeroOrMin', model.markDef.orient === 'horizontal' ? 'x2' : 'y2'), mixins.defined(model));\n }\n};\n//# sourceMappingURL=area.js.map","import { isFieldDef, vgField } from '../../channeldef';\nimport { GEOJSON } from '../../type';\nimport * as mixins from './mixins';\nexport const geoshape = {\n vgMark: 'shape',\n encodeEntry: (model) => {\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }));\n },\n postEncodingTransform: (model) => {\n const { encoding } = model;\n const shapeDef = encoding.shape;\n const transform = Object.assign({ type: 'geoshape', projection: model.projectionName() }, (shapeDef && isFieldDef(shapeDef) && shapeDef.type === GEOJSON\n ? { field: vgField(shapeDef, { expr: 'datum' }) }\n : {}));\n return [transform];\n }\n};\n//# sourceMappingURL=geoshape.js.map","import * as mixins from './mixins';\nimport * as ref from './valueref';\nexport const line = {\n vgMark: 'line',\n encodeEntry: (model) => {\n const { width, height } = model;\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width)), mixins.pointPosition('y', model, ref.mid(height)), mixins.nonPosition('size', model, {\n vgChannel: 'strokeWidth' // VL's line size is strokeWidth\n }), mixins.defined(model));\n }\n};\nexport const trail = {\n vgMark: 'trail',\n encodeEntry: (model) => {\n const { width, height } = model;\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'include', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width)), mixins.pointPosition('y', model, ref.mid(height)), mixins.nonPosition('size', model), mixins.defined(model));\n }\n};\n//# sourceMappingURL=line.js.map","import * as mixins from './mixins';\nimport * as ref from './valueref';\nexport const rule = {\n vgMark: 'rule',\n encodeEntry: (model) => {\n const { markDef, width, height } = model;\n const orient = markDef.orient;\n if (!model.encoding.x && !model.encoding.y && !model.encoding.latitude && !model.encoding.longitude) {\n // Show nothing if we have none of x, y, lat, and long.\n return {};\n }\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), mixins.pointPosition('x', model, orient === 'horizontal' ? 'zeroOrMin' : ref.mid(width)), mixins.pointPosition('y', model, orient === 'vertical' ? 'zeroOrMin' : ref.mid(height)), (orient !== 'vertical' ? mixins.pointPosition2(model, 'zeroOrMax', 'x2') : {}), (orient !== 'horizontal' ? mixins.pointPosition2(model, 'zeroOrMax', 'y2') : {}), mixins.nonPosition('size', model, {\n vgChannel: 'strokeWidth' // VL's rule size is strokeWidth\n }));\n }\n};\n//# sourceMappingURL=rule.js.map","import { getMarkConfig } from '../common';\nimport * as mixins from './mixins';\nimport * as ref from './valueref';\nexport const text = {\n vgMark: 'text',\n encodeEntry: (model) => {\n const { config, encoding, width, height } = model;\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width)), mixins.pointPosition('y', model, ref.mid(height)), mixins.text(model), mixins.nonPosition('size', model, {\n vgChannel: 'fontSize' // VL's text size is fontSize\n }), mixins.valueIfDefined('align', align(model.markDef, encoding, config)), mixins.valueIfDefined('baseline', baseline(model.markDef, encoding, config)));\n }\n};\nfunction align(markDef, encoding, config) {\n const a = markDef.align || getMarkConfig('align', markDef, config);\n if (a === undefined) {\n return 'center';\n }\n // If there is a config, Vega-parser will process this already.\n return undefined;\n}\nfunction baseline(markDef, encoding, config) {\n const b = markDef.baseline || getMarkConfig('baseline', markDef, config);\n if (b === undefined) {\n return 'middle';\n }\n // If there is a config, Vega-parser will process this already.\n return undefined;\n}\n//# sourceMappingURL=text.js.map","import { isFieldDef } from '../../channeldef';\nimport { isImputeSequence } from '../../transform';\nimport { duplicate, hash } from '../../util';\nimport { pathGroupingFields } from '../mark/mark';\nimport { DataFlowNode } from './dataflow';\nexport class ImputeNode extends DataFlowNode {\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n }\n clone() {\n return new ImputeNode(null, duplicate(this.transform));\n }\n producedFields() {\n return new Set([this.transform.impute]);\n }\n processSequence(keyvals) {\n const { start = 0, stop, step } = keyvals;\n const result = [start, stop, ...(step ? [step] : [])].join(',');\n return { signal: `sequence(${result})` };\n }\n static makeFromTransform(parent, imputeTransform) {\n return new ImputeNode(parent, imputeTransform);\n }\n static makeFromEncoding(parent, model) {\n const encoding = model.encoding;\n const xDef = encoding.x;\n const yDef = encoding.y;\n if (isFieldDef(xDef) && isFieldDef(yDef)) {\n const imputedChannel = xDef.impute ? xDef : yDef.impute ? yDef : undefined;\n if (imputedChannel === undefined) {\n return undefined;\n }\n const keyChannel = xDef.impute ? yDef : yDef.impute ? xDef : undefined;\n const { method, value, frame, keyvals } = imputedChannel.impute;\n const groupbyFields = pathGroupingFields(model.mark, encoding);\n return new ImputeNode(parent, Object.assign({ impute: imputedChannel.field, key: keyChannel.field }, (method ? { method } : {}), (value !== undefined ? { value } : {}), (frame ? { frame } : {}), (keyvals !== undefined ? { keyvals } : {}), (groupbyFields.length ? { groupby: groupbyFields } : {})));\n }\n return null;\n }\n hash() {\n return `Impute ${hash(this.transform)}`;\n }\n assemble() {\n const { impute, key, keyvals, method, groupby, value, frame = [null, null] } = this.transform;\n const initialImpute = Object.assign({ type: 'impute', field: impute, key }, (keyvals ? { keyvals: isImputeSequence(keyvals) ? this.processSequence(keyvals) : keyvals } : {}), { method: 'value' }, (groupby ? { groupby } : {}), { value: null });\n let setImputedField;\n if (method && method !== 'value') {\n const deriveNewField = Object.assign({ type: 'window', as: [`imputed_${impute}_value`], ops: [method], fields: [impute], frame, ignorePeers: false }, (groupby ? { groupby } : {}));\n const replaceOriginal = {\n type: 'formula',\n expr: `datum.${impute} === null ? datum.imputed_${impute}_value : datum.${impute}`,\n as: impute\n };\n setImputedField = [deriveNewField, replaceOriginal];\n }\n else {\n const replaceWithValue = {\n type: 'formula',\n expr: `datum.${impute} === null ? ${value} : datum.${impute}`,\n as: impute\n };\n setImputedField = [replaceWithValue];\n }\n return [initialImpute, ...setImputedField];\n }\n}\n//# sourceMappingURL=impute.js.map","import { Split } from '../split';\n/**\n * Class to track interesting properties (see https://15721.courses.cs.cmu.edu/spring2016/papers/graefe-ieee1995.pdf)\n * about how fields have been parsed or whether they have been derived in a transform. We use this to not parse the\n * same field again (or differently).\n */\nexport class AncestorParse extends Split {\n constructor(explicit = {}, implicit = {}, parseNothing = false) {\n super(explicit, implicit);\n this.explicit = explicit;\n this.implicit = implicit;\n this.parseNothing = parseNothing;\n }\n clone() {\n const clone = super.clone();\n clone.parseNothing = this.parseNothing;\n return clone;\n }\n}\n//# sourceMappingURL=index.js.map","import { isString } from 'vega-util';\nimport * as log from '../../log';\nimport { duplicate, hash } from '../../util';\nimport { DataFlowNode, OutputNode } from './dataflow';\nimport { findSource } from './parse';\nimport { SourceNode } from './source';\nexport class LookupNode extends DataFlowNode {\n constructor(parent, transform, secondary) {\n super(parent);\n this.transform = transform;\n this.secondary = secondary;\n }\n clone() {\n return new LookupNode(null, duplicate(this.transform), this.secondary);\n }\n static make(parent, model, transform, counter) {\n const sources = model.component.data.sources;\n let fromSource = findSource(transform.from.data, sources);\n if (!fromSource) {\n fromSource = new SourceNode(transform.from.data);\n sources.push(fromSource);\n }\n const fromOutputName = model.getName(`lookup_${counter}`);\n const fromOutputNode = new OutputNode(fromSource, fromOutputName, 'lookup', model.component.data.outputNodeRefCounts);\n model.component.data.outputNodes[fromOutputName] = fromOutputNode;\n return new LookupNode(parent, transform, fromOutputNode.getSource());\n }\n producedFields() {\n return new Set(this.transform.from.fields || (this.transform.as instanceof Array ? this.transform.as : [this.transform.as]));\n }\n hash() {\n return `Lookup ${hash({ transform: this.transform, secondary: this.secondary })}`;\n }\n assemble() {\n let foreign;\n if (this.transform.from.fields) {\n // lookup a few fields and add create a flat output\n foreign = Object.assign({ values: this.transform.from.fields }, (this.transform.as ? { as: this.transform.as instanceof Array ? this.transform.as : [this.transform.as] } : {}));\n }\n else {\n // lookup full record and nest it\n let asName = this.transform.as;\n if (!isString(asName)) {\n log.warn(log.message.NO_FIELDS_NEEDS_AS);\n asName = '_lookup';\n }\n foreign = {\n as: [asName]\n };\n }\n return Object.assign({ type: 'lookup', from: this.secondary, key: this.transform.from.key, fields: [this.transform.lookup] }, foreign, (this.transform.default ? { default: this.transform.default } : {}));\n }\n}\n//# sourceMappingURL=lookup.js.map","import { duplicate, hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for the sample transform nodes\n */\nexport class SampleTransformNode extends DataFlowNode {\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n }\n clone() {\n return new SampleTransformNode(null, duplicate(this.transform));\n }\n hash() {\n return `SampleTransform ${hash(this.transform)}`;\n }\n assemble() {\n return {\n type: 'sample',\n size: this.transform.sample\n };\n }\n}\n//# sourceMappingURL=sample.js.map","import { DataFlowNode } from './dataflow';\nexport class SequenceNode extends DataFlowNode {\n constructor(parent, params) {\n super(parent);\n this.params = params;\n }\n clone() {\n return new SequenceNode(null, this.params);\n }\n assemble() {\n return Object.assign({ type: 'sequence' }, this.params);\n }\n}\n//# sourceMappingURL=sequence.js.map","import { isUrlData } from '../../data';\nimport { AggregateNode } from './aggregate';\nimport { BinNode } from './bin';\nimport { CalculateNode } from './calculate';\nimport { OutputNode } from './dataflow';\nimport { FacetNode } from './facet';\nimport { FilterNode } from './filter';\nimport { FilterInvalidNode } from './filterinvalid';\nimport { FlattenTransformNode } from './flatten';\nimport { FoldTransformNode } from './fold';\nimport { ParseNode } from './formatparse';\nimport { GeoJSONNode } from './geojson';\nimport { GeoPointNode } from './geopoint';\nimport { GraticuleNode } from './graticule';\nimport { IdentifierNode } from './identifier';\nimport { ImputeNode } from './impute';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nimport { LookupNode } from './lookup';\nimport { SampleTransformNode } from './sample';\nimport { SequenceNode } from './sequence';\nimport { SourceNode } from './source';\nimport { StackNode } from './stack';\nimport { TimeUnitNode } from './timeunit';\nimport { WindowTransformNode } from './window';\nfunction makeWalkTree(data) {\n // to name datasources\n let datasetIndex = 0;\n /**\n * Recursively walk down the tree.\n */\n function walkTree(node, dataSource) {\n if (node instanceof SourceNode) {\n // If the source is a named data source or a data source with values, we need\n // to put it in a different data source. Otherwise, Vega may override the data.\n if (!node.isGenerator && !isUrlData(node.data)) {\n data.push(dataSource);\n const newData = {\n name: null,\n source: dataSource.name,\n transform: []\n };\n dataSource = newData;\n }\n }\n if (node instanceof ParseNode) {\n if (node.parent instanceof SourceNode && !dataSource.source) {\n // If node's parent is a root source and the data source does not refer to another data source, use normal format parse\n dataSource.format = Object.assign({}, (dataSource.format || {}), { parse: node.assembleFormatParse() });\n // add calculates for all nested fields\n dataSource.transform.push(...node.assembleTransforms(true));\n }\n else {\n // Otherwise use Vega expression to parse\n dataSource.transform.push(...node.assembleTransforms());\n }\n }\n if (node instanceof FacetNode) {\n if (!dataSource.name) {\n dataSource.name = `data_${datasetIndex++}`;\n }\n if (!dataSource.source || dataSource.transform.length > 0) {\n data.push(dataSource);\n node.data = dataSource.name;\n }\n else {\n node.data = dataSource.source;\n }\n node.assemble().forEach(d => data.push(d));\n // break here because the rest of the tree has to be taken care of by the facet.\n return;\n }\n if (node instanceof GraticuleNode ||\n node instanceof SequenceNode ||\n node instanceof FilterInvalidNode ||\n node instanceof FilterNode ||\n node instanceof CalculateNode ||\n node instanceof GeoPointNode ||\n node instanceof GeoJSONNode ||\n node instanceof AggregateNode ||\n node instanceof LookupNode ||\n node instanceof WindowTransformNode ||\n node instanceof JoinAggregateTransformNode ||\n node instanceof FoldTransformNode ||\n node instanceof FlattenTransformNode ||\n node instanceof IdentifierNode ||\n node instanceof SampleTransformNode) {\n dataSource.transform.push(node.assemble());\n }\n if (node instanceof BinNode ||\n node instanceof TimeUnitNode ||\n node instanceof ImputeNode ||\n node instanceof StackNode) {\n dataSource.transform = dataSource.transform.concat(node.assemble());\n }\n if (node instanceof OutputNode) {\n if (dataSource.source && dataSource.transform.length === 0) {\n node.setSource(dataSource.source);\n }\n else if (node.parent instanceof OutputNode) {\n // Note that an output node may be required but we still do not assemble a\n // separate data source for it.\n node.setSource(dataSource.name);\n }\n else {\n if (!dataSource.name) {\n dataSource.name = `data_${datasetIndex++}`;\n }\n // Here we set the name of the datasource we generated. From now on\n // other assemblers can use it.\n node.setSource(dataSource.name);\n // if this node has more than one child, we will add a datasource automatically\n if (node.numChildren() === 1) {\n data.push(dataSource);\n const newData = {\n name: null,\n source: dataSource.name,\n transform: []\n };\n dataSource = newData;\n }\n }\n }\n switch (node.numChildren()) {\n case 0:\n // done\n if (node instanceof OutputNode && (!dataSource.source || dataSource.transform.length > 0)) {\n // do not push empty datasources that are simply references\n data.push(dataSource);\n }\n break;\n case 1:\n walkTree(node.children[0], dataSource);\n break;\n default: {\n if (!dataSource.name) {\n dataSource.name = `data_${datasetIndex++}`;\n }\n let source = dataSource.name;\n if (!dataSource.source || dataSource.transform.length > 0) {\n data.push(dataSource);\n }\n else {\n source = dataSource.source;\n }\n node.children.forEach(child => {\n const newData = {\n name: null,\n source: source,\n transform: []\n };\n walkTree(child, newData);\n });\n break;\n }\n }\n }\n return walkTree;\n}\n/**\n * Assemble data sources that are derived from faceted data.\n */\nexport function assembleFacetData(root) {\n const data = [];\n const walkTree = makeWalkTree(data);\n root.children.forEach(child => walkTree(child, {\n source: root.name,\n name: null,\n transform: []\n }));\n return data;\n}\n/**\n * Create Vega Data array from a given compiled model and append all of them to the given array\n *\n * @param model\n * @param data array\n * @return modified data array\n */\nexport function assembleRootData(dataComponent, datasets) {\n const data = [];\n // dataComponent.sources.forEach(debug);\n // draw(dataComponent.sources);\n const walkTree = makeWalkTree(data);\n let sourceIndex = 0;\n dataComponent.sources.forEach(root => {\n // assign a name if the source does not have a name yet\n if (!root.hasName()) {\n root.dataName = `source_${sourceIndex++}`;\n }\n const newData = root.assemble();\n walkTree(root, newData);\n });\n // remove empty transform arrays for cleaner output\n data.forEach(d => {\n if (d.transform.length === 0) {\n delete d.transform;\n }\n });\n // move sources without transforms (the ones that are potentially used in lookups) to the beginning\n let whereTo = 0;\n for (const [i, d] of data.entries()) {\n if ((d.transform || []).length === 0 && !d.source) {\n data.splice(whereTo++, 0, data.splice(i, 1)[0]);\n }\n }\n // now fix the from references in lookup transforms\n for (const d of data) {\n for (const t of d.transform || []) {\n if (t.type === 'lookup') {\n t.from = dataComponent.outputNodes[t.from].getSource();\n }\n }\n }\n // inline values for datasets that are in the datastore\n for (const d of data) {\n if (d.name in datasets) {\n d.values = datasets[d.name];\n }\n }\n return data;\n}\n//# sourceMappingURL=assemble.js.map","import { FACET_CHANNELS } from '../../channel';\nimport { title as fieldDefTitle } from '../../channeldef';\nimport { contains } from '../../util';\nimport { assembleAxis } from '../axis/assemble';\nimport { parseGuideResolve } from '../resolve';\nimport { getHeaderProperty } from './common';\nexport function getHeaderType(orient) {\n if (orient === 'top' || orient === 'left') {\n return 'header';\n }\n return 'footer';\n}\nexport function parseFacetHeaders(model) {\n for (const channel of FACET_CHANNELS) {\n parseFacetHeader(model, channel);\n }\n mergeChildAxis(model, 'x');\n mergeChildAxis(model, 'y');\n}\nfunction parseFacetHeader(model, channel) {\n if (model.channelHasField(channel)) {\n const fieldDef = model.facet[channel];\n const titleConfig = getHeaderProperty('title', null, model.config, channel);\n let title = fieldDefTitle(fieldDef, model.config, {\n allowDisabling: true,\n includeDefault: titleConfig === undefined || !!titleConfig\n });\n if (model.child.component.layoutHeaders[channel].title) {\n // merge title with child to produce \"Title / Subtitle / Sub-subtitle\"\n title += ' / ' + model.child.component.layoutHeaders[channel].title;\n model.child.component.layoutHeaders[channel].title = null;\n }\n const labelOrient = getHeaderProperty('labelOrient', fieldDef, model.config, channel);\n const headerType = contains(['bottom', 'right'], labelOrient) ? 'footer' : 'header';\n model.component.layoutHeaders[channel] = {\n title,\n facetFieldDef: fieldDef,\n [headerType]: channel === 'facet' ? [] : [makeHeaderComponent(model, channel, true)]\n };\n }\n}\nfunction makeHeaderComponent(model, channel, labels) {\n const sizeType = channel === 'row' ? 'height' : 'width';\n return {\n labels,\n sizeSignal: model.child.component.layoutSize.get(sizeType) ? model.child.getSizeSignalRef(sizeType) : undefined,\n axes: []\n };\n}\nfunction mergeChildAxis(model, channel) {\n const { child } = model;\n if (child.component.axes[channel]) {\n const { layoutHeaders, resolve } = model.component;\n resolve.axis[channel] = parseGuideResolve(resolve, channel);\n if (resolve.axis[channel] === 'shared') {\n // For shared axis, move the axes to facet's header or footer\n const headerChannel = channel === 'x' ? 'column' : 'row';\n const layoutHeader = layoutHeaders[headerChannel];\n for (const axisComponent of child.component.axes[channel]) {\n const headerType = getHeaderType(axisComponent.get('orient'));\n layoutHeader[headerType] = layoutHeader[headerType] || [makeHeaderComponent(model, headerChannel, false)];\n // FIXME: assemble shouldn't be called here, but we do it this way so we only extract the main part of the axes\n const mainAxis = assembleAxis(axisComponent, 'main', model.config, { header: true });\n // LayoutHeader no longer keep track of property precedence, thus let's combine.\n layoutHeader[headerType][0].axes.push(mainAxis);\n axisComponent.mainExtracted = true;\n }\n }\n else {\n // Otherwise do nothing for independent axes\n }\n }\n}\n//# sourceMappingURL=parse.js.map","import { defaultScaleConfig, hasDiscreteDomain } from '../../scale';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { mergeValuesWithExplicit } from '../split';\nexport function parseLayerLayoutSize(model) {\n parseChildrenLayoutSize(model);\n const layoutSizeCmpt = model.component.layoutSize;\n layoutSizeCmpt.setWithExplicit('width', parseNonUnitLayoutSizeForChannel(model, 'width'));\n layoutSizeCmpt.setWithExplicit('height', parseNonUnitLayoutSizeForChannel(model, 'height'));\n}\nexport const parseRepeatLayoutSize = parseLayerLayoutSize;\nconst SIZE_TYPE_TO_MERGE = {\n vconcat: 'width',\n hconcat: 'height'\n};\nexport function parseConcatLayoutSize(model) {\n parseChildrenLayoutSize(model);\n const layoutSizeCmpt = model.component.layoutSize;\n const sizeTypeToMerge = SIZE_TYPE_TO_MERGE[model.concatType];\n if (sizeTypeToMerge) {\n layoutSizeCmpt.setWithExplicit(sizeTypeToMerge, parseNonUnitLayoutSizeForChannel(model, sizeTypeToMerge));\n }\n}\nexport function parseChildrenLayoutSize(model) {\n for (const child of model.children) {\n child.parseLayoutSize();\n }\n}\nfunction parseNonUnitLayoutSizeForChannel(model, sizeType) {\n const channel = sizeType === 'width' ? 'x' : 'y';\n const resolve = model.component.resolve;\n let mergedSize;\n // Try to merge layout size\n for (const child of model.children) {\n const childSize = child.component.layoutSize.getWithExplicit(sizeType);\n const scaleResolve = resolve.scale[channel];\n if (scaleResolve === 'independent' && childSize.value === 'range-step') {\n // Do not merge independent scales with range-step as their size depends\n // on the scale domains, which can be different between scales.\n mergedSize = undefined;\n break;\n }\n if (mergedSize) {\n if (scaleResolve === 'independent' && mergedSize.value !== childSize.value) {\n // For independent scale, only merge if all the sizes are the same.\n // If the values are different, abandon the merge!\n mergedSize = undefined;\n break;\n }\n mergedSize = mergeValuesWithExplicit(mergedSize, childSize, sizeType, '');\n }\n else {\n mergedSize = childSize;\n }\n }\n if (mergedSize) {\n // If merged, rename size and set size of all children.\n for (const child of model.children) {\n model.renameSignal(child.getName(sizeType), model.getName(sizeType));\n child.component.layoutSize.set(sizeType, 'merged', false);\n }\n return mergedSize;\n }\n else {\n // Otherwise, there is no merged size.\n return {\n explicit: false,\n value: undefined\n };\n }\n}\nexport function parseUnitLayoutSize(model) {\n const layoutSizeComponent = model.component.layoutSize;\n if (!layoutSizeComponent.explicit.width) {\n const width = defaultUnitSize(model, 'width');\n layoutSizeComponent.set('width', width, false);\n }\n if (!layoutSizeComponent.explicit.height) {\n const height = defaultUnitSize(model, 'height');\n layoutSizeComponent.set('height', height, false);\n }\n}\nfunction defaultUnitSize(model, sizeType) {\n const channel = sizeType === 'width' ? 'x' : 'y';\n const config = model.config;\n const scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n const scaleType = scaleComponent.get('type');\n const range = scaleComponent.get('range');\n if (hasDiscreteDomain(scaleType) && isVgRangeStep(range)) {\n // For discrete domain with range.step, use dynamic width/height\n return 'range-step';\n }\n else {\n return config.view[sizeType];\n }\n }\n else if (model.hasProjection) {\n return config.view[sizeType];\n }\n else {\n // No scale - set default size\n if (sizeType === 'width' && model.mark === 'text') {\n // width for text mark without x-field is a bit wider than typical range step\n return config.scale.textXRangeStep;\n }\n // Set width/height equal to rangeStep config or if rangeStep is null, use value from default scale config.\n return config.scale.rangeStep || defaultScaleConfig.rangeStep;\n }\n}\n//# sourceMappingURL=parse.js.map","import * as tslib_1 from \"tslib\";\nimport { isArray } from 'vega-util';\nimport { hasConditionalFieldDef, isConditionalDef, isFieldDef, isRepeatRef, isSortableFieldDef } from '../channeldef';\nimport * as log from '../log';\nimport { isSortField } from '../sort';\nimport { isFacetMapping } from '../spec/facet';\nexport function replaceRepeaterInFacet(facet, repeater) {\n if (isFacetMapping(facet)) {\n return replaceRepeater(facet, repeater);\n }\n return replaceRepeaterInFieldDef(facet, repeater);\n}\nexport function replaceRepeaterInEncoding(encoding, repeater) {\n return replaceRepeater(encoding, repeater);\n}\n/**\n * Replaces repeated value and returns if the repeated value is valid.\n */\nfunction replaceRepeat(o, repeater) {\n if (isRepeatRef(o.field)) {\n if (o.field.repeat in repeater) {\n // any needed to calm down ts compiler\n return Object.assign({}, o, { field: repeater[o.field.repeat] });\n }\n else {\n log.warn(log.message.noSuchRepeatedValue(o.field.repeat));\n return undefined;\n }\n }\n return o;\n}\n/**\n * Replace repeater values in a field def with the concrete field name.\n */\nfunction replaceRepeaterInFieldDef(fieldDef, repeater) {\n fieldDef = replaceRepeat(fieldDef, repeater);\n if (fieldDef === undefined) {\n // the field def should be ignored\n return undefined;\n }\n else if (fieldDef === null) {\n return null;\n }\n if (isSortableFieldDef(fieldDef) && isSortField(fieldDef.sort)) {\n const sort = replaceRepeat(fieldDef.sort, repeater);\n fieldDef = Object.assign({}, fieldDef, (sort ? { sort } : {}));\n }\n return fieldDef;\n}\nfunction replaceRepeaterInChannelDef(channelDef, repeater) {\n if (isFieldDef(channelDef)) {\n const fd = replaceRepeaterInFieldDef(channelDef, repeater);\n if (fd) {\n return fd;\n }\n else if (isConditionalDef(channelDef)) {\n return { condition: channelDef.condition };\n }\n }\n else {\n if (hasConditionalFieldDef(channelDef)) {\n const fd = replaceRepeaterInFieldDef(channelDef.condition, repeater);\n if (fd) {\n return Object.assign({}, channelDef, { condition: fd });\n }\n else {\n const { condition } = channelDef, channelDefWithoutCondition = tslib_1.__rest(channelDef, [\"condition\"]);\n return channelDefWithoutCondition;\n }\n }\n return channelDef;\n }\n return undefined;\n}\nfunction replaceRepeater(mapping, repeater) {\n const out = {};\n for (const channel in mapping) {\n if (mapping.hasOwnProperty(channel)) {\n const channelDef = mapping[channel];\n if (isArray(channelDef)) {\n // array cannot have condition\n out[channel] = channelDef.map(cd => replaceRepeaterInChannelDef(cd, repeater)).filter(cd => cd);\n }\n else {\n const cd = replaceRepeaterInChannelDef(channelDef, repeater);\n if (cd !== undefined) {\n out[channel] = cd;\n }\n }\n }\n }\n return out;\n}\n//# sourceMappingURL=repeater.js.map","import { isArray } from 'vega-util';\nimport { isBinning } from '../bin';\nimport { COLUMN, FACET_CHANNELS, ROW } from '../channel';\nimport { normalize, vgField } from '../channeldef';\nimport { reduce } from '../encoding';\nimport * as log from '../log';\nimport { hasDiscreteDomain } from '../scale';\nimport { DEFAULT_SORT_OP, isSortField } from '../sort';\nimport { isFacetMapping } from '../spec/facet';\nimport { contains, flatten } from '../util';\nimport { isVgRangeStep } from '../vega.schema';\nimport { buildModel } from './buildmodel';\nimport { assembleFacetData } from './data/assemble';\nimport { sortArrayIndexField } from './data/calculate';\nimport { parseData } from './data/parse';\nimport { assembleLabelTitle } from './header/assemble';\nimport { getHeaderChannel, getHeaderProperty } from './header/common';\nimport { HEADER_CHANNELS, HEADER_TYPES } from './header/component';\nimport { parseFacetHeaders } from './header/parse';\nimport { parseChildrenLayoutSize } from './layoutsize/parse';\nimport { ModelWithField } from './model';\nimport { replaceRepeaterInFacet } from './repeater';\nimport { assembleDomain, getFieldFromDomain } from './scale/domain';\nimport { assembleFacetSignals } from './selection/assemble';\nexport function facetSortFieldName(fieldDef, sort, opt) {\n return vgField(sort, Object.assign({ suffix: `by_${vgField(fieldDef)}` }, (opt || {})));\n}\nexport class FacetModel extends ModelWithField {\n constructor(spec, parent, parentGivenName, repeater, config) {\n super(spec, 'facet', parent, parentGivenName, config, repeater, spec.resolve);\n this.child = buildModel(spec.spec, this, this.getName('child'), undefined, repeater, config, false);\n this.children = [this.child];\n const facet = replaceRepeaterInFacet(spec.facet, repeater);\n this.facet = this.initFacet(facet);\n }\n initFacet(facet) {\n // clone to prevent side effect to the original spec\n if (!isFacetMapping(facet)) {\n return { facet: normalize(facet, 'facet') };\n }\n return reduce(facet, (normalizedFacet, fieldDef, channel) => {\n if (!contains([ROW, COLUMN], channel)) {\n // Drop unsupported channel\n log.warn(log.message.incompatibleChannel(channel, 'facet'));\n return normalizedFacet;\n }\n if (fieldDef.field === undefined) {\n log.warn(log.message.emptyFieldDef(fieldDef, channel));\n return normalizedFacet;\n }\n // Convert type to full, lowercase type, or augment the fieldDef with a default type if missing.\n normalizedFacet[channel] = normalize(fieldDef, channel);\n return normalizedFacet;\n }, {});\n }\n channelHasField(channel) {\n return !!this.facet[channel];\n }\n fieldDef(channel) {\n return this.facet[channel];\n }\n parseData() {\n this.component.data = parseData(this);\n this.child.parseData();\n }\n parseLayoutSize() {\n parseChildrenLayoutSize(this);\n }\n parseSelections() {\n // As a facet has a single child, the selection components are the same.\n // The child maintains its selections to assemble signals, which remain\n // within its unit.\n this.child.parseSelections();\n this.component.selection = this.child.component.selection;\n }\n parseMarkGroup() {\n this.child.parseMarkGroup();\n }\n parseAxesAndHeaders() {\n this.child.parseAxesAndHeaders();\n parseFacetHeaders(this);\n }\n assembleSelectionTopLevelSignals(signals) {\n return this.child.assembleSelectionTopLevelSignals(signals);\n }\n assembleSignals() {\n this.child.assembleSignals();\n return [];\n }\n assembleSelectionData(data) {\n return this.child.assembleSelectionData(data);\n }\n getHeaderLayoutMixins() {\n const layoutMixins = {};\n for (const channel of FACET_CHANNELS) {\n for (const headerType of HEADER_TYPES) {\n const layoutHeaderComponent = this.component.layoutHeaders[channel];\n const headerComponent = layoutHeaderComponent[headerType];\n const { facetFieldDef } = layoutHeaderComponent;\n if (facetFieldDef) {\n const titleOrient = getHeaderProperty('titleOrient', facetFieldDef, this.config, channel);\n if (contains(['right', 'bottom'], titleOrient)) {\n const headerChannel = getHeaderChannel(channel, titleOrient);\n layoutMixins.titleAnchor = layoutMixins.titleAnchor || {};\n layoutMixins.titleAnchor[headerChannel] = 'end';\n }\n }\n if (headerComponent && headerComponent[0]) {\n // set header/footerBand\n const sizeType = channel === 'row' ? 'height' : 'width';\n const bandType = headerType === 'header' ? 'headerBand' : 'footerBand';\n if (channel !== 'facet' && !this.child.component.layoutSize.get(sizeType)) {\n // If facet child does not have size signal, then apply headerBand\n layoutMixins[bandType] = layoutMixins[bandType] || {};\n layoutMixins[bandType][channel] = 0.5;\n }\n if (layoutHeaderComponent.title) {\n layoutMixins.offset = layoutMixins.offset || {};\n layoutMixins.offset[channel === 'row' ? 'rowTitle' : 'columnTitle'] = 10;\n }\n }\n }\n }\n return layoutMixins;\n }\n assembleDefaultLayout() {\n const { column, row } = this.facet;\n const columns = column ? this.columnDistinctSignal() : row ? 1 : undefined;\n let align = 'all';\n // Do not align the cells if the scale corresponding to the direction is indepent.\n // We always align when we facet into both row and column.\n if (!row && this.component.resolve.scale.x === 'independent') {\n align = 'none';\n }\n else if (!column && this.component.resolve.scale.y === 'independent') {\n align = 'none';\n }\n return Object.assign({}, this.getHeaderLayoutMixins(), (columns ? { columns } : {}), { bounds: 'full', align });\n }\n assembleLayoutSignals() {\n // FIXME(https://github.com/vega/vega-lite/issues/1193): this can be incorrect if we have independent scales.\n return this.child.assembleLayoutSignals();\n }\n columnDistinctSignal() {\n if (this.parent && this.parent instanceof FacetModel) {\n // For nested facet, we will add columns to group mark instead\n // See discussion in https://github.com/vega/vega/issues/952\n // and https://github.com/vega/vega-view/releases/tag/v1.2.6\n return undefined;\n }\n else {\n // In facetNode.assemble(), the name is always this.getName('column') + '_layout'.\n const facetLayoutDataName = this.getName('column_domain');\n return { signal: `length(data('${facetLayoutDataName}'))` };\n }\n }\n assembleGroup(signals) {\n if (this.parent && this.parent instanceof FacetModel) {\n // Provide number of columns for layout.\n // See discussion in https://github.com/vega/vega/issues/952\n // and https://github.com/vega/vega-view/releases/tag/v1.2.6\n return Object.assign({}, (this.channelHasField('column')\n ? {\n encode: {\n update: {\n // TODO(https://github.com/vega/vega-lite/issues/2759):\n // Correct the signal for facet of concat of facet_column\n columns: { field: vgField(this.facet.column, { prefix: 'distinct' }) }\n }\n }\n }\n : {}), super.assembleGroup(signals));\n }\n return super.assembleGroup(signals);\n }\n /**\n * Aggregate cardinality for calculating size\n */\n getCardinalityAggregateForChild() {\n const fields = [];\n const ops = [];\n const as = [];\n if (this.child instanceof FacetModel) {\n if (this.child.channelHasField('column')) {\n const field = vgField(this.child.facet.column);\n fields.push(field);\n ops.push('distinct');\n as.push(`distinct_${field}`);\n }\n }\n else {\n for (const channel of ['x', 'y']) {\n const childScaleComponent = this.child.component.scales[channel];\n if (childScaleComponent && !childScaleComponent.merged) {\n const type = childScaleComponent.get('type');\n const range = childScaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n const domain = assembleDomain(this.child, channel);\n const field = getFieldFromDomain(domain);\n if (field) {\n fields.push(field);\n ops.push('distinct');\n as.push(`distinct_${field}`);\n }\n else {\n log.warn('Unknown field for ${channel}. Cannot calculate view size.');\n }\n }\n }\n }\n }\n return { fields, ops, as };\n }\n assembleFacet() {\n const { name, data } = this.component.data.facetRoot;\n const { row, column } = this.facet;\n const { fields, ops, as } = this.getCardinalityAggregateForChild();\n const groupby = [];\n for (const channel of FACET_CHANNELS) {\n const fieldDef = this.facet[channel];\n if (fieldDef) {\n groupby.push(vgField(fieldDef));\n const { bin, sort } = fieldDef;\n if (isBinning(bin)) {\n groupby.push(vgField(fieldDef, { binSuffix: 'end' }));\n }\n if (isSortField(sort)) {\n const { field, op = DEFAULT_SORT_OP } = sort;\n const outputName = facetSortFieldName(fieldDef, sort);\n if (row && column) {\n // For crossed facet, use pre-calculate field as it requires a different groupby\n // For each calculated field, apply max and assign them to the same name as\n // all values of the same group should be the same anyway.\n fields.push(outputName);\n ops.push('max');\n as.push(outputName);\n }\n else {\n fields.push(field);\n ops.push(op);\n as.push(outputName);\n }\n }\n else if (isArray(sort)) {\n const outputName = sortArrayIndexField(fieldDef, channel);\n fields.push(outputName);\n ops.push('max');\n as.push(outputName);\n }\n }\n }\n const cross = !!row && !!column;\n return Object.assign({ name,\n data,\n groupby }, (cross || fields.length\n ? {\n aggregate: Object.assign({}, (cross ? { cross } : {}), (fields.length ? { fields, ops, as } : {}))\n }\n : {}));\n }\n facetSortFields(channel) {\n const { facet } = this;\n const fieldDef = facet[channel];\n if (fieldDef) {\n if (isSortField(fieldDef.sort)) {\n return [facetSortFieldName(fieldDef, fieldDef.sort, { expr: 'datum' })];\n }\n else if (isArray(fieldDef.sort)) {\n return [sortArrayIndexField(fieldDef, channel, { expr: 'datum' })];\n }\n return [vgField(fieldDef, { expr: 'datum' })];\n }\n return [];\n }\n facetSortOrder(channel) {\n const { facet } = this;\n const fieldDef = facet[channel];\n if (fieldDef) {\n const { sort } = fieldDef;\n const order = (isSortField(sort) ? sort.order : !isArray(sort) && sort) || 'ascending';\n return [order];\n }\n return [];\n }\n assembleLabelTitle() {\n const { facet, config } = this;\n if (facet.facet) {\n // Facet always uses title to display labels\n return assembleLabelTitle(facet.facet, 'facet', config);\n }\n const ORTHOGONAL_ORIENT = {\n row: ['top', 'bottom'],\n column: ['left', 'right']\n };\n for (const channel of HEADER_CHANNELS) {\n if (facet[channel]) {\n const labelOrient = getHeaderProperty('labelOrient', facet[channel], config, channel);\n if (contains(ORTHOGONAL_ORIENT[channel], labelOrient)) {\n // Row/Column with orthogonal labelOrient must use title to display labels\n return assembleLabelTitle(facet[channel], channel, config);\n }\n }\n }\n return undefined;\n }\n assembleMarks() {\n const { child } = this;\n // If we facet by two dimensions, we need to add a cross operator to the aggregation\n // so that we create all groups\n const facetRoot = this.component.data.facetRoot;\n const data = assembleFacetData(facetRoot);\n const encodeEntry = child.assembleGroupEncodeEntry(false);\n const title = this.assembleLabelTitle() || child.assembleTitle();\n const style = child.assembleGroupStyle();\n const markGroup = Object.assign({ name: this.getName('cell'), type: 'group' }, (title ? { title } : {}), (style ? { style } : {}), { from: {\n facet: this.assembleFacet()\n }, \n // TODO: move this to after data\n sort: {\n field: flatten(FACET_CHANNELS.map(c => this.facetSortFields(c))),\n order: flatten(FACET_CHANNELS.map(c => this.facetSortOrder(c)))\n } }, (data.length > 0 ? { data: data } : {}), (encodeEntry ? { encode: { update: encodeEntry } } : {}), child.assembleGroup(assembleFacetSignals(this, [])));\n return [markGroup];\n }\n getMapping() {\n return this.facet;\n }\n}\n//# sourceMappingURL=facet.js.map","import { isGenerator, isGraticuleGenerator, isInlineData, isNamedData, isSequenceGenerator, isUrlData, MAIN, RAW } from '../../data';\nimport * as log from '../../log';\nimport { isAggregate, isBin, isCalculate, isFilter, isFlatten, isFold, isImpute, isJoinAggregate, isLookup, isSample, isStack, isTimeUnit, isWindow } from '../../transform';\nimport { deepEqual, mergeDeep } from '../../util';\nimport { isFacetModel, isLayerModel, isUnitModel } from '../model';\nimport { requiresSelectionId } from '../selection';\nimport { AggregateNode } from './aggregate';\nimport { BinNode } from './bin';\nimport { CalculateNode } from './calculate';\nimport { OutputNode } from './dataflow';\nimport { FacetNode } from './facet';\nimport { FilterNode } from './filter';\nimport { FilterInvalidNode } from './filterinvalid';\nimport { FlattenTransformNode } from './flatten';\nimport { FoldTransformNode } from './fold';\nimport { ParseNode } from './formatparse';\nimport { GeoJSONNode } from './geojson';\nimport { GeoPointNode } from './geopoint';\nimport { GraticuleNode } from './graticule';\nimport { IdentifierNode } from './identifier';\nimport { ImputeNode } from './impute';\nimport { AncestorParse } from './index';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nimport { makeJoinAggregateFromFacet } from './joinaggregatefacet';\nimport { LookupNode } from './lookup';\nimport { SampleTransformNode } from './sample';\nimport { SequenceNode } from './sequence';\nimport { SourceNode } from './source';\nimport { StackNode } from './stack';\nimport { TimeUnitNode } from './timeunit';\nimport { WindowTransformNode } from './window';\nexport function findSource(data, sources) {\n for (const other of sources) {\n const otherData = other.data;\n // if both datasets have a name defined, we cannot merge\n if (data.name && other.hasName() && data.name !== other.dataName) {\n continue;\n }\n // feature and mesh are mutually exclusive\n if (data['format'] && data['format'].mesh && otherData.format && otherData.format.feature) {\n continue;\n }\n if (isInlineData(data) && isInlineData(otherData)) {\n if (deepEqual(data.values, otherData.values)) {\n return other;\n }\n }\n else if (isUrlData(data) && isUrlData(otherData)) {\n if (data.url === otherData.url) {\n return other;\n }\n }\n else if (isNamedData(data)) {\n if (data.name === other.dataName) {\n return other;\n }\n }\n }\n return null;\n}\nfunction parseRoot(model, sources) {\n if (model.data || !model.parent) {\n // if the model defines a data source or is the root, create a source node\n const existingSource = findSource(model.data, sources);\n if (existingSource) {\n if (!isGenerator(model.data)) {\n existingSource.data.format = mergeDeep({}, model.data.format, existingSource.data.format);\n }\n // if the new source has a name but the existing one does not, we can set it\n if (!existingSource.hasName() && model.data.name) {\n existingSource.dataName = model.data.name;\n }\n return existingSource;\n }\n else {\n const source = new SourceNode(model.data);\n sources.push(source);\n return source;\n }\n }\n else {\n // If we don't have a source defined (overriding parent's data), use the parent's facet root or main.\n return model.parent.component.data.facetRoot\n ? model.parent.component.data.facetRoot\n : model.parent.component.data.main;\n }\n}\n/**\n * Parses a transform array into a chain of connected dataflow nodes.\n */\nexport function parseTransformArray(head, model, ancestorParse) {\n let lookupCounter = 0;\n for (const t of model.transforms) {\n let derivedType = undefined;\n let transformNode;\n if (isCalculate(t)) {\n transformNode = head = new CalculateNode(head, t);\n derivedType = 'derived';\n }\n else if (isFilter(t)) {\n transformNode = head = ParseNode.makeImplicitFromFilterTransform(head, t, ancestorParse) || head;\n head = new FilterNode(head, model, t.filter);\n }\n else if (isBin(t)) {\n transformNode = head = BinNode.makeFromTransform(head, t, model);\n derivedType = 'number';\n }\n else if (isTimeUnit(t)) {\n transformNode = head = TimeUnitNode.makeFromTransform(head, t);\n derivedType = 'date';\n // Create parse node because the input to time unit is always date.\n const parsedAs = ancestorParse.getWithExplicit(t.field);\n if (parsedAs.value === undefined) {\n head = new ParseNode(head, { [t.field]: derivedType });\n ancestorParse.set(t.field, derivedType, false);\n }\n }\n else if (isAggregate(t)) {\n transformNode = head = AggregateNode.makeFromTransform(head, t);\n derivedType = 'number';\n if (requiresSelectionId(model)) {\n head = new IdentifierNode(head);\n }\n }\n else if (isLookup(t)) {\n transformNode = head = LookupNode.make(head, model, t, lookupCounter++);\n derivedType = 'derived';\n }\n else if (isWindow(t)) {\n transformNode = head = new WindowTransformNode(head, t);\n derivedType = 'number';\n }\n else if (isJoinAggregate(t)) {\n transformNode = head = new JoinAggregateTransformNode(head, t);\n derivedType = 'number';\n }\n else if (isStack(t)) {\n transformNode = head = StackNode.makeFromTransform(head, t);\n derivedType = 'derived';\n }\n else if (isFold(t)) {\n transformNode = head = new FoldTransformNode(head, t);\n derivedType = 'derived';\n }\n else if (isFlatten(t)) {\n transformNode = head = new FlattenTransformNode(head, t);\n derivedType = 'derived';\n }\n else if (isSample(t)) {\n head = new SampleTransformNode(head, t);\n }\n else if (isImpute(t)) {\n transformNode = head = ImputeNode.makeFromTransform(head, t);\n derivedType = 'derived';\n }\n else {\n log.warn(log.message.invalidTransformIgnored(t));\n continue;\n }\n if (transformNode && derivedType !== undefined) {\n for (const field of transformNode.producedFields()) {\n ancestorParse.set(field, derivedType, false);\n }\n }\n }\n return head;\n}\n/*\nDescription of the dataflow (http://asciiflow.com/):\n +--------+\n | Source |\n +---+----+\n |\n v\n FormatParse\n (explicit)\n |\n v\n Transforms\n(Filter, Calculate, Binning, TimeUnit, Aggregate, Window, ...)\n |\n v\n FormatParse\n (implicit)\n |\n v\n Binning (in `encoding`)\n |\n v\n Timeunit (in `encoding`)\n |\n v\nFormula From Sort Array\n |\n v\n +--+--+\n | Raw |\n +-----+\n |\n v\n Aggregate (in `encoding`)\n |\n v\n Stack (in `encoding`)\n |\n v\n Invalid Filter\n |\n v\n +----------+\n | Main |\n +----------+\n |\n v\n +-------+\n | Facet |----> \"column\", \"column-layout\", and \"row\"\n +-------+\n |\n v\n ...Child data...\n*/\nexport function parseData(model) {\n let head = parseRoot(model, model.component.data.sources);\n const { outputNodes, outputNodeRefCounts } = model.component.data;\n const ancestorParse = model.parent ? model.parent.component.data.ancestorParse.clone() : new AncestorParse();\n const data = model.data;\n if (isGenerator(data)) {\n // insert generator transform\n if (isSequenceGenerator(data)) {\n head = new SequenceNode(head, data.sequence);\n }\n else if (isGraticuleGenerator(data)) {\n head = new GraticuleNode(head, data.graticule);\n }\n // no parsing necessary for generator\n ancestorParse.parseNothing = true;\n }\n else if (data && data.format && data.format.parse === null) {\n // format.parse: null means disable parsing\n ancestorParse.parseNothing = true;\n }\n head = ParseNode.makeExplicit(head, model, ancestorParse) || head;\n // Default discrete selections require an identifier transform to\n // uniquely identify data points as the _id field is volatile. Add\n // this transform at the head of our pipeline such that the identifier\n // field is available for all subsequent datasets. Additional identifier\n // transforms will be necessary when new tuples are constructed\n // (e.g., post-aggregation).\n if (requiresSelectionId(model) &&\n // only add identifier to unit/layer models that do not have layer parents to avoid redundant identifier transforms\n ((isUnitModel(model) || isLayerModel(model)) && (!model.parent || !isLayerModel(model.parent)))) {\n head = new IdentifierNode(head);\n }\n // HACK: This is equivalent for merging bin extent for union scale.\n // FIXME(https://github.com/vega/vega-lite/issues/2270): Correctly merge extent / bin node for shared bin scale\n const parentIsLayer = model.parent && isLayerModel(model.parent);\n if (isUnitModel(model) || isFacetModel(model)) {\n if (parentIsLayer) {\n head = BinNode.makeFromEncoding(head, model) || head;\n }\n }\n if (model.transforms.length > 0) {\n head = parseTransformArray(head, model, ancestorParse);\n }\n head = ParseNode.makeImplicitFromEncoding(head, model, ancestorParse) || head;\n if (isUnitModel(model)) {\n head = GeoJSONNode.parseAll(head, model);\n head = GeoPointNode.parseAll(head, model);\n }\n if (isUnitModel(model) || isFacetModel(model)) {\n if (!parentIsLayer) {\n head = BinNode.makeFromEncoding(head, model) || head;\n }\n head = TimeUnitNode.makeFromEncoding(head, model) || head;\n head = CalculateNode.parseAllForSortIndex(head, model);\n }\n // add an output node pre aggregation\n const rawName = model.getName(RAW);\n const raw = new OutputNode(head, rawName, RAW, outputNodeRefCounts);\n outputNodes[rawName] = raw;\n head = raw;\n if (isUnitModel(model)) {\n const agg = AggregateNode.makeFromEncoding(head, model);\n if (agg) {\n head = agg;\n if (requiresSelectionId(model)) {\n head = new IdentifierNode(head);\n }\n }\n head = ImputeNode.makeFromEncoding(head, model) || head;\n head = StackNode.makeFromEncoding(head, model) || head;\n }\n if (isUnitModel(model)) {\n head = FilterInvalidNode.make(head, model) || head;\n }\n // output node for marks\n const mainName = model.getName(MAIN);\n const main = new OutputNode(head, mainName, MAIN, outputNodeRefCounts);\n outputNodes[mainName] = main;\n head = main;\n // add facet marker\n let facetRoot = null;\n if (isFacetModel(model)) {\n const facetName = model.getName('facet');\n // Derive new sort index field for facet's sort array\n head = CalculateNode.parseAllForSortIndex(head, model);\n // Derive new aggregate for facet's sort field\n // augment data source with new fields for crossed facet\n head = makeJoinAggregateFromFacet(head, model.facet) || head;\n facetRoot = new FacetNode(head, model, facetName, main.getSource());\n outputNodes[facetName] = facetRoot;\n head = facetRoot;\n }\n return Object.assign({}, model.component.data, { outputNodes,\n outputNodeRefCounts,\n raw,\n main,\n facetRoot,\n ancestorParse });\n}\n//# sourceMappingURL=parse.js.map","import { vgField } from '../../channeldef';\nimport { DEFAULT_SORT_OP, isSortField } from '../../sort';\nimport { facetSortFieldName } from '../facet';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nexport function makeJoinAggregateFromFacet(parent, facet) {\n const { row, column } = facet;\n if (row && column) {\n let newParent = null;\n // only need to make one for crossed facet\n for (const fieldDef of [row, column]) {\n if (isSortField(fieldDef.sort)) {\n const { field, op = DEFAULT_SORT_OP } = fieldDef.sort;\n parent = newParent = new JoinAggregateTransformNode(parent, {\n joinaggregate: [\n {\n op,\n field,\n as: facetSortFieldName(fieldDef, fieldDef.sort, { forAs: true })\n }\n ],\n groupby: [vgField(fieldDef)]\n });\n }\n }\n return newParent;\n }\n return null;\n}\n//# sourceMappingURL=joinaggregatefacet.js.map","import { keys } from '../util';\nimport { parseData } from './data/parse';\nimport { assembleLayoutSignals } from './layoutsize/assemble';\nimport { Model } from './model';\nexport class BaseConcatModel extends Model {\n constructor(spec, specType, parent, parentGivenName, config, repeater, resolve) {\n super(spec, specType, parent, parentGivenName, config, repeater, resolve);\n }\n parseData() {\n this.component.data = parseData(this);\n this.children.forEach(child => {\n child.parseData();\n });\n }\n parseSelections() {\n // Merge selections up the hierarchy so that they may be referenced\n // across unit specs. Persist their definitions within each child\n // to assemble signals which remain within output Vega unit groups.\n this.component.selection = {};\n for (const child of this.children) {\n child.parseSelections();\n keys(child.component.selection).forEach(key => {\n this.component.selection[key] = child.component.selection[key];\n });\n }\n }\n parseMarkGroup() {\n for (const child of this.children) {\n child.parseMarkGroup();\n }\n }\n parseAxesAndHeaders() {\n for (const child of this.children) {\n child.parseAxesAndHeaders();\n }\n // TODO(#2415): support shared axes\n }\n assembleSelectionTopLevelSignals(signals) {\n return this.children.reduce((sg, child) => child.assembleSelectionTopLevelSignals(sg), signals);\n }\n assembleSignals() {\n this.children.forEach(child => child.assembleSignals());\n return [];\n }\n assembleLayoutSignals() {\n return this.children.reduce((signals, child) => {\n return [...signals, ...child.assembleLayoutSignals()];\n }, assembleLayoutSignals(this));\n }\n assembleSelectionData(data) {\n return this.children.reduce((db, child) => child.assembleSelectionData(db), data);\n }\n assembleMarks() {\n // only children have marks\n return this.children.map(child => {\n const title = child.assembleTitle();\n const style = child.assembleGroupStyle();\n const encodeEntry = child.assembleGroupEncodeEntry(false);\n return Object.assign({ type: 'group', name: child.getName('group') }, (title ? { title } : {}), (style ? { style } : {}), (encodeEntry ? { encode: { update: encodeEntry } } : {}), child.assembleGroup());\n });\n }\n}\n//# sourceMappingURL=baseconcat.js.map","import * as log from '../log';\nimport { isHConcatSpec, isVConcatSpec } from '../spec';\nimport { BaseConcatModel } from './baseconcat';\nimport { buildModel } from './buildmodel';\nimport { parseConcatLayoutSize } from './layoutsize/parse';\nexport class ConcatModel extends BaseConcatModel {\n constructor(spec, parent, parentGivenName, repeater, config) {\n super(spec, 'concat', parent, parentGivenName, config, repeater, spec.resolve);\n if (spec.resolve && spec.resolve.axis && (spec.resolve.axis.x === 'shared' || spec.resolve.axis.y === 'shared')) {\n log.warn(log.message.CONCAT_CANNOT_SHARE_AXIS);\n }\n this.concatType = isVConcatSpec(spec) ? 'vconcat' : isHConcatSpec(spec) ? 'hconcat' : 'concat';\n this.children = this.getChildren(spec).map((child, i) => {\n return buildModel(child, this, this.getName('concat_' + i), undefined, repeater, config, false);\n });\n }\n getChildren(spec) {\n if (isVConcatSpec(spec)) {\n return spec.vconcat;\n }\n else if (isHConcatSpec(spec)) {\n return spec.hconcat;\n }\n return spec.concat;\n }\n parseLayoutSize() {\n parseConcatLayoutSize(this);\n }\n parseAxisGroup() {\n return null;\n }\n assembleDefaultLayout() {\n return Object.assign({}, (this.concatType === 'vconcat' ? { columns: 1 } : {}), { bounds: 'full', \n // Use align each so it can work with multiple plots with different size\n align: 'each' });\n }\n}\n//# sourceMappingURL=concat.js.map","import { duplicate } from '../../util';\nimport { Split } from '../split';\nfunction isFalseOrNull(v) {\n return v === false || v === null;\n}\nexport class AxisComponent extends Split {\n constructor(explicit = {}, implicit = {}, mainExtracted = false) {\n super();\n this.explicit = explicit;\n this.implicit = implicit;\n this.mainExtracted = mainExtracted;\n }\n clone() {\n return new AxisComponent(duplicate(this.explicit), duplicate(this.implicit), this.mainExtracted);\n }\n hasAxisPart(part) {\n // FIXME(https://github.com/vega/vega-lite/issues/2552) this method can be wrong if users use a Vega theme.\n if (part === 'axis') {\n // always has the axis container part\n return true;\n }\n if (part === 'grid' || part === 'title') {\n return !!this.get(part);\n }\n // Other parts are enabled by default, so they should not be false or null.\n return !isFalseOrNull(this.get(part));\n }\n}\n//# sourceMappingURL=component.js.map","import { AXIS_PARTS, isAxisProperty, VG_AXIS_PROPERTIES } from '../../axis';\nimport { isBinned } from '../../bin';\nimport { POSITION_SCALE_CHANNELS, X, Y } from '../../channel';\nimport { isTimeFormatFieldDef, toFieldDefBase } from '../../channeldef';\nimport { contains, getFirstDefined, keys, normalizeAngle } from '../../util';\nimport { mergeTitle, mergeTitleComponent, mergeTitleFieldDefs, numberFormat } from '../common';\nimport { guideEncodeEntry } from '../guide';\nimport { parseGuideResolve } from '../resolve';\nimport { defaultTieBreaker, mergeValuesWithExplicit } from '../split';\nimport { AxisComponent } from './component';\nimport { getAxisConfig } from './config';\nimport * as encode from './encode';\nimport * as properties from './properties';\nexport function parseUnitAxes(model) {\n return POSITION_SCALE_CHANNELS.reduce((axis, channel) => {\n if (model.component.scales[channel] && model.axis(channel)) {\n axis[channel] = [parseAxis(channel, model)];\n }\n return axis;\n }, {});\n}\nconst OPPOSITE_ORIENT = {\n bottom: 'top',\n top: 'bottom',\n left: 'right',\n right: 'left'\n};\nexport function parseLayerAxes(model) {\n const { axes, resolve } = model.component;\n const axisCount = { top: 0, bottom: 0, right: 0, left: 0 };\n for (const child of model.children) {\n child.parseAxesAndHeaders();\n for (const channel of keys(child.component.axes)) {\n resolve.axis[channel] = parseGuideResolve(model.component.resolve, channel);\n if (resolve.axis[channel] === 'shared') {\n // If the resolve says shared (and has not been overridden)\n // We will try to merge and see if there is a conflict\n axes[channel] = mergeAxisComponents(axes[channel], child.component.axes[channel]);\n if (!axes[channel]) {\n // If merge returns nothing, there is a conflict so we cannot make the axis shared.\n // Thus, mark axis as independent and remove the axis component.\n resolve.axis[channel] = 'independent';\n delete axes[channel];\n }\n }\n }\n }\n // Move axes to layer's axis component and merge shared axes\n for (const channel of [X, Y]) {\n for (const child of model.children) {\n if (!child.component.axes[channel]) {\n // skip if the child does not have a particular axis\n continue;\n }\n if (resolve.axis[channel] === 'independent') {\n // If axes are independent, concat the axisComponent array.\n axes[channel] = (axes[channel] || []).concat(child.component.axes[channel]);\n // Automatically adjust orient\n for (const axisComponent of child.component.axes[channel]) {\n const { value: orient, explicit } = axisComponent.getWithExplicit('orient');\n if (axisCount[orient] > 0 && !explicit) {\n // Change axis orient if the number do not match\n const oppositeOrient = OPPOSITE_ORIENT[orient];\n if (axisCount[orient] > axisCount[oppositeOrient]) {\n axisComponent.set('orient', oppositeOrient, false);\n }\n }\n axisCount[orient]++;\n // TODO(https://github.com/vega/vega-lite/issues/2634): automatically add extra offset?\n }\n }\n // After merging, make sure to remove axes from child\n delete child.component.axes[channel];\n }\n // Suppress grid lines for dual axis charts (https://github.com/vega/vega-lite/issues/4676)\n if (resolve.axis[channel] === 'independent' && axes[channel] && axes[channel].length > 1) {\n for (const axisCmpt of axes[channel]) {\n if (!!axisCmpt.get('grid') && !axisCmpt.explicit.grid) {\n axisCmpt.implicit.grid = false;\n }\n }\n }\n }\n}\nfunction mergeAxisComponents(mergedAxisCmpts, childAxisCmpts) {\n if (mergedAxisCmpts) {\n // FIXME: this is a bit wrong once we support multiple axes\n if (mergedAxisCmpts.length !== childAxisCmpts.length) {\n return undefined; // Cannot merge axis component with different number of axes.\n }\n const length = mergedAxisCmpts.length;\n for (let i = 0; i < length; i++) {\n const merged = mergedAxisCmpts[i];\n const child = childAxisCmpts[i];\n if (!!merged !== !!child) {\n return undefined;\n }\n else if (merged && child) {\n const mergedOrient = merged.getWithExplicit('orient');\n const childOrient = child.getWithExplicit('orient');\n if (mergedOrient.explicit && childOrient.explicit && mergedOrient.value !== childOrient.value) {\n // TODO: throw warning if resolve is explicit (We don't have info about explicit/implicit resolve yet.)\n // Cannot merge due to inconsistent orient\n return undefined;\n }\n else {\n mergedAxisCmpts[i] = mergeAxisComponent(merged, child);\n }\n }\n }\n }\n else {\n // For first one, return a copy of the child\n return childAxisCmpts.map(axisComponent => axisComponent.clone());\n }\n return mergedAxisCmpts;\n}\nfunction mergeAxisComponent(merged, child) {\n for (const prop of VG_AXIS_PROPERTIES) {\n const mergedValueWithExplicit = mergeValuesWithExplicit(merged.getWithExplicit(prop), child.getWithExplicit(prop), prop, 'axis', \n // Tie breaker function\n (v1, v2) => {\n switch (prop) {\n case 'title':\n return mergeTitleComponent(v1, v2);\n case 'gridScale':\n return {\n explicit: v1.explicit,\n value: getFirstDefined(v1.value, v2.value)\n };\n }\n return defaultTieBreaker(v1, v2, prop, 'axis');\n });\n merged.setWithExplicit(prop, mergedValueWithExplicit);\n }\n return merged;\n}\nfunction getFieldDefTitle(model, channel) {\n const channel2 = channel === 'x' ? 'x2' : 'y2';\n const fieldDef = model.fieldDef(channel);\n const fieldDef2 = model.fieldDef(channel2);\n const title1 = fieldDef ? fieldDef.title : undefined;\n const title2 = fieldDef2 ? fieldDef2.title : undefined;\n if (title1 && title2) {\n return mergeTitle(title1, title2);\n }\n else if (title1) {\n return title1;\n }\n else if (title2) {\n return title2;\n }\n else if (title1 !== undefined) {\n // falsy value to disable config\n return title1;\n }\n else if (title2 !== undefined) {\n // falsy value to disable config\n return title2;\n }\n return undefined;\n}\nfunction isExplicit(value, property, axis, model, channel) {\n switch (property) {\n case 'titleAngle':\n case 'labelAngle':\n return value === normalizeAngle(axis[property]);\n case 'values':\n return !!axis.values;\n // specified axis.values is already respected, but may get transformed.\n case 'encode':\n // both VL axis.encoding and axis.labelAngle affect VG axis.encode\n return !!axis.encoding || !!axis.labelAngle;\n case 'title':\n // title can be explicit if fieldDef.title is set\n if (value === getFieldDefTitle(model, channel)) {\n return true;\n }\n }\n // Otherwise, things are explicit if the returned value matches the specified property\n return value === axis[property];\n}\nfunction parseAxis(channel, model) {\n const axis = model.axis(channel);\n const axisComponent = new AxisComponent();\n // 1.2. Add properties\n VG_AXIS_PROPERTIES.forEach(property => {\n const value = getProperty(property, axis, channel, model);\n if (value !== undefined) {\n const explicit = isExplicit(value, property, axis, model, channel);\n const configValue = getAxisConfig(property, model.config, channel, axisComponent.get('orient'), model.getScaleComponent(channel).get('type'));\n // only set property if it is explicitly set or has no config value (otherwise we will accidentally override config)\n if (explicit || configValue === undefined) {\n // Do not apply implicit rule if there is a config value\n axisComponent.set(property, value, explicit);\n }\n else if (contains(['grid', 'orient'], property) && configValue) {\n // - Grid is an exception because we need to set grid = true to generate another grid axis\n // - Orient is not an axis config in Vega, so we need to set too.\n axisComponent.set(property, configValue, false);\n }\n }\n });\n // 2) Add guide encode definition groups\n const axisEncoding = axis.encoding || {};\n const axisEncode = AXIS_PARTS.reduce((e, part) => {\n if (!axisComponent.hasAxisPart(part)) {\n // No need to create encode for a disabled part.\n return e;\n }\n const axisEncodingPart = guideEncodeEntry(axisEncoding[part] || {}, model);\n const value = part === 'labels' ? encode.labels(model, channel, axisEncodingPart) : axisEncodingPart;\n if (value !== undefined && keys(value).length > 0) {\n e[part] = { update: value };\n }\n return e;\n }, {});\n // FIXME: By having encode as one property, we won't have fine grained encode merging.\n if (keys(axisEncode).length > 0) {\n axisComponent.set('encode', axisEncode, !!axis.encoding || axis.labelAngle !== undefined);\n }\n return axisComponent;\n}\nfunction getProperty(property, specifiedAxis, channel, model) {\n const fieldDef = model.fieldDef(channel);\n // Some properties depend on labelAngle so we have to declare it here.\n // Also, we don't use `getFirstDefined` for labelAngle\n // as we want to normalize specified value to be within [0,360)\n const labelAngle = properties.labelAngle(model, specifiedAxis, channel, fieldDef);\n const orient = getFirstDefined(specifiedAxis.orient, properties.orient(channel));\n switch (property) {\n case 'scale':\n return model.scaleName(channel);\n case 'gridScale':\n return properties.gridScale(model, channel);\n case 'format':\n // We don't include temporal field here as we apply format in encode block\n if (isTimeFormatFieldDef(fieldDef)) {\n return undefined;\n }\n return numberFormat(fieldDef, specifiedAxis.format, model.config);\n case 'formatType':\n // Same as format, We don't include temporal field here as we apply format in encode block\n if (isTimeFormatFieldDef(fieldDef)) {\n return undefined;\n }\n return specifiedAxis.formatType;\n case 'grid': {\n if (isBinned(model.fieldDef(channel).bin)) {\n return false;\n }\n else {\n const scaleType = model.getScaleComponent(channel).get('type');\n return getFirstDefined(specifiedAxis.grid, properties.defaultGrid(scaleType, fieldDef));\n }\n }\n case 'labelAlign':\n return getFirstDefined(specifiedAxis.labelAlign, properties.defaultLabelAlign(labelAngle, orient));\n case 'labelAngle':\n return labelAngle;\n case 'labelBaseline':\n return getFirstDefined(specifiedAxis.labelBaseline, properties.defaultLabelBaseline(labelAngle, orient));\n case 'labelFlush':\n return getFirstDefined(specifiedAxis.labelFlush, properties.defaultLabelFlush(fieldDef, channel));\n case 'labelOverlap': {\n const scaleType = model.getScaleComponent(channel).get('type');\n return getFirstDefined(specifiedAxis.labelOverlap, properties.defaultLabelOverlap(fieldDef, scaleType));\n }\n case 'orient':\n return orient;\n case 'tickCount': {\n const scaleType = model.getScaleComponent(channel).get('type');\n const sizeType = channel === 'x' ? 'width' : channel === 'y' ? 'height' : undefined;\n const size = sizeType ? model.getSizeSignalRef(sizeType) : undefined;\n return getFirstDefined(specifiedAxis.tickCount, properties.defaultTickCount({ fieldDef, scaleType, size }));\n }\n case 'title': {\n const channel2 = channel === 'x' ? 'x2' : 'y2';\n const fieldDef2 = model.fieldDef(channel2);\n // Keep undefined so we use default if title is unspecified.\n // For other falsy value, keep them so we will hide the title.\n return getFirstDefined(specifiedAxis.title, getFieldDefTitle(model, channel), // If title not specified, store base parts of fieldDef (and fieldDef2 if exists)\n mergeTitleFieldDefs([toFieldDefBase(fieldDef)], fieldDef2 ? [toFieldDefBase(fieldDef2)] : []));\n }\n case 'values':\n return properties.values(specifiedAxis, model, fieldDef);\n }\n // Otherwise, return specified property.\n return isAxisProperty(property) ? specifiedAxis[property] : undefined;\n}\n//# sourceMappingURL=parse.js.map","import { isTimeFormatFieldDef } from '../../channeldef';\nimport { ScaleType } from '../../scale';\nimport { keys } from '../../util';\nimport { timeFormatExpression } from '../common';\nexport function labels(model, channel, specifiedLabelsSpec) {\n const fieldDef = model.fieldDef(channel) ||\n (channel === 'x' ? model.fieldDef('x2') : channel === 'y' ? model.fieldDef('y2') : undefined);\n const axis = model.axis(channel);\n const config = model.config;\n let labelsSpec = {};\n // We use a label encoding instead of setting the `format` property because Vega does not let us determine how the format should be interpreted.\n if (isTimeFormatFieldDef(fieldDef)) {\n const isUTCScale = model.getScaleComponent(channel).get('type') === ScaleType.UTC;\n const expr = timeFormatExpression('datum.value', fieldDef.timeUnit, axis.format, config.axis.shortTimeLabels, null, isUTCScale);\n if (expr) {\n labelsSpec.text = { signal: expr };\n }\n }\n labelsSpec = Object.assign({}, labelsSpec, specifiedLabelsSpec);\n return keys(labelsSpec).length === 0 ? undefined : labelsSpec;\n}\n//# sourceMappingURL=encode.js.map","import { isBinned, isBinning } from '../../bin';\nimport { isContinuous, isFieldDef } from '../../channeldef';\nimport { isAggregate } from '../../encoding';\nimport * as log from '../../log';\nimport { AREA, BAR, CIRCLE, isMarkDef, LINE, POINT, RECT, RULE, SQUARE, TEXT, TICK } from '../../mark';\nimport { QUANTITATIVE, TEMPORAL } from '../../type';\nimport { contains, getFirstDefined } from '../../util';\nimport { getMarkConfig } from '../common';\nexport function normalizeMarkDef(mark, encoding, config) {\n const markDef = isMarkDef(mark) ? Object.assign({}, mark) : { type: mark };\n // set orient, which can be overridden by rules as sometimes the specified orient is invalid.\n const specifiedOrient = markDef.orient || getMarkConfig('orient', markDef, config);\n markDef.orient = orient(markDef.type, encoding, specifiedOrient);\n if (specifiedOrient !== undefined && specifiedOrient !== markDef.orient) {\n log.warn(log.message.orientOverridden(markDef.orient, specifiedOrient));\n }\n // set opacity and filled if not specified in mark config\n const specifiedOpacity = getFirstDefined(markDef.opacity, getMarkConfig('opacity', markDef, config));\n if (specifiedOpacity === undefined) {\n markDef.opacity = opacity(markDef.type, encoding);\n }\n const specifiedFilled = markDef.filled;\n if (specifiedFilled === undefined) {\n markDef.filled = filled(markDef, config);\n }\n // set cursor, which should be pointer if href channel is present unless otherwise specified\n const specifiedCursor = markDef.cursor || getMarkConfig('cursor', markDef, config);\n if (specifiedCursor === undefined) {\n markDef.cursor = cursor(markDef, encoding, config);\n }\n return markDef;\n}\nfunction cursor(markDef, encoding, config) {\n if (encoding.href || markDef.href || getMarkConfig('href', markDef, config)) {\n return 'pointer';\n }\n return markDef.cursor;\n}\nfunction opacity(mark, encoding) {\n if (contains([POINT, TICK, CIRCLE, SQUARE], mark)) {\n // point-based marks\n if (!isAggregate(encoding)) {\n return 0.7;\n }\n }\n return undefined;\n}\nfunction filled(markDef, config) {\n const filledConfig = getMarkConfig('filled', markDef, config);\n const mark = markDef.type;\n return getFirstDefined(filledConfig, mark !== POINT && mark !== LINE && mark !== RULE);\n}\nfunction orient(mark, encoding, specifiedOrient) {\n switch (mark) {\n case POINT:\n case CIRCLE:\n case SQUARE:\n case TEXT:\n case RECT:\n // orient is meaningless for these marks.\n return undefined;\n }\n const { x, y, x2, y2 } = encoding;\n switch (mark) {\n case BAR:\n if (isFieldDef(x) && isBinned(x.bin)) {\n return 'vertical';\n }\n if (isFieldDef(y) && isBinned(y.bin)) {\n return 'horizontal';\n }\n if (y2 || x2) {\n // Ranged bar does not always have clear orientation, so we allow overriding\n if (specifiedOrient) {\n return specifiedOrient;\n }\n // If y is range and x is non-range, non-bin Q, y is likely a prebinned field\n if (!x2 && isFieldDef(x) && x.type === QUANTITATIVE && !isBinning(x.bin)) {\n return 'horizontal';\n }\n // If x is range and y is non-range, non-bin Q, x is likely a prebinned field\n if (!y2 && isFieldDef(y) && y.type === QUANTITATIVE && !isBinning(y.bin)) {\n return 'vertical';\n }\n }\n // falls through\n case RULE:\n // return undefined for line segment rule and bar with both axis ranged\n if (x2 && y2) {\n return undefined;\n }\n // falls through\n case AREA:\n // If there are range for both x and y, y (vertical) has higher precedence.\n if (y2) {\n if (isFieldDef(y) && isBinned(y.bin)) {\n return 'horizontal';\n }\n else {\n return 'vertical';\n }\n }\n else if (x2) {\n if (isFieldDef(x) && isBinned(x.bin)) {\n return 'vertical';\n }\n else {\n return 'horizontal';\n }\n }\n else if (mark === RULE) {\n if (encoding.x && !encoding.y) {\n return 'vertical';\n }\n else if (encoding.y && !encoding.x) {\n return 'horizontal';\n }\n }\n // falls through\n case LINE:\n case TICK: {\n // Tick is opposite to bar, line, area and never have ranged mark.\n const xIsContinuous = isFieldDef(encoding.x) && isContinuous(encoding.x);\n const yIsContinuous = isFieldDef(encoding.y) && isContinuous(encoding.y);\n if (xIsContinuous && !yIsContinuous) {\n return mark !== 'tick' ? 'horizontal' : 'vertical';\n }\n else if (!xIsContinuous && yIsContinuous) {\n return mark !== 'tick' ? 'vertical' : 'horizontal';\n }\n else if (xIsContinuous && yIsContinuous) {\n const xDef = encoding.x; // we can cast here since they are surely fieldDef\n const yDef = encoding.y;\n const xIsTemporal = xDef.type === TEMPORAL;\n const yIsTemporal = yDef.type === TEMPORAL;\n // temporal without timeUnit is considered continuous, but better serves as dimension\n if (xIsTemporal && !yIsTemporal) {\n return mark !== 'tick' ? 'vertical' : 'horizontal';\n }\n else if (!xIsTemporal && yIsTemporal) {\n return mark !== 'tick' ? 'horizontal' : 'vertical';\n }\n if (!xDef.aggregate && yDef.aggregate) {\n return mark !== 'tick' ? 'vertical' : 'horizontal';\n }\n else if (xDef.aggregate && !yDef.aggregate) {\n return mark !== 'tick' ? 'horizontal' : 'vertical';\n }\n if (specifiedOrient) {\n // When ambiguous, use user specified one.\n return specifiedOrient;\n }\n return 'vertical';\n }\n else {\n // Discrete x Discrete case\n if (specifiedOrient) {\n // When ambiguous, use user specified one.\n return specifiedOrient;\n }\n return undefined;\n }\n }\n }\n return 'vertical';\n}\n//# sourceMappingURL=init.js.map","import { GEOPOSITION_CHANNELS, NONPOSITION_SCALE_CHANNELS, SCALE_CHANNELS, supportLegend, X, Y } from '../channel';\nimport { getTypedFieldDef, hasConditionalFieldDef, isFieldDef } from '../channeldef';\nimport * as vlEncoding from '../encoding';\nimport { normalizeEncoding } from '../encoding';\nimport { GEOSHAPE, isMarkDef } from '../mark';\nimport { stack } from '../stack';\nimport { assembleAxisSignals } from './axis/assemble';\nimport { parseUnitAxes } from './axis/parse';\nimport { parseData } from './data/parse';\nimport { assembleLayoutSignals } from './layoutsize/assemble';\nimport { parseUnitLayoutSize } from './layoutsize/parse';\nimport { normalizeMarkDef } from './mark/init';\nimport { parseMarkGroups } from './mark/mark';\nimport { isLayerModel, ModelWithField } from './model';\nimport { replaceRepeaterInEncoding } from './repeater';\nimport { assembleTopLevelSignals, assembleUnitSelectionData, assembleUnitSelectionMarks, assembleUnitSelectionSignals } from './selection/assemble';\nimport { parseUnitSelection } from './selection/parse';\n/**\n * Internal model of Vega-Lite specification for the compiler.\n */\nexport class UnitModel extends ModelWithField {\n constructor(spec, parent, parentGivenName, parentGivenSize = {}, repeater, config, fit) {\n super(spec, 'unit', parent, parentGivenName, config, repeater, undefined, spec.view);\n this.fit = fit;\n this.specifiedScales = {};\n this.specifiedAxes = {};\n this.specifiedLegends = {};\n this.specifiedProjection = {};\n this.selection = {};\n this.children = [];\n this.initSize(Object.assign({}, parentGivenSize, (spec.width ? { width: spec.width } : {}), (spec.height ? { height: spec.height } : {})));\n const mark = isMarkDef(spec.mark) ? spec.mark.type : spec.mark;\n const encoding = (this.encoding = normalizeEncoding(replaceRepeaterInEncoding(spec.encoding || {}, repeater), mark));\n this.markDef = normalizeMarkDef(spec.mark, encoding, config);\n // calculate stack properties\n this.stack = stack(mark, encoding, this.config.stack);\n this.specifiedScales = this.initScales(mark, encoding);\n this.specifiedAxes = this.initAxes(encoding);\n this.specifiedLegends = this.initLegend(encoding);\n this.specifiedProjection = spec.projection;\n // Selections will be initialized upon parse.\n this.selection = spec.selection;\n }\n get hasProjection() {\n const { encoding } = this;\n const isGeoShapeMark = this.mark === GEOSHAPE;\n const hasGeoPosition = encoding && GEOPOSITION_CHANNELS.some(channel => isFieldDef(encoding[channel]));\n return isGeoShapeMark || hasGeoPosition;\n }\n /**\n * Return specified Vega-lite scale domain for a particular channel\n * @param channel\n */\n scaleDomain(channel) {\n const scale = this.specifiedScales[channel];\n return scale ? scale.domain : undefined;\n }\n axis(channel) {\n return this.specifiedAxes[channel];\n }\n legend(channel) {\n return this.specifiedLegends[channel];\n }\n initScales(mark, encoding) {\n return SCALE_CHANNELS.reduce((scales, channel) => {\n let fieldDef;\n let specifiedScale;\n const channelDef = encoding[channel];\n if (isFieldDef(channelDef)) {\n fieldDef = channelDef;\n specifiedScale = channelDef.scale;\n }\n else if (hasConditionalFieldDef(channelDef)) {\n fieldDef = channelDef.condition;\n specifiedScale = channelDef.condition['scale'];\n }\n if (fieldDef) {\n scales[channel] = specifiedScale || {};\n }\n return scales;\n }, {});\n }\n initAxes(encoding) {\n return [X, Y].reduce((_axis, channel) => {\n // Position Axis\n // TODO: handle ConditionFieldDef\n const channelDef = encoding[channel];\n if (isFieldDef(channelDef) ||\n (channel === X && isFieldDef(encoding.x2)) ||\n (channel === Y && isFieldDef(encoding.y2))) {\n const axisSpec = isFieldDef(channelDef) ? channelDef.axis : null;\n if (axisSpec !== null) {\n _axis[channel] = Object.assign({}, axisSpec);\n }\n }\n return _axis;\n }, {});\n }\n initLegend(encoding) {\n return NONPOSITION_SCALE_CHANNELS.reduce((_legend, channel) => {\n const channelDef = encoding[channel];\n if (channelDef) {\n const legend = isFieldDef(channelDef)\n ? channelDef.legend\n : hasConditionalFieldDef(channelDef)\n ? channelDef.condition['legend']\n : null;\n if (legend !== null && legend !== false && supportLegend(channel)) {\n _legend[channel] = Object.assign({}, legend);\n }\n }\n return _legend;\n }, {});\n }\n parseData() {\n this.component.data = parseData(this);\n }\n parseLayoutSize() {\n parseUnitLayoutSize(this);\n }\n parseSelections() {\n this.component.selection = parseUnitSelection(this, this.selection);\n }\n parseMarkGroup() {\n this.component.mark = parseMarkGroups(this);\n }\n parseAxesAndHeaders() {\n this.component.axes = parseUnitAxes(this);\n }\n assembleSelectionTopLevelSignals(signals) {\n return assembleTopLevelSignals(this, signals);\n }\n assembleSignals() {\n return [...assembleAxisSignals(this), ...assembleUnitSelectionSignals(this, [])];\n }\n assembleSelectionData(data) {\n return assembleUnitSelectionData(this, data);\n }\n assembleLayout() {\n return null;\n }\n assembleLayoutSignals() {\n return assembleLayoutSignals(this);\n }\n assembleMarks() {\n let marks = this.component.mark || [];\n // If this unit is part of a layer, selections should augment\n // all in concert rather than each unit individually. This\n // ensures correct interleaving of clipping and brushed marks.\n if (!this.parent || !isLayerModel(this.parent)) {\n marks = assembleUnitSelectionMarks(this, marks);\n }\n return marks.map(this.correctDataNames);\n }\n getMapping() {\n return this.encoding;\n }\n get mark() {\n return this.markDef.type;\n }\n channelHasField(channel) {\n return vlEncoding.channelHasField(this.encoding, channel);\n }\n fieldDef(channel) {\n const channelDef = this.encoding[channel];\n return getTypedFieldDef(channelDef);\n }\n}\n//# sourceMappingURL=unit.js.map","import * as tslib_1 from \"tslib\";\nimport { selector as parseSelector } from 'vega-event-selector';\nimport { isString } from 'vega-util';\nimport { duplicate, varName } from '../../util';\nimport { forEachTransform } from './transforms/transforms';\nexport function parseUnitSelection(model, selDefs) {\n const selCmpts = {};\n const selectionConfig = model.config.selection;\n if (selDefs) {\n selDefs = duplicate(selDefs); // duplicate to avoid side effects to original spec\n }\n for (let name in selDefs) {\n if (!selDefs.hasOwnProperty(name)) {\n continue;\n }\n const selDef = selDefs[name];\n const _a = selectionConfig[selDef.type], { fields, encodings } = _a, cfg = tslib_1.__rest(_a, [\"fields\", \"encodings\"]); // Project transform applies its defaults.\n // Set default values from config if a property hasn't been specified,\n // or if it is true. E.g., \"translate\": true should use the default\n // event handlers for translate. However, true may be a valid value for\n // a property (e.g., \"nearest\": true).\n for (const key in cfg) {\n // A selection should contain either `encodings` or `fields`, only use\n // default values for these two values if neither of them is specified.\n if ((key === 'encodings' && selDef.fields) || (key === 'fields' && selDef.encodings)) {\n continue;\n }\n if (key === 'mark') {\n selDef[key] = Object.assign({}, cfg[key], selDef[key]);\n }\n if (selDef[key] === undefined || selDef[key] === true) {\n selDef[key] = cfg[key] || selDef[key];\n }\n }\n name = varName(name);\n const selCmpt = (selCmpts[name] = Object.assign({}, selDef, { name: name, events: isString(selDef.on) ? parseSelector(selDef.on, 'scope') : selDef.on }));\n forEachTransform(selCmpt, txCompiler => {\n if (txCompiler.parse) {\n txCompiler.parse(model, selDef, selCmpt);\n }\n });\n }\n return selCmpts;\n}\n//# sourceMappingURL=parse.js.map","import * as log from '../log';\nimport { isLayerSpec, isUnitSpec } from '../spec';\nimport { flatten, keys } from '../util';\nimport { assembleAxisSignals } from './axis/assemble';\nimport { parseLayerAxes } from './axis/parse';\nimport { parseData } from './data/parse';\nimport { assembleLayoutSignals } from './layoutsize/assemble';\nimport { parseLayerLayoutSize } from './layoutsize/parse';\nimport { assembleLegends } from './legend/assemble';\nimport { Model } from './model';\nimport { assembleLayerSelectionMarks } from './selection/assemble';\nimport { UnitModel } from './unit';\nexport class LayerModel extends Model {\n constructor(spec, parent, parentGivenName, parentGivenSize, repeater, config, fit) {\n super(spec, 'layer', parent, parentGivenName, config, repeater, spec.resolve, spec.view);\n const layoutSize = Object.assign({}, parentGivenSize, (spec.width ? { width: spec.width } : {}), (spec.height ? { height: spec.height } : {}));\n this.initSize(layoutSize);\n this.children = spec.layer.map((layer, i) => {\n if (isLayerSpec(layer)) {\n return new LayerModel(layer, this, this.getName('layer_' + i), layoutSize, repeater, config, fit);\n }\n if (isUnitSpec(layer)) {\n return new UnitModel(layer, this, this.getName('layer_' + i), layoutSize, repeater, config, fit);\n }\n throw new Error(log.message.INVALID_SPEC);\n });\n }\n parseData() {\n this.component.data = parseData(this);\n for (const child of this.children) {\n child.parseData();\n }\n }\n parseLayoutSize() {\n parseLayerLayoutSize(this);\n }\n parseSelections() {\n // Merge selections up the hierarchy so that they may be referenced\n // across unit specs. Persist their definitions within each child\n // to assemble signals which remain within output Vega unit groups.\n this.component.selection = {};\n for (const child of this.children) {\n child.parseSelections();\n keys(child.component.selection).forEach(key => {\n this.component.selection[key] = child.component.selection[key];\n });\n }\n }\n parseMarkGroup() {\n for (const child of this.children) {\n child.parseMarkGroup();\n }\n }\n parseAxesAndHeaders() {\n parseLayerAxes(this);\n }\n assembleSelectionTopLevelSignals(signals) {\n return this.children.reduce((sg, child) => child.assembleSelectionTopLevelSignals(sg), signals);\n }\n // TODO: Support same named selections across children.\n assembleSignals() {\n return this.children.reduce((signals, child) => {\n return signals.concat(child.assembleSignals());\n }, assembleAxisSignals(this));\n }\n assembleLayoutSignals() {\n return this.children.reduce((signals, child) => {\n return signals.concat(child.assembleLayoutSignals());\n }, assembleLayoutSignals(this));\n }\n assembleSelectionData(data) {\n return this.children.reduce((db, child) => child.assembleSelectionData(db), data);\n }\n assembleTitle() {\n let title = super.assembleTitle();\n if (title) {\n return title;\n }\n // If title does not provide layer, look into children\n for (const child of this.children) {\n title = child.assembleTitle();\n if (title) {\n return title;\n }\n }\n return undefined;\n }\n assembleLayout() {\n return null;\n }\n assembleMarks() {\n return assembleLayerSelectionMarks(this, flatten(this.children.map(child => {\n return child.assembleMarks();\n })));\n }\n assembleLegends() {\n return this.children.reduce((legends, child) => {\n return legends.concat(child.assembleLegends());\n }, assembleLegends(this));\n }\n}\n//# sourceMappingURL=layer.js.map","import { isArray } from 'vega-util';\nimport * as log from '../log';\nimport { BaseConcatModel } from './baseconcat';\nimport { buildModel } from './buildmodel';\nimport { parseRepeatLayoutSize } from './layoutsize/parse';\nexport class RepeatModel extends BaseConcatModel {\n constructor(spec, parent, parentGivenName, repeatValues, config) {\n super(spec, 'repeat', parent, parentGivenName, config, repeatValues, spec.resolve);\n if (spec.resolve && spec.resolve.axis && (spec.resolve.axis.x === 'shared' || spec.resolve.axis.y === 'shared')) {\n log.warn(log.message.REPEAT_CANNOT_SHARE_AXIS);\n }\n this.repeat = spec.repeat;\n this.children = this._initChildren(spec, this.repeat, repeatValues, config);\n }\n _initChildren(spec, repeat, repeater, config) {\n const children = [];\n const row = (!isArray(repeat) && repeat.row) || [repeater ? repeater.row : null];\n const column = (!isArray(repeat) && repeat.column) || [repeater ? repeater.column : null];\n const repeatValues = (isArray(repeat) && repeat) || [repeater ? repeater.repeat : null];\n // cross product\n for (const repeatValue of repeatValues) {\n for (const rowValue of row) {\n for (const columnValue of column) {\n const name = (repeatValue ? `__repeat_repeat_${repeatValue}` : '') +\n (rowValue ? `__repeat_row_${rowValue}` : '') +\n (columnValue ? `__repeat_column_${columnValue}` : '');\n const childRepeat = {\n repeat: repeatValue,\n row: rowValue,\n column: columnValue\n };\n children.push(buildModel(spec.spec, this, this.getName('child' + name), undefined, childRepeat, config, false));\n }\n }\n }\n return children;\n }\n parseLayoutSize() {\n parseRepeatLayoutSize(this);\n }\n assembleDefaultLayout() {\n const { repeat } = this;\n const columns = isArray(repeat) ? undefined : repeat.column ? repeat.column.length : 1;\n return Object.assign({}, (columns ? { columns } : {}), { bounds: 'full', align: 'all' });\n }\n}\n//# sourceMappingURL=repeat.js.map","import * as log from '../log';\nimport { isAnyConcatSpec, isFacetSpec, isLayerSpec, isRepeatSpec, isUnitSpec } from '../spec';\nimport { ConcatModel } from './concat';\nimport { FacetModel } from './facet';\nimport { LayerModel } from './layer';\nimport { RepeatModel } from './repeat';\nimport { UnitModel } from './unit';\nexport function buildModel(spec, parent, parentGivenName, unitSize, repeater, config, fit) {\n if (isFacetSpec(spec)) {\n return new FacetModel(spec, parent, parentGivenName, repeater, config);\n }\n if (isLayerSpec(spec)) {\n return new LayerModel(spec, parent, parentGivenName, unitSize, repeater, config, fit);\n }\n if (isUnitSpec(spec)) {\n return new UnitModel(spec, parent, parentGivenName, unitSize, repeater, config, fit);\n }\n if (isRepeatSpec(spec)) {\n return new RepeatModel(spec, parent, parentGivenName, repeater, config);\n }\n if (isAnyConcatSpec(spec)) {\n return new ConcatModel(spec, parent, parentGivenName, repeater, config);\n }\n throw new Error(log.message.INVALID_SPEC);\n}\n//# sourceMappingURL=buildmodel.js.map","import * as vlFieldDef from '../channeldef';\nimport { initConfig, stripAndRedirectConfig } from '../config';\nimport * as log from '../log';\nimport { normalize } from '../normalize/index';\nimport { isLayerSpec, isUnitSpec } from '../spec';\nimport { extractTopLevelProperties, normalizeAutoSize } from '../spec/toplevel';\nimport { keys, mergeDeep } from '../util';\nimport { buildModel } from './buildmodel';\nimport { assembleRootData } from './data/assemble';\n// import {draw} from './data/debug';\nimport { optimizeDataflow } from './data/optimize';\n/**\n * Vega-Lite's main function, for compiling Vega-lite spec into Vega spec.\n *\n * At a high-level, we make the following transformations in different phases:\n *\n * Input spec\n * |\n * | (Normalization)\n * v\n * Normalized Spec (Row/Column channels in single-view specs becomes faceted specs, composite marks becomes layered specs.)\n * |\n * | (Build Model)\n * v\n * A model tree of the spec\n * |\n * | (Parse)\n * v\n * A model tree with parsed components (intermediate structure of visualization primitives in a format that can be easily merged)\n * |\n * | (Optimize)\n * v\n * A model tree with parsed components with the data component optimized\n * |\n * | (Assemble)\n * v\n * Vega spec\n */\nexport function compile(inputSpec, opt = {}) {\n // 0. Augment opt with default opts\n if (opt.logger) {\n // set the singleton logger to the provided logger\n log.set(opt.logger);\n }\n if (opt.fieldTitle) {\n // set the singleton field title formatter\n vlFieldDef.setTitleFormatter(opt.fieldTitle);\n }\n try {\n // 1. Initialize config by deep merging default config with the config provided via option and the input spec.\n const config = initConfig(mergeDeep({}, opt.config, inputSpec.config));\n // 2. Normalize: Convert input spec -> normalized spec\n // - Decompose all extended unit specs into composition of unit spec. For example, a box plot get expanded into multiple layers of bars, ticks, and rules. The shorthand row/column channel is also expanded to a facet spec.\n const spec = normalize(inputSpec, config);\n // - Normalize autosize to be a autosize properties object.\n const autosize = normalizeAutoSize(inputSpec.autosize, config.autosize, isLayerSpec(spec) || isUnitSpec(spec));\n // 3. Build Model: normalized spec -> Model (a tree structure)\n // This phases instantiates the models with default config by doing a top-down traversal. This allows us to pass properties that child models derive from their parents via their constructors.\n // See the abstract `Model` class and its children (UnitModel, LayerModel, FacetModel, RepeatModel, ConcatModel) for different types of models.\n const model = buildModel(spec, null, '', undefined, undefined, config, autosize.type === 'fit');\n // 4 Parse: Model --> Model with components\n // Note that components = intermediate representations that are equivalent to Vega specs.\n // We need these intermediate representation because we need to merge many visualization \"components\" like projections, scales, axes, and legends.\n // We will later convert these components into actual Vega specs in the assemble phase.\n // In this phase, we do a bottom-up traversal over the whole tree to\n // parse for each type of components once (e.g., data, layout, mark, scale).\n // By doing bottom-up traversal, we start parsing components of unit specs and\n // then merge child components of parent composite specs.\n //\n // Please see inside model.parse() for order of different components parsed.\n model.parse();\n // draw(model.component.data.sources);\n // 5. Optimize the dataflow. This will modify the data component of the model.\n optimizeDataflow(model.component.data, model);\n // 6. Assemble: convert model components --> Vega Spec.\n return assembleTopLevelModel(model, getTopLevelProperties(inputSpec, config, autosize), inputSpec.datasets, inputSpec.usermeta);\n }\n finally {\n // Reset the singleton logger if a logger is provided\n if (opt.logger) {\n log.reset();\n }\n // Reset the singleton field title formatter if provided\n if (opt.fieldTitle) {\n vlFieldDef.resetTitleFormatter();\n }\n }\n}\nfunction getTopLevelProperties(topLevelSpec, config, autosize) {\n return Object.assign({ autosize: keys(autosize).length === 1 && autosize.type ? autosize.type : autosize }, extractTopLevelProperties(config), extractTopLevelProperties(topLevelSpec));\n}\n/*\n * Assemble the top-level model.\n *\n * Note: this couldn't be `model.assemble()` since the top-level model\n * needs some special treatment to generate top-level properties.\n */\nfunction assembleTopLevelModel(model, topLevelProperties, datasets = {}, usermeta) {\n // Config with Vega-Lite only config removed.\n const vgConfig = model.config ? stripAndRedirectConfig(model.config) : undefined;\n const data = [].concat(model.assembleSelectionData([]), \n // only assemble data in the root\n assembleRootData(model.component.data, datasets));\n const projections = model.assembleProjections();\n const title = model.assembleTitle();\n const style = model.assembleGroupStyle();\n const encodeEntry = model.assembleGroupEncodeEntry(true);\n let layoutSignals = model.assembleLayoutSignals();\n // move width and height signals with values to top level\n layoutSignals = layoutSignals.filter(signal => {\n if ((signal.name === 'width' || signal.name === 'height') && signal.value !== undefined) {\n topLevelProperties[signal.name] = +signal.value;\n return false;\n }\n return true;\n });\n const output = Object.assign({ $schema: 'https://vega.github.io/schema/vega/v5.json' }, (model.description ? { description: model.description } : {}), topLevelProperties, (title ? { title } : {}), (style ? { style } : {}), (encodeEntry ? { encode: { update: encodeEntry } } : {}), { data }, (projections.length > 0 ? { projections: projections } : {}), model.assembleGroup([...layoutSignals, ...model.assembleSelectionTopLevelSignals([])]), (vgConfig ? { config: vgConfig } : {}), (usermeta ? { usermeta } : {}));\n return {\n spec: output\n // TODO: add warning / errors here\n };\n}\n//# sourceMappingURL=compile.js.map","import { extractTransformsFromEncoding } from './encoding';\nimport { SpecMapper } from './spec/map';\nclass TransformExtractMapper extends SpecMapper {\n mapUnit(spec, { config }) {\n if (spec.encoding) {\n const { encoding: oldEncoding, transform: oldTransforms } = spec;\n const { bins, timeUnits, aggregate, groupby, encoding } = extractTransformsFromEncoding(oldEncoding, config);\n const transform = [\n ...(oldTransforms ? oldTransforms : []),\n ...bins,\n ...timeUnits,\n ...(!aggregate.length ? [] : [{ aggregate, groupby }])\n ];\n return Object.assign({}, spec, (transform.length > 0 ? { transform } : {}), { encoding });\n }\n else {\n return spec;\n }\n }\n}\nconst extractor = new TransformExtractMapper();\n/**\n * Modifies spec extracting transformations from encoding and moving them to the transforms array\n */\nexport function extractTransforms(spec, config) {\n return extractor.map(spec, { config });\n}\n//# sourceMappingURL=transformextract.js.map","import pkg from '../package.json';\nimport { normalize } from './normalize';\nconst version = pkg.version;\nexport { compile } from './compile/compile';\nexport { extractTransforms } from './transformextract';\nexport { normalize, version };\n//# sourceMappingURL=index.js.map","const markColor = '#4572a7';\nconst excelTheme = {\n background: '#fff',\n arc: { fill: markColor },\n area: { fill: markColor },\n line: { stroke: markColor, strokeWidth: 2 },\n path: { stroke: markColor },\n rect: { fill: markColor },\n shape: { stroke: markColor },\n symbol: { fill: markColor, strokeWidth: 1.5, size: 50 },\n axis: {\n bandPosition: 0.5,\n grid: true,\n gridColor: '#000000',\n gridOpacity: 1,\n gridWidth: 0.5,\n labelPadding: 10,\n tickSize: 5,\n tickWidth: 0.5,\n },\n axisBand: {\n grid: false,\n tickExtra: true,\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 50,\n symbolType: 'square',\n },\n range: {\n category: [\n '#4572a7',\n '#aa4643',\n '#8aa453',\n '#71598e',\n '#4598ae',\n '#d98445',\n '#94aace',\n '#d09393',\n '#b9cc98',\n '#a99cbc',\n ],\n },\n};\nexport default excelTheme;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtZXhjZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGhlbWUtZXhjZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBRTVCLE1BQU0sVUFBVSxHQUFXO0lBQ3pCLFVBQVUsRUFBRSxNQUFNO0lBRWxCLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDeEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN6QixJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUU7SUFDM0MsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTtJQUMzQixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3pCLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7SUFDNUIsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7SUFFdkQsSUFBSSxFQUFFO1FBQ0osWUFBWSxFQUFFLEdBQUc7UUFDakIsSUFBSSxFQUFFLElBQUk7UUFDVixTQUFTLEVBQUUsU0FBUztRQUNwQixXQUFXLEVBQUUsQ0FBQztRQUNkLFNBQVMsRUFBRSxHQUFHO1FBQ2QsWUFBWSxFQUFFLEVBQUU7UUFDaEIsUUFBUSxFQUFFLENBQUM7UUFDWCxTQUFTLEVBQUUsR0FBRztLQUNmO0lBRUQsUUFBUSxFQUFFO1FBQ1IsSUFBSSxFQUFFLEtBQUs7UUFDWCxTQUFTLEVBQUUsSUFBSTtLQUNoQjtJQUVELE1BQU0sRUFBRTtRQUNOLGFBQWEsRUFBRSxRQUFRO1FBQ3ZCLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLFVBQVUsRUFBRSxFQUFFO1FBQ2QsVUFBVSxFQUFFLFFBQVE7S0FDckI7SUFFRCxLQUFLLEVBQUU7UUFDTCxRQUFRLEVBQUU7WUFDUixTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1Y7S0FDRjtDQUNGLENBQUM7QUFFRixlQUFlLFVBQVUsQ0FBQyJ9","const markColor = '#000';\nconst ggplot2Theme = {\n group: {\n fill: '#e5e5e5',\n },\n arc: { fill: markColor },\n area: { fill: markColor },\n line: { stroke: markColor },\n path: { stroke: markColor },\n rect: { fill: markColor },\n shape: { stroke: markColor },\n symbol: { fill: markColor, size: 40 },\n axis: {\n domain: false,\n grid: true,\n gridColor: '#FFFFFF',\n gridOpacity: 1,\n labelColor: '#7F7F7F',\n labelPadding: 4,\n tickColor: '#7F7F7F',\n tickSize: 5.67,\n titleFontSize: 16,\n titleFontWeight: 'normal',\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 40,\n },\n range: {\n category: [\n '#000000',\n '#7F7F7F',\n '#1A1A1A',\n '#999999',\n '#333333',\n '#B0B0B0',\n '#4D4D4D',\n '#C9C9C9',\n '#666666',\n '#DCDCDC',\n ],\n },\n};\nexport default ggplot2Theme;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtZ2dwbG90Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aGVtZS1nZ3Bsb3QyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUV6QixNQUFNLFlBQVksR0FBVztJQUMzQixLQUFLLEVBQUU7UUFDTCxJQUFJLEVBQUUsU0FBUztLQUNoQjtJQUVELEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDeEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN6QixJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0lBQzNCLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7SUFDM0IsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN6QixLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0lBQzVCLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtJQUVyQyxJQUFJLEVBQUU7UUFDSixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxJQUFJO1FBQ1YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsV0FBVyxFQUFFLENBQUM7UUFDZCxVQUFVLEVBQUUsU0FBUztRQUNyQixZQUFZLEVBQUUsQ0FBQztRQUNmLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsYUFBYSxFQUFFLEVBQUU7UUFDakIsZUFBZSxFQUFFLFFBQVE7S0FDMUI7SUFFRCxNQUFNLEVBQUU7UUFDTixhQUFhLEVBQUUsUUFBUTtRQUN2QixhQUFhLEVBQUUsRUFBRTtRQUNqQixVQUFVLEVBQUUsRUFBRTtLQUNmO0lBRUQsS0FBSyxFQUFFO1FBQ0wsUUFBUSxFQUFFO1lBQ1IsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztTQUNWO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsZUFBZSxZQUFZLENBQUMifQ==","const markColor = '#ab5787';\nconst axisColor = '#979797';\nconst quartzTheme = {\n background: '#f9f9f9',\n arc: { fill: markColor },\n area: { fill: markColor },\n line: { stroke: markColor },\n path: { stroke: markColor },\n rect: { fill: markColor },\n shape: { stroke: markColor },\n symbol: { fill: markColor, size: 30 },\n axis: {\n domainColor: axisColor,\n domainWidth: 0.5,\n gridWidth: 0.2,\n labelColor: axisColor,\n tickColor: axisColor,\n tickWidth: 0.2,\n titleColor: axisColor,\n },\n axisBand: {\n grid: false,\n },\n axisX: {\n grid: true,\n tickSize: 10,\n },\n axisY: {\n domain: false,\n grid: true,\n tickSize: 0,\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square',\n },\n range: {\n category: [\n '#ab5787',\n '#51b2e5',\n '#703c5c',\n '#168dd9',\n '#d190b6',\n '#00609f',\n '#d365ba',\n '#154866',\n '#666666',\n '#c4c4c4',\n ],\n },\n};\nexport default quartzTheme;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtcXVhcnR6LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RoZW1lLXF1YXJ0ei50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDNUIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBRTVCLE1BQU0sV0FBVyxHQUFXO0lBQzFCLFVBQVUsRUFBRSxTQUFTO0lBRXJCLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDeEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN6QixJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0lBQzNCLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7SUFDM0IsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN6QixLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0lBQzVCLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtJQUVyQyxJQUFJLEVBQUU7UUFDSixXQUFXLEVBQUUsU0FBUztRQUN0QixXQUFXLEVBQUUsR0FBRztRQUNoQixTQUFTLEVBQUUsR0FBRztRQUNkLFVBQVUsRUFBRSxTQUFTO1FBQ3JCLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFNBQVMsRUFBRSxHQUFHO1FBQ2QsVUFBVSxFQUFFLFNBQVM7S0FDdEI7SUFFRCxRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsS0FBSztLQUNaO0lBRUQsS0FBSyxFQUFFO1FBQ0wsSUFBSSxFQUFFLElBQUk7UUFDVixRQUFRLEVBQUUsRUFBRTtLQUNiO0lBRUQsS0FBSyxFQUFFO1FBQ0wsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsSUFBSTtRQUNWLFFBQVEsRUFBRSxDQUFDO0tBQ1o7SUFFRCxNQUFNLEVBQUU7UUFDTixhQUFhLEVBQUUsRUFBRTtRQUNqQixPQUFPLEVBQUUsQ0FBQztRQUNWLFVBQVUsRUFBRSxFQUFFO1FBQ2QsVUFBVSxFQUFFLFFBQVE7S0FDckI7SUFFRCxLQUFLLEVBQUU7UUFDTCxRQUFRLEVBQUU7WUFDUixTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1Y7S0FDRjtDQUNGLENBQUM7QUFFRixlQUFlLFdBQVcsQ0FBQyJ9","const markColor = '#3e5c69';\nconst voxTheme = {\n background: '#fff',\n arc: { fill: markColor },\n area: { fill: markColor },\n line: { stroke: markColor },\n path: { stroke: markColor },\n rect: { fill: markColor },\n shape: { stroke: markColor },\n symbol: { fill: markColor },\n axis: {\n domainWidth: 0.5,\n grid: true,\n labelPadding: 2,\n tickSize: 5,\n tickWidth: 0.5,\n titleFontWeight: 'normal',\n },\n axisBand: {\n grid: false,\n },\n axisX: {\n gridWidth: 0.2,\n },\n axisY: {\n gridDash: [3],\n gridWidth: 0.4,\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolType: 'square',\n },\n range: {\n category: [\n '#3e5c69',\n '#6793a6',\n '#182429',\n '#0570b0',\n '#3690c0',\n '#74a9cf',\n '#a6bddb',\n '#e2ddf2',\n ],\n },\n};\nexport default voxTheme;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtdm94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RoZW1lLXZveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFFNUIsTUFBTSxRQUFRLEdBQVc7SUFDdkIsVUFBVSxFQUFFLE1BQU07SUFFbEIsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN4QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3pCLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7SUFDM0IsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTtJQUMzQixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3pCLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7SUFDNUIsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUUzQixJQUFJLEVBQUU7UUFDSixXQUFXLEVBQUUsR0FBRztRQUNoQixJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxDQUFDO1FBQ2YsUUFBUSxFQUFFLENBQUM7UUFDWCxTQUFTLEVBQUUsR0FBRztRQUNkLGVBQWUsRUFBRSxRQUFRO0tBQzFCO0lBRUQsUUFBUSxFQUFFO1FBQ1IsSUFBSSxFQUFFLEtBQUs7S0FDWjtJQUVELEtBQUssRUFBRTtRQUNMLFNBQVMsRUFBRSxHQUFHO0tBQ2Y7SUFFRCxLQUFLLEVBQUU7UUFDTCxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDYixTQUFTLEVBQUUsR0FBRztLQUNmO0lBRUQsTUFBTSxFQUFFO1FBQ04sYUFBYSxFQUFFLEVBQUU7UUFDakIsT0FBTyxFQUFFLENBQUM7UUFDVixVQUFVLEVBQUUsUUFBUTtLQUNyQjtJQUVELEtBQUssRUFBRTtRQUNMLFFBQVEsRUFBRTtZQUNSLFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1Y7S0FDRjtDQUNGLENBQUM7QUFFRixlQUFlLFFBQVEsQ0FBQyJ9","const lightColor = '#fff';\nconst medColor = '#888';\nconst darkTheme = {\n background: '#333',\n title: { color: lightColor },\n style: {\n 'guide-label': {\n fill: lightColor,\n },\n 'guide-title': {\n fill: lightColor,\n },\n },\n axis: {\n domainColor: lightColor,\n gridColor: medColor,\n tickColor: lightColor,\n },\n};\nexport default darkTheme;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtZGFyay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aGVtZS1kYXJrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUMxQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUM7QUFFeEIsTUFBTSxTQUFTLEdBQVc7SUFDeEIsVUFBVSxFQUFFLE1BQU07SUFFbEIsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtJQUU1QixLQUFLLEVBQUU7UUFDTCxhQUFhLEVBQUU7WUFDYixJQUFJLEVBQUUsVUFBVTtTQUNqQjtRQUNELGFBQWEsRUFBRTtZQUNiLElBQUksRUFBRSxVQUFVO1NBQ2pCO0tBQ0Y7SUFFRCxJQUFJLEVBQUU7UUFDSixXQUFXLEVBQUUsVUFBVTtRQUN2QixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsVUFBVTtLQUN0QjtDQUNGLENBQUM7QUFFRixlQUFlLFNBQVMsQ0FBQyJ9","const markColor = '#30a2da';\nconst axisColor = '#cbcbcb';\nconst guideLabelColor = '#999';\nconst guideTitleColor = '#333';\nconst backgroundColor = '#f0f0f0';\nconst blackTitle = '#333';\nconst fiveThirtyEightTheme = {\n arc: { fill: markColor },\n area: { fill: markColor },\n axisBand: {\n grid: false,\n },\n axisBottom: {\n domain: false,\n domainColor: blackTitle,\n domainWidth: 3,\n grid: true,\n gridColor: axisColor,\n gridWidth: 1,\n labelColor: guideLabelColor,\n labelFontSize: 10,\n labelPadding: 4,\n tickColor: axisColor,\n tickSize: 10,\n titleFontSize: 14,\n titlePadding: 10,\n },\n axisLeft: {\n domainColor: axisColor,\n domainWidth: 1,\n grid: true,\n gridColor: axisColor,\n gridWidth: 1,\n labelColor: guideLabelColor,\n labelFontSize: 10,\n labelPadding: 4,\n tickColor: axisColor,\n tickSize: 10,\n ticks: true,\n titleFontSize: 14,\n titlePadding: 10,\n },\n axisRight: {\n domainColor: blackTitle,\n domainWidth: 1,\n grid: true,\n gridColor: axisColor,\n gridWidth: 1,\n labelColor: guideLabelColor,\n labelFontSize: 10,\n labelPadding: 4,\n tickColor: axisColor,\n tickSize: 10,\n ticks: true,\n titleFontSize: 14,\n titlePadding: 10,\n },\n axisTop: {\n domain: false,\n domainColor: blackTitle,\n domainWidth: 3,\n grid: true,\n gridColor: axisColor,\n gridWidth: 1,\n labelColor: guideLabelColor,\n labelFontSize: 10,\n labelPadding: 4,\n tickColor: axisColor,\n tickSize: 10,\n titleFontSize: 14,\n titlePadding: 10,\n },\n background: backgroundColor,\n group: {\n fill: backgroundColor,\n },\n legend: {\n labelColor: blackTitle,\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square',\n titleColor: blackTitle,\n titleFontSize: 14,\n titlePadding: 10,\n },\n line: {\n stroke: markColor,\n strokeWidth: 2,\n },\n path: { stroke: markColor, strokeWidth: 0.5 },\n rect: { fill: markColor },\n range: {\n category: [\n '#30a2da',\n '#fc4f30',\n '#e5ae38',\n '#6d904f',\n '#8b8b8b',\n '#b96db8',\n '#ff9e27',\n '#56cc60',\n '#52d2ca',\n '#52689e',\n '#545454',\n '#9fe4f8',\n ],\n diverging: [\n '#cc0020',\n '#e77866',\n '#f6e7e1',\n '#d6e8ed',\n '#91bfd9',\n '#1d78b5',\n ],\n heatmap: ['#d6e8ed', '#cee0e5', '#91bfd9', '#549cc6', '#1d78b5'],\n },\n symbol: {\n filled: true,\n shape: 'circle',\n },\n shape: { stroke: markColor },\n style: {\n bar: {\n binSpacing: 2,\n fill: markColor,\n stroke: null,\n },\n },\n title: {\n anchor: 'start',\n fontSize: 24,\n fontWeight: 600,\n offset: 20,\n },\n};\nexport default fiveThirtyEightTheme;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtZml2ZXRoaXJ0eWVpZ2h0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RoZW1lLWZpdmV0aGlydHllaWdodC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDNUIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQzVCLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQztBQUMvQixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFDL0IsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ2xDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUUxQixNQUFNLG9CQUFvQixHQUFXO0lBQ25DLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDeEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUV6QixRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsS0FBSztLQUNaO0lBRUQsVUFBVSxFQUFFO1FBQ1YsTUFBTSxFQUFFLEtBQUs7UUFDYixXQUFXLEVBQUUsVUFBVTtRQUN2QixXQUFXLEVBQUUsQ0FBQztRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsU0FBUyxFQUFFLENBQUM7UUFDWixVQUFVLEVBQUUsZUFBZTtRQUMzQixhQUFhLEVBQUUsRUFBRTtRQUNqQixZQUFZLEVBQUUsQ0FBQztRQUNmLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFFBQVEsRUFBRSxFQUFFO1FBQ1osYUFBYSxFQUFFLEVBQUU7UUFDakIsWUFBWSxFQUFFLEVBQUU7S0FDakI7SUFFRCxRQUFRLEVBQUU7UUFDUixXQUFXLEVBQUUsU0FBUztRQUN0QixXQUFXLEVBQUUsQ0FBQztRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsU0FBUyxFQUFFLENBQUM7UUFDWixVQUFVLEVBQUUsZUFBZTtRQUMzQixhQUFhLEVBQUUsRUFBRTtRQUNqQixZQUFZLEVBQUUsQ0FBQztRQUNmLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFFBQVEsRUFBRSxFQUFFO1FBQ1osS0FBSyxFQUFFLElBQUk7UUFDWCxhQUFhLEVBQUUsRUFBRTtRQUNqQixZQUFZLEVBQUUsRUFBRTtLQUNqQjtJQUVELFNBQVMsRUFBRTtRQUNULFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLFdBQVcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxFQUFFLElBQUk7UUFDVixTQUFTLEVBQUUsU0FBUztRQUNwQixTQUFTLEVBQUUsQ0FBQztRQUNaLFVBQVUsRUFBRSxlQUFlO1FBQzNCLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLFlBQVksRUFBRSxDQUFDO1FBQ2YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsUUFBUSxFQUFFLEVBQUU7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLFlBQVksRUFBRSxFQUFFO0tBQ2pCO0lBRUQsT0FBTyxFQUFFO1FBQ1AsTUFBTSxFQUFFLEtBQUs7UUFDYixXQUFXLEVBQUUsVUFBVTtRQUN2QixXQUFXLEVBQUUsQ0FBQztRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsU0FBUyxFQUFFLENBQUM7UUFDWixVQUFVLEVBQUUsZUFBZTtRQUMzQixhQUFhLEVBQUUsRUFBRTtRQUNqQixZQUFZLEVBQUUsQ0FBQztRQUNmLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFFBQVEsRUFBRSxFQUFFO1FBQ1osYUFBYSxFQUFFLEVBQUU7UUFDakIsWUFBWSxFQUFFLEVBQUU7S0FDakI7SUFFRCxVQUFVLEVBQUUsZUFBZTtJQUMzQixLQUFLLEVBQUU7UUFDTCxJQUFJLEVBQUUsZUFBZTtLQUN0QjtJQUVELE1BQU0sRUFBRTtRQUNOLFVBQVUsRUFBRSxVQUFVO1FBQ3RCLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsVUFBVSxFQUFFLEVBQUU7UUFDZCxVQUFVLEVBQUUsUUFBUTtRQUNwQixVQUFVLEVBQUUsVUFBVTtRQUN0QixhQUFhLEVBQUUsRUFBRTtRQUNqQixZQUFZLEVBQUUsRUFBRTtLQUNqQjtJQUVELElBQUksRUFBRTtRQUNKLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxDQUFDO0tBQ2Y7SUFFRCxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUU7SUFDN0MsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUV6QixLQUFLLEVBQUU7UUFDTCxRQUFRLEVBQUU7WUFDUixTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7U0FDVjtRQUVELFNBQVMsRUFBRTtZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztTQUNWO1FBQ0QsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztLQUNqRTtJQUVELE1BQU0sRUFBRTtRQUNOLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLFFBQVE7S0FDaEI7SUFFRCxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0lBRTVCLEtBQUssRUFBRTtRQUNMLEdBQUcsRUFBRTtZQUNILFVBQVUsRUFBRSxDQUFDO1lBQ2IsSUFBSSxFQUFFLFNBQVM7WUFDZixNQUFNLEVBQUUsSUFBSTtTQUNiO0tBQ0Y7SUFFRCxLQUFLLEVBQUU7UUFDTCxNQUFNLEVBQUUsT0FBTztRQUNmLFFBQVEsRUFBRSxFQUFFO1FBQ1osVUFBVSxFQUFFLEdBQUc7UUFDZixNQUFNLEVBQUUsRUFBRTtLQUNYO0NBQ0YsQ0FBQztBQUVGLGVBQWUsb0JBQW9CLENBQUMifQ==","const headlineFontSize = 22;\nconst headlineFontWeight = 'normal';\nconst labelFont = 'Benton Gothic, sans';\nconst labelFontSize = 11.5;\nconst labelFontWeight = 'normal';\nconst markColor = '#82c6df';\nconst markHighlight = '#006d8f';\nconst markDemocrat = '#5789b8';\nconst markRepublican = '#d94f54';\nconst titleFont = 'Benton Gothic Bold, sans';\nconst titleFontWeight = 'normal';\nconst titleFontSize = 13;\nconst colorSchemes = {\n 'category-6': [\n '#ec8431',\n '#829eb1',\n '#c89d29',\n '#3580b1',\n '#adc839',\n '#ab7fb4',\n ],\n 'fire-7': [\n '#fbf2c7',\n '#f9e39c',\n '#f8d36e',\n '#f4bb6a',\n '#e68a4f',\n '#d15a40',\n '#ab4232',\n ],\n 'fireandice-6': [\n '#e68a4f',\n '#f4bb6a',\n '#f9e39c',\n '#dadfe2',\n '#a6b7c6',\n '#849eae',\n ],\n 'ice-7': [\n '#edefee',\n '#dadfe2',\n '#c4ccd2',\n '#a6b7c6',\n '#849eae',\n '#607785',\n '#47525d',\n ],\n};\nconst latimesTheme = {\n background: '#ffffff',\n title: {\n anchor: 'start',\n font: titleFont,\n fontColor: '#000000',\n fontSize: headlineFontSize,\n fontWeight: headlineFontWeight,\n },\n arc: { fill: markColor },\n area: { fill: markColor },\n line: { stroke: markColor, strokeWidth: 2 },\n path: { stroke: markColor },\n rect: { fill: markColor },\n shape: { stroke: markColor },\n symbol: { fill: markColor, size: 30 },\n axis: {\n labelFont,\n labelFontSize,\n labelFontWeight,\n titleFont,\n titleFontSize,\n titleFontWeight,\n },\n axisX: {\n labelAngle: 0,\n labelPadding: 4,\n tickSize: 3,\n },\n axisY: {\n labelBaseline: 'middle',\n maxExtent: 45,\n minExtent: 45,\n tickSize: 2,\n titleAlign: 'left',\n titleAngle: 0,\n titleX: -45,\n titleY: -11,\n },\n legend: {\n labelFont,\n labelFontSize,\n symbolType: 'square',\n titleFont,\n titleFontSize,\n titleFontWeight,\n },\n range: {\n category: colorSchemes['category-6'],\n diverging: colorSchemes['fireandice-6'],\n heatmap: colorSchemes['fire-7'],\n ordinal: colorSchemes['fire-7'],\n ramp: colorSchemes['fire-7'],\n },\n};\nexport default latimesTheme;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtbGF0aW1lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aGVtZS1sYXRpbWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBQzVCLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDO0FBQ3BDLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUFDO0FBQ3hDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQztBQUMzQixNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUM7QUFDakMsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQzVCLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUNoQyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUM7QUFDL0IsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDO0FBQ2pDLE1BQU0sU0FBUyxHQUFHLDBCQUEwQixDQUFDO0FBQzdDLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQztBQUNqQyxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDekIsTUFBTSxZQUFZLEdBQUc7SUFDbkIsWUFBWSxFQUFFO1FBQ1osU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxRQUFRLEVBQUU7UUFDUixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxjQUFjLEVBQUU7UUFDZCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVjtJQUNELE9BQU8sRUFBRTtRQUNQLFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVjtDQUNGLENBQUM7QUFFRixNQUFNLFlBQVksR0FBVztJQUMzQixVQUFVLEVBQUUsU0FBUztJQUVyQixLQUFLLEVBQUU7UUFDTCxNQUFNLEVBQUUsT0FBTztRQUNmLElBQUksRUFBRSxTQUFTO1FBQ2YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixVQUFVLEVBQUUsa0JBQWtCO0tBQy9CO0lBRUQsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN4QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3pCLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRTtJQUMzQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0lBQzNCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDekIsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTtJQUM1QixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7SUFFckMsSUFBSSxFQUFFO1FBQ0osU0FBUztRQUNULGFBQWE7UUFDYixlQUFlO1FBQ2YsU0FBUztRQUNULGFBQWE7UUFDYixlQUFlO0tBQ2hCO0lBRUQsS0FBSyxFQUFFO1FBQ0wsVUFBVSxFQUFFLENBQUM7UUFDYixZQUFZLEVBQUUsQ0FBQztRQUNmLFFBQVEsRUFBRSxDQUFDO0tBQ1o7SUFFRCxLQUFLLEVBQUU7UUFDTCxhQUFhLEVBQUUsUUFBUTtRQUN2QixTQUFTLEVBQUUsRUFBRTtRQUNiLFNBQVMsRUFBRSxFQUFFO1FBQ2IsUUFBUSxFQUFFLENBQUM7UUFDWCxVQUFVLEVBQUUsTUFBTTtRQUNsQixVQUFVLEVBQUUsQ0FBQztRQUNiLE1BQU0sRUFBRSxDQUFDLEVBQUU7UUFDWCxNQUFNLEVBQUUsQ0FBQyxFQUFFO0tBQ1o7SUFFRCxNQUFNLEVBQUU7UUFDTixTQUFTO1FBQ1QsYUFBYTtRQUNiLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFNBQVM7UUFDVCxhQUFhO1FBQ2IsZUFBZTtLQUNoQjtJQUVELEtBQUssRUFBRTtRQUNMLFFBQVEsRUFBRSxZQUFZLENBQUMsWUFBWSxDQUFDO1FBQ3BDLFNBQVMsRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQy9CLE9BQU8sRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDO0tBQzdCO0NBQ0YsQ0FBQztBQUVGLGVBQWUsWUFBWSxDQUFDIn0=","// generated with build-style.sh\nexport default `#vg-tooltip-element {\n visibility: hidden;\n padding: 8px;\n position: fixed;\n z-index: 1000;\n font-family: sans-serif;\n font-size: 11px;\n border-radius: 3px;\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);\n /* The default theme is the light theme. */\n background-color: rgba(255, 255, 255, 0.95);\n border: 1px solid #d9d9d9;\n color: black; }\n #vg-tooltip-element.visible {\n visibility: visible; }\n #vg-tooltip-element h2 {\n margin-top: 0;\n margin-bottom: 10px;\n font-size: 13px; }\n #vg-tooltip-element table {\n border-spacing: 0; }\n #vg-tooltip-element table tr {\n border: none; }\n #vg-tooltip-element table tr td {\n overflow: hidden;\n text-overflow: ellipsis;\n padding-top: 2px;\n padding-bottom: 2px; }\n #vg-tooltip-element table tr td.key {\n color: #808080;\n max-width: 150px;\n text-align: right;\n padding-right: 4px; }\n #vg-tooltip-element table tr td.value {\n display: block;\n max-width: 300px;\n max-height: 7em;\n text-align: left; }\n #vg-tooltip-element.dark-theme {\n background-color: rgba(32, 32, 32, 0.9);\n border: 1px solid #f5f5f5;\n color: white; }\n #vg-tooltip-element.dark-theme td.key {\n color: #bfbfbf; }\n`;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3R5bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0NBQWdDO0FBQ2hDLGVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNENkLENBQUEifQ==","import defaultStyle from './style';\nconst EL_ID = 'vg-tooltip-element';\nexport const DEFAULT_OPTIONS = {\n /**\n * X offset.\n */\n offsetX: 10,\n /**\n * Y offset.\n */\n offsetY: 10,\n /**\n * ID of the tooltip element.\n */\n id: EL_ID,\n /**\n * ID of the tooltip CSS style.\n */\n styleId: 'vega-tooltip-style',\n /**\n * The name of the theme. You can use the CSS class called [THEME]-theme to style the tooltips.\n *\n * There are two predefined themes: \"light\" (default) and \"dark\".\n */\n theme: 'light',\n /**\n * Do not use the default styles provided by Vega Tooltip. If you enable this option, you need to use your own styles. It is not necessary to disable the default style when using a custom theme.\n */\n disableDefaultStyle: false,\n /**\n * HTML sanitizer function that removes dangerous HTML to prevent XSS.\n *\n * This should be a function from string to string. You may replace it with a formatter such as a markdown formatter.\n */\n sanitize: escapeHTML,\n /**\n * The maximum recursion depth when printing objects in the tooltip.\n */\n maxDepth: 2\n};\n/**\n * Escape special HTML characters.\n *\n * @param value A value to convert to string and HTML-escape.\n */\nexport function escapeHTML(value) {\n return String(value)\n .replace(/&/g, '&')\n .replace(/</g, '<');\n}\nexport function createDefaultStyle(id) {\n // Just in case this id comes from a user, ensure these is no security issues\n if (!/^[A-Za-z]+[-:.\\w]*$/.test(id)) {\n throw new Error('Invalid HTML ID');\n }\n return defaultStyle.toString().replace(EL_ID, id);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVmYXVsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLE1BQU0sU0FBUyxDQUFDO0FBRW5DLE1BQU0sS0FBSyxHQUFHLG9CQUFvQixDQUFDO0FBRW5DLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3Qjs7T0FFRztJQUNILE9BQU8sRUFBRSxFQUFFO0lBRVg7O09BRUc7SUFDSCxPQUFPLEVBQUUsRUFBRTtJQUVYOztPQUVHO0lBQ0gsRUFBRSxFQUFFLEtBQUs7SUFFVDs7T0FFRztJQUNILE9BQU8sRUFBRSxvQkFBb0I7SUFFN0I7Ozs7T0FJRztJQUNILEtBQUssRUFBRSxPQUFPO0lBRWQ7O09BRUc7SUFDSCxtQkFBbUIsRUFBRSxLQUFLO0lBRTFCOzs7O09BSUc7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7T0FFRztJQUNILFFBQVEsRUFBRSxDQUFDO0NBQ1osQ0FBQztBQUlGOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQVU7SUFDbkMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ2pCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1NBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxFQUFVO0lBQzNDLDZFQUE2RTtJQUM3RSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztLQUNwQztJQUVELE9BQU8sWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEQsQ0FBQyJ9","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { isArray, isObject, isString } from 'vega-util';\n/**\n * Format the value to be shown in the toolip.\n *\n * @param value The value to show in the tooltip.\n * @param valueToHtml Function to convert a single cell value to an HTML string\n */\nexport function formatValue(value, valueToHtml, maxDepth) {\n if (isArray(value)) {\n return `[${value.map(v => valueToHtml(isString(v) ? v : stringify(v, maxDepth))).join(', ')}]`;\n }\n if (isObject(value)) {\n let content = '';\n const _a = value, { title } = _a, rest = __rest(_a, [\"title\"]);\n if (title) {\n content += `<h2>${valueToHtml(title)}</h2>`;\n }\n const keys = Object.keys(rest);\n if (keys.length > 0) {\n content += '<table>';\n for (const key of keys) {\n let val = rest[key];\n if (isObject(val)) {\n val = stringify(val, maxDepth);\n }\n content += `<tr><td class=\"key\">${valueToHtml(key)}:</td><td class=\"value\">${valueToHtml(val)}</td></tr>`;\n }\n content += `</table>`;\n }\n return content || '{}'; // show empty object if there are no properties\n }\n return valueToHtml(value);\n}\nexport function replacer(maxDepth) {\n const stack = [];\n return function (key, value) {\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n const pos = stack.indexOf(this) + 1;\n stack.length = pos;\n if (stack.length > maxDepth) {\n return '[Object]';\n }\n if (stack.indexOf(value) >= 0) {\n return '[Circular]';\n }\n stack.push(value);\n return value;\n };\n}\n/**\n * Stringify any JS object to valid JSON\n */\nexport function stringify(obj, maxDepth) {\n return JSON.stringify(obj, replacer(maxDepth));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0VmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZm9ybWF0VmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFVLEVBQUUsV0FBbUMsRUFBRSxRQUFnQjtJQUMzRixJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNsQixPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7S0FDaEc7SUFFRCxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNuQixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFFakIsTUFBTSxVQUFpQyxFQUFqQyxFQUFFLEtBQUssT0FBMEIsRUFBeEIsNEJBQXdCLENBQUM7UUFFeEMsSUFBSSxLQUFLLEVBQUU7WUFDVCxPQUFPLElBQUksT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztTQUM3QztRQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQixPQUFPLElBQUksU0FBUyxDQUFDO1lBQ3JCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO2dCQUN0QixJQUFJLEdBQUcsR0FBSSxJQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzdCLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNqQixHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztpQkFDaEM7Z0JBRUQsT0FBTyxJQUFJLHVCQUF1QixXQUFXLENBQUMsR0FBRyxDQUFDLDJCQUEyQixXQUFXLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQzthQUMzRztZQUNELE9BQU8sSUFBSSxVQUFVLENBQUM7U0FDdkI7UUFFRCxPQUFPLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQywrQ0FBK0M7S0FDeEU7SUFFRCxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxRQUFnQjtJQUN2QyxNQUFNLEtBQUssR0FBVSxFQUFFLENBQUM7SUFFeEIsT0FBTyxVQUFvQixHQUFXLEVBQUUsS0FBVTtRQUNoRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQy9DLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNuQixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsUUFBUSxFQUFFO1lBQzNCLE9BQU8sVUFBVSxDQUFDO1NBQ25CO1FBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM3QixPQUFPLFlBQVksQ0FBQztTQUNyQjtRQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQVEsRUFBRSxRQUFnQjtJQUNsRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUMifQ==","import { createDefaultStyle, DEFAULT_OPTIONS } from './defaults';\nimport { formatValue } from './formatValue';\nimport { calculatePosition } from './position';\n/**\n * The tooltip handler class.\n */\nexport class Handler {\n /**\n * Create the tooltip handler and initialize the element and style.\n *\n * @param options Tooltip Options\n */\n constructor(options) {\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n const elementId = this.options.id;\n // bind this to call\n this.call = this.tooltip_handler.bind(this);\n // prepend a default stylesheet for tooltips to the head\n if (!this.options.disableDefaultStyle && !document.getElementById(this.options.styleId)) {\n const style = document.createElement('style');\n style.setAttribute('id', this.options.styleId);\n style.innerHTML = createDefaultStyle(elementId);\n const head = document.head;\n if (head.childNodes.length > 0) {\n head.insertBefore(style, head.childNodes[0]);\n }\n else {\n head.appendChild(style);\n }\n }\n // append a div element that we use as a tooltip unless it already exists\n this.el = document.getElementById(elementId);\n if (!this.el) {\n this.el = document.createElement('div');\n this.el.setAttribute('id', elementId);\n this.el.classList.add('vg-tooltip');\n document.body.appendChild(this.el);\n }\n }\n /**\n * The tooltip handler function.\n */\n tooltip_handler(handler, event, item, value) {\n // console.log(handler, event, item, value);\n // hide tooltip for null, undefined, or empty string values\n if (value == null || value === '') {\n this.el.classList.remove('visible', `${this.options.theme}-theme`);\n return;\n }\n // set the tooltip content\n this.el.innerHTML = formatValue(value, this.options.sanitize, this.options.maxDepth);\n // make the tooltip visible\n this.el.classList.add('visible', `${this.options.theme}-theme`);\n const { x, y } = calculatePosition(event, this.el.getBoundingClientRect(), this.options.offsetX, this.options.offsetY);\n this.el.setAttribute('style', `top: ${y}px; left: ${x}px`);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9IYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQVcsTUFBTSxZQUFZLENBQUM7QUFDMUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxNQUFNLE9BQU8sT0FBTztJQWdCbEI7Ozs7T0FJRztJQUNILFlBQVksT0FBMEI7UUFDcEMsSUFBSSxDQUFDLE9BQU8scUJBQVEsZUFBZSxFQUFLLE9BQU8sQ0FBRSxDQUFDO1FBQ2xELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBRWxDLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLHdEQUF3RDtRQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN2RixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0MsS0FBSyxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUVoRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6QjtTQUNGO1FBRUQseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNaLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRXBDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWUsQ0FBQyxPQUFZLEVBQUUsS0FBaUIsRUFBRSxJQUFTLEVBQUUsS0FBVTtRQUM1RSw0Q0FBNEM7UUFFNUMsMkRBQTJEO1FBQzNELElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUM7WUFDbkUsT0FBTztTQUNSO1FBRUQsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVyRiwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUVoRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLGlCQUFpQixDQUNoQyxLQUFLLEVBQ0wsSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxFQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ3JCLENBQUM7UUFFRixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0YifQ==","/**\n * Position the tooltip\n *\n * @param event The mouse event.\n * @param tooltipBox\n * @param offsetX Horizontal offset.\n * @param offsetY Vertical offset.\n */\nexport function calculatePosition(event, tooltipBox, offsetX, offsetY) {\n let x = event.clientX + offsetX;\n if (x + tooltipBox.width > window.innerWidth) {\n x = +event.clientX - offsetX - tooltipBox.width;\n }\n let y = event.clientY + offsetY;\n if (y + tooltipBox.height > window.innerHeight) {\n y = +event.clientY - offsetY - tooltipBox.height;\n }\n return { x, y };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcG9zaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsS0FBaUIsRUFDakIsVUFBNkMsRUFDN0MsT0FBZSxFQUNmLE9BQWU7SUFFZixJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNoQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDNUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztLQUNqRDtJQUVELElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ2hDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRTtRQUM5QyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0tBQ2xEO0lBRUQsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNsQixDQUFDIn0=","import { Handler } from './Handler';\nexport * from './defaults';\nexport * from './formatValue';\nexport * from './position';\nexport * from './Handler';\n/**\n * Create a tooltip handler and register it with the provided view.\n *\n * @param view The Vega view.\n * @param opt Tooltip options.\n */\nexport default function (view, opt) {\n const handler = new Handler(opt);\n view.tooltip(handler.call).run();\n return handler;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFdBQVcsQ0FBQztBQUUxQjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxPQUFPLFdBQVUsSUFBVSxFQUFFLEdBQXNCO0lBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWpDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRWpDLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMifQ==","/**\n * Open editor url in a new window, and pass a message.\n */\nexport default function (window, url, data) {\n const editor = window.open(url);\n const wait = 10000;\n const step = 250;\n // eslint-disable-next-line no-bitwise\n let count = ~~(wait / step);\n function listen(evt) {\n if (evt.source === editor) {\n count = 0;\n window.removeEventListener('message', listen, false);\n }\n }\n window.addEventListener('message', listen, false);\n // send message\n // periodically resend until ack received or timeout\n function send() {\n if (count <= 0) {\n return;\n }\n editor.postMessage(data, '*');\n setTimeout(send, step);\n count -= 1;\n }\n setTimeout(send, step);\n}\n//# sourceMappingURL=post.js.map","// generated with build-style.sh\nexport default `.vega-embed {\n position: relative;\n display: inline-block;\n padding-right: 38px; }\n .vega-embed details:not([open]) > :not(summary) {\n display: none !important; }\n .vega-embed summary {\n list-style: none;\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n padding: 6px;\n z-index: 1000;\n background: white;\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\n color: #1b1e23;\n border: 1px solid #aaa;\n border-radius: 999px;\n opacity: 0.2;\n transition: opacity 0.4s ease-in;\n outline: none;\n cursor: pointer; }\n .vega-embed summary::-webkit-details-marker {\n display: none; }\n .vega-embed details[open] summary {\n opacity: 0.7; }\n .vega-embed:hover summary,\n .vega-embed:focus summary {\n opacity: 1 !important;\n transition: opacity 0.2s ease; }\n .vega-embed .vega-actions {\n position: absolute;\n top: 35px;\n right: -9px;\n display: flex;\n flex-direction: column;\n padding-bottom: 8px;\n padding-top: 8px;\n border-radius: 4px;\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\n border: 1px solid #d9d9d9;\n background: white;\n animation-duration: 0.15s;\n animation-name: scale-in;\n animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5); }\n .vega-embed .vega-actions a {\n padding: 8px 16px;\n font-family: sans-serif;\n font-size: 14px;\n font-weight: 600;\n white-space: nowrap;\n color: #434a56;\n text-decoration: none; }\n .vega-embed .vega-actions a:hover {\n background-color: #f7f7f9;\n color: black; }\n .vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\n content: \"\";\n display: inline-block;\n position: absolute; }\n .vega-embed .vega-actions::before {\n left: auto;\n right: 14px;\n top: -16px;\n border: 8px solid #0000;\n border-bottom-color: #d9d9d9; }\n .vega-embed .vega-actions::after {\n left: auto;\n right: 15px;\n top: -14px;\n border: 7px solid #0000;\n border-bottom-color: #fff; }\n\n.vega-embed-wrapper {\n max-width: 100%;\n overflow: scroll;\n padding-right: 14px; }\n\n@keyframes scale-in {\n from {\n opacity: 0;\n transform: scale(0.6); }\n to {\n opacity: 1;\n transform: scale(1); } }\n`;\n//# sourceMappingURL=style.js.map","import { isArray } from 'vega';\n/* eslint-disable */\nfunction deepMerge_(dest, src) {\n if (typeof src !== 'object' || src === null) {\n return dest;\n }\n for (const p in src) {\n if (!src.hasOwnProperty(p)) {\n continue;\n }\n if (src[p] === undefined) {\n continue;\n }\n if (typeof src[p] !== 'object' || isArray(src[p]) || src[p] === null) {\n dest[p] = src[p];\n }\n else if (typeof dest[p] !== 'object' || dest[p] === null) {\n dest[p] = mergeDeep(isArray(src[p].constructor) ? [] : {}, src[p]);\n }\n else {\n mergeDeep(dest[p], src[p]);\n }\n }\n return dest;\n}\n/* eslint-enable */\nexport function mergeDeep(dest, ...src) {\n for (const s of src) {\n // eslint-disable-next-line no-param-reassign\n dest = deepMerge_(dest, s);\n }\n return dest;\n}\n// polyfill for IE\nif (!String.prototype.startsWith) {\n // eslint-disable-next-line no-extend-native,func-names\n String.prototype.startsWith = function (search, pos) {\n return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n };\n}\nexport function isURL(s) {\n return s.startsWith('http://') || s.startsWith('https://') || s.startsWith('//');\n}\n//# sourceMappingURL=util.js.map","import * as tslib_1 from \"tslib\";\nimport * as d3 from 'd3-selection';\nimport stringify from 'json-stringify-pretty-compact';\nimport { satisfies } from 'semver';\nimport * as vegaImport from 'vega';\nimport * as vlImport from 'vega-lite';\nimport schemaParser from 'vega-schema-url-parser';\nimport * as themes from 'vega-themes';\nimport { Handler } from 'vega-tooltip';\nimport post from './post';\nimport embedStyle from './style';\nimport { mergeDeep } from './util';\nexport const vega = vegaImport;\nexport const vl = vlImport;\nconst I18N = {\n CLICK_TO_VIEW_ACTIONS: 'Click to view actions',\n COMPILED_ACTION: 'View Compiled Vega',\n EDITOR_ACTION: 'Open in Vega Editor',\n PNG_ACTION: 'Save as PNG',\n SOURCE_ACTION: 'View Source',\n SVG_ACTION: 'Save as SVG'\n};\nconst NAMES = {\n vega: 'Vega',\n 'vega-lite': 'Vega-Lite'\n};\nconst VERSION = {\n vega: vega.version,\n 'vega-lite': vl ? vl.version : 'not available'\n};\nconst PREPROCESSOR = {\n vega: vgjson => vgjson,\n 'vega-lite': (vljson, config) => vl.compile(vljson, { config: config }).spec\n};\nconst SVG_CIRCLES = `\n<svg viewBox=\"0 0 16 16\" fill=\"currentColor\" stroke=\"none\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\">\n <circle r=\"2\" cy=\"8\" cx=\"2\"></circle>\n <circle r=\"2\" cy=\"8\" cx=\"8\"></circle>\n <circle r=\"2\" cy=\"8\" cx=\"14\"></circle>\n</svg>`;\nfunction isTooltipHandler(h) {\n return typeof h === 'function';\n}\nfunction viewSource(source, sourceHeader, sourceFooter, mode) {\n const header = `<html><head>${sourceHeader}</head><body><pre><code class=\"json\">`;\n const footer = `</code></pre>${sourceFooter}</body></html>`;\n const win = window.open('');\n win.document.write(header + source + footer);\n win.document.title = `${NAMES[mode]} JSON Source`;\n}\n/**\n * Try to guess the type of spec.\n *\n * @param spec Vega or Vega-Lite spec.\n */\nexport function guessMode(spec, providedMode) {\n // Decide mode\n if (spec.$schema) {\n const parsed = schemaParser(spec.$schema);\n if (providedMode && providedMode !== parsed.library) {\n console.warn(`The given visualization spec is written in ${NAMES[parsed.library]}, but mode argument sets ${NAMES[providedMode] || providedMode}.`);\n }\n const mode = parsed.library;\n if (!satisfies(VERSION[mode], `^${parsed.version.slice(1)}`)) {\n console.warn(`The input spec uses ${mode} ${parsed.version}, but the current version of ${NAMES[mode]} is ${VERSION[mode]}.`);\n }\n return mode;\n }\n // try to guess from the provided spec\n if ('mark' in spec ||\n 'encoding' in spec ||\n 'layer' in spec ||\n 'hconcat' in spec ||\n 'vconcat' in spec ||\n 'facet' in spec ||\n 'repeat' in spec) {\n return 'vega-lite';\n }\n if ('marks' in spec || 'signals' in spec || 'scales' in spec || 'axes' in spec) {\n return 'vega';\n }\n return providedMode || 'vega';\n}\nfunction isLoader(o) {\n return !!(o && 'load' in o);\n}\n/**\n * Embed a Vega visualization component in a web page. This function returns a promise.\n *\n * @param el DOM element in which to place component (DOM node or CSS selector).\n * @param spec String : A URL string from which to load the Vega specification.\n * Object : The Vega/Vega-Lite specification as a parsed JSON object.\n * @param opt A JavaScript object containing options for embedding.\n */\nexport default function embed(el, spec, opt = {}) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const loader = isLoader(opt.loader) ? opt.loader : vega.loader(opt.loader);\n // Load the visualization specification.\n if (vega.isString(spec)) {\n const data = yield loader.load(spec);\n return embed(el, JSON.parse(data), opt);\n }\n // eslint-disable-next-line no-param-reassign, dot-notation\n opt = mergeDeep(opt, spec.usermeta && spec.usermeta['embedOptions']);\n const patch = opt.patch || opt.onBeforeParse;\n const actions = opt.actions === true || opt.actions === false\n ? opt.actions\n : mergeDeep({}, { export: { svg: true, png: true }, source: true, compiled: true, editor: true }, opt.actions || {});\n const i18n = Object.assign({}, I18N, opt.i18n);\n const renderer = opt.renderer || 'canvas';\n const logLevel = opt.logLevel || vega.Warn;\n const downloadFileName = opt.downloadFileName || 'visualization';\n // Load Vega theme/configuration.\n let config = opt.config || {};\n if (vega.isString(config)) {\n const data = yield loader.load(config);\n return embed(el, spec, Object.assign({}, opt, { config: JSON.parse(data) }));\n }\n if (opt.defaultStyle !== false) {\n // Add a default stylesheet to the head of the document.\n const ID = 'vega-embed-style';\n if (!document.getElementById(ID)) {\n const style = document.createElement('style');\n style.id = ID;\n style.innerText =\n opt.defaultStyle === undefined || opt.defaultStyle === true ? (embedStyle || '').toString() : opt.defaultStyle;\n document.head.appendChild(style);\n }\n }\n if (opt.theme) {\n config = mergeDeep({}, themes[opt.theme], config);\n }\n const mode = guessMode(spec, opt.mode);\n let vgSpec = PREPROCESSOR[mode](spec, config);\n if (mode === 'vega-lite') {\n if (vgSpec.$schema) {\n const parsed = schemaParser(vgSpec.$schema);\n if (!satisfies(VERSION.vega, `^${parsed.version.slice(1)}`)) {\n console.warn(`The compiled spec uses Vega ${parsed.version}, but current version is ${VERSION.vega}.`);\n }\n }\n }\n // ensure container div has class 'vega-embed'\n const div = d3\n .select(el) // d3.select supports elements and strings\n .classed('vega-embed', true)\n .html(''); // clear container\n if (patch) {\n if (patch instanceof Function) {\n vgSpec = patch(vgSpec);\n }\n else if (vega.isString(patch)) {\n const patchString = yield loader.load(patch);\n vgSpec = mergeDeep(vgSpec, JSON.parse(patchString));\n }\n else {\n vgSpec = mergeDeep(vgSpec, patch);\n }\n }\n // Do not apply the config to Vega when we have already applied it to Vega-Lite.\n // This call may throw an Error if parsing fails.\n const runtime = vega.parse(vgSpec, mode === 'vega-lite' ? {} : config);\n const view = new vega.View(runtime, {\n loader,\n logLevel,\n renderer\n });\n if (opt.tooltip !== false) {\n let handler;\n if (isTooltipHandler(opt.tooltip)) {\n handler = opt.tooltip;\n }\n else {\n // user provided boolean true or tooltip options\n handler = new Handler(opt.tooltip === true ? {} : opt.tooltip).call;\n }\n view.tooltip(handler);\n }\n let { hover } = opt;\n // Enable hover for Vega by default.\n if (hover === undefined) {\n hover = mode !== 'vega-lite';\n }\n if (hover) {\n const { hoverSet, updateSet } = (typeof hover === 'boolean' ? {} : hover);\n view.hover(hoverSet, updateSet);\n }\n if (opt) {\n if (opt.width) {\n view.width(opt.width);\n }\n if (opt.height) {\n view.height(opt.height);\n }\n if (opt.padding) {\n view.padding(opt.padding);\n }\n }\n yield view.initialize(el).runAsync();\n if (actions !== false) {\n let wrapper = div;\n if (opt.defaultStyle !== false) {\n const details = div.append('details').attr('title', i18n.CLICK_TO_VIEW_ACTIONS);\n wrapper = details;\n const summary = details.insert('summary');\n summary.html(SVG_CIRCLES);\n const dn = details.node();\n document.addEventListener('click', evt => {\n if (!dn.contains(evt.target)) {\n dn.removeAttribute('open');\n }\n });\n }\n const ctrl = wrapper.insert('div').attr('class', 'vega-actions');\n // add 'Export' action\n if (actions === true || actions.export !== false) {\n for (const ext of ['svg', 'png']) {\n if (actions === true || actions.export === true || actions.export[ext]) {\n const i18nExportAction = i18n[`${ext.toUpperCase()}_ACTION`];\n ctrl\n .append('a')\n .text(i18nExportAction)\n .attr('href', '#')\n .attr('target', '_blank')\n .attr('download', `${downloadFileName}.${ext}`)\n // eslint-disable-next-line func-names\n .on('mousedown', function () {\n view\n .toImageURL(ext, opt.scaleFactor)\n .then(url => {\n this.href = url;\n })\n .catch(error => {\n throw error;\n });\n d3.event.preventDefault();\n });\n }\n }\n }\n // add 'View Source' action\n if (actions === true || actions.source !== false) {\n ctrl\n .append('a')\n .text(i18n.SOURCE_ACTION)\n .attr('href', '#')\n .on('mousedown', () => {\n viewSource(stringify(spec), opt.sourceHeader || '', opt.sourceFooter || '', mode);\n d3.event.preventDefault();\n });\n }\n // add 'View Compiled' action\n if (mode === 'vega-lite' && (actions === true || actions.compiled !== false)) {\n ctrl\n .append('a')\n .text(i18n.COMPILED_ACTION)\n .attr('href', '#')\n .on('mousedown', () => {\n viewSource(stringify(vgSpec), opt.sourceHeader || '', opt.sourceFooter || '', 'vega');\n d3.event.preventDefault();\n });\n }\n // add 'Open in Vega Editor' action\n if (actions === true || actions.editor !== false) {\n const editorUrl = opt.editorUrl || 'https://vega.github.io/editor/';\n ctrl\n .append('a')\n .text(i18n.EDITOR_ACTION)\n .attr('href', '#')\n .on('mousedown', () => {\n post(window, editorUrl, {\n config: config,\n mode,\n renderer,\n spec: stringify(spec)\n });\n d3.event.preventDefault();\n });\n }\n }\n return { view, spec, vgSpec };\n });\n}\n//# sourceMappingURL=embed.js.map","var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a)\n , arrB = isArray(b)\n , i\n , length\n , key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length)\n return false;\n\n for (i = length; i-- !== 0;)\n if (!hasProp.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n return a!==a && b!==b;\n};\n","import vegaEmbed, { Mode, EmbedOptions } from \"vega-embed\";\nimport { Spec, View } from \"vega\";\nimport { TopLevelSpec } from \"vega-lite\";\n\nexport { default as vegaEmbed } from \"vega-embed\";\n\nfunction javascriptIndex(selector: string, outputs: any) {\n // Return the index in the output array of the JS repr of this viz\n for (let i = 0; i < outputs.length; i++) {\n const item = outputs[i];\n if (\n item.metadata &&\n item.metadata[\"jupyter-vega\"] === selector &&\n item.data[\"application/javascript\"] !== undefined\n ) {\n return i;\n }\n }\n return -1;\n}\n\nfunction imageIndex(selector: string, outputs: any) {\n // Return the index in the output array of the PNG repr of this viz\n for (let i = 0; i < outputs.length; i++) {\n const item = outputs[i];\n if (\n item.metadata &&\n item.metadata[\"jupyter-vega\"] === selector &&\n item.data[\"image/png\"] !== undefined\n ) {\n return i;\n }\n }\n return -1;\n}\n\nfunction showError(el: HTMLElement, error: Error) {\n el.innerHTML = `<div class=\"error\">\n <p>Javascript Error: ${error.message}</p>\n <p>This usually means there's a typo in your chart specification.\n See the JavaScript console for the full traceback.</p>\n </div>`;\n\n throw error;\n}\n\nexport function render(\n selector: string,\n spec: Spec | TopLevelSpec,\n type: Mode,\n opt: EmbedOptions,\n output_area: any\n) {\n // Find the indices of this visualizations JS and PNG\n // representation.\n const imgIndex = imageIndex(selector, output_area.outputs);\n const jsIndex = javascriptIndex(selector, output_area.outputs);\n\n // If we have already rendered a static image, don't render\n // the JS version or append a new PNG version\n if (imgIndex > -1 && jsIndex > -1 && imgIndex === jsIndex + 1) {\n return;\n }\n\n // Never been rendered, so render JS and append the PNG to the\n // outputs for the cell\n const el = document.getElementById(selector.substring(1));\n vegaEmbed(el, spec, {\n loader: { http: { credentials: \"same-origin\" } },\n ...opt,\n mode: type\n })\n .then(result => {\n result.view\n .toImageURL(\"png\")\n .then(imageData => {\n if (output_area !== undefined) {\n const output = {\n data: {\n \"image/png\": imageData.split(\",\")[1]\n },\n metadata: { \"jupyter-vega\": selector },\n output_type: \"display_data\"\n };\n // This appends the PNG output, but doesn't render it this time\n // as the JS version will be rendered already.\n output_area.outputs.push(output);\n }\n })\n .catch(error => showError(el, error));\n })\n .catch(error => showError(el, error));\n}\n\ninterface WidgetUpdate {\n key: string;\n remove?: string;\n insert?: any[];\n}\n\ninterface WidgetUpdateMessage {\n type: \"update\";\n updates: WidgetUpdate[];\n}\n\n// validate the ev object and cast it to the correct type\nfunction checkWidgetUpdate(ev: any): WidgetUpdateMessage | null {\n if (ev.type != \"update\") {\n return null;\n }\n\n // TODO: Fully validate ev and give a easy to understand error message if it is ill-formed\n return ev as WidgetUpdateMessage;\n}\n\n// NOTE: juggle to support optional dependencies that don't break webpack and jupyter\nvar VegaWidgetDef: any = null;\nif (__webpack_modules__[require.resolveWeak(\"@jupyter-widgets/base\")]) {\n const widgets = require(\"@jupyter-widgets/base\");\n\n VegaWidgetDef = widgets.DOMWidgetView.extend({\n render: function() {\n this.viewElement = document.createElement(\"div\");\n this.el.appendChild(this.viewElement);\n\n this.errorElement = document.createElement(\"div\");\n this.errorElement.style.color = \"red\";\n this.el.appendChild(this.errorElement);\n\n const reembed = () => {\n if (this.view) {\n this.view.finalize();\n this.view = null;\n }\n const spec = JSON.parse(this.model.get(\"_spec_source\"));\n const opt = JSON.parse(this.model.get(\"_opt_source\"));\n\n if (spec == null) {\n return;\n }\n\n vegaEmbed(this.viewElement, spec, {\n loader: { http: { credentials: \"same-origin\" } },\n ...opt\n })\n .then(({ view }) => {\n this.view = view;\n this.send({ type: \"display\" });\n })\n .catch(err => console.error(err));\n };\n\n const applyUpdate = async (update: WidgetUpdate) => {\n if (this.view == null) {\n throw new Error(\"Internal error: no view attached to widget\");\n }\n\n const filter = new Function(\n \"datum\",\n \"return (\" + (update.remove || \"false\") + \")\"\n );\n const newValues = update.insert || [];\n const changeSet = this.view\n .changeset()\n .insert(newValues)\n .remove(filter);\n\n await this.view.change(update.key, changeSet).runAsync();\n };\n\n const applyUpdates = async (message: WidgetUpdateMessage) => {\n for (const update of message.updates) {\n await applyUpdate(update);\n }\n };\n\n this.model.on(\"change:_spec_source\", reembed);\n this.model.on(\"change:_opt_source\", reembed);\n this.model.on(\"msg:custom\", (ev: any) => {\n const message = checkWidgetUpdate(ev);\n if (message == null) {\n return;\n }\n\n applyUpdates(message).catch((err: Error) => {\n this.errorElement.textContent = \"\" + err;\n console.error(err);\n });\n });\n\n // initial rendering\n reembed();\n }\n });\n}\n\nexport const VegaWidget = VegaWidgetDef;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n for (var i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack://nbextensions/jupyter-vega/index/webpack/bootstrap","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/accessor.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/error.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/splitAccessPath.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isArray.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isObject.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isString.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/stringValue.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/field.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/accessors.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/logger.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/peek.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/toNumber.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/transform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/quarter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/clampRange.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isFunction.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/compare.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/debounce.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/extend.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/extent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/extentIndex.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/fastmap.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/flush.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/inherits.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/inrange.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isBoolean.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isDate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isNumber.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/isRegExp.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/key.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/lerp.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/merge.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/repeat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/pad.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/span.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/toBoolean.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/toDate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/toString.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/toSet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/truncate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/src/visitArray.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-util/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/src/formats/json.js","webpack://nbextensions/jupyter-vega/index/./node_modules/json-stringify-pretty-compact/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/fast-json-stable-stringify/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-embed/node_modules/semver/semver.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-schema-url-parser/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/buffer/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/tslib/tslib.es6.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/namespaces.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/namespace.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/creator.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selector.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selectorAll.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/sparse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/enter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/data.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/sort.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/attr.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/window.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/style.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/property.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/classed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/text.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/html.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/raise.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/lower.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/insert.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/remove.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/clone.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/on.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/dispatch.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/select.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/selectAll.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/filter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/matcher.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/exit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/join.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/merge.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/order.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/call.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/nodes.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/node.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/size.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/empty.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/each.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/append.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/selection/datum.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/select.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/local.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-selection/src/sourceEvent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/util/UniqueList.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/util/asyncCallback.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/Tuple.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/ChangeSet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/Parameters.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/Operator.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/add.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/EventStream.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/events.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/src/loader.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/src/type.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-dsv/src/dsv.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-dsv/src/csv.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-dsv/src/tsv.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/src/formats/dsv.js","webpack://nbextensions/jupyter-vega/index/./node_modules/topojson-client/src/identity.js","webpack://nbextensions/jupyter-vega/index/./node_modules/topojson-client/src/transform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/topojson-client/src/reverse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/topojson-client/src/feature.js","webpack://nbextensions/jupyter-vega/index/./node_modules/topojson-client/src/stitch.js","webpack://nbextensions/jupyter-vega/index/./node_modules/topojson-client/src/mesh.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/src/formats/topojson.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/src/formats/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/interval.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/millisecond.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/duration.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/second.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/minute.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/hour.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/day.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/week.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/month.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/year.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/utcMinute.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/utcHour.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/utcDay.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/utcWeek.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/utcMonth.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time/src/utcYear.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time-format/src/locale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time-format/src/defaultLocale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time-format/src/isoFormat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-time-format/src/isoParse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/src/read.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-loader/index.browser.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/load.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/on.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/Pulse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/MultiPulse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/run.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/update.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/util/Heap.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/Dataflow.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/Transform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/connect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/dataflow/rank.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-dataflow/src/register.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/AggregateKeys.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/AggregateOps.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/bin.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/numbers.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/random.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/ascending.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/bisector.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/bisect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/variance.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/extent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/range.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/ticks.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/threshold/sturges.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/number.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/quantile.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/quickselect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/median.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/min.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/permute.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/zip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/bootstrapCI.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/quartiles.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/lcg.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/integer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/normal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/kde.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/mixture.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/uniform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/ols.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/points.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/r-squared.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/linear.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/log.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/exp.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/pow.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/quad.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/poly.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/regression/loess.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-statistics/src/sampleCurve.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/TupleStore.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Aggregate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Bin.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/SortedList.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Collect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Compare.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/CountPattern.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Cross.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/Distributions.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Density.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Expression.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Extent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Subflow.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Facet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Field.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Filter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Flatten.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Fold.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Formula.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Generate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Impute.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/mean.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/max.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/JoinAggregate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/KDE.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Key.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Load.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Lookup.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/MultiExtent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/MultiValues.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Params.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Pivot.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/PreFacet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Project.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Proxy.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Relay.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Sample.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Sequence.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Sieve.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/TupleIndex.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Values.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/WindowOps.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/util/WindowState.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-transforms/src/Window.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/constants.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/Bounds.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/Gradient.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/Item.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/GroupItem.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-canvas/src/domCanvas.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/ResourceLoader.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-path/src/path.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/math.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/arc.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/linear.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/point.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/line.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/area.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/radial.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/symbol/circle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/symbol/star.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/symbol/diamond.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/noop.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/symbol/triangle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/symbol/wye.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/basis.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/bundle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/cardinal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/catmullRom.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/monotone.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/natural.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/curve/step.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/order/descending.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/curves.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/constants.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/arc.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/render.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/symbols.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/rectangle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/trail.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/path/shapes.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-shape/src/symbol.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/bound/boundStroke.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/bound/boundContext.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/context.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/intersect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/gradient.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/color.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/fill.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/stroke.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/visit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/draw.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/pick.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/svg/transform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/markItemPath.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/arc.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/markMultiItemPath.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/area.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/pickPath.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/svg/clip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/group.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/image.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/line.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/path.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/rect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/rule.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/text.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/shape.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/symbol.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/text.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/marks/trail.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/bound/boundItem.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/bound/boundMark.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/serialize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/Scenegraph.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/dom.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/point.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/Handler.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/Renderer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/resolveItem.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/events.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/CanvasHandler.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/resize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/CanvasRenderer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/SVGHandler.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/canvas/clip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/tags.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/svg/metadata.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/svg/styles.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/SVGRenderer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/SVGStringRenderer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/modules.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/intersect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/bound/boundClip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scenegraph/src/util/equal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/Bound.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/Identifier.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/Mark.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/Overlap.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/Render.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/layout/util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/layout/axis.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/layout/grid.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/layout/legend.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/ViewLayout.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view-transforms/src/layout/title.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/bandSpace.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/types.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/timeInterval.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/invertRange.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/invertRangeExtent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/init.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/ordinal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-color/src/define.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-color/src/color.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-color/src/math.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-color/src/lab.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-color/src/cubehelix.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/basis.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/basisClosed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/color.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/rgb.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/date.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/number.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/object.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/string.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/transform/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/value.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/discrete.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/hue.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/round.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/transform/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/zoom.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/hsl.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/lab.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/hcl.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/cubehelix.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/piecewise.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-interpolate/src/quantize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/number.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/continuous.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatDecimal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/exponent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatSpecifier.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatTrim.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/defaultLocale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatRounded.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatTypes.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/identity.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/locale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatGroup.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/formatNumerals.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/precisionFixed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/tickFormat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/precisionPrefix.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-format/src/precisionRound.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/linear.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/nice.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/log.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/symlog.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/pow.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/time.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/sequential.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/diverging.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/scaleBand.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/numbers.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/slice.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/identity.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/utcTime.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/quantile.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/quantize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-scale/src/threshold.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/scales/scaleBinOrdinal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/interpolate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/schemes.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/ticks.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/AxisTicks.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/DataJoin.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/Encode.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-scale/src/palettes.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/legend-types.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/labels.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/LegendEntries.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/LinkPath.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/Pie.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-array/src/sum.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/Scale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/SortItems.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-encode/src/Stack.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/ascending.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/bisect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/bisector.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/cross.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/extent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/range.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/ticks.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/threshold/sturges.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/max.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/node_modules/d3-array/src/zip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/ascending.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/area.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/contains.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/noop.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/contours.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/blur.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-contour/src/density.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/Contour.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/constants.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/GeoJSON.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/adder.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/math.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/noop.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/stream.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/area.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/cartesian.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/bounds.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/centroid.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/compose.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/rotation.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/circle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/clip/buffer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/pointEqual.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/clip/rejoin.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/polygonContains.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/ascending.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/bisect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/bisector.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/cross.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/range.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/ticks.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/threshold/sturges.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/merge.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/node_modules/d3-array/src/zip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/clip/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/clip/antimeridian.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/clip/circle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/clip/line.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/clip/rectangle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/length.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/graticule.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/interpolate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/path/area.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/identity.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/path/bounds.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/path/centroid.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/path/context.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/path/measure.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/path/string.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/path/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/transform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/fit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/resample.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/conic.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/albers.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/azimuthal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/mercator.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/conicConformal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/equirectangular.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/equalEarth.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/gnomonic.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/identity.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/orthographic.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/stereographic.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/transverseMercator.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-projection/src/projections.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-geo/src/projection/albersUsa.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/GeoPath.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/GeoPoint.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/GeoShape.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/Graticule.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-geo/src/Projection.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/add.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/cover.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/quad.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/x.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/y.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/quadtree.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/data.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/extent.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/find.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/remove.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/root.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/size.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/visit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-quadtree/src/visitAfter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/jiggle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/collide.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/link.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-dispatch/src/dispatch.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-timer/src/timer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/simulation.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-force/src/Force.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/center.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/manyBody.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/x.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-force/src/y.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/lookup.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/cluster.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/array.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/pack/enclose.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/pack/siblings.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/accessors.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/pack/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/round.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/dice.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/stratify.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/tree.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/slice.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/Nest.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/HierarchyLayout.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/Pack.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/Partition.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/Stratify.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/partition.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/Tree.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/TreeLinks.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-hierarchy/src/Treemap.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/binary.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-hierarchy/src/treemap/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-regression/src/partition.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-regression/src/Loess.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-regression/src/Regression.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/constant.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/point.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/RedBlackTree.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/Edge.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/Cell.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/Circle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/Beach.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/Diagram.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-voronoi/src/Voronoi.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-voronoi/src/voronoi.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-wordcloud/src/CloudLayout.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-wordcloud/src/Wordcloud.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-crossfilter/src/arrays.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-crossfilter/src/Bitmaps.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-crossfilter/src/Dimension.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-crossfilter/src/SortedIndex.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-crossfilter/src/CrossFilter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-crossfilter/src/ResolveFilter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/cursor.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/data.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/render-size.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/events-extend.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/events.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/hover.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/element.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/bind.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/initialize-renderer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/trap.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/initialize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/render-headless.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/render-to-canvas.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-expression/src/parser.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-expression/src/ast.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-expression/src/constants.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-expression/src/functions.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-selections/src/constants.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-selections/src/selectionTest.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-selections/src/selectionResolve.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-selections/src/selectionVisitor.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/data.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/format.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/scale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/geo.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/log.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/modify.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/tree.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/window.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/prefix.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/visitors.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/codegen.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/merge.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/inscope.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/intersect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/pinch.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/shape.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/encode.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-functions/src/scale-gradient.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-expression/src/codegen.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/expression.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/parameters.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/operator.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/stream.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/update.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/dataflow.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/state.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-runtime/src/context.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/runtime.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/size.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/state.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/timer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/tooltip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/View.js","webpack://nbextensions/jupyter-vega/index/./node_modules/d3-timer/src/interval.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/finalize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/scale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/initialize-handler.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/render-to-image-url.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-view/src/render-to-svg.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/autosize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/padding.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/signal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/expression.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/stream.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-event-selector/src/event-selector.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/update.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/transforms.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/scale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/projection.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/constants.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/adjust-spatial.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/expression.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/field.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/scale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/gradient.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/property.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/entry.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/color.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/set.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/rule.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/roles.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/encode/encode-util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/guide-mark.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/guide-util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/marktypes.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/legend-gradient.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/legend-gradient-discrete.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/legend-gradient-labels.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/guide-group.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/legend-symbol-groups.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/legend-title.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/clip.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/role.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/definition.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/interactive.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/transform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/data.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/DataScope.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/facet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/trigger.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/mark.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/marks/subflow.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/legend.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/title.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/data.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/axis-domain.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/axis-grid.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/axis-labels.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/axis.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/axis-config.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/axis-ticks.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/guides/axis-title.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/spec.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/signal-updates.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parsers/view.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/Scope.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/config.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-parser/src/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/logical.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/mark.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/unit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compositemark/base.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/aggregate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/channel.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/log/message.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/log/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/datetime.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/facet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/timeunit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/type.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/channeldef.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/bin.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/encoding.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compositemark/common.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compositemark/boxplot.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compositemark/errorbar.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compositemark/errorband.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compositemark/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/guide.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/legend.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/scale.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/selection.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/concat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/repeat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/base.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/title.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/config.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/layer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/map.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/stack.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/normalize/pathoverlay.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/normalize/ruleforrangedline.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/normalize/core.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/normalize/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/spec/toplevel.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/data.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/predicate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/transform.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/vega.schema.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/axis.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/axis/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/header.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/sort.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/axis/config.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/axis/properties.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/common.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/dataflow.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/expressions.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/calculate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/header/common.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/header/component.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/header/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/layoutsize/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/timeunit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/scales.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/project.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/interval.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/multi.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/single.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/nearest.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/inputs.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/toggle.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/clear.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/translate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/zoom.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/transforms/transforms.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/predicate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/valueref.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/mixins.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/guide.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/resolve.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/split.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/legend/component.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/legend/properties.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/legend/encode.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/legend/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/legend/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/projection/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/projection.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/projection/component.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/projection/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/source.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/debug.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/optimizer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/aggregate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/bin.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/facet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/filter.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/formatparse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/joinaggregate.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/stack.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/window.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/optimizers.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/optimize.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/signal.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/scale/domain.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/scale/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/scale/component.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/scale/range.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/scale/properties.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/scale/type.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/scale/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/model.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/filterinvalid.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/flatten.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/fold.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/geojson.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/geopoint.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/graticule.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/identifier.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/bar.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/point.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/rect.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/tick.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/mark.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/area.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/geoshape.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/line.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/rule.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/text.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/impute.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/lookup.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/sample.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/sequence.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/assemble.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/header/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/layoutsize/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/repeater.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/facet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/data/joinaggregatefacet.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/baseconcat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/concat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/axis/component.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/axis/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/axis/encode.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/mark/init.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/unit.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/selection/parse.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/layer.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/repeat.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/buildmodel.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/compile/compile.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/transformextract.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-lite/build/src/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-themes/build/theme-excel.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-themes/build/theme-ggplot2.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-themes/build/theme-quartz.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-themes/build/theme-vox.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-themes/build/theme-dark.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-themes/build/theme-fivethirtyeight.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-themes/build/theme-latimes.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-tooltip/build/style.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-tooltip/build/defaults.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-tooltip/build/formatValue.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-tooltip/build/Handler.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-tooltip/build/position.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-tooltip/build/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-embed/build/src/post.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-embed/build/src/style.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-embed/build/src/util.js","webpack://nbextensions/jupyter-vega/index/./node_modules/vega-embed/build/src/embed.js","webpack://nbextensions/jupyter-vega/index/./node_modules/clone/clone.js","webpack://nbextensions/jupyter-vega/index/./node_modules/fast-deep-equal/index.js","webpack://nbextensions/jupyter-vega/index/./src/index.ts","webpack://nbextensions/jupyter-vega/index/./node_modules/process/browser.js","webpack://nbextensions/jupyter-vega/index/(webpack)/buildin/global.js","webpack://nbextensions/jupyter-vega/index/./node_modules/base64-js/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/ieee754/index.js","webpack://nbextensions/jupyter-vega/index/./node_modules/isarray/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","accessor","fn","fields","fname","accessorName","accessorFields","error","message","Error","splitAccessPath","j","path","q","b","length","push","substring","isArray","Array","isObject","_","isString","$","x","map","JSON","stringify","replace","src_field","field","code","join","Function","empty","id","identity","zero","one","truthy","falsy","log","method","level","input","msg","concat","slice","console","logger","arguments","this","warn","info","debug","peek","array","toNumber","exp","sign","Math","transform_log","symlog","log1p","abs","symexp","expm1","pow","exponent","pan","domain","delta","lift","ground","d0","d1","dd","panLinear","panLog","panPow","panSymlog","constant","zoom","anchor","scale","da","zoomLinear","zoomLog","zoomPow","zoomSymlog","quarter","date","Date","getMonth","utcquarter","getUTCMonth","src_array","clampRange","range","min","max","span","lo","hi","isFunction","compare","orders","f","u","v","lt","gt","idx","cmp","ord","reduce","forEach","keys","debounce","delay","handler","tid","evt","callback","e","clearTimeout","setTimeout","extend","k","len","extent","extentIndex","a","NULL","fastmap","test","obj","has","size","undefined","set","delete","clear","clean","next","flush","threshold","left","right","center","inherits","child","parent","proto","constructor","inrange","r0","r1","isBoolean","isDate","toString","isNumber","isRegExp","flat","lerp","frac","merge","array0","array1","output","n0","n1","merged","i0","i1","repeat","str","reps","pad","padchar","align","ceil","toBoolean","defaultParser","parse","toDate","parser","src_toString","toSet","truncate","ellipsis","visitArray","filter","visitor","__webpack_exports__","Buffer","json","vega_util__WEBPACK_IMPORTED_MODULE_0__","data","format","prop","isBuffer","copy","parseJSON","responseType","stringOrChar","passedObj","options","indent","maxLength","replacer","Infinity","_stringify","currentIndent","reserved","end","index","items","keyPart","nextIndent","prettified","start","string","toJSON","match","stringLiteral","opts","cycles","node","aobj","bobj","seen","isFinite","out","indexOf","TypeError","seenIndex","sort","splice","process","SemVer","env","NODE_DEBUG","args","unshift","apply","SEMVER_SPEC_VERSION","MAX_LENGTH","MAX_SAFE_INTEGER","Number","re","src","R","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","MAINVERSION","MAINVERSIONLOOSE","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","PRERELEASE","PRERELEASELOOSE","BUILDIDENTIFIER","BUILD","FULL","FULLPLAIN","LOOSEPLAIN","LOOSE","GTLT","XRANGEIDENTIFIERLOOSE","XRANGEIDENTIFIER","XRANGEPLAIN","XRANGEPLAINLOOSE","XRANGE","XRANGELOOSE","COERCE","COERCERTL","RegExp","LONETILDE","TILDETRIM","TILDE","TILDELOOSE","LONECARET","CARETTRIM","CARET","CARETLOOSE","COMPARATORLOOSE","COMPARATOR","COMPARATORTRIM","HYPHENRANGE","HYPHENRANGELOOSE","STAR","version","loose","includePrerelease","er","trim","raw","major","minor","patch","prerelease","split","num","build","valid","other","compareMain","comparePre","compareIdentifiers","compareBuild","inc","release","identifier","isNaN","diff","version1","version2","eq","v1","v2","prefix","defaultResult","numeric","anum","bnum","neq","gte","lte","op","Comparator","comp","semver","ANY","operator","rcompareIdentifiers","compareLoose","versionA","versionB","rcompare","list","rsort","Range","parseRange","isSatisfiable","comparators","result","remainingComparators","testComparator","pop","every","otherComparator","intersects","isX","toLowerCase","hyphenReplace","$0","from","fM","fm","fp","fpr","fb","to","tM","tm","tp","tpr","tb","testSet","allowed","satisfies","outside","hilo","gtfn","ltefn","ltfn","ecomp","high","low","comparator","rangeTmp","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","comps","hr","compRe","M","pr","ret","replaceCaret","replaceCarets","replaceTilde","replaceTildes","gtlt","xM","xm","xp","anyX","replaceXRange","replaceXRanges","replaceStars","parseComparator","some","thisComparators","rangeComparators","thisComparator","rangeComparator","toComparators","maxSatisfying","versions","maxSV","rangeObj","minSatisfying","minSV","minVersion","minver","compver","validRange","ltr","gtr","parsed","r2","coerce","String","rtl","exec","lastIndex","default","url","_a","library","global","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","__proto__","arg","encodingOrOffset","allocUnsafe","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","write","fromString","checked","buffer","val","type","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","arr","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","hexWrite","offset","remaining","strLen","parseInt","substr","utf8Write","blitBuffer","asciiWrite","byteArray","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","fromByteArray","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","configurable","fill","allocUnsafeSlow","_isBuffer","y","pos","swap16","swap32","swap64","equals","inspect","target","thisStart","thisEnd","thisCopy","targetCopy","includes","_arr","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","__rest","getOwnPropertySymbols","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","space","local","creator","fullname","ownerDocument","createElementNS","document","uri","namespaceURI","documentElement","createElement","none","src_selector","selector","querySelector","sparse","update","EnterNode","datum","_next","_parent","__data__","appendChild","insertBefore","querySelectorAll","keyPrefix","bindIndex","group","enter","exit","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","ascending","NaN","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","src_window","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","_node","_names","getAttribute","classedAdd","names","add","classedRemove","remove","classedTrue","classedFalse","classedFunction","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","parentNode","lower","previousSibling","firstChild","constantNull","remove_remove","removeChild","selection_cloneShallow","cloneNode","selection_cloneDeep","filterEvents","on_event","mouseenter","mouseleave","filterContextListener","listener","contextListener","event","related","relatedTarget","compareDocumentPosition","event1","event0","parseTypenames","typenames","onRemove","typename","on","__on","removeEventListener","capture","onAdd","wrap","addEventListener","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","selection_root","Selection","groups","parents","_groups","_parents","selection_selection","select","subgroups","subnode","subgroup","selectAll","matches","each","enterGroup","updateGroup","previous","_enter","_exit","onenter","onupdate","onexit","append","order","selection","groups0","groups1","m0","m1","merges","group0","group1","compareNode","sortgroups","sortgroup","nodes","attr","getAttributeNS","classed","text","html","insert","before","clone","deep","dispatch","src_select","nextId","Local","UniqueList","idFunc","vega_util","ids","asyncCallback","df","err","TUPLE_ID_KEY","TUPLE_ID","isTuple","tupleid","setid","ingest","Tuple_derive","rederive","isChangeSet","ChangeSet_changeset","rem","mod","remp","modp","reflow","modify","tuple","encode","pulse","tuples","cur","modifies","CACHE","Parameters","writable","Parameters_prototype","force","modified","OP_ID","NO_PARAMS","Operator","init","react","stamp","rank","qrank","flags","_update","parameters","Operator_prototype","Operator_flag","bit","state","targets","_targets","skip","initonly","self","argval","_argval","argops","_argops","deps","source","marshall","item","evaluate","StopPropagation","run","rv","STREAM_ID","EventStream","receive","_filter","_apply","EventStream_stream","EventStream_prototype","consume","_consume","trg","preventDefault","stopPropagation","throttle","pause","now","dataflow","between","active","protocol_re","fileProtocol","async","load","opt","sanitize","href","localFile","file","http","fileAccess","isFile","hasProtocol","loadFile","base","baseURL","startsWith","defaultProtocol","rel","fileLoader","fs","filename","Promise","accept","reject","readFile","fileReject","httpLoader","fetch","response","ok","status","statusText","httpReject","typeParsers","boolean","integer","number","unknown","typeTests","typeList","inferType","values","inferTypes","types","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","inferColumns","rows","columnSet","row","column","dsv_pad","width","formatDate","year","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","getUTCFullYear","getUTCDate","dsv","delimiter","reFormat","DELIMITER","parseRows","N","I","eof","eol","token","preformatBody","formatValue","formatRow","convert","customConverter","formatBody","formatRows","csv","tsv","delimitedFormat","delim","dsv_dsv","header","src_transform","transform","x0","y0","kx","ky","dx","translate","dy","src_reverse","src_feature","topology","features","geometries","feature_feature","bbox","properties","geometry","feature_object","transformPoint","arcs","arc","points","point","line","ring","polygon","coordinates","stitch","stitchedArcs","fragmentByStart","fragmentByEnd","fragments","emptyIndex","g","p1","p0","dp","ends","fg","gf","mesh","meshArcs","geom","geomsByArc","extract0","extract1","extract2","extract3","geoms","extractArcs","topojson_filters","interior","exterior","topojson","feature","objects","formats_format","formats_formats","reader","interval_t0","interval_t1","newInterval","floori","offseti","count","interval","round","step","stop","setTime","millisecond_millisecond","src_millisecond","durationMinute","durationWeek","second_second","getMilliseconds","src_second","minute_minute","getSeconds","getMinutes","src_minute","hour_hour","getHours","src_hour","day_day","setHours","setDate","getDate","getTimezoneOffset","src_day","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","month_month","setMonth","getFullYear","src_month","year_year","setFullYear","src_year","utcMinute","setUTCSeconds","src_utcMinute","utcHour","setUTCMinutes","src_utcHour","utcDay","setUTCHours","setUTCDate","src_utcDay","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","src_utcMonth","utcYear","setUTCFullYear","src_utcYear","localDate","H","S","L","utcDate","UTC","newYear","defaultLocale_locale","timeFormat","timeParse","utcFormat","utcParse","pads","-","0","numberRe","percentRe","requoteRe","locale_pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","w","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","day","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","locale_formatYear","formatFullYear","formatZone","z","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","defaultLocale","definition","locale","locale_dateTime","dateTime","locale_date","locale_time","time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","A","B","X","Y","%","utcFormats","parses","parseSpecifier","newFormat","specifier","charAt","newParse","newDate","week","formatLocale","toISOString","schema","dateParse","parsers","parts","pattern","read_parse","index_browser_loader","src_loader","load_parse","on_SKIP","onStream","stream","func","touch","onOperator","updater","connect","Pulse","Pulse_prototype","addFilter","materialize","Pulse_filter","visit","MultiPulse","pulses","hash","changed","ADD","REM","MOD","changes","ADD_REM","ADD_MOD","ALL","REFLOW","SOURCE","NO_SOURCE","NO_FIELDS","fork","addAll","addF","remF","modF","srcF","runAfter","sum","MultiPulse_prototype","reentrant","NO_OPT","Heap","siftdown","last","ridx","cidx","siftup","pidx","Dataflow","logLevel","_clock","_rank","_loader","_touched","_pulses","_pulse","_heap","_postrun","Dataflow_prototype","logMethod","_log","Transform","loader","cleanThreshold","shift","sources","targetRank","rerank","queue","changeset","_enqueue","preload","pending","_pending","requests","done","loadPending","request","context","events","send","prerun","postrun","dt","_getPulse","then","runAsync","_running","enqueue","Transform_prototype","register_transforms","register_definition","register_transform","Definition","groupkey","measureName","as","AggregateOps","measure","__count__","missing","mean","average","req","variance","variancep","stdev","stdevp","stderr","distinct","ci0","ci1","median","q1","q3","argmin","argmax","ValidAggregateOps","createMeasure","compareIndex","compileMeasures","agg","all","collect","helper","AggregateOps_resolve","ctr","src_bin","minstep","precision","eps","maxb","maxbins","logb","div","divide","steps","nice","src_numbers","valueof","random_random","random","setRandom","src_ascending","bisector","mid","ascendingBisect","bisectRight","bisectLeft","d3_array_src_bisect","src_extent","array_array","src_range","e10","sqrt","e5","e2","src_ticks","reverse","ticks","tickIncrement","power","LN10","tickStep","step0","step1","quantile","value0","quickselect","sd","Float64Array","median_numbers","min_min","permute","bootstrapCI","samples","alpha","mu","quartiles","lcg","seed","dist","sample","pdf","cdf","icdf","src_normal","sigma","rds","PI","cd","SQRT2","kde","support","bandwidth","kernel","estimateBandwidth","h","mixture","dists","weights","normalize","distributions","uniform","ols","uX","uY","uXY","uX2","slope","points_points","visitPoints","r_squared","predict","SSE","SST","sse","sst","linear","XY","X2","coef","rSquared","YL","XYL","X2Y","ly","xy","YS","lx","regression_quad","X3","X4","x2","XX","XX2","X2X2","poly","xv","yv","lhs","rhs","matrix","gaussianElimination","loess","bw","yhat","residuals","robustWeights","iter","edge","denom","xk","yk","tricube","xkw","updateInterval","medianResidual","cnt","prev","loess_output","MIN_RADIANS","sampleCurve","minSteps","maxSteps","minX","maxX","pm","angleDelta","a0","atan2","a1","TupleStore","_key","reset","TupleStore_prototype","Aggregate","_adds","_mods","_alen","_mlen","_drop","_cross","_dims","_dnames","_measures","_countOnly","_counts","_prev","_inputs","_outputs","_add","_rem","_ext","_get","_q","quartile","q2","ci","_ci","metadata","generates","null","Aggregate_prototype","aggr","drop","cross","curr","dims","vals","cells","generate","cell","inputs","outputs","inputMap","inputVisit","groupby","dname","cellkey","mname","outname","ops","newcell","newtuple","store","measures","celltuple","counts","adds","mods","Bin","required","Bin_prototype","flag","bins","_bins","b0","b1","SortedList","resort","Collect","Compare","Compare_update","CountPattern","root","CountPattern_prototype","Cross","tokens","tcase","toUpperCase","tokenize","case","_parameterCheck","_match","_stop","_finish","stopwords","_tuples","Cross_cross","Distributions","normal","DISTRIBUTIONS","FUNCTION","FIELD","Density","function","Density_mixture","Expression","Expression_update","expr","Extent","Subflow","Distributions_parse","def","distribution","Density_source","minsteps","maxsteps","Subflow_prototype","Facet","_keys","Facet_prototype","Field","Field_update","Filter","fieldNames","Flatten","Fold","Formula","Generate","activate","flow","subflow","flows","sf","_group","cache","rekey","k0","k1","isMod","revisit","arrays","maxlen","fnames","gen","generator","Methods","Empty","Impute","JoinAggregate","gVals","kVal","impute","getValue","getField","fName","kName","gNames","keyvals","gKey","kMap","gMap","Impute_partition","_impute","JoinAggregate_prototype","KDE","Key","Key_update","Load","Load_output","Lookup","MultiExtent","MultiExtent_update","extents","MultiValues","MultiValues_update","Params","Pivot","KDE_partition","cumulative","density","defaultValue","Pivot_prototype","PreFacet","Project","Proxy","Relay","Sample","Sequence","Sieve","TupleIndex","Values","_transform","pivotKeys","Pivot_get","aggregateParams","lut","derive","Project_project","cap","WindowOps","row_number","dense_rank","drank","percent_rank","cume_dist","cume","ntile","lag","lead","first_value","last_value","nth_value","nth","prev_value","next_value","find","ValidWindowOps","WindowState","windows","countOnly","visitInputs","param","WindowOp","WindowState_cell","WindowState_prototype","Window","wind","Window_prototype","processPartition","ignorePeers","frame","setWindow","adjustRange","bisect","Top","Left","Right","Bottom","TopLeft","TopRight","BottomLeft","BottomRight","Start","Middle","End","constants_X","constants_Y","Group","AxisRole","TitleRole","FrameRole","ScopeRole","LegendRole","RowHeader","RowFooter","RowTitle","ColHeader","ColFooter","ColTitle","Padding","Symbols","Fit","FitX","FitY","Pad","None","All","Each","Flush","Column","Row","Bounds","union","Bounds_prototype","x1","MAX_VALUE","y1","y2","expand","rotate","angle","rotatedPoints","cos","sin","cx","cy","intersect","encloses","alignsWith","height","gradient_id","patternPrefix","isGradient","gradient","gradientRef","defs","Gradient_get","Gradient","stops","color","Item","mark","bounds","GroupItem","domCanvas","getContext","domImage","Image","ResourceLoader","customLoader","ResourceLoader_prototype","increment","decrement","sanitizeURL","catch","loadImage","img","onload","loaded","onerror","ready","poll","pi","tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","path_path","moveTo","closePath","lineTo","quadraticCurveTo","bezierCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","tan","acos","t01","t21","ccw","cw","rect","src_path","d3_shape_src_constant","math_cos","math_max","math_min","math_sin","math_epsilon","math_pi","halfPi","math_tau","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","Linear","_context","areaStart","_line","areaEnd","lineStart","_point","lineEnd","curve_linear","point_x","point_y","src_line","defined","curve","defined0","src_area","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","curveRadial","Radial","_curve","radial","symbol_circle","draw","kr","noop","basis_point","Basis","BasisClosed","_x2","_x3","_x4","_y2","_y3","_y4","BasisOpen","Bundle","beta","_basis","_beta","_x","_y","curve_bundle","custom","bundle","cardinal_point","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","cardinalClosed","CardinalOpen","cardinalOpen","catmullRom_point","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","curve_catmullRom","catmullRom","CatmullRomClosed","catmullRomClosed","CatmullRomOpen","catmullRomOpen","LinearClosed","monotone_sign","slope3","h0","h1","s0","s1","slope2","monotone_point","t0","t1","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","_t0","px","py","Step","_t","curves_lookup","basis","basis-closed","basis-open","cardinal-open","cardinal-closed","catmull-rom","catmull-rom-closed","catmull-rom-open","linear-closed","monotone","horizontal","vertical","natural","step-after","step-before","curves","orientation","entry","cmdlen","regexp","path_parse","pathstr","chunks","cmd","DegToRad","HalfPi","Tau","HalfSqrt3","segmentCache","bezierCache","arc_join","bezier","th0","th1","rx","ry","sin_th","cos_th","a00","a01","a10","a11","cos_th0","sin_th0","cos_th1","sin_th1","th_half","sin_th_h2","x3","y3","temp","render_scale","current","path_render","tempX","tempY","tempControlX","tempControlY","controlX","controlY","beginPath","drawArc","coords","seg","large","sweep","rotateX","th","pl","sfactor_sq","sfactor","xc","yc","th_arc","segs","th2","th3","arc_segments","bez","builtins","circle","diamond","square","arrow","wedge","triangle","triangle-up","triangle-down","triangle-right","triangle-left","stroke","symbols_symbols","symbols_custom","customSymbol","rectangleX","rectangleY","rectangleWidth","rectangleHeight","rectangle_constant","path_rectangle","cornerRadius","rectangle","cr","path_trail","w2","ux","uy","ud","trail","shapes_x","shapes_y","shapes_cr","shapes_def","arcShape","padRadius","da0","da1","ap","rp","rc0","rc1","oc","x32","y32","arc_intersect","ax","ay","bx","by","kc","lc","centroid","src_arc","areavShape","areahShape","lineShape","rectShape","symbolShape","symbol","src_symbol","shape","trailShape","shapes_rectangle","boundContext_bounds","boundStroke","opacity","strokeOpacity","strokeWidth","circleThreshold","boundContext_context","boundContext_noop","boundContext_add","sa","ea","xmin","xmax","ymin","ymax","context_context","intersect_b","intersectPath","brush","isPointInPath","intersectPoint","box","intersectRect","intersectRule","intersectBoxLine","canvas_color","canvasGradient","createRadialGradient","createLinearGradient","addColorStop","canvas_gradient","canvas_fill","fillOpacity","globalAlpha","fillStyle","stroke_Empty","canvas_stroke","lw","strokeStyle","lineWidth","lineCap","strokeCap","lineJoin","strokeJoin","miterLimit","strokeMiterLimit","setLineDash","strokeDash","lineDashOffset","strokeDashOffset","visit_compare","zindex","zorder","scene","zdirty","zitems","visit_visit","pickVisit","hit","drawAll","drawPath","pick_pick","gx","gy","pixelRatio","hitPath","filled","isPointInStroke","pickPath","transform_translate","transform_rotate","translateItem","markItemPath","isect","tag","nested","emit","transformItem","bound","pick","marks_arc","markMultiItemPath","tip","marks_area","interp","interpolate","orient","clip_id","resetSVGClipId","svg_clip","renderer","clip","_defs","clipping","StrokeOffset","backgroundPath","hitBackground","marks_group","noBound","save","restore","interactive","marktype","pickMark","background","foreground","getImage","image","imageXOffset","imageYOffset","baseline","marks_image","aspect","ar0","ar1","drawImage","xOffset","yOffset","marks_line","marks_path_path","pathCache","marks_path","rect_draw","rule_path","currFontHeight","marks_rule","marks_shape","marks_symbol","textMetrics","text_fontSize","measureWidth","estimateWidth","canvas","useCanvas","estimate","textValue","font","text_font","text_measure","measureText","fontSize","use","fontFamily","quote","fontStyle","fontVariant","fontWeight","text_offset","textAlign","tempBounds","anchorPoint","radius","theta","text_bound","src_marks","rule","fillText","strokeText","boundItem","DUMMY","boundMark","hasItems","serialize_keys","sceneToJSON","sceneFromJSON","serialize_initialize","Scenegraph","createMark","role","Scenegraph_prototype","domCreate","doc","domFind","el","childNodes","tagName","domChild","domClear","cssClass","markdef","util_point","getBoundingClientRect","clientX","clientLeft","clientY","top","clientTop","Handler_Handler","customTooltip","_active","_handlers","_tooltip","defaultTooltip","element","Handler_prototype","Renderer_Renderer","_el","_bgcolor","initialize","origin","_obj","_origin","_scene","off","_handlerIndex","handlers","eventName","handleHref","MouseEvent","handleTooltip","show","tooltip","mdef","resolveItem","getItemBoundingClientRect","itemBounds","bottom","Renderer_prototype","scaleFactor","resize","bgcolor","_width","_height","_scale","dirty","render","_call","_render","renderAsync","_ready","resolve","_load","redraw","TooltipHideEvent","CanvasHandler","_down","_touch","_first","CanvasHandler_prototype","move","moveEvent","overEvent","outEvent","pickEvent","fire","inactive","_canvas","DOMMouseScroll","mousemove","dragover","mouseout","dragleave","mousedown","click","touchstart","changedTouches","touchmove","touchend","vegaType","devicePixelRatio","CanvasRenderer","_redraw","_dirty","CanvasRenderer_prototype","CanvasRenderer_base","CanvasRenderer_tempBounds","SVGHandler","_hrefHandler","_tooltipHandler","_options","inDOM","HTMLElement","ratio","setTransform","canvas_resize","CanvasRenderer_translate","clipToBounds","ctx","canvas_clip","clearRect","fillRect","SVGHandler_prototype","openTag","closeTag","_svg","xmlns:xlink","styles","styleProperties","SVGRenderer","_dirtyID","_root","SVGRenderer_prototype","SVGRenderer_base","updateGradient","grad","pt","SVGRenderer_href","updateClipping","mask","dirtyParents","SVGRenderer_bind","sibling","__values__","bg","ownerSVGElement","hasSiblings","padding","class","viewBox","_dirtyCheck","_dirtyAll","_resetDefs","updateDefs","isDirty","isGroup","lastChild","SVGRenderer_recurse","SVGRenderer_element","SVGRenderer_values","mark_extras","SVGRenderer_emit","setStyle","loc","location","SVGStringRenderer","_text","head","foot","body","extra","SVGStringRenderer_object","SVGStringRenderer_prototype","SVGStringRenderer_base","SVGStringRenderer_emit","prefixed","applyStyles","buildDefs","preserveAspectRatio","fx","fy","fr","stop-color","attributes","_hrefs","markGroup","clip-path","RenderType","Canvas","PNG","SVG","renderModule","intersect_intersect","hits","intersectMark","intersectGroup","visitMark","intersectItem","marks","headless","clipBounds","boundClip","TOLERANCE","sceneEqual","pathEqual","ka","kb","objectEqual","Bound","Bound_boundItem","rebound","view","markBounds","COUNTER_NAME","Identifier","Mark","Overlap","counter","_signals","getCounter","scenegraph","lookup","Mark_lookup","Init","Overlap_prototype","methods","parity","greedy","sep","Overlap_intersect","hasOverlap","hasBounds","Overlap_reset","Overlap_reflow","Render","separation","tolerance","boundScale","boundTolerance","boundOrient","util_tempBounds","util_set","AxisOffset","isYAxis","axisLayout","axis","indices","grid","labels","axisIndices","position","minExtent","maxExtent","title","titlePadding","axisTitleLayout","auto","bboxFlush","bboxFull","grid_get","offsetValue","gridLayout","nodirty","alignCol","alignRow","padCol","padRow","ncols","nrows","xExtent","xMax","yExtent","yMax","boxes","trellisLayout","band","views","rowheaders","rowfooters","colheaders","colfooters","rowtitle","coltitle","gridLayoutGroups","boundFlush","boundFull","headerBand","grid_layoutHeaders","grid_min","footerBand","grid_max","titleAnchor","titleBand","layoutTitle","headers","bf","stride","back","legendParams","config","xb","yb","legend_lookup","legends","mult","legendLayout","legend","entries","widths","_bounds","ex","ey","tpad","tx","ty","legend_translate","legendTitleOffset","legendGroupLayout","legendBounds","lr","noBar","vgrad","ViewLayout","layout","viewBounds","xBounds","yBounds","autosize","titleLayout","viewWidth","viewHeight","_autosize","_resizeView","viewSizeLayout","layoutGroup","bandSpace","paddingInner","paddingOuter","Identity","types_Linear","Log","Pow","Sqrt","Symlog","Time","Sequential","Diverging","Quantile","Quantize","Threshold","Ordinal","Point","Band","BinOrdinal","isQuantile","isInterpolating","isSequential","isDiverging","isLogarithmic","endsWith","isContinuous","isDiscrete","isDiscretizing","timeInterval_time","millisecond","second","minute","hour","month","timeInterval_utc","timeInterval","unit","invertRange","invert","invertRangeExtent","invertExtent","initRange","initInterpolator","interpolator","ordinal_implicit","ordinal","Map","define","factory","Color","reI","reN","reP","reHex3","reHex6","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_color","Rgb","rgbn","rgba","hsla","rgbConvert","rgb","color_rgb","hex","Hsl","hsl","hslConvert","hsl2rgb","m2","displayable","brighter","darker","deg2rad","rad2deg","Xn","Yn","Zn","lab_t0","lab_t1","lab_t2","t3","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","hcl","C","cubehelix_D","E","ED","EB","BC_DA","cubehelix_cubehelix","Cubehelix","bl","cubehelixConvert","basis_basis","v0","v3","t2","cosh","sinh","src_basis","src_basisClosed","d3_interpolate_src_constant","color_linear","color_hue","color_gamma","nogamma","exponential","src_rgb","rgbGamma","gamma","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","nb","na","src_value","src_date","src_number","src_object","reA","reB","cssNode","cssRoot","cssView","svgNode","src_string","am","bm","bs","bi","string_zero","valueOf","discrete","src_hue","src_round","degrees","decompose_identity","translateX","translateY","skewX","scaleX","scaleY","decompose","atan","interpolateTransform","pxComma","pxParen","degParen","xa","ya","interpolateTransformCss","interpolateTransformSvg","baseVal","consolidate","rho","zoom_cosh","ux0","uy0","w0","ux1","uy1","w1","coshr0","zoom_sinh","duration","hsl_hsl","hue","src_hsl","hslLong","lab_lab","hcl_hcl","src_hcl","hclLong","src_cubehelix_cubehelix","cubehelixGamma","cubehelix","src_cubehelix","cubehelixLong","piecewise_piecewise","src_quantize","d3_scale_src_constant","d3_scale_src_number","continuous_unit","continuous_identity","continuous_normalize","clamper","bimap","polymap","continuous_copy","clamp","transformer","untransform","piecewise","rescale","rangeRound","continuous","formatDecimal","toExponential","coefficient","src_exponent","formatSpecifier","FormatSpecifier","comma","prefixExponent","src_defaultLocale_locale","defaultLocale_format","defaultLocale_formatPrefix","formatTrim","formatRounded","formatTypes","toFixed","toPrecision","d3_format_src_identity","locale_prefixes","src_locale","grouping","thousands","currency","decimal","numerals","formatNumerals","percent","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatPrefix","defaultLocale_defaultLocale","src_tickFormat","precisionPrefix","precisionRound","precisionFixed","linearish","tickFormat","src_nice","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","log10","log2","logp","powp","transformSymlog","transformSymexp","symlogish","transformPow","transformSqrt","transformSquare","powish","pow_pow","time_durationSecond","time_durationMinute","time_durationHour","time_durationDay","time_durationWeek","durationMonth","durationYear","time_date","time_number","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickIntervals","tickInterval","sequential_transformer","k10","sequential_copy","sequential","sequentialPow","diverging_transformer","k21","divergingPow","scaleBand_band","ordinalRange","numbers_map","numbers_numbers","slice_slice","scales_scale","scales_scales","scales_create","[object Object]","identity_identity","linear_linear","log_log","sequentialLog","sequentialSymlog","diverging_diverging","divergingLog","divergingSymlog","quantile_quantile","thresholds","quantiles","quantize_quantize","threshold_threshold","scaleBinOrdinal","scaleBand_pointish","scales_key","scaleProps","interpolateRange","interpolateColors","interpolate_interpolate","quantizeInterpolator","scaleFraction","d3_interpolate_src_namespaceObject","interpolate_method","schemes_colors","palette","schemes_apply","schemes_scheme","schemes","scheme","tickCount","minStep","validTicks","endpoints","tickValues","binValues","ticks_tickFormat","sourceFormat","targetFormat","logfmt","decimalChar","dec","rightmostDigit","variablePrecision","AxisTicks","DataJoin","defaultItemCreate","isExit","Encode","category10","category20","category20b","category20c","tableau10","tableau20","accent","dark2","paired","pastel1","pastel2","set1","set2","set3","blues","greens","greys","oranges","purples","reds","blueGreen","bluePurple","greenBlue","orangeRed","purpleBlue","purpleBlueGreen","purpleRed","redPurple","yellowGreen","yellowOrangeBrown","yellowOrangeRed","blueOrange","brownBlueGreen","purpleGreen","purpleOrange","redBlue","redGrey","yellowGreenBlue","redYellowBlue","redYellowGreen","pinkYellowGreen","spectral","viridis","magma","inferno","plasma","rainbow","sinebow","browns","tealBlues","teals","warmGreys","goldGreen","goldOrange","goldRed","lightGreyRed","lightGreyTeal","lightMulti","lightOrange","lightTealBlue","darkBlue","darkGold","darkGreen","darkMulti","darkRed","label","fmod","encoders","reenter","legend_types_Symbols","Discrete","labels_symbols","labels_formats","labelValues","labels_binValues","thresholdValues","labelFormat","thresholdFormat","isDiscreteRange","formatRange","formatDiscrete","formatPoint","LegendEntries","fraction","perc","adjust","labelFraction","perc2","Paths","LinkPath_line","line-radial","sr","ta","tr","LinkPath_arc","arc-radial","LinkPath_curve","curve-radial","orthogonal-horizontal","sx","sy","orthogonal-vertical","orthogonal-radial","sc","ss","tc","ts","diagonal-horizontal","diagonal-vertical","diagonal-radial","mr","sourceX","sourceY","targetX","targetY","LinkPath","rr","ix","iy","Pie","sum_sum","DEFAULT_COUNT","includePad","Scale_SKIP","Scale","domainCheck","adjustScheme","flip","SortItems","isContinuousColor","rawDomain","domainMid","scaleKey","rangeStep","outer","inner","configureRangeStep","schemeExtent","interpolateGamma","schemeCount","configureScheme","configureRange","domainRaw","configureBins","includeZero","padDomain","domainMin","domainMax","domainImplicit","configureDomain","DefOutput","Stack","stackCenter","stackNormalize","stackZero","lastPos","lastNeg","stack","Stack_partition","d3_array_src_ascending","d3_array_src_extent","src_array_array","d3_array_src_range","ticks_e10","ticks_e5","ticks_e2","ticks_tickStep","threshold_sturges","LN2","src_max","d3_contour_src_array_slice","d3_contour_src_ascending","d3_contour_src_area","d3_contour_src_constant","src_contains","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear","src_noop","cases","src_contours","smooth","smoothLinear","contours","tz","contour","polygons","holes","startIndex","endIndex","isorings","xt","yt","_0","_1","blurX","blurY","defaultX","defaultY","defaultWeight","CONTOUR_PARAMS","DENSITY_PARAMS","Contour","weight","values0","Float32Array","values1","wi","transformPolygon","transformRing","cellSize","src_density","Feature","FeatureCollection","GeoJSON","_features","_points","lon","lat","geojson","adder","Adder","adder_add","adder_temp","bv","av","src_math_epsilon","math_epsilon2","src_math_pi","math_halfPi","quarterPi","src_math_tau","math_degrees","radians","math_abs","math_atan2","src_math_cos","math_exp","math_log","math_pow","src_math_sin","math_sign","math_sqrt","math_acos","math_asin","noop_noop","streamGeometry","streamGeometryType","streamObjectType","Sphere","sphere","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","closed","coordinate","polygonStart","polygonEnd","area_lambda00","phi00","area_lambda0","area_cosPhi0","area_sinPhi0","src_stream","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","cartesian_spherical","cartesian","cartesian_cartesian","spherical","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","bounds_lambda0","bounds_phi0","bounds_lambda1","bounds_phi1","bounds_lambda2","bounds_lambda00","bounds_phi00","bounds_p0","ranges","bounds_range","deltaSum","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","bounds_linePoint","inflection","phii","lambdai","antimeridian","bounds_angle","lambda0","lambda1","rangeCompare","rangeContains","W0","W1","centroid_X0","centroid_Y0","Z0","centroid_X1","centroid_Y1","Z1","centroid_X2","Y2","Z2","centroid_lambda00","centroid_phi00","centroid_x0","centroid_y0","z0","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","compose","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","src_rotation","forward","circleStream","direction","cosRadius","sinRadius","circleRadius","clip_buffer","lines","rejoin","pointEqual","Intersection","segments","compareIntersection","startInside","subject","segment","rejoin_link","isSubject","polygonContains_sum","longitude","polygonContains","winding","point0","phi0","sinPhi0","cosPhi0","sinPhi1","cosPhi1","point1","phi1","absDelta","intersection","phiArc","node_modules_d3_array_src_ascending","src_bisect_ascendingBisect","src_bisector_ascendingComparator","d3_array_src_bisector","d3_array_src_array_array","node_modules_d3_array_src_range","node_modules_d3_array_src_merge","src_clip","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","clip_compareIntersection","pointLine","ringSegments","validSegment","clip_antimeridian","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","clip_circle","smallRadius","notHemisphere","visible","two","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","polar","c0","v00","point2","clip_line","clipMax","clipMin","clipRectangle","corner","comparePoint","ca","cb","x__","y__","v__","x_","y_","v_","first","activeStream","bufferStream","clipStream","linePoint","polygonInside","cleanInside","graticuleX","graticuleY","graticule_graticule","X1","X0","Y1","Y0","DX","DY","graticule","outline","extentMajor","extentMinor","stepMajor","stepMinor","area_x00","area_y00","area_x0","area_y0","d3_geo_src_identity","area_areaSum","area_areaRingSum","area_areaStream","area_areaRingStart","area_areaRingEnd","area_areaPointFirst","area_areaPoint","path_area","bounds_x0","bounds_y0","bounds_x1","bounds_y1","centroid_x00","centroid_y00","path_centroid_x0","path_centroid_y0","path_bounds","path_centroid_X0","path_centroid_Y0","centroid_Z0","path_centroid_X1","path_centroid_Y1","centroid_Z1","path_centroid_X2","centroid_Y2","centroid_Z2","centroid_centroidStream","centroid_centroidPoint","centroid_centroidLineStart","centroid_centroidLineEnd","centroid_centroidRingStart","centroid_centroidRingEnd","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","path_centroid","PathContext","_radius","pointRadius","lengthRing","measure_x00","measure_y00","measure_x0","measure_y0","measure_lengthSum","measure_lengthStream","measure_lengthPointFirst","measure_lengthPoint","path_measure","PathString","_string","string_circle","_circle","d3_geo_src_path","projection","projectionStream","contextStream","transform_transformer","TransformStream","fit_fit","fitBounds","clipExtent","fitExtent","fitSize","fitWidth","fitHeight","resample_maxDepth","cosMinDistance","resample","project","delta2","resampleLineTo","depth","phi2","lambda2","dx2","dy2","dz","lambda00","b00","c00","resampleStream","ringPoint","resample_resample","resampleNone","transformRadians","scaleTranslateRotate","cosAlpha","sinAlpha","ai","fi","projection_projection","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","cacheStream","preclip","postclip","recenter","transformRotate","clipAngle","conicProjection","parallels","conicEqualAreaRaw","sy0","cylindricalEqualAreaRaw","r0y","conicEqualArea","albers","azimuthalRaw","azimuthalInvert","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","nx","A1","A2","A3","A4","equalEarthRaw","l2","l6","gnomonicRaw","identity_scaleTranslate","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","defaultPath","projectionProperties","projections_projection","proj","projections_projections","projections_create","getProjectionPath","albersusa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","albersUsa","streams","azimuthalequalarea","azimuthalequidistant","conicconformal","conicequalarea","conicequidistant","equirectangular","gnomonic","reflectX","reflectY","mercator","naturalEarth1","orthographic","stereographic","transversemercator","projections_key","GeoPath","GeoPoint","GeoShape","Graticule","Projection","Projection_set","initPath","nomod","shapeGenerator","content","Projection_create","fit","featurize","collectGeoJSON","Projection_fit","add_add","tree","ym","yp","leaf","src_quad","x_defaultX","y_defaultY","quadtree","Quadtree","leaf_copy","treeProto","cover","xz","yz","quads","retainer","removeAll","visitAfter","d3_force_src_constant","jiggle","collide_x","vx","collide_y","vy","link_index","link_find","nodeById","nodeId","dispatch_noop","dispatch_dispatch","Dispatch","dispatch_parseTypenames","dispatch_get","dispatch_set","T","taskHead","taskTail","src_dispatch","timer_frame","timeout","timer_interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","setFrame","requestAnimationFrame","clearNow","Timer","_time","timer","restart","wake","timerFlush","sleep","nap","poke","clearInterval","setInterval","simulation_x","simulation_y","initialRadius","initialAngle","src_simulation","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","tick","iterations","initializeNodes","initializeForce","closest","ForceMap","collide","radii","strength","ri","ri2","prepare","quad","rj","nbody","strengths","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","link","links","distances","bias","distance","initializeStrength","initializeDistance","Forces","ForceParams","ForceConfig","ForceOutput","Force","Force_prototype","setup","sim","getForce","numForces","setForceParam","change","iters","stopped","Force_simulation","static","finish","src_lookup","defaultSeparation","meanXReduce","maxYReduce","hierarchy_count_count","children","hierarchy","childs","Node","valued","defaultChildren","eachBefore","computeHeight","copyData","eachAfter","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","d3_hierarchy_src_array_slice","enclose","circles","array_shuffle","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","r21","r3","a2","a3","b2","b3","c3","d3","ab","siblings_place","score","siblings_Node","packEnclose","aa","sj","sk","pack","optional","constantZero","d3_hierarchy_src_constant","defaultRadius","radiusLeaf","packChildren","translateChild","treemap_round","dice","stratify_keyPrefix","preroot","ambiguous","defaultId","defaultParentId","parentId","src_stratify","stratify","nodeKey","nodeByKey","tree_defaultSeparation","nextLeft","nextRight","moveSubtree","wm","wp","nextAncestor","vim","TreeNode","treemap_slice","squarify_phi","squarifyRatio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","squarify","treemap_resquarify","resquarify","_squarify","Nest","Nest_children","Nest_nest","nest","valuesByKey","HierarchyLayout","HierarchyLayout_defaultSeparation","treesource","setParams","setFields","Output","Pack","Pack_prototype","Partition_Output","Partition","Partition_prototype","Stratify","partition","positionNode","parentKey","Layouts","tidy","nodeSize","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","midpoint","vip","vop","vom","sip","sop","som","apportion","cluster","previousNode","meanX","maxY","leafLeft","leafRight","Tree_Output","Tree","Tree_prototype","TreeLinks","Tiles","binary","sums","valueOffset","valueTarget","valueLeft","valueRight","slicedice","Treemap_Output","Treemap","Treemap_prototype","tile","paddingStack","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","src_treemap","vega_regression_src_partition","Loess","Regression_Methods","Regression","dof","degreesOfFreedom","model","dom","d3_voronoi_src_constant","src_point_x","src_point_y","RedBlackTree","RedBlackNode","P","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","after","grandpa","uncle","src_RedBlackTree","createEdge","Diagram_edges","setEdgeEnd","Diagram_cells","halfedges","createBorderEdge","vertex","clipEdge","connectEdge","cellHalfedgeAngle","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","Diagram_epsilon2","ha","hc","Diagram_circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","Diagram_epsilon","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","lexicographic","Diagram","sites","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v01","v11","v10","clipCells","edges","triangles","e1","_found","Voronoi","Voronoi_prototype","defaultExtent","diagram","voronoi","src_voronoi","cloudRadians","CloudLayout_cw","ch","CloudLayout","spiral","archimedeanSpiral","words","cloud","place","board","dxdy","maxDelta","cloudCollide","sprite","sw","msx","contextAndRatio","getImageData","zeroArray","tags","xoff","yoff","hasText","cloudSprite","cloudBounds","functor","spirals","di","w32","maxh","wcr","wsr","hcr","hsr","pixels","seenRow","archimedean","rectangular","Wordcloud_Output","Wordcloud_Params","Wordcloud","array32","Uint32Array","Bitmaps_array","Uint16Array","fontSizeRange","fsize","sizeScale","Wordcloud_extent","Dimension","query","added","SortedIndex","oldv","oldi","addv","addi","SortedIndex_sort","index0","value1","index1","SortedIndex_merge","reindex","CrossFilter","_index","_indices","CrossFilter_prototype","ResolveFilter","reinit","eval","remMap","modMap","bits","indexMap","filters","incrementOne","incrementAll","dim","old","lo1","hi1","lo0","hi0","description","ignore","bitmap","pass","src_cursor","cursor","user","setCursor","dataref","_runtime","dataset","render_size_width","_viewWidth","render_size_height","_viewHeight","render_size_offset","events_extend","_renderer","vega","itemGroup","extension","VIEW","TIMER","WINDOW","NO_TRAP","trap","itemFilter","markTarget","invoke","src_element","BindClass","NameClass","RadioClass","OptionClass","src_bind","binding","elements","signal","bind_form","bind_checkbox","bind_select","bind_radio","bind_range","bind_generate","option","valuesEqual","selected","selectedIndex","for","initialize_renderer","_background","initialize_lookup","render_headless","_scenegraph","TokenName","parser_source","parser_index","parser_length","lookahead","RawCode","Literal","Property","ast_Identifier","ArrayExpression","BinaryExpression","CallExpression","ConditionalExpression","LogicalExpression","MemberExpression","ObjectExpression","UnaryExpression","ASTNode","callee","consequent","alternate","argument","ast_children","TokenBooleanLiteral","TokenEOF","TokenIdentifier","TokenKeyword","TokenNullLiteral","TokenNumericLiteral","TokenPunctuator","TokenStringLiteral","SyntaxArrayExpression","SyntaxBinaryExpression","SyntaxCallExpression","SyntaxConditionalExpression","SyntaxIdentifier","SyntaxLiteral","SyntaxLogicalExpression","SyntaxMemberExpression","SyntaxObjectExpression","SyntaxProperty","SyntaxUnaryExpression","MessageUnexpectedToken","MessageUnexpectedNumber","MessageUnexpectedString","MessageUnexpectedIdentifier","MessageUnexpectedReserved","MessageUnexpectedEOS","MessageInvalidRegExp","MessageUnterminatedRegExp","MessageStrictOctalLiteral","MessageStrictDuplicateProperty","ILLEGAL","DISABLED","RegexNonAsciiIdentifierStart","RegexNonAsciiIdentifierPart","assert","condition","isDecimalDigit","isHexDigit","isOctalDigit","isWhiteSpace","isLineTerminator","isIdentifierStart","isIdentifierPart","keywords","if","in","do","var","new","try","let","else","void","with","enum","while","break","throw","const","yield","super","return","typeof","switch","export","import","public","finally","extends","package","private","continue","debugger","interface","protected","instanceof","implements","skipComment","scanHexEscape","throwError","scanUnicodeCodePointEscape","cu1","cu2","getEscapedIdentifier","scanIdentifier","getIdentifier","scanPunctuator","code2","ch2","ch3","ch4","ch1","scanNumericLiteral","scanHexLiteral","octal","scanOctalLiteral","parseFloat","scanRegExp","classMarker","terminated","literal","scanRegExpBody","search","scanRegExpFlags","tmp","$1","exception","testRegExp","regex","advance","scanStringLiteral","lex","finishBinaryExpression","finishCallExpression","finishIdentifier","finishLiteral","finishMemberExpression","computed","member","finishProperty","kind","messageFormat","whole","throwUnexpected","expect","parser_match","matchKeyword","keyword","parseArrayInitialiser","parseConditionalExpression","finishArrayExpression","parseObjectPropertyKey","parseObjectProperty","parseObjectInitialiser","finishObjectExpression","legalKeywords","parsePrimaryExpression","parseExpression","parseGroupExpression","parseArguments","parseNonComputedProperty","isIdentifierName","parseComputedMember","parsePostfixExpression","parseLeftHandSideExpressionAllowCall","parseUnaryExpression","binaryPrecedence","prec","marker","markers","parseBinaryExpression","finishConditionalExpression","src_constants","LOG2E","LOG10E","SQRT1_2","MIN_VALUE","src_functions","codegen","cast","fncall","DATE","utc","datetime","timezoneoffset","utcdate","utcday","utcyear","utcmonth","utchours","utcminutes","utcseconds","utcmilliseconds","indexof","lastindexof","upper","Intersect","Union","TYPE_ENUM","TYPE_RANGE_INC","TYPE_RANGE_EXC","TYPE_RANGE_LE","TYPE_RANGE_RE","UNIT_INDEX","testPoint","dval","selectionResolve_ops","E_union","E_intersect","R_union","R_intersect","DataPrefix","IndexPrefix","selectionVisitor","scope","indexName","dataName","getData","indataRef","tuplesRef","src_data_data","formatCache","formatter","format_timeFormat","dateObj","format_time","getScale","scales","geoMethod","methodName","globalMethod","geoArea","geoBounds","deltaMax","geoCentroid","src_log_log","equal","equalArray","removePredicate","props","EMPTY","tree_datum","treeNodes","_window","prefix_DataPrefix","prefix_IndexPrefix","ScalePrefix","dataVisitor","scaleVisitor","addScaleDependency","scaleName","scaleRef","functionContext","isDefined","isValid","sequence","monthFormat","monthAbbrevFormat","dayFormat","dayAbbrevFormat","inScope","markname","intersect_filter","pinchDistance","touches","pinchAngle","screen","containerSize","container","clientWidth","clientHeight","windowSize","innerWidth","innerHeight","bandspace","setdata","pathShape","retval","toggle","predicate","_trigger","eventFunctions","eventPrefix","thisPrefix","astVisitors","expressionFunction","codeGenerator","functions","miss","unitIdx","resUnit","resolved","acc","codegenParams","blacklist","whitelist","fieldvar","globalvar","constants","visitors","globals","memberDepth","outputGlobal","ast","Generators","stripQuotes","src_codegen","expression_expression","eventExpression","encodeExpression","parseParameters","spec","parseParameter","PARSERS","$ref","$key","$flat","$params","$expr","$name","parameterExpression","$fields","$field","enc","$encode","$output","$compare","$order","$tupleid","$subflow","subctx","src_dataflow","operators","signals","canonicalType","src_operator","operatorExpression","src_update","srcid","handlerExpression","eventConfig","parseOperatorParameters","vega_runtime_src_stream","updates","state_SKIP","src_context","transforms","Context","ContextFork","subcontext","$ingest","$format","$request","unresolved","getState","recurse","setState","substate","src_runtime","Width","Height","size_Padding","Skip","size_viewWidth","size_viewHeight","dataTest","signalTest","proxy","src_tooltip","formatArray","tooltip_formatValue","formatTooltip","View","_elBind","_renderType","_handler","_preventDefault","_timers","_eventListeners","_resizeListeners","_bind","bindings","_eventConfig","defaults","prevent","allow","_resize","resetSize","_resizeWidth","_resizeHeight","resizePadding","initializeResize","hover","View_prototype","lookupSignal","findOperatorHandler","addOperatorListener","removeOperatorListener","_resetRenderer","rerun","addResizeListener","removeResizeListener","addSignalListener","removeSignalListener","addDataListener","removeDataListener","total","elapsed","src_interval","timestamp","finalize","timers","listeners","hoverSet","leaveSet","elBind","Handler","Renderer","prevHandler","initialize_handler","toImageURL","blob","Blob","URL","createObjectURL","toDataURL","toCanvas","toSVG","parsers_autosize","parsers_padding","padding_number","OUTER_INVALID","outerError","parsers_signal","addSignal","addBinding","parsers_expression","preamble","signalName","getSignal","signalRef","Entry","util_entry","util_operator","util_ref","ref","refs","tupleidRef","util_fieldRef","keyFieldRef","compareRef","Descending","aggrField","Scope","util_View","isSignal","util_hasSignal","util_value","specValue","deref","stream_Timer","parseStream","mergeStream","nestedStream","eventStream","streamParameters","addStream","markrole","DEFAULT_SOURCE","MARKS","event_selector","event_selector_VIEW","DEFAULT_MARKS","parseMerge","parseSelector","LBRACK","RBRACK","LBRACE","RBRACE","COLON","COMMA","NAME","GT","event_selector_ILLEGAL","*","event_selector_find","endChar","pushChar","popChar","parseBetween","parseThrottle","event_selector_parseStream","parsers_update","isSubscope","mergeSources","addUpdate","streamSource","transforms_transform","transforms_Aggregate","transforms_AxisTicks","transforms_Bound","transforms_Collect","transforms_Compare","transforms_DataJoin","transforms_Encode","transforms_Expression","transforms_Facet","transforms_Field","transforms_Key","transforms_LegendEntries","transforms_Load","transforms_Mark","transforms_MultiExtent","transforms_MultiValues","transforms_Overlap","transforms_Params","transforms_PreFacet","transforms_Projection","transforms_Proxy","transforms_Relay","transforms_Render","transforms_Scale","transforms_Sieve","transforms_SortItems","transforms_ViewLayout","transforms_Values","FIELD_REF_ID","initScale","isValidScaleType","addScale","parseScale","parseScaleDomain","parseScaleRange","parseArray","parseLiteral","parseScaleInterpolate","objectProperty","parseScaleBins","dataLookupError","coll","addDataPipeline","scale_fieldRef","countsRef","fieldRef","sortRef","parseSort","domainRef","extentRef","valuesRef","multidomain","projection_parseParameter","Vertical","constants_Start","constants_End","Value","GuideLabelStyle","GroupTitleStyle","constants_Symbols","constants_Gradient","constants_Discrete","LegendScales","constants_Skip","constants_zero","constants_one","adjust_spatial_Skip","Swap","adjust_spatial","encode_expression","encode_field","field_resolve","encode_scale","scale_getScale","scaleType","hasBandwidth","encode_property","encode_entry","channel","encode_gradient","encode_color","encode_set","encode_rule","rules","parseEncode","MarkRole","roles_FrameRole","roles_TitleRole","encoder","addEncode","addEncoders","extendEncode","encode_util_encoders","defaultEncode","applyDefaults","guide_mark","dataRef","extras","guide_util_lookup","isVertical","symbolDirection","gradientDirection","gradientLength","gradientWidth","gradientThickness","gradientHeight","entryColumns","getEncoding","anchorExpr","alignExpr","GroupMark","TextMark","legend_gradient","userEncode","thickness","legend_gradient_discrete","vv","legend_gradient_labels","overlap","labelLimit","gradientLabelLimit","labelOffset","gradientLabelOffset","guide_group","legend_symbol_groups","symbols","symbolOffset","valueRef","xSignal","yEncode","symbolBaseFillColor","symbolBaseStrokeColor","facet","isL","isR","isLR","isVG","legend_title_baseline","exprAlign","exprAnchor","exprAngle","exprBaseline","marks_clip","clip_param","marks_role","marks_definition","marks_interactive","parsers_transform","transform_parseParameters","pdef","transform_parseParameter","lookupRef","parseIndexParameter","parseSubParameter","parseSubParameters","projectionRef","parameterValue","transform_isExpr","isField","isCompare","exprRef","outerField","isData","getDataRef","DataScope","aggregate","fromEntries","DataScope_prototype","fieldKey","addSortField","DataScope_cache","ds","optype","sortKey","trigger","parsers_mark","sieve","joinRef","markRef","encodeRef","layoutRef","boundRef","keyRef","marks_data","$context","markpath","md","pushState","subscope","addData","parsers_spec","toRuntime","marks_facet","marks_subflow","popState","tol","parseOverlap","parsers_legend","entryEncode","entryLayout","entryRef","legendEncode","scaleCount","legend_legendType","buildLegendEncode","tickMinStep","legendSymbolLayout","getChannel","getStyle","getFontSize","sizeExpression","_anchor","legend_title","angleExpr","title_baselineExpr","parsers_title","buildTitle","parseData","upstream","data_load","analyze","axis_domain_position","axis_grid","tickPos","vscale","gridScale","axis_grid_offsetValue","flushExpr","parsers_axis","ticksRef","axisX","axisY","or","axisBand","axis_config","axisEncode","tickSize","axis_ticks","isXAxis","flushOffset","flushOn","labelAlign","labelBaseline","axis_labels","u2","axis_domain","titlePos","axis_title","preprocessed","projections","addProjection","parsers_projection","signal_updates","axes","parseLambdas","view_defined","Scope_Scope","lambdas","_id","_subid","_nextsub","_encode","_lookup","_markpath","Subscope","Scope_prototype","propertyLambda","vref","annotate","stable","check","isExpr","sig","addScaleProj","projectionType","dataScope","src_config","configs","config_copy","defaultColor","defaultStrokeWidth","defaultFont","guide-label","guide-title","group-title","defaultSymbolSize","lightGray","bandPosition","domainWidth","domainColor","config_gray","gridWidth","gridColor","labelAngle","labelPadding","tickColor","tickOffset","tickRound","tickWidth","gridAlign","columnPadding","rowPadding","gradientStrokeColor","gradientStrokeWidth","labelOverlap","symbolType","symbolSize","symbolStrokeWidth","titleLimit","titleOrient","category","heatmap","ramp","diverging","src_parse","parseView","vega_transforms_namespaceObject","vega_view_transforms_namespaceObject","vega_encode_namespaceObject","vega_geo_namespaceObject","vega_force_namespaceObject","vega_hierarchy_namespaceObject","vega_regression_namespaceObject","vega_voronoi_namespaceObject","vega_wordcloud_namespaceObject","vega_crossfilter_namespaceObject","isLogicalOr","isLogicalAnd","and","isLogicalNot","not","normalizeLogicalOperand","normalizer","deepEqual","fast_deep_equal_default","duplicate","clone_default","util_pick","omit","assign","Set","fast_json_stable_stringify_default","util_hash","isNullOrFalse","util_contains","util_flatten","mergeDeep","dest","deepMerge_","unique","results","hasIntersection","prefixGenerator","prefixes","wrappedWithAccessors","fieldIntersection","util_keys","util_vals","_vals","flagKeys","util_isBoolean","varName","alphanumericS","logicalExpr","deleteNestedProperty","orderedProps","titlecase","accessPathWithDatum","pieces","replacePathInField","removePathFromField","accessPathDepth","getFirstDefined","idCounter","uniqueId","normalizeAngle","AREA","BAR","LINE","POINT","RECT","RULE","TEXT","TICK","TRAIL","CIRCLE","SQUARE","GEOSHAPE","MARK_INDEX","bar","geoshape","isPathMark","PRIMITIVE_MARKS","isMarkDef","FILL_STROKE_CONFIG","VL_ONLY_MARK_CONFIG_PROPERTIES","isUnitSpec","base_CompositeMarkNormalizer","AGGREGATE_OP_INDEX","isArgminDef","isArgmaxDef","isAggregateOp","COUNTING_OPS","isCountingAggregateOp","SUM_OPS","SHARED_DOMAIN_OP_INDEX","ROW","COLUMN","FACET","channel_X","channel_Y","channel_X2","channel_Y2","LATITUDE","LONGITUDE","LATITUDE2","LONGITUDE2","COLOR","FILL","STROKE","SHAPE","SIZE","OPACITY","FILLOPACITY","STROKEOPACITY","STROKEWIDTH","channel_TEXT","ORDER","DETAIL","KEY","TOOLTIP","HREF","GEOPOSITION_CHANNEL_INDEX","longitude2","latitude","latitude2","GEOPOSITION_CHANNELS","UNIT_CHANNEL_INDEX","isColorChannel","FACET_CHANNEL_INDEX","FACET_CHANNELS","CHANNEL_INDEX","CHANNELS","_o","channel_d","SINGLE_DEF_CHANNEL_INDEX","_o1","_d1","channel_r","channel_c","_f","SINGLE_DEF_UNIT_CHANNEL_INDEX","isSingleDefUnitChannel","isChannel","SECONDARY_RANGE_CHANNEL","isSecondaryRangeChannel","getMainRangeChannel","_latitude","_longitude","_latitude2","_longitude2","NONPOSITION_CHANNEL_INDEX","NONPOSITION_CHANNELS","POSITION_SCALE_CHANNEL_INDEX","POSITION_SCALE_CHANNELS","_tt","_hr","_dd","_oo","NONPOSITION_SCALE_CHANNEL_INDEX","NONPOSITION_SCALE_CHANNELS","SCALE_CHANNEL_INDEX","SCALE_CHANNELS","isScaleChannel","supportMark","getSupportedMark","rangeType","INVALID_SPEC","FIT_NON_SINGLE","CANNOT_FIX_RANGE_STEP_WITH_FIT","cannotProjectOnChannelWithoutField","nearestNotSupportForContinuous","selectionNotSupported","selectionNotFound","SCALE_BINDINGS_CONTINUOUS","NO_INIT_SCALE_BINDINGS","noSuchRepeatedValue","columnsNotSupportByRowCol","CONCAT_CANNOT_SHARE_AXIS","REPEAT_CANNOT_SHARE_AXIS","unrecognizedParse","differentParse","invalidTransformIgnored","NO_FIELDS_NEEDS_AS","encodingOverridden","channels","projectionOverridden","parentProjection","primitiveChannelDef","invalidFieldType","nonZeroScaleUsedWithLengthMark","zeroFalse","invalidFieldTypeForCountAggregate","invalidAggregate","missingFieldType","newType","droppingColor","emptyFieldDef","fieldDef","latLongDeprecated","newChannel","LINE_WITH_VARYING_SIZE","incompatibleChannel","markOrFacet","when","invalidEncodingChannel","facetChannelShouldBeDiscrete","facetChannelDropped","discreteChannelCannotEncode","BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL","lineWithRange","hasX2","hasY2","orientOverridden","original","CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN","cannotUseScalePropertyWithNonColor","unaggregateDomainHasNoEffectForRawField","unaggregateDomainWithNonSharedDomainOp","unaggregatedDomainWithLogScale","cannotApplySizeToNonOrientedMark","rangeStepDropped","scaleTypeNotWorkWithChannel","defaultScaleType","scaleTypeNotWorkWithFieldDef","scalePropertyNotWorkWithScaleType","propName","scaleTypeNotWorkWithMark","mergeConflictingProperty","propertyOf","independentScaleMeansIndependentGuide","domainSortDropped","UNABLE_TO_MERGE_DOMAINS","MORE_THAN_ONE_SORT","INVALID_CHANNEL_FOR_AXIS","cannotStackRangedMark","cannotStackNonLinearScale","stackNonSummativeAggregate","invalidTimeUnit","unitName","dayReplacedWithDate","fullTimeUnit","droppedDay","errorBarCenterAndExtentAreNotNeeded","errorBarCenterIsUsedWithWrongExtent","errorBarContinuousAxisHasCustomizedAggregate","compositeMark","errorBarCenterIsNotNeeded","errorBand1DNotSupport","channelRequiredForBinned","domainRequiredForThresholdScale","message_namespaceObject","log_main","log_current","log_reset","log_warn","SUNDAY_YEAR","isDateTime","MONTHS","SHORT_MONTHS","DAYS","SHORT_DAYS","dateTimeExpr","lowerM","monthIndex","shortM","shortMonthIndex","normalizeMonth","normalizeQuarter","lowerD","dayIndex","shortD","shortDayIndex","normalizeDay","timeUnit","isFacetMapping","isFacetSpec","TimeUnit","YEAR","MONTH","DAY","HOURS","MINUTES","SECONDS","MILLISECONDS","YEARMONTH","YEARMONTHDATE","YEARMONTHDATEHOURS","YEARMONTHDATEHOURSMINUTES","YEARMONTHDATEHOURSMINUTESSECONDS","MONTHDATE","MONTHDATEHOURS","HOURSMINUTES","HOURSMINUTESSECONDS","MINUTESSECONDS","SECONDSMILLISECONDS","QUARTER","YEARQUARTER","QUARTERMONTH","YEARQUARTERMONTH","UTCYEAR","UTCMONTH","UTCDAY","UTCDATE","UTCHOURS","UTCMINUTES","UTCSECONDS","UTCMILLISECONDS","UTCYEARMONTH","UTCYEARMONTHDATE","UTCYEARMONTHDATEHOURS","UTCYEARMONTHDATEHOURSMINUTES","UTCYEARMONTHDATEHOURSMINUTESSECONDS","UTCMONTHDATE","UTCMONTHDATEHOURS","UTCHOURSMINUTES","UTCHOURSMINUTESSECONDS","UTCMINUTESSECONDS","UTCSECONDSMILLISECONDS","UTCQUARTER","UTCYEARQUARTER","UTCQUARTERMONTH","UTCYEARQUARTERMONTH","LOCAL_SINGLE_TIMEUNIT_INDEX","TIMEUNIT_PARTS","UTC_SINGLE_TIMEUNIT_INDEX","UTC_MULTI_TIMEUNIT_INDEX","utcyearquarter","utcyearquartermonth","utcyearmonth","utcyearmonthdate","utcyearmonthdatehours","utcyearmonthdatehoursminutes","utcyearmonthdatehoursminutesseconds","utcquartermonth","utcmonthdate","utcmonthdatehours","utchoursminutes","utchoursminutesseconds","utcminutesseconds","utcsecondsmilliseconds","UTC_TIMEUNIT_INDEX","isUTCTimeUnit","TIMEUNIT_INDEX","yearquarter","yearquartermonth","yearmonth","yearmonthdate","yearmonthdatehours","yearmonthdatehoursminutes","yearmonthdatehoursminutesseconds","quartermonth","monthdate","monthdatehours","hoursminutes","hoursminutesseconds","minutesseconds","secondsmilliseconds","containsTimeUnit","timeunit_fieldExpr","dateExpr","tu","getDateTimeComponents","shortTimeLabels","dateComponents","hasYear","timeComponents","dateTimeComponents","normalizeTimeUnit","TYPE_INDEX","quantitative","temporal","nominal","QUANTITATIVE","ORDINAL","TEMPORAL","NOMINAL","GEOJSON","toFieldDefBase","bin","isConditionalDef","channelDef","hasConditionalFieldDef","isFieldDef","isTypedFieldDef","isStringFieldDef","isValueDef","isScaleFieldDef","isPositionFieldDef","isMarkPropFieldDef","isTextFieldDef","vgField","argAccessor","isCount","isInternalField","nofn","isOpFieldDef","isBinning","binToString","binSuffix","forAs","flatAccessWithDatum","channeldef_isContinuous","channeldef_isDiscrete","verbalTitleFormatter","countTitle","part","getTimeUnitParts","defaultTitleFormatter","fieldTitle","functionalTitleFormatter","titleFormatter","setTitleFormatter","channeldef_title","allowDisabling","includeDefault","guideTitle","getGuide","defaultTitle","getFieldDef","getTypedFieldDef","channeldef_normalize","primitiveType","normalizeFieldDef","fieldDefWithoutAggregate","normalizeBin","bin_isBinned","fullType","getFullName","defaultType","compatible","warning","COMPATIBLE","channelCompatibility","autoMaxBins","binned","isTimeFormatFieldDef","isTimeFieldDef","valueExpr","undefinedIfExprNotRequired","isLocalSingleTimeUnit","isUtcSingleTimeUnit","valueArray","binRequiresRange","isBinParams","channelHasField","encoding_isAggregate","extractTransformsFromEncoding","oldEncoding","timeUnits","aggOp","guide","isTitleDefined","newField","newFieldDef","isPositionChannel","aggregateEntry","secondaryChannel","isNonPositionScaleChannel","normalizeEncoding","normalizedEncoding","markSupported","primaryFieldDef","markChannelCompatible","fieldDefs","mapping","thisArg","encoding_reduce","getCompositeMarkTooltip","tooltipSummary","continuousAxisChannelDef","encodingWithoutContinuousAxis","withFieldName","fieldPrefix","titlePrefix","makeCompositeAggregatePartFactory","compositeMarkDef","continuousAxis","sharedEncoding","compositeMarkConfig","partName","positionPrefix","endPositionPrefix","extraEncoding","partLayerMixins","markDef","partBaseSpec","compositeMarkContinuousAxis","continuousAxisChannelDef2","continuousAxisChannelDefError","continuousAxisChannelDefError2","filterAggregateFromChannelDef","continuousAxisWithoutAggregate","compositeMarkOrient","BOXPLOT","BOXPLOT_PARTS","outliers","boxPlotNormalizer","normalizeBoxPlot","getBoxPlotType","_encoding","_p","outerSpec","boxplot","sizeValue","boxPlotType","ticksOrient","customTooltipWithoutAggregatedField","continuousFieldName","boxplotSpecificAggregate","boxParamsQuartiles","postAggregateCalculates","calculate","_b","oldEncodingWithoutContinuousAxis","filteredEncoding","customTooltipWithAggregatedField","filterTooltipWithAggregatedField","boxParams","encodingWithoutSizeColorAndContinuousAxis","makeBoxPlotPart","makeBoxPlotExtent","makeBoxPlotBox","makeBoxPlotMidTick","fiveSummaryTooltipEncoding","endTick","whiskerTooltipEncoding","whiskerLayers","boxLayers","filteredLayersMixins","lowerBoxExpr","upperBoxExpr","iqrExpr","lowerWhiskerExpr","upperWhiskerExpr","fieldExpr","joinaggregateTransform","joinaggregate","filteredWhiskerSpec","layer","encodingWithoutSizeColorContinuousAxisAndTooltip","outlierLayersMixins","continousAxisField","ERRORBAR","ERRORBAR_PARTS","errorBarNormalizer","normalizeErrorBar","tooltipEncoding","errorBarParams","makeErrorBarPart","errorbar","errorBarOrientAndInputType","xError","xError2","yError","yError2","errorBarIsInputTypeRaw","inputType","isTypeAggregatedUpperLower","errorBarIsInputTypeAggregatedUpperLower","isTypeAggregatedError","errorBarIsInputTypeAggregatedError","errorBarSpecificAggregate","tooltipTitleWithFieldName","getTitlePrefix","centerOp","lowerExtentOp","upperExtentOp","postAggregateCalculate","errorBarAggregationAndCalculation","_c","_d","oldAggregate","oldGroupBy","operation","ERRORBAND","ERRORBAND_PARTS","borders","errorBandNormalizer","normalizeErrorBand","errorBandDef","makeErrorBandPart","errorband","is2D","bandMark","bordersMark","compositeMarkRegistry","compositemark_add","VL_ONLY_GUIDE_CONFIG","VL_ONLY_LEGEND_CONFIG","COMMON_LEGEND_PROPERTY_INDEX","clipHeight","fillColor","gradientOpacity","labelColor","labelFont","labelFontSize","labelFontStyle","labelFontWeight","labelOpacity","labelSeparation","legendX","legendY","strokeColor","symbolDash","symbolDashOffset","symbolFillColor","symbolOpacity","symbolStrokeColor","titleAlign","titleBaseline","titleColor","titleFont","titleFontSize","titleFontStyle","titleFontWeight","titleOpacity","VG_LEGEND_PROPERTY_INDEX","LEGEND_PROPERTIES","VG_LEGEND_PROPERTIES","ScaleType","LINEAR","LOG","POW","SQRT","SYMLOG","TIME","QUANTILE","QUANTIZE","THRESHOLD","BIN_ORDINAL","BAND","SCALE_CATEGORY_INDEX","bin-ordinal","quantize","SCALE_TYPES","scaleCompatible","scaleType1","scaleType2","scaleCategory1","scaleCategory2","SCALE_PRECEDENCE_INDEX","scaleTypePrecedence","CONTINUOUS_TO_CONTINUOUS_SCALES","CONTINUOUS_TO_CONTINUOUS_INDEX","CONTINUOUS_TO_DISCRETE_INDEX","CONTINUOUS_DOMAIN_SCALES","CONTINUOUS_DOMAIN_INDEX","DISCRETE_DOMAIN_INDEX","hasDiscreteDomain","hasContinuousDomain","isContinuousToContinuous","isContinuousToDiscrete","defaultScaleConfig","textXRangeStep","pointPadding","barBandPaddingInner","rectBandPaddingInner","minBandSize","minFontSize","maxFontSize","minOpacity","maxOpacity","minSize","minStrokeWidth","maxStrokeWidth","quantileCount","quantizeCount","isSelectionDomain","SCALE_PROPERTY_INDEX","scale_type","src_scale_domain","src_scale_range","scale_rangeStep","scale_scheme","NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES","fieldDefType","generateScaleTypeIndexKey","channelSupportScaleType","scaleTypeSupportDataType","generateScaleTypeIndex","scaleTypeSupportProperty","channelScalePropertyIncompatability","specifiedType","SELECTION_ID","isIntervalSelection","defaultConfig","single","multi","encodings","isConcatSpec","isVConcatSpec","isHConcatSpec","isRepeatSpec","COMPOSITION_LAYOUT_PROPERTIES","spacing","extractTitleConfig","titleConfig","titleMarkConfig","nonMark","config_defaultConfig","invalidValues","binSpacing","continuousBandSize","axisLeft","axisRight","axisTop","axisBottom","gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength","headerColumn","headerRow","headerFacet","initConfig","MARK_STYLES","VL_ONLY_CONFIG_PROPERTIES","VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX","stripAndRedirectConfig","markType","vlOnlyMarkSpecificConfigs","redirectConfig","toProp","compositeMarkPart","propConfig","isLayerSpec","map_SpecMapper","mapFacet","mapRepeat","mapHConcat","mapVConcat","mapConcat","mapLayerOrUnit","mapLayer","mapUnit","subspec","hconcat","vconcat","rest","STACK_OFFSET_INDEX","STACKABLE_MARKS","STACK_BY_DEFAULT_MARKS","stack_stack","stackConfig","fieldChannel","xDef","yDef","potentialStackedChannel","stackedFieldDef","stackedField","dimensionChannel","dimensionDef","dimensionField","stackBy","cDef","disallowNonLinearStack","groupbyChannel","dropLineAndPoint","dropLineAndPointFromConfig","getPointOverlay","markConfig","getLineOverlay","pathoverlay_PathOverlayNormalizer","pointOverlay","lineOverlay","stackProps","overlayEncoding","stackFieldChannel","ruleforrangedline_RuleForRangedLineNormalizer","mainChannelDef","mergeEncoding","parentEncoding","overriden","mergeProjection","normalize_normalize","normalize_normalizer","normalizeGenericSpec","nonFacetUnitNormalizers","hasRow","hasColumn","hasFacet","mapFacetedUnit","mapUnitWithParentEncodingOrProjection","normalizeLayerOrUnit","unitNormalizer","hasMatchingType","mergedProjection","mergedEncoding","otherParams","_normalizeAutoSize","TOP_LEVEL_PROPERTIES","extractTopLevelProperties","isUrlData","isInlineData","isNamedData","isGenerator","isSequenceGenerator","isSphereGenerator","isGraticuleGenerator","MAIN","RAW","isFieldEqualPredicate","isFieldLTPredicate","isFieldLTEPredicate","isFieldGTPredicate","isFieldGTEPredicate","isFieldRangePredicate","isFieldOneOfPredicate","oneOf","isFieldPredicate","predicateValueExpr","fieldFilterExpression","useInRange","predicateValuesExpr","isFieldValidPredicate","exprs","normalizePredicate","isFilter","isLookup","isSample","isWindow","isJoinAggregate","isFlatten","isCalculate","isBin","isImpute","transform_isTimeUnit","transform_isAggregate","isStack","isFold","isSignalRef","isVgRangeStep","isDataRefDomain","VG_MARK_CONFIGS","AXIS_PARTS","AXIS_PROPERTY_TYPE","gridDash","gridOpacity","domainOpacity","labelBound","labelFlush","labelFlushOffset","tickExtra","tickOpacity","titleAngle","titleX","titleY","COMMON_AXIS_PROPERTIES_INDEX","domainDash","domainDashOffset","gridDashOffset","tickDash","tickDashOffset","AXIS_PROPERTIES_INDEX","VG_AXIS_PROPERTIES","assembleAxis","axisCmpt","combine","propType","mainExtracted","hasAxisPart","titleString","assembleTitle","assembleAxisSignals","component","sizeType","getSizeSignalRef","HEADER_TITLE_PROPERTIES_MAP","HEADER_LABEL_PROPERTIES_MAP","labelAnchor","labelOrient","HEADER_TITLE_PROPERTIES","HEADER_LABEL_PROPERTIES","DEFAULT_SORT_OP","isSortField","isSortArray","getAxisConfig","configTypes","configType","defaultLabelBaseline","axisOrient","defaultLabelAlign","properties_orient","getStyles","getMarkConfig","vgChannel","getStyleConfig","styleConfigIndex","styleConfig","formatSignalRef","specifiedFormat","isUTCScale","timeFormatExpression","numberFormat","binFormatExpression","formatExpr","numberFormatExpr","startField","endField","rawTimeFormat","alwaysReturn","expression","formatExpression","sortParams","orderDef","fieldRefOption","orderChannelDef","mergeTitleFieldDefs","f1","f2","fdToMerge","fieldDef1","mergeTitle","title1","title2","mergeTitleComponent","explicit","dataflow_DataFlowNode","debugName","_children","_hash","addChild","oldChild","newParent","OutputNode","refCounts","_source","_name","cloneObj","getDependentFields","dependents","startsWithDatum","getName","calculate_CalculateNode","_dependentFields","forEachFieldDef","sortValue","sortArrayIndexField","getHeaderChannel","getHeaderProperty","facetFieldDef","headerSpecificConfig","getHeaderProperties","HEADER_CHANNELS","HEADER_TYPES","assembleTitleGroup","layoutHeaders","headerChannel","defaultHeaderGuideBaseline","defaultHeaderGuideAlign","assembleHeaderProperties","assembleHeaderGroups","layoutHeader","headerType","headerCmpt","assembleHeaderGroup","getSort","assembleLabelTitle","isFacetWithoutRowCol","isFacetModel","hasAxes","sizeChannel","sizeSignal","LAYOUT_TITLE_BAND","getLayoutTitleBand","propertiesMap","assembleLayoutSignals","sizeSignals","layoutSize","scaleComponent","getScaleComponent","stepSignal","sizeExpr","cardinality","timeunit_TimeUnitNode","formula","reduceFieldDef","timeUnitComponent","transforms_scales","selCmpt","selDef","repeater","topLevelSignals","namedSg","VL_SELECTION_RESOLVE","scales_domain","TUPLE_FIELDS","SelectionProjectionComponent","SCALE_TRIGGER","interval_interval","fieldsSg","hasScales","dataSignals","scaleTriggers","filterExpr","interval_events","cs","vname","visual","scaled","coord","assembleInit","channelSignals","toNum","selection_unitName","TUPLE","modifyExpr","xvname","yvname","STORE","vgStroke","singleOrMultiSignals","MODIFY","SELECTION_DOMAIN","compilers","forEachSelection","selections","sel","facetModel","getFacetModel","requiresSelectionId","transforms_nearest","nearest","cellDef","isVoronoi","mixins_tooltip","reactiveGeom","exists","transforms_inputs","sgname","transforms_toggle","tpl","findIndex","addClear","vIdx","tIdx","ANCHOR","DELTA","translate_translate","onDelta","sizeSg","scaleCmpt","zoom_ANCHOR","zoom_DELTA","zoom_zoom","zoom_onDelta","transforms_compilers","sg","cfg","parseInit","allSignals","forEachTransform","assembleUnitSelectionMarks","selCompiler","txCompiler","assembleSelectionPredicate","dfnode","stores","predicateStr","getSelectionComponent","tunode","insertAsParentOf","predicate_expression","filterOp","isSelectionPredicate","midPointWithPositionInvalidTest","midPoint","wrapPositionInvalidTest","fieldInvalidTestValueRef","fieldInvalidPredicate","zeroValueRef","invalid","getOffset","markDefOffsetValue","valueref_bin","side","valueref_fieldRef","mixins","bandRef","binMidSignal","fieldDef2","channel2Def","defaultRef","channel2","offsetMixins","tooltipForEncoding","usedKey","mainChannel","valueref_text","valueref_mid","sizeRef","positionDefault","checkBarAreaWithoutZero","checkBarAreaWithZero","definedValueOrConfig","domainDefinitelyIncludesZero","isVisible","mixins_color","configValue","transparentIfNeeded","defaultFill","defaultStroke","colorVgChannel","fillStrokeMarkDefAndConfig","nonPosition","baseEncodeEntry","markDefProperties","wrapAllFieldsInvalid","mixins_text","allFieldsInvalidPredicate","valueIfDefined","filterIndex","aggregator","mixins_defined","wrapCondition","refFn","conditionValueRef","isConditionalSelection","tooltipRefFromChannelDef","markTooltip","defaultSizeRef","centeredBandPositionMixins","binPosition","pointPosition","valueref_position","pointPosition2","baseChannel","position2","guideEncodeEntry","valueDef","defaultScaleResolve","isLayerModel","isConcatModel","isRepeatModel","parseGuideResolve","channelScaleResolve","split_Split","implicit","getWithExplicit","setWithExplicit","makeExplicit","makeImplicit","tieBreakByComparing","defaultTieBreaker","mergeValuesWithExplicit","tieBreaker","component_LegendComponent","properties_type","properties_defaultType","properties_direction","legendConfig","legendType","defaultDirection","gradientLengthSignal","encode_type","legendCmp","encode_symbols","symbolsSpec","propsList","applyMarkConfig","getMaxValue","getFirstConditionValue","legend_encode_gradient","gradientSpec","encode_labels","labelsSpec","getConditionValue","conditionalDef","reducer","hasConditionalValueDef","parseLegend","isUnitModel","legendComponent","legendCmpt","getLegendDefWithScale","getProperty","isExplicit","legendEncoding","legendEncodingPart","legend_encode_namespaceObject","parseLegendForChannel","parseUnitLegend","mergeLegendComponent","parseNonUnitLegend","defaultGradientLength","properties_defaultLabelOverlap","defaultSymbolType","legend_properties_values","mergedLegend","childLegend","mergedOrient","childOrient","typeMerged","mergedValueWithExplicit","mergeSymbolType","st1","st2","assembleLegends","legendComponentIndex","legendByDomain","domainHash","domains","mergedLegendComponent","assembleProjections","assembleProjectionForModel","assembleProjectionsForModelAndChildren","lookupDataSource","PROJECTION_PROPERTIES","component_ProjectionComponent","specifiedProjection","isFit","parseProjection","hasProjection","posssiblePair","requestDataName","gatherFitData","projectionName","parseUnitProjection","nonUnitProjection","mergable","allPropertiesShared","mergeIfNoConflict","modelProjection","renameProjection","parseNonUnitProjections","source_SourceNode","_data","defaultExtension","_generator","checkLinks","OptimizerBase","_mutated","mutatedFlag","optimizer_BottomUpOptimizer","_continue","continueFlag","setContinue","setMutated","optimizeNextFromLeaves","TopDownOptimizer","addDimension","isGeoPositionChannel","posChannel","getPositionChannelFromLatLong","aggregate_AggregateNode","dimensions","groupBy","isAggregate","fd","meas","argField","scaleDomain","setEqual","parentMeasures","childMeasures","mergeMeasures","log_debug","alias","createBinComponent","isBinTransform","normalizedBin","binKey","extentSignal","getSignalsFromModel","binComponent","bin_BinNode","binComponentIndex","formulaAs","rangeFormula","renameSignal","binAs","remainingAs","binTrans","facet_FacetNode","sortField","sortIndexField","childModel","childIndependentFieldsWithStep","childScaleComponent","getFieldFromDomain","assembleDomain","crossedDataName","childChannel","hasSharedAxis","assembleRowColumnHeaderData","getChildIndependentFieldsWithStep","facetData","assembleFacetHeaderData","filter_FilterNode","unquote","formatparse_ParseNode","_parse","ancestorParse","makeWithAncestors","forEachLeaf","subop","isNumberFieldDef","mainFieldDef","parsedAs","copyAll","parseNothing","formatParse","onlyNested","formatparse_parseExpression","joinaggregate_JoinAggregateTransformNode","getDefaultName","joinAggregateFieldDef","stack_StackNode","_stack","stackTransform","sortFields","sortOrder","normalizedAs","isValidAsArray","stackField","facetby","stackProperties","dimensionFieldDef","stackby","_field","getStackByFields","getGroupbyFields","window_WindowTransformNode","windowFieldDef","optimizers_MoveParseUp","numChildren","producedFields","dependentFields","swapWithParent","optimizers_MergeIdenticalNodes","mergedNode","hashes","buckets","mergeNodes","optimizers_RemoveUnusedSubtrees","optimizers_RemoveDuplicateTimeUnits","pfields","moveFacetDown","facetMain","main","moveMainDownToFacet","cloner","newName","FACET_SCALE_PREFIX","getSource","setSource","outputNodes","addDimensions","optimizers_RemoveUnnecessaryNodes","isRequired","optimizers_MergeParse","parseChildren","commonParse","parseNode","mergedParseNode","optimizers_MergeAggregateNodes","aggChildren","groupedAggregates","groupBys","mergeableAggs","mergedAggs","optimizers_MergeBins","moveBinsUp","promotableBins","remainingBins","promotedBin","remainingBin","MAX_OPTIMIZATION_RUNS","getLeaves","roots","isTrue","runOptimizer","optimizer","runFlags","optimizationDataflowHelper","dataComponent","SignalRefWrapper","exprGenerator","rename","domain_parseScaleDomain","specifiedScales","localScaleComponents","specifiedScale","specifiedDomain","scaleConfig","reason","canUseUnaggregatedDomain","useUnaggregatedDomain","normalizeUnaggregatedDomain","parseSingleChannelDomain","parseDomainForChannel","localScaleCmpt","isFaceted","facetParent","parseUnitScaleDomain","childComponent","parseNonUnitScaleDomain","mapDomainToDataSignal","isStacked","normalizeSortField","isSortByEncoding","domainSort","getSignalName","isDataRefUnionedDomain","nonUnionDomain","isFieldRefUnionDomain","uniqueDomains","_s","sorts","simpleSorts","allData","mergeDomains","assembleScalesForModel","_r","otherScaleProps","scaleRange","assembleScaleRange","isRawSelectionDomain","selDomain","assembleSelectionScaleDomain","component_ScaleComponent","typeWithExplicit","RANGE_PROPERTIES","getSizeType","parseUnitScaleRange","mergedScaleCmpt","sizeSpecified","xyRangeSteps","getRangeStep","getXYRangeStep","rangeWithExplicit","noRangeStep","supportedByScaleType","channelIncompatability","parseScheme","fromName","rangeMin","sizeRangeMin","rangeMax","maxBandSize","minXYRangeStep","maxSize","pointStep","MAX_SIZE_RANGE_STEP_RATIO","sizeRangeMax","rMax","range_interpolateRange","defaultContinuousToDiscreteCount","defaultRange","parseRangeForChannel","binSignal","updatedName","binCount","isExtendedScheme","parseScaleProperty","specifiedValue","sType","copyKeyFromObject","scalePadding","scalePaddingInner","properties_bins","properties_interpolate","properties_nice","barConfig","continuousPadding","properties_padding","paddingValue","bandPaddingInner","properties_paddingInner","paddingInnerValue","bandPaddingOuter","barBandPaddingOuter","rectBandPaddingOuter","properties_paddingOuter","properties_reverse","properties_zero","getDefaultValue","parseUnitScaleProperty","parseNonUnitScaleProperty","properties_parseScaleRange","valueWithExplicit","type_scaleType","type_defaultType","parseScaleCore","scaleComponents","parseUnitScaleCore","scaleTypeWithExplicitIndex","explicitScaleType","childScaleType","scaleTypeTieBreaker","childScale","renameScale","parseNonUnitScaleCore","NameMap","nameMap","oldName","model_Model","parentGivenName","correctDataNames","scaleNameMap","projectionNameMap","signalNameMap","specType","compositionConfig","spacingConfig","extractCompositionLayout","outputNodeRefCounts","parseLayoutSize","renameTopLevelLayoutSizeSignal","parseSelections","parseAxesAndHeaders","parseLegends","parseMarkGroup","parseScales","baseView","isTopLevel","encodeEntry","assembleEncodeFromView","headerComponentIndex","headerComponent","assembleLayoutTitleBand","assembleDefaultLayout","headerMarks","axisComponents","assembleAxes","titleNoEncoding","assembleSignals","assembleLayout","assembleHeaderMarks","assembleMarks","assembleScales","hasDescendantWithFieldOnChannel","fullName","oldSignalName","originalScaleName","localScaleComponent","variableName","origName","model_ModelWithField","getMapping","filterinvalid_FilterInvalidNode","vegaFilters","flatten_FlattenTransformNode","flatten","fold_FoldTransformNode","specifiedAs","fold","geojson_GeoJSONNode","geoJsonCounter","pair","geopoint_GeoPointNode","graticule_GraticuleNode","identifier_IdentifierNode","barPosition","sizeDef","isBarLength","bar_defaultSizeRef","defaultPosRef","centerChannel","centeredPointPositionWithSize","markPropOrConfig","discreteBandSize","point_encodeEntry","fixedShape","shapeMixins","rectPosition","defaultSize","vgSizeChannel","bandSize","markCompiler","vgMark","postEncodingTransform","shapeDef","text_align","text_baseline","vgThicknessChannel","parseMarkGroups","details","pathGroupingFields","pathMarks","getMarkGroups","fromPrefix","FACETED_PATH_PREFIX","parsePathMark","xScale","yScale","scaleClip","projectionClip","dimensionChannelDef","mark_getSort","impute_ImputeNode","imputeTransform","imputedChannel","keyChannel","groupbyFields","initialImpute","processSequence","setImputedField","data_AncestorParse","lookup_LookupNode","secondary","fromSource","findSource","fromOutputName","fromOutputNode","foreign","asName","sample_SampleTransformNode","sequence_SequenceNode","makeWalkTree","datasetIndex","walkTree","dataSource","assembleFormatParse","assembleTransforms","assemble","parseFacetHeader","makeHeaderComponent","mergeChildAxis","axisComponent","mainAxis","parseLayerLayoutSize","parseChildrenLayoutSize","layoutSizeCmpt","parseNonUnitLayoutSizeForChannel","parseRepeatLayoutSize","SIZE_TYPE_TO_MERGE","mergedSize","childSize","scaleResolve","defaultUnitSize","replaceRepeat","replaceRepeaterInFieldDef","isSortableFieldDef","replaceRepeaterInChannelDef","replaceRepeater","facetSortFieldName","facet_FacetModel","buildModel","replaceRepeaterInFacet","initFacet","normalizedFacet","parse_parseData","parseFacetHeaders","assembleSelectionTopLevelSignals","assembleSelectionData","layoutMixins","layoutHeaderComponent","bandType","columnDistinctSignal","getHeaderLayoutMixins","assembleGroup","facetRoot","getCardinalityAggregateForChild","outputName","ORTHOGONAL_ORIENT","assembleFacetData","assembleGroupEncodeEntry","assembleGroupStyle","assembleFacet","facetSortFields","facetSortOrder","assembleFacetSignals","otherData","hasName","existingSource","parseRoot","parentIsLayer","makeFromEncoding","lookupCounter","transformNode","derivedType","makeImplicitFromFilterTransform","makeFromTransform","make","parseTransformArray","makeImplicitFromEncoding","parseAll","parseAllForSortIndex","rawName","mainName","facetName","makeJoinAggregateFromFacet","baseconcat_BaseConcatModel","db","concat_ConcatModel","concatType","getChildren","sizeTypeToMerge","parseConcatLayoutSize","component_AxisComponent","OPPOSITE_ORIENT","mergeAxisComponents","mergedAxisCmpts","childAxisCmpts","mergeAxisComponent","getFieldDefTitle","parseAxis","specifiedAxis","properties_labelAngle","gridChannel","defaultGrid","defaultLabelFlush","defaultLabelOverlap","defaultTickCount","properties_values","parse_getProperty","parse_isExplicit","axisEncoding","axisEncodingPart","specifiedLabelsSpec","axis_encode_labels","normalizeMarkDef","specifiedOrient","xIsContinuous","yIsContinuous","xIsTemporal","yIsTemporal","init_orient","init_opacity","filledConfig","init_filled","init_cursor","unit_UnitModel","parentGivenSize","specifiedAxes","specifiedLegends","initSize","replaceRepeaterInEncoding","initScales","initAxes","initLegend","isGeoShapeMark","hasGeoPosition","_axis","axisSpec","_legend","supportLegend","layoutSizeComponent","parseUnitLayoutSize","selDefs","selCmpts","selectionConfig","parseUnitSelection","hasSelections","assembleTopLevelSignals","assembleUnitSelectionData","layer_LayerModel","axisCount","oppositeOrient","parseLayerAxes","assembleLayerSelectionMarks","repeat_RepeatModel","repeatValues","_initChildren","repeatValue","rowValue","columnValue","childRepeat","unitSize","isAnyConcatSpec","compile","inputSpec","newLogger","topLevelAutosize","configAutosize","isUnitOrLayer","normalizeAutoSize","firstPassCounter","secondPassCounter","optimizeDataflow","topLevelProperties","datasets","usermeta","vgConfig","sourceIndex","newData","whereTo","assembleRootData","layoutSignals","$schema","assembleTopLevelModel","topLevelSpec","getTopLevelProperties","extractor","oldTransforms","extractTransforms","build_package","theme_excel","theme_ggplot2","theme_quartz","theme_vox","theme_dark","theme_fivethirtyeight","colorSchemes","category-6","fire-7","fireandice-6","ice-7","theme_latimes","fontColor","build_style","EL_ID","DEFAULT_OPTIONS","offsetX","offsetY","styleId","theme","disableDefaultStyle","maxDepth","formatValue_rest","formatValue_stringify","build_Handler_Handler","elementId","tooltip_handler","getElementById","createDefaultStyle","valueToHtml","formatValue_formatValue","tooltipBox","calculatePosition","post","editor","open","listen","postMessage","src_style","util_deepMerge_","util_mergeDeep","vl","guessMode","embed_embed","vega_namespaceObject","build_src_namespaceObject","I18N","CLICK_TO_VIEW_ACTIONS","COMPILED_ACTION","EDITOR_ACTION","PNG_ACTION","SOURCE_ACTION","SVG_ACTION","NAMES","vega-lite","VERSION","PREPROCESSOR","vgjson","vljson","SVG_CIRCLES","viewSource","sourceHeader","sourceFooter","footer","win","providedMode","vega_schema_url_parser_default","_arguments","onBeforeParse","actions","png","compiled","i18n","Warn","downloadFileName","defaultStyle","ID","innerText","build_namespaceObject","vgSpec","patchString","runtime","updateSet","wrapper","dn","ctrl","i18nExportAction","json_stringify_pretty_compact_default","editorUrl","fulfilled","rejected","_instanceof","nativeMap","nativeSet","nativePromise","circular","includeNonEnumerable","allParents","allChildren","useBuffer","_clone","__isArray","__isRegExp","__getRegExpFlags","__isDate","getTime","getPrototypeOf","keyChild","valueChild","entryChild","attrs","getOwnPropertyDescriptor","descriptor","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","ignoreCase","multiline","clonePrototype","keyList","hasProp","arrA","arrB","dateA","dateB","regexpA","regexpB","vega_embed_1","__importDefault","vega_embed_2","showError","vegaEmbed","output_area","imgIndex","imageIndex","jsIndex","javascriptIndex","__assign","credentials","imageData","image/png","jupyter-vega","output_type","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","nextTick","browser","argv","addListener","once","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt"],"mappings":"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,EACAniE,EAAA,EACA6f,EAAA,EACAm7B,GAAA,EACAmT,GAAA,IChEO+mI,GAAA,2CAKAC,GAAA,CACP/2G,KAAA,OACAyhF,UAAA,OACAu1B,SAAA,OACAC,YAAA,OACA35B,UAAA,OACAkE,UAAA,OACAx1F,OAAA,OACAo1F,aAAA,OACA18J,OAAA,OACA48J,YAAA,OACA41B,cAAA,OACA71B,YAAA,OACA10J,OAAA,OACAixF,WAAA,OACA0gE,WAAA,OACAoD,WAAA,OACAnD,cAAA,OACA44B,WAAA,OACAtP,WAAA,OACAuP,WAAA,OACAC,iBAAA,OACAvP,UAAA,OACAC,cAAA,OACAE,gBAAA,OACArxB,WAAA,OACAsxB,aAAA,OACA7lB,aAAA,OACAV,aAAA,OACA1hF,OAAA,OACAI,UAAA,OACAD,UAAA,OACArhE,OAAA,OACAohE,SAAA,OACAyhF,UAAA,OACA01B,UAAA,OACAz1B,WAAA,OACA01B,YAAA,OACAz1B,UAAA,OACA5pH,MAAA,OACA+lH,SAAA,OACA39E,MAAA,OACAsoG,WAAA,OACA4O,WAAA,OACA3O,cAAA,OACAC,WAAA,OACAC,UAAA,OACAC,cAAA,OACAE,gBAAA,OACAzmB,WAAA,OACA0mB,aAAA,OACA5oG,aAAA,OACAk3G,OAAA,OACAC,OAAA,OACA31B,UAAA,OACA79D,UAAA,OACAnqE,OAAA,OACAv0B,MAAA,OACAqkE,OAAA,QAEA8tH,GAAA,CACA3rH,OAAA,EACAo1F,aAAA,EACA18J,OAAA,EACA48J,YAAA,EACAs2B,WAAA,EACAC,iBAAA,EACAX,cAAA,EACA71B,YAAA,EACA10J,OAAA,EACAixF,WAAA,EACA5d,KAAA,EACAyhF,UAAA,EACAu1B,SAAA,EACAc,eAAA,EACAb,YAAA,EACAz1B,UAAA,EACAlD,WAAA,EACAoD,WAAA,EACAnD,cAAA,EACA44B,WAAA,EACAtP,WAAA,EACAuP,WAAA,EACAC,iBAAA,EACAvP,UAAA,EACAC,cAAA,EACAC,eAAA,EACAC,gBAAA,EACArxB,WAAA,EACAsxB,aAAA,EACA7lB,aAAA,EACAV,aAAA,EACA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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","export default function(fn, fields, name) {\n fn.fields = fields || [];\n fn.fname = name;\n return fn;\n}\n\nexport function accessorName(fn) {\n return fn == null ? null : fn.fname;\n}\n\nexport function accessorFields(fn) {\n return fn == null ? null : fn.fields;\n}\n","export default function(message) {\n throw Error(message);\n}\n","import error from './error';\n\nexport default function(p) {\n var path = [],\n q = null,\n b = 0,\n n = p.length,\n s = '',\n i, j, c;\n\n p = p + '';\n\n function push() {\n path.push(s + p.substring(i, j));\n s = '';\n i = j + 1;\n }\n\n for (i=j=0; j<n; ++j) {\n c = p[j];\n if (c === '\\\\') {\n s += p.substring(i, j);\n i = ++j;\n } else if (c === q) {\n push();\n q = null;\n b = -1;\n } else if (q) {\n continue;\n } else if (i === b && c === '\"') {\n i = j + 1;\n q = c;\n } else if (i === b && c === \"'\") {\n i = j + 1;\n q = c;\n } else if (c === '.' && !b) {\n if (j > i) {\n push();\n } else {\n i = j + 1;\n }\n } else if (c === '[') {\n if (j > i) push();\n b = i = j + 1;\n } else if (c === ']') {\n if (!b) error('Access path missing open bracket: ' + p);\n if (b > 0) push();\n b = 0;\n i = j + 1;\n }\n }\n\n if (b) error('Access path missing closing bracket: ' + p);\n if (q) error('Access path missing closing quote: ' + p);\n\n if (j > i) {\n j++;\n push();\n }\n\n return path;\n}\n","export default Array.isArray;\n","export default function(_) {\n return _ === Object(_);\n}\n","export default function(_) {\n return typeof _ === 'string';\n}\n","import isArray from './isArray';\nimport isObject from './isObject';\nimport isString from './isString';\n\nexport default function $(x) {\n return isArray(x) ? '[' + x.map($) + ']'\n : isObject(x) || isString(x) ?\n // Output valid JSON and JS source strings.\n // See http://timelessrepo.com/json-isnt-a-javascript-subset\n JSON.stringify(x).replace('\\u2028','\\\\u2028').replace('\\u2029', '\\\\u2029')\n : x;\n}\n","import accessor from './accessor';\nimport splitAccessPath from './splitAccessPath';\nimport stringValue from './stringValue';\n\nexport default function(field, name) {\n var path = splitAccessPath(field),\n code = 'return _[' + path.map(stringValue).join('][') + '];';\n\n return accessor(\n Function('_', code),\n [(field = path.length===1 ? path[0] : field)],\n name || field\n );\n}\n","import accessor from './accessor';\nimport field from './field';\n\nvar empty = [];\n\nexport var id = field('id');\n\nexport var identity = accessor(function(_) { return _; }, empty, 'identity');\n\nexport var zero = accessor(function() { return 0; }, empty, 'zero');\n\nexport var one = accessor(function() { return 1; }, empty, 'one');\n\nexport var truthy = accessor(function() { return true; }, empty, 'true');\n\nexport var falsy = accessor(function() { return false; }, empty, 'false');\n","function log(method, level, input) {\n var msg = [level].concat([].slice.call(input));\n console[method](...msg); // eslint-disable-line no-console\n}\n\nexport var None = 0;\nexport var Error = 1;\nexport var Warn = 2;\nexport var Info = 3;\nexport var Debug = 4;\n\nexport default function(_, method) {\n var level = _ || None;\n return {\n level: function(_) {\n if (arguments.length) {\n level = +_;\n return this;\n } else {\n return level;\n }\n },\n error: function() {\n if (level >= Error) log(method || 'error', 'ERROR', arguments);\n return this;\n },\n warn: function() {\n if (level >= Warn) log(method || 'warn', 'WARN', arguments);\n return this;\n },\n info: function() {\n if (level >= Info) log(method || 'log', 'INFO', arguments);\n return this;\n },\n debug: function() {\n if (level >= Debug) log(method || 'log', 'DEBUG', arguments);\n return this;\n }\n }\n}\n","export default function(array) {\n return array[array.length - 1];\n}\n","export default function(_) {\n return _ == null || _ === '' ? null : +_;\n}\n","import {identity} from './accessors';\nimport peek from './peek';\nimport toNumber from './toNumber';\n\nfunction exp(sign) {\n return function(x) { return sign * Math.exp(x); };\n}\n\nfunction log(sign) {\n return function(x) { return Math.log(sign * x); };\n}\n\nfunction symlog(c) {\n return function(x) { return Math.sign(x) * Math.log1p(Math.abs(x / c)); };\n}\n\nfunction symexp(c) {\n return function(x) { return Math.sign(x) * Math.expm1(Math.abs(x)) * c; };\n}\n\nfunction pow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction pan(domain, delta, lift, ground) {\n var d0 = lift(domain[0]),\n d1 = lift(peek(domain)),\n dd = (d1 - d0) * delta;\n\n return [\n ground(d0 - dd),\n ground(d1 - dd)\n ];\n}\n\nexport function panLinear(domain, delta) {\n return pan(domain, delta, toNumber, identity);\n}\n\nexport function panLog(domain, delta) {\n var sign = Math.sign(domain[0]);\n return pan(domain, delta, log(sign), exp(sign));\n}\n\nexport function panPow(domain, delta, exponent) {\n return pan(domain, delta, pow(exponent), pow(1/exponent));\n}\n\nexport function panSymlog(domain, delta, constant) {\n return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n var d0 = lift(domain[0]),\n d1 = lift(peek(domain)),\n da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n\n return [\n ground(da + (d0 - da) * scale),\n ground(da + (d1 - da) * scale)\n ];\n}\n\nexport function zoomLinear(domain, anchor, scale) {\n return zoom(domain, anchor, scale, toNumber, identity);\n}\n\nexport function zoomLog(domain, anchor, scale) {\n var sign = Math.sign(domain[0]);\n return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\n\nexport function zoomPow(domain, anchor, scale, exponent) {\n return zoom(domain, anchor, scale, pow(exponent), pow(1/exponent));\n}\n\nexport function zoomSymlog(domain, anchor, scale, constant) {\n return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n","export function quarter(date) {\n return 1 + ~~(new Date(date).getMonth() / 3);\n}\n\nexport function utcquarter(date) {\n return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n","import isArray from './isArray';\n\nexport default function(_) {\n return _ != null ? (isArray(_) ? _ : [_]) : [];\n}\n","/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nexport default function(range, min, max) {\n var lo = range[0],\n hi = range[1],\n span;\n\n if (hi < lo) {\n span = hi;\n hi = lo;\n lo = span;\n }\n span = hi - lo;\n\n return span >= (max - min)\n ? [min, max]\n : [\n (lo = Math.min(Math.max(lo, min), max - span)),\n lo + span\n ];\n}\n","export default function(_) {\n return typeof _ === 'function';\n}\n","import {default as accessor, accessorFields} from './accessor';\nimport array from './array';\nimport isFunction from './isFunction';\nimport splitAccessPath from './splitAccessPath';\nimport stringValue from './stringValue';\n\nexport default function(fields, orders) {\n var idx = [],\n cmp = (fields = array(fields)).map(function(f, i) {\n if (f == null) {\n return null;\n } else {\n idx.push(i);\n return isFunction(f) ? f\n : splitAccessPath(f).map(stringValue).join('][');\n }\n }),\n n = idx.length - 1,\n ord = array(orders),\n code = 'var u,v;return ',\n i, j, f, u, v, d, t, lt, gt;\n\n if (n < 0) return null;\n\n for (j=0; j<=n; ++j) {\n i = idx[j];\n f = cmp[i];\n\n if (isFunction(f)) {\n d = 'f' + i;\n u = '(u=this.' + d + '(a))';\n v = '(v=this.' + d + '(b))';\n (t = t || {})[d] = f;\n } else {\n u = '(u=a['+f+'])';\n v = '(v=b['+f+'])';\n }\n\n d = '((v=v instanceof Date?+v:v),(u=u instanceof Date?+u:u))';\n\n if (ord[i] !== 'descending') {\n gt = 1;\n lt = -1;\n } else {\n gt = -1;\n lt = 1;\n }\n\n code += '(' + u+'<'+v+'||u==null)&&v!=null?' + lt\n + ':(u>v||v==null)&&u!=null?' + gt\n + ':'+d+'!==u&&v===v?' + lt\n + ':v!==v&&u===u?' + gt\n + (i < n ? ':' : ':0');\n }\n\n f = Function('a', 'b', code + ';');\n if (t) f = f.bind(t);\n\n fields = fields.reduce(function(map, field) {\n if (isFunction(field)) {\n (accessorFields(field) || []).forEach(function(_) { map[_] = 1; });\n } else if (field != null) {\n map[field + ''] = 1;\n }\n return map;\n }, {});\n\n return accessor(f, Object.keys(fields));\n}\n","import isFunction from './isFunction';\n\nexport default function(_) {\n return isFunction(_) ? _ : function() { return _; };\n}\n","export default function(delay, handler) {\n var tid, evt;\n\n function callback() {\n handler(evt);\n tid = evt = null;\n }\n\n return function(e) {\n evt = e;\n if (tid) clearTimeout(tid);\n tid = setTimeout(callback, delay);\n };\n}\n","export default function(_) {\n for (var x, k, i=1, len=arguments.length; i<len; ++i) {\n x = arguments[i];\n for (k in x) { _[k] = x[k]; }\n }\n return _;\n}\n","/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nexport default function(array, f) {\n var i = 0, n, v, min, max;\n\n if (array && (n = array.length)) {\n if (f == null) {\n // find first valid value\n for (v = array[i]; v == null || v !== v; v = array[++i]);\n min = max = v;\n\n // visit all other values\n for (; i<n; ++i) {\n v = array[i];\n // skip null/undefined; NaN will fail all comparisons\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n } else {\n // find first valid value\n for (v = f(array[i]); v == null || v !== v; v = f(array[++i]));\n min = max = v;\n\n // visit all other values\n for (; i<n; ++i) {\n v = f(array[i]);\n // skip null/undefined; NaN will fail all comparisons\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n }\n }\n\n return [min, max];\n}\n","export default function(array, f) {\n var i = -1,\n n = array.length,\n a, b, c, u, v;\n\n if (f == null) {\n while (++i < n) {\n b = array[i];\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n u = v = i;\n while (++i < n) {\n b = array[i];\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n } else {\n while (++i < n) {\n b = f(array[i], i, array);\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n u = v = i;\n while (++i < n) {\n b = f(array[i], i, array);\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n }\n\n return [u, v];\n}\n","var NULL = {};\n\nexport default function(input) {\n var obj = {},\n map,\n test;\n\n function has(key) {\n return obj.hasOwnProperty(key) && obj[key] !== NULL;\n }\n\n map = {\n size: 0,\n empty: 0,\n object: obj,\n has: has,\n get: function(key) {\n return has(key) ? obj[key] : undefined;\n },\n set: function(key, value) {\n if (!has(key)) {\n ++map.size;\n if (obj[key] === NULL) --map.empty;\n }\n obj[key] = value;\n return this;\n },\n delete: function(key) {\n if (has(key)) {\n --map.size;\n ++map.empty;\n obj[key] = NULL;\n }\n return this;\n },\n clear: function() {\n map.size = map.empty = 0;\n map.object = obj = {};\n },\n test: function(_) {\n if (arguments.length) {\n test = _;\n return map;\n } else {\n return test;\n }\n },\n clean: function() {\n var next = {},\n size = 0,\n key, value;\n for (key in obj) {\n value = obj[key];\n if (value !== NULL && (!test || !test(value))) {\n next[key] = value;\n ++size;\n }\n }\n map.size = size;\n map.empty = 0;\n map.object = (obj = next);\n }\n };\n\n if (input) Object.keys(input).forEach(function(key) {\n map.set(key, input[key]);\n });\n\n return map;\n}\n","import peek from './peek';\n\nexport default function(range, value, threshold, left, right, center) {\n if (!threshold && threshold !== 0) return center;\n\n var a = range[0],\n b = peek(range),\n t = +threshold,\n l, r;\n\n // swap endpoints if range is reversed\n if (b < a) {\n l = a; a = b; b = l;\n }\n\n // compare value to endpoints\n l = Math.abs(value - a);\n r = Math.abs(b - value);\n\n // adjust if value is within threshold distance of endpoint\n return l < r && l <= t ? left : r <= t ? right : center;\n}\n","export default function(child, parent) {\n var proto = (child.prototype = Object.create(parent.prototype));\n proto.constructor = child;\n return proto;\n}\n","/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nexport default function(value, range, left, right) {\n var r0 = range[0], r1 = range[range.length-1], t;\n if (r0 > r1) {\n t = r0;\n r0 = r1;\n r1 = t;\n }\n left = left === undefined || left;\n right = right === undefined || right;\n\n return (left ? r0 <= value : r0 < value) &&\n (right ? value <= r1 : value < r1);\n}\n","export default function(_) {\n return typeof _ === 'boolean';\n}\n","export default function(_) {\n return Object.prototype.toString.call(_) === '[object Date]';\n}\n","export default function(_) {\n return typeof _ === 'number';\n}\n","export default function(_) {\n return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n","import accessor from './accessor';\nimport array from './array';\nimport splitAccessPath from './splitAccessPath';\nimport stringValue from './stringValue';\n\nexport default function(fields, flat) {\n if (fields) {\n fields = flat\n ? array(fields).map(function(f) { return f.replace(/\\\\(.)/g, '$1'); })\n : array(fields);\n }\n\n var fn = !(fields && fields.length)\n ? function() { return ''; }\n : Function('_', 'return \\'\\'+' +\n fields.map(function(f) {\n return '_[' + (flat\n ? stringValue(f)\n : splitAccessPath(f).map(stringValue).join('][')\n ) + ']';\n }).join('+\\'|\\'+') + ';');\n\n return accessor(fn, fields, 'key');\n}\n","import peek from './peek';\n\nexport default function(array, frac) {\n const lo = array[0],\n hi = peek(array),\n f = +frac;\n return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n","export default function(compare, array0, array1, output) {\n var n0 = array0.length,\n n1 = array1.length;\n\n if (!n1) return array0;\n if (!n0) return array1;\n\n var merged = output || new array0.constructor(n0 + n1),\n i0 = 0, i1 = 0, i = 0;\n\n for (; i0<n0 && i1<n1; ++i) {\n merged[i] = compare(array0[i0], array1[i1]) > 0\n ? array1[i1++]\n : array0[i0++];\n }\n\n for (; i0<n0; ++i0, ++i) {\n merged[i] = array0[i0];\n }\n\n for (; i1<n1; ++i1, ++i) {\n merged[i] = array1[i1];\n }\n\n return merged;\n}\n","export default function(str, reps) {\n var s = '';\n while (--reps >= 0) s += str;\n return s;\n}\n","import repeat from './repeat';\n\nexport default function(str, length, padchar, align) {\n var c = padchar || ' ',\n s = str + '',\n n = length - s.length;\n\n return n <= 0 ? s\n : align === 'left' ? repeat(c, n) + s\n : align === 'center' ? repeat(c, ~~(n/2)) + s + repeat(c, Math.ceil(n/2))\n : s + repeat(c, n);\n}\n","import peek from './peek';\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\nexport default function(array) {\n return (peek(array) - array[0]) || 0;\n}\n","export default function(_) {\n return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n","import isDate from './isDate';\nimport isNumber from './isNumber';\n\nfunction defaultParser(_) {\n return isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n}\n\nexport default function(_, parser) {\n parser = parser || defaultParser;\n return _ == null || _ === '' ? null : parser(_);\n}\n","export default function(_) {\n return _ == null || _ === '' ? null : _ + '';\n}\n","export default function(_) {\n for (var s={}, i=0, n=_.length; i<n; ++i) s[_[i]] = true;\n return s;\n}\n","export default function(str, length, align, ellipsis) {\n var e = ellipsis != null ? ellipsis : '\\u2026',\n s = str + '',\n n = s.length,\n l = Math.max(0, length - e.length);\n\n return n <= length ? s\n : align === 'left' ? e + s.slice(n - l)\n : align === 'center' ? s.slice(0, Math.ceil(l/2)) + e + s.slice(n - ~~(l/2))\n : s.slice(0, l) + e;\n}\n","export default function(array, filter, visitor) {\n if (array) {\n var i = 0, n = array.length, t;\n if (filter) {\n for (; i<n; ++i) {\n if (t = filter(array[i])) visitor(t, i, array);\n }\n } else {\n array.forEach(visitor);\n }\n }\n}\n","export {\n default as accessor,\n accessorName,\n accessorFields\n} from './src/accessor';\n\nexport {\n id,\n identity,\n zero,\n one,\n truthy,\n falsy\n} from './src/accessors';\n\nexport {\n default as logger,\n None,\n Error,\n Warn,\n Info,\n Debug\n} from './src/logger';\n\nexport {\n panLinear,\n panLog,\n panPow,\n panSymlog,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog\n} from './src/transform';\n\nexport {\n quarter,\n utcquarter\n} from './src/quarter';\n\nexport {default as array} from './src/array';\nexport {default as clampRange} from './src/clampRange';\nexport {default as compare} from './src/compare';\nexport {default as constant} from './src/constant';\nexport {default as debounce} from './src/debounce';\nexport {default as error} from './src/error';\nexport {default as extend} from './src/extend';\nexport {default as extent} from './src/extent';\nexport {default as extentIndex} from './src/extentIndex';\nexport {default as fastmap} from './src/fastmap';\nexport {default as field} from './src/field';\nexport {default as flush} from './src/flush';\nexport {default as inherits} from './src/inherits';\nexport {default as inrange} from './src/inrange';\nexport {default as isArray} from './src/isArray';\nexport {default as isBoolean} from './src/isBoolean';\nexport {default as isDate} from './src/isDate';\nexport {default as isFunction} from './src/isFunction';\nexport {default as isNumber} from './src/isNumber';\nexport {default as isObject} from './src/isObject';\nexport {default as isRegExp} from './src/isRegExp';\nexport {default as isString} from './src/isString';\nexport {default as key} from './src/key';\nexport {default as lerp} from './src/lerp';\nexport {default as merge} from './src/merge';\nexport {default as pad} from './src/pad';\nexport {default as peek} from './src/peek';\nexport {default as repeat} from './src/repeat';\nexport {default as span} from './src/span';\nexport {default as splitAccessPath} from './src/splitAccessPath';\nexport {default as stringValue} from './src/stringValue';\nexport {default as toBoolean} from './src/toBoolean';\nexport {default as toDate} from './src/toDate';\nexport {default as toNumber} from './src/toNumber';\nexport {default as toString} from './src/toString';\nexport {default as toSet} from './src/toSet';\nexport {default as truncate} from './src/truncate';\nexport {default as visitArray} from './src/visitArray';\n","import {field, identity, isFunction, isObject} from 'vega-util';\n\nfunction isBuffer(_) {\n return (typeof Buffer === 'function' && isFunction(Buffer.isBuffer))\n ? Buffer.isBuffer(_) : false;\n}\n\nexport default function json(data, format) {\n const prop = (format && format.property) ? field(format.property) : identity;\n return isObject(data) && !isBuffer(data)\n ? parseJSON(prop(data))\n : prop(JSON.parse(data));\n}\n\njson.responseType = 'json';\n\nfunction parseJSON(data, format) {\n return (format && format.copy)\n ? JSON.parse(JSON.stringify(data))\n : data;\n}\n","\"use strict\";\n\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\nmodule.exports = function stringify(passedObj, options) {\n var indent, maxLength, replacer;\n\n options = options || {};\n indent = JSON.stringify(\n [1],\n undefined,\n options.indent === undefined ? 2 : options.indent\n ).slice(2, -3);\n maxLength =\n indent === \"\"\n ? Infinity\n : options.maxLength === undefined\n ? 80\n : options.maxLength;\n replacer = options.replacer;\n\n return (function _stringify(obj, currentIndent, reserved) {\n // prettier-ignore\n var end, index, items, key, keyPart, keys, length, nextIndent, prettified, start, string, value;\n\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n\n string = JSON.stringify(obj, replacer);\n\n if (string === undefined) {\n return string;\n }\n\n length = maxLength - currentIndent.length - reserved;\n\n if (string.length <= length) {\n prettified = string.replace(stringOrChar, function(match, stringLiteral) {\n return stringLiteral || match + \" \";\n });\n if (prettified.length <= length) {\n return prettified;\n }\n }\n\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n\n if (typeof obj === \"object\" && obj !== null) {\n nextIndent = currentIndent + indent;\n items = [];\n index = 0;\n\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n length = obj.length;\n for (; index < length; index++) {\n items.push(\n _stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) ||\n \"null\"\n );\n }\n } else {\n start = \"{\";\n end = \"}\";\n keys = Object.keys(obj);\n length = keys.length;\n for (; index < length; index++) {\n key = keys[index];\n keyPart = JSON.stringify(key) + \": \";\n value = _stringify(\n obj[key],\n nextIndent,\n keyPart.length + (index === length - 1 ? 0 : 1)\n );\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n\n if (items.length > 0) {\n return [start, indent + items.join(\",\\n\" + nextIndent), end].join(\n \"\\n\" + currentIndent\n );\n }\n }\n\n return string;\n })(passedObj, \"\", 0);\n};\n","'use strict';\n\nmodule.exports = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n\n if (node === null) return 'null';\n\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n })(data);\n};\n","exports = module.exports = SemVer\n\nvar debug\n/* istanbul ignore next */\nif (typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n args.unshift('SEMVER')\n console.log.apply(console, args)\n }\n} else {\n debug = function () {}\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0'\n\nvar MAX_LENGTH = 256\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16\n\n// The actual regexps go on exports.re\nvar re = exports.re = []\nvar src = exports.src = []\nvar R = 0\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\nvar NUMERICIDENTIFIER = R++\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*'\nvar NUMERICIDENTIFIERLOOSE = R++\nsrc[NUMERICIDENTIFIERLOOSE] = '[0-9]+'\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\nvar NONNUMERICIDENTIFIER = R++\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*'\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\nvar MAINVERSION = R++\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')'\n\nvar MAINVERSIONLOOSE = R++\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')'\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\nvar PRERELEASEIDENTIFIER = R++\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +\n '|' + src[NONNUMERICIDENTIFIER] + ')'\n\nvar PRERELEASEIDENTIFIERLOOSE = R++\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +\n '|' + src[NONNUMERICIDENTIFIER] + ')'\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\nvar PRERELEASE = R++\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))'\n\nvar PRERELEASELOOSE = R++\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\nvar BUILDIDENTIFIER = R++\nsrc[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\nvar BUILD = R++\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] +\n '(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))'\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\nvar FULL = R++\nvar FULLPLAIN = 'v?' + src[MAINVERSION] +\n src[PRERELEASE] + '?' +\n src[BUILD] + '?'\n\nsrc[FULL] = '^' + FULLPLAIN + '$'\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\nvar LOOSEPLAIN = '[v=\\\\s]*' + src[MAINVERSIONLOOSE] +\n src[PRERELEASELOOSE] + '?' +\n src[BUILD] + '?'\n\nvar LOOSE = R++\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$'\n\nvar GTLT = R++\nsrc[GTLT] = '((?:<|>)?=?)'\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\nvar XRANGEIDENTIFIERLOOSE = R++\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*'\nvar XRANGEIDENTIFIER = R++\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*'\n\nvar XRANGEPLAIN = R++\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:' + src[PRERELEASE] + ')?' +\n src[BUILD] + '?' +\n ')?)?'\n\nvar XRANGEPLAINLOOSE = R++\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[PRERELEASELOOSE] + ')?' +\n src[BUILD] + '?' +\n ')?)?'\n\nvar XRANGE = R++\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$'\nvar XRANGELOOSE = R++\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$'\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\nvar COERCE = R++\nsrc[COERCE] = '(^|[^\\\\d])' +\n '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:$|[^\\\\d])'\nvar COERCERTL = R++\nre[COERCERTL] = new RegExp(src[COERCE], 'g')\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\nvar LONETILDE = R++\nsrc[LONETILDE] = '(?:~>?)'\n\nvar TILDETRIM = R++\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+'\nre[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')\nvar tildeTrimReplace = '$1~'\n\nvar TILDE = R++\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'\nvar TILDELOOSE = R++\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\nvar LONECARET = R++\nsrc[LONECARET] = '(?:\\\\^)'\n\nvar CARETTRIM = R++\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+'\nre[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')\nvar caretTrimReplace = '$1^'\n\nvar CARET = R++\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'\nvar CARETLOOSE = R++\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\nvar COMPARATORLOOSE = R++\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$'\nvar COMPARATOR = R++\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$'\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\nvar COMPARATORTRIM = R++\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] +\n '\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'\n\n// this one has to use the /g flag\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')\nvar comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\nvar HYPHENRANGE = R++\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAIN] + ')' +\n '\\\\s*$'\n\nvar HYPHENRANGELOOSE = R++\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$'\n\n// Star ranges basically just allow anything at all.\nvar STAR = R++\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*'\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i])\n if (!re[i]) {\n re[i] = new RegExp(src[i])\n }\n}\n\nexports.parse = parse\nfunction parse (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n var r = options.loose ? re[LOOSE] : re[FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nexports.valid = valid\nfunction valid (version, options) {\n var v = parse(version, options)\n return v ? v.version : null\n}\n\nexports.clean = clean\nfunction clean (version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\n\nexports.SemVer = SemVer\n\nfunction SemVer (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n }\n\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options)\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n\n var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])\n\n if (!m) {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n}\n\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.')\n }\n return this.version\n}\n\nSemVer.prototype.toString = function () {\n return this.version\n}\n\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return this.compareMain(other) || this.comparePre(other)\n}\n\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n}\n\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n var i = 0\n do {\n var a = this.prerelease[i]\n var b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\nSemVer.prototype.compareBuild = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n var i = 0\n do {\n var a = this.build[i]\n var b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n var i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error('invalid increment argument: ' + release)\n }\n this.format()\n this.raw = this.version\n return this\n}\n\nexports.inc = inc\nfunction inc (version, release, loose, identifier) {\n if (typeof (loose) === 'string') {\n identifier = loose\n loose = undefined\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\n\nexports.diff = diff\nfunction diff (version1, version2) {\n if (eq(version1, version2)) {\n return null\n } else {\n var v1 = parse(version1)\n var v2 = parse(version2)\n var prefix = ''\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre'\n var defaultResult = 'prerelease'\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers\n\nvar numeric = /^[0-9]+$/\nfunction compareIdentifiers (a, b) {\n var anum = numeric.test(a)\n var bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers\nfunction rcompareIdentifiers (a, b) {\n return compareIdentifiers(b, a)\n}\n\nexports.major = major\nfunction major (a, loose) {\n return new SemVer(a, loose).major\n}\n\nexports.minor = minor\nfunction minor (a, loose) {\n return new SemVer(a, loose).minor\n}\n\nexports.patch = patch\nfunction patch (a, loose) {\n return new SemVer(a, loose).patch\n}\n\nexports.compare = compare\nfunction compare (a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose))\n}\n\nexports.compareLoose = compareLoose\nfunction compareLoose (a, b) {\n return compare(a, b, true)\n}\n\nexports.compareBuild = compareBuild\nfunction compareBuild (a, b, loose) {\n var versionA = new SemVer(a, loose)\n var versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\n\nexports.rcompare = rcompare\nfunction rcompare (a, b, loose) {\n return compare(b, a, loose)\n}\n\nexports.sort = sort\nfunction sort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compareBuild(a, b, loose)\n })\n}\n\nexports.rsort = rsort\nfunction rsort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compareBuild(b, a, loose)\n })\n}\n\nexports.gt = gt\nfunction gt (a, b, loose) {\n return compare(a, b, loose) > 0\n}\n\nexports.lt = lt\nfunction lt (a, b, loose) {\n return compare(a, b, loose) < 0\n}\n\nexports.eq = eq\nfunction eq (a, b, loose) {\n return compare(a, b, loose) === 0\n}\n\nexports.neq = neq\nfunction neq (a, b, loose) {\n return compare(a, b, loose) !== 0\n}\n\nexports.gte = gte\nfunction gte (a, b, loose) {\n return compare(a, b, loose) >= 0\n}\n\nexports.lte = lte\nfunction lte (a, b, loose) {\n return compare(a, b, loose) <= 0\n}\n\nexports.cmp = cmp\nfunction cmp (a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError('Invalid operator: ' + op)\n }\n}\n\nexports.Comparator = Comparator\nfunction Comparator (comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options)\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n}\n\nvar ANY = {}\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]\n var m = comp.match(r)\n\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n}\n\nComparator.prototype.toString = function () {\n return this.value\n}\n\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n}\n\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n var rangeTmp\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n rangeTmp = new Range(comp.value, options)\n return satisfies(this.value, rangeTmp, options)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n rangeTmp = new Range(this.value, options)\n return satisfies(comp.semver, rangeTmp, options)\n }\n\n var sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n var sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n var sameSemVer = this.semver.version === comp.semver.version\n var differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n var oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n ((this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<'))\n var oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n ((this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>'))\n\n return sameDirectionIncreasing || sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan || oppositeDirectionsGreaterThan\n}\n\nexports.Range = Range\nfunction Range (range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (range instanceof Range) {\n if (range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n return new Range(range.value, options)\n }\n\n if (!(this instanceof Range)) {\n return new Range(range, options)\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range.split(/\\s*\\|\\|\\s*/).map(function (range) {\n return this.parseRange(range.trim())\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length\n })\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + range)\n }\n\n this.format()\n}\n\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim()\n }).join('||').trim()\n return this.range\n}\n\nRange.prototype.toString = function () {\n return this.range\n}\n\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose\n range = range.trim()\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]\n range = range.replace(hr, hyphenReplace)\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options)\n }, this).join(' ').split(/\\s+/)\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe)\n })\n }\n set = set.map(function (comp) {\n return new Comparator(comp, this.options)\n }, this)\n\n return set\n}\n\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some(function (thisComparators) {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some(function (rangeComparators) {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every(function (thisComparator) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n}\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nfunction isSatisfiable (comparators, options) {\n var result = true\n var remainingComparators = comparators.slice()\n var testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every(function (otherComparator) {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators\nfunction toComparators (range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value\n }).join(' ').trim().split(' ')\n })\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator (comp, options) {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nfunction isX (id) {\n return !id || id.toLowerCase() === 'x' || id === '*'\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options)\n }).join(' ')\n}\n\nfunction replaceTilde (comp, options) {\n var r = options.loose ? re[TILDELOOSE] : re[TILDE]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options)\n }).join(' ')\n}\n\nfunction replaceCaret (comp, options) {\n debug('caret', comp, options)\n var r = options.loose ? re[CARETLOOSE] : re[CARET]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + (+M + 1) + '.0.0'\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0'\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nfunction replaceXRanges (comp, options) {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nfunction replaceXRange (comp, options) {\n comp = comp.trim()\n var r = options.loose ? re[XRANGELOOSE] : re[XRANGE]\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n var xM = isX(M)\n var xm = xM || isX(m)\n var xp = xm || isX(p)\n var anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n ret = gtlt + M + '.' + m + '.' + p + pr\n } else if (xm) {\n ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0' + pr +\n ' <' + M + '.' + (+m + 1) + '.0' + pr\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars (comp, options) {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[STAR], '')\n}\n\n// This function is passed to string.replace(re[HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0'\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0'\n } else {\n from = '>=' + from\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0'\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0'\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr\n } else {\n to = '<=' + to\n }\n\n return (from + ' ' + to).trim()\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n}\n\nfunction testSet (set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n\nexports.satisfies = satisfies\nfunction satisfies (version, range, options) {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\n\nexports.maxSatisfying = maxSatisfying\nfunction maxSatisfying (versions, range, options) {\n var max = null\n var maxSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\n\nexports.minSatisfying = minSatisfying\nfunction minSatisfying (versions, range, options) {\n var min = null\n var minSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\n\nexports.minVersion = minVersion\nfunction minVersion (range, loose) {\n range = new Range(range, loose)\n\n var minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error('Unexpected operation: ' + comparator.operator)\n }\n })\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\n\nexports.validRange = validRange\nfunction validRange (range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr\nfunction ltr (version, range, options) {\n return outside(version, range, '<', options)\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr\nfunction gtr (version, range, options) {\n return outside(version, range, '>', options)\n}\n\nexports.outside = outside\nfunction outside (version, range, hilo, options) {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n var gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n var high = null\n var low = null\n\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nexports.prerelease = prerelease\nfunction prerelease (version, options) {\n var parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\n\nexports.intersects = intersects\nfunction intersects (r1, r2, options) {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\n\nexports.coerce = coerce\nfunction coerce (version, options) {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n var match = null\n if (!options.rtl) {\n match = version.match(re[COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n var next\n while ((next = re[COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(match[2] +\n '.' + (match[3] || '0') +\n '.' + (match[4] || '0'), options)\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Parse a vega schema url into library and version.\n */\nfunction default_1(url) {\n var regex = /\\/schema\\/([\\w-]+)\\/([\\w\\.\\-]+)\\.json$/g;\n var _a = regex.exec(url).slice(1, 3), library = _a[0], version = _a[1];\n return { library: library, version: version };\n}\nexports.default = default_1;\n//# sourceMappingURL=index.js.map","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross(a)feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","import {identity} from 'vega-util';\n\nexport default function UniqueList(idFunc) {\n var $ = idFunc || identity,\n list = [],\n ids = {};\n\n list.add = function(_) {\n var id = $(_);\n if (!ids[id]) {\n ids[id] = 1;\n list.push(_);\n }\n return list;\n };\n\n list.remove = function(_) {\n var id = $(_), idx;\n if (ids[id]) {\n ids[id] = 0;\n if ((idx = list.indexOf(_)) >= 0) {\n list.splice(idx, 1);\n }\n }\n return list;\n };\n\n return list;\n}\n","/**\n * Invoke and await a potentially async callback function. If\n * an error occurs, trap it and route to Dataflow.error.\n * @param {Dataflow} df - The dataflow instance\n * @param {function} callback - A callback function to invoke\n * and then await. The dataflow will be passed as the single\n * argument to the function.\n */\nexport default async function(df, callback) {\n try { await callback(df); } catch (err) { df.error(err); }\n}\n","var TUPLE_ID_KEY = Symbol('vega_id'),\n TUPLE_ID = 1;\n\n/**\n * Resets the internal tuple id counter to one.\n */\nexport function reset() {\n TUPLE_ID = 1;\n}\n\n/**\n * Checks if an input value is a registered tuple.\n * @param {*} t - The value to check.\n * @return {boolean} True if the input is a tuple, false otherwise.\n */\nexport function isTuple(t) {\n return !!(t && tupleid(t));\n}\n\n/**\n * Returns the id of a tuple.\n * @param {object} t - The input tuple.\n * @return {*} the tuple id.\n */\nexport function tupleid(t) {\n return t[TUPLE_ID_KEY];\n}\n\n/**\n * Sets the id of a tuple.\n * @param {object} t - The input tuple.\n * @param {*} id - The id value to set.\n * @return {object} the input tuple.\n */\nfunction setid(t, id) {\n t[TUPLE_ID_KEY] = id;\n return t;\n}\n\n/**\n * Ingest an object or value as a data tuple.\n * If the input value is an object, an id field will be added to it. For\n * efficiency, the input object is modified directly. A copy is not made.\n * If the input value is a literal, it will be wrapped in a new object\n * instance, with the value accessible as the 'data' property.\n * @param datum - The value to ingest.\n * @return {object} The ingested data tuple.\n */\nexport function ingest(datum) {\n var t = (datum === Object(datum)) ? datum : {data: datum};\n return tupleid(t) ? t : setid(t, TUPLE_ID++);\n}\n\n/**\n * Given a source tuple, return a derived copy.\n * @param {object} t - The source tuple.\n * @return {object} The derived tuple.\n */\nexport function derive(t) {\n return rederive(t, ingest({}));\n}\n\n/**\n * Rederive a derived tuple by copying values from the source tuple.\n * @param {object} t - The source tuple.\n * @param {object} d - The derived tuple.\n * @return {object} The derived tuple.\n */\nexport function rederive(t, d) {\n for (var k in t) d[k] = t[k];\n return d;\n}\n\n/**\n * Replace an existing tuple with a new tuple.\n * @param {object} t - The existing data tuple.\n * @param {object} d - The new tuple that replaces the old.\n * @return {object} The new tuple.\n */\nexport function replace(t, d) {\n return setid(d, tupleid(t));\n}\n","import {ingest, tupleid} from './Tuple';\nimport {array, constant, isFunction} from 'vega-util';\n\nexport function isChangeSet(v) {\n return v && v.constructor === changeset;\n}\n\nexport default function changeset() {\n var add = [], // insert tuples\n rem = [], // remove tuples\n mod = [], // modify tuples\n remp = [], // remove by predicate\n modp = [], // modify by predicate\n reflow = false;\n\n return {\n constructor: changeset,\n insert: function(t) {\n var d = array(t), i = 0, n = d.length;\n for (; i<n; ++i) add.push(d[i]);\n return this;\n },\n remove: function(t) {\n var a = isFunction(t) ? remp : rem,\n d = array(t), i = 0, n = d.length;\n for (; i<n; ++i) a.push(d[i]);\n return this;\n },\n modify: function(t, field, value) {\n var m = {field: field, value: constant(value)};\n if (isFunction(t)) {\n m.filter = t;\n modp.push(m);\n } else {\n m.tuple = t;\n mod.push(m);\n }\n return this;\n },\n encode: function(t, set) {\n if (isFunction(t)) modp.push({filter: t, field: set});\n else mod.push({tuple: t, field: set});\n return this;\n },\n reflow: function() {\n reflow = true;\n return this;\n },\n pulse: function(pulse, tuples) {\n var cur = {}, out = {}, i, n, m, f, t, id;\n\n // build lookup table of current tuples\n for (i=0, n=tuples.length; i<n; ++i) {\n cur[tupleid(tuples[i])] = 1;\n }\n\n // process individual tuples to remove\n for (i=0, n=rem.length; i<n; ++i) {\n t = rem[i];\n cur[tupleid(t)] = -1;\n }\n\n // process predicate-based removals\n for (i=0, n=remp.length; i<n; ++i) {\n f = remp[i];\n tuples.forEach(function(t) {\n if (f(t)) cur[tupleid(t)] = -1;\n });\n }\n\n // process all add tuples\n for (i=0, n=add.length; i<n; ++i) {\n t = add[i];\n id = tupleid(t);\n if (cur[id]) {\n // tuple already resides in dataset\n // if flagged for both add and remove, cancel\n cur[id] = 1;\n } else {\n // tuple does not reside in dataset, add\n pulse.add.push(ingest(add[i]));\n }\n }\n\n // populate pulse rem list\n for (i=0, n=tuples.length; i<n; ++i) {\n t = tuples[i];\n if (cur[tupleid(t)] < 0) pulse.rem.push(t);\n }\n\n // modify helper method\n function modify(t, f, v) {\n if (v) {\n t[f] = v(t);\n } else {\n pulse.encode = f;\n }\n if (!reflow) out[tupleid(t)] = t;\n }\n\n // process individual tuples to modify\n for (i=0, n=mod.length; i<n; ++i) {\n m = mod[i];\n t = m.tuple;\n f = m.field;\n id = cur[tupleid(t)];\n if (id > 0) {\n modify(t, f, m.value);\n pulse.modifies(f);\n }\n }\n\n // process predicate-based modifications\n for (i=0, n=modp.length; i<n; ++i) {\n m = modp[i];\n f = m.filter;\n tuples.forEach(function(t) {\n if (f(t) && cur[tupleid(t)] > 0) {\n modify(t, m.field, m.value);\n }\n });\n pulse.modifies(m.field);\n }\n\n // upon reflow request, populate mod with all non-removed tuples\n // otherwise, populate mod with modified tuples only\n if (reflow) {\n pulse.mod = rem.length || remp.length\n ? tuples.filter(function(t) { return cur[tupleid(t)] > 0; })\n : tuples.slice();\n } else {\n for (id in out) pulse.mod.push(out[id]);\n }\n\n return pulse;\n }\n };\n}\n","import {isArray} from 'vega-util';\n\nvar CACHE = '_:mod:_';\n\n/**\n * Hash that tracks modifications to assigned values.\n * Callers *must* use the set method to update values.\n */\nexport default function Parameters() {\n Object.defineProperty(this, CACHE, {writable: true, value: {}});\n}\n\nvar prototype = Parameters.prototype;\n\n/**\n * Set a parameter value. If the parameter value changes, the parameter\n * will be recorded as modified.\n * @param {string} name - The parameter name.\n * @param {number} index - The index into an array-value parameter. Ignored if\n * the argument is undefined, null or less than zero.\n * @param {*} value - The parameter value to set.\n * @param {boolean} [force=false] - If true, records the parameter as modified\n * even if the value is unchanged.\n * @return {Parameters} - This parameter object.\n */\nprototype.set = function(name, index, value, force) {\n var o = this,\n v = o[name],\n mod = o[CACHE];\n\n if (index != null && index >= 0) {\n if (v[index] !== value || force) {\n v[index] = value;\n mod[index + ':' + name] = -1;\n mod[name] = -1;\n }\n } else if (v !== value || force) {\n o[name] = value;\n mod[name] = isArray(value) ? 1 + value.length : -1;\n }\n\n return o;\n};\n\n/**\n * Tests if one or more parameters has been modified. If invoked with no\n * arguments, returns true if any parameter value has changed. If the first\n * argument is array, returns trues if any parameter name in the array has\n * changed. Otherwise, tests if the given name and optional array index has\n * changed.\n * @param {string} name - The parameter name to test.\n * @param {number} [index=undefined] - The parameter array index to test.\n * @return {boolean} - Returns true if a queried parameter was modified.\n */\nprototype.modified = function(name, index) {\n var mod = this[CACHE], k;\n if (!arguments.length) {\n for (k in mod) { if (mod[k]) return true; }\n return false;\n } else if (isArray(name)) {\n for (k=0; k<name.length; ++k) {\n if (mod[name[k]]) return true;\n }\n return false;\n }\n return (index != null && index >= 0)\n ? (index + 1 < mod[name] || !!mod[index + ':' + name])\n : !!mod[name];\n};\n\n/**\n * Clears the modification records. After calling this method,\n * all parameters are considered unmodified.\n */\nprototype.clear = function() {\n this[CACHE] = {};\n return this;\n};\n","import Parameters from './Parameters';\nimport UniqueList from './util/UniqueList';\nimport {array, error, id, isArray} from 'vega-util';\n\nvar OP_ID = 0;\nvar PULSE = 'pulse';\nvar NO_PARAMS = new Parameters();\n\n// Boolean Flags\nvar SKIP = 1,\n MODIFIED = 2;\n\n/**\n * An Operator is a processing node in a dataflow graph.\n * Each operator stores a value and an optional value update function.\n * Operators can accept a hash of named parameters. Parameter values can\n * either be direct (JavaScript literals, arrays, objects) or indirect\n * (other operators whose values will be pulled dynamically). Operators\n * included as parameters will have this operator added as a dependency.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {function(object, Pulse)} [update] - An update function. Upon\n * evaluation of this operator, the update function will be invoked and the\n * return value will be used as the new value of this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n * listen for changes to upstream operators included as parameters.\n * @see parameters\n */\nexport default function Operator(init, update, params, react) {\n this.id = ++OP_ID;\n this.value = init;\n this.stamp = -1;\n this.rank = -1;\n this.qrank = -1;\n this.flags = 0;\n\n if (update) {\n this._update = update;\n }\n if (params) this.parameters(params, react);\n}\n\nvar prototype = Operator.prototype;\n\n/**\n * Returns a list of target operators dependent on this operator.\n * If this list does not exist, it is created and then returned.\n * @return {UniqueList}\n */\nprototype.targets = function() {\n return this._targets || (this._targets = UniqueList(id));\n};\n\n/**\n * Sets the value of this operator.\n * @param {*} value - the value to set.\n * @return {Number} Returns 1 if the operator value has changed\n * according to strict equality, returns 0 otherwise.\n */\nprototype.set = function(value) {\n if (this.value !== value) {\n this.value = value;\n return 1;\n } else {\n return 0;\n }\n};\n\nfunction flag(bit) {\n return function(state) {\n var f = this.flags;\n if (arguments.length === 0) return !!(f & bit);\n this.flags = state ? (f | bit) : (f & ~bit);\n return this;\n };\n}\n\n/**\n * Indicates that operator evaluation should be skipped on the next pulse.\n * This operator will still propagate incoming pulses, but its update function\n * will not be invoked. The skip flag is reset after every pulse, so calling\n * this method will affect processing of the next pulse only.\n */\nprototype.skip = flag(SKIP);\n\n/**\n * Indicates that this operator's value has been modified on its most recent\n * pulse. Normally modification is checked via strict equality; however, in\n * some cases it is more efficient to update the internal state of an object.\n * In those cases, the modified flag can be used to trigger propagation. Once\n * set, the modification flag persists across pulses until unset. The flag can\n * be used with the last timestamp to test if a modification is recent.\n */\nprototype.modified = flag(MODIFIED);\n\n/**\n * Sets the parameters for this operator. The parameter values are analyzed for\n * operator instances. If found, this operator will be added as a dependency\n * of the parameterizing operator. Operator values are dynamically marshalled\n * from each operator parameter prior to evaluation. If a parameter value is\n * an array, the array will also be searched for Operator instances. However,\n * the search does not recurse into sub-arrays or object properties.\n * @param {object} params - A hash of operator parameters.\n * @param {boolean} [react=true] - A flag indicating if this operator should\n * automatically update (react) when parameter values change. In other words,\n * this flag determines if the operator registers itself as a listener on\n * any upstream operators included in the parameters.\n * @param {boolean} [initonly=false] - A flag indicating if this operator\n * should calculate an update only upon its initiatal evaluation, then\n * deregister dependencies and suppress all future update invocations.\n * @return {Operator[]} - An array of upstream dependencies.\n */\nprototype.parameters = function(params, react, initonly) {\n react = react !== false;\n var self = this,\n argval = (self._argval = self._argval || new Parameters()),\n argops = (self._argops = self._argops || []),\n deps = [],\n name, value, n, i;\n\n function add(name, index, value) {\n if (value instanceof Operator) {\n if (value !== self) {\n if (react) value.targets().add(self);\n deps.push(value);\n }\n argops.push({op:value, name:name, index:index});\n } else {\n argval.set(name, index, value);\n }\n }\n\n for (name in params) {\n value = params[name];\n\n if (name === PULSE) {\n array(value).forEach(function(op) {\n if (!(op instanceof Operator)) {\n error('Pulse parameters must be operator instances.');\n } else if (op !== self) {\n op.targets().add(self);\n deps.push(op);\n }\n });\n self.source = value;\n } else if (isArray(value)) {\n argval.set(name, -1, Array(n = value.length));\n for (i=0; i<n; ++i) add(name, i, value[i]);\n } else {\n add(name, -1, value);\n }\n }\n\n this.marshall().clear(); // initialize values\n if (initonly) argops.initonly = true;\n\n return deps;\n};\n\n/**\n * Internal method for marshalling parameter values.\n * Visits each operator dependency to pull the latest value.\n * @return {Parameters} A Parameters object to pass to the update function.\n */\nprototype.marshall = function(stamp) {\n var argval = this._argval || NO_PARAMS,\n argops = this._argops, item, i, n, op, mod;\n\n if (argops) {\n for (i=0, n=argops.length; i<n; ++i) {\n item = argops[i];\n op = item.op;\n mod = op.modified() && op.stamp === stamp;\n argval.set(item.name, item.index, op.value, mod);\n }\n\n if (argops.initonly) {\n for (i=0; i<n; ++i) {\n item = argops[i];\n item.op.targets().remove(this);\n }\n this._argops = null;\n this._update = null;\n }\n }\n return argval;\n};\n\n/**\n * Delegate method to perform operator processing.\n * Subclasses can override this method to perform custom processing.\n * By default, it marshalls parameters and calls the update function\n * if that function is defined. If the update function does not\n * change the operator value then StopPropagation is returned.\n * If no update function is defined, this method does nothing.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return The output pulse or StopPropagation. A falsy return value\n * (including undefined) will let the input pulse pass through.\n */\nprototype.evaluate = function(pulse) {\n var update = this._update;\n if (update) {\n var params = this.marshall(pulse.stamp),\n v = update.call(this, params, pulse);\n\n params.clear();\n if (v !== this.value) {\n this.value = v;\n } else if (!this.modified()) {\n return pulse.StopPropagation;\n }\n }\n};\n\n/**\n * Run this operator for the current pulse. If this operator has already\n * been run at (or after) the pulse timestamp, returns StopPropagation.\n * Internally, this method calls {@link evaluate} to perform processing.\n * If {@link evaluate} returns a falsy value, the input pulse is returned.\n * This method should NOT be overridden, instead overrride {@link evaluate}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return the output pulse for this operator (or StopPropagation)\n */\nprototype.run = function(pulse) {\n if (pulse.stamp <= this.stamp) return pulse.StopPropagation;\n var rv;\n if (this.skip()) {\n this.skip(false);\n rv = 0;\n } else {\n rv = this.evaluate(pulse);\n }\n this.stamp = pulse.stamp;\n return (this.pulse = rv || pulse);\n};\n","import Operator from '../Operator';\nimport {isFunction} from 'vega-util';\n\n/**\n * Add an operator to the dataflow graph. This function accepts a\n * variety of input argument types. The basic signature supports an\n * initial value, update function and parameters. If the first parameter\n * is an Operator instance, it will be added directly. If it is a\n * constructor for an Operator subclass, a new instance will be instantiated.\n * Otherwise, if the first parameter is a function instance, it will be used\n * as the update function and a null initial value is assumed.\n * @param {*} init - One of: the operator to add, the initial value of\n * the operator, an operator class to instantiate, or an update function.\n * @param {function} [update] - The operator update function.\n * @param {object} [params] - The operator parameters.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n * listen for changes to upstream operators included as parameters.\n * @return {Operator} - The added operator.\n */\nexport default function(init, update, params, react) {\n var shift = 1,\n op;\n\n if (init instanceof Operator) {\n op = init;\n } else if (init && init.prototype instanceof Operator) {\n op = new init();\n } else if (isFunction(init)) {\n op = new Operator(null, init);\n } else {\n shift = 0;\n op = new Operator(init, update);\n }\n\n this.rank(op);\n if (shift) {\n react = params;\n params = update;\n }\n if (params) this.connect(op, op.parameters(params, react));\n this.touch(op);\n\n return op;\n}\n","import UniqueList from './util/UniqueList';\nimport {debounce, id, identity, truthy} from 'vega-util';\n\nvar STREAM_ID = 0;\n\n/**\n * Models an event stream.\n * @constructor\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n * Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n * new event values.\n * @param {function(Object)} [receive] - Event callback function to invoke\n * upon receipt of a new event. Use to override standard event processing.\n */\nexport default function EventStream(filter, apply, receive) {\n this.id = ++STREAM_ID;\n this.value = null;\n if (receive) this.receive = receive;\n if (filter) this._filter = filter;\n if (apply) this._apply = apply;\n}\n\n/**\n * Creates a new event stream instance with the provided\n * (optional) filter, apply and receive functions.\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n * Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n * new event values.\n * @see EventStream\n */\nexport function stream(filter, apply, receive) {\n return new EventStream(filter, apply, receive);\n}\n\nvar prototype = EventStream.prototype;\n\nprototype._filter = truthy;\n\nprototype._apply = identity;\n\nprototype.targets = function() {\n return this._targets || (this._targets = UniqueList(id));\n};\n\nprototype.consume = function(_) {\n if (!arguments.length) return !!this._consume;\n this._consume = !!_;\n return this;\n};\n\nprototype.receive = function(evt) {\n if (this._filter(evt)) {\n var val = (this.value = this._apply(evt)),\n trg = this._targets,\n n = trg ? trg.length : 0,\n i = 0;\n\n for (; i<n; ++i) trg[i].receive(val);\n\n if (this._consume) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n }\n};\n\nprototype.filter = function(filter) {\n var s = stream(filter);\n this.targets().add(s);\n return s;\n};\n\nprototype.apply = function(apply) {\n var s = stream(null, apply);\n this.targets().add(s);\n return s;\n};\n\nprototype.merge = function() {\n var s = stream();\n\n this.targets().add(s);\n for (var i=0, n=arguments.length; i<n; ++i) {\n arguments[i].targets().add(s);\n }\n\n return s;\n};\n\nprototype.throttle = function(pause) {\n var t = -1;\n return this.filter(function() {\n var now = Date.now();\n if ((now - t) > pause) {\n t = now;\n return 1;\n } else {\n return 0;\n }\n });\n};\n\nprototype.debounce = function(delay) {\n var s = stream();\n\n this.targets().add(stream(null, null,\n debounce(delay, function(e) {\n var df = e.dataflow;\n s.receive(e);\n if (df && df.run) df.run();\n })\n ));\n\n return s;\n};\n\nprototype.between = function(a, b) {\n var active = false;\n a.targets().add(stream(null, null, function() { active = true; }));\n b.targets().add(stream(null, null, function() { active = false; }));\n return this.filter(function() { return active; });\n};\n","import {stream} from '../EventStream';\nimport {array} from 'vega-util';\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor. The input must\n * support the addEventListener method.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @param {function(object): *} [apply] - Event application function.\n * If provided, this function will be invoked and the result will be\n * used as the downstream event value.\n * @return {EventStream}\n */\nexport default function(source, type, filter, apply) {\n var df = this,\n s = stream(filter, apply),\n send = function(e) {\n e.dataflow = df;\n try {\n s.receive(e);\n } catch (error) {\n df.error(error);\n } finally {\n df.run();\n }\n },\n sources;\n\n if (typeof source === 'string' && typeof document !== 'undefined') {\n sources = document.querySelectorAll(source);\n } else {\n sources = array(source);\n }\n\n for (var i=0, n=sources.length; i<n; ++i) {\n sources[i].addEventListener(type, send);\n }\n\n return s;\n}\n","import {extend, error, isFunction, stringValue} from 'vega-util';\n\n// Matches absolute URLs with optional protocol\n// https://... file://... //...\nvar protocol_re = /^([A-Za-z]+:)?\\/\\//;\n\n// Special treatment in node.js for the file: protocol\nvar fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n * If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n * If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n * param {object} [options] - Optional default loading options to use.\n * return {object} - A new loader instance.\n */\nexport default function(fetch, fs) {\n return function(options) {\n return {\n options: options || {},\n sanitize: sanitize,\n load: load,\n fileAccess: !!fs,\n file: fileLoader(fs),\n http: httpLoader(fetch)\n };\n };\n}\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n * override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nasync function load(uri, options) {\n const opt = await this.sanitize(uri, options),\n url = opt.href;\n\n return opt.localFile\n ? this.file(url)\n : this.http(url, options);\n}\n\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to sanity check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n * sanitized uri data, or rejects it the input uri is deemed invalid.\n * The properties of the resolved object are assumed to be\n * valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n * provided by the 'href' property of the returned object.\n */\nasync function sanitize(uri, options) {\n options = extend({}, this.options, options);\n\n const fileAccess = this.fileAccess,\n result = {href: null};\n\n let isFile, hasProtocol, loadFile, base;\n\n if (uri == null || typeof uri !== 'string') {\n error('Sanitize failure, invalid URI: ' + stringValue(uri));\n }\n\n hasProtocol = protocol_re.test(uri);\n\n // if relative url (no protocol/host), prepend baseURL\n if ((base = options.baseURL) && !hasProtocol) {\n // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n if (!uri.startsWith('/') && base[base.length-1] !== '/') {\n uri = '/' + uri;\n }\n uri = base + uri;\n }\n\n // should we load from file system?\n loadFile = (isFile = uri.startsWith(fileProtocol))\n || options.mode === 'file'\n || options.mode !== 'http' && !hasProtocol && fileAccess;\n\n if (isFile) {\n // strip file protocol\n uri = uri.slice(fileProtocol.length);\n } else if (uri.startsWith('//')) {\n if (options.defaultProtocol === 'file') {\n // if is file, strip protocol and set loadFile flag\n uri = uri.slice(2);\n loadFile = true;\n } else {\n // if relative protocol (starts with '//'), prepend default protocol\n uri = (options.defaultProtocol || 'http') + ':' + uri;\n }\n }\n\n // set non-enumerable mode flag to indicate local file load\n Object.defineProperty(result, 'localFile', {value: !!loadFile});\n\n // set uri\n result.href = uri;\n\n // set default result target, if specified\n if (options.target) {\n result.target = options.target + '';\n }\n\n // set default result rel, if specified (#1542)\n if (options.rel) {\n result.rel = options.rel + '';\n }\n\n // return\n return result;\n}\n\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n * param {string} filename - The file system path to load.\n * param {string} filename - The file system path to load.\n * return {Promise} A promise that resolves to the file contents.\n */\nfunction fileLoader(fs) {\n return fs\n ? function(filename) {\n return new Promise(function(accept, reject) {\n fs.readFile(filename, function(error, data) {\n if (error) reject(error);\n else accept(data);\n });\n });\n }\n : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nasync function fileReject() {\n error('No file system access.');\n}\n\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n * param {string} url - The url to request.\n * param {object} options - An options hash.\n * return {Promise} - A promise that resolves to the file contents.\n */\nfunction httpLoader(fetch) {\n return fetch\n ? async function(url, options) {\n const opt = extend({}, this.options.http, options),\n type = options && options.response,\n response = await fetch(url, opt);\n\n return !response.ok\n ? error(response.status + '' + response.statusText)\n : isFunction(response[type]) ? response[type]()\n : response.text();\n }\n : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nasync function httpReject() {\n error('No HTTP fetch method available.');\n}\n","import {identity, toBoolean, toDate, toNumber, toString} from 'vega-util';\n\nexport var typeParsers = {\n boolean: toBoolean,\n integer: toNumber,\n number: toNumber,\n date: toDate,\n string: toString,\n unknown: identity\n};\n\nvar typeTests = [\n isBoolean,\n isInteger,\n isNumber,\n isDate\n];\n\nvar typeList = [\n 'boolean',\n 'integer',\n 'number',\n 'date'\n];\n\nexport function inferType(values, field) {\n if (!values || !values.length) return 'unknown';\n\n var value, i, j, t = 0,\n n = values.length,\n m = typeTests.length,\n a = typeTests.map(function(_, i) { return i + 1; });\n\n for (i=0, n=values.length; i<n; ++i) {\n value = field ? values[i][field] : values[i];\n for (j=0; j<m; ++j) {\n if (a[j] && isValid(value) && !typeTests[j](value)) {\n a[j] = 0;\n ++t;\n if (t === typeTests.length) return 'string';\n }\n }\n }\n\n t = a.reduce(function(u, v) { return u === 0 ? v : u; }, 0) - 1;\n return typeList[t];\n}\n\nexport function inferTypes(data, fields) {\n return fields.reduce(function(types, field) {\n types[field] = inferType(data, field);\n return types;\n }, {});\n}\n\n// -- Type Checks ----\n\nfunction isValid(_) {\n return _ != null && _ === _;\n}\n\nfunction isBoolean(_) {\n return _ === 'true' || _ === 'false' || _ === true || _ === false;\n}\n\nfunction isDate(_) {\n return !isNaN(Date.parse(_));\n}\n\nfunction isNumber(_) {\n return !isNaN(+_) && !(_ instanceof Date);\n}\n\nfunction isInteger(_) {\n return isNumber(_) && (_=+_) === ~~_;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows\n };\n}\n","import dsv from \"./dsv\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\n","import dsv from \"./dsv\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\n","import {dsvFormat} from 'd3-dsv';\nimport {extend, stringValue} from 'vega-util';\n\nexport function delimitedFormat(delimiter) {\n const parse = function(data, format) {\n const delim = {delimiter: delimiter};\n return dsv(data, format ? extend(format, delim) : delim);\n };\n\n parse.responseType = 'text';\n\n return parse;\n}\n\nexport default function dsv(data, format) {\n if (format.header) {\n data = format.header\n .map(stringValue)\n .join(format.delimiter) + '\\n' + data;\n }\n return dsvFormat(format.delimiter).parse(data + '');\n}\n\ndsv.responseType = 'text';\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity\";\n\nexport default function(transform) {\n if (transform == null) return identity;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(input, i) {\n if (!i) x0 = y0 = 0;\n var j = 2, n = input.length, output = new Array(n);\n output[0] = (x0 += input[0]) * kx + dx;\n output[1] = (y0 += input[1]) * ky + dy;\n while (j < n) output[j] = input[j], ++j;\n return output;\n };\n}\n","export default function(array, n) {\n var t, j = array.length, i = j - n;\n while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}\n","import reverse from \"./reverse\";\nimport transform from \"./transform\";\n\nexport default function(topology, o) {\n return o.type === \"GeometryCollection\"\n ? {type: \"FeatureCollection\", features: o.geometries.map(function(o) { return feature(topology, o); })}\n : feature(topology, o);\n}\n\nexport function feature(topology, o) {\n var id = o.id,\n bbox = o.bbox,\n properties = o.properties == null ? {} : o.properties,\n geometry = object(topology, o);\n return id == null && bbox == null ? {type: \"Feature\", properties: properties, geometry: geometry}\n : bbox == null ? {type: \"Feature\", id: id, properties: properties, geometry: geometry}\n : {type: \"Feature\", id: id, bbox: bbox, properties: properties, geometry: geometry};\n}\n\nexport function object(topology, o) {\n var transformPoint = transform(topology.transform),\n arcs = topology.arcs;\n\n function arc(i, points) {\n if (points.length) points.pop();\n for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length; k < n; ++k) {\n points.push(transformPoint(a[k], k));\n }\n if (i < 0) reverse(points, n);\n }\n\n function point(p) {\n return transformPoint(p);\n }\n\n function line(arcs) {\n var points = [];\n for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n if (points.length < 2) points.push(points[0]); // This should never happen per the specification.\n return points;\n }\n\n function ring(arcs) {\n var points = line(arcs);\n while (points.length < 4) points.push(points[0]); // This may happen if an arc has only two points.\n return points;\n }\n\n function polygon(arcs) {\n return arcs.map(ring);\n }\n\n function geometry(o) {\n var type = o.type, coordinates;\n switch (type) {\n case \"GeometryCollection\": return {type: type, geometries: o.geometries.map(geometry)};\n case \"Point\": coordinates = point(o.coordinates); break;\n case \"MultiPoint\": coordinates = o.coordinates.map(point); break;\n case \"LineString\": coordinates = line(o.arcs); break;\n case \"MultiLineString\": coordinates = o.arcs.map(line); break;\n case \"Polygon\": coordinates = polygon(o.arcs); break;\n case \"MultiPolygon\": coordinates = o.arcs.map(polygon); break;\n default: return null;\n }\n return {type: type, coordinates: coordinates};\n }\n\n return geometry(o);\n}\n","export default function(topology, arcs) {\n var stitchedArcs = {},\n fragmentByStart = {},\n fragmentByEnd = {},\n fragments = [],\n emptyIndex = -1;\n\n // Stitch empty arcs first, since they may be subsumed by other arcs.\n arcs.forEach(function(i, j) {\n var arc = topology.arcs[i < 0 ? ~i : i], t;\n if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n }\n });\n\n arcs.forEach(function(i) {\n var e = ends(i),\n start = e[0],\n end = e[1],\n f, g;\n\n if (f = fragmentByEnd[start]) {\n delete fragmentByEnd[f.end];\n f.push(i);\n f.end = end;\n if (g = fragmentByStart[end]) {\n delete fragmentByStart[g.start];\n var fg = g === f ? f : f.concat(g);\n fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else if (f = fragmentByStart[end]) {\n delete fragmentByStart[f.start];\n f.unshift(i);\n f.start = start;\n if (g = fragmentByEnd[start]) {\n delete fragmentByEnd[g.end];\n var gf = g === f ? f : g.concat(f);\n fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else {\n f = [i];\n fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n }\n });\n\n function ends(i) {\n var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n else p1 = arc[arc.length - 1];\n return i < 0 ? [p1, p0] : [p0, p1];\n }\n\n function flush(fragmentByEnd, fragmentByStart) {\n for (var k in fragmentByEnd) {\n var f = fragmentByEnd[k];\n delete fragmentByStart[f.start];\n delete f.start;\n delete f.end;\n f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n fragments.push(f);\n }\n }\n\n flush(fragmentByEnd, fragmentByStart);\n flush(fragmentByStart, fragmentByEnd);\n arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\n return fragments;\n}\n","import {object} from \"./feature\";\nimport stitch from \"./stitch\";\n\nexport default function(topology) {\n return object(topology, meshArcs.apply(this, arguments));\n}\n\nexport function meshArcs(topology, object, filter) {\n var arcs, i, n;\n if (arguments.length > 1) arcs = extractArcs(topology, object, filter);\n else for (i = 0, arcs = new Array(n = topology.arcs.length); i < n; ++i) arcs[i] = i;\n return {type: \"MultiLineString\", arcs: stitch(topology, arcs)};\n}\n\nfunction extractArcs(topology, object, filter) {\n var arcs = [],\n geomsByArc = [],\n geom;\n\n function extract0(i) {\n var j = i < 0 ? ~i : i;\n (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n }\n\n function extract1(arcs) {\n arcs.forEach(extract0);\n }\n\n function extract2(arcs) {\n arcs.forEach(extract1);\n }\n\n function extract3(arcs) {\n arcs.forEach(extract2);\n }\n\n function geometry(o) {\n switch (geom = o, o.type) {\n case \"GeometryCollection\": o.geometries.forEach(geometry); break;\n case \"LineString\": extract1(o.arcs); break;\n case \"MultiLineString\": case \"Polygon\": extract2(o.arcs); break;\n case \"MultiPolygon\": extract3(o.arcs); break;\n }\n }\n\n geometry(object);\n\n geomsByArc.forEach(filter == null\n ? function(geoms) { arcs.push(geoms[0].i); }\n : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n\n return arcs;\n}\n","import json from './json';\nimport {feature, mesh} from 'topojson-client';\nimport {error} from 'vega-util';\n\nconst filters = {\n interior: (a, b) => a !== b,\n exterior: (a, b) => a === b\n};\n\nexport default function topojson(data, format) {\n let method, object, property, filter;\n data = json(data, format);\n\n if (format && format.feature) {\n method = feature;\n property = format.feature;\n } else if (format && format.mesh) {\n method = mesh;\n property = format.mesh;\n filter = filters[format.filter];\n } else {\n error('Missing TopoJSON feature or mesh parameter.');\n }\n\n object = (object = data.objects[property])\n ? method(data, object, filter)\n : error('Invalid TopoJSON object: ' + property);\n\n return object && object.features || [object];\n}\n\ntopojson.responseType = 'json';\n","import {default as dsv, delimitedFormat} from './dsv';\nimport json from './json';\nimport topojson from './topojson';\n\nexport const format = {\n dsv: dsv,\n csv: delimitedFormat(','),\n tsv: delimitedFormat('\\t'),\n json: json,\n topojson: topojson\n};\n\nexport function formats(name, reader) {\n if (arguments.length > 1) {\n format[name] = reader;\n return this;\n } else {\n return format.hasOwnProperty(name) ? format[name] : null;\n }\n}\n\nexport function responseType(type) {\n const f = formats(type);\n return f && f.responseType || 'text';\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationSecond} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {inferTypes, typeParsers} from './type';\nimport {formats} from './formats/index';\nimport {error} from 'vega-util';\nimport {timeParse, utcParse} from 'd3-time-format';\n\nexport default function(data, schema, dateParse) {\n schema = schema || {};\n\n const reader = formats(schema.type || 'json');\n if (!reader) error('Unknown data format type: ' + schema.type);\n\n data = reader(data, schema);\n if (schema.parse) parse(data, schema.parse, dateParse);\n\n if (data.hasOwnProperty('columns')) delete data.columns;\n return data;\n}\n\nfunction parse(data, types, dateParse) {\n if (!data.length) return; // early exit for empty data\n\n dateParse = dateParse || timeParse;\n\n var fields = data.columns || Object.keys(data[0]),\n parsers, datum, field, i, j, n, m;\n\n if (types === 'auto') types = inferTypes(data, fields);\n\n fields = Object.keys(types);\n parsers = fields.map(function(field) {\n var type = types[field],\n parts, pattern;\n\n if (type && (type.indexOf('date:') === 0 || type.indexOf('utc:') === 0)) {\n parts = type.split(/:(.+)?/, 2); // split on first :\n pattern = parts[1];\n\n if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n (pattern[0] === '\"' && pattern[pattern.length-1] === '\"')) {\n pattern = pattern.slice(1, -1);\n }\n\n return parts[0] === 'utc' ? utcParse(pattern) : dateParse(pattern);\n }\n\n if (!typeParsers[type]) {\n throw Error('Illegal format pattern: ' + field + ':' + type);\n }\n\n return typeParsers[type];\n });\n\n for (i=0, n=data.length, m=fields.length; i<n; ++i) {\n datum = data[i];\n for (j=0; j<m; ++j) {\n field = fields[j];\n datum[field] = parsers[j](datum[field]);\n }\n }\n}\n","import loaderFactory from './src/loader';\n\nexport var loader = loaderFactory(\n typeof fetch !== 'undefined' && fetch, // use built-in fetch API\n null // no file system access\n);\n\nexport {\n default as read\n} from './src/read';\n\nexport {\n inferType,\n inferTypes,\n typeParsers\n} from './src/type';\n\nexport {\n format,\n formats,\n responseType\n} from './src/formats/index';\n","import {read, responseType} from 'vega-loader';\nimport {truthy} from 'vega-util';\n\nexport const parse = read;\n\n/**\n * Ingests new data into the dataflow. First parses the data using the\n * vega-loader read method, then pulses a changeset to the target operator.\n * @param {Operator} target - The Operator to target with ingested data,\n * typically a Collect transform instance.\n * @param {*} data - The input data, prior to parsing. For JSON this may\n * be a string or an object. For CSV, TSV, etc should be a string.\n * @param {object} format - The data format description for parsing\n * loaded data. This object is passed to the vega-loader read method.\n * @returns {Dataflow}\n */\nexport function ingest(target, data, format) {\n return this.pulse(target, this.changeset().insert(parse(data, format)));\n}\n\n/**\n * Request data from an external source, parse it, and return a Promise.\n * @param {string} url - The URL from which to load the data. This string\n * is passed to the vega-loader load method.\n * @param {object} [format] - The data format description for parsing\n * loaded data. This object is passed to the vega-loader read method.\n * @return {Promise} A Promise that resolves upon completion of the request.\n * The resolved object contains the following properties:\n * - data: an array of parsed data (or null upon error)\n * - status: a code for success (0), load fail (-1), or parse fail (-2)\n */\nexport async function request(url, format) {\n const df = this;\n let status = 0, data;\n\n try {\n data = await df.loader().load(url, {\n context: 'dataflow',\n response: responseType(format && format.type)\n });\n try {\n data = parse(data, format);\n } catch (err) {\n status = -2;\n df.warn('Data ingestion failed', url, err);\n }\n } catch (err) {\n status = -1;\n df.warn('Loading failed', url, err);\n }\n\n return {data, status};\n}\n\nexport async function preload(target, url, format) {\n const df = this,\n pending = df._pending || loadPending(df);\n\n pending.requests += 1;\n\n const res = await df.request(url, format);\n df.pulse(target, df.changeset().remove(truthy).insert(res.data || []));\n\n pending.done();\n return res;\n}\n\nfunction loadPending(df) {\n var pending = new Promise(function(a) { accept = a; }),\n accept;\n\n pending.requests = 0;\n\n pending.done = function() {\n if (--pending.requests === 0) {\n df._pending = null;\n accept(df);\n }\n };\n\n return (df._pending = pending);\n}\n","import Operator from '../Operator';\nimport {isChangeSet} from '../ChangeSet';\nimport {constant, extend, isFunction} from 'vega-util';\n\nvar SKIP = {skip: true};\n\n/**\n * Perform operator updates in response to events. Applies an\n * update function to compute a new operator value. If the update function\n * returns a {@link ChangeSet}, the operator will be pulsed with those tuple\n * changes. Otherwise, the operator value will be updated to the return value.\n * @param {EventStream|Operator} source - The event source to react to.\n * This argument can be either an EventStream or an Operator.\n * @param {Operator|function(object):Operator} target - The operator to update.\n * This argument can either be an Operator instance or (if the source\n * argument is an EventStream), a function that accepts an event object as\n * input and returns an Operator to target.\n * @param {function(Parameters,Event): *} [update] - Optional update function\n * to compute the new operator value, or a literal value to set. Update\n * functions expect to receive a parameter object and event as arguments.\n * This function can either return a new operator value or (if the source\n * argument is an EventStream) a {@link ChangeSet} instance to pulse\n * the target operator with tuple changes.\n * @param {object} [params] - The update function parameters.\n * @param {object} [options] - Additional options hash. If not overridden,\n * updated operators will be skipped by default.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @param {boolean} [options.force] - If true, the operator will\n * be re-evaluated even if its value has not changed.\n * @return {Dataflow}\n */\nexport default function(source, target, update, params, options) {\n var fn = source instanceof Operator ? onOperator : onStream;\n fn(this, source, target, update, params, options);\n return this;\n}\n\nfunction onStream(df, stream, target, update, params, options) {\n var opt = extend({}, options, SKIP), func, op;\n\n if (!isFunction(target)) target = constant(target);\n\n if (update === undefined) {\n func = e => df.touch(target(e));\n } else if (isFunction(update)) {\n op = new Operator(null, update, params, false);\n func = e => {\n op.evaluate(e);\n const t = target(e), v = op.value;\n isChangeSet(v) ? df.pulse(t, v, options) : df.update(t, v, opt);\n };\n } else {\n func = e => df.update(target(e), update, opt);\n }\n\n stream.apply(func);\n}\n\nfunction onOperator(df, source, target, update, params, options) {\n if (update === undefined) {\n source.targets().add(target);\n } else {\n const opt = options || {},\n op = new Operator(null, updater(target, update), params, false);\n op.modified(opt.force);\n op.rank = source.rank; // immediately follow source\n source.targets().add(op); // add dependency\n\n if (target) {\n op.skip(true); // skip first invocation\n op.value = target.value; // initialize value\n op.targets().add(target); // chain dependencies\n df.connect(target, [op]); // rerank as needed, #1672\n }\n }\n}\n\nfunction updater(target, update) {\n update = isFunction(update) ? update : constant(update);\n return target\n ? function(_, pulse) {\n const value = update(_, pulse);\n if (!target.skip()) {\n target.skip(value !== this.value).value = value;\n }\n return value;\n }\n : update;\n}\n","import {tupleid} from './Tuple';\nimport {array, isArray, visitArray} from 'vega-util';\n\n/**\n * Sentinel value indicating pulse propagation should stop.\n */\nexport var StopPropagation = {};\n\n// Pulse visit type flags\nvar ADD = (1 << 0),\n REM = (1 << 1),\n MOD = (1 << 2),\n ADD_REM = ADD | REM,\n ADD_MOD = ADD | MOD,\n ALL = ADD | REM | MOD,\n REFLOW = (1 << 3),\n SOURCE = (1 << 4),\n NO_SOURCE = (1 << 5),\n NO_FIELDS = (1 << 6);\n\n/**\n * A Pulse enables inter-operator communication during a run of the\n * dataflow graph. In addition to the current timestamp, a pulse may also\n * contain a change-set of added, removed or modified data tuples, as well as\n * a pointer to a full backing data source. Tuple change sets may not\n * be fully materialized; for example, to prevent needless array creation\n * a change set may include larger arrays and corresponding filter functions.\n * The pulse provides a {@link visit} method to enable proper and efficient\n * iteration over requested data tuples.\n *\n * In addition, each pulse can track modification flags for data tuple fields.\n * Responsible transform operators should call the {@link modifies} method to\n * indicate changes to data fields. The {@link modified} method enables\n * querying of this modification state.\n *\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The current propagation timestamp.\n * @param {string} [encode] - An optional encoding set name, which is then\n * accessible as Pulse.encode. Operators can respond to (or ignore) this\n * setting as appropriate. This parameter can be used in conjunction with\n * the Encode transform in the vega-encode module.\n */\nexport default function Pulse(dataflow, stamp, encode) {\n this.dataflow = dataflow;\n this.stamp = stamp == null ? -1 : stamp;\n this.add = [];\n this.rem = [];\n this.mod = [];\n this.fields = null;\n this.encode = encode || null;\n}\n\nvar prototype = Pulse.prototype;\n\n/**\n * Sentinel value indicating pulse propagation should stop.\n */\nprototype.StopPropagation = StopPropagation;\n\n/**\n * Boolean flag indicating ADD (added) tuples.\n */\nprototype.ADD = ADD;\n\n/**\n * Boolean flag indicating REM (removed) tuples.\n */\nprototype.REM = REM;\n\n/**\n * Boolean flag indicating MOD (modified) tuples.\n */\nprototype.MOD = MOD;\n\n/**\n * Boolean flag indicating ADD (added) and REM (removed) tuples.\n */\nprototype.ADD_REM = ADD_REM;\n\n/**\n * Boolean flag indicating ADD (added) and MOD (modified) tuples.\n */\nprototype.ADD_MOD = ADD_MOD;\n\n/**\n * Boolean flag indicating ADD, REM and MOD tuples.\n */\nprototype.ALL = ALL;\n\n/**\n * Boolean flag indicating all tuples in a data source\n * except for the ADD, REM and MOD tuples.\n */\nprototype.REFLOW = REFLOW;\n\n/**\n * Boolean flag indicating a 'pass-through' to a\n * backing data source, ignoring ADD, REM and MOD tuples.\n */\nprototype.SOURCE = SOURCE;\n\n/**\n * Boolean flag indicating that source data should be\n * suppressed when creating a forked pulse.\n */\nprototype.NO_SOURCE = NO_SOURCE;\n\n/**\n * Boolean flag indicating that field modifications should be\n * suppressed when creating a forked pulse.\n */\nprototype.NO_FIELDS = NO_FIELDS;\n\n/**\n * Creates a new pulse based on the values of this pulse.\n * The dataflow, time stamp and field modification values are copied over.\n * By default, new empty ADD, REM and MOD arrays are created.\n * @param {number} flags - Integer of boolean flags indicating which (if any)\n * tuple arrays should be copied to the new pulse. The supported flag values\n * are ADD, REM and MOD. Array references are copied directly: new array\n * instances are not created.\n * @return {Pulse} - The forked pulse instance.\n * @see init\n */\nprototype.fork = function(flags) {\n return new Pulse(this.dataflow).init(this, flags);\n};\n\n/**\n * Creates a copy of this pulse with new materialized array\n * instances for the ADD, REM, MOD, and SOURCE arrays.\n * The dataflow, time stamp and field modification values are copied over.\n * @return {Pulse} - The cloned pulse instance.\n * @see init\n */\nprototype.clone = function() {\n var p = this.fork(ALL);\n p.add = p.add.slice();\n p.rem = p.rem.slice();\n p.mod = p.mod.slice();\n if (p.source) p.source = p.source.slice();\n return p.materialize(ALL | SOURCE);\n};\n\n/**\n * Returns a pulse that adds all tuples from a backing source. This is\n * useful for cases where operators are added to a dataflow after an\n * upstream data pipeline has already been processed, ensuring that\n * new operators can observe all tuples within a stream.\n * @return {Pulse} - A pulse instance with all source tuples included\n * in the add array. If the current pulse already has all source\n * tuples in its add array, it is returned directly. If the current\n * pulse does not have a backing source, it is returned directly.\n */\nprototype.addAll = function() {\n var p = this;\n if (!this.source || this.source.length === this.add.length) {\n return p;\n } else {\n p = new Pulse(this.dataflow).init(this);\n p.add = p.source;\n return p;\n }\n};\n\n/**\n * Initialize this pulse based on the values of another pulse. This method\n * is used internally by {@link fork} to initialize a new forked tuple.\n * The dataflow, time stamp and field modification values are copied over.\n * By default, new empty ADD, REM and MOD arrays are created.\n * @param {Pulse} src - The source pulse to copy from.\n * @param {number} flags - Integer of boolean flags indicating which (if any)\n * tuple arrays should be copied to the new pulse. The supported flag values\n * are ADD, REM and MOD. Array references are copied directly: new array\n * instances are not created. By default, source data arrays are copied\n * to the new pulse. Use the NO_SOURCE flag to enforce a null source.\n * @return {Pulse} - Returns this Pulse instance.\n */\nprototype.init = function(src, flags) {\n var p = this;\n p.stamp = src.stamp;\n p.encode = src.encode;\n\n if (src.fields && !(flags & NO_FIELDS)) {\n p.fields = src.fields;\n }\n\n if (flags & ADD) {\n p.addF = src.addF;\n p.add = src.add;\n } else {\n p.addF = null;\n p.add = [];\n }\n\n if (flags & REM) {\n p.remF = src.remF;\n p.rem = src.rem;\n } else {\n p.remF = null;\n p.rem = [];\n }\n\n if (flags & MOD) {\n p.modF = src.modF;\n p.mod = src.mod;\n } else {\n p.modF = null;\n p.mod = [];\n }\n\n if (flags & NO_SOURCE) {\n p.srcF = null;\n p.source = null;\n } else {\n p.srcF = src.srcF;\n p.source = src.source;\n }\n\n return p;\n};\n\n/**\n * Schedules a function to run after pulse propagation completes.\n * @param {function} func - The function to run.\n */\nprototype.runAfter = function(func) {\n this.dataflow.runAfter(func);\n};\n\n/**\n * Indicates if tuples have been added, removed or modified.\n * @param {number} [flags] - The tuple types (ADD, REM or MOD) to query.\n * Defaults to ALL, returning true if any tuple type has changed.\n * @return {boolean} - Returns true if one or more queried tuple types have\n * changed, false otherwise.\n */\nprototype.changed = function(flags) {\n var f = flags || ALL;\n return ((f & ADD) && this.add.length)\n || ((f & REM) && this.rem.length)\n || ((f & MOD) && this.mod.length);\n};\n\n/**\n * Forces a \"reflow\" of tuple values, such that all tuples in the backing\n * source are added to the MOD set, unless already present in the ADD set.\n * @param {boolean} [fork=false] - If true, returns a forked copy of this\n * pulse, and invokes reflow on that derived pulse.\n * @return {Pulse} - The reflowed pulse instance.\n */\nprototype.reflow = function(fork) {\n if (fork) return this.fork(ALL).reflow();\n\n var len = this.add.length,\n src = this.source && this.source.length;\n if (src && src !== len) {\n this.mod = this.source;\n if (len) this.filter(MOD, filter(this, ADD));\n }\n return this;\n};\n\n/**\n * Marks one or more data field names as modified to assist dependency\n * tracking and incremental processing by transform operators.\n * @param {string|Array<string>} _ - The field(s) to mark as modified.\n * @return {Pulse} - This pulse instance.\n */\nprototype.modifies = function(_) {\n var fields = array(_),\n hash = this.fields || (this.fields = {});\n fields.forEach(function(f) { hash[f] = true; });\n return this;\n};\n\n/**\n * Checks if one or more data fields have been modified during this pulse\n * propagation timestamp.\n * @param {string|Array<string>} _ - The field(s) to check for modified.\n * @return {boolean} - Returns true if any of the provided fields has been\n * marked as modified, false otherwise.\n */\nprototype.modified = function(_) {\n var fields = this.fields;\n return !(this.mod.length && fields) ? false\n : !arguments.length ? !!fields\n : isArray(_) ? _.some(function(f) { return fields[f]; })\n : fields[_];\n};\n\n/**\n * Adds a filter function to one more tuple sets. Filters are applied to\n * backing tuple arrays, to determine the actual set of tuples considered\n * added, removed or modified. They can be used to delay materialization of\n * a tuple set in order to avoid expensive array copies. In addition, the\n * filter functions can serve as value transformers: unlike standard predicate\n * function (which return boolean values), Pulse filters should return the\n * actual tuple value to process. If a tuple set is already filtered, the\n * new filter function will be appended into a conjuntive ('and') query.\n * @param {number} flags - Flags indicating the tuple set(s) to filter.\n * @param {function(*):object} filter - Filter function that will be applied\n * to the tuple set array, and should return a data tuple if the value\n * should be included in the tuple set, and falsy (or null) otherwise.\n * @return {Pulse} - Returns this pulse instance.\n */\nprototype.filter = function(flags, filter) {\n var p = this;\n if (flags & ADD) p.addF = addFilter(p.addF, filter);\n if (flags & REM) p.remF = addFilter(p.remF, filter);\n if (flags & MOD) p.modF = addFilter(p.modF, filter);\n if (flags & SOURCE) p.srcF = addFilter(p.srcF, filter);\n return p;\n};\n\nfunction addFilter(a, b) {\n return a ? function(t,i) { return a(t,i) && b(t,i); } : b;\n}\n\n/**\n * Materialize one or more tuple sets in this pulse. If the tuple set(s) have\n * a registered filter function, it will be applied and the tuple set(s) will\n * be replaced with materialized tuple arrays.\n * @param {number} flags - Flags indicating the tuple set(s) to materialize.\n * @return {Pulse} - Returns this pulse instance.\n */\nprototype.materialize = function(flags) {\n flags = flags || ALL;\n var p = this;\n if ((flags & ADD) && p.addF) {\n p.add = materialize(p.add, p.addF);\n p.addF = null;\n }\n if ((flags & REM) && p.remF) {\n p.rem = materialize(p.rem, p.remF);\n p.remF = null;\n }\n if ((flags & MOD) && p.modF) {\n p.mod = materialize(p.mod, p.modF);\n p.modF = null;\n }\n if ((flags & SOURCE) && p.srcF) {\n p.source = p.source.filter(p.srcF);\n p.srcF = null;\n }\n return p;\n};\n\nfunction materialize(data, filter) {\n var out = [];\n visitArray(data, filter, function(_) { out.push(_); });\n return out;\n}\n\nfunction filter(pulse, flags) {\n var map = {};\n pulse.visit(flags, function(t) { map[tupleid(t)] = 1; });\n return function(t) { return map[tupleid(t)] ? null : t; };\n}\n\n/**\n * Visit one or more tuple sets in this pulse.\n * @param {number} flags - Flags indicating the tuple set(s) to visit.\n * Legal values are ADD, REM, MOD and SOURCE (if a backing data source\n * has been set).\n * @param {function(object):*} - Visitor function invoked per-tuple.\n * @return {Pulse} - Returns this pulse instance.\n */\nprototype.visit = function(flags, visitor) {\n var p = this, v = visitor, src, sum;\n\n if (flags & SOURCE) {\n visitArray(p.source, p.srcF, v);\n return p;\n }\n\n if (flags & ADD) visitArray(p.add, p.addF, v);\n if (flags & REM) visitArray(p.rem, p.remF, v);\n if (flags & MOD) visitArray(p.mod, p.modF, v);\n\n if ((flags & REFLOW) && (src = p.source)) {\n sum = p.add.length + p.mod.length;\n if (sum === src.length) {\n // do nothing\n } else if (sum) {\n visitArray(src, filter(p, ADD_MOD), v);\n } else {\n // if no add/rem/mod tuples, visit source\n visitArray(src, p.srcF, v);\n }\n }\n\n return p;\n};\n","import Pulse from './Pulse';\nimport {error, inherits, isArray} from 'vega-util';\n\n/**\n * Represents a set of multiple pulses. Used as input for operators\n * that accept multiple pulses at a time. Contained pulses are\n * accessible via the public \"pulses\" array property. This pulse doe\n * not carry added, removed or modified tuples directly. However,\n * the visit method can be used to traverse all such tuples contained\n * in sub-pulses with a timestamp matching this parent multi-pulse.\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The timestamp.\n * @param {Array<Pulse>} pulses - The sub-pulses for this multi-pulse.\n */\nexport default function MultiPulse(dataflow, stamp, pulses, encode) {\n var p = this,\n c = 0,\n pulse, hash, i, n, f;\n\n this.dataflow = dataflow;\n this.stamp = stamp;\n this.fields = null;\n this.encode = encode || null;\n this.pulses = pulses;\n\n for (i=0, n=pulses.length; i<n; ++i) {\n pulse = pulses[i];\n if (pulse.stamp !== stamp) continue;\n\n if (pulse.fields) {\n hash = p.fields || (p.fields = {});\n for (f in pulse.fields) { hash[f] = 1; }\n }\n\n if (pulse.changed(p.ADD)) c |= p.ADD;\n if (pulse.changed(p.REM)) c |= p.REM;\n if (pulse.changed(p.MOD)) c |= p.MOD;\n }\n\n this.changes = c;\n}\n\nvar prototype = inherits(MultiPulse, Pulse);\n\n/**\n * Creates a new pulse based on the values of this pulse.\n * The dataflow, time stamp and field modification values are copied over.\n * @return {Pulse}\n */\nprototype.fork = function(flags) {\n var p = new Pulse(this.dataflow).init(this, flags & this.NO_FIELDS);\n if (flags !== undefined) {\n if (flags & p.ADD) {\n this.visit(p.ADD, function(t) { return p.add.push(t); });\n }\n if (flags & p.REM) {\n this.visit(p.REM, function(t) { return p.rem.push(t); });\n }\n if (flags & p.MOD) {\n this.visit(p.MOD, function(t) { return p.mod.push(t); });\n }\n }\n return p;\n};\n\nprototype.changed = function(flags) {\n return this.changes & flags;\n};\n\nprototype.modified = function(_) {\n var p = this, fields = p.fields;\n return !(fields && (p.changes & p.MOD)) ? 0\n : isArray(_) ? _.some(function(f) { return fields[f]; })\n : fields[_];\n};\n\nprototype.filter = function() {\n error('MultiPulse does not support filtering.');\n};\n\nprototype.materialize = function() {\n error('MultiPulse does not support materialization.');\n};\n\nprototype.visit = function(flags, visitor) {\n var p = this,\n pulses = p.pulses,\n n = pulses.length,\n i = 0;\n\n if (flags & p.SOURCE) {\n for (; i<n; ++i) {\n pulses[i].visit(flags, visitor);\n }\n } else {\n for (; i<n; ++i) {\n if (pulses[i].stamp === p.stamp) {\n pulses[i].visit(flags, visitor);\n }\n }\n }\n\n return p;\n};\n","import {default as Pulse, StopPropagation} from '../Pulse';\nimport MultiPulse from '../MultiPulse';\nimport asyncCallback from '../util/asyncCallback';\nimport UniqueList from '../util/UniqueList';\nimport {id, isArray, Info, Debug} from 'vega-util';\n\n/**\n * Evaluates the dataflow and returns a Promise that resolves when pulse\n * propagation completes. This method will increment the current timestamp\n * and process all updated, pulsed and touched operators. When invoked for\n * the first time, all registered operators will be processed. This method\n * should not be invoked by third-party clients, use {@link runAsync} or\n * {@link run} instead.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n * evaluation completes.\n */\nexport async function evaluate(encode, prerun, postrun) {\n const df = this,\n level = df.logLevel();\n\n // if the pulse value is set, this is a re-entrant call\n if (df._pulse) return reentrant(df);\n\n // wait for pending datasets to load\n if (df._pending) {\n await df._pending;\n }\n\n // invoke prerun function, if provided\n if (prerun) await asyncCallback(df, prerun);\n\n // exit early if there are no updates\n if (!df._touched.length) {\n df.info('Dataflow invoked, but nothing to do.');\n return df;\n }\n\n // increment timestamp clock\n let stamp = ++df._clock,\n count = 0, op, next, dt, error;\n\n // set the current pulse\n df._pulse = new Pulse(df, stamp, encode);\n\n if (level >= Info) {\n dt = Date.now();\n df.debug('-- START PROPAGATION (' + stamp + ') -----');\n }\n\n // initialize priority queue, reset touched operators\n df._touched.forEach(function(op) { df._enqueue(op, true); });\n df._touched = UniqueList(id);\n\n try {\n while (df._heap.size() > 0) {\n // dequeue operator with highest priority\n op = df._heap.pop();\n\n // re-queue if rank changed\n if (op.rank !== op.qrank) { df._enqueue(op, true); continue; }\n\n // otherwise, evaluate the operator\n next = op.run(df._getPulse(op, encode));\n\n // await if operator returned a promise\n if (next.then) {\n next = await next;\n }\n\n if (level >= Debug) {\n df.debug(op.id, next === StopPropagation ? 'STOP' : next, op);\n }\n\n // propagate evaluation, enqueue dependent operators\n if (next !== StopPropagation) {\n df._pulse = next;\n if (op._targets) op._targets.forEach(op => df._enqueue(op));\n }\n\n // increment visit counter\n ++count;\n }\n } catch (err) {\n error = err;\n }\n\n // reset pulse map\n df._pulses = {};\n df._pulse = null;\n\n if (level >= Info) {\n dt = Date.now() - dt;\n df.info('> Pulse ' + stamp + ': ' + count + ' operators; ' + dt + 'ms');\n }\n\n if (error) {\n df._postrun = [];\n df.error(error);\n }\n\n // invoke callbacks queued via runAfter\n if (df._postrun.length) {\n const pr = df._postrun.sort((a, b) => b.priority - a.priority);\n df._postrun = [];\n for (let i=0; i<pr.length; ++i) {\n await asyncCallback(df, pr[i].callback);\n }\n }\n\n // invoke postrun function, if provided\n if (postrun) await asyncCallback(df, postrun);\n\n return df;\n}\n\n/**\n * Queues dataflow evaluation to run once any other queued evaluations have\n * completed and returns a Promise that resolves when the queued pulse\n * propagation completes. If provided, a callback function will be invoked\n * immediately before evaluation commences. This method will ensure a\n * separate evaluation is invoked for each time it is called.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n * evaluation completes.\n */\nexport async function runAsync(encode, prerun, postrun) {\n // await previously queued functions\n while (this._running) await this._running;\n\n // run dataflow, manage running promise\n const clear = () => this._running = null;\n (this._running = this.evaluate(encode, prerun, postrun))\n .then(clear, clear);\n\n return this._running;\n}\n\n/**\n * Requests dataflow evaluation and the immediately returns this dataflow\n * instance. If there are pending data loading or other asynchronous\n * operations, the dataflow will evaluate asynchronously after this method\n * has been invoked. To track when dataflow evaluation completes, use the\n * {@link runAsync} method instead. This method will raise an error if\n * invoked while the dataflow is already in the midst of evaluation.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode module.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Dataflow} - This dataflow instance.\n */\nexport function run(encode, prerun, postrun) {\n return this._pulse ? reentrant(this)\n : (this.evaluate(encode, prerun, postrun), this);\n}\n\n/**\n * Schedules a callback function to be invoked after the current pulse\n * propagation completes. If no propagation is currently occurring,\n * the function is invoked immediately. Callbacks scheduled via runAfter\n * are invoked immediately upon completion of the current cycle, before\n * any request queued via runAsync. This method is primarily intended for\n * internal use. Third-party callers using runAfter to schedule a callback\n * that invokes {@link run} or {@link runAsync} should not use this method,\n * but instead use {@link runAsync} with prerun or postrun arguments.\n * @param {function(Dataflow)} callback - The callback function to run.\n * The callback will be invoked with this Dataflow instance as its\n * sole argument.\n * @param {boolean} enqueue - A boolean flag indicating that the\n * callback should be queued up to run after the next propagation\n * cycle, suppressing immediate invocation when propagation is not\n * currently occurring.\n * @param {number} [priority] - A priority value used to sort registered\n * callbacks to determine execution order. This argument is intended\n * for internal Vega use only.\n */\nexport function runAfter(callback, enqueue, priority) {\n if (this._pulse || enqueue) {\n // pulse propagation is currently running, queue to run after\n this._postrun.push({\n priority: priority || 0,\n callback: callback\n });\n } else {\n // pulse propagation already complete, invoke immediately\n try { callback(this); } catch (err) { this.error(err); }\n }\n}\n\n/**\n * Raise an error for re-entrant dataflow evaluation.\n */\nfunction reentrant(df) {\n df.error('Dataflow already running. Use runAsync() to chain invocations.');\n return df;\n}\n\n/**\n * Enqueue an operator into the priority queue for evaluation. The operator\n * will be enqueued if it has no registered pulse for the current cycle, or if\n * the force argument is true. Upon enqueue, this method also sets the\n * operator's qrank to the current rank value.\n * @param {Operator} op - The operator to enqueue.\n * @param {boolean} [force] - A flag indicating if the operator should be\n * forceably added to the queue, even if it has already been previously\n * enqueued during the current pulse propagation. This is useful when the\n * dataflow graph is dynamically modified and the operator rank changes.\n */\nexport function enqueue(op, force) {\n var p = !this._pulses[op.id];\n if (p) this._pulses[op.id] = this._pulse;\n if (p || force) {\n op.qrank = op.rank;\n this._heap.push(op);\n }\n}\n\n/**\n * Provide a correct pulse for evaluating an operator. If the operator has an\n * explicit source operator, we will try to pull the pulse(s) from it.\n * If there is an array of source operators, we build a multi-pulse.\n * Otherwise, we return a current pulse with correct source data.\n * If the pulse is the pulse map has an explicit target set, we use that.\n * Else if the pulse on the upstream source operator is current, we use that.\n * Else we use the pulse from the pulse map, but copy the source tuple array.\n * @param {Operator} op - The operator for which to get an input pulse.\n * @param {string} [encode] - An (optional) encoding set name with which to\n * annotate the returned pulse. See {@link run} for more information.\n */\nexport function getPulse(op, encode) {\n var s = op.source,\n stamp = this._clock,\n p;\n\n if (s && isArray(s)) {\n p = s.map(function(_) { return _.pulse; });\n return new MultiPulse(this, stamp, p, encode);\n }\n\n p = this._pulses[op.id];\n if (s) {\n s = s.pulse;\n if (!s || s === StopPropagation) {\n p.source = [];\n } else if (s.stamp === stamp && p.target !== op) {\n p = s;\n } else {\n p.source = s.source;\n }\n }\n\n return p;\n}\n","import Pulse from '../Pulse';\n\nvar NO_OPT = {skip: false, force: false};\n\n/**\n * Touches an operator, scheduling it to be evaluated. If invoked outside of\n * a pulse propagation, the operator will be evaluated the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the operator\n * will be queued for evaluation if and only if the operator has not yet been\n * evaluated on the current propagation timestamp.\n * @param {Operator} op - The operator to touch.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nexport function touch(op, options) {\n var opt = options || NO_OPT;\n if (this._pulse) {\n // if in midst of propagation, add to priority queue\n this._enqueue(op);\n } else {\n // otherwise, queue for next propagation\n this._touched.add(op);\n }\n if (opt.skip) op.skip(true);\n return this;\n}\n\n/**\n * Updates the value of the given operator.\n * @param {Operator} op - The operator to update.\n * @param {*} value - The value to set.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.force] - If true, the operator will\n * be re-evaluated even if its value has not changed.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nexport function update(op, value, options) {\n var opt = options || NO_OPT;\n if (op.set(value) || opt.force) {\n this.touch(op, opt);\n }\n return this;\n}\n\n/**\n * Pulses an operator with a changeset of tuples. If invoked outside of\n * a pulse propagation, the pulse will be applied the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the pulse\n * will be added to the set of active pulses and will be applied if and\n * only if the target operator has not yet been evaluated on the current\n * propagation timestamp.\n * @param {Operator} op - The operator to pulse.\n * @param {ChangeSet} value - The tuple changeset to apply.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nexport function pulse(op, changeset, options) {\n this.touch(op, options || NO_OPT);\n\n var p = new Pulse(this, this._clock + (this._pulse ? 0 : 1)),\n t = op.pulse && op.pulse.source || [];\n p.target = op;\n this._pulses[op.id] = changeset.pulse(p, t);\n\n return this;\n}\n","export default function Heap(cmp) {\n var nodes = [];\n return {\n size: () => nodes.length,\n peek: () => nodes[0],\n push: x => {\n nodes.push(x);\n return siftdown(nodes, 0, nodes.length - 1, cmp);\n },\n pop: () => {\n var last = nodes.pop(), item;\n if (nodes.length) {\n item = nodes[0];\n nodes[0] = last;\n siftup(nodes, 0, cmp);\n } else {\n item = last;\n }\n return item;\n }\n };\n}\n\nfunction siftdown(array, start, idx, cmp) {\n var item, parent, pidx;\n\n item = array[idx];\n while (idx > start) {\n pidx = (idx - 1) >> 1;\n parent = array[pidx];\n if (cmp(item, parent) < 0) {\n array[idx] = parent;\n idx = pidx;\n continue;\n }\n break;\n }\n return (array[idx] = item);\n}\n\nfunction siftup(array, idx, cmp) {\n var start = idx,\n end = array.length,\n item = array[idx],\n cidx = (idx << 1) + 1, ridx;\n\n while (cidx < end) {\n ridx = cidx + 1;\n if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n cidx = ridx;\n }\n array[idx] = array[cidx];\n idx = cidx;\n cidx = (idx << 1) + 1;\n }\n array[idx] = item;\n return siftdown(array, start, idx, cmp);\n}\n","import add from './add';\nimport connect from './connect';\nimport events from './events';\nimport {ingest, parse, preload, request} from './load';\nimport on from './on';\nimport {rank, rerank} from './rank';\nimport {evaluate, run, runAsync, runAfter, enqueue, getPulse} from './run';\nimport {pulse, touch, update} from './update';\nimport changeset from '../ChangeSet';\nimport Heap from '../util/Heap';\nimport UniqueList from '../util/UniqueList';\nimport {loader} from 'vega-loader';\nimport {id, logger, Error} from 'vega-util';\n\n/**\n * A dataflow graph for reactive processing of data streams.\n * @constructor\n */\nexport default function Dataflow() {\n this.logger(logger());\n this.logLevel(Error);\n\n this._clock = 0;\n this._rank = 0;\n try {\n this._loader = loader();\n } catch (e) {\n // do nothing if loader module is unavailable\n }\n\n this._touched = UniqueList(id);\n this._pulses = {};\n this._pulse = null;\n\n this._heap = Heap((a, b) => a.qrank - b.qrank);\n this._postrun = [];\n}\n\nvar prototype = Dataflow.prototype;\n\n/**\n * The current timestamp of this dataflow. This value reflects the\n * timestamp of the previous dataflow run. The dataflow is initialized\n * with a stamp value of 0. The initial run of the dataflow will have\n * a timestap of 1, and so on. This value will match the\n * {@link Pulse.stamp} property.\n * @return {number} - The current timestamp value.\n */\nprototype.stamp = function() {\n return this._clock;\n};\n\n/**\n * Gets or sets the loader instance to use for data file loading. A\n * loader object must provide a \"load\" method for loading files and a\n * \"sanitize\" method for checking URL/filename validity. Both methods\n * should accept a URI and options hash as arguments, and return a Promise\n * that resolves to the loaded file contents (load) or a hash containing\n * sanitized URI data with the sanitized url assigned to the \"href\" property\n * (sanitize).\n * @param {object} _ - The loader instance to use.\n * @return {object|Dataflow} - If no arguments are provided, returns\n * the current loader instance. Otherwise returns this Dataflow instance.\n */\nprototype.loader = function(_) {\n if (arguments.length) {\n this._loader = _;\n return this;\n } else {\n return this._loader;\n }\n};\n\n/**\n * Empty entry threshold for garbage cleaning. Map data structures will\n * perform cleaning once the number of empty entries exceeds this value.\n */\nprototype.cleanThreshold = 1e4;\n\n// OPERATOR REGISTRATION\nprototype.add = add;\nprototype.connect = connect;\nprototype.rank = rank;\nprototype.rerank = rerank;\n\n// OPERATOR UPDATES\nprototype.pulse = pulse;\nprototype.touch = touch;\nprototype.update = update;\nprototype.changeset = changeset;\n\n// DATA LOADING\nprototype.ingest = ingest;\nprototype.parse = parse;\nprototype.preload = preload;\nprototype.request = request;\n\n// EVENT HANDLING\nprototype.events = events;\nprototype.on = on;\n\n// PULSE PROPAGATION\nprototype.evaluate = evaluate;\nprototype.run = run;\nprototype.runAsync = runAsync;\nprototype.runAfter = runAfter;\nprototype._enqueue = enqueue;\nprototype._getPulse = getPulse;\n\n// LOGGING AND ERROR HANDLING\n\nfunction logMethod(method) {\n return function() {\n return this._log[method].apply(this, arguments);\n };\n}\n\n/**\n * Get or set the logger instance used to log messages. If no arguments are\n * provided, returns the current logger instance. Otherwise, sets the logger\n * and return this Dataflow instance. Provided loggers must support the full\n * API of logger objects generated by the vega-util logger method. Note that\n * by default the log level of the new logger will be used; use the logLevel\n * method to adjust the log level as needed.\n */\nprototype.logger = function(logger) {\n if (arguments.length) {\n this._log = logger;\n return this;\n } else {\n return this._log;\n }\n};\n\n/**\n * Logs an error message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit error messages.\n */\nprototype.error = logMethod('error');\n\n/**\n * Logs a warning message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit warning messages.\n */\nprototype.warn = logMethod('warn');\n\n/**\n * Logs a information message. By default, logged messages are written to\n * console output. The message will only be logged if the current log level is\n * high enough to permit information messages.\n */\nprototype.info = logMethod('info');\n\n/**\n * Logs a debug message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit debug messages.\n */\nprototype.debug = logMethod('debug');\n\n/**\n * Get or set the current log level. If an argument is provided, it\n * will be used as the new log level.\n * @param {number} [level] - Should be one of None, Warn, Info\n * @return {number} - The current log level.\n */\nprototype.logLevel = logMethod('level');\n","import Operator from './Operator';\nimport {inherits} from 'vega-util';\n\n/**\n * Abstract class for operators that process data tuples.\n * Subclasses must provide a {@link transform} method for operator processing.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {Operator} [source] - The operator from which to receive pulses.\n */\nexport default function Transform(init, params) {\n Operator.call(this, init, null, params);\n}\n\nvar prototype = inherits(Transform, Operator);\n\n/**\n * Overrides {@link Operator.evaluate} for transform operators.\n * Internally, this method calls {@link evaluate} to perform processing.\n * If {@link evaluate} returns a falsy value, the input pulse is returned.\n * This method should NOT be overridden, instead overrride {@link evaluate}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return the output pulse for this operator (or StopPropagation)\n */\nprototype.run = function(pulse) {\n if (pulse.stamp <= this.stamp) return pulse.StopPropagation;\n\n var rv;\n if (this.skip()) {\n this.skip(false);\n } else {\n rv = this.evaluate(pulse);\n }\n rv = rv || pulse;\n\n this.stamp = pulse.stamp;\n\n if (rv.then) {\n rv = rv.then(_ => this.pulse =_);\n } else if (rv !== pulse.StopPropagation) {\n this.pulse = rv;\n }\n\n return rv;\n};\n\n/**\n * Overrides {@link Operator.evaluate} for transform operators.\n * Marshalls parameter values and then invokes {@link transform}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n value (including undefined) will let the input pulse pass through.\n */\nprototype.evaluate = function(pulse) {\n var params = this.marshall(pulse.stamp),\n out = this.transform(params, pulse);\n params.clear();\n return out;\n};\n\n/**\n * Process incoming pulses.\n * Subclasses should override this method to implement transforms.\n * @param {Parameters} _ - The operator parameter values.\n * @param {Pulse} pulse - The current dataflow pulse.\n * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n * value (including undefined) will let the input pulse pass through.\n */\nprototype.transform = function() {};\n","/**\n * Connect a target operator as a dependent of source operators.\n * If necessary, this method will rerank the target operator and its\n * dependents to ensure propagation proceeds in a topologically sorted order.\n * @param {Operator} target - The target operator.\n * @param {Array<Operator>} - The source operators that should propagate\n * to the target operator.\n */\nexport default function(target, sources) {\n var targetRank = target.rank, i, n;\n\n for (i=0, n=sources.length; i<n; ++i) {\n if (targetRank < sources[i].rank) {\n this.rerank(target);\n return;\n }\n }\n}\n","import {error} from 'vega-util';\n\n/**\n * Assigns a rank to an operator. Ranks are assigned in increasing order\n * by incrementing an internal rank counter.\n * @param {Operator} op - The operator to assign a rank.\n */\nexport function rank(op) {\n op.rank = ++this._rank;\n}\n\n/**\n * Re-ranks an operator and all downstream target dependencies. This\n * is necessary when upstream dependencies of higher rank are added to\n * a target operator.\n * @param {Operator} op - The operator to re-rank.\n */\nexport function rerank(op) {\n var queue = [op],\n cur, list, i;\n\n while (queue.length) {\n this.rank(cur = queue.pop());\n if (list = cur._targets) {\n for (i=list.length; --i >= 0;) {\n queue.push(cur = list[i]);\n if (cur === op) error('Cycle detected in dataflow graph.');\n }\n }\n }\n}\n","export var transforms = {};\n\nexport function definition(type) {\n var t = transform(type);\n return t && t.Definition || null;\n}\n\nexport function transform(type) {\n type = type && type.toLowerCase();\n return transforms.hasOwnProperty(type) ? transforms[type] : null;\n}\n","export function multikey(f) {\n return function(x) {\n var n = f.length,\n i = 1,\n k = String(f[0](x));\n\n for (; i<n; ++i) {\n k += '|' + f[i](x);\n }\n\n return k;\n };\n}\n\nexport function groupkey(fields) {\n return !fields || !fields.length ? function() { return ''; }\n : fields.length === 1 ? fields[0]\n : multikey(fields);\n}\n","import {extend, identity} from 'vega-util';\n\nexport function measureName(op, field, as) {\n return as || (op + (!field ? '' : '_' + field));\n}\n\nexport var AggregateOps = {\n 'values': measure({\n name: 'values',\n init: 'cell.store = true;',\n set: 'cell.data.values()', idx: -1\n }),\n 'count': measure({\n name: 'count',\n set: 'cell.num'\n }),\n '__count__': measure({\n name: 'count',\n set: 'this.missing + this.valid'\n }),\n 'missing': measure({\n name: 'missing',\n set: 'this.missing'\n }),\n 'valid': measure({\n name: 'valid',\n set: 'this.valid'\n }),\n 'sum': measure({\n name: 'sum',\n init: 'this.sum = 0;',\n add: 'this.sum += +v;',\n rem: 'this.sum -= v;',\n set: 'this.sum'\n }),\n 'mean': measure({\n name: 'mean',\n init: 'this.mean = 0;',\n add: 'var d = v - this.mean; this.mean += d / this.valid;',\n rem: 'var d = v - this.mean; this.mean -= this.valid ? d / this.valid : this.mean;',\n set: 'this.valid ? this.mean : undefined'\n }),\n 'average': measure({\n name: 'average',\n set: 'this.valid ? this.mean : undefined',\n req: ['mean'], idx: 1\n }),\n 'variance': measure({\n name: 'variance',\n init: 'this.dev = 0;',\n add: 'this.dev += d * (v - this.mean);',\n rem: 'this.dev -= d * (v - this.mean);',\n set: 'this.valid > 1 ? this.dev / (this.valid-1) : undefined',\n req: ['mean'], idx: 1\n }),\n 'variancep': measure({\n name: 'variancep',\n set: 'this.valid > 1 ? this.dev / this.valid : undefined',\n req: ['variance'], idx: 2\n }),\n 'stdev': measure({\n name: 'stdev',\n set: 'this.valid > 1 ? Math.sqrt(this.dev / (this.valid-1)) : undefined',\n req: ['variance'], idx: 2\n }),\n 'stdevp': measure({\n name: 'stdevp',\n set: 'this.valid > 1 ? Math.sqrt(this.dev / this.valid) : undefined',\n req: ['variance'], idx: 2\n }),\n 'stderr': measure({\n name: 'stderr',\n set: 'this.valid > 1 ? Math.sqrt(this.dev / (this.valid * (this.valid-1))) : undefined',\n req: ['variance'], idx: 2\n }),\n 'distinct': measure({\n name: 'distinct',\n set: 'cell.data.distinct(this.get)',\n req: ['values'], idx: 3\n }),\n 'ci0': measure({\n name: 'ci0',\n set: 'cell.data.ci0(this.get)',\n req: ['values'], idx: 3\n }),\n 'ci1': measure({\n name: 'ci1',\n set: 'cell.data.ci1(this.get)',\n req: ['values'], idx: 3\n }),\n 'median': measure({\n name: 'median',\n set: 'cell.data.q2(this.get)',\n req: ['values'], idx: 3\n }),\n 'q1': measure({\n name: 'q1',\n set: 'cell.data.q1(this.get)',\n req: ['values'], idx: 3\n }),\n 'q3': measure({\n name: 'q3',\n set: 'cell.data.q3(this.get)',\n req: ['values'], idx: 3\n }),\n 'argmin': measure({\n name: 'argmin',\n init: 'this.argmin = undefined;',\n add: 'if (v < this.min) this.argmin = t;',\n rem: 'if (v <= this.min) this.argmin = undefined;',\n set: 'this.argmin || cell.data.argmin(this.get)',\n req: ['min'], str: ['values'], idx: 3\n }),\n 'argmax': measure({\n name: 'argmax',\n init: 'this.argmax = undefined;',\n add: 'if (v > this.max) this.argmax = t;',\n rem: 'if (v >= this.max) this.argmax = undefined;',\n set: 'this.argmax || cell.data.argmax(this.get)',\n req: ['max'], str: ['values'], idx: 3\n }),\n 'min': measure({\n name: 'min',\n init: 'this.min = undefined;',\n add: 'if (v < this.min || this.min === undefined) this.min = v;',\n rem: 'if (v <= this.min) this.min = NaN;',\n set: 'this.min = (isNaN(this.min) ? cell.data.min(this.get) : this.min)',\n str: ['values'], idx: 4\n }),\n 'max': measure({\n name: 'max',\n init: 'this.max = undefined;',\n add: 'if (v > this.max || this.max === undefined) this.max = v;',\n rem: 'if (v >= this.max) this.max = NaN;',\n set: 'this.max = (isNaN(this.max) ? cell.data.max(this.get) : this.max)',\n str: ['values'], idx: 4\n })\n};\n\nexport var ValidAggregateOps = Object.keys(AggregateOps);\n\nexport function createMeasure(op, name) {\n return AggregateOps[op](name);\n}\n\nfunction measure(base) {\n return function(out) {\n var m = extend({init:'', add:'', rem:'', idx:0}, base);\n m.out = out || base.name;\n return m;\n };\n}\n\nfunction compareIndex(a, b) {\n return a.idx - b.idx;\n}\n\nfunction resolve(agg, stream) {\n function collect(m, a) {\n function helper(r) { if (!m[r]) collect(m, m[r] = AggregateOps[r]()); }\n if (a.req) a.req.forEach(helper);\n if (stream && a.str) a.str.forEach(helper);\n return m;\n }\n var map = agg.reduce(\n collect,\n agg.reduce(function(m, a) {\n m[a.name] = a;\n return m;\n }, {})\n );\n var values = [], key;\n for (key in map) values.push(map[key]);\n return values.sort(compareIndex);\n}\n\nexport function compileMeasures(agg, field) {\n var get = field || identity,\n all = resolve(agg, true), // assume streaming removes may occur\n init = 'var cell = this.cell; this.valid = 0; this.missing = 0;',\n ctr = 'this.cell = cell; this.init();',\n add = 'if(v==null){++this.missing; return;} if(v!==v) return; ++this.valid;',\n rem = 'if(v==null){--this.missing; return;} if(v!==v) return; --this.valid;',\n set = 'var cell = this.cell;';\n\n all.forEach(function(a) {\n init += a.init;\n add += a.add;\n rem += a.rem;\n });\n agg.slice().sort(compareIndex).forEach(function(a) {\n set += 't[\\'' + a.out + '\\']=' + a.set + ';';\n });\n set += 'return t;';\n\n ctr = Function('cell', ctr);\n ctr.prototype.init = Function(init);\n ctr.prototype.add = Function('v', 't', add);\n ctr.prototype.rem = Function('v', 't', rem);\n ctr.prototype.set = Function('t', set);\n ctr.prototype.get = get;\n ctr.fields = agg.map(function(_) { return _.out; });\n return ctr;\n}\n","export default function(_) {\n // determine range\n var maxb = _.maxbins || 20,\n base = _.base || 10,\n logb = Math.log(base),\n div = _.divide || [5, 2],\n min = _.extent[0],\n max = _.extent[1],\n span = (max - min) || Math.abs(min) || 1,\n step, level, minstep, precision, v, i, n, eps;\n\n if (_.step) {\n // if step size is explicitly given, use that\n step = _.step;\n } else if (_.steps) {\n // if provided, limit choice to acceptable step sizes\n v = span / maxb;\n for (i=0, n=_.steps.length; i < n && _.steps[i] < v; ++i);\n step = _.steps[Math.max(0, i-1)];\n } else {\n // else use span to determine step size\n level = Math.ceil(Math.log(maxb) / logb);\n minstep = _.minstep || 0;\n step = Math.max(\n minstep,\n Math.pow(base, Math.round(Math.log(span) / logb) - level)\n );\n\n // increase step size if too many bins\n while (Math.ceil(span/step) > maxb) { step *= base; }\n\n // decrease step size if allowed\n for (i=0, n=div.length; i<n; ++i) {\n v = step / div[i];\n if (v >= minstep && span / v <= maxb) step = v;\n }\n }\n\n // update precision, min and max\n v = Math.log(step);\n precision = v >= 0 ? 0 : ~~(-v / logb) + 1;\n eps = Math.pow(base, -precision - 1);\n if (_.nice || _.nice === undefined) {\n v = Math.floor(min / step + eps) * step;\n min = min < v ? v - step : v;\n max = Math.ceil(max / step) * step;\n }\n\n return {\n start: min,\n stop: max === min ? min + step : max,\n step: step\n };\n}\n","export default function*(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","export var random = Math.random;\n\nexport function setRandom(r) {\n random = r;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function variance(values, valueof) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n if (count > 1) return sum / (count - 1);\n}\n","export default function(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number.js\";\n\nexport default function quantile(values, p, valueof = number) {\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import ascending from \"./ascending.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = array.length - 1, compare = ascending) {\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import quantile from \"./quantile.js\";\nimport quickselect from \"./quickselect.js\";\n\nfunction* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n\nexport default function(values, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!values.length) return;\n const n = values.length;\n const i = n >> 1;\n quickselect(values, i - 1, 0);\n if ((n & 1) === 0) quickselect(values, i, i);\n return quantile(values, 0.5);\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function(source, keys) {\n return Array.from(keys, key => source[key]);\n}\n","import transpose from \"./transpose.js\";\n\nexport default function() {\n return transpose(arguments);\n}\n","import numbers from './numbers';\nimport {random} from './random';\nimport {quantile, ascending} from 'd3-array';\n\nexport default function(array, samples, alpha, f) {\n if (!array.length) return [undefined, undefined];\n\n var values = Float64Array.from(numbers(array, f)),\n n = values.length,\n m = samples,\n a, i, j, mu;\n\n for (j=0, mu=Array(m); j<m; ++j) {\n for (a=0, i=0; i<n; ++i) {\n a += values[~~(random() * n)];\n }\n mu[j] = a / n;\n }\n\n return [\n quantile(mu.sort(ascending), alpha/2),\n quantile(mu, 1-(alpha/2))\n ];\n}\n","import numbers from './numbers';\nimport {quantile, ascending} from 'd3-array';\n\nexport default function(array, f) {\n var values = Float64Array.from(numbers(array, f));\n\n return [\n quantile(values.sort(ascending), 0.25),\n quantile(values, 0.50),\n quantile(values, 0.75)\n ];\n}\n","export default function(seed) {\n // Random numbers using a Linear Congruential Generator with seed value\n // Uses glibc values from https://en.wikipedia.org/wiki/Linear_congruential_generator\n return function() {\n seed = (1103515245 * seed + 12345) % 2147483647;\n return seed / 2147483647;\n };\n}\n","import {random} from './random';\n\nexport default function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n\n var dist = {},\n a, b, d;\n\n dist.min = function(_) {\n if (arguments.length) {\n a = _ || 0;\n d = b - a;\n return dist;\n } else {\n return a;\n }\n };\n\n dist.max = function(_) {\n if (arguments.length) {\n b = _ || 0;\n d = b - a;\n return dist;\n } else {\n return b;\n }\n };\n\n dist.sample = function() {\n return a + Math.floor(d * random());\n };\n\n dist.pdf = function(x) {\n return (x === Math.floor(x) && x >= a && x < b) ? 1 / d : 0;\n };\n\n dist.cdf = function(x) {\n var v = Math.floor(x);\n return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n };\n\n dist.icdf = function(p) {\n return (p >= 0 && p <= 1) ? a - 1 + Math.floor(p * d) : NaN;\n };\n\n return dist.min(min).max(max);\n}\n","import {random} from './random';\n\nexport default function(mean, stdev) {\n var mu,\n sigma,\n next = NaN,\n dist = {};\n\n dist.mean = function(_) {\n if (arguments.length) {\n mu = _ || 0;\n next = NaN;\n return dist;\n } else {\n return mu;\n }\n };\n\n dist.stdev = function(_) {\n if (arguments.length) {\n sigma = _ == null ? 1 : _;\n next = NaN;\n return dist;\n } else {\n return sigma;\n }\n };\n\n dist.sample = function() {\n var x = 0, y = 0, rds, c;\n if (next === next) {\n x = next;\n next = NaN;\n return x;\n }\n do {\n x = random() * 2 - 1;\n y = random() * 2 - 1;\n rds = x * x + y * y;\n } while (rds === 0 || rds > 1);\n c = Math.sqrt(-2 * Math.log(rds) / rds); // Box-Muller transform\n next = mu + y * c * sigma;\n return mu + x * c * sigma;\n };\n\n dist.pdf = function(x) {\n var exp = Math.exp(Math.pow(x-mu, 2) / (-2 * Math.pow(sigma, 2)));\n return (1 / (sigma * Math.sqrt(2*Math.PI))) * exp;\n };\n\n // Approximation from West (2009)\n // Better Approximations to Cumulative Normal Functions\n dist.cdf = function(x) {\n var cd,\n z = (x - mu) / sigma,\n Z = Math.abs(z);\n if (Z > 37) {\n cd = 0;\n } else {\n var sum, exp = Math.exp(-Z*Z/2);\n if (Z < 7.07106781186547) {\n sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n sum = sum * Z + 6.37396220353165;\n sum = sum * Z + 33.912866078383;\n sum = sum * Z + 112.079291497871;\n sum = sum * Z + 221.213596169931;\n sum = sum * Z + 220.206867912376;\n cd = exp * sum;\n sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n sum = sum * Z + 16.064177579207;\n sum = sum * Z + 86.7807322029461;\n sum = sum * Z + 296.564248779674;\n sum = sum * Z + 637.333633378831;\n sum = sum * Z + 793.826512519948;\n sum = sum * Z + 440.413735824752;\n cd = cd / sum;\n } else {\n sum = Z + 0.65;\n sum = Z + 4 / sum;\n sum = Z + 3 / sum;\n sum = Z + 2 / sum;\n sum = Z + 1 / sum;\n cd = exp / sum / 2.506628274631;\n }\n }\n return z > 0 ? 1 - cd : cd;\n };\n\n // Approximation of Probit function using inverse error function.\n dist.icdf = function(p) {\n if (p <= 0 || p >= 1) return NaN;\n var x = 2*p - 1,\n v = (8 * (Math.PI - 3)) / (3 * Math.PI * (4-Math.PI)),\n a = (2 / (Math.PI*v)) + (Math.log(1 - Math.pow(x,2)) / 2),\n b = Math.log(1 - (x*x)) / v,\n s = (x > 0 ? 1 : -1) * Math.sqrt(Math.sqrt((a*a) - b) - a);\n return mu + sigma * Math.SQRT2 * s;\n };\n\n return dist.mean(mean).stdev(stdev);\n}\n","import gaussian from './normal';\nimport quartiles from './quartiles';\nimport {random} from './random';\nimport {variance} from 'd3-array';\n\n// TODO: support for additional kernels?\nexport default function(support, bandwidth) {\n var kernel = gaussian(),\n dist = {},\n n = 0;\n\n dist.data = function(_) {\n if (arguments.length) {\n support = _;\n n = _ ? _.length : 0;\n return dist.bandwidth(bandwidth);\n } else {\n return support;\n }\n };\n\n dist.bandwidth = function(_) {\n if (!arguments.length) return bandwidth;\n bandwidth = _;\n if (!bandwidth && support) bandwidth = estimateBandwidth(support);\n return dist;\n };\n\n dist.sample = function() {\n return support[~~(random() * n)] + bandwidth * kernel.sample();\n };\n\n dist.pdf = function(x) {\n for (var y=0, i=0; i<n; ++i) {\n y += kernel.pdf((x - support[i]) / bandwidth);\n }\n return y / bandwidth / n;\n };\n\n dist.cdf = function(x) {\n for (var y=0, i=0; i<n; ++i) {\n y += kernel.cdf((x - support[i]) / bandwidth);\n }\n return y / n;\n };\n\n dist.icdf = function() {\n throw Error('KDE icdf not supported.');\n };\n\n return dist.data(support);\n}\n\n// Scott, D. W. (1992) Multivariate Density Estimation:\n// Theory, Practice, and Visualization. Wiley.\nfunction estimateBandwidth(array) {\n var n = array.length,\n q = quartiles(array),\n h = (q[2] - q[0]) / 1.34;\n return 1.06 * Math.min(Math.sqrt(variance(array)), h) * Math.pow(n, -0.2);\n}\n","import {random} from './random';\n\nexport default function(dists, weights) {\n var dist = {}, m = 0, w;\n\n function normalize(x) {\n var w = [], sum = 0, i;\n for (i=0; i<m; ++i) { sum += (w[i] = (x[i]==null ? 1 : +x[i])); }\n for (i=0; i<m; ++i) { w[i] /= sum; }\n return w;\n }\n\n dist.weights = function(_) {\n if (arguments.length) {\n w = normalize(weights = (_ || []));\n return dist;\n }\n return weights;\n };\n\n dist.distributions = function(_) {\n if (arguments.length) {\n if (_) {\n m = _.length;\n dists = _;\n } else {\n m = 0;\n dists = [];\n }\n return dist.weights(weights);\n }\n return dists;\n };\n\n dist.sample = function() {\n var r = random(),\n d = dists[m-1],\n v = w[0],\n i = 0;\n\n // first select distribution\n for (; i<m-1; v += w[++i]) {\n if (r < v) { d = dists[i]; break; }\n }\n // then sample from it\n return d.sample();\n };\n\n dist.pdf = function(x) {\n for (var p=0, i=0; i<m; ++i) {\n p += w[i] * dists[i].pdf(x);\n }\n return p;\n };\n\n dist.cdf = function(x) {\n for (var p=0, i=0; i<m; ++i) {\n p += w[i] * dists[i].cdf(x);\n }\n return p;\n };\n\n dist.icdf = function() {\n throw Error('Mixture icdf not supported.');\n };\n\n return dist.distributions(dists).weights(weights);\n}\n","import {random} from './random';\n\nexport default function(min, max) {\n if (max == null) {\n max = (min == null ? 1 : min);\n min = 0;\n }\n\n var dist = {},\n a, b, d;\n\n dist.min = function(_) {\n if (arguments.length) {\n a = _ || 0;\n d = b - a;\n return dist;\n } else {\n return a;\n }\n };\n\n dist.max = function(_) {\n if (arguments.length) {\n b = _ || 0;\n d = b - a;\n return dist;\n } else {\n return b;\n }\n };\n\n dist.sample = function() {\n return a + d * random();\n };\n\n dist.pdf = function(x) {\n return (x >= a && x <= b) ? 1 / d : 0;\n };\n\n dist.cdf = function(x) {\n return x < a ? 0 : x > b ? 1 : (x - a) / d;\n };\n\n dist.icdf = function(p) {\n return (p >= 0 && p <= 1) ? a + p * d : NaN;\n };\n\n return dist.min(min).max(max);\n}\n","// Ordinary Least Squares\nexport default function(uX, uY, uXY, uX2) {\n const delta = uX2 - uX * uX,\n slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta,\n intercept = uY - slope * uX;\n\n return [intercept, slope];\n}\n","export function points(data, x, y, sort) {\n data = data.filter(d => {\n let u = x(d), v = y(d);\n return u != null && (u = +u) >= u && v != null && (v = +v) >= v;\n });\n\n if (sort) {\n data.sort((a, b) => x(a) - x(b));\n }\n\n const X = new Float64Array(data.length),\n Y = new Float64Array(data.length);\n\n let i = 0;\n for (let d of data) {\n X[i] = x(d);\n Y[i] = y(d);\n ++i;\n }\n\n return [X, Y];\n}\n\nexport function visitPoints(data, x, y, callback) {\n let index = -1, i = -1, u, v;\n\n for (let d of data) {\n u = x(d, ++index, data);\n v = y(d, index, data);\n if (u != null && (u = +u) >= u && v != null && (v = +v) >= v) {\n callback(u, v, ++i);\n }\n }\n}\n","import {visitPoints} from './points';\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nexport default function(data, x, y, uY, predict) {\n let SSE = 0, SST = 0;\n\n visitPoints(data, x, y, (dx, dy) => {\n const sse = dy - predict(dx),\n sst = dy - uY;\n\n SSE += sse * sse;\n SST += sst * sst;\n });\n\n return 1 - SSE / SST;\n}\n","import ols from './ols';\nimport {visitPoints} from './points';\nimport rSquared from './r-squared';\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nexport default function(data, x, y) {\n let X = 0, Y = 0, XY = 0, X2 = 0, n = 0;\n\n visitPoints(data, x, y, (dx, dy) => {\n X += dx;\n Y += dy;\n XY += dx * dy;\n X2 += dx * dx;\n ++n;\n });\n\n const coef = ols(X / n, Y / n, XY / n, X2 / n),\n predict = x => coef[0] + coef[1] * x;\n\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y / n, predict)\n };\n}\n","import ols from './ols';\nimport {visitPoints} from './points';\nimport rSquared from './r-squared';\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nexport default function(data, x, y) {\n let X = 0, Y = 0, XY = 0, X2 = 0, n = 0;\n\n visitPoints(data, x, y, (dx, dy) => {\n dx = Math.log(dx);\n X += dx;\n Y += dy;\n XY += dx * dy;\n X2 += dx * dx;\n ++n;\n });\n\n const coef = ols(X / n, Y / n, XY / n, X2 / n),\n predict = x => coef[0] + coef[1] * Math.log(x);\n\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y / n, predict)\n };\n}\n","import ols from './ols';\nimport {visitPoints} from './points';\nimport rSquared from './r-squared';\n\nexport default function(data, x, y) {\n let Y = 0, YL = 0, XY = 0, XYL = 0, X2Y = 0, n = 0;\n\n visitPoints(data, x, y, (dx, dy) => {\n const ly = Math.log(dy),\n xy = dx * dy;\n Y += dy;\n XY += xy;\n X2Y += dx * xy;\n YL += dy * ly;\n XYL += xy * ly;\n ++n;\n });\n\n const coef = ols(XY / Y, YL / Y, XYL / Y, X2Y / Y),\n predict = x => coef[0] * Math.exp(coef[1] * x);\n\n coef[0] = Math.exp(coef[0]);\n\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y / n, predict)\n };\n}\n","import ols from './ols';\nimport {visitPoints} from './points';\nimport rSquared from './r-squared';\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nexport default function(data, x, y) {\n let X = 0, Y = 0, XY = 0, X2 = 0, YS = 0, n = 0;\n\n visitPoints(data, x, y, (dx, dy) => {\n const lx = Math.log(dx),\n ly = Math.log(dy);\n X += lx;\n Y += ly;\n XY += lx * ly;\n X2 += lx * lx;\n YS += dy;\n ++n;\n });\n\n const coef = ols(X / n, Y / n, XY / n, X2 / n),\n predict = x => coef[0] * Math.pow(x, coef[1]);\n\n coef[0] = Math.exp(coef[0]);\n\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, YS / n, predict)\n };\n}","import {visitPoints} from './points';\nimport rSquared from './r-squared';\n\nexport default function(data, x, y) {\n let X = 0, Y = 0, X2 = 0, X3 = 0, X4 = 0, XY = 0, X2Y = 0, n = 0;\n\n visitPoints(data, x, y, (dx, dy) => {\n const x2 = dx * dx;\n X += dx;\n Y += dy;\n X2 += x2;\n X3 += x2 * dx;\n X4 += x2 * x2;\n XY += dx * dy;\n X2Y += x2 * dy;\n ++n;\n });\n\n Y = Y / n;\n XY = XY - X * Y;\n X2Y = X2Y - X2 * Y;\n\n const XX = X2 - X * X / n,\n XX2 = X3 - (X2 * X / n),\n X2X2 = X4 - (X2 * X2 / n),\n d = (XX * X2X2 - XX2 * XX2),\n a = (X2Y * XX - XY * XX2) / d,\n b = (XY * X2X2 - X2Y * XX2) / d,\n c = Y - (b * (X / n)) - (a * (X2 / n)),\n predict = x => a * x * x + b * x + c;\n\n return {\n coef: [c, b, a],\n predict: predict,\n rSquared: rSquared(data, x, y, Y, predict)\n };\n}\n","import linear from './linear';\nimport {points} from './points';\nimport quad from './quad';\nimport rSquared from './r-squared';\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n// ... which was adapted from regression-js by Tom Alexander\n// Source: https://github.com/Tom-Alexander/regression-js/blob/master/src/regression.j… License: https://github.com/Tom-Alexander/regression-js/blob/master/LICENSE\nexport default function(data, x, y, order) {\n // use more efficient methods for lower orders\n if (order === 1) return linear(data, x, y);\n if (order === 2) return quad(data, x, y);\n\n const [xv, yv] = points(data, x, y),\n n = xv.length,\n lhs = [],\n rhs = [],\n k = order + 1;\n\n let Y = 0, i, j, l, v, c;\n\n for (i = 0; i < n; ++i) {\n Y += yv[i];\n }\n\n for (i = 0; i < k; ++i) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i) * yv[l];\n }\n lhs.push(v);\n\n c = new Float64Array(k);\n for (j = 0; j < k; ++j) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i + j);\n }\n c[j] = v;\n }\n rhs.push(c);\n }\n rhs.push(lhs);\n\n const coef = gaussianElimination(rhs),\n predict = x => {\n let y = 0, i = 0, n = coef.length;\n for (; i < n; ++i) y += coef[i] * Math.pow(x, i);\n return y;\n };\n\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y / n, predict)\n };\n}\n\n// Given an array for a two-dimensional matrix and the polynomial order,\n// solve A * x = b using Gaussian elimination.\nfunction gaussianElimination(matrix) {\n const n = matrix.length - 1,\n coef = [];\n\n let i, j, k, r, t;\n\n for (i = 0; i < n; ++i) {\n r = i; // max row\n for (j = i + 1; j < n; ++j) {\n if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][r])) {\n r = j;\n }\n }\n\n for (k = i; k < n + 1; ++k) {\n t = matrix[k][i];\n matrix[k][i] = matrix[k][r];\n matrix[k][r] = t;\n }\n\n for (j = i + 1; j < n; ++j) {\n for (k = n; k >= i; k--) {\n matrix[k][j] -= (matrix[k][i] * matrix[i][j]) / matrix[i][i];\n }\n }\n }\n\n for (j = n - 1; j >= 0; --j) {\n t = 0;\n for (k = j + 1; k < n; ++k) {\n t += matrix[k][j] * coef[k];\n }\n coef[j] = (matrix[n][j] - t) / matrix[j][j];\n }\n\n return coef;\n}","import ols from './ols';\nimport {points} from './points';\nimport {median} from 'd3-array';\n\nconst maxiters = 2,\n epsilon = 1e-12;\n\n// Adapted from science.js by Jason Davies\n// Source: https://github.com/jasondavies/science.js/blob/master/src/stats/loess.js\n// License: https://github.com/jasondavies/science.js/blob/master/LICENSE\nexport default function(data, x, y, bandwidth) {\n const [xv, yv] = points(data, x, y, true),\n n = xv.length,\n bw = Math.max(2, ~~(bandwidth * n)), // # nearest neighbors\n yhat = new Float64Array(n),\n residuals = new Float64Array(n),\n robustWeights = new Float64Array(n).fill(1);\n\n for (let iter = -1; ++iter <= maxiters; ) {\n const interval = [0, bw - 1];\n\n for (let i = 0; i < n; ++i) {\n const dx = xv[i],\n i0 = interval[0],\n i1 = interval[1],\n edge = (dx - xv[i0]) > (xv[i1] - dx) ? i0 : i1;\n\n let W = 0, X = 0, Y = 0, XY = 0, X2 = 0,\n denom = 1 / Math.abs(xv[edge] - dx || 1); // avoid singularity!\n\n for (let k = i0; k <= i1; ++k) {\n const xk = xv[k],\n yk = yv[k],\n w = tricube(Math.abs(dx - xk) * denom) * robustWeights[k],\n xkw = xk * w;\n\n W += w;\n X += xkw;\n Y += yk * w;\n XY += yk * xkw;\n X2 += xk * xkw;\n }\n\n // linear regression fit\n const [a, b] = ols(X / W, Y / W, XY / W, X2 / W);\n yhat[i] = a + b * dx;\n residuals[i] = Math.abs(yv[i] - yhat[i]);\n\n updateInterval(xv, i + 1, interval);\n }\n\n if (iter === maxiters) {\n break;\n }\n\n const medianResidual = median(residuals);\n if (Math.abs(medianResidual) < epsilon) break;\n\n for (let i = 0, arg, w; i < n; ++i){\n arg = residuals[i] / (6 * medianResidual);\n // default to epsilon (rather than zero) for large deviations\n // keeping weights tiny but non-zero prevents singularites\n robustWeights[i] = (arg >= 1) ? epsilon : ((w = 1 - arg * arg) * w);\n }\n }\n\n return output(xv, yhat);\n}\n\n// weighting kernel for local regression\nfunction tricube(x) {\n return (x = 1 - x * x * x) * x * x;\n}\n\n// advance sliding window interval of nearest neighbors\nfunction updateInterval(xv, i, interval) {\n let val = xv[i],\n left = interval[0],\n right = interval[1] + 1;\n\n if (right >= xv.length) return;\n\n // step right if distance to new right edge is <= distance to old left edge\n // step when distance is equal to ensure movement over duplicate x values\n while (i > left && (xv[right] - val) <= (val - xv[left])) {\n interval[0] = ++left;\n interval[1] = right;\n ++right;\n }\n}\n\n// generate smoothed output points\n// average points with repeated x values\nfunction output(xv, yhat) {\n const n = xv.length,\n out = [];\n\n for (let i=0, cnt=0, prev=[], v; i<n; ++i) {\n v = xv[i];\n if (prev[0] === v) {\n // average output values via online update\n prev[1] += (yhat[i] - prev[1]) / (++cnt);\n } else {\n // add new output point\n cnt = 0;\n prev = [v, yhat[i]];\n out.push(prev);\n }\n }\n return out;\n}\n","// subdivide up to accuracy of 0.1 degrees\nconst MIN_RADIANS = 0.1 * Math.PI / 180;\n\n// Adaptively sample an interpolated function over a domain extent\nexport default function(f, extent, minSteps, maxSteps) {\n minSteps = minSteps || 25;\n maxSteps = Math.max(minSteps, maxSteps || 200);\n\n const point = x => [x, f(x)],\n minX = extent[0],\n maxX = extent[1],\n span = maxX - minX,\n stop = span / maxSteps,\n prev = [point(minX)],\n next = [];\n\n if (minSteps === maxSteps) {\n // no adaptation, sample uniform grid directly and return\n for (let i = 1; i < maxSteps; ++i) {\n prev.push(point(minX + (i / minSteps) * span));\n }\n prev.push(point(maxX));\n return prev;\n } else {\n // sample minimum points on uniform grid\n // then move on to perform adaptive refinement\n next.push(point(maxX));\n for (let i = minSteps; --i > 0;) {\n next.push(point(minX + (i / minSteps) * span));\n }\n }\n\n let p0 = prev[0],\n p1 = next[next.length - 1];\n\n while (p1) {\n const pm = point((p0[0] + p1[0]) / 2);\n\n if (pm[0] - p0[0] >= stop && angleDelta(p0, pm, p1) > MIN_RADIANS) {\n next.push(pm);\n } else {\n p0 = p1;\n prev.push(p1);\n next.pop();\n }\n p1 = next[next.length - 1];\n }\n\n return prev;\n}\n\nfunction angleDelta(p, q, r) {\n const a0 = Math.atan2(r[1] - p[1], r[0] - p[0]),\n a1 = Math.atan2(q[1] - p[1], q[0] - p[0]);\n return Math.abs(a0 - a1);\n}\n","import {tupleid} from 'vega-dataflow';\nimport {bootstrapCI, quartiles} from 'vega-statistics';\nimport {extentIndex, field} from 'vega-util';\n\nexport default function TupleStore(key) {\n this._key = key ? field(key) : tupleid;\n this.reset();\n}\n\nvar prototype = TupleStore.prototype;\n\nprototype.reset = function() {\n this._add = [];\n this._rem = [];\n this._ext = null;\n this._get = null;\n this._q = null;\n};\n\nprototype.add = function(v) {\n this._add.push(v);\n};\n\nprototype.rem = function(v) {\n this._rem.push(v);\n};\n\nprototype.values = function() {\n this._get = null;\n if (this._rem.length === 0) return this._add;\n\n var a = this._add,\n r = this._rem,\n k = this._key,\n n = a.length,\n m = r.length,\n x = Array(n - m),\n map = {}, i, j, v;\n\n // use unique key field to clear removed values\n for (i=0; i<m; ++i) {\n map[k(r[i])] = 1;\n }\n for (i=0, j=0; i<n; ++i) {\n if (map[k(v = a[i])]) {\n map[k(v)] = 0;\n } else {\n x[j++] = v;\n }\n }\n\n this._rem = [];\n return (this._add = x);\n};\n\n// memoizing statistics methods\n\nprototype.distinct = function(get) {\n var v = this.values(),\n n = v.length,\n map = {},\n count = 0, s;\n\n while (--n >= 0) {\n s = get(v[n]) + '';\n if (!map.hasOwnProperty(s)) {\n map[s] = 1;\n ++count;\n }\n }\n\n return count;\n};\n\nprototype.extent = function(get) {\n if (this._get !== get || !this._ext) {\n var v = this.values(),\n i = extentIndex(v, get);\n this._ext = [v[i[0]], v[i[1]]];\n this._get = get;\n }\n return this._ext;\n};\n\nprototype.argmin = function(get) {\n return this.extent(get)[0] || {};\n};\n\nprototype.argmax = function(get) {\n return this.extent(get)[1] || {};\n};\n\nprototype.min = function(get) {\n var m = this.extent(get)[0];\n return m != null ? get(m) : undefined;\n};\n\nprototype.max = function(get) {\n var m = this.extent(get)[1];\n return m != null ? get(m) : undefined;\n};\n\nprototype.quartile = function(get) {\n if (this._get !== get || !this._q) {\n this._q = quartiles(this.values(), get);\n this._get = get;\n }\n return this._q;\n};\n\nprototype.q1 = function(get) {\n return this.quartile(get)[0];\n};\n\nprototype.q2 = function(get) {\n return this.quartile(get)[1];\n};\n\nprototype.q3 = function(get) {\n return this.quartile(get)[2];\n};\n\nprototype.ci = function(get) {\n if (this._get !== get || !this._ci) {\n this._ci = bootstrapCI(this.values(), 1000, 0.05, get);\n this._get = get;\n }\n return this._ci;\n};\n\nprototype.ci0 = function(get) {\n return this.ci(get)[0];\n};\n\nprototype.ci1 = function(get) {\n return this.ci(get)[1];\n};\n","import {groupkey} from './util/AggregateKeys';\nimport {createMeasure, compileMeasures, measureName, ValidAggregateOps} from './util/AggregateOps';\nimport TupleStore from './util/TupleStore';\nimport {ingest, replace, Transform} from 'vega-dataflow';\nimport {accessorFields, accessorName, array, error, inherits} from 'vega-util';\n\n/**\n * Group-by aggregation operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {Array<function(object): *>} [params.fields] - An array of accessors to aggregate.\n * @param {Array<string>} [params.ops] - An array of strings indicating aggregation operations.\n * @param {Array<string>} [params.as] - An array of output field names for aggregated values.\n * @param {boolean} [params.cross=false] - A flag indicating that the full\n * cross-product of groupby values should be generated, including empty cells.\n * If true, the drop parameter is ignored and empty cells are retained.\n * @param {boolean} [params.drop=true] - A flag indicating if empty cells should be removed.\n */\nexport default function Aggregate(params) {\n Transform.call(this, null, params);\n\n this._adds = []; // array of added output tuples\n this._mods = []; // array of modified output tuples\n this._alen = 0; // number of active added tuples\n this._mlen = 0; // number of active modified tuples\n this._drop = true; // should empty aggregation cells be removed\n this._cross = false; // produce full cross-product of group-by values\n\n this._dims = []; // group-by dimension accessors\n this._dnames = []; // group-by dimension names\n\n this._measures = []; // collection of aggregation monoids\n this._countOnly = false; // flag indicating only count aggregation\n this._counts = null; // collection of count fields\n this._prev = null; // previous aggregation cells\n\n this._inputs = null; // array of dependent input tuple field names\n this._outputs = null; // array of output tuple field names\n}\n\nAggregate.Definition = {\n \"type\": \"Aggregate\",\n \"metadata\": {\"generates\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"ops\", \"type\": \"enum\", \"array\": true, \"values\": ValidAggregateOps },\n { \"name\": \"fields\", \"type\": \"field\", \"null\": true, \"array\": true },\n { \"name\": \"as\", \"type\": \"string\", \"null\": true, \"array\": true },\n { \"name\": \"drop\", \"type\": \"boolean\", \"default\": true },\n { \"name\": \"cross\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"key\", \"type\": \"field\" }\n ]\n};\n\nvar prototype = inherits(Aggregate, Transform);\n\nprototype.transform = function(_, pulse) {\n var aggr = this,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n mod;\n\n this.stamp = out.stamp;\n\n if (this.value && ((mod = _.modified()) || pulse.modified(this._inputs))) {\n this._prev = this.value;\n this.value = mod ? this.init(_) : {};\n pulse.visit(pulse.SOURCE, function(t) { aggr.add(t); });\n } else {\n this.value = this.value || this.init(_);\n pulse.visit(pulse.REM, function(t) { aggr.rem(t); });\n pulse.visit(pulse.ADD, function(t) { aggr.add(t); });\n }\n\n // Indicate output fields and return aggregate tuples.\n out.modifies(this._outputs);\n\n // Should empty cells be dropped?\n aggr._drop = _.drop !== false;\n\n // If domain cross-product requested, generate empty cells as needed\n // and ensure that empty cells are not dropped\n if (_.cross && aggr._dims.length > 1) {\n aggr._drop = false;\n this.cross();\n }\n\n return aggr.changes(out);\n};\n\nprototype.cross = function() {\n var aggr = this,\n curr = aggr.value,\n dims = aggr._dnames,\n vals = dims.map(function() { return {}; }),\n n = dims.length;\n\n // collect all group-by domain values\n function collect(cells) {\n var key, i, t, v;\n for (key in cells) {\n t = cells[key].tuple;\n for (i=0; i<n; ++i) {\n vals[i][(v = t[dims[i]])] = v;\n }\n }\n }\n collect(aggr._prev);\n collect(curr);\n\n // iterate over key cross-product, create cells as needed\n function generate(base, tuple, index) {\n var name = dims[index],\n v = vals[index++],\n k, key;\n\n for (k in v) {\n tuple[name] = v[k];\n key = base ? base + '|' + k : k;\n if (index < n) generate(key, tuple, index);\n else if (!curr[key]) aggr.cell(key, tuple);\n }\n }\n generate('', {}, 0);\n};\n\nprototype.init = function(_) {\n // initialize input and output fields\n var inputs = (this._inputs = []),\n outputs = (this._outputs = []),\n inputMap = {};\n\n function inputVisit(get) {\n var fields = array(accessorFields(get)),\n i = 0, n = fields.length, f;\n for (; i<n; ++i) {\n if (!inputMap[f=fields[i]]) {\n inputMap[f] = 1;\n inputs.push(f);\n }\n }\n }\n\n // initialize group-by dimensions\n this._dims = array(_.groupby);\n this._dnames = this._dims.map(function(d) {\n var dname = accessorName(d);\n inputVisit(d);\n outputs.push(dname);\n return dname;\n });\n this.cellkey = _.key ? _.key : groupkey(this._dims);\n\n // initialize aggregate measures\n this._countOnly = true;\n this._counts = [];\n this._measures = [];\n\n var fields = _.fields || [null],\n ops = _.ops || ['count'],\n as = _.as || [],\n n = fields.length,\n map = {},\n field, op, m, mname, outname, i;\n\n if (n !== ops.length) {\n error('Unmatched number of fields and aggregate ops.');\n }\n\n for (i=0; i<n; ++i) {\n field = fields[i];\n op = ops[i];\n\n if (field == null && op !== 'count') {\n error('Null aggregate field specified.');\n }\n mname = accessorName(field);\n outname = measureName(op, mname, as[i]);\n outputs.push(outname);\n\n if (op === 'count') {\n this._counts.push(outname);\n continue;\n }\n\n m = map[mname];\n if (!m) {\n inputVisit(field);\n m = (map[mname] = []);\n m.field = field;\n this._measures.push(m);\n }\n\n if (op !== 'count') this._countOnly = false;\n m.push(createMeasure(op, outname));\n }\n\n this._measures = this._measures.map(function(m) {\n return compileMeasures(m, m.field);\n });\n\n return {}; // aggregation cells (this.value)\n};\n\n// -- Cell Management -----\n\nprototype.cellkey = groupkey();\n\nprototype.cell = function(key, t) {\n var cell = this.value[key];\n if (!cell) {\n cell = this.value[key] = this.newcell(key, t);\n this._adds[this._alen++] = cell;\n } else if (cell.num === 0 && this._drop && cell.stamp < this.stamp) {\n cell.stamp = this.stamp;\n this._adds[this._alen++] = cell;\n } else if (cell.stamp < this.stamp) {\n cell.stamp = this.stamp;\n this._mods[this._mlen++] = cell;\n }\n return cell;\n};\n\nprototype.newcell = function(key, t) {\n var cell = {\n key: key,\n num: 0,\n agg: null,\n tuple: this.newtuple(t, this._prev && this._prev[key]),\n stamp: this.stamp,\n store: false\n };\n\n if (!this._countOnly) {\n var measures = this._measures,\n n = measures.length, i;\n\n cell.agg = Array(n);\n for (i=0; i<n; ++i) {\n cell.agg[i] = new measures[i](cell);\n }\n }\n\n if (cell.store) {\n cell.data = new TupleStore();\n }\n\n return cell;\n};\n\nprototype.newtuple = function(t, p) {\n var names = this._dnames,\n dims = this._dims,\n x = {}, i, n;\n\n for (i=0, n=dims.length; i<n; ++i) {\n x[names[i]] = dims[i](t);\n }\n\n return p ? replace(p.tuple, x) : ingest(x);\n};\n\n// -- Process Tuples -----\n\nprototype.add = function(t) {\n var key = this.cellkey(t),\n cell = this.cell(key, t),\n agg, i, n;\n\n cell.num += 1;\n if (this._countOnly) return;\n\n if (cell.store) cell.data.add(t);\n\n agg = cell.agg;\n for (i=0, n=agg.length; i<n; ++i) {\n agg[i].add(agg[i].get(t), t);\n }\n};\n\nprototype.rem = function(t) {\n var key = this.cellkey(t),\n cell = this.cell(key, t),\n agg, i, n;\n\n cell.num -= 1;\n if (this._countOnly) return;\n\n if (cell.store) cell.data.rem(t);\n\n agg = cell.agg;\n for (i=0, n=agg.length; i<n; ++i) {\n agg[i].rem(agg[i].get(t), t);\n }\n};\n\nprototype.celltuple = function(cell) {\n var tuple = cell.tuple,\n counts = this._counts,\n agg, i, n;\n\n // consolidate stored values\n if (cell.store) {\n cell.data.values();\n }\n\n // update tuple properties\n for (i=0, n=counts.length; i<n; ++i) {\n tuple[counts[i]] = cell.num;\n }\n if (!this._countOnly) {\n agg = cell.agg;\n for (i=0, n=agg.length; i<n; ++i) {\n agg[i].set(tuple);\n }\n }\n\n return tuple;\n};\n\nprototype.changes = function(out) {\n var adds = this._adds,\n mods = this._mods,\n prev = this._prev,\n drop = this._drop,\n add = out.add,\n rem = out.rem,\n mod = out.mod,\n cell, key, i, n;\n\n if (prev) for (key in prev) {\n cell = prev[key];\n if (!drop || cell.num) rem.push(cell.tuple);\n }\n\n for (i=0, n=this._alen; i<n; ++i) {\n add.push(this.celltuple(adds[i]));\n adds[i] = null; // for garbage collection\n }\n\n for (i=0, n=this._mlen; i<n; ++i) {\n cell = mods[i];\n (cell.num === 0 && drop ? rem : mod).push(this.celltuple(cell));\n mods[i] = null; // for garbage collection\n }\n\n this._alen = this._mlen = 0; // reset list of active cells\n this._prev = null;\n return out;\n};\n","import {Transform} from 'vega-dataflow';\nimport {bin} from 'vega-statistics';\nimport {inherits, accessor, accessorFields, accessorName} from 'vega-util';\n\n// epsilon bias to offset floating point error (#1737)\nconst EPSILON = 1e-14;\n\n/**\n * Generates a binning function for discretizing data.\n * @constructor\n * @param {object} params - The parameters for this operator. The\n * provided values should be valid options for the {@link bin} function.\n * @param {function(object): *} params.field - The data field to bin.\n */\nexport default function Bin(params) {\n Transform.call(this, null, params);\n}\n\nBin.Definition = {\n \"type\": \"Bin\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"anchor\", \"type\": \"number\" },\n { \"name\": \"maxbins\", \"type\": \"number\", \"default\": 20 },\n { \"name\": \"base\", \"type\": \"number\", \"default\": 10 },\n { \"name\": \"divide\", \"type\": \"number\", \"array\": true, \"default\": [5, 2] },\n { \"name\": \"extent\", \"type\": \"number\", \"array\": true, \"length\": 2, \"required\": true },\n { \"name\": \"step\", \"type\": \"number\" },\n { \"name\": \"steps\", \"type\": \"number\", \"array\": true },\n { \"name\": \"minstep\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"nice\", \"type\": \"boolean\", \"default\": true },\n { \"name\": \"name\", \"type\": \"string\" },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"bin0\", \"bin1\"] }\n ]\n};\n\nvar prototype = inherits(Bin, Transform);\n\nprototype.transform = function(_, pulse) {\n var bins = this._bins(_),\n start = bins.start,\n step = bins.step,\n as = _.as || ['bin0', 'bin1'],\n b0 = as[0],\n b1 = as[1],\n flag;\n\n if (_.modified()) {\n pulse = pulse.reflow(true);\n flag = pulse.SOURCE;\n } else {\n flag = pulse.modified(accessorFields(_.field)) ? pulse.ADD_MOD : pulse.ADD;\n }\n\n pulse.visit(flag, function(t) {\n var v = bins(t);\n // minimum bin value (inclusive)\n t[b0] = v;\n // maximum bin value (exclusive)\n // use convoluted math for better floating point agreement\n // see https://github.com/vega/vega/issues/830\n t[b1] = v == null ? null : start + step * (1 + (v - start) / step);\n });\n\n return pulse.modifies(as);\n};\n\nprototype._bins = function(_) {\n if (this.value && !_.modified()) {\n return this.value;\n }\n\n var field = _.field,\n bins = bin(_),\n start = bins.start,\n stop = bins.stop,\n step = bins.step,\n a, d;\n\n if ((a = _.anchor) != null) {\n d = a - (start + step * Math.floor((a - start) / step));\n start += d;\n stop += d;\n }\n\n var f = function(t) {\n var v = field(t);\n if (v == null) {\n return null;\n } else {\n v = Math.max(start, Math.min(+v, stop - step));\n return start + step * Math.floor(EPSILON + (v - start) / step);\n }\n };\n\n f.start = start;\n f.stop = stop;\n f.step = step;\n\n return this.value = accessor(\n f,\n accessorFields(field),\n _.name || 'bin_' + accessorName(field)\n );\n};\n","import {merge} from 'vega-util';\n\nexport default function(idFunc, source, input) {\n var $ = idFunc,\n data = source || [],\n add = input || [],\n rem = {},\n cnt = 0;\n\n return {\n add: function(t) { add.push(t); },\n remove: function(t) { rem[$(t)] = ++cnt; },\n size: function() { return data.length; },\n data: function(compare, resort) {\n if (cnt) {\n data = data.filter(function(t) { return !rem[$(t)]; });\n rem = {};\n cnt = 0;\n }\n if (resort && compare) {\n data.sort(compare);\n }\n if (add.length) {\n data = compare\n ? merge(compare, data, add.sort(compare))\n : data.concat(add);\n add = [];\n }\n return data;\n }\n }\n}","import SortedList from './util/SortedList';\nimport {Transform, tupleid} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Collects all data tuples that pass through this operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for additionally sorting the collected tuples.\n */\nexport default function Collect(params) {\n Transform.call(this, [], params);\n}\n\nCollect.Definition = {\n \"type\": \"Collect\",\n \"metadata\": {\"source\": true},\n \"params\": [\n { \"name\": \"sort\", \"type\": \"compare\" }\n ]\n};\n\nvar prototype = inherits(Collect, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n list = SortedList(tupleid, this.value, out.materialize(out.ADD).add),\n sort = _.sort,\n mod = pulse.changed() || (sort &&\n (_.modified('sort') || pulse.modified(sort.fields)));\n\n out.visit(out.REM, list.remove);\n\n this.modified(mod);\n this.value = out.source = list.data(sort, mod);\n\n // propagate tree root if defined\n if (pulse.source && pulse.source.root) {\n this.value.root = pulse.source.root;\n }\n\n return out;\n};\n","import {Operator} from 'vega-dataflow';\nimport {inherits, compare} from 'vega-util';\n\n/**\n * Generates a comparator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<string|function>} params.fields - The fields to compare.\n * @param {Array<string>} [params.orders] - The sort orders.\n * Each entry should be one of \"ascending\" (default) or \"descending\".\n */\nexport default function Compare(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(Compare, Operator);\n\nfunction update(_) {\n return (this.value && !_.modified())\n ? this.value\n : compare(_.fields, _.orders);\n}\n","import {ingest, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Count regexp-defined pattern occurrences in a text field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the text field.\n * @param {string} [params.pattern] - RegExp string defining the text pattern.\n * @param {string} [params.case] - One of 'lower', 'upper' or null (mixed) case.\n * @param {string} [params.stopwords] - RegExp string of words to ignore.\n */\nexport default function CountPattern(params) {\n Transform.call(this, null, params);\n}\n\nCountPattern.Definition = {\n \"type\": \"CountPattern\",\n \"metadata\": {\"generates\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"case\", \"type\": \"enum\", \"values\": [\"upper\", \"lower\", \"mixed\"], \"default\": \"mixed\" },\n { \"name\": \"pattern\", \"type\": \"string\", \"default\": \"[\\\\w\\\"]+\" },\n { \"name\": \"stopwords\", \"type\": \"string\", \"default\": \"\" },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"text\", \"count\"] }\n ]\n};\n\nfunction tokenize(text, tcase, match) {\n switch (tcase) {\n case 'upper': text = text.toUpperCase(); break;\n case 'lower': text = text.toLowerCase(); break;\n }\n return text.match(match);\n}\n\nvar prototype = inherits(CountPattern, Transform);\n\nprototype.transform = function(_, pulse) {\n function process(update) {\n return function(tuple) {\n var tokens = tokenize(get(tuple), _.case, match) || [], t;\n for (var i=0, n=tokens.length; i<n; ++i) {\n if (!stop.test(t = tokens[i])) update(t);\n }\n };\n }\n\n var init = this._parameterCheck(_, pulse),\n counts = this._counts,\n match = this._match,\n stop = this._stop,\n get = _.field,\n as = _.as || ['text', 'count'],\n add = process(function(t) { counts[t] = 1 + (counts[t] || 0); }),\n rem = process(function(t) { counts[t] -= 1; });\n\n if (init) {\n pulse.visit(pulse.SOURCE, add);\n } else {\n pulse.visit(pulse.ADD, add);\n pulse.visit(pulse.REM, rem);\n }\n\n return this._finish(pulse, as); // generate output tuples\n};\n\nprototype._parameterCheck = function(_, pulse) {\n var init = false;\n\n if (_.modified('stopwords') || !this._stop) {\n this._stop = new RegExp('^' + (_.stopwords || '') + '$', 'i');\n init = true;\n }\n\n if (_.modified('pattern') || !this._match) {\n this._match = new RegExp((_.pattern || '[\\\\w\\']+'), 'g');\n init = true;\n }\n\n if (_.modified('field') || pulse.modified(_.field.fields)) {\n init = true;\n }\n\n if (init) this._counts = {};\n return init;\n};\n\nprototype._finish = function(pulse, as) {\n var counts = this._counts,\n tuples = this._tuples || (this._tuples = {}),\n text = as[0],\n count = as[1],\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n w, t, c;\n\n for (w in counts) {\n t = tuples[w];\n c = counts[w] || 0;\n if (!t && c) {\n tuples[w] = (t = ingest({}));\n t[text] = w;\n t[count] = c;\n out.add.push(t);\n } else if (c === 0) {\n if (t) out.rem.push(t);\n counts[w] = null;\n tuples[w] = null;\n } else if (t[count] !== c) {\n t[count] = c;\n out.mod.push(t);\n }\n }\n\n return out.modifies(as);\n};\n","import {ingest, Transform} from 'vega-dataflow';\nimport {inherits, truthy} from 'vega-util';\n\n/**\n * Perform a cross-product of a tuple stream with itself.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object):boolean} [params.filter] - An optional filter\n * function for selectively including tuples in the cross product.\n * @param {Array<string>} [params.as] - The names of the output fields.\n */\nexport default function Cross(params) {\n Transform.call(this, null, params);\n}\n\nCross.Definition = {\n \"type\": \"Cross\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"filter\", \"type\": \"expr\" },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"a\", \"b\"] }\n ]\n};\n\nvar prototype = inherits(Cross, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n data = this.value,\n as = _.as || ['a', 'b'],\n a = as[0], b = as[1],\n reset = !data\n || pulse.changed(pulse.ADD_REM)\n || _.modified('as')\n || _.modified('filter');\n\n if (reset) {\n if (data) out.rem = data;\n data = pulse.materialize(pulse.SOURCE).source;\n out.add = this.value = cross(data, a, b, _.filter || truthy);\n } else {\n out.mod = data;\n }\n\n out.source = this.value;\n return out.modifies(as);\n};\n\nfunction cross(input, a, b, filter) {\n var data = [],\n t = {},\n n = input.length,\n i = 0,\n j, left;\n\n for (; i<n; ++i) {\n t[a] = left = input[i];\n for (j=0; j<n; ++j) {\n t[b] = input[j];\n if (filter(t)) {\n data.push(ingest(t));\n t = {};\n t[a] = left;\n }\n }\n }\n\n return data;\n}\n","import {\n randomKDE,\n randomMixture,\n randomNormal,\n randomUniform\n} from 'vega-statistics';\n\nimport {error} from 'vega-util';\n\nvar Distributions = {\n kde: randomKDE,\n mixture: randomMixture,\n normal: randomNormal,\n uniform: randomUniform\n};\n\nvar DISTRIBUTIONS = 'distributions',\n FUNCTION = 'function',\n FIELD = 'field';\n\n/**\n * Parse a parameter object for a probability distribution.\n * @param {object} def - The distribution parameter object.\n * @param {function():Array<object>} - A method for requesting\n * source data. Used for distributions (such as KDE) that\n * require sample data points. This method will only be\n * invoked if the 'from' parameter for a target data source\n * is not provided. Typically this method returns backing\n * source data for a Pulse object.\n * @return {object} - The output distribution object.\n */\nexport default function parse(def, data) {\n var func = def[FUNCTION];\n if (!Distributions.hasOwnProperty(func)) {\n error('Unknown distribution function: ' + func);\n }\n\n var d = Distributions[func]();\n\n for (var name in def) {\n // if data field, extract values\n if (name === FIELD) {\n d.data((def.from || data()).map(def[name]));\n }\n\n // if distribution mixture, recurse to parse each definition\n else if (name === DISTRIBUTIONS) {\n d[name](def[name].map(function(_) { return parse(_, data); }));\n }\n\n // otherwise, simply set the parameter\n else if (typeof d[name] === FUNCTION) {\n d[name](def[name]);\n }\n }\n\n return d;\n}\n","import parseDist from './util/Distributions';\nimport {ingest, Transform} from 'vega-dataflow';\nimport {sampleCurve} from 'vega-statistics';\nimport {error, extent, inherits} from 'vega-util';\n\n/**\n * Grid sample points for a probability density. Given a distribution and\n * a sampling extent, will generate points suitable for plotting either\n * PDF (probability density function) or CDF (cumulative distribution\n * function) curves.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.distribution - The probability distribution. This\n * is an object parameter dependent on the distribution type.\n * @param {string} [params.method='pdf'] - The distribution method to sample.\n * One of 'pdf' or 'cdf'.\n * @param {Array<number>} [params.extent] - The [min, max] extent over which\n * to sample the distribution. This argument is required in most cases, but\n * can be omitted if the distribution (e.g., 'kde') supports a 'data' method\n * that returns numerical sample points from which the extent can be deduced.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n * for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n * for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n * plotting the density. If specified, overrides both minsteps and maxsteps\n * to set an exact number of uniform samples. Useful in conjunction with\n * a fixed extent to ensure consistent sample points for stacked densities.\n */\nexport default function Density(params) {\n Transform.call(this, null, params);\n}\n\nvar distributions = [\n {\n \"key\": {\"function\": \"normal\"},\n \"params\": [\n { \"name\": \"mean\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"stdev\", \"type\": \"number\", \"default\": 1 }\n ]\n },\n {\n \"key\": {\"function\": \"uniform\"},\n \"params\": [\n { \"name\": \"min\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"max\", \"type\": \"number\", \"default\": 1 }\n ]\n },\n {\n \"key\": {\"function\": \"kde\"},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"from\", \"type\": \"data\" },\n { \"name\": \"bandwidth\", \"type\": \"number\", \"default\": 0 }\n ]\n }\n];\n\nvar mixture = {\n \"key\": {\"function\": \"mixture\"},\n \"params\": [\n { \"name\": \"distributions\", \"type\": \"param\", \"array\": true,\n \"params\": distributions },\n { \"name\": \"weights\", \"type\": \"number\", \"array\": true }\n ]\n};\n\nDensity.Definition = {\n \"type\": \"Density\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"extent\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"steps\", \"type\": \"number\" },\n { \"name\": \"minsteps\", \"type\": \"number\", \"default\": 25 },\n { \"name\": \"maxsteps\", \"type\": \"number\", \"default\": 200 },\n { \"name\": \"method\", \"type\": \"string\", \"default\": \"pdf\",\n \"values\": [\"pdf\", \"cdf\"] },\n { \"name\": \"distribution\", \"type\": \"param\",\n \"params\": distributions.concat(mixture) },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true,\n \"default\": [\"value\", \"density\"] }\n ]\n};\n\nvar prototype = inherits(Density, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n if (!this.value || pulse.changed() || _.modified()) {\n var dist = parseDist(_.distribution, source(pulse)),\n minsteps = _.steps || _.minsteps || 25,\n maxsteps = _.steps || _.maxsteps || 200,\n method = _.method || 'pdf';\n\n if (method !== 'pdf' && method !== 'cdf') {\n error('Invalid density method: ' + method);\n }\n if (!_.extent && !dist.data) {\n error('Missing density extent parameter.');\n }\n method = dist[method];\n\n var as = _.as || ['value', 'density'],\n domain = _.extent || extent(dist.data()),\n values = sampleCurve(method, domain, minsteps, maxsteps).map(v => {\n var tuple = {};\n tuple[as[0]] = v[0];\n tuple[as[1]] = v[1];\n return ingest(tuple);\n });\n\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n\n return out;\n};\n\nfunction source(pulse) {\n return function() { return pulse.materialize(pulse.SOURCE).source; };\n}\n","import {Operator} from 'vega-dataflow';\nimport {accessor, accessorFields, accessorName, inherits} from 'vega-util';\n\n/**\n * Wraps an expression function with access to external parameters.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function} params.expr - The expression function. The\n * function should accept both a datum and a parameter object.\n * This operator's value will be a new function that wraps the\n * expression function with access to this operator's parameters.\n */\nexport default function Expression(params) {\n Operator.call(this, null, update, params);\n this.modified(true);\n}\n\ninherits(Expression, Operator);\n\nfunction update(_) {\n var expr = _.expr;\n return this.value && !_.modified('expr')\n ? this.value\n : accessor(\n datum => expr(datum, _),\n accessorFields(expr),\n accessorName(expr)\n );\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Computes extents (min/max) for a data field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field over which to compute extends.\n */\nexport default function Extent(params) {\n Transform.call(this, [undefined, undefined], params);\n}\n\nExtent.Definition = {\n \"type\": \"Extent\",\n \"metadata\": {},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\", \"required\": true }\n ]\n};\n\nvar prototype = inherits(Extent, Transform);\n\nprototype.transform = function(_, pulse) {\n var extent = this.value,\n field = _.field,\n min = extent[0],\n max = extent[1],\n mod;\n\n mod = pulse.changed()\n || pulse.modified(field.fields)\n || _.modified('field');\n\n if (mod || min == null) {\n min = +Infinity;\n max = -Infinity;\n }\n\n pulse.visit(mod ? pulse.SOURCE : pulse.ADD, function(t) {\n var v = field(t);\n if (v != null) {\n // coerce to number\n v = +v;\n // NaNs will fail all comparisons!\n if (v < min) min = v;\n if (v > max) max = v;\n }\n });\n\n if (!isFinite(min) || !isFinite(max)) {\n min = max = undefined;\n }\n this.value = [min, max];\n};\n","import {Operator} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Provides a bridge between a parent transform and a target subflow that\n * consumes only a subset of the tuples that pass through the parent.\n * @constructor\n * @param {Pulse} pulse - A pulse to use as the value of this operator.\n * @param {Transform} parent - The parent transform (typically a Facet instance).\n * @param {Transform} target - A transform that receives the subflow of tuples.\n */\nexport default function Subflow(pulse, parent) {\n Operator.call(this, pulse);\n this.parent = parent;\n}\n\nvar prototype = inherits(Subflow, Operator);\n\nprototype.connect = function(target) {\n this.targets().add(target);\n return (target.source = this);\n};\n\n/**\n * Add an 'add' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being added.\n */\nprototype.add = function(t) {\n this.value.add.push(t);\n};\n\n/**\n * Add a 'rem' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being removed.\n */\nprototype.rem = function(t) {\n this.value.rem.push(t);\n};\n\n/**\n * Add a 'mod' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being modified.\n */\nprototype.mod = function(t) {\n this.value.mod.push(t);\n};\n\n/**\n * Re-initialize this operator's pulse value.\n * @param {Pulse} pulse - The pulse to copy from.\n * @see Pulse.init\n */\nprototype.init = function(pulse) {\n this.value.init(pulse, pulse.NO_SOURCE);\n};\n\n/**\n * Evaluate this operator. This method overrides the\n * default behavior to simply return the contained pulse value.\n * @return {Pulse}\n */\nprototype.evaluate = function() {\n // assert: this.value.stamp === pulse.stamp\n return this.value;\n};\n","import Subflow from './Subflow';\nimport {Transform, tupleid} from 'vega-dataflow';\nimport {fastmap, inherits} from 'vega-util';\n\n/**\n * Facets a dataflow into a set of subflows based on a key.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n * that generates a subflow of operators and returns its root operator.\n * @param {function(object): *} params.key - The key field to facet by.\n */\nexport default function Facet(params) {\n Transform.call(this, {}, params);\n this._keys = fastmap(); // cache previously calculated key values\n\n // keep track of active subflows, use as targets array for listeners\n // this allows us to limit propagation to only updated subflows\n var a = this._targets = [];\n a.active = 0;\n a.forEach = function(f) {\n for (var i=0, n=a.active; i<n; ++i) f(a[i], i, a);\n };\n}\n\nvar prototype = inherits(Facet, Transform);\n\nprototype.activate = function(flow) {\n this._targets[this._targets.active++] = flow;\n};\n\nprototype.subflow = function(key, flow, pulse, parent) {\n var flows = this.value,\n sf = flows.hasOwnProperty(key) && flows[key],\n df, p;\n\n if (!sf) {\n p = parent || (p = this._group[key]) && p.tuple;\n df = pulse.dataflow;\n sf = df.add(new Subflow(pulse.fork(pulse.NO_SOURCE), this))\n .connect(flow(df, key, p));\n flows[key] = sf;\n this.activate(sf);\n } else if (sf.value.stamp < pulse.stamp) {\n sf.init(pulse);\n this.activate(sf);\n }\n\n return sf;\n};\n\nprototype.transform = function(_, pulse) {\n var df = pulse.dataflow,\n self = this,\n key = _.key,\n flow = _.subflow,\n cache = this._keys,\n rekey = _.modified('key');\n\n function subflow(key) {\n return self.subflow(key, flow, pulse);\n }\n\n this._group = _.group || {};\n this._targets.active = 0; // reset list of active subflows\n\n pulse.visit(pulse.REM, function(t) {\n var id = tupleid(t),\n k = cache.get(id);\n if (k !== undefined) {\n cache.delete(id);\n subflow(k).rem(t);\n }\n });\n\n pulse.visit(pulse.ADD, function(t) {\n var k = key(t);\n cache.set(tupleid(t), k);\n subflow(k).add(t);\n });\n\n if (rekey || pulse.modified(key.fields)) {\n pulse.visit(pulse.MOD, function(t) {\n var id = tupleid(t),\n k0 = cache.get(id),\n k1 = key(t);\n if (k0 === k1) {\n subflow(k1).mod(t);\n } else {\n cache.set(id, k1);\n subflow(k0).rem(t);\n subflow(k1).add(t);\n }\n });\n } else if (pulse.changed(pulse.MOD)) {\n pulse.visit(pulse.MOD, function(t) {\n subflow(cache.get(tupleid(t))).mod(t);\n });\n }\n\n if (rekey) {\n pulse.visit(pulse.REFLOW, function(t) {\n var id = tupleid(t),\n k0 = cache.get(id),\n k1 = key(t);\n if (k0 !== k1) {\n cache.set(id, k1);\n subflow(k0).rem(t);\n subflow(k1).add(t);\n }\n });\n }\n\n if (cache.empty > df.cleanThreshold) df.runAfter(cache.clean);\n return pulse;\n};\n","import {Operator} from 'vega-dataflow';\nimport {array, field, inherits, isArray} from 'vega-util';\n\n/**\n * Generates one or more field accessor functions.\n * If the 'name' parameter is an array, an array of field accessors\n * will be created and the 'as' parameter will be ignored.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.name - The field name(s) to access.\n * @param {string} params.as - The accessor function name.\n */\nexport default function Field(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(Field, Operator);\n\nfunction update(_) {\n return (this.value && !_.modified()) ? this.value\n : isArray(_.name) ? array(_.name).map(function(f) { return field(f); })\n : field(_.name, _.as);\n}\n","import {Transform, tupleid} from 'vega-dataflow';\nimport {fastmap, inherits} from 'vega-util';\n\n/**\n * Filters data tuples according to a predicate function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The predicate expression function\n * that determines a tuple's filter status. Truthy values pass the filter.\n */\nexport default function Filter(params) {\n Transform.call(this, fastmap(), params);\n}\n\nFilter.Definition = {\n \"type\": \"Filter\",\n \"metadata\": {\"changes\": true},\n \"params\": [\n { \"name\": \"expr\", \"type\": \"expr\", \"required\": true }\n ]\n};\n\nvar prototype = inherits(Filter, Transform);\n\nprototype.transform = function(_, pulse) {\n var df = pulse.dataflow,\n cache = this.value, // cache ids of filtered tuples\n output = pulse.fork(),\n add = output.add,\n rem = output.rem,\n mod = output.mod,\n test = _.expr,\n isMod = true;\n\n pulse.visit(pulse.REM, function(t) {\n var id = tupleid(t);\n if (!cache.has(id)) rem.push(t);\n else cache.delete(id);\n });\n\n pulse.visit(pulse.ADD, function(t) {\n if (test(t, _)) add.push(t);\n else cache.set(tupleid(t), 1);\n });\n\n function revisit(t) {\n var id = tupleid(t),\n b = test(t, _),\n s = cache.get(id);\n if (b && s) {\n cache.delete(id);\n add.push(t);\n } else if (!b && !s) {\n cache.set(id, 1);\n rem.push(t);\n } else if (isMod && b && !s) {\n mod.push(t);\n }\n }\n\n pulse.visit(pulse.MOD, revisit);\n\n if (_.modified()) {\n isMod = false;\n pulse.visit(pulse.REFLOW, revisit);\n }\n\n if (cache.empty > df.cleanThreshold) df.runAfter(cache.clean);\n return output;\n};\n","import {accessorName} from 'vega-util';\n\n// use either provided alias or accessor field name\nexport function fieldNames(fields, as) {\n if (!fields) return null;\n return fields.map(function(f, i) {\n return as[i] || accessorName(f);\n });\n}\n","import {fieldNames} from './util/util';\nimport {derive, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Flattens array-typed field values into new data objects.\n * If multiple fields are specified, they are treated as parallel arrays,\n * with output values included for each matching index (or null if missing).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.fields - An array of field\n * accessors for the tuple fields that should be flattened.\n * @param {Array<string>} [params.as] - Output field names for flattened\n * array fields. Any unspecified fields will use the field name provided\n * by the fields accessors.\n */\nexport default function Flatten(params) {\n Transform.call(this, [], params);\n}\n\nFlatten.Definition = {\n \"type\": \"Flatten\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true }\n ]\n};\n\nvar prototype = inherits(Flatten, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n as = fieldNames(fields, _.as || []),\n m = as.length;\n\n // remove any previous results\n out.rem = this.value;\n\n // generate flattened tuples\n pulse.visit(pulse.SOURCE, function(t) {\n var arrays = fields.map(function(f) { return f(t); }),\n maxlen = arrays.reduce(function(l, a) { return Math.max(l, a.length); }, 0),\n i = 0, j, d, v;\n\n for (; i<maxlen; ++i) {\n d = derive(t);\n for (j=0; j<m; ++j) {\n d[as[j]] = (v = arrays[j][i]) == null ? null : v;\n }\n out.add.push(d);\n }\n });\n\n this.value = out.source = out.add;\n return out.modifies(as);\n};\n","import {derive, Transform} from 'vega-dataflow';\nimport {inherits, accessorName} from 'vega-util';\n\n/**\n * Folds one more tuple fields into multiple tuples in which the field\n * name and values are available under new 'key' and 'value' fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.fields - An array of field accessors\n * for the tuple fields that should be folded.\n * @param {Array<string>} [params.as] - Output field names for folded key\n * and value fields, defaults to ['key', 'value'].\n */\nexport default function Fold(params) {\n Transform.call(this, [], params);\n}\n\nFold.Definition = {\n \"type\": \"Fold\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"key\", \"value\"] }\n ]\n};\n\nvar prototype = inherits(Fold, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n fnames = fields.map(accessorName),\n as = _.as || ['key', 'value'],\n k = as[0],\n v = as[1],\n n = fields.length;\n\n out.rem = this.value;\n\n pulse.visit(pulse.SOURCE, function(t) {\n for (var i=0, d; i<n; ++i) {\n d = derive(t);\n d[k] = fnames[i];\n d[v] = fields[i](t);\n out.add.push(d);\n }\n });\n\n this.value = out.source = out.add;\n return out.modifies(as);\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Invokes a function for each data tuple and saves the results as a new field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The formula function to invoke for each tuple.\n * @param {string} params.as - The field name under which to save the result.\n * @param {boolean} [params.initonly=false] - If true, the formula is applied to\n * added tuples only, and does not update in response to modifications.\n */\nexport default function Formula(params) {\n Transform.call(this, null, params);\n}\n\nFormula.Definition = {\n \"type\": \"Formula\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"expr\", \"type\": \"expr\", \"required\": true },\n { \"name\": \"as\", \"type\": \"string\", \"required\": true },\n { \"name\": \"initonly\", \"type\": \"boolean\" }\n ]\n};\n\nvar prototype = inherits(Formula, Transform);\n\nprototype.transform = function(_, pulse) {\n var func = _.expr,\n as = _.as,\n mod = _.modified(),\n flag = _.initonly ? pulse.ADD\n : mod ? pulse.SOURCE\n : pulse.modified(func.fields) ? pulse.ADD_MOD\n : pulse.ADD;\n\n function set(t) {\n t[as] = func(t, _);\n }\n\n if (mod) {\n // parameters updated, need to reflow\n pulse = pulse.materialize().reflow(true);\n }\n\n if (!_.initonly) {\n pulse.modifies(as);\n }\n\n return pulse.visit(flag, set);\n};\n","import {ingest, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Generates data tuples using a provided generator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Parameters): object} params.generator - A tuple generator\n * function. This function is given the operator parameters as input.\n * Changes to any additional parameters will not trigger re-calculation\n * of previously generated tuples. Only future tuples are affected.\n * @param {number} params.size - The number of tuples to produce.\n */\nexport default function Generate(params) {\n Transform.call(this, [], params);\n}\n\nvar prototype = inherits(Generate, Transform);\n\nprototype.transform = function(_, pulse) {\n var data = this.value,\n out = pulse.fork(pulse.ALL),\n num = _.size - data.length,\n gen = _.generator,\n add, rem, t;\n\n if (num > 0) {\n // need more tuples, generate and add\n for (add=[]; --num >= 0;) {\n add.push(t = ingest(gen(_)));\n data.push(t);\n }\n out.add = out.add.length\n ? out.materialize(out.ADD).add.concat(add)\n : add;\n } else {\n // need fewer tuples, remove\n rem = data.slice(0, -num);\n out.rem = out.rem.length\n ? out.materialize(out.REM).rem.concat(rem)\n : rem;\n data = data.slice(-num);\n }\n\n out.source = this.value = data;\n return out;\n};\n","import {ingest, Transform} from 'vega-dataflow';\nimport {accessorName, error, inherits} from 'vega-util';\nimport {mean, min, max, median} from 'd3-array';\n\nvar Methods = {\n value: 'value',\n median: median,\n mean: mean,\n min: min,\n max: max\n};\n\nvar Empty = [];\n\n/**\n * Impute missing values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to impute.\n * @param {Array<function(object): *>} [params.groupby] - An array of\n * accessors to determine series within which to perform imputation.\n * @param {function(object): *} params.key - An accessor for a key value.\n * Each key value should be unique within a group. New tuples will be\n * imputed for any key values that are not found within a group.\n * @param {Array<*>} [params.keyvals] - Optional array of required key\n * values. New tuples will be imputed for any key values that are not\n * found within a group. In addition, these values will be automatically\n * augmented with the key values observed in the input data.\n * @param {string} [method='value'] - The imputation method to use. One of\n * 'value', 'mean', 'median', 'max', 'min'.\n * @param {*} [value=0] - The constant value to use for imputation\n * when using method 'value'.\n */\nexport default function Impute(params) {\n Transform.call(this, [], params);\n}\n\nImpute.Definition = {\n \"type\": \"Impute\",\n \"metadata\": {\"changes\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"key\", \"type\": \"field\", \"required\": true },\n { \"name\": \"keyvals\", \"array\": true },\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"method\", \"type\": \"enum\", \"default\": \"value\",\n \"values\": [\"value\", \"mean\", \"median\", \"max\", \"min\"] },\n { \"name\": \"value\", \"default\": 0 }\n ]\n};\n\nvar prototype = inherits(Impute, Transform);\n\nfunction getValue(_) {\n var m = _.method || Methods.value, v;\n\n if (Methods[m] == null) {\n error('Unrecognized imputation method: ' + m);\n } else if (m === Methods.value) {\n v = _.value !== undefined ? _.value : 0;\n return function() { return v; };\n } else {\n return Methods[m];\n }\n}\n\nfunction getField(_) {\n var f = _.field;\n return function(t) { return t ? f(t) : NaN; };\n}\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n impute = getValue(_),\n field = getField(_),\n fName = accessorName(_.field),\n kName = accessorName(_.key),\n gNames = (_.groupby || []).map(accessorName),\n groups = partition(pulse.source, _.groupby, _.key, _.keyvals),\n curr = [],\n prev = this.value,\n m = groups.domain.length,\n group, value, gVals, kVal, g, i, j, l, n, t;\n\n for (g=0, l=groups.length; g<l; ++g) {\n group = groups[g];\n gVals = group.values;\n value = NaN;\n\n // add tuples for missing values\n for (j=0; j<m; ++j) {\n if (group[j] != null) continue;\n kVal = groups.domain[j];\n\n t = {_impute: true};\n for (i=0, n=gVals.length; i<n; ++i) t[gNames[i]] = gVals[i];\n t[kName] = kVal;\n t[fName] = isNaN(value) ? (value = impute(group, field)) : value;\n\n curr.push(ingest(t));\n }\n }\n\n // update pulse with imputed tuples\n if (curr.length) out.add = out.materialize(out.ADD).add.concat(curr);\n if (prev.length) out.rem = out.materialize(out.REM).rem.concat(prev);\n this.value = curr;\n\n return out;\n};\n\nfunction partition(data, groupby, key, keyvals) {\n var get = function(f) { return f(t); },\n groups = [],\n domain = keyvals ? keyvals.slice() : [],\n kMap = {},\n gMap = {}, gVals, gKey,\n group, i, j, k, n, t;\n\n domain.forEach(function(k, i) { kMap[k] = i + 1; });\n\n for (i=0, n=data.length; i<n; ++i) {\n t = data[i];\n k = key(t);\n j = kMap[k] || (kMap[k] = domain.push(k));\n\n gKey = (gVals = groupby ? groupby.map(get) : Empty) + '';\n if (!(group = gMap[gKey])) {\n group = (gMap[gKey] = []);\n groups.push(group);\n group.values = gVals;\n }\n group[j-1] = t;\n }\n\n groups.domain = domain;\n return groups;\n}\n","export default function mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","import Aggregate from './Aggregate';\nimport {ValidAggregateOps} from './util/AggregateOps';\nimport {extend, inherits} from 'vega-util';\n\n/**\n * Extend input tuples with aggregate values.\n * Calcuates aggregate values and joins them with the input stream.\n * @constructor\n */\nexport default function JoinAggregate(params) {\n Aggregate.call(this, params);\n}\n\nJoinAggregate.Definition = {\n \"type\": \"JoinAggregate\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"fields\", \"type\": \"field\", \"null\": true, \"array\": true },\n { \"name\": \"ops\", \"type\": \"enum\", \"array\": true, \"values\": ValidAggregateOps },\n { \"name\": \"as\", \"type\": \"string\", \"null\": true, \"array\": true },\n { \"name\": \"key\", \"type\": \"field\" }\n ]\n};\n\nvar prototype = inherits(JoinAggregate, Aggregate);\n\nprototype.transform = function(_, pulse) {\n var aggr = this,\n mod = _.modified(),\n cells;\n\n // process all input tuples to calculate aggregates\n if (aggr.value && (mod || pulse.modified(aggr._inputs))) {\n cells = aggr.value = mod ? aggr.init(_) : {};\n pulse.visit(pulse.SOURCE, function(t) { aggr.add(t); });\n } else {\n cells = aggr.value = aggr.value || this.init(_);\n pulse.visit(pulse.REM, function(t) { aggr.rem(t); });\n pulse.visit(pulse.ADD, function(t) { aggr.add(t); });\n }\n\n // update aggregation cells\n aggr.changes();\n\n // write aggregate values to input tuples\n pulse.visit(pulse.SOURCE, function(t) {\n extend(t, cells[aggr.cellkey(t)].tuple);\n });\n\n return pulse.reflow(mod).modifies(this._outputs);\n};\n\nprototype.changes = function() {\n var adds = this._adds,\n mods = this._mods,\n i, n;\n\n for (i=0, n=this._alen; i<n; ++i) {\n this.celltuple(adds[i]);\n adds[i] = null; // for garbage collection\n }\n\n for (i=0, n=this._mlen; i<n; ++i) {\n this.celltuple(mods[i]);\n mods[i] = null; // for garbage collection\n }\n\n this._alen = this._mlen = 0; // reset list of active cells\n};\n","import {randomKDE} from 'vega-statistics';\nimport {ingest, Transform} from 'vega-dataflow';\nimport {sampleCurve} from 'vega-statistics';\nimport {accessorName, error, inherits} from 'vega-util';\nimport {extent} from 'd3-array';\n\n/**\n * Compute kernel density estimates (KDE) for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n * to groupby.\n * @param {function(object): *} params.field - An accessor for the data field\n * to estimate.\n * @param {number} [params.bandwidth=0] - The KDE kernal bandwidth.\n * If zero of unspecified, the bandwidth is automatically determined.\n * @param {string} [params.cumulative=false] - A boolean flag indicating if a\n * density (false) or cumulative distribution (true) should be generated.\n * @param {Array<number>} [params.extent] - The domain extent over which to\n * plot the density. If unspecified, the [min, max] data extent is used.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n * for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n * for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n * plotting the density. If specified, overrides both minsteps and maxsteps\n * to set an exact number of uniform samples. Useful in conjunction with\n * a fixed extent to ensure consistent sample points for stacked densities.\n */\nexport default function KDE(params) {\n Transform.call(this, null, params);\n}\n\nKDE.Definition = {\n \"type\": \"KDE\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"cumulative\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"counts\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"bandwidth\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"extent\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"steps\", \"type\": \"number\" },\n { \"name\": \"minsteps\", \"type\": \"number\", \"default\": 25 },\n { \"name\": \"maxsteps\", \"type\": \"number\", \"default\": 200 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"default\": [\"value\", \"density\"] }\n ]\n};\n\nvar prototype = inherits(KDE, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n if (!this.value || pulse.changed() || _.modified()) {\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby, _.field),\n names = (_.groupby || []).map(accessorName),\n bandwidth = _.bandwidth,\n method = _.cumulative ? 'cdf' : 'pdf',\n minsteps = _.steps || _.minsteps || 25,\n maxsteps = _.steps || _.maxsteps || 200,\n as = _.as || ['value', 'density'],\n values = [];\n\n if (method !== 'pdf' && method !== 'cdf') {\n error('Invalid density method: ' + method);\n }\n\n groups.forEach(g => {\n const density = randomKDE(g, bandwidth)[method],\n scale = _.counts ? g.length : 1,\n domain = _.extent || extent(g);\n\n sampleCurve(density, domain, minsteps, maxsteps).forEach(v => {\n const t = {};\n for (let i=0; i<names.length; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = v[0];\n t[as[1]] = v[1] * scale;\n values.push(ingest(t));\n });\n });\n\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n\n return out;\n};\n\nfunction partition(data, groupby, field) {\n var groups = [],\n get = function(f) { return f(t); },\n map, i, n, t, k, g;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data.map(field));\n } else {\n for (map={}, i=0, n=data.length; i<n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = (g = []);\n g.dims = k;\n groups.push(g);\n }\n g.push(field(t));\n }\n }\n\n return groups;\n}\n","import {Operator} from 'vega-dataflow';\nimport {inherits, key} from 'vega-util';\n\n/**\n * Generates a key function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<string>} params.fields - The field name(s) for the key function.\n * @param {boolean} params.flat - A boolean flag indicating if the field names\n * should be treated as flat property names, side-stepping nested field\n * lookups normally indicated by dot or bracket notation.\n */\nexport default function Key(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(Key, Operator);\n\nfunction update(_) {\n return (this.value && !_.modified()) ? this.value : key(_.fields, _.flat);\n}\n","import {ingest, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Load and parse data from an external source. Marshalls parameter\n * values and then invokes the Dataflow request method.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.url - The URL to load from.\n * @param {object} params.format - The data format options.\n */\nexport default function Load(params) {\n Transform.call(this, [], params);\n}\n\nvar prototype = inherits(Load, Transform);\n\nprototype.transform = function(_, pulse) {\n const df = pulse.dataflow;\n\n if (_.values) {\n // parse and ingest values\n return output(this, pulse, df.parse(_.values, _.format));\n } else {\n // return promise for async loading\n return df.request(_.url, _.format)\n .then(res => output(this, pulse, res.data || []));\n }\n};\n\nfunction output(op, pulse, data) {\n data.forEach(ingest);\n const out = pulse.fork(pulse.NO_FIELDS & pulse.NO_SOURCE);\n out.rem = op.value;\n op.value = out.add = out.source = data;\n return out;\n}\n","import {Transform} from 'vega-dataflow';\nimport {accessorName, error, inherits} from 'vega-util';\n\n/**\n * Extend tuples by joining them with values from a lookup table.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Map} params.index - The lookup table map.\n * @param {Array<function(object): *} params.fields - The fields to lookup.\n * @param {Array<string>} params.as - Output field names for each lookup value.\n * @param {*} [params.default] - A default value to use if lookup fails.\n */\nexport default function Lookup(params) {\n Transform.call(this, {}, params);\n}\n\nLookup.Definition = {\n \"type\": \"Lookup\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"index\", \"type\": \"index\", \"params\": [\n {\"name\": \"from\", \"type\": \"data\", \"required\": true },\n {\"name\": \"key\", \"type\": \"field\", \"required\": true }\n ] },\n { \"name\": \"values\", \"type\": \"field\", \"array\": true },\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true },\n { \"name\": \"default\", \"default\": null }\n ]\n};\n\nvar prototype = inherits(Lookup, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse,\n as = _.as,\n keys = _.fields,\n index = _.index,\n values = _.values,\n defaultValue = _.default==null ? null : _.default,\n reset = _.modified(),\n flag = reset ? pulse.SOURCE : pulse.ADD,\n n = keys.length,\n set, m, mods;\n\n if (values) {\n m = values.length;\n\n if (n > 1 && !as) {\n error('Multi-field lookup requires explicit \"as\" parameter.');\n }\n if (as && as.length !== n * m) {\n error('The \"as\" parameter has too few output field names.');\n }\n as = as || values.map(accessorName);\n\n set = function(t) {\n for (var i=0, k=0, j, v; i<n; ++i) {\n v = index.get(keys[i](t));\n if (v == null) for (j=0; j<m; ++j, ++k) t[as[k]] = defaultValue;\n else for (j=0; j<m; ++j, ++k) t[as[k]] = values[j](v);\n }\n };\n } else {\n if (!as) {\n error('Missing output field names.');\n }\n\n set = function(t) {\n for (var i=0, v; i<n; ++i) {\n v = index.get(keys[i](t));\n t[as[i]] = v==null ? defaultValue : v;\n }\n };\n }\n\n if (reset) {\n out = pulse.reflow(true);\n } else {\n mods = keys.some(function(k) { return pulse.modified(k.fields); });\n flag |= (mods ? pulse.MOD : 0);\n }\n pulse.visit(flag, set);\n\n return out.modifies(as);\n};\n","import {Operator} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Computes global min/max extents over a collection of extents.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<Array<number>>} params.extents - The input extents.\n */\nexport default function MultiExtent(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(MultiExtent, Operator);\n\nfunction update(_) {\n if (this.value && !_.modified()) {\n return this.value;\n }\n\n var min = +Infinity,\n max = -Infinity,\n ext = _.extents,\n i, n, e;\n\n for (i=0, n=ext.length; i<n; ++i) {\n e = ext[i];\n if (e[0] < min) min = e[0];\n if (e[1] > max) max = e[1];\n }\n return [min, max];\n}\n","import {Operator} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Merge a collection of value arrays.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<Array<*>>} params.values - The input value arrrays.\n */\nexport default function MultiValues(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(MultiValues, Operator);\n\nfunction update(_) {\n return (this.value && !_.modified())\n ? this.value\n : _.values.reduce(function(data, _) { return data.concat(_); }, []);\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Operator whose value is simply its parameter hash. This operator is\n * useful for enabling reactive updates to values of nested objects.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function Params(params) {\n Transform.call(this, null, params);\n}\n\ninherits(Params, Transform);\n\nParams.prototype.transform = function(_, pulse) {\n this.modified(_.modified());\n this.value = _;\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS); // do not pass tuples\n};\n","import Aggregate from './Aggregate';\nimport {ValidAggregateOps} from './util/AggregateOps';\nimport {accessor, accessorFields, inherits} from 'vega-util';\n\n/**\n * Aggregate and pivot selected field values to become new fields.\n * This operator is useful to construction cross-tabulations.\n * @constructor\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n * to groupby. These fields act just like groupby fields of an Aggregate transform.\n * @param {function(object): *} params.field - The field to pivot on. The unique\n * values of this field become new field names in the output stream.\n * @param {function(object): *} params.value - The field to populate pivoted fields.\n * The aggregate values of this field become the values of the new pivoted fields.\n * @param {string} [params.op] - The aggregation operation for the value field,\n * applied per cell in the output stream. The default is \"sum\".\n * @param {number} [params.limit] - An optional parameter indicating the maximum\n * number of pivoted fields to generate. The pivoted field names are sorted in\n * ascending order prior to enforcing the limit.\n */\nexport default function Pivot(params) {\n Aggregate.call(this, params);\n}\n\nPivot.Definition = {\n \"type\": \"Pivot\",\n \"metadata\": {\"generates\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"value\", \"type\": \"field\", \"required\": true },\n { \"name\": \"op\", \"type\": \"enum\", \"values\": ValidAggregateOps, \"default\": \"sum\" },\n { \"name\": \"limit\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"key\", \"type\": \"field\" }\n ]\n};\n\nvar prototype = inherits(Pivot, Aggregate);\n\nprototype._transform = prototype.transform;\n\nprototype.transform = function(_, pulse) {\n return this._transform(aggregateParams(_, pulse), pulse);\n};\n\n// Shoehorn a pivot transform into an aggregate transform!\n// First collect all unique pivot field values.\n// Then generate aggregate fields for each output pivot field.\nfunction aggregateParams(_, pulse) {\n var key = _.field,\n value = _.value,\n op = (_.op === 'count' ? '__count__' : _.op) || 'sum',\n fields = accessorFields(key).concat(accessorFields(value)),\n keys = pivotKeys(key, _.limit || 0, pulse);\n\n return {\n key: _.key,\n groupby: _.groupby,\n ops: keys.map(function() { return op; }),\n fields: keys.map(function(k) { return get(k, key, value, fields); }),\n as: keys.map(function(k) { return k + ''; }),\n modified: _.modified.bind(_)\n };\n}\n\n// Generate aggregate field accessor.\n// Output NaN for non-existent values; aggregator will ignore!\nfunction get(k, key, value, fields) {\n return accessor(\n function(d) { return key(d) === k ? value(d) : NaN; },\n fields,\n k + ''\n );\n}\n\n// Collect (and optionally limit) all unique pivot values.\nfunction pivotKeys(key, limit, pulse) {\n var map = {},\n list = [];\n\n pulse.visit(pulse.SOURCE, function(t) {\n var k = key(t);\n if (!map[k]) {\n map[k] = 1;\n list.push(k);\n }\n });\n\n // TODO? Move this comparator to vega-util?\n list.sort(function(u, v) {\n return (u<v||u==null) && v!=null ? -1\n : (u>v||v==null) && u!=null ? 1\n : ((v=v instanceof Date?+v:v),(u=u instanceof Date?+u:u))!==u && v===v ? -1\n : v!==v && u===u ? 1 : 0;\n });\n\n return limit ? list.slice(0, limit) : list;\n}\n","import Facet from './Facet';\nimport {ingest, tupleid} from 'vega-dataflow';\nimport {accessorFields, error, inherits} from 'vega-util';\n\n/**\n * Partitions pre-faceted data into tuple subflows.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n * that generates a subflow of operators and returns its root operator.\n * @param {function(object): Array<object>} params.field - The field\n * accessor for an array of subflow tuple objects.\n */\nexport default function PreFacet(params) {\n Facet.call(this, params);\n}\n\nvar prototype = inherits(PreFacet, Facet);\n\nprototype.transform = function(_, pulse) {\n var self = this,\n flow = _.subflow,\n field = _.field;\n\n if (_.modified('field') || field && pulse.modified(accessorFields(field))) {\n error('PreFacet does not support field modification.');\n }\n\n this._targets.active = 0; // reset list of active subflows\n\n pulse.visit(pulse.MOD, function(t) {\n var sf = self.subflow(tupleid(t), flow, pulse, t);\n field ? field(t).forEach(function(_) { sf.mod(_); }) : sf.mod(t);\n });\n\n pulse.visit(pulse.ADD, function(t) {\n var sf = self.subflow(tupleid(t), flow, pulse, t);\n field ? field(t).forEach(function(_) { sf.add(ingest(_)); }) : sf.add(t);\n });\n\n pulse.visit(pulse.REM, function(t) {\n var sf = self.subflow(tupleid(t), flow, pulse, t);\n field ? field(t).forEach(function(_) { sf.rem(_); }) : sf.rem(t);\n });\n\n return pulse;\n};\n","import {fieldNames} from './util/util';\nimport {ingest, rederive, Transform, tupleid} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Performs a relational projection, copying selected fields from source\n * tuples to a new set of derived tuples.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *} params.fields - The fields to project,\n * as an array of field accessors. If unspecified, all fields will be\n * copied with names unchanged.\n * @param {Array<string>} [params.as] - Output field names for each projected\n * field. Any unspecified fields will use the field name provided by\n * the field accessor.\n */\nexport default function Project(params) {\n Transform.call(this, null, params);\n}\n\nProject.Definition = {\n \"type\": \"Project\",\n \"metadata\": {\"generates\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true },\n { \"name\": \"as\", \"type\": \"string\", \"null\": true, \"array\": true },\n ]\n};\n\nvar prototype = inherits(Project, Transform);\n\nprototype.transform = function(_, pulse) {\n var fields = _.fields,\n as = fieldNames(_.fields, _.as || []),\n derive = fields\n ? function(s, t) { return project(s, t, fields, as); }\n : rederive,\n out, lut;\n\n if (this.value) {\n lut = this.value;\n } else {\n pulse = pulse.addAll();\n lut = this.value = {};\n }\n\n out = pulse.fork(pulse.NO_SOURCE);\n\n pulse.visit(pulse.REM, function(t) {\n var id = tupleid(t);\n out.rem.push(lut[id]);\n lut[id] = null;\n });\n\n pulse.visit(pulse.ADD, function(t) {\n var dt = derive(t, ingest({}));\n lut[tupleid(t)] = dt;\n out.add.push(dt);\n });\n\n pulse.visit(pulse.MOD, function(t) {\n out.mod.push(derive(t, lut[tupleid(t)]));\n });\n\n return out;\n};\n\nfunction project(s, t, fields, as) {\n for (var i=0, n=fields.length; i<n; ++i) {\n t[as[i]] = fields[i](s);\n }\n return t;\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Proxy the value of another operator as a pure signal value.\n * Ensures no tuples are propagated.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {*} params.value - The value to proxy, becomes the value of this operator.\n */\nexport default function Proxy(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Proxy, Transform);\n\nprototype.transform = function(_, pulse) {\n this.value = _.value;\n return _.modified('value')\n ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS)\n : pulse.StopPropagation;\n};\n","import {derive, rederive, Transform, tupleid} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Relays a data stream between data processing pipelines.\n * If the derive parameter is set, this transform will create derived\n * copies of observed tuples. This provides derived data streams in which\n * modifications to the tuples do not pollute an upstream data source.\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.derive=false] - Boolean flag indicating if\n * the transform should make derived copies of incoming tuples.\n * @constructor\n */\nexport default function Relay(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Relay, Transform);\n\nprototype.transform = function(_, pulse) {\n var out, lut;\n\n if (this.value) {\n lut = this.value;\n } else {\n out = pulse = pulse.addAll();\n lut = this.value = {};\n }\n\n if (_.derive) {\n out = pulse.fork(pulse.NO_SOURCE);\n\n pulse.visit(pulse.REM, function(t) {\n var id = tupleid(t);\n out.rem.push(lut[id]);\n lut[id] = null;\n });\n\n pulse.visit(pulse.ADD, function(t) {\n var dt = derive(t);\n lut[tupleid(t)] = dt;\n out.add.push(dt);\n });\n\n pulse.visit(pulse.MOD, function(t) {\n out.mod.push(rederive(t, lut[tupleid(t)]));\n });\n }\n\n return out;\n};\n","import {Transform, tupleid} from 'vega-dataflow';\nimport {random} from 'vega-statistics';\nimport {inherits} from 'vega-util';\n\n/**\n * Samples tuples passing through this operator.\n * Uses reservoir sampling to maintain a representative sample.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.size=1000] - The maximum number of samples.\n */\nexport default function Sample(params) {\n Transform.call(this, [], params);\n this.count = 0;\n}\n\nSample.Definition = {\n \"type\": \"Sample\",\n \"metadata\": {},\n \"params\": [\n { \"name\": \"size\", \"type\": \"number\", \"default\": 1000 }\n ]\n};\n\nvar prototype = inherits(Sample, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n mod = _.modified('size'),\n num = _.size,\n res = this.value,\n cnt = this.count,\n cap = 0,\n map = res.reduce(function(m, t) {\n m[tupleid(t)] = 1;\n return m;\n }, {});\n\n // sample reservoir update function\n function update(t) {\n var p, idx;\n\n if (res.length < num) {\n res.push(t);\n } else {\n idx = ~~((cnt + 1) * random());\n if (idx < res.length && idx >= cap) {\n p = res[idx];\n if (map[tupleid(p)]) out.rem.push(p); // eviction\n res[idx] = t;\n }\n }\n ++cnt;\n }\n\n if (pulse.rem.length) {\n // find all tuples that should be removed, add to output\n pulse.visit(pulse.REM, function(t) {\n var id = tupleid(t);\n if (map[id]) {\n map[id] = -1;\n out.rem.push(t);\n }\n --cnt;\n });\n\n // filter removed tuples out of the sample reservoir\n res = res.filter(function(t) { return map[tupleid(t)] !== -1; });\n }\n\n if ((pulse.rem.length || mod) && res.length < num && pulse.source) {\n // replenish sample if backing data source is available\n cap = cnt = res.length;\n pulse.visit(pulse.SOURCE, function(t) {\n // update, but skip previously sampled tuples\n if (!map[tupleid(t)]) update(t);\n });\n cap = -1;\n }\n\n if (mod && res.length > num) {\n for (var i=0, n=res.length-num; i<n; ++i) {\n map[tupleid(res[i])] = -1;\n out.rem.push(res[i]);\n }\n res = res.slice(n);\n }\n\n if (pulse.mod.length) {\n // propagate modified tuples in the sample reservoir\n pulse.visit(pulse.MOD, function(t) {\n if (map[tupleid(t)]) out.mod.push(t);\n });\n }\n\n if (pulse.add.length) {\n // update sample reservoir\n pulse.visit(pulse.ADD, update);\n }\n\n if (pulse.add.length || cap < 0) {\n // output newly added tuples\n out.add = res.filter(function(t) { return !map[tupleid(t)]; });\n }\n\n this.count = cnt;\n this.value = out.source = res;\n return out;\n};\n","import {ingest, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\nimport {range} from 'd3-array';\n\n/**\n * Generates data tuples for a specified sequence range of numbers.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} params.start - The first number in the sequence.\n * @param {number} params.stop - The last number (exclusive) in the sequence.\n * @param {number} [params.step=1] - The step size between numbers in the sequence.\n */\nexport default function Sequence(params) {\n Transform.call(this, null, params);\n}\n\nSequence.Definition = {\n \"type\": \"Sequence\",\n \"metadata\": {\"changes\": true},\n \"params\": [\n { \"name\": \"start\", \"type\": \"number\", \"required\": true },\n { \"name\": \"stop\", \"type\": \"number\", \"required\": true },\n { \"name\": \"step\", \"type\": \"number\", \"default\": 1 },\n { \"name\": \"as\", \"type\": \"string\", \"default\": \"data\" }\n ]\n};\n\nvar prototype = inherits(Sequence, Transform);\n\nprototype.transform = function(_, pulse) {\n if (this.value && !_.modified()) return;\n\n var out = pulse.materialize().fork(pulse.MOD),\n as = _.as || 'data';\n\n out.rem = this.value ? pulse.rem.concat(this.value) : pulse.rem;\n\n this.value = range(_.start, _.stop, _.step || 1).map(function(v) {\n var t = {};\n t[as] = v;\n return ingest(t);\n });\n\n out.add = pulse.add.concat(this.value);\n\n return out;\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Propagates a new pulse without any tuples so long as the input\n * pulse contains some added, removed or modified tuples.\n * @param {object} params - The parameters for this operator.\n * @constructor\n */\nexport default function Sieve(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\nvar prototype = inherits(Sieve, Transform);\n\nprototype.transform = function(_, pulse) {\n this.value = pulse.source;\n return pulse.changed()\n ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS)\n : pulse.StopPropagation;\n};\n","import {Transform} from 'vega-dataflow';\nimport {fastmap, inherits} from 'vega-util';\n\n/**\n * An index that maps from unique, string-coerced, field values to tuples.\n * Assumes that the field serves as a unique key with no duplicate values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field accessor to index.\n */\nexport default function TupleIndex(params) {\n Transform.call(this, fastmap(), params);\n}\n\nvar prototype = inherits(TupleIndex, Transform);\n\nprototype.transform = function(_, pulse) {\n var df = pulse.dataflow,\n field = _.field,\n index = this.value,\n mod = true;\n\n function set(t) { index.set(field(t), t); }\n\n if (_.modified('field') || pulse.modified(field.fields)) {\n index.clear();\n pulse.visit(pulse.SOURCE, set);\n } else if (pulse.changed()) {\n pulse.visit(pulse.REM, function(t) { index.delete(field(t)); });\n pulse.visit(pulse.ADD, set);\n } else {\n mod = false;\n }\n\n this.modified(mod);\n if (index.empty > df.cleanThreshold) df.runAfter(index.clean);\n return pulse.fork();\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Extracts an array of values. Assumes the source data has already been\n * reduced as needed (e.g., by an upstream Aggregate transform).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The domain field to extract.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for sorting the values. The comparator will be\n * applied to backing tuples prior to value extraction.\n */\nexport default function Values(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Values, Transform);\n\nprototype.transform = function(_, pulse) {\n var run = !this.value\n || _.modified('field')\n || _.modified('sort')\n || pulse.changed()\n || (_.sort && pulse.modified(_.sort.fields));\n\n if (run) {\n this.value = (_.sort\n ? pulse.source.slice().sort(_.sort)\n : pulse.source).map(_.field);\n }\n};\n","import {error, zero} from 'vega-util';\n\nexport function WindowOp(op, field, param, as) {\n let fn = WindowOps[op](field, param);\n return {\n init: fn.init || zero,\n update: function(w, t) { t[as] = fn.next(w); }\n };\n}\n\nexport const WindowOps = {\n row_number: function() {\n return {\n next: w => w.index + 1\n };\n },\n rank: function() {\n let rank;\n return {\n init: () => rank = 1,\n next: w => {\n let i = w.index,\n data = w.data;\n return (i && w.compare(data[i - 1], data[i])) ? (rank = i + 1) : rank;\n }\n };\n },\n dense_rank: function() {\n let drank;\n return {\n init: () => drank = 1,\n next: w => {\n let i = w.index,\n d = w.data;\n return (i && w.compare(d[i - 1], d[i])) ? ++drank : drank;\n }\n };\n },\n percent_rank: function() {\n let rank = WindowOps.rank(),\n next = rank.next;\n return {\n init: rank.init,\n next: w => (next(w) - 1) / (w.data.length - 1)\n };\n },\n cume_dist: function() {\n let cume;\n return {\n init: () => cume = 0,\n next: w => {\n let i = w.index,\n d = w.data,\n c = w.compare;\n if (cume < i) {\n while (i + 1 < d.length && !c(d[i], d[i + 1])) ++i;\n cume = i;\n }\n return (1 + cume) / d.length;\n }\n };\n },\n ntile: function(field, num) {\n num = +num;\n if (!(num > 0)) error('ntile num must be greater than zero.');\n let cume = WindowOps.cume_dist(),\n next = cume.next;\n return {\n init: cume.init,\n next: w => Math.ceil(num * next(w))\n };\n },\n\n lag: function(field, offset) {\n offset = +offset || 1;\n return {\n next: w => {\n let i = w.index - offset;\n return i >= 0 ? field(w.data[i]) : null;\n }\n };\n },\n lead: function(field, offset) {\n offset = +offset || 1;\n return {\n next: w => {\n let i = w.index + offset,\n d = w.data;\n return i < d.length ? field(d[i]) : null;\n }\n };\n },\n\n first_value: function(field) {\n return {\n next: w => field(w.data[w.i0])\n };\n },\n last_value: function(field) {\n return {\n next: w => field(w.data[w.i1 - 1])\n }\n },\n nth_value: function(field, nth) {\n nth = +nth;\n if (!(nth > 0)) error('nth_value nth must be greater than zero.');\n return {\n next: w => {\n let i = w.i0 + (nth - 1);\n return i < w.i1 ? field(w.data[i]) : null;\n }\n }\n },\n\n prev_value: function(field) {\n let prev = null;\n return {\n next: w => {\n let v = field(w.data[w.index]);\n return v != null ? (prev = v) : prev;\n }\n }\n },\n next_value: function(field) {\n let v = null,\n i = -1;\n return {\n next: w => {\n let d = w.data;\n return w.index <= i ? v\n : (i = find(field, d, w.index)) < 0\n ? (i = d.length, v = null)\n : (v = field(d[i]));\n }\n };\n },\n\n};\n\nfunction find(field, data, index) {\n for (let n = data.length; index < n; ++index) {\n let v = field(data[index]);\n if (v != null) return index;\n }\n return -1;\n}\n\nexport var ValidWindowOps = Object.keys(WindowOps);\n","import {createMeasure, compileMeasures, measureName} from './AggregateOps';\nimport TupleStore from './TupleStore';\nimport {WindowOp, WindowOps} from './WindowOps';\nimport {accessorFields, accessorName, array, error} from 'vega-util';\n\nexport default function WindowState(_) {\n let self = this,\n ops = array(_.ops),\n fields = array(_.fields),\n params = array(_.params),\n as = array(_.as),\n outputs = self.outputs = [],\n windows = self.windows = [],\n inputs = {},\n map = {},\n countOnly = true,\n counts = [],\n measures = [];\n\n function visitInputs(f) {\n array(accessorFields(f)).forEach(_ => inputs[_] = 1);\n }\n visitInputs(_.sort);\n\n ops.forEach(function(op, i) {\n let field = fields[i],\n mname = accessorName(field),\n name = measureName(op, mname, as[i]);\n\n visitInputs(field);\n outputs.push(name);\n\n // Window operation\n if (WindowOps.hasOwnProperty(op)) {\n windows.push(WindowOp(op, fields[i], params[i], name));\n }\n\n // Aggregate operation\n else {\n if (field == null && op !== 'count') {\n error('Null aggregate field specified.');\n }\n if (op === 'count') {\n counts.push(name);\n return;\n }\n\n countOnly = false;\n let m = map[mname];\n if (!m) {\n m = (map[mname] = []);\n m.field = field;\n measures.push(m);\n }\n m.push(createMeasure(op, name));\n }\n });\n\n if (counts.length || measures.length) {\n self.cell = cell(measures, counts, countOnly);\n }\n\n self.inputs = Object.keys(inputs);\n}\n\nconst prototype = WindowState.prototype;\n\nprototype.init = function() {\n this.windows.forEach(_ => _.init());\n if (this.cell) this.cell.init();\n};\n\nprototype.update = function(w, t) {\n let self = this,\n cell = self.cell,\n wind = self.windows,\n data = w.data,\n m = wind && wind.length,\n j;\n\n if (cell) {\n for (j=w.p0; j<w.i0; ++j) cell.rem(data[j]);\n for (j=w.p1; j<w.i1; ++j) cell.add(data[j]);\n cell.set(t);\n }\n for (j=0; j<m; ++j) wind[j].update(w, t);\n};\n\nfunction cell(measures, counts, countOnly) {\n measures = measures.map(m => compileMeasures(m, m.field));\n\n let cell = {\n num: 0,\n agg: null,\n store: false,\n count: counts\n };\n\n if (!countOnly) {\n var n = measures.length,\n a = cell.agg = Array(n),\n i = 0;\n for (; i<n; ++i) a[i] = new measures[i](cell);\n }\n\n if (cell.store) {\n var store = cell.data = new TupleStore();\n }\n\n cell.add = function(t) {\n cell.num += 1;\n if (countOnly) return;\n if (store) store.add(t);\n for (let i=0; i<n; ++i) {\n a[i].add(a[i].get(t), t);\n }\n };\n\n cell.rem = function(t) {\n cell.num -= 1;\n if (countOnly) return;\n if (store) store.rem(t);\n for (let i=0; i<n; ++i) {\n a[i].rem(a[i].get(t), t);\n }\n };\n\n cell.set = function(t) {\n let i, n;\n\n // consolidate stored values\n if (store) store.values();\n\n // update tuple properties\n for (i=0, n=counts.length; i<n; ++i) t[counts[i]] = cell.num;\n if (!countOnly) for (i=0, n=a.length; i<n; ++i) a[i].set(t);\n };\n\n cell.init = function() {\n cell.num = 0;\n if (store) store.reset();\n for (let i=0; i<n; ++i) a[i].init();\n };\n\n return cell;\n}\n","import {groupkey} from './util/AggregateKeys';\nimport {ValidAggregateOps} from './util/AggregateOps';\nimport SortedList from './util/SortedList';\nimport {ValidWindowOps} from './util/WindowOps';\nimport WindowState from './util/WindowState';\nimport {Transform, tupleid} from 'vega-dataflow';\nimport {constant, inherits} from 'vega-util';\nimport {bisector} from 'd3-array';\n\n/**\n * Perform window calculations and write results to the input stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator function for sorting tuples within a window.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors by which to partition tuples into separate windows.\n * @param {Array<string>} params.ops - An array of strings indicating window operations to perform.\n * @param {Array<function(object): *>} [params.fields] - An array of accessors\n * for data fields to use as inputs to window operations.\n * @param {Array<*>} [params.params] - An array of parameter values for window operations.\n * @param {Array<string>} [params.as] - An array of output field names for window operations.\n * @param {Array<number>} [params.frame] - Window frame definition as two-element array.\n * @param {boolean} [params.ignorePeers=false] - If true, base window frame boundaries on row\n * number alone, ignoring peers with identical sort values. If false (default),\n * the window boundaries will be adjusted to include peer values.\n */\nexport default function Window(params) {\n Transform.call(this, {}, params);\n this._mlen = 0;\n this._mods = [];\n}\n\nWindow.Definition = {\n \"type\": \"Window\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"ops\", \"type\": \"enum\", \"array\": true, \"values\": ValidWindowOps.concat(ValidAggregateOps) },\n { \"name\": \"params\", \"type\": \"number\", \"null\": true, \"array\": true },\n { \"name\": \"fields\", \"type\": \"field\", \"null\": true, \"array\": true },\n { \"name\": \"as\", \"type\": \"string\", \"null\": true, \"array\": true },\n { \"name\": \"frame\", \"type\": \"number\", \"null\": true, \"array\": true, \"length\": 2, \"default\": [null, 0] },\n { \"name\": \"ignorePeers\", \"type\": \"boolean\", \"default\": false }\n ]\n};\n\nvar prototype = inherits(Window, Transform);\n\nprototype.transform = function(_, pulse) {\n var self = this,\n state = self.state,\n mod = _.modified(),\n i, n;\n\n this.stamp = pulse.stamp;\n\n // initialize window state\n if (!state || mod) {\n state = self.state = new WindowState(_);\n }\n\n // retrieve group for a tuple\n var key = groupkey(_.groupby);\n function group(t) { return self.group(key(t)); }\n\n // partition input tuples\n if (mod || pulse.modified(state.inputs)) {\n self.value = {};\n pulse.visit(pulse.SOURCE, function(t) { group(t).add(t); });\n } else {\n pulse.visit(pulse.REM, function(t) { group(t).remove(t); });\n pulse.visit(pulse.ADD, function(t) { group(t).add(t); });\n }\n\n // perform window calculations for each modified partition\n for (i=0, n=self._mlen; i<n; ++i) {\n processPartition(self._mods[i], state, _);\n }\n self._mlen = 0;\n self._mods = [];\n\n // TODO don't reflow everything?\n return pulse.reflow(mod).modifies(state.outputs);\n};\n\nprototype.group = function(key) {\n var self = this,\n group = self.value[key];\n\n if (!group) {\n group = self.value[key] = SortedList(tupleid);\n group.stamp = -1;\n }\n\n if (group.stamp < self.stamp) {\n group.stamp = self.stamp;\n self._mods[self._mlen++] = group;\n }\n\n return group;\n};\n\nfunction processPartition(list, state, _) {\n var sort = _.sort,\n range = sort && !_.ignorePeers,\n frame = _.frame || [null, 0],\n data = list.data(sort),\n n = data.length,\n i = 0,\n b = range ? bisector(sort) : null,\n w = {\n i0: 0, i1: 0, p0: 0, p1: 0, index: 0,\n data: data, compare: sort || constant(-1)\n };\n\n for (state.init(); i<n; ++i) {\n setWindow(w, frame, i, n);\n if (range) adjustRange(w, b);\n state.update(w, data[i]);\n }\n}\n\nfunction setWindow(w, f, i, n) {\n w.p0 = w.i0;\n w.p1 = w.i1;\n w.i0 = f[0] == null ? 0 : Math.max(0, i - Math.abs(f[0]));\n w.i1 = f[1] == null ? n : Math.min(n, i + Math.abs(f[1]) + 1);\n w.index = i;\n}\n\n// if frame type is 'range', adjust window for peer values\nfunction adjustRange(w, bisect) {\n var r0 = w.i0,\n r1 = w.i1 - 1,\n c = w.compare,\n d = w.data,\n n = d.length - 1;\n\n if (r0 > 0 && !c(d[r0], d[r0-1])) w.i0 = bisect.left(d, d[r0]);\n if (r1 < n && !c(d[r1], d[r1+1])) w.i1 = bisect.right(d, d[r1]);\n}\n","export const Top = 'top';\nexport const Left = 'left';\nexport const Right = 'right';\nexport const Bottom = 'bottom';\n\nexport const TopLeft = 'top-left';\nexport const TopRight = 'top-right';\nexport const BottomLeft = 'bottom-left';\nexport const BottomRight = 'bottom-right';\n\nexport const Start = 'start';\nexport const Middle = 'middle';\nexport const End = 'end';\n\nexport const X = 'x';\nexport const Y = 'y';\n\nexport const Group = 'group';\n\nexport const AxisRole = 'axis';\nexport const TitleRole = 'title';\nexport const FrameRole = 'frame';\nexport const ScopeRole = 'scope';\nexport const LegendRole = 'legend';\n\nexport const RowHeader = 'row-header';\nexport const RowFooter = 'row-footer';\nexport const RowTitle = 'row-title';\nexport const ColHeader = 'column-header';\nexport const ColFooter = 'column-footer';\nexport const ColTitle = 'column-title';\n\nexport const Padding = 'padding';\n\nexport const Symbols = 'symbol';\n\nexport const Fit = 'fit';\nexport const FitX = 'fit-x';\nexport const FitY = 'fit-y';\nexport const Pad = 'pad';\nexport const None = 'none';\n\nexport const All = 'all';\nexport const Each = 'each';\nexport const Flush = 'flush';\n\nexport const Column = 'column';\nexport const Row = 'row';\n","export default function Bounds(b) {\n this.clear();\n if (b) this.union(b);\n}\n\nvar prototype = Bounds.prototype;\n\nprototype.clone = function() {\n return new Bounds(this);\n};\n\nprototype.clear = function() {\n this.x1 = +Number.MAX_VALUE;\n this.y1 = +Number.MAX_VALUE;\n this.x2 = -Number.MAX_VALUE;\n this.y2 = -Number.MAX_VALUE;\n return this;\n};\n\nprototype.empty = function() {\n return (\n this.x1 === +Number.MAX_VALUE &&\n this.y1 === +Number.MAX_VALUE &&\n this.x2 === -Number.MAX_VALUE &&\n this.y2 === -Number.MAX_VALUE\n );\n};\n\nprototype.equals = function(b) {\n return (\n this.x1 === b.x1 &&\n this.y1 === b.y1 &&\n this.x2 === b.x2 &&\n this.y2 === b.y2\n );\n};\n\nprototype.set = function(x1, y1, x2, y2) {\n if (x2 < x1) {\n this.x2 = x1;\n this.x1 = x2;\n } else {\n this.x1 = x1;\n this.x2 = x2;\n }\n if (y2 < y1) {\n this.y2 = y1;\n this.y1 = y2;\n } else {\n this.y1 = y1;\n this.y2 = y2;\n }\n return this;\n};\n\nprototype.add = function(x, y) {\n if (x < this.x1) this.x1 = x;\n if (y < this.y1) this.y1 = y;\n if (x > this.x2) this.x2 = x;\n if (y > this.y2) this.y2 = y;\n return this;\n};\n\nprototype.expand = function(d) {\n this.x1 -= d;\n this.y1 -= d;\n this.x2 += d;\n this.y2 += d;\n return this;\n};\n\nprototype.round = function() {\n this.x1 = Math.floor(this.x1);\n this.y1 = Math.floor(this.y1);\n this.x2 = Math.ceil(this.x2);\n this.y2 = Math.ceil(this.y2);\n return this;\n};\n\nprototype.translate = function(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n return this;\n};\n\nprototype.rotate = function(angle, x, y) {\n const p = this.rotatedPoints(angle, x, y);\n return this.clear()\n .add(p[0], p[1])\n .add(p[2], p[3])\n .add(p[4], p[5])\n .add(p[6], p[7]);\n};\n\nprototype.rotatedPoints = function(angle, x, y) {\n var {x1, y1, x2, y2} = this,\n cos = Math.cos(angle),\n sin = Math.sin(angle),\n cx = x - x*cos + y*sin,\n cy = y - x*sin - y*cos;\n\n return [\n cos*x1 - sin*y1 + cx, sin*x1 + cos*y1 + cy,\n cos*x1 - sin*y2 + cx, sin*x1 + cos*y2 + cy,\n cos*x2 - sin*y1 + cx, sin*x2 + cos*y1 + cy,\n cos*x2 - sin*y2 + cx, sin*x2 + cos*y2 + cy\n ];\n};\n\nprototype.union = function(b) {\n if (b.x1 < this.x1) this.x1 = b.x1;\n if (b.y1 < this.y1) this.y1 = b.y1;\n if (b.x2 > this.x2) this.x2 = b.x2;\n if (b.y2 > this.y2) this.y2 = b.y2;\n return this;\n};\n\nprototype.intersect = function(b) {\n if (b.x1 > this.x1) this.x1 = b.x1;\n if (b.y1 > this.y1) this.y1 = b.y1;\n if (b.x2 < this.x2) this.x2 = b.x2;\n if (b.y2 < this.y2) this.y2 = b.y2;\n return this;\n};\n\nprototype.encloses = function(b) {\n return b && (\n this.x1 <= b.x1 &&\n this.x2 >= b.x2 &&\n this.y1 <= b.y1 &&\n this.y2 >= b.y2\n );\n};\n\nprototype.alignsWith = function(b) {\n return b && (\n this.x1 == b.x1 ||\n this.x2 == b.x2 ||\n this.y1 == b.y1 ||\n this.y2 == b.y2\n );\n};\n\nprototype.intersects = function(b) {\n return b && !(\n this.x2 < b.x1 ||\n this.x1 > b.x2 ||\n this.y2 < b.y1 ||\n this.y1 > b.y2\n );\n};\n\nprototype.contains = function(x, y) {\n return !(\n x < this.x1 ||\n x > this.x2 ||\n y < this.y1 ||\n y > this.y2\n );\n};\n\nprototype.width = function() {\n return this.x2 - this.x1;\n};\n\nprototype.height = function() {\n return this.y2 - this.y1;\n};\n","var gradient_id = 0;\n\nexport const patternPrefix = 'p_';\n\nexport function isGradient(value) {\n return value && value.gradient;\n}\n\nexport function gradientRef(g, defs, base) {\n let id = g.id,\n type = g.gradient,\n prefix = type === 'radial' ? patternPrefix : '';\n\n // check id, assign default values as needed\n if (!id) {\n id = g.id = 'gradient_' + (gradient_id++);\n if (type === 'radial') {\n g.x1 = get(g.x1, 0.5);\n g.y1 = get(g.y1, 0.5);\n g.r1 = get(g.r1, 0);\n g.x2 = get(g.x2, 0.5);\n g.y2 = get(g.y2, 0.5);\n g.r2 = get(g.r2, 0.5);\n prefix = patternPrefix;\n } else {\n g.x1 = get(g.x1, 0);\n g.y1 = get(g.y1, 0);\n g.x2 = get(g.x2, 1);\n g.y2 = get(g.y2, 0);\n }\n }\n\n // register definition\n defs[id] = g;\n\n // return url reference\n return 'url(' + (base || '') + '#' + prefix + id + ')';\n}\n\nfunction get(val, def) {\n return val != null ? val : def;\n}\n\nexport default function(p0, p1) {\n var stops = [], gradient;\n return gradient = {\n gradient: 'linear',\n x1: p0 ? p0[0] : 0,\n y1: p0 ? p0[1] : 0,\n x2: p1 ? p1[0] : 1,\n y2: p1 ? p1[1] : 0,\n stops: stops,\n stop: function(offset, color) {\n stops.push({offset: offset, color: color});\n return gradient;\n }\n };\n}\n","import Bounds from './Bounds';\n\nexport default function Item(mark) {\n this.mark = mark;\n this.bounds = (this.bounds || new Bounds());\n}\n","import Item from './Item';\nimport {inherits} from 'vega-util';\n\nexport default function GroupItem(mark) {\n Item.call(this, mark);\n this.items = (this.items || []);\n}\n\ninherits(GroupItem, Item);\n","export function domCanvas(w, h) {\n if (typeof document !== 'undefined' && document.createElement) {\n var c = document.createElement('canvas');\n if (c && c.getContext) {\n c.width = w;\n c.height = h;\n return c;\n }\n }\n return null;\n}\n\nexport function domImage() {\n return typeof Image !== 'undefined' ? Image : null;\n}\n","import {image} from 'vega-canvas';\nimport {loader} from 'vega-loader';\n\nexport default function ResourceLoader(customLoader) {\n this._pending = 0;\n this._loader = customLoader || loader();\n}\n\nvar prototype = ResourceLoader.prototype;\n\nprototype.pending = function() {\n return this._pending;\n};\n\nfunction increment(loader) {\n loader._pending += 1;\n}\n\nfunction decrement(loader) {\n loader._pending -= 1;\n}\n\nprototype.sanitizeURL = function(uri) {\n var loader = this;\n increment(loader);\n\n return loader._loader.sanitize(uri, {context:'href'})\n .then(function(opt) {\n decrement(loader);\n return opt;\n })\n .catch(function() {\n decrement(loader);\n return null;\n });\n};\n\nprototype.loadImage = function(uri) {\n var loader = this,\n Image = image();\n increment(loader);\n\n return loader._loader\n .sanitize(uri, {context: 'image'})\n .then(function(opt) {\n var url = opt.href;\n if (!url || !Image) throw {url: url};\n\n var img = new Image();\n\n img.onload = function() {\n decrement(loader);\n img.loaded = true;\n };\n\n img.onerror = function() {\n decrement(loader);\n img.loaded = false;\n }\n\n img.src = url;\n return img;\n })\n .catch(function(e) {\n decrement(loader);\n return {loaded: false, width: 0, height: 0, src: e && e.url || ''};\n });\n};\n\nprototype.ready = function() {\n var loader = this;\n return new Promise(function(accept) {\n function poll(value) {\n if (!loader.pending()) accept(value);\n else setTimeout(function() { poll(true); }, 10);\n }\n poll(false);\n });\n};\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport line from \"./line\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import curveLinear from \"./linear\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","export var slice = Array.prototype.slice;\n","import {pi, tau} from \"../math\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","import {pi, tau} from \"../math\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","export default function() {}\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop\";\nimport {point} from \"./basis\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop\";\nimport {point} from \"./cardinal\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math\";\nimport {Cardinal} from \"./cardinal\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed\";\nimport noop from \"../noop\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","import ascending from \"./ascending\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveBundle,\n curveCardinal,\n curveCardinalClosed,\n curveCardinalOpen,\n curveCatmullRom,\n curveCatmullRomClosed,\n curveCatmullRomOpen,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore\n} from 'd3-shape';\n\nvar lookup = {\n 'basis': {\n curve: curveBasis\n },\n 'basis-closed': {\n curve: curveBasisClosed\n },\n 'basis-open': {\n curve: curveBasisOpen\n },\n 'bundle': {\n curve: curveBundle,\n tension: 'beta',\n value: 0.85\n },\n 'cardinal': {\n curve: curveCardinal,\n tension: 'tension',\n value: 0\n },\n 'cardinal-open': {\n curve: curveCardinalOpen,\n tension: 'tension',\n value: 0\n },\n 'cardinal-closed': {\n curve: curveCardinalClosed,\n tension: 'tension',\n value: 0\n },\n 'catmull-rom': {\n curve: curveCatmullRom,\n tension: 'alpha',\n value: 0.5\n },\n 'catmull-rom-closed': {\n curve: curveCatmullRomClosed,\n tension: 'alpha',\n value: 0.5\n },\n 'catmull-rom-open': {\n curve: curveCatmullRomOpen,\n tension: 'alpha',\n value: 0.5\n },\n 'linear': {\n curve: curveLinear\n },\n 'linear-closed': {\n curve: curveLinearClosed\n },\n 'monotone': {\n horizontal: curveMonotoneY,\n vertical: curveMonotoneX\n },\n 'natural': {\n curve: curveNatural\n },\n 'step': {\n curve: curveStep\n },\n 'step-after': {\n curve: curveStepAfter\n },\n 'step-before': {\n curve: curveStepBefore\n }\n};\n\nexport default function curves(type, orientation, tension) {\n var entry = lookup.hasOwnProperty(type) && lookup[type],\n curve = null;\n\n if (entry) {\n curve = entry.curve || entry[orientation || 'vertical'];\n if (entry.tension && tension != null) {\n curve = curve[entry.tension](tension);\n }\n }\n\n return curve;\n}\n","// Path parsing and rendering code adapted from fabric.js -- Thanks!\nvar cmdlen = { m:2, l:2, h:1, v:1, c:6, s:4, q:4, t:2, a:7 },\n regexp = [/([MLHVCSQTAZmlhvcsqtaz])/g, /###/, /(\\d)([-+])/g, /\\s|,|###/];\n\nexport default function(pathstr) {\n var result = [],\n path,\n curr,\n chunks,\n parsed, param,\n cmd, len, i, j, n, m;\n\n // First, break path into command sequence\n path = pathstr\n .slice()\n .replace(regexp[0], '###$1')\n .split(regexp[1])\n .slice(1);\n\n // Next, parse each command in turn\n for (i=0, n=path.length; i<n; ++i) {\n curr = path[i];\n chunks = curr\n .slice(1)\n .trim()\n .replace(regexp[2],'$1###$2')\n .split(regexp[3]);\n cmd = curr.charAt(0);\n\n parsed = [cmd];\n for (j=0, m=chunks.length; j<m; ++j) {\n if ((param = +chunks[j]) === param) { // not NaN\n parsed.push(param);\n }\n }\n\n len = cmdlen[cmd.toLowerCase()];\n if (parsed.length-1 > len) {\n for (j=1, m=parsed.length; j<m; j+=len) {\n result.push([cmd].concat(parsed.slice(j, j+len)));\n }\n }\n else {\n result.push(parsed);\n }\n }\n\n return result;\n}\n","export var DegToRad = Math.PI / 180;\nexport var HalfPi = Math.PI / 2;\nexport var Tau = Math.PI * 2;\nexport var HalfSqrt3 = Math.sqrt(3) / 2;\n","import {DegToRad, HalfPi, Tau} from '../util/constants';\n\nexport var segmentCache = {};\nexport var bezierCache = {};\n\nvar join = [].join;\n\n// Copied from Inkscape svgtopdf, thanks!\nexport function segments(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n var key = join.call(arguments);\n if (segmentCache[key]) {\n return segmentCache[key];\n }\n\n var th = rotateX * DegToRad;\n var sin_th = Math.sin(th);\n var cos_th = Math.cos(th);\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n var px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n var py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n var pl = (px*px) / (rx*rx) + (py*py) / (ry*ry);\n if (pl > 1) {\n pl = Math.sqrt(pl);\n rx *= pl;\n ry *= pl;\n }\n\n var a00 = cos_th / rx;\n var a01 = sin_th / rx;\n var a10 = (-sin_th) / ry;\n var a11 = (cos_th) / ry;\n var x0 = a00 * ox + a01 * oy;\n var y0 = a10 * ox + a11 * oy;\n var x1 = a00 * x + a01 * y;\n var y1 = a10 * x + a11 * y;\n\n var d = (x1-x0) * (x1-x0) + (y1-y0) * (y1-y0);\n var sfactor_sq = 1 / d - 0.25;\n if (sfactor_sq < 0) sfactor_sq = 0;\n var sfactor = Math.sqrt(sfactor_sq);\n if (sweep == large) sfactor = -sfactor;\n var xc = 0.5 * (x0 + x1) - sfactor * (y1-y0);\n var yc = 0.5 * (y0 + y1) + sfactor * (x1-x0);\n\n var th0 = Math.atan2(y0-yc, x0-xc);\n var th1 = Math.atan2(y1-yc, x1-xc);\n\n var th_arc = th1-th0;\n if (th_arc < 0 && sweep === 1) {\n th_arc += Tau;\n } else if (th_arc > 0 && sweep === 0) {\n th_arc -= Tau;\n }\n\n var segs = Math.ceil(Math.abs(th_arc / (HalfPi + 0.001)));\n var result = [];\n for (var i=0; i<segs; ++i) {\n var th2 = th0 + i * th_arc / segs;\n var th3 = th0 + (i+1) * th_arc / segs;\n result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n }\n\n return (segmentCache[key] = result);\n}\n\nexport function bezier(params) {\n var key = join.call(params);\n if (bezierCache[key]) {\n return bezierCache[key];\n }\n\n var cx = params[0],\n cy = params[1],\n th0 = params[2],\n th1 = params[3],\n rx = params[4],\n ry = params[5],\n sin_th = params[6],\n cos_th = params[7];\n\n var a00 = cos_th * rx;\n var a01 = -sin_th * ry;\n var a10 = sin_th * rx;\n var a11 = cos_th * ry;\n\n var cos_th0 = Math.cos(th0);\n var sin_th0 = Math.sin(th0);\n var cos_th1 = Math.cos(th1);\n var sin_th1 = Math.sin(th1);\n\n var th_half = 0.5 * (th1 - th0);\n var sin_th_h2 = Math.sin(th_half * 0.5);\n var t = (8/3) * sin_th_h2 * sin_th_h2 / Math.sin(th_half);\n var x1 = cx + cos_th0 - t * sin_th0;\n var y1 = cy + sin_th0 + t * cos_th0;\n var x3 = cx + cos_th1;\n var y3 = cy + sin_th1;\n var x2 = x3 + t * sin_th1;\n var y2 = y3 - t * cos_th1;\n\n return (bezierCache[key] = [\n a00 * x1 + a01 * y1, a10 * x1 + a11 * y1,\n a00 * x2 + a01 * y2, a10 * x2 + a11 * y2,\n a00 * x3 + a01 * y3, a10 * x3 + a11 * y3\n ]);\n}\n","import {bezier, segments} from './arc';\n\nvar temp = ['l', 0, 0, 0, 0, 0, 0, 0];\n\nfunction scale(current, s) {\n var c = (temp[0] = current[0]);\n if (c === 'a' || c === 'A') {\n temp[1] = s * current[1];\n temp[2] = s * current[2];\n temp[3] = current[3];\n temp[4] = current[4];\n temp[5] = current[5];\n temp[6] = s * current[6];\n temp[7] = s * current[7];\n } else {\n for (var i=1, n=current.length; i<n; ++i) {\n temp[i] = s * current[i];\n }\n }\n return temp;\n}\n\nexport default function(context, path, l, t, s) {\n var current, // current instruction\n previous = null,\n x = 0, // current x\n y = 0, // current y\n controlX = 0, // current control point x\n controlY = 0, // current control point y\n tempX,\n tempY,\n tempControlX,\n tempControlY;\n\n if (l == null) l = 0;\n if (t == null) t = 0;\n if (s == null) s = 1;\n\n if (context.beginPath) context.beginPath();\n\n for (var i=0, len=path.length; i<len; ++i) {\n current = path[i];\n if (s !== 1) current = scale(current, s);\n\n switch (current[0]) { // first letter\n\n case 'l': // lineto, relative\n x += current[1];\n y += current[2];\n context.lineTo(x + l, y + t);\n break;\n\n case 'L': // lineto, absolute\n x = current[1];\n y = current[2];\n context.lineTo(x + l, y + t);\n break;\n\n case 'h': // horizontal lineto, relative\n x += current[1];\n context.lineTo(x + l, y + t);\n break;\n\n case 'H': // horizontal lineto, absolute\n x = current[1];\n context.lineTo(x + l, y + t);\n break;\n\n case 'v': // vertical lineto, relative\n y += current[1];\n context.lineTo(x + l, y + t);\n break;\n\n case 'V': // verical lineto, absolute\n y = current[1];\n context.lineTo(x + l, y + t);\n break;\n\n case 'm': // moveTo, relative\n x += current[1];\n y += current[2];\n context.moveTo(x + l, y + t);\n break;\n\n case 'M': // moveTo, absolute\n x = current[1];\n y = current[2];\n context.moveTo(x + l, y + t);\n break;\n\n case 'c': // bezierCurveTo, relative\n tempX = x + current[5];\n tempY = y + current[6];\n controlX = x + current[3];\n controlY = y + current[4];\n context.bezierCurveTo(\n x + current[1] + l, // x1\n y + current[2] + t, // y1\n controlX + l, // x2\n controlY + t, // y2\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'C': // bezierCurveTo, absolute\n x = current[5];\n y = current[6];\n controlX = current[3];\n controlY = current[4];\n context.bezierCurveTo(\n current[1] + l,\n current[2] + t,\n controlX + l,\n controlY + t,\n x + l,\n y + t\n );\n break;\n\n case 's': // shorthand cubic bezierCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.bezierCurveTo(\n controlX + l,\n controlY + t,\n x + current[1] + l,\n y + current[2] + t,\n tempX + l,\n tempY + t\n );\n\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = x + current[1];\n controlY = y + current[2];\n\n x = tempX;\n y = tempY;\n break;\n\n case 'S': // shorthand cubic bezierCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n // calculate reflection of previous control points\n controlX = 2*x - controlX;\n controlY = 2*y - controlY;\n context.bezierCurveTo(\n controlX + l,\n controlY + t,\n current[1] + l,\n current[2] + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = current[1];\n controlY = current[2];\n\n break;\n\n case 'q': // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n\n controlX = x + current[1];\n controlY = y + current[2];\n\n context.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n\n context.quadraticCurveTo(\n current[1] + l,\n current[2] + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n controlX = current[1];\n controlY = current[2];\n break;\n\n case 't': // shorthand quadraticCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[1];\n tempY = y + current[2];\n\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else if (previous[0] === 't') {\n // calculate reflection of previous control points for t\n controlX = 2 * x - tempControlX;\n controlY = 2 * y - tempControlY;\n }\n else if (previous[0] === 'q') {\n // calculate reflection of previous control points for q\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n tempControlX = controlX;\n tempControlY = controlY;\n\n context.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n controlX = x + current[1];\n controlY = y + current[2];\n break;\n\n case 'T':\n tempX = current[1];\n tempY = current[2];\n\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'a':\n drawArc(context, x + l, y + t, [\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6] + x + l,\n current[7] + y + t\n ]);\n x += current[6];\n y += current[7];\n break;\n\n case 'A':\n drawArc(context, x + l, y + t, [\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6] + l,\n current[7] + t\n ]);\n x = current[6];\n y = current[7];\n break;\n\n case 'z':\n case 'Z':\n context.closePath();\n break;\n }\n previous = current;\n }\n}\n\nfunction drawArc(context, x, y, coords) {\n var seg = segments(\n coords[5], // end x\n coords[6], // end y\n coords[0], // radius x\n coords[1], // radius y\n coords[3], // large flag\n coords[4], // sweep flag\n coords[2], // rotation\n x, y\n );\n for (var i=0; i<seg.length; ++i) {\n var bez = bezier(seg[i]);\n context.bezierCurveTo(bez[0], bez[1], bez[2], bez[3], bez[4], bez[5]);\n }\n}\n","import pathParse from './parse';\nimport pathRender from './render';\nimport {Tau, HalfSqrt3} from '../util/constants';\n\nvar Tan30 = 0.5773502691896257;\n\nvar builtins = {\n 'circle': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2;\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, Tau);\n }\n },\n 'cross': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n s = r / 2.5;\n context.moveTo(-r, -s);\n context.lineTo(-r, s);\n context.lineTo(-s, s);\n context.lineTo(-s, r);\n context.lineTo(s, r);\n context.lineTo(s, s);\n context.lineTo(r, s);\n context.lineTo(r, -s);\n context.lineTo(s, -s);\n context.lineTo(s, -r);\n context.lineTo(-s, -r);\n context.lineTo(-s, -s);\n context.closePath();\n }\n },\n 'diamond': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2;\n context.moveTo(-r, 0);\n context.lineTo(0, -r);\n context.lineTo(r, 0);\n context.lineTo(0, r);\n context.closePath();\n }\n },\n 'square': {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n },\n 'arrow': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n s = r / 7,\n t = r / 2.5,\n v = r / 8;\n context.moveTo(-s, r);\n context.lineTo(s, r);\n context.lineTo(s, -v);\n context.lineTo(t, -v);\n context.lineTo(0, -r);\n context.lineTo(-t, -v);\n context.lineTo(-s, -v);\n context.closePath();\n }\n },\n 'wedge': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r,\n o = (h - r * Tan30),\n b = r / 4;\n context.moveTo(0, -h - o);\n context.lineTo(-b, h - o);\n context.lineTo(b, h - o);\n context.closePath();\n }\n },\n 'triangle': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r,\n o = (h - r * Tan30);\n context.moveTo(0, -h - o);\n context.lineTo(-r, h - o);\n context.lineTo(r, h - o);\n context.closePath();\n }\n },\n 'triangle-up': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(0, -h);\n context.lineTo(-r, h);\n context.lineTo(r, h);\n context.closePath();\n }\n },\n 'triangle-down': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(0, h);\n context.lineTo(-r, -h);\n context.lineTo(r, -h);\n context.closePath();\n }\n },\n 'triangle-right': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(h, 0);\n context.lineTo(-h, -r);\n context.lineTo(-h, r);\n context.closePath();\n }\n },\n 'triangle-left': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(-h, 0);\n context.lineTo(h, -r);\n context.lineTo(h, r);\n context.closePath();\n }\n },\n 'stroke': {\n draw: function(context, size) {\n var r = Math.sqrt(size) / 2;\n context.moveTo(-r, 0);\n context.lineTo(r, 0);\n }\n }\n};\n\nexport default function symbols(_) {\n return builtins.hasOwnProperty(_) ? builtins[_] : customSymbol(_);\n}\n\nvar custom = {};\n\nfunction customSymbol(path) {\n if (!custom.hasOwnProperty(path)) {\n var parsed = pathParse(path);\n custom[path] = {\n draw: function(context, size) {\n pathRender(context, parsed, 0, 0, Math.sqrt(size) / 2);\n }\n };\n }\n return custom[path];\n}\n","import {path} from 'd3-path';\n\nfunction rectangleX(d) {\n return d.x;\n}\n\nfunction rectangleY(d) {\n return d.y;\n}\n\nfunction rectangleWidth(d) {\n return d.width;\n}\n\nfunction rectangleHeight(d) {\n return d.height;\n}\n\nfunction constant(_) {\n return function() { return _; };\n}\n\nexport default function() {\n var x = rectangleX,\n y = rectangleY,\n width = rectangleWidth,\n height = rectangleHeight,\n cornerRadius = constant(0),\n context = null;\n\n function rectangle(_, x0, y0) {\n var buffer,\n x1 = x0 != null ? x0 : +x.call(this, _),\n y1 = y0 != null ? y0 : +y.call(this, _),\n w = +width.call(this, _),\n h = +height.call(this, _),\n cr = +cornerRadius.call(this, _);\n\n if (!context) context = buffer = path();\n\n if (cr <= 0) {\n context.rect(x1, y1, w, h);\n } else {\n var x2 = x1 + w,\n y2 = y1 + h;\n context.moveTo(x1 + cr, y1);\n context.lineTo(x2 - cr, y1);\n context.quadraticCurveTo(x2, y1, x2, y1 + cr);\n context.lineTo(x2, y2 - cr);\n context.quadraticCurveTo(x2, y2, x2 - cr, y2);\n context.lineTo(x1 + cr, y2);\n context.quadraticCurveTo(x1, y2, x1, y2 - cr);\n context.lineTo(x1, y1 + cr);\n context.quadraticCurveTo(x1, y1, x1 + cr, y1);\n context.closePath();\n }\n\n if (buffer) {\n context = null;\n return buffer + '' || null;\n }\n }\n\n rectangle.x = function(_) {\n if (arguments.length) {\n x = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return x;\n }\n };\n\n rectangle.y = function(_) {\n if (arguments.length) {\n y = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return y;\n }\n };\n\n rectangle.width = function(_) {\n if (arguments.length) {\n width = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return width;\n }\n };\n\n rectangle.height = function(_) {\n if (arguments.length) {\n height = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return height;\n }\n };\n\n rectangle.cornerRadius = function(_) {\n if (arguments.length) {\n cornerRadius = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return cornerRadius;\n }\n };\n\n rectangle.context = function(_) {\n if (arguments.length) {\n context = _ == null ? null : _;\n return rectangle;\n } else {\n return context;\n }\n };\n\n return rectangle;\n}\n","import {Tau} from '../util/constants';\nimport {path} from 'd3-path';\n\nexport default function() {\n var x,\n y,\n size,\n defined,\n context = null,\n ready, x1, y1, r1;\n\n function point(x2, y2, w2) {\n var r2 = w2 / 2;\n\n if (ready) {\n var ux = y1 - y2,\n uy = x2 - x1;\n\n if (ux || uy) {\n // get normal vector\n var ud = Math.sqrt(ux * ux + uy * uy),\n rx = (ux /= ud) * r1,\n ry = (uy /= ud) * r1,\n t = Math.atan2(uy, ux);\n\n // draw segment\n context.moveTo(x1 - rx, y1 - ry);\n context.lineTo(x2 - ux * r2, y2 - uy * r2);\n context.arc(x2, y2, r2, t - Math.PI, t);\n context.lineTo(x1 + rx, y1 + ry);\n context.arc(x1, y1, r1, t, t + Math.PI);\n } else {\n context.arc(x2, y2, r2, 0, Tau);\n }\n context.closePath();\n } else {\n ready = 1;\n }\n x1 = x2;\n y1 = y2;\n r1 = r2;\n }\n\n function trail(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) context = buffer = path();\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) ready = 0;\n }\n if (defined0) point(+x(d, i, data), +y(d, i, data), +size(d, i, data));\n }\n\n if (buffer) {\n context = null;\n return buffer + '' || null;\n }\n }\n\n trail.x = function(_) {\n if (arguments.length) {\n x = _;\n return trail;\n } else {\n return x;\n }\n };\n\n trail.y = function(_) {\n if (arguments.length) {\n y = _;\n return trail;\n } else {\n return y;\n }\n };\n\n trail.size = function(_) {\n if (arguments.length) {\n size = _;\n return trail;\n } else {\n return size;\n }\n };\n\n trail.defined = function(_) {\n if (arguments.length) {\n defined = _;\n return trail;\n } else {\n return defined;\n }\n };\n\n trail.context = function(_) {\n if (arguments.length) {\n if (_ == null) {\n context = null;\n } else {\n context = _;\n }\n return trail;\n } else {\n return context;\n }\n };\n\n return trail;\n}\n","import curves from './curves';\nimport symbols from './symbols';\n\nimport {default as vg_rect} from './rectangle';\nimport {default as vg_trail} from './trail';\n\nimport {\n arc as d3_arc,\n symbol as d3_symbol,\n area as d3_area,\n line as d3_line\n} from 'd3-shape';\n\nfunction x(item) { return item.x || 0; }\nfunction y(item) { return item.y || 0; }\nfunction w(item) { return item.width || 0; }\nfunction ts(item) { return item.size || 1; }\nfunction h(item) { return item.height || 0; }\nfunction xw(item) { return (item.x || 0) + (item.width || 0); }\nfunction yh(item) { return (item.y || 0) + (item.height || 0); }\nfunction sa(item) { return item.startAngle || 0; }\nfunction ea(item) { return item.endAngle || 0; }\nfunction pa(item) { return item.padAngle || 0; }\nfunction ir(item) { return item.innerRadius || 0; }\nfunction or(item) { return item.outerRadius || 0; }\nfunction cr(item) { return item.cornerRadius || 0; }\nfunction def(item) { return !(item.defined === false); }\nfunction size(item) { return item.size == null ? 64 : item.size; }\nfunction type(item) { return symbols(item.shape || 'circle'); }\n\nvar arcShape = d3_arc().startAngle(sa).endAngle(ea).padAngle(pa)\n .innerRadius(ir).outerRadius(or).cornerRadius(cr),\n areavShape = d3_area().x(x).y1(y).y0(yh).defined(def),\n areahShape = d3_area().y(y).x1(x).x0(xw).defined(def),\n lineShape = d3_line().x(x).y(y).defined(def),\n rectShape = vg_rect().x(x).y(y).width(w).height(h).cornerRadius(cr),\n symbolShape = d3_symbol().type(type).size(size),\n trailShape = vg_trail().x(x).y(y).defined(def).size(ts);\n\nexport function arc(context, item) {\n return arcShape.context(context)(item);\n}\n\nexport function area(context, items) {\n var item = items[0],\n interp = item.interpolate || 'linear';\n return (item.orient === 'horizontal' ? areahShape : areavShape)\n .curve(curves(interp, item.orient, item.tension))\n .context(context)(items);\n}\n\nexport function line(context, items) {\n var item = items[0],\n interp = item.interpolate || 'linear';\n return lineShape.curve(curves(interp, item.orient, item.tension))\n .context(context)(items);\n}\n\nexport function rectangle(context, item, x, y) {\n return rectShape.context(context)(item, x, y);\n}\n\nexport function shape(context, item) {\n return (item.mark.shape || item.shape)\n .context(context)(item);\n}\n\nexport function symbol(context, item) {\n return symbolShape.context(context)(item);\n}\n\nexport function trail(context, items) {\n return trailShape.context(context)(items);\n}\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle\";\nimport cross from \"./symbol/cross\";\nimport diamond from \"./symbol/diamond\";\nimport star from \"./symbol/star\";\nimport square from \"./symbol/square\";\nimport triangle from \"./symbol/triangle\";\nimport wye from \"./symbol/wye\";\nimport constant from \"./constant\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function(bounds, item) {\n if (item.stroke && item.opacity !== 0 && item.strokeOpacity !== 0) {\n bounds.expand(item.strokeWidth != null ? +item.strokeWidth : 1);\n }\n return bounds;\n}\n","import {HalfPi, Tau} from '../util/constants';\n\nvar bounds,\n circleThreshold = Tau - 1e-8;\n\nexport default function context(_) {\n bounds = _;\n return context;\n}\n\nfunction noop() {}\n\nfunction add(x, y) { bounds.add(x, y); }\n\ncontext.beginPath = noop;\n\ncontext.closePath = noop;\n\ncontext.moveTo = add;\n\ncontext.lineTo = add;\n\ncontext.rect = function(x, y, w, h) {\n add(x, y);\n add(x + w, y + h);\n};\n\ncontext.quadraticCurveTo = function(x1, y1, x2, y2) {\n add(x1, y1);\n add(x2, y2);\n};\n\ncontext.bezierCurveTo = function(x1, y1, x2, y2, x3, y3) {\n add(x1, y1);\n add(x2, y2);\n add(x3, y3);\n};\n\ncontext.arc = function(cx, cy, r, sa, ea, ccw) {\n if (Math.abs(ea - sa) > circleThreshold) {\n add(cx - r, cy - r);\n add(cx + r, cy + r);\n return;\n }\n\n var xmin = Infinity, xmax = -Infinity,\n ymin = Infinity, ymax = -Infinity,\n s, i, x, y;\n\n function update(a) {\n x = r * Math.cos(a);\n y = r * Math.sin(a);\n if (x < xmin) xmin = x;\n if (x > xmax) xmax = x;\n if (y < ymin) ymin = y;\n if (y > ymax) ymax = y;\n }\n\n // Sample end points and interior points aligned with 90 degrees\n update(sa);\n update(ea);\n\n if (ea !== sa) {\n sa = sa % Tau; if (sa < 0) sa += Tau;\n ea = ea % Tau; if (ea < 0) ea += Tau;\n\n if (ea < sa) {\n ccw = !ccw; // flip direction\n s = sa; sa = ea; ea = s; // swap end-points\n }\n\n if (ccw) {\n ea -= Tau;\n s = sa - (sa % HalfPi);\n for (i=0; i<4 && s>ea; ++i, s-=HalfPi) update(s);\n } else {\n s = sa - (sa % HalfPi) + HalfPi;\n for (i=0; i<4 && s<ea; ++i, s=s+HalfPi) update(s);\n }\n }\n\n add(cx + xmin, cy + ymin);\n add(cx + xmax, cy + ymax);\n};\n","import {canvas} from 'vega-canvas';\n\nexport var context = (context = canvas(1,1))\n ? context.getContext('2d')\n : null;\n","import {context} from './canvas/context';\nimport Bounds from '../Bounds';\n\nconst b = new Bounds();\n\nexport function intersectPath(draw) {\n return function(item, brush) {\n // rely on (inaccurate) bounds intersection if no context\n if (!context) return true;\n\n // add path to offscreen graphics context\n draw(context, item);\n\n // get bounds intersection region\n b.clear().union(item.bounds).intersect(brush).round();\n const {x1, y1, x2, y2} = b;\n\n // iterate over intersection region\n // perform fine grained inclusion test\n for (let y = y1; y <= y2; ++y) {\n for (let x = x1; x <= x2; ++x) {\n if (context.isPointInPath(x, y)) {\n return true;\n }\n }\n }\n\n // false if no hits in intersection region\n return false;\n }\n}\n\nexport function intersectPoint(item, box) {\n return box.contains(item.x || 0, item.y || 0);\n}\n\nexport function intersectRect(item, box) {\n const x = item.x || 0,\n y = item.y || 0,\n w = item.width || 0,\n h = item.height || 0;\n return box.intersects(b.set(x, y, x + w, y + h));\n}\n\nexport function intersectRule(item, box) {\n const x = item.x || 0,\n y = item.y || 0,\n x2 = item.x2 != null ? item.x2 : x,\n y2 = item.y2 != null ? item.y2 : y;\n return intersectBoxLine(box, x, y, x2, y2);\n}\n\nexport function intersectBoxLine(box, x, y, u, v) {\n const {x1, y1, x2, y2} = box,\n dx = u - x,\n dy = v - y;\n\n let t0 = 0, t1 = 1, p, q, r, e;\n\n for (e=0; e<4; ++e) {\n if (e === 0) { p = -dx; q = -(x1 - x); }\n if (e === 1) { p = dx; q = (x2 - x); }\n if (e === 2) { p = -dy; q = -(y1 - y); }\n if (e === 3) { p = dy; q = (y2 - y); }\n\n if (Math.abs(p) < 1e-10 && q < 0) return false;\n\n r = q / p;\n\n if (p < 0) {\n if (r > t1) return false;\n else if (r > t0) t0 = r;\n } else if (p > 0) {\n if (r < t0) return false;\n else if (r < t1) t1 = r;\n }\n }\n\n return true;\n}\n","export default function(context, gradient, bounds) {\n const w = bounds.width(),\n h = bounds.height(),\n stop = gradient.stops,\n n = stop.length;\n\n const canvasGradient = gradient.gradient === 'radial'\n ? context.createRadialGradient(\n bounds.x1 + (gradient.x1 || 0.5) * w,\n bounds.y1 + (gradient.y1 || 0.5) * h,\n Math.max(w, h) * (gradient.r1 || 0),\n bounds.x1 + (gradient.x2 || 0.5) * w,\n bounds.y1 + (gradient.y2 || 0.5) * h,\n Math.max(w, h) * (gradient.r2 || 0.5)\n )\n : context.createLinearGradient(\n bounds.x1 + (gradient.x1 || 0) * w,\n bounds.y1 + (gradient.y1 || 0) * h,\n bounds.x1 + (gradient.x2 || 1) * w,\n bounds.y1 + (gradient.y2 || 0) * h\n );\n\n for (let i=0; i<n; ++i) {\n canvasGradient.addColorStop(stop[i].offset, stop[i].color);\n }\n\n return canvasGradient;\n}\n","import {isGradient} from '../../Gradient';\nimport gradient from './gradient';\n\nexport default function(context, item, value) {\n return isGradient(value) ?\n gradient(context, value, item.bounds) :\n value;\n}\n","import color from './color';\n\nexport default function(context, item, opacity) {\n opacity *= (item.fillOpacity==null ? 1 : item.fillOpacity);\n if (opacity > 0) {\n context.globalAlpha = opacity;\n context.fillStyle = color(context, item, item.fill);\n return true;\n } else {\n return false;\n }\n}\n","import color from './color';\n\nvar Empty = [];\n\nexport default function(context, item, opacity) {\n var lw = (lw = item.strokeWidth) != null ? lw : 1;\n\n if (lw <= 0) return false;\n\n opacity *= (item.strokeOpacity==null ? 1 : item.strokeOpacity);\n if (opacity > 0) {\n context.globalAlpha = opacity;\n context.strokeStyle = color(context, item, item.stroke);\n\n context.lineWidth = lw;\n context.lineCap = item.strokeCap || 'butt';\n context.lineJoin = item.strokeJoin || 'miter';\n context.miterLimit = item.strokeMiterLimit || 10;\n\n if (context.setLineDash) {\n context.setLineDash(item.strokeDash || Empty);\n context.lineDashOffset = item.strokeDashOffset || 0;\n }\n return true;\n } else {\n return false;\n }\n}\n","function compare(a, b) {\n return a.zindex - b.zindex || a.index - b.index;\n}\n\nexport function zorder(scene) {\n if (!scene.zdirty) return scene.zitems;\n\n var items = scene.items,\n output = [], item, i, n;\n\n for (i=0, n=items.length; i<n; ++i) {\n item = items[i];\n item.index = i;\n if (item.zindex) output.push(item);\n }\n\n scene.zdirty = false;\n return scene.zitems = output.sort(compare);\n}\n\nexport function visit(scene, visitor) {\n var items = scene.items, i, n;\n if (!items || !items.length) return;\n\n var zitems = zorder(scene);\n\n if (zitems && zitems.length) {\n for (i=0, n=items.length; i<n; ++i) {\n if (!items[i].zindex) visitor(items[i]);\n }\n items = zitems;\n }\n\n for (i=0, n=items.length; i<n; ++i) {\n visitor(items[i]);\n }\n}\n\nexport function pickVisit(scene, visitor) {\n var items = scene.items, hit, i;\n if (!items || !items.length) return null;\n\n var zitems = zorder(scene);\n if (zitems && zitems.length) items = zitems;\n\n for (i=items.length; --i >= 0;) {\n if (hit = visitor(items[i])) return hit;\n }\n\n if (items === zitems) {\n for (items=scene.items, i=items.length; --i >= 0;) {\n if (!items[i].zindex) {\n if (hit = visitor(items[i])) return hit;\n }\n }\n }\n\n return null;\n}\n","import fill from './fill';\nimport stroke from './stroke';\nimport {visit} from '../visit';\n\nexport function drawAll(path) {\n return function(context, scene, bounds) {\n visit(scene, function(item) {\n if (!bounds || bounds.intersects(item.bounds)) {\n drawPath(path, context, item, item);\n }\n });\n };\n}\n\nexport function drawOne(path) {\n return function(context, scene, bounds) {\n if (scene.items.length && (!bounds || bounds.intersects(scene.bounds))) {\n drawPath(path, context, scene.items[0], scene.items);\n }\n };\n}\n\nfunction drawPath(path, context, item, items) {\n var opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity === 0) return;\n\n if (path(context, items)) return;\n\n if (item.fill && fill(context, item, opacity)) {\n context.fill();\n }\n\n if (item.stroke && stroke(context, item, opacity)) {\n context.stroke();\n }\n}\n","import {pickVisit} from '../visit';\nimport {truthy} from 'vega-util';\n\nexport function pick(test) {\n test = test || truthy;\n\n return function(context, scene, x, y, gx, gy) {\n x *= context.pixelRatio;\n y *= context.pixelRatio;\n\n return pickVisit(scene, function(item) {\n var b = item.bounds;\n // first hit test against bounding box\n if ((b && !b.contains(gx, gy)) || !b) return;\n // if in bounding box, perform more careful test\n if (test(context, item, x, y, gx, gy)) return item;\n });\n };\n}\n\nexport function hitPath(path, filled) {\n return function(context, o, x, y) {\n var item = Array.isArray(o) ? o[0] : o,\n fill = (filled == null) ? item.fill : filled,\n stroke = item.stroke && context.isPointInStroke, lw, lc;\n\n if (stroke) {\n lw = item.strokeWidth;\n lc = item.strokeCap;\n context.lineWidth = lw != null ? lw : 1;\n context.lineCap = lc != null ? lc : 'butt';\n }\n\n return path(context, o) ? false :\n (fill && context.isPointInPath(x, y)) ||\n (stroke && context.isPointInStroke(x, y));\n };\n}\n\nexport function pickPath(path) {\n return pick(hitPath(path));\n}\n","export function translate(x, y) {\n return 'translate(' + x + ',' + y + ')';\n}\n\nexport function rotate(a) {\n return 'rotate(' + a + ')';\n}\n\nexport function translateItem(item) {\n return translate(item.x || 0, item.y || 0);\n}\n\nexport function transformItem(item) {\n return translate(item.x || 0, item.y || 0)\n + (item.angle ? ' ' + rotate(item.angle) : '');\n}\n","import boundStroke from '../bound/boundStroke';\nimport context from '../bound/boundContext';\nimport {intersectPath} from '../util/intersect';\nimport {drawAll} from '../util/canvas/draw';\nimport {pickPath} from '../util/canvas/pick';\nimport {transformItem} from '../util/svg/transform';\nimport {DegToRad} from '../util/constants';\n\nexport default function(type, shape, isect) {\n\n function attr(emit, item) {\n emit('transform', transformItem(item));\n emit('d', shape(null, item));\n }\n\n function bound(bounds, item) {\n var x = item.x || 0,\n y = item.y || 0;\n\n shape(context(bounds), item);\n boundStroke(bounds, item).translate(x, y);\n if (item.angle) {\n bounds.rotate(item.angle * DegToRad, x, y);\n }\n\n return bounds;\n }\n\n function draw(context, item) {\n var x = item.x || 0,\n y = item.y || 0,\n a = item.angle || 0;\n\n context.translate(x, y);\n if (a) context.rotate(a *= DegToRad);\n context.beginPath();\n shape(context, item);\n if (a) context.rotate(-a);\n context.translate(-x, -y);\n }\n\n return {\n type: type,\n tag: 'path',\n nested: false,\n attr: attr,\n bound: bound,\n draw: drawAll(draw),\n pick: pickPath(draw),\n isect: isect || intersectPath(draw)\n };\n\n}\n","import {arc} from '../path/shapes';\nimport markItemPath from './markItemPath';\n\nexport default markItemPath('arc', arc);\n","import boundStroke from '../bound/boundStroke';\nimport context from '../bound/boundContext';\nimport {intersectPoint} from '../util/intersect';\nimport {drawOne} from '../util/canvas/draw';\nimport {hitPath} from '../util/canvas/pick';\n\nexport default function(type, shape, tip) {\n\n function attr(emit, item) {\n var items = item.mark.items;\n if (items.length) emit('d', shape(null, items));\n }\n\n function bound(bounds, mark) {\n var items = mark.items;\n if (items.length === 0) {\n return bounds;\n } else {\n shape(context(bounds), items);\n return boundStroke(bounds, items[0]);\n }\n }\n\n function draw(context, items) {\n context.beginPath();\n shape(context, items);\n }\n\n var hit = hitPath(draw);\n\n function pick(context, scene, x, y, gx, gy) {\n var items = scene.items,\n b = scene.bounds;\n\n if (!items || !items.length || b && !b.contains(gx, gy)) {\n return null;\n }\n\n x *= context.pixelRatio;\n y *= context.pixelRatio;\n return hit(context, items, x, y) ? items[0] : null;\n }\n\n return {\n type: type,\n tag: 'path',\n nested: true,\n attr: attr,\n bound: bound,\n draw: drawOne(draw),\n pick: pick,\n isect: intersectPoint,\n tip: tip\n };\n\n}\n\n\n","import {area} from '../path/shapes';\nimport {pickArea} from '../util/pickPath';\nimport markMultiItemPath from './markMultiItemPath';\n\nexport default markMultiItemPath('area', area, pickArea);\n","export function pickArea(a, p) {\n var v = a[0].orient === 'horizontal' ? p[1] : p[0],\n z = a[0].orient === 'horizontal' ? 'y' : 'x',\n i = a.length,\n min = +Infinity, hit, d;\n\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n d = Math.abs(a[i][z] - v);\n if (d < min) {\n min = d;\n hit = a[i];\n }\n }\n\n return hit;\n}\n\nexport function pickLine(a, p) {\n var t = Math.pow(a[0].strokeWidth || 1, 2),\n i = a.length, dx, dy, dd;\n\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n dx = a[i].x - p[0];\n dy = a[i].y - p[1];\n dd = dx * dx + dy * dy;\n if (dd < t) return a[i];\n }\n\n return null;\n}\n\nexport function pickTrail(a, p) {\n var i = a.length, dx, dy, dd;\n\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n dx = a[i].x - p[0];\n dy = a[i].y - p[1];\n dd = dx * dx + dy * dy;\n dx = a[i].size || 1;\n if (dd < dx*dx) return a[i];\n }\n\n return null;\n}\n","import {isFunction} from 'vega-util';\n\nvar clip_id = 1;\n\nexport function resetSVGClipId() {\n clip_id = 1;\n}\n\nexport default function(renderer, item, size) {\n var clip = item.clip,\n defs = renderer._defs,\n id = item.clip_id || (item.clip_id = 'clip' + clip_id++),\n c = defs.clipping[id] || (defs.clipping[id] = {id: id});\n\n if (isFunction(clip)) {\n c.path = clip(null);\n } else {\n c.width = size.width || 0;\n c.height = size.height || 0;\n }\n\n return 'url(#' + id + ')';\n}\n","import {rectangle} from '../path/shapes';\nimport boundStroke from '../bound/boundStroke';\nimport {intersectRect} from '../util/intersect';\nimport {visit, pickVisit} from '../util/visit';\nimport stroke from '../util/canvas/stroke';\nimport fill from '../util/canvas/fill';\nimport {hitPath} from '../util/canvas/pick';\nimport clip from '../util/svg/clip';\nimport {translateItem} from '../util/svg/transform';\n\nvar StrokeOffset = 0.5;\n\nfunction attr(emit, item) {\n emit('transform', translateItem(item));\n}\n\nfunction background(emit, item) {\n var offset = item.stroke ? StrokeOffset : 0;\n emit('class', 'background');\n emit('d', rectangle(null, item, offset, offset));\n}\n\nfunction foreground(emit, item, renderer) {\n var url = item.clip ? clip(renderer, item, item) : null;\n emit('clip-path', url);\n}\n\nfunction bound(bounds, group) {\n if (!group.clip && group.items) {\n var items = group.items;\n for (var j=0, m=items.length; j<m; ++j) {\n bounds.union(items[j].bounds);\n }\n }\n\n if ((group.clip || group.width || group.height) && !group.noBound) {\n bounds.add(0, 0).add(group.width || 0, group.height || 0);\n }\n\n boundStroke(bounds, group);\n\n return bounds.translate(group.x || 0, group.y || 0);\n}\n\nfunction backgroundPath(context, group) {\n var offset = group.stroke ? StrokeOffset : 0;\n context.beginPath();\n rectangle(context, group, offset, offset);\n}\n\nvar hitBackground = hitPath(backgroundPath);\n\nfunction draw(context, scene, bounds) {\n var renderer = this;\n\n visit(scene, function(group) {\n var gx = group.x || 0,\n gy = group.y || 0,\n w = group.width || 0,\n h = group.height || 0,\n opacity;\n\n // setup graphics context\n context.save();\n context.translate(gx, gy);\n\n // draw group background\n if (group.stroke || group.fill) {\n opacity = group.opacity == null ? 1 : group.opacity;\n if (opacity > 0) {\n backgroundPath(context, group);\n if (group.fill && fill(context, group, opacity)) {\n context.fill();\n }\n if (group.stroke && stroke(context, group, opacity)) {\n context.stroke();\n }\n }\n }\n\n // set clip and bounds\n if (group.clip) {\n context.beginPath();\n context.rect(0, 0, w, h);\n context.clip();\n }\n if (bounds) bounds.translate(-gx, -gy);\n\n // draw group contents\n visit(group, function(item) {\n renderer.draw(context, item, bounds);\n });\n\n // restore graphics context\n if (bounds) bounds.translate(gx, gy);\n context.restore();\n });\n}\n\nfunction pick(context, scene, x, y, gx, gy) {\n if (scene.bounds && !scene.bounds.contains(gx, gy) || !scene.items) {\n return null;\n }\n\n var handler = this,\n cx = x * context.pixelRatio,\n cy = y * context.pixelRatio;\n\n return pickVisit(scene, function(group) {\n var hit, dx, dy, b;\n\n // first hit test against bounding box\n // if a group is clipped, that should be handled by the bounds check.\n b = group.bounds;\n if (b && !b.contains(gx, gy)) return;\n\n // passed bounds check, so test sub-groups\n dx = (group.x || 0);\n dy = (group.y || 0);\n\n context.save();\n context.translate(dx, dy);\n\n dx = gx - dx;\n dy = gy - dy;\n\n // hit test against contained marks\n hit = pickVisit(group, function(mark) {\n return pickMark(mark, dx, dy)\n ? handler.pick(mark, x, y, dx, dy)\n : null;\n });\n\n // hit test against group background\n if (!hit && scene.interactive !== false\n && (group.fill || group.stroke)\n && hitBackground(context, group, cx, cy)) {\n hit = group;\n }\n\n context.restore();\n return hit || null;\n });\n}\n\nfunction pickMark(mark, x, y) {\n return (mark.interactive !== false || mark.marktype === 'group')\n && mark.bounds && mark.bounds.contains(x, y);\n}\n\nexport default {\n type: 'group',\n tag: 'g',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick,\n isect: intersectRect,\n background: background,\n foreground: foreground\n};\n","import {visit} from '../util/visit';\nimport {pick} from '../util/canvas/pick';\nimport {translate} from '../util/svg/transform';\nimport {truthy} from 'vega-util';\n\nfunction getImage(item, renderer) {\n var image = item.image;\n if (!image || image.url !== item.url) {\n image = {loaded: false, width: 0, height: 0};\n renderer.loadImage(item.url).then(function(image) {\n item.image = image;\n item.image.url = item.url;\n });\n }\n return image;\n}\n\nfunction imageXOffset(align, w) {\n return align === 'center' ? w / 2 : align === 'right' ? w : 0;\n}\n\nfunction imageYOffset(baseline, h) {\n return baseline === 'middle' ? h / 2 : baseline === 'bottom' ? h : 0;\n}\n\nfunction attr(emit, item, renderer) {\n var image = getImage(item, renderer),\n x = item.x || 0,\n y = item.y || 0,\n w = (item.width != null ? item.width : image.width) || 0,\n h = (item.height != null ? item.height : image.height) || 0,\n a = item.aspect === false ? 'none' : 'xMidYMid';\n\n x -= imageXOffset(item.align, w);\n y -= imageYOffset(item.baseline, h);\n\n emit('href', image.src || '', 'http://www.w3.org/1999/xlink', 'xlink:href');\n emit('transform', translate(x, y));\n emit('width', w);\n emit('height', h);\n emit('preserveAspectRatio', a);\n}\n\nfunction bound(bounds, item) {\n var image = item.image,\n x = item.x || 0,\n y = item.y || 0,\n w = (item.width != null ? item.width : (image && image.width)) || 0,\n h = (item.height != null ? item.height : (image && image.height)) || 0;\n\n x -= imageXOffset(item.align, w);\n y -= imageYOffset(item.baseline, h);\n\n return bounds.set(x, y, x + w, y + h);\n}\n\nfunction draw(context, scene, bounds) {\n var renderer = this;\n\n visit(scene, function(item) {\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n var image = getImage(item, renderer),\n x = item.x || 0,\n y = item.y || 0,\n w = (item.width != null ? item.width : image.width) || 0,\n h = (item.height != null ? item.height : image.height) || 0,\n opacity, ar0, ar1, t;\n\n x -= imageXOffset(item.align, w);\n y -= imageYOffset(item.baseline, h);\n\n if (item.aspect !== false) {\n ar0 = image.width / image.height;\n ar1 = item.width / item.height;\n if (ar0 === ar0 && ar1 === ar1 && ar0 !== ar1) {\n if (ar1 < ar0) {\n t = w / ar0;\n y += (h - t) / 2;\n h = t;\n } else {\n t = h * ar0;\n x += (w - t) / 2;\n w = t;\n }\n }\n }\n\n if (image.loaded) {\n context.globalAlpha = (opacity = item.opacity) != null ? opacity : 1;\n context.drawImage(image, x, y, w, h);\n }\n });\n}\n\nexport default {\n type: 'image',\n tag: 'image',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick(),\n isect: truthy, // bounds check is sufficient\n get: getImage,\n xOffset: imageXOffset,\n yOffset: imageYOffset\n};\n","import {line} from '../path/shapes';\nimport {pickLine} from '../util/pickPath';\nimport markMultiItemPath from './markMultiItemPath';\n\nexport default markMultiItemPath('line', line, pickLine);\n","import boundStroke from '../bound/boundStroke';\nimport context from '../bound/boundContext';\nimport pathParse from '../path/parse';\nimport pathRender from '../path/render';\nimport {intersectPath} from '../util/intersect';\nimport {drawAll} from '../util/canvas/draw';\nimport {pickPath} from '../util/canvas/pick';\nimport {translateItem} from '../util/svg/transform';\n\nfunction attr(emit, item) {\n emit('transform', translateItem(item));\n emit('d', item.path);\n}\n\nfunction path(context, item) {\n var path = item.path;\n if (path == null) return true;\n\n var cache = item.pathCache;\n if (!cache || cache.path !== path) {\n (item.pathCache = cache = pathParse(path)).path = path;\n }\n pathRender(context, cache, item.x, item.y);\n}\n\nfunction bound(bounds, item) {\n return path(context(bounds), item)\n ? bounds.set(0, 0, 0, 0)\n : boundStroke(bounds, item);\n}\n\nexport default {\n type: 'path',\n tag: 'path',\n nested: false,\n attr: attr,\n bound: bound,\n draw: drawAll(path),\n pick: pickPath(path),\n isect: intersectPath(path)\n};\n","import boundStroke from '../bound/boundStroke';\nimport {rectangle} from '../path/shapes';\nimport {intersectRect} from '../util/intersect';\nimport {drawAll} from '../util/canvas/draw';\nimport {pickPath} from '../util/canvas/pick';\n\nfunction attr(emit, item) {\n emit('d', rectangle(null, item));\n}\n\nfunction bound(bounds, item) {\n var x, y;\n return boundStroke(bounds.set(\n x = item.x || 0,\n y = item.y || 0,\n (x + item.width) || 0,\n (y + item.height) || 0\n ), item);\n}\n\nfunction draw(context, item) {\n context.beginPath();\n rectangle(context, item);\n}\n\nexport default {\n type: 'rect',\n tag: 'path',\n nested: false,\n attr: attr,\n bound: bound,\n draw: drawAll(draw),\n pick: pickPath(draw),\n isect: intersectRect\n};\n","import boundStroke from '../bound/boundStroke';\nimport {intersectRule} from '../util/intersect';\nimport {visit} from '../util/visit';\nimport {pick} from '../util/canvas/pick';\nimport stroke from '../util/canvas/stroke';\nimport {translateItem} from '../util/svg/transform';\n\nfunction attr(emit, item) {\n emit('transform', translateItem(item));\n emit('x2', item.x2 != null ? item.x2 - (item.x || 0) : 0);\n emit('y2', item.y2 != null ? item.y2 - (item.y || 0) : 0);\n}\n\nfunction bound(bounds, item) {\n var x1, y1;\n return boundStroke(bounds.set(\n x1 = item.x || 0,\n y1 = item.y || 0,\n item.x2 != null ? item.x2 : x1,\n item.y2 != null ? item.y2 : y1\n ), item);\n}\n\nfunction path(context, item, opacity) {\n var x1, y1, x2, y2;\n\n if (item.stroke && stroke(context, item, opacity)) {\n x1 = item.x || 0;\n y1 = item.y || 0;\n x2 = item.x2 != null ? item.x2 : x1;\n y2 = item.y2 != null ? item.y2 : y1;\n context.beginPath();\n context.moveTo(x1, y1);\n context.lineTo(x2, y2);\n return true;\n }\n return false;\n}\n\nfunction draw(context, scene, bounds) {\n visit(scene, function(item) {\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n var opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity && path(context, item, opacity)) {\n context.stroke();\n }\n });\n}\n\nfunction hit(context, item, x, y) {\n if (!context.isPointInStroke) return false;\n return path(context, item, 1) && context.isPointInStroke(x, y);\n}\n\nexport default {\n type: 'rule',\n tag: 'line',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick(hit),\n isect: intersectRule\n};\n","import {context} from './canvas/context';\n\nvar currFontHeight;\n\nexport var textMetrics = {\n height: fontSize,\n measureWidth: measureWidth,\n estimateWidth: estimateWidth,\n width: estimateWidth,\n canvas: useCanvas\n};\n\nuseCanvas(true);\n\n// make dumb, simple estimate if no canvas is available\nfunction estimateWidth(item) {\n currFontHeight = fontSize(item);\n return estimate(textValue(item));\n}\n\nfunction estimate(text) {\n return ~~(0.8 * text.length * currFontHeight);\n}\n\n// measure text width if canvas is available\nfunction measureWidth(item) {\n return fontSize(item) <= 0 ? 0\n : (context.font = font(item), measure(textValue(item)));\n}\n\nfunction measure(text) {\n return context.measureText(text).width;\n}\n\nexport function fontSize(item) {\n return item.fontSize != null ? item.fontSize : 11;\n}\n\nfunction useCanvas(use) {\n textMetrics.width = (use && context) ? measureWidth : estimateWidth;\n}\n\nexport function textValue(item) {\n var s = item.text;\n if (s == null) {\n return '';\n } else {\n return item.limit > 0 ? truncate(item) : s + '';\n }\n}\n\nexport function truncate(item) {\n var limit = +item.limit,\n text = item.text + '',\n width;\n\n if (textMetrics.width === measureWidth) {\n // we are using canvas\n context.font = font(item);\n width = measure;\n } else {\n // we are relying on estimates\n currFontHeight = fontSize(item);\n width = estimate;\n }\n\n if (width(text) < limit) return text;\n\n var ellipsis = item.ellipsis || '\\u2026',\n rtl = item.dir === 'rtl',\n lo = 0,\n hi = text.length, mid;\n\n limit -= width(ellipsis);\n\n if (rtl) {\n while (lo < hi) {\n mid = (lo + hi >>> 1);\n if (width(text.slice(mid)) > limit) lo = mid + 1;\n else hi = mid;\n }\n return ellipsis + text.slice(lo);\n } else {\n while (lo < hi) {\n mid = 1 + (lo + hi >>> 1);\n if (width(text.slice(0, mid)) < limit) lo = mid;\n else hi = mid - 1;\n }\n return text.slice(0, lo) + ellipsis;\n }\n}\n\nexport function fontFamily(item, quote) {\n var font = item.font;\n return (quote && font\n ? String(font).replace(/\"/g, '\\'')\n : font) || 'sans-serif';\n}\n\nexport function font(item, quote) {\n return '' +\n (item.fontStyle ? item.fontStyle + ' ' : '') +\n (item.fontVariant ? item.fontVariant + ' ' : '') +\n (item.fontWeight ? item.fontWeight + ' ' : '') +\n fontSize(item) + 'px ' +\n fontFamily(item, quote);\n}\n\nexport function offset(item) {\n // perform our own font baseline calculation\n // why? not all browsers support SVG 1.1 'alignment-baseline' :(\n var baseline = item.baseline,\n h = fontSize(item);\n return Math.round(\n baseline === 'top' ? 0.79*h :\n baseline === 'middle' ? 0.30*h :\n baseline === 'bottom' ? -0.21*h : 0\n );\n}\n","import {shape} from '../path/shapes';\nimport markItemPath from './markItemPath';\n\nexport default markItemPath('shape', shape);\n","import {symbol} from '../path/shapes';\nimport {intersectPoint} from '../util/intersect';\nimport markItemPath from './markItemPath';\n\nexport default markItemPath('symbol', symbol, intersectPoint);\n","import Bounds from '../Bounds';\nimport {DegToRad, HalfPi} from '../util/constants';\nimport {font, offset, textMetrics, textValue} from '../util/text';\nimport {intersectBoxLine} from '../util/intersect';\nimport {visit} from '../util/visit';\nimport fill from '../util/canvas/fill';\nimport {pick} from '../util/canvas/pick';\nimport stroke from '../util/canvas/stroke';\nimport {translate, rotate} from '../util/svg/transform';\n\nvar textAlign = {\n 'left': 'start',\n 'center': 'middle',\n 'right': 'end'\n};\n\nvar tempBounds = new Bounds();\n\nfunction anchorPoint(item) {\n var x = item.x || 0,\n y = item.y || 0,\n r = item.radius || 0, t;\n\n if (r) {\n t = (item.theta || 0) - HalfPi;\n x += r * Math.cos(t);\n y += r * Math.sin(t);\n }\n\n tempBounds.x1 = x;\n tempBounds.y1 = y;\n return tempBounds;\n}\n\nfunction attr(emit, item) {\n var dx = item.dx || 0,\n dy = (item.dy || 0) + offset(item),\n p = anchorPoint(item),\n x = p.x1,\n y = p.y1,\n a = item.angle || 0, t;\n\n emit('text-anchor', textAlign[item.align] || 'start');\n\n if (a) {\n t = translate(x, y) + ' ' + rotate(a);\n if (dx || dy) t += ' ' + translate(dx, dy);\n } else {\n t = translate(x + dx, y + dy);\n }\n emit('transform', t);\n}\n\nfunction bound(bounds, item, mode) {\n var h = textMetrics.height(item),\n a = item.align,\n p = anchorPoint(item),\n x = p.x1,\n y = p.y1,\n dx = item.dx || 0,\n dy = (item.dy || 0) + offset(item) - Math.round(0.8*h), // use 4/5 offset\n w;\n\n // horizontal alignment\n w = textMetrics.width(item);\n if (a === 'center') {\n dx -= (w / 2);\n } else if (a === 'right') {\n dx -= w;\n } else {\n // left by default, do nothing\n }\n\n bounds.set(dx+=x, dy+=y, dx+w, dy+h);\n if (item.angle && !mode) {\n bounds.rotate(item.angle * DegToRad, x, y);\n } else if (mode === 2) {\n return bounds.rotatedPoints(item.angle * DegToRad, x, y);\n }\n return bounds;\n}\n\nfunction draw(context, scene, bounds) {\n visit(scene, function(item) {\n var opacity, p, x, y, str;\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n if (!(str = textValue(item))) return; // get text string\n\n opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity === 0 || item.fontSize <= 0) return;\n\n context.font = font(item);\n context.textAlign = item.align || 'left';\n\n p = anchorPoint(item);\n x = p.x1,\n y = p.y1;\n\n if (item.angle) {\n context.save();\n context.translate(x, y);\n context.rotate(item.angle * DegToRad);\n x = y = 0; // reset x, y\n }\n x += (item.dx || 0);\n y += (item.dy || 0) + offset(item);\n\n if (item.fill && fill(context, item, opacity)) {\n context.fillText(str, x, y);\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.strokeText(str, x, y);\n }\n if (item.angle) context.restore();\n });\n}\n\nfunction hit(context, item, x, y, gx, gy) {\n if (item.fontSize <= 0) return false;\n if (!item.angle) return true; // bounds sufficient if no rotation\n\n // project point into space of unrotated bounds\n var p = anchorPoint(item),\n ax = p.x1,\n ay = p.y1,\n b = bound(tempBounds, item, 1),\n a = -item.angle * DegToRad,\n cos = Math.cos(a),\n sin = Math.sin(a),\n px = cos * gx - sin * gy + (ax - cos * ax + sin * ay),\n py = sin * gx + cos * gy + (ay - sin * ax - cos * ay);\n\n return b.contains(px, py);\n}\n\nfunction intersectText(item, box) {\n var p = bound(tempBounds, item, 2);\n return intersectBoxLine(box, p[0], p[1], p[2], p[3])\n || intersectBoxLine(box, p[0], p[1], p[4], p[5])\n || intersectBoxLine(box, p[4], p[5], p[6], p[7])\n || intersectBoxLine(box, p[2], p[3], p[6], p[7]);\n}\n\nexport default {\n type: 'text',\n tag: 'text',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick(hit),\n isect: intersectText\n};\n","import arc from './arc';\nimport area from './area';\nimport group from './group';\nimport image from './image';\nimport line from './line';\nimport path from './path';\nimport rect from './rect';\nimport rule from './rule';\nimport shape from './shape';\nimport symbol from './symbol';\nimport text from './text';\nimport trail from './trail';\n\nexport default {\n arc: arc,\n area: area,\n group: group,\n image: image,\n line: line,\n path: path,\n rect: rect,\n rule: rule,\n shape: shape,\n symbol: symbol,\n text: text,\n trail: trail\n};\n","import {trail} from '../path/shapes';\nimport {pickTrail} from '../util/pickPath';\nimport markMultiItemPath from './markMultiItemPath';\n\nexport default markMultiItemPath('trail', trail, pickTrail);\n","import Bounds from '../Bounds';\nimport marks from '../marks/index';\n\nexport default function(item, func, opt) {\n var type = marks[item.mark.marktype],\n bound = func || type.bound;\n if (type.nested) item = item.mark;\n\n return bound(item.bounds || (item.bounds = new Bounds()), item, opt);\n}\n","import Bounds from '../Bounds';\nimport boundItem from './boundItem';\nimport marks from '../marks/index';\n\nvar DUMMY = {mark: null};\n\nexport default function(mark, bounds, opt) {\n var type = marks[mark.marktype],\n bound = type.bound,\n items = mark.items,\n hasItems = items && items.length,\n i, n, item, b;\n\n if (type.nested) {\n if (hasItems) {\n item = items[0];\n } else {\n // no items, fake it\n DUMMY.mark = mark;\n item = DUMMY;\n }\n b = boundItem(item, bound, opt);\n bounds = bounds && bounds.union(b) || b;\n return bounds;\n }\n\n bounds = bounds\n || mark.bounds && mark.bounds.clear()\n || new Bounds();\n\n if (hasItems) {\n for (i=0, n=items.length; i<n; ++i) {\n bounds.union(boundItem(items[i], bound, opt));\n }\n }\n\n return mark.bounds = bounds;\n}\n","import boundMark from '../bound/boundMark';\n\nvar keys = [\n 'marktype', 'name', 'role', 'interactive', 'clip', 'items', 'zindex',\n 'x', 'y', 'width', 'height', 'align', 'baseline', // layout\n 'fill', 'fillOpacity', 'opacity', // fill\n 'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap', // stroke\n 'strokeDash', 'strokeDashOffset', // stroke dash\n 'startAngle', 'endAngle', 'innerRadius', 'outerRadius', // arc\n 'cornerRadius', 'padAngle', // arc, rect\n 'interpolate', 'tension', 'orient', 'defined', // area, line\n 'url', // image\n 'path', // path\n 'x2', 'y2', // rule\n 'size', 'shape', // symbol\n 'text', 'angle', 'theta', 'radius', 'dx', 'dy', // text\n 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant' // font\n];\n\nexport function sceneToJSON(scene, indent) {\n return JSON.stringify(scene, keys, indent);\n}\n\nexport function sceneFromJSON(json) {\n var scene = (typeof json === 'string' ? JSON.parse(json) : json);\n return initialize(scene);\n}\n\nfunction initialize(scene) {\n var type = scene.marktype,\n items = scene.items,\n parent, i, n;\n\n if (items) {\n for (i=0, n=items.length; i<n; ++i) {\n parent = type ? 'mark' : 'group';\n items[i][parent] = scene;\n if (items[i].zindex) items[i][parent].zdirty = true;\n if ('group' === (type || parent)) initialize(items[i]);\n }\n }\n\n if (type) boundMark(scene);\n return scene;\n}\n","import Bounds from './Bounds';\nimport GroupItem from './GroupItem';\nimport {sceneFromJSON, sceneToJSON} from './util/serialize';\n\nexport default function Scenegraph(scene) {\n if (arguments.length) {\n this.root = sceneFromJSON(scene);\n } else {\n this.root = createMark({\n marktype: 'group',\n name: 'root',\n role: 'frame'\n });\n this.root.items = [new GroupItem(this.root)];\n }\n}\n\nvar prototype = Scenegraph.prototype;\n\nprototype.toJSON = function(indent) {\n return sceneToJSON(this.root, indent || 0);\n};\n\nprototype.mark = function(markdef, group, index) {\n group = group || this.root.items[0];\n var mark = createMark(markdef, group);\n group.items[index] = mark;\n if (mark.zindex) mark.group.zdirty = true;\n return mark;\n};\n\nfunction createMark(def, group) {\n return {\n bounds: new Bounds(),\n clip: !!def.clip,\n group: group,\n interactive: def.interactive === false ? false : true,\n items: [],\n marktype: def.marktype,\n name: def.name || undefined,\n role: def.role || undefined,\n zindex: def.zindex || 0\n };\n}\n","// create a new DOM element\nexport function domCreate(doc, tag, ns) {\n if (!doc && typeof document !== 'undefined' && document.createElement) {\n doc = document;\n }\n return doc\n ? (ns ? doc.createElementNS(ns, tag) : doc.createElement(tag))\n : null;\n}\n\n// find first child element with matching tag\nexport function domFind(el, tag) {\n tag = tag.toLowerCase();\n var nodes = el.childNodes, i = 0, n = nodes.length;\n for (; i<n; ++i) if (nodes[i].tagName.toLowerCase() === tag) {\n return nodes[i];\n }\n}\n\n// retrieve child element at given index\n// create & insert if doesn't exist or if tags do not match\nexport function domChild(el, index, tag, ns) {\n var a = el.childNodes[index], b;\n if (!a || a.tagName.toLowerCase() !== tag.toLowerCase()) {\n b = a || null;\n a = domCreate(el.ownerDocument, tag, ns);\n el.insertBefore(a, b);\n }\n return a;\n}\n\n// remove all child elements at or above the given index\nexport function domClear(el, index) {\n var nodes = el.childNodes,\n curr = nodes.length;\n while (curr > index) el.removeChild(nodes[--curr]);\n return el;\n}\n\n// generate css class name for mark\nexport function cssClass(mark) {\n return 'mark-' + mark.marktype\n + (mark.role ? ' role-' + mark.role : '')\n + (mark.name ? ' ' + mark.name : '');\n}\n","export default function(event, el) {\n var rect = el.getBoundingClientRect();\n return [\n event.clientX - rect.left - (el.clientLeft || 0),\n event.clientY - rect.top - (el.clientTop || 0)\n ];\n}\n","import {domCreate} from './util/dom';\nimport resolveItem from './util/resolveItem';\nimport {loader} from 'vega-loader';\n\n/**\n * Create a new Handler instance.\n * @param {object} [customLoader] - Optional loader instance for\n * href URL sanitization. If not specified, a standard loader\n * instance will be generated.\n * @param {function} [customTooltip] - Optional tooltip handler\n * function for custom tooltip display.\n * @constructor\n */\nexport default function Handler(customLoader, customTooltip) {\n this._active = null;\n this._handlers = {};\n this._loader = customLoader || loader();\n this._tooltip = customTooltip || defaultTooltip;\n}\n\n// The default tooltip display handler.\n// Sets the HTML title attribute on the visualization container.\nfunction defaultTooltip(handler, event, item, value) {\n handler.element().setAttribute('title', value || '');\n}\n\nvar prototype = Handler.prototype;\n\n/**\n * Initialize a new Handler instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {Array<number>} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {object} [obj] - Optional context object that should serve as\n * the \"this\" context for event callbacks.\n * @return {Handler} - This handler instance.\n */\nprototype.initialize = function(el, origin, obj) {\n this._el = el;\n this._obj = obj || null;\n return this.origin(origin);\n};\n\n/**\n * Returns the parent container element for a visualization.\n * @return {DOMElement} - The containing DOM element.\n */\nprototype.element = function() {\n return this._el;\n};\n\n/**\n * Returns the scene element (e.g., canvas or SVG) of the visualization\n * Subclasses must override if the first child is not the scene element.\n * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n */\nprototype.canvas = function() {\n return this._el && this._el.firstChild;\n};\n\n/**\n * Get / set the origin coordinates of the visualization.\n */\nprototype.origin = function(origin) {\n if (arguments.length) {\n this._origin = origin || [0, 0];\n return this;\n } else {\n return this._origin.slice();\n }\n};\n\n/**\n * Get / set the scenegraph root.\n */\nprototype.scene = function(scene) {\n if (!arguments.length) return this._scene;\n this._scene = scene;\n return this;\n};\n\n/**\n * Add an event handler. Subclasses should override this method.\n */\nprototype.on = function(/*type, handler*/) {};\n\n/**\n * Remove an event handler. Subclasses should override this method.\n */\nprototype.off = function(/*type, handler*/) {};\n\n/**\n * Utility method for finding the array index of an event handler.\n * @param {Array} h - An array of registered event handlers.\n * @param {string} type - The event type.\n * @param {function} handler - The event handler instance to find.\n * @return {number} - The handler's array index or -1 if not registered.\n */\nprototype._handlerIndex = function(h, type, handler) {\n for (var i = h ? h.length : 0; --i>=0;) {\n if (h[i].type === type && (!handler || h[i].handler === handler)) {\n return i;\n }\n }\n return -1;\n};\n\n/**\n * Returns an array with registered event handlers.\n * @param {string} [type] - The event type to query. Any annotations\n * are ignored; for example, for the argument \"click.foo\", \".foo\" will\n * be ignored and the method returns all \"click\" handlers. If type is\n * null or unspecified, this method returns handlers for all types.\n * @return {Array} - A new array containing all registered event handlers.\n */\nprototype.handlers = function(type) {\n var h = this._handlers, a = [], k;\n if (type) {\n a.push.apply(a, h[this.eventName(type)]);\n } else {\n for (k in h) { a.push.apply(a, h[k]); }\n }\n return a;\n};\n\n/**\n * Parses an event name string to return the specific event type.\n * For example, given \"click.foo\" returns \"click\"\n * @param {string} name - The input event type string.\n * @return {string} - A string with the event type only.\n */\nprototype.eventName = function(name) {\n var i = name.indexOf('.');\n return i < 0 ? name : name.slice(0,i);\n};\n\n/**\n * Handle hyperlink navigation in response to an item.href value.\n * @param {Event} event - The event triggering hyperlink navigation.\n * @param {Item} item - The scenegraph item.\n * @param {string} href - The URL to navigate to.\n */\nprototype.handleHref = function(event, item, href) {\n this._loader\n .sanitize(href, {context:'href'})\n .then(function(opt) {\n var e = new MouseEvent(event.type, event),\n a = domCreate(null, 'a');\n for (var name in opt) a.setAttribute(name, opt[name]);\n a.dispatchEvent(e);\n })\n .catch(function() { /* do nothing */ });\n};\n\n/**\n * Handle tooltip display in response to an item.tooltip value.\n * @param {Event} event - The event triggering tooltip display.\n * @param {Item} item - The scenegraph item.\n * @param {boolean} show - A boolean flag indicating whether\n * to show or hide a tooltip for the given item.\n */\nprototype.handleTooltip = function(event, item, show) {\n if (item && item.tooltip != null) {\n item = resolveItem(item, event, this.canvas(), this._origin);\n var value = (show && item && item.tooltip) || null;\n this._tooltip.call(this._obj, this, event, item, value);\n }\n};\n\n/**\n * Returns the size of a scenegraph item and its position relative\n * to the viewport.\n * @param {Item} item - The scenegraph item.\n * @return {object} - A bounding box object (compatible with the\n * DOMRect type) consisting of x, y, width, heigh, top, left,\n * right, and bottom properties.\n */\nprototype.getItemBoundingClientRect = function(item) {\n if (!(el = this.canvas())) return;\n\n var el, rect = el.getBoundingClientRect(),\n origin = this._origin,\n itemBounds = item.bounds,\n x = itemBounds.x1 + origin[0] + rect.left,\n y = itemBounds.y1 + origin[1] + rect.top,\n w = itemBounds.width(),\n h = itemBounds.height();\n\n // translate coordinate for each parent group\n while (item.mark && (item = item.mark.group)) {\n x += item.x || 0;\n y += item.y || 0;\n }\n\n // return DOMRect-compatible bounding box\n return {\n x: x,\n y: y,\n width: w,\n height: h,\n left: x,\n top: y,\n right: x + w,\n bottom: y + h\n };\n};\n","import ResourceLoader from './ResourceLoader';\n\n/**\n * Create a new Renderer instance.\n * @param {object} [loader] - Optional loader instance for\n * image and href URL sanitization. If not specified, a\n * standard loader instance will be generated.\n * @constructor\n */\nexport default function Renderer(loader) {\n this._el = null;\n this._bgcolor = null;\n this._loader = new ResourceLoader(loader);\n}\n\nvar prototype = Renderer.prototype;\n\n/**\n * Initialize a new Renderer instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {number} width - The coordinate width of the display, in pixels.\n * @param {number} height - The coordinate height of the display, in pixels.\n * @param {Array<number>} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {Renderer} - This renderer instance.\n */\nprototype.initialize = function(el, width, height, origin, scaleFactor) {\n this._el = el;\n return this.resize(width, height, origin, scaleFactor);\n};\n\n/**\n * Returns the parent container element for a visualization.\n * @return {DOMElement} - The containing DOM element.\n */\nprototype.element = function() {\n return this._el;\n};\n\n/**\n * Returns the scene element (e.g., canvas or SVG) of the visualization\n * Subclasses must override if the first child is not the scene element.\n * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n */\nprototype.canvas = function() {\n return this._el && this._el.firstChild;\n};\n\n/**\n * Get / set the background color.\n */\nprototype.background = function(bgcolor) {\n if (arguments.length === 0) return this._bgcolor;\n this._bgcolor = bgcolor;\n return this;\n};\n\n/**\n * Resize the display.\n * @param {number} width - The new coordinate width of the display, in pixels.\n * @param {number} height - The new coordinate height of the display, in pixels.\n * @param {Array<number>} origin - The new origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {Renderer} - This renderer instance;\n */\nprototype.resize = function(width, height, origin, scaleFactor) {\n this._width = width;\n this._height = height;\n this._origin = origin || [0, 0];\n this._scale = scaleFactor || 1;\n return this;\n};\n\n/**\n * Report a dirty item whose bounds should be redrawn.\n * This base class method does nothing. Subclasses that perform\n * incremental should implement this method.\n * @param {Item} item - The dirty item whose bounds should be redrawn.\n */\nprototype.dirty = function(/*item*/) {\n};\n\n/**\n * Render an input scenegraph, potentially with a set of dirty items.\n * This method will perform an immediate rendering with available resources.\n * The renderer may also need to perform image loading to perform a complete\n * render. This process can lead to asynchronous re-rendering of the scene\n * after this method returns. To receive notification when rendering is\n * complete, use the renderAsync method instead.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @return {Renderer} - This renderer instance.\n */\nprototype.render = function(scene) {\n var r = this;\n\n // bind arguments into a render call, and cache it\n // this function may be subsequently called for async redraw\n r._call = function() { r._render(scene); };\n\n // invoke the renderer\n r._call();\n\n // clear the cached call for garbage collection\n // async redraws will stash their own copy\n r._call = null;\n\n return r;\n};\n\n/**\n * Internal rendering method. Renderer subclasses should override this\n * method to actually perform rendering.\n * @param {object} scene - The root mark of a scenegraph to render.\n */\nprototype._render = function(/*scene*/) {\n // subclasses to override\n};\n\n/**\n * Asynchronous rendering method. Similar to render, but returns a Promise\n * that resolves when all rendering is completed. Sometimes a renderer must\n * perform image loading to get a complete rendering. The returned\n * Promise will not resolve until this process completes.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @return {Promise} - A Promise that resolves when rendering is complete.\n */\nprototype.renderAsync = function(scene) {\n var r = this.render(scene);\n return this._ready\n ? this._ready.then(function() { return r; })\n : Promise.resolve(r);\n};\n\n/**\n * Internal method for asynchronous resource loading.\n * Proxies method calls to the ImageLoader, and tracks loading\n * progress to invoke a re-render once complete.\n * @param {string} method - The method name to invoke on the ImageLoader.\n * @param {string} uri - The URI for the requested resource.\n * @return {Promise} - A Promise that resolves to the requested resource.\n */\nprototype._load = function(method, uri) {\n var r = this,\n p = r._loader[method](uri);\n\n if (!r._ready) {\n // re-render the scene when loading completes\n var call = r._call;\n r._ready = r._loader.ready()\n .then(function(redraw) {\n if (redraw) call();\n r._ready = null;\n });\n }\n\n return p;\n};\n\n/**\n * Sanitize a URL to include as a hyperlink in the rendered scene.\n * This method proxies a call to ImageLoader.sanitizeURL, but also tracks\n * image loading progress and invokes a re-render once complete.\n * @param {string} uri - The URI string to sanitize.\n * @return {Promise} - A Promise that resolves to the sanitized URL.\n */\nprototype.sanitizeURL = function(uri) {\n return this._load('sanitizeURL', uri);\n};\n\n/**\n * Requests an image to include in the rendered scene.\n * This method proxies a call to ImageLoader.loadImage, but also tracks\n * image loading progress and invokes a re-render once complete.\n * @param {string} uri - The URI string of the image.\n * @return {Promise} - A Promise that resolves to the loaded Image.\n */\nprototype.loadImage = function(uri) {\n return this._load('loadImage', uri);\n};\n","import marks from '../marks/index';\nimport point from './point';\n\nexport default function(item, event, el, origin) {\n var mark = item && item.mark,\n mdef, p;\n\n if (mark && (mdef = marks[mark.marktype]).tip) {\n p = point(event, el);\n p[0] -= origin[0];\n p[1] -= origin[1];\n while (item = item.mark.group) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n }\n item = mdef.tip(mark.items, p);\n }\n\n return item;\n}\n","export var Events = [\n 'keydown',\n 'keypress',\n 'keyup',\n 'dragenter',\n 'dragleave',\n 'dragover',\n 'mousedown',\n 'mouseup',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'click',\n 'dblclick',\n 'wheel',\n 'mousewheel',\n 'touchstart',\n 'touchmove',\n 'touchend'\n];\n\nexport var TooltipShowEvent = 'mousemove';\n\nexport var TooltipHideEvent = 'mouseout';\n\nexport var HrefEvent = 'click';\n","import Handler from './Handler';\nimport Marks from './marks/index';\nimport {Events, HrefEvent, TooltipShowEvent, TooltipHideEvent} from './util/events';\nimport point from './util/point';\nimport {domFind} from './util/dom';\nimport {inherits} from 'vega-util';\n\nexport default function CanvasHandler(loader, tooltip) {\n Handler.call(this, loader, tooltip);\n this._down = null;\n this._touch = null;\n this._first = true;\n}\n\nvar prototype = inherits(CanvasHandler, Handler);\n\nprototype.initialize = function(el, origin, obj) {\n // add event listeners\n var canvas = this._canvas = el && domFind(el, 'canvas');\n if (canvas) {\n var that = this;\n this.events.forEach(function(type) {\n canvas.addEventListener(type, function(evt) {\n if (prototype[type]) {\n prototype[type].call(that, evt);\n } else {\n that.fire(type, evt);\n }\n });\n });\n }\n\n return Handler.prototype.initialize.call(this, el, origin, obj);\n};\n\n// return the backing canvas instance\nprototype.canvas = function() {\n return this._canvas;\n};\n\n// retrieve the current canvas context\nprototype.context = function() {\n return this._canvas.getContext('2d');\n};\n\n// supported events\nprototype.events = Events;\n\n// to keep old versions of firefox happy\nprototype.DOMMouseScroll = function(evt) {\n this.fire('mousewheel', evt);\n};\n\nfunction move(moveEvent, overEvent, outEvent) {\n return function(evt) {\n var a = this._active,\n p = this.pickEvent(evt);\n\n if (p === a) {\n // active item and picked item are the same\n this.fire(moveEvent, evt); // fire move\n } else {\n // active item and picked item are different\n if (!a || !a.exit) {\n // fire out for prior active item\n // suppress if active item was removed from scene\n this.fire(outEvent, evt);\n }\n this._active = p; // set new active item\n this.fire(overEvent, evt); // fire over for new active item\n this.fire(moveEvent, evt); // fire move for new active item\n }\n };\n}\n\nfunction inactive(type) {\n return function(evt) {\n this.fire(type, evt);\n this._active = null;\n };\n}\n\nprototype.mousemove = move('mousemove', 'mouseover', 'mouseout');\nprototype.dragover = move('dragover', 'dragenter', 'dragleave');\n\nprototype.mouseout = inactive('mouseout');\nprototype.dragleave = inactive('dragleave');\n\nprototype.mousedown = function(evt) {\n this._down = this._active;\n this.fire('mousedown', evt);\n};\n\nprototype.click = function(evt) {\n if (this._down === this._active) {\n this.fire('click', evt);\n this._down = null;\n }\n};\n\nprototype.touchstart = function(evt) {\n this._touch = this.pickEvent(evt.changedTouches[0]);\n\n if (this._first) {\n this._active = this._touch;\n this._first = false;\n }\n\n this.fire('touchstart', evt, true);\n};\n\nprototype.touchmove = function(evt) {\n this.fire('touchmove', evt, true);\n};\n\nprototype.touchend = function(evt) {\n this.fire('touchend', evt, true);\n this._touch = null;\n};\n\n// fire an event\nprototype.fire = function(type, evt, touch) {\n var a = touch ? this._touch : this._active,\n h = this._handlers[type], i, len;\n\n // set event type relative to scenegraph items\n evt.vegaType = type;\n\n // handle hyperlinks and tooltips first\n if (type === HrefEvent && a && a.href) {\n this.handleHref(evt, a, a.href);\n } else if (type === TooltipShowEvent || type === TooltipHideEvent) {\n this.handleTooltip(evt, a, type !== TooltipHideEvent);\n }\n\n // invoke all registered handlers\n if (h) {\n for (i=0, len=h.length; i<len; ++i) {\n h[i].handler.call(this._obj, evt, a);\n }\n }\n};\n\n// add an event handler\nprototype.on = function(type, handler) {\n var name = this.eventName(type),\n h = this._handlers,\n i = this._handlerIndex(h[name], type, handler);\n\n if (i < 0) {\n (h[name] || (h[name] = [])).push({\n type: type,\n handler: handler\n });\n }\n\n return this;\n};\n\n// remove an event handler\nprototype.off = function(type, handler) {\n var name = this.eventName(type),\n h = this._handlers[name],\n i = this._handlerIndex(h, type, handler);\n\n if (i >= 0) {\n h.splice(i, 1);\n }\n\n return this;\n};\n\nprototype.pickEvent = function(evt) {\n var p = point(evt, this._canvas),\n o = this._origin;\n return this.pick(this._scene, p[0], p[1], p[0] - o[0], p[1] - o[1]);\n};\n\n// find the scenegraph item at the current mouse position\n// x, y -- the absolute x, y mouse coordinates on the canvas element\n// gx, gy -- the relative coordinates within the current group\nprototype.pick = function(scene, x, y, gx, gy) {\n var g = this.context(),\n mark = Marks[scene.marktype];\n return mark.pick.call(this, g, scene, x, y, gx, gy);\n};\n","function devicePixelRatio() {\n return typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n}\n\nvar pixelRatio = devicePixelRatio();\n\nexport default function(canvas, width, height, origin, scaleFactor, opt) {\n var inDOM = typeof HTMLElement !== 'undefined'\n && canvas instanceof HTMLElement\n && canvas.parentNode != null;\n\n var context = canvas.getContext('2d'),\n ratio = inDOM ? pixelRatio : scaleFactor,\n key;\n\n canvas.width = width * ratio;\n canvas.height = height * ratio;\n\n for (key in opt) {\n context[key] = opt[key];\n }\n\n if (inDOM && ratio !== 1) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n\n context.pixelRatio = ratio;\n context.setTransform(\n ratio, 0, 0, ratio,\n ratio * origin[0],\n ratio * origin[1]\n );\n\n return canvas;\n}\n","import Renderer from './Renderer';\nimport Bounds from './Bounds';\nimport marks from './marks/index';\n\nimport {domClear} from './util/dom';\nimport clip from './util/canvas/clip';\nimport resize from './util/canvas/resize';\nimport {canvas} from 'vega-canvas';\nimport {inherits} from 'vega-util';\n\nexport default function CanvasRenderer(loader) {\n Renderer.call(this, loader);\n this._redraw = false;\n this._dirty = new Bounds();\n}\n\nvar prototype = inherits(CanvasRenderer, Renderer),\n base = Renderer.prototype,\n tempBounds = new Bounds();\n\nprototype.initialize = function(el, width, height, origin, scaleFactor, options) {\n this._options = options;\n this._canvas = canvas(1, 1, options && options.type); // instantiate a small canvas\n\n if (el) {\n domClear(el, 0).appendChild(this._canvas);\n this._canvas.setAttribute('class', 'marks');\n }\n // this method will invoke resize to size the canvas appropriately\n return base.initialize.call(this, el, width, height, origin, scaleFactor);\n};\n\nprototype.resize = function(width, height, origin, scaleFactor) {\n base.resize.call(this, width, height, origin, scaleFactor);\n resize(this._canvas, this._width, this._height,\n this._origin, this._scale, this._options && this._options.context);\n this._redraw = true;\n return this;\n};\n\nprototype.canvas = function() {\n return this._canvas;\n};\n\nprototype.context = function() {\n return this._canvas ? this._canvas.getContext('2d') : null;\n};\n\nprototype.dirty = function(item) {\n var b = translate(item.bounds, item.mark.group);\n this._dirty.union(b);\n};\n\nfunction clipToBounds(g, b, origin) {\n // expand bounds by 1 pixel, then round to pixel boundaries\n b.expand(1).round();\n\n // to avoid artifacts translate if origin has fractional pixels\n b.translate(-(origin[0] % 1), -(origin[1] % 1));\n\n // set clipping path\n g.beginPath();\n g.rect(b.x1, b.y1, b.width(), b.height());\n g.clip();\n\n return b;\n}\n\nfunction translate(bounds, group) {\n if (group == null) return bounds;\n var b = tempBounds.clear().union(bounds);\n for (; group != null; group = group.mark.group) {\n b.translate(group.x || 0, group.y || 0);\n }\n return b;\n}\n\nprototype._render = function(scene) {\n var g = this.context(),\n o = this._origin,\n w = this._width,\n h = this._height,\n b = this._dirty;\n\n // setup\n g.save();\n if (this._redraw || b.empty()) {\n this._redraw = false;\n b = null;\n } else {\n b = clipToBounds(g, b, o);\n }\n\n this.clear(-o[0], -o[1], w, h);\n\n // render\n this.draw(g, scene, b);\n\n // takedown\n g.restore();\n\n this._dirty.clear();\n return this;\n};\n\nprototype.draw = function(ctx, scene, bounds) {\n var mark = marks[scene.marktype];\n if (scene.clip) clip(ctx, scene);\n mark.draw.call(this, ctx, scene, bounds);\n if (scene.clip) ctx.restore();\n};\n\nprototype.clear = function(x, y, w, h) {\n var g = this.context();\n g.clearRect(x, y, w, h);\n if (this._bgcolor != null) {\n g.fillStyle = this._bgcolor;\n g.fillRect(x, y, w, h);\n }\n};\n","import Handler from './Handler';\nimport {domFind} from './util/dom';\nimport {HrefEvent, TooltipShowEvent, TooltipHideEvent} from './util/events';\nimport {inherits} from 'vega-util';\n\nexport default function SVGHandler(loader, tooltip) {\n Handler.call(this, loader, tooltip);\n var h = this;\n h._hrefHandler = listener(h, function(evt, item) {\n if (item && item.href) h.handleHref(evt, item, item.href);\n });\n h._tooltipHandler = listener(h, function(evt, item) {\n h.handleTooltip(evt, item, evt.type !== TooltipHideEvent);\n });\n}\n\nvar prototype = inherits(SVGHandler, Handler);\n\nprototype.initialize = function(el, origin, obj) {\n var svg = this._svg;\n if (svg) {\n svg.removeEventListener(HrefEvent, this._hrefHandler);\n svg.removeEventListener(TooltipShowEvent, this._tooltipHandler);\n svg.removeEventListener(TooltipHideEvent, this._tooltipHandler);\n }\n this._svg = svg = el && domFind(el, 'svg');\n if (svg) {\n svg.addEventListener(HrefEvent, this._hrefHandler);\n svg.addEventListener(TooltipShowEvent, this._tooltipHandler);\n svg.addEventListener(TooltipHideEvent, this._tooltipHandler);\n }\n return Handler.prototype.initialize.call(this, el, origin, obj);\n};\n\nprototype.canvas = function() {\n return this._svg;\n};\n\n// wrap an event listener for the SVG DOM\nfunction listener(context, handler) {\n return function(evt) {\n var target = evt.target,\n item = target.__data__;\n evt.vegaType = evt.type;\n item = Array.isArray(item) ? item[0] : item;\n handler.call(context._obj, evt, item);\n };\n}\n\n// add an event handler\nprototype.on = function(type, handler) {\n var name = this.eventName(type),\n h = this._handlers,\n i = this._handlerIndex(h[name], type, handler);\n\n if (i < 0) {\n var x = {\n type: type,\n handler: handler,\n listener: listener(this, handler)\n };\n\n (h[name] || (h[name] = [])).push(x);\n if (this._svg) {\n this._svg.addEventListener(name, x.listener);\n }\n }\n\n return this;\n};\n\n// remove an event handler\nprototype.off = function(type, handler) {\n var name = this.eventName(type),\n h = this._handlers[name],\n i = this._handlerIndex(h, type, handler);\n\n if (i >= 0) {\n if (this._svg) {\n this._svg.removeEventListener(name, h[i].listener);\n }\n h.splice(i, 1);\n }\n\n return this;\n};\n","import {isFunction} from 'vega-util';\n\nexport default function(context, scene) {\n var clip = scene.clip;\n\n context.save();\n context.beginPath();\n\n if (isFunction(clip)) {\n clip(context);\n } else {\n var group = scene.group;\n context.rect(0, 0, group.width || 0, group.height || 0);\n }\n\n context.clip();\n}\n","// generate string for an opening xml tag\n// tag: the name of the xml tag\n// attr: hash of attribute name-value pairs to include\n// raw: additional raw string to include in tag markup\nexport function openTag(tag, attr, raw) {\n var s = '<' + tag, key, val;\n if (attr) {\n for (key in attr) {\n val = attr[key];\n if (val != null) {\n s += ' ' + key + '=\"' + val + '\"';\n }\n }\n }\n if (raw) s += ' ' + raw;\n return s + '>';\n}\n\n// generate string for closing xml tag\n// tag: the name of the xml tag\nexport function closeTag(tag) {\n return '</' + tag + '>';\n}\n","export default {\n 'version': '1.1',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'xmlns:xlink': 'http://www.w3.org/1999/xlink'\n};","export var styles = {\n 'fill': 'fill',\n 'fillOpacity': 'fill-opacity',\n 'stroke': 'stroke',\n 'strokeOpacity': 'stroke-opacity',\n 'strokeWidth': 'stroke-width',\n 'strokeCap': 'stroke-linecap',\n 'strokeJoin': 'stroke-linejoin',\n 'strokeDash': 'stroke-dasharray',\n 'strokeDashOffset': 'stroke-dashoffset',\n 'strokeMiterLimit': 'stroke-miterlimit',\n 'opacity': 'opacity'\n};\n\nexport var styleProperties = Object.keys(styles);\n","import Renderer from './Renderer';\nimport {gradientRef, isGradient, patternPrefix} from './Gradient';\nimport marks from './marks/index';\nimport {domChild, domClear, domCreate, cssClass} from './util/dom';\nimport {openTag, closeTag} from './util/tags';\nimport {fontFamily, fontSize, textValue} from './util/text';\nimport {visit} from './util/visit';\nimport clip from './util/svg/clip';\nimport metadata from './util/svg/metadata';\nimport {styles, styleProperties} from './util/svg/styles';\nimport {inherits} from 'vega-util';\n\nvar ns = metadata.xmlns;\n\nexport default function SVGRenderer(loader) {\n Renderer.call(this, loader);\n this._dirtyID = 1;\n this._dirty = [];\n this._svg = null;\n this._root = null;\n this._defs = null;\n}\n\nvar prototype = inherits(SVGRenderer, Renderer);\nvar base = Renderer.prototype;\n\nprototype.initialize = function(el, width, height, padding) {\n if (el) {\n this._svg = domChild(el, 0, 'svg', ns);\n this._svg.setAttribute('class', 'marks');\n domClear(el, 1);\n // set the svg root group\n this._root = domChild(this._svg, 0, 'g', ns);\n domClear(this._svg, 1);\n }\n\n // create the svg definitions cache\n this._defs = {\n gradient: {},\n clipping: {}\n };\n\n // set background color if defined\n this.background(this._bgcolor);\n\n return base.initialize.call(this, el, width, height, padding);\n};\n\nprototype.background = function(bgcolor) {\n if (arguments.length && this._svg) {\n this._svg.style.setProperty('background-color', bgcolor);\n }\n return base.background.apply(this, arguments);\n};\n\nprototype.resize = function(width, height, origin, scaleFactor) {\n base.resize.call(this, width, height, origin, scaleFactor);\n\n if (this._svg) {\n this._svg.setAttribute('width', this._width * this._scale);\n this._svg.setAttribute('height', this._height * this._scale);\n this._svg.setAttribute('viewBox', '0 0 ' + this._width + ' ' + this._height);\n this._root.setAttribute('transform', 'translate(' + this._origin + ')');\n }\n\n this._dirty = [];\n\n return this;\n};\n\nprototype.canvas = function() {\n return this._svg;\n};\n\nprototype.svg = function() {\n if (!this._svg) return null;\n\n var attr = {\n class: 'marks',\n width: this._width * this._scale,\n height: this._height * this._scale,\n viewBox: '0 0 ' + this._width + ' ' + this._height\n };\n for (var key in metadata) {\n attr[key] = metadata[key];\n }\n\n var bg = !this._bgcolor ? ''\n : (openTag('rect', {\n width: this._width,\n height: this._height,\n style: 'fill: ' + this._bgcolor + ';'\n }) + closeTag('rect'));\n\n return openTag('svg', attr) + bg + this._svg.innerHTML + closeTag('svg');\n};\n\n\n// -- Render entry point --\n\nprototype._render = function(scene) {\n // perform spot updates and re-render markup\n if (this._dirtyCheck()) {\n if (this._dirtyAll) this._resetDefs();\n this.draw(this._root, scene);\n domClear(this._root, 1);\n }\n\n this.updateDefs();\n\n this._dirty = [];\n ++this._dirtyID;\n\n return this;\n};\n\n// -- Manage SVG definitions ('defs') block --\n\nprototype.updateDefs = function() {\n var svg = this._svg,\n defs = this._defs,\n el = defs.el,\n index = 0, id;\n\n for (id in defs.gradient) {\n if (!el) defs.el = (el = domChild(svg, 0, 'defs', ns));\n index = updateGradient(el, defs.gradient[id], index);\n }\n\n for (id in defs.clipping) {\n if (!el) defs.el = (el = domChild(svg, 0, 'defs', ns));\n index = updateClipping(el, defs.clipping[id], index);\n }\n\n // clean-up\n if (el) {\n if (index === 0) {\n svg.removeChild(el);\n defs.el = null;\n } else {\n domClear(el, index);\n }\n }\n};\n\nfunction updateGradient(el, grad, index) {\n var i, n, stop;\n\n if (grad.gradient === 'radial') {\n // SVG radial gradients automatically transform to normalized bbox\n // coordinates, in a way that is cumbersome to replicate in canvas.\n // So we wrap the radial gradient in a pattern element, allowing us\n // to mantain a circular gradient that matches what canvas provides.\n var pt = domChild(el, index++, 'pattern', ns);\n pt.setAttribute('id', patternPrefix + grad.id);\n pt.setAttribute('viewBox', '0,0,1,1');\n pt.setAttribute('width', '100%');\n pt.setAttribute('height', '100%');\n pt.setAttribute('preserveAspectRatio', 'xMidYMid slice');\n\n pt = domChild(pt, 0, 'rect', ns);\n pt.setAttribute('width', '1');\n pt.setAttribute('height', '1');\n pt.setAttribute('fill', 'url(' + href() + '#' + grad.id + ')');\n\n el = domChild(el, index++, 'radialGradient', ns);\n el.setAttribute('id', grad.id);\n el.setAttribute('fx', grad.x1);\n el.setAttribute('fy', grad.y1);\n el.setAttribute('fr', grad.r1);\n el.setAttribute('cx', grad.x2);\n el.setAttribute('cy', grad.y2);\n el.setAttribute( 'r', grad.r2);\n } else {\n el = domChild(el, index++, 'linearGradient', ns);\n el.setAttribute('id', grad.id);\n el.setAttribute('x1', grad.x1);\n el.setAttribute('x2', grad.x2);\n el.setAttribute('y1', grad.y1);\n el.setAttribute('y2', grad.y2);\n }\n\n for (i=0, n=grad.stops.length; i<n; ++i) {\n stop = domChild(el, i, 'stop', ns);\n stop.setAttribute('offset', grad.stops[i].offset);\n stop.setAttribute('stop-color', grad.stops[i].color);\n }\n domClear(el, i);\n\n return index;\n}\n\nfunction updateClipping(el, clip, index) {\n var mask;\n\n el = domChild(el, index, 'clipPath', ns);\n el.setAttribute('id', clip.id);\n\n if (clip.path) {\n mask = domChild(el, 0, 'path', ns);\n mask.setAttribute('d', clip.path);\n } else {\n mask = domChild(el, 0, 'rect', ns);\n mask.setAttribute('x', 0);\n mask.setAttribute('y', 0);\n mask.setAttribute('width', clip.width);\n mask.setAttribute('height', clip.height);\n }\n\n return index + 1;\n}\n\nprototype._resetDefs = function() {\n var def = this._defs;\n def.gradient = {};\n def.clipping = {};\n};\n\n\n// -- Manage rendering of items marked as dirty --\n\nprototype.dirty = function(item) {\n if (item.dirty !== this._dirtyID) {\n item.dirty = this._dirtyID;\n this._dirty.push(item);\n }\n};\n\nprototype.isDirty = function(item) {\n return this._dirtyAll\n || !item._svg\n || item.dirty === this._dirtyID;\n};\n\nprototype._dirtyCheck = function() {\n this._dirtyAll = true;\n var items = this._dirty;\n if (!items.length) return true;\n\n var id = ++this._dirtyID,\n item, mark, type, mdef, i, n, o;\n\n for (i=0, n=items.length; i<n; ++i) {\n item = items[i];\n mark = item.mark;\n\n if (mark.marktype !== type) {\n // memoize mark instance lookup\n type = mark.marktype;\n mdef = marks[type];\n }\n\n if (mark.zdirty && mark.dirty !== id) {\n this._dirtyAll = false;\n dirtyParents(item, id);\n mark.items.forEach(function(i) { i.dirty = id; });\n }\n if (mark.zdirty) continue; // handle in standard drawing pass\n\n if (item.exit) { // EXIT\n if (mdef.nested && mark.items.length) {\n // if nested mark with remaining points, update instead\n o = mark.items[0];\n if (o._svg) this._update(mdef, o._svg, o);\n } else if (item._svg) {\n // otherwise remove from DOM\n o = item._svg.parentNode;\n if (o) o.removeChild(item._svg);\n }\n item._svg = null;\n continue;\n }\n\n item = (mdef.nested ? mark.items[0] : item);\n if (item._update === id) continue; // already visited\n\n if (!item._svg || !item._svg.ownerSVGElement) {\n // ENTER\n this._dirtyAll = false;\n dirtyParents(item, id);\n } else {\n // IN-PLACE UPDATE\n this._update(mdef, item._svg, item);\n }\n item._update = id;\n }\n return !this._dirtyAll;\n};\n\nfunction dirtyParents(item, id) {\n for (; item && item.dirty !== id; item=item.mark.group) {\n item.dirty = id;\n if (item.mark && item.mark.dirty !== id) {\n item.mark.dirty = id;\n } else return;\n }\n}\n\n\n// -- Construct & maintain scenegraph to SVG mapping ---\n\n// Draw a mark container.\nprototype.draw = function(el, scene, prev) {\n if (!this.isDirty(scene)) return scene._svg;\n\n var renderer = this,\n svg = this._svg,\n mdef = marks[scene.marktype],\n events = scene.interactive === false ? 'none' : null,\n isGroup = mdef.tag === 'g',\n sibling = null,\n i = 0,\n parent;\n\n parent = bind(scene, el, prev, 'g', svg);\n parent.setAttribute('class', cssClass(scene));\n if (!isGroup) {\n parent.style.setProperty('pointer-events', events);\n }\n if (scene.clip) {\n parent.setAttribute('clip-path', clip(renderer, scene, scene.group));\n } else {\n parent.removeAttribute('clip-path');\n }\n\n function process(item) {\n var dirty = renderer.isDirty(item),\n node = bind(item, parent, sibling, mdef.tag, svg);\n\n if (dirty) {\n renderer._update(mdef, node, item);\n if (isGroup) recurse(renderer, node, item);\n }\n\n sibling = node;\n ++i;\n }\n\n if (mdef.nested) {\n if (scene.items.length) process(scene.items[0]);\n } else {\n visit(scene, process);\n }\n\n domClear(parent, i);\n return parent;\n};\n\n// Recursively process group contents.\nfunction recurse(renderer, el, group) {\n el = el.lastChild;\n var prev, idx = 0;\n\n visit(group, function(item) {\n prev = renderer.draw(el, item, prev);\n ++idx;\n });\n\n // remove any extraneous DOM elements\n domClear(el, 1 + idx);\n}\n\n// Bind a scenegraph item to an SVG DOM element.\n// Create new SVG elements as needed.\nfunction bind(item, el, sibling, tag, svg) {\n var node = item._svg, doc;\n\n // create a new dom node if needed\n if (!node) {\n doc = el.ownerDocument;\n node = domCreate(doc, tag, ns);\n item._svg = node;\n\n if (item.mark) {\n node.__data__ = item;\n node.__values__ = {fill: 'default'};\n\n // if group, create background and foreground elements\n if (tag === 'g') {\n var bg = domCreate(doc, 'path', ns);\n bg.setAttribute('class', 'background');\n node.appendChild(bg);\n bg.__data__ = item;\n\n var fg = domCreate(doc, 'g', ns);\n node.appendChild(fg);\n fg.__data__ = item;\n }\n }\n }\n\n // (re-)insert if (a) not contained in SVG or (b) sibling order has changed\n if (node.ownerSVGElement !== svg || hasSiblings(item) && node.previousSibling !== sibling) {\n el.insertBefore(node, sibling ? sibling.nextSibling : el.firstChild);\n }\n\n return node;\n}\n\nfunction hasSiblings(item) {\n var parent = item.mark || item.group;\n return parent && parent.items.length > 1;\n}\n\n\n// -- Set attributes & styles on SVG elements ---\n\nvar element = null, // temp var for current SVG element\n values = null; // temp var for current values hash\n\n// Extra configuration for certain mark types\nvar mark_extras = {\n group: function(mdef, el, item) {\n values = el.__values__; // use parent's values hash\n\n element = el.childNodes[1];\n mdef.foreground(emit, item, this);\n\n element = el.childNodes[0];\n mdef.background(emit, item, this);\n\n var value = item.mark.interactive === false ? 'none' : null;\n if (value !== values.events) {\n element.style.setProperty('pointer-events', value);\n values.events = value;\n }\n },\n text: function(mdef, el, item) {\n var value;\n\n value = textValue(item);\n if (value !== values.text) {\n el.textContent = value;\n values.text = value;\n }\n\n setStyle(el, 'font-family', fontFamily(item));\n setStyle(el, 'font-size', fontSize(item) + 'px');\n setStyle(el, 'font-style', item.fontStyle);\n setStyle(el, 'font-variant', item.fontVariant);\n setStyle(el, 'font-weight', item.fontWeight);\n }\n};\n\nfunction setStyle(el, name, value) {\n if (value !== values[name]) {\n if (value == null) {\n el.style.removeProperty(name);\n } else {\n el.style.setProperty(name, value + '');\n }\n values[name] = value;\n }\n}\n\nprototype._update = function(mdef, el, item) {\n // set dom element and values cache\n // provides access to emit method\n element = el;\n values = el.__values__;\n\n // apply svg attributes\n mdef.attr(emit, item, this);\n\n // some marks need special treatment\n var extra = mark_extras[mdef.type];\n if (extra) extra.call(this, mdef, el, item);\n\n // apply svg css styles\n // note: element may be modified by 'extra' method\n this.style(element, item);\n};\n\nfunction emit(name, value, ns) {\n // early exit if value is unchanged\n if (value === values[name]) return;\n\n if (value != null) {\n // if value is provided, update DOM attribute\n if (ns) {\n element.setAttributeNS(ns, name, value);\n } else {\n element.setAttribute(name, value);\n }\n } else {\n // else remove DOM attribute\n if (ns) {\n element.removeAttributeNS(ns, name);\n } else {\n element.removeAttribute(name);\n }\n }\n\n // note current value for future comparison\n values[name] = value;\n}\n\nprototype.style = function(el, o) {\n if (o == null) return;\n var i, n, prop, name, value;\n\n for (i=0, n=styleProperties.length; i<n; ++i) {\n prop = styleProperties[i];\n value = o[prop];\n\n if (prop === 'font') {\n value = fontFamily(o);\n }\n\n if (value === values[prop]) continue;\n\n name = styles[prop];\n if (value == null) {\n if (name === 'fill') {\n el.style.setProperty(name, 'none');\n } else {\n el.style.removeProperty(name);\n }\n } else {\n if (isGradient(value)) {\n value = gradientRef(value, this._defs.gradient, href());\n }\n el.style.setProperty(name, value + '');\n }\n\n values[prop] = value;\n }\n};\n\nfunction href() {\n var loc;\n return typeof window === 'undefined' ? ''\n : (loc = window.location).hash ? loc.href.slice(0, -loc.hash.length)\n : loc.href;\n}\n","import Renderer from './Renderer';\nimport {gradientRef, isGradient, patternPrefix} from './Gradient';\nimport marks from './marks/index';\nimport {cssClass} from './util/dom';\nimport {openTag, closeTag} from './util/tags';\nimport {fontFamily, fontSize, textValue} from './util/text';\nimport {visit} from './util/visit';\nimport clip from './util/svg/clip';\nimport metadata from './util/svg/metadata';\nimport {styles, styleProperties} from './util/svg/styles';\nimport {inherits} from 'vega-util';\n\nexport default function SVGStringRenderer(loader) {\n Renderer.call(this, loader);\n\n this._text = {\n head: '',\n bg: '',\n root: '',\n foot: '',\n defs: '',\n body: ''\n };\n\n this._defs = {\n gradient: {},\n clipping: {}\n };\n}\n\nvar prototype = inherits(SVGStringRenderer, Renderer);\nvar base = Renderer.prototype;\n\nprototype.resize = function(width, height, origin, scaleFactor) {\n base.resize.call(this, width, height, origin, scaleFactor);\n var o = this._origin,\n t = this._text;\n\n var attr = {\n class: 'marks',\n width: this._width * this._scale,\n height: this._height * this._scale,\n viewBox: '0 0 ' + this._width + ' ' + this._height\n };\n for (var key in metadata) {\n attr[key] = metadata[key];\n }\n\n t.head = openTag('svg', attr);\n\n var bg = this._bgcolor;\n if (bg === 'transparent' || bg === 'none') bg = null;\n\n if (bg) {\n t.bg = openTag('rect', {\n width: this._width,\n height: this._height,\n style: 'fill: ' + bg + ';'\n }) + closeTag('rect');\n } else {\n t.bg = '';\n }\n\n t.root = openTag('g', {\n transform: 'translate(' + o + ')'\n });\n\n t.foot = closeTag('g') + closeTag('svg');\n\n return this;\n};\n\nprototype.background = function() {\n var rv = base.background.apply(this, arguments);\n if (arguments.length && this._text.head) {\n this.resize(this._width, this._height, this._origin, this._scale);\n }\n return rv;\n};\n\nprototype.svg = function() {\n var t = this._text;\n return t.head + t.bg + t.defs + t.root + t.body + t.foot;\n};\n\nprototype._render = function(scene) {\n this._text.body = this.mark(scene);\n this._text.defs = this.buildDefs();\n return this;\n};\n\nprototype.buildDefs = function() {\n var all = this._defs,\n defs = '',\n i, id, def, tag, stops;\n\n for (id in all.gradient) {\n def = all.gradient[id];\n stops = def.stops;\n\n if (def.gradient === 'radial') {\n // SVG radial gradients automatically transform to normalized bbox\n // coordinates, in a way that is cumbersome to replicate in canvas.\n // So we wrap the radial gradient in a pattern element, allowing us\n // to mantain a circular gradient that matches what canvas provides.\n\n defs += openTag(tag = 'pattern', {\n id: patternPrefix + id,\n viewBox: '0,0,1,1',\n width: '100%',\n height: '100%',\n preserveAspectRatio: 'xMidYMid slice'\n });\n\n defs += openTag('rect', {\n width: '1',\n height: '1',\n fill: 'url(#' + id + ')'\n }) + closeTag('rect');\n\n defs += closeTag(tag);\n\n defs += openTag(tag = 'radialGradient', {\n id: id,\n fx: def.x1,\n fy: def.y1,\n fr: def.r1,\n cx: def.x2,\n cy: def.y2,\n r: def.r2\n });\n } else {\n defs += openTag(tag = 'linearGradient', {\n id: id,\n x1: def.x1,\n x2: def.x2,\n y1: def.y1,\n y2: def.y2\n });\n }\n\n for (i=0; i<stops.length; ++i) {\n defs += openTag('stop', {\n offset: stops[i].offset,\n 'stop-color': stops[i].color\n }) + closeTag('stop');\n }\n\n defs += closeTag(tag);\n }\n\n for (id in all.clipping) {\n def = all.clipping[id];\n\n defs += openTag('clipPath', {id: id});\n\n if (def.path) {\n defs += openTag('path', {\n d: def.path\n }) + closeTag('path');\n } else {\n defs += openTag('rect', {\n x: 0,\n y: 0,\n width: def.width,\n height: def.height\n }) + closeTag('rect');\n }\n\n defs += closeTag('clipPath');\n }\n\n return (defs.length > 0) ? openTag('defs') + defs + closeTag('defs') : '';\n};\n\nvar object;\n\nfunction emit(name, value, ns, prefixed) {\n object[prefixed || name] = value;\n}\n\nprototype.attributes = function(attr, item) {\n object = {};\n attr(emit, item, this);\n return object;\n};\n\nprototype.href = function(item) {\n var that = this,\n href = item.href,\n attr;\n\n if (href) {\n if (attr = that._hrefs && that._hrefs[href]) {\n return attr;\n } else {\n that.sanitizeURL(href).then(function(attr) {\n // rewrite to use xlink namespace\n // note that this will be deprecated in SVG 2.0\n attr['xlink:href'] = attr.href;\n attr.href = null;\n (that._hrefs || (that._hrefs = {}))[href] = attr;\n });\n }\n }\n return null;\n};\n\nprototype.mark = function(scene) {\n var renderer = this,\n mdef = marks[scene.marktype],\n tag = mdef.tag,\n defs = this._defs,\n str = '',\n style;\n\n if (tag !== 'g' && scene.interactive === false) {\n style = 'style=\"pointer-events: none;\"';\n }\n\n // render opening group tag\n str += openTag('g', {\n 'class': cssClass(scene),\n 'clip-path': scene.clip ? clip(renderer, scene, scene.group) : null\n }, style);\n\n // render contained elements\n function process(item) {\n var href = renderer.href(item);\n if (href) str += openTag('a', href);\n\n style = (tag !== 'g') ? applyStyles(item, scene, tag, defs) : null;\n str += openTag(tag, renderer.attributes(mdef.attr, item), style);\n\n if (tag === 'text') {\n str += escape_text(textValue(item));\n } else if (tag === 'g') {\n str += openTag('path', renderer.attributes(mdef.background, item),\n applyStyles(item, scene, 'bgrect', defs)) + closeTag('path');\n\n str += openTag('g', renderer.attributes(mdef.foreground, item))\n + renderer.markGroup(item)\n + closeTag('g');\n }\n\n str += closeTag(tag);\n if (href) str += closeTag('a');\n }\n\n if (mdef.nested) {\n if (scene.items && scene.items.length) process(scene.items[0]);\n } else {\n visit(scene, process);\n }\n\n // render closing group tag\n return str + closeTag('g');\n};\n\nprototype.markGroup = function(scene) {\n var renderer = this,\n str = '';\n\n visit(scene, function(item) {\n str += renderer.mark(item);\n });\n\n return str;\n};\n\nfunction applyStyles(o, mark, tag, defs) {\n if (o == null) return '';\n var i, n, prop, name, value, s = '';\n\n if (tag === 'bgrect' && mark.interactive === false) {\n s += 'pointer-events: none; ';\n }\n\n if (tag === 'text') {\n s += 'font-family: ' + fontFamily(o) + '; ';\n s += 'font-size: ' + fontSize(o) + 'px; ';\n if (o.fontStyle) s += 'font-style: ' + o.fontStyle + '; ';\n if (o.fontVariant) s += 'font-variant: ' + o.fontVariant + '; ';\n if (o.fontWeight) s += 'font-weight: ' + o.fontWeight + '; ';\n }\n\n for (i=0, n=styleProperties.length; i<n; ++i) {\n prop = styleProperties[i];\n name = styles[prop];\n value = o[prop];\n\n if (value == null) {\n if (name === 'fill') {\n s += 'fill: none; ';\n }\n } else if (value === 'transparent' && (name === 'fill' || name === 'stroke')) {\n // transparent is not a legal SVG value, so map to none instead\n s += name + ': none; ';\n } else {\n if (isGradient(value)) {\n value = gradientRef(value, defs.gradient, '');\n }\n s += name + ': ' + value + '; ';\n }\n }\n\n return s ? 'style=\"' + s.trim() + '\"' : null;\n}\n\nfunction escape_text(s) {\n return s.replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n}\n","import CanvasHandler from './CanvasHandler';\nimport CanvasRenderer from './CanvasRenderer';\nimport SVGHandler from './SVGHandler';\nimport SVGRenderer from './SVGRenderer';\nimport SVGStringRenderer from './SVGStringRenderer';\n\nvar Canvas = 'canvas';\nvar PNG = 'png';\nvar SVG = 'svg';\nvar None = 'none';\n\nexport var RenderType = {\n Canvas: Canvas,\n PNG: PNG,\n SVG: SVG,\n None: None\n};\n\nvar modules = {};\n\nmodules[Canvas] = modules[PNG] = {\n renderer: CanvasRenderer,\n headless: CanvasRenderer,\n handler: CanvasHandler\n};\n\nmodules[SVG] = {\n renderer: SVGRenderer,\n headless: SVGStringRenderer,\n handler: SVGHandler\n};\n\nmodules[None] = {};\n\nexport function renderModule(name, _) {\n name = String(name || '').toLowerCase();\n if (arguments.length > 1) {\n modules[name] = _;\n return this;\n } else {\n return modules[name];\n }\n}\n","import Marks from './marks/index';\nimport {error} from 'vega-util';\nimport Bounds from './Bounds';\n\nexport function intersect(scene, bounds, filter) {\n const hits = [], // intersection results\n box = new Bounds().union(bounds), // defensive copy\n type = scene.marktype;\n\n return type ? intersectMark(scene, box, filter, hits)\n : type === 'group' ? intersectGroup(scene, box, filter, hits)\n : error('Intersect scene must be mark node or group item.');\n}\n\nfunction intersectMark(mark, box, filter, hits) {\n if (visitMark(mark, box, filter)) {\n const items = mark.items,\n type = mark.marktype,\n n = items.length;\n\n let i = 0;\n\n if (type === 'group') {\n for (; i<n; ++i) {\n intersectGroup(items[i], box, filter, hits);\n }\n } else {\n for (const test = Marks[type].isect; i<n; ++i) {\n let item = items[i];\n if (intersectItem(item, box, test)) hits.push(item);\n }\n }\n }\n return hits;\n}\n\nfunction visitMark(mark, box, filter) {\n // process if bounds intersect and if\n // (1) mark is a group mark (so we must recurse), or\n // (2) mark is interactive and passes filter\n return mark.bounds && box.intersects(mark.bounds) && (\n mark.marktype === 'group' ||\n mark.interactive !== false && (!filter || filter(mark))\n );\n}\n\nfunction intersectGroup(group, box, filter, hits) {\n // test intersect against group\n // skip groups by default unless filter says otherwise\n if ((filter && filter(group.mark)) &&\n intersectItem(group, box, Marks.group.isect)) {\n hits.push(group);\n }\n\n // recursively test children marks\n // translate box to group coordinate space\n const marks = group.items,\n n = marks && marks.length;\n\n if (n) {\n const x = group.x || 0,\n y = group.y || 0;\n box.translate(-x, -y);\n for (let i=0; i<n; ++i) {\n intersectMark(marks[i], box, filter, hits);\n }\n box.translate(x, y);\n }\n\n return hits;\n}\n\nfunction intersectItem(item, box, test) {\n // test bounds enclosure, bounds intersection, then detailed test\n const bounds = item.bounds;\n return box.encloses(bounds) || (box.intersects(bounds) && test(item, box));\n}\n\n","import Bounds from '../Bounds';\nimport boundContext from './boundContext';\nimport {isFunction} from 'vega-util';\n\nvar clipBounds = new Bounds();\n\nexport default function(mark) {\n var clip = mark.clip;\n\n if (isFunction(clip)) {\n clip(boundContext(clipBounds.clear()));\n } else if (clip) {\n clipBounds.set(0, 0, mark.group.width, mark.group.height);\n } else return;\n\n mark.bounds.intersect(clipBounds);\n}\n","import pathParse from '../path/parse';\nimport {isNumber, isObject} from 'vega-util';\n\nvar TOLERANCE = 1e-9;\n\nexport function sceneEqual(a, b, key) {\n return (a === b) ? true\n : (key === 'path') ? pathEqual(a, b)\n : (a instanceof Date && b instanceof Date) ? +a === +b\n : (isNumber(a) && isNumber(b)) ? Math.abs(a - b) <= TOLERANCE\n : (!a || !b || !isObject(a) && !isObject(b)) ? a == b\n : (a == null || b == null) ? false\n : objectEqual(a, b);\n}\n\nexport function pathEqual(a, b) {\n return sceneEqual(pathParse(a), pathParse(b));\n}\n\nfunction objectEqual(a, b) {\n var ka = Object.keys(a),\n kb = Object.keys(b),\n key, i;\n\n if (ka.length !== kb.length) return false;\n\n ka.sort();\n kb.sort();\n\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) return false;\n }\n\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!sceneEqual(a[key], b[key], key)) return false;\n }\n\n return typeof a === typeof b;\n}\n","import {Group, LegendRole} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {boundClip, Marks} from 'vega-scenegraph';\nimport {inherits} from 'vega-util';\n\n/**\n * Calculate bounding boxes for scenegraph items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - The scenegraph mark instance to bound.\n */\nexport default function Bound(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Bound, Transform);\n\nprototype.transform = function(_, pulse) {\n var view = pulse.dataflow,\n mark = _.mark,\n type = mark.marktype,\n entry = Marks[type],\n bound = entry.bound,\n markBounds = mark.bounds, rebound;\n\n if (entry.nested) {\n // multi-item marks have a single bounds instance\n if (mark.items.length) view.dirty(mark.items[0]);\n markBounds = boundItem(mark, bound);\n mark.items.forEach(function(item) {\n item.bounds.clear().union(markBounds);\n });\n }\n\n else if (type === Group || _.modified()) {\n // operator parameters modified -> re-bound all items\n // updates group bounds in response to modified group content\n pulse.visit(pulse.MOD, function(item) { view.dirty(item); });\n markBounds.clear();\n mark.items.forEach(function(item) {\n markBounds.union(boundItem(item, bound));\n });\n\n // force reflow for legends to propagate any layout changes\n // suppress other types to prevent overall layout jumpiness\n if (mark.role === LegendRole) pulse.reflow();\n }\n\n else {\n // incrementally update bounds, re-bound mark as needed\n rebound = pulse.changed(pulse.REM);\n\n pulse.visit(pulse.ADD, function(item) {\n markBounds.union(boundItem(item, bound));\n });\n\n pulse.visit(pulse.MOD, function(item) {\n rebound = rebound || markBounds.alignsWith(item.bounds);\n view.dirty(item);\n markBounds.union(boundItem(item, bound));\n });\n\n if (rebound) {\n markBounds.clear();\n mark.items.forEach(function(item) { markBounds.union(item.bounds); });\n }\n }\n\n // ensure mark bounds do not exceed any clipping region\n boundClip(mark);\n\n return pulse.modifies('bounds');\n};\n\nfunction boundItem(item, bound, opt) {\n return bound(item.bounds.clear(), item, opt);\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\nvar COUNTER_NAME = ':vega_identifier:';\n\n/**\n * Adds a unique identifier to all added tuples.\n * This transform creates a new signal that serves as an id counter.\n * As a result, the id counter is shared across all instances of this\n * transform, generating unique ids across multiple data streams. In\n * addition, this signal value can be included in a snapshot of the\n * dataflow state, enabling correct resumption of id allocation.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.as - The field name for the generated identifier.\n */\nexport default function Identifier(params) {\n Transform.call(this, 0, params);\n}\n\nIdentifier.Definition = {\n \"type\": \"Identifier\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"as\", \"type\": \"string\", \"required\": true }\n ]\n};\n\nvar prototype = inherits(Identifier, Transform);\n\nprototype.transform = function(_, pulse) {\n var counter = getCounter(pulse.dataflow),\n id = counter.value,\n as = _.as;\n\n pulse.visit(pulse.ADD, function(t) {\n if (!t[as]) t[as] = ++id;\n });\n\n counter.set(this.value = id);\n return pulse;\n};\n\nfunction getCounter(view) {\n var counter = view._signals[COUNTER_NAME];\n if (!counter) {\n view._signals[COUNTER_NAME] = (counter = view.add(0));\n }\n return counter;\n}\n","import {Group} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {Item, GroupItem} from 'vega-scenegraph';\nimport {inherits} from 'vega-util';\n\n/**\n * Bind scenegraph items to a scenegraph mark instance.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.markdef - The mark definition for creating the mark.\n * This is an object of legal scenegraph mark properties which *must* include\n * the 'marktype' property.\n */\nexport default function Mark(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Mark, Transform);\n\nprototype.transform = function(_, pulse) {\n var mark = this.value;\n\n // acquire mark on first invocation, bind context and group\n if (!mark) {\n mark = pulse.dataflow.scenegraph().mark(_.markdef, lookup(_), _.index);\n mark.group.context = _.context;\n if (!_.context.group) _.context.group = mark.group;\n mark.source = this;\n mark.clip = _.clip;\n mark.interactive = _.interactive;\n this.value = mark;\n }\n\n // initialize entering items\n var Init = mark.marktype === Group ? GroupItem : Item;\n pulse.visit(pulse.ADD, function(item) { Init.call(item, mark); });\n\n // update clipping and/or interactive status\n if (_.modified('clip') || _.modified('interactive')) {\n mark.clip = _.clip;\n mark.interactive = !!_.interactive;\n mark.zdirty = true; // force scenegraph re-eval\n pulse.reflow();\n }\n\n // bind items array to scenegraph mark\n mark.items = pulse.source;\n return pulse;\n};\n\nfunction lookup(_) {\n var g = _.groups, p = _.parent;\n return g && g.size === 1 ? g.get(Object.keys(g.object)[0])\n : g && p ? g.lookup(p)\n : null;\n}\n","import {Top, Bottom} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {Bounds} from 'vega-scenegraph';\nimport {inherits, peek} from 'vega-util';\n\n/**\n * Analyze items for overlap, changing opacity to hide items with\n * overlapping bounding boxes. This transform will preserve at least\n * two items (e.g., first and last) even if overlap persists.\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting items.\n * @param {object} [params.method] - The overlap removal method to apply.\n * One of 'parity' (default, hide every other item until there is no\n * more overlap) or 'greedy' (sequentially scan and hide and items that\n * overlap with the last visible item).\n * @param {object} [params.boundScale] - A scale whose range should be used\n * to bound the items. Items exceeding the bounds of the scale range\n * will be treated as overlapping. If null or undefined, no bounds check\n * will be applied.\n * @param {object} [params.boundOrient] - The orientation of the scale\n * (top, bottom, left, or right) used to bound items. This parameter is\n * ignored if boundScale is null or undefined.\n * @param {object} [params.boundTolerance] - The tolerance in pixels for\n * bound inclusion testing (default 1). This specifies by how many pixels\n * an item's bounds may exceed the scale range bounds and not be culled.\n * @constructor\n */\nexport default function Overlap(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Overlap, Transform);\n\nvar methods = {\n parity: function(items) {\n return items.filter((item, i) => i % 2 ? (item.opacity = 0) : 1);\n },\n greedy: function(items, sep) {\n var a;\n return items.filter((b, i) => {\n if (!i || !intersect(a.bounds, b.bounds, sep)) {\n a = b;\n return 1;\n } else {\n return b.opacity = 0;\n }\n });\n }\n};\n\n// compute bounding box intersection\n// including padding pixels of separation\nfunction intersect(a, b, sep) {\n return sep > Math.max(\n b.x1 - a.x2,\n a.x1 - b.x2,\n b.y1 - a.y2,\n a.y1 - b.y2\n );\n}\n\nfunction hasOverlap(items, pad) {\n for (var i=1, n=items.length, a=items[0].bounds, b; i<n; a=b, ++i) {\n if (intersect(a, b = items[i].bounds, pad)) return true;\n }\n}\n\nfunction hasBounds(item) {\n var b = item.bounds;\n return b.width() > 1 && b.height() > 1;\n}\n\nfunction boundTest(scale, orient, tolerance) {\n var range = scale.range(),\n b = new Bounds();\n\n if (orient === Top || orient === Bottom) {\n b.set(range[0], -Infinity, range[1], +Infinity);\n } else {\n b.set(-Infinity, range[0], +Infinity, range[1]);\n }\n b.expand(tolerance || 1);\n\n return item => b.encloses(item.bounds);\n}\n\n// reset all items to be fully opaque\nfunction reset(source) {\n source.forEach(item => item.opacity = 1);\n return source;\n}\n\n// add all tuples to mod, fork pulse if parameters were modified\n// fork prevents cross-stream tuple pollution (e.g., pulse from scale)\nfunction reflow(pulse, _) {\n return pulse.reflow(_.modified()).modifies('opacity');\n}\n\nprototype.transform = function(_, pulse) {\n var reduce = methods[_.method] || methods.parity,\n source = pulse.materialize(pulse.SOURCE).source,\n sep = _.separation || 0,\n items, test, bounds;\n\n if (!source || !source.length) return;\n\n if (!_.method) {\n // early exit if method is falsy\n if (_.modified('method')) {\n reset(source);\n pulse = reflow(pulse, _);\n }\n return pulse;\n }\n\n if (_.sort) {\n source = source.slice().sort(_.sort);\n }\n\n // skip labels with no content\n source = source.filter(hasBounds);\n\n items = reset(source);\n pulse = reflow(pulse, _);\n\n if (items.length >= 3 && hasOverlap(items, sep)) {\n do {\n items = reduce(items, sep);\n } while (items.length >= 3 && hasOverlap(items, sep));\n\n if (items.length < 3 && !peek(source).opacity) {\n if (items.length > 1) peek(items).opacity = 0;\n peek(source).opacity = 1;\n }\n }\n\n if (_.boundScale && _.boundTolerance >= 0) {\n test = boundTest(_.boundScale, _.boundOrient, +_.boundTolerance);\n source.forEach(item => {\n if (!test(item)) item.opacity = 0;\n });\n }\n\n // re-calculate mark bounds\n bounds = items[0].mark.bounds.clear();\n source.forEach(item => {\n if (item.opacity) bounds.union(item.bounds);\n });\n\n return pulse;\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Queue modified scenegraph items for rendering.\n * @constructor\n */\nexport default function Render(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Render, Transform);\n\nprototype.transform = function(_, pulse) {\n var view = pulse.dataflow;\n\n pulse.visit(pulse.ALL, function(item) { view.dirty(item); });\n\n // set z-index dirty flag as needed\n if (pulse.fields && pulse.fields['zindex']) {\n var item = pulse.source && pulse.source[0];\n if (item) item.mark.zdirty = true;\n }\n};\n","import {Bounds} from 'vega-scenegraph';\n\nexport const tempBounds = new Bounds();\n\nexport function set(item, property, value) {\n return item[property] === value ? 0\n : (item[property] = value, 1);\n}","import {Top, Bottom, Left, Right} from '../constants';\nimport {set, tempBounds} from './util';\nimport {boundStroke} from 'vega-scenegraph';\n\nconst AxisOffset = 0.5;\n\nexport function isYAxis(mark) {\n var orient = mark.items[0].datum.orient;\n return orient === Left || orient === Right;\n}\n\nfunction axisIndices(datum) {\n var index = +datum.grid;\n return [\n datum.ticks ? index++ : -1, // ticks index\n datum.labels ? index++ : -1, // labels index\n index + (+datum.domain) // title index\n ];\n}\n\nexport function axisLayout(view, axis, width, height) {\n var item = axis.items[0],\n datum = item.datum,\n orient = datum.orient,\n indices = axisIndices(datum),\n range = item.range,\n offset = item.offset,\n position = item.position,\n minExtent = item.minExtent,\n maxExtent = item.maxExtent,\n title = datum.title && item.items[indices[2]].items[0],\n titlePadding = item.titlePadding,\n bounds = item.bounds,\n x = 0, y = 0, i, s;\n\n tempBounds.clear().union(bounds);\n bounds.clear();\n if ((i=indices[0]) > -1) bounds.union(item.items[i].bounds);\n if ((i=indices[1]) > -1) bounds.union(item.items[i].bounds);\n\n // position axis group and title\n switch (orient) {\n case Top:\n x = position || 0;\n y = -offset;\n s = Math.max(minExtent, Math.min(maxExtent, -bounds.y1));\n if (title) s = axisTitleLayout(title, s, titlePadding, 0, -1, bounds);\n bounds.add(0, -s).add(range, 0);\n break;\n case Left:\n x = -offset;\n y = position || 0;\n s = Math.max(minExtent, Math.min(maxExtent, -bounds.x1));\n if (title) s = axisTitleLayout(title, s, titlePadding, 1, -1, bounds);\n bounds.add(-s, 0).add(0, range);\n break;\n case Right:\n x = width + offset;\n y = position || 0;\n s = Math.max(minExtent, Math.min(maxExtent, bounds.x2));\n if (title) s = axisTitleLayout(title, s, titlePadding, 1, 1, bounds);\n bounds.add(0, 0).add(s, range);\n break;\n case Bottom:\n x = position || 0;\n y = height + offset;\n s = Math.max(minExtent, Math.min(maxExtent, bounds.y2));\n if (title) s = axisTitleLayout(title, s, titlePadding, 0, 1, bounds);\n bounds.add(0, 0).add(range, s);\n break;\n default:\n x = item.x;\n y = item.y;\n }\n\n // update bounds\n boundStroke(bounds.translate(x, y), item);\n\n if (set(item, 'x', x + AxisOffset) | set(item, 'y', y + AxisOffset)) {\n item.bounds = tempBounds;\n view.dirty(item);\n item.bounds = bounds;\n view.dirty(item);\n }\n\n return item.mark.bounds.clear().union(bounds);\n}\n\nfunction axisTitleLayout(title, offset, pad, isYAxis, sign, bounds) {\n var b = title.bounds, dx = 0, dy = 0;\n\n if (title.auto) {\n offset += pad;\n\n isYAxis\n ? dx = (title.x || 0) - (title.x = sign * offset)\n : dy = (title.y || 0) - (title.y = sign * offset);\n\n b.translate(-dx, -dy);\n title.mark.bounds.set(b.x1, b.y1, b.x2, b.y2);\n\n if (isYAxis) {\n bounds.add(0, b.y1).add(0, b.y2);\n offset += b.width();\n } else {\n bounds.add(b.x1, 0).add(b.x2, 0);\n offset += b.height();\n }\n } else {\n bounds.union(b);\n }\n\n return offset;\n}\n","import {\n All, Each, Flush, Column, X, Y, Row, Middle, End,\n Group, AxisRole, LegendRole,\n RowHeader, RowFooter, RowTitle,\n ColHeader, ColFooter, ColTitle\n} from '../constants';\nimport {tempBounds} from './util';\nimport {Bounds} from 'vega-scenegraph';\nimport {isObject} from 'vega-util';\n\nfunction gridLayoutGroups(group) {\n var groups = group.items,\n n = groups.length,\n i = 0, mark, items;\n\n var views = {\n marks: [],\n rowheaders: [],\n rowfooters: [],\n colheaders: [],\n colfooters: [],\n rowtitle: null,\n coltitle: null\n };\n\n // layout axes, gather legends, collect bounds\n for (; i<n; ++i) {\n mark = groups[i];\n items = mark.items;\n if (mark.marktype === Group) {\n switch (mark.role) {\n case AxisRole:\n case LegendRole:\n break;\n case RowHeader: views.rowheaders.push(...items); break;\n case RowFooter: views.rowfooters.push(...items); break;\n case ColHeader: views.colheaders.push(...items); break;\n case ColFooter: views.colfooters.push(...items); break;\n case RowTitle: views.rowtitle = items[0]; break;\n case ColTitle: views.coltitle = items[0]; break;\n default: views.marks.push(...items);\n }\n }\n }\n\n return views;\n}\n\nfunction bboxFlush(item) {\n return new Bounds().set(0, 0, item.width || 0, item.height || 0);\n}\n\nfunction bboxFull(item) {\n var b = item.bounds.clone();\n return b.empty()\n ? b.set(0, 0, 0, 0)\n : b.translate(-(item.x || 0), -(item.y || 0));\n}\n\nfunction get(opt, key, d) {\n var v = isObject(opt) ? opt[key] : opt;\n return v != null ? v : (d !== undefined ? d : 0);\n}\n\nfunction offsetValue(v) {\n return v < 0 ? Math.ceil(-v) : 0;\n}\n\nexport function gridLayout(view, groups, opt) {\n var dirty = !opt.nodirty,\n bbox = opt.bounds === Flush ? bboxFlush : bboxFull,\n bounds = tempBounds.set(0, 0, 0, 0),\n alignCol = get(opt.align, Column),\n alignRow = get(opt.align, Row),\n padCol = get(opt.padding, Column),\n padRow = get(opt.padding, Row),\n ncols = opt.columns || groups.length,\n nrows = ncols < 0 ? 1 : Math.ceil(groups.length / ncols),\n n = groups.length,\n xOffset = Array(n), xExtent = Array(ncols), xMax = 0,\n yOffset = Array(n), yExtent = Array(nrows), yMax = 0,\n dx = Array(n), dy = Array(n), boxes = Array(n),\n m, i, c, r, b, g, px, py, x, y, offset;\n\n for (i=0; i<ncols; ++i) xExtent[i] = 0;\n for (i=0; i<nrows; ++i) yExtent[i] = 0;\n\n // determine offsets for each group\n for (i=0; i<n; ++i) {\n g = groups[i];\n b = boxes[i] = bbox(g);\n g.x = g.x || 0; dx[i] = 0;\n g.y = g.y || 0; dy[i] = 0;\n c = i % ncols;\n r = ~~(i / ncols);\n xMax = Math.max(xMax, px = Math.ceil(b.x2));\n yMax = Math.max(yMax, py = Math.ceil(b.y2));\n xExtent[c] = Math.max(xExtent[c], px);\n yExtent[r] = Math.max(yExtent[r], py);\n xOffset[i] = padCol + offsetValue(b.x1);\n yOffset[i] = padRow + offsetValue(b.y1);\n if (dirty) view.dirty(groups[i]);\n }\n\n // set initial alignment offsets\n for (i=0; i<n; ++i) {\n if (i % ncols === 0) xOffset[i] = 0;\n if (i < ncols) yOffset[i] = 0;\n }\n\n // enforce column alignment constraints\n if (alignCol === Each) {\n for (c=1; c<ncols; ++c) {\n for (offset=0, i=c; i<n; i += ncols) {\n if (offset < xOffset[i]) offset = xOffset[i];\n }\n for (i=c; i<n; i += ncols) {\n xOffset[i] = offset + xExtent[c-1];\n }\n }\n } else if (alignCol === All) {\n for (offset=0, i=0; i<n; ++i) {\n if (i % ncols && offset < xOffset[i]) offset = xOffset[i];\n }\n for (i=0; i<n; ++i) {\n if (i % ncols) xOffset[i] = offset + xMax;\n }\n } else {\n for (alignCol=false, c=1; c<ncols; ++c) {\n for (i=c; i<n; i += ncols) {\n xOffset[i] += xExtent[c-1];\n }\n }\n }\n\n // enforce row alignment constraints\n if (alignRow === Each) {\n for (r=1; r<nrows; ++r) {\n for (offset=0, i=r*ncols, m=i+ncols; i<m; ++i) {\n if (offset < yOffset[i]) offset = yOffset[i];\n }\n for (i=r*ncols; i<m; ++i) {\n yOffset[i] = offset + yExtent[r-1];\n }\n }\n } else if (alignRow === All) {\n for (offset=0, i=ncols; i<n; ++i) {\n if (offset < yOffset[i]) offset = yOffset[i];\n }\n for (i=ncols; i<n; ++i) {\n yOffset[i] = offset + yMax;\n }\n } else {\n for (alignRow=false, r=1; r<nrows; ++r) {\n for (i=r*ncols, m=i+ncols; i<m; ++i) {\n yOffset[i] += yExtent[r-1];\n }\n }\n }\n\n // perform horizontal grid layout\n for (x=0, i=0; i<n; ++i) {\n x = xOffset[i] + (i % ncols ? x : 0);\n dx[i] += x - groups[i].x;\n }\n\n // perform vertical grid layout\n for (c=0; c<ncols; ++c) {\n for (y=0, i=c; i<n; i += ncols) {\n y += yOffset[i];\n dy[i] += y - groups[i].y;\n }\n }\n\n // perform horizontal centering\n if (alignCol && get(opt.center, Column) && nrows > 1) {\n for (i=0; i<n; ++i) {\n b = alignCol === All ? xMax : xExtent[i % ncols];\n x = b - boxes[i].x2 - groups[i].x - dx[i];\n if (x > 0) dx[i] += x / 2;\n }\n }\n\n // perform vertical centering\n if (alignRow && get(opt.center, Row) && ncols !== 1) {\n for (i=0; i<n; ++i) {\n b = alignRow === All ? yMax : yExtent[~~(i / ncols)];\n y = b - boxes[i].y2 - groups[i].y - dy[i];\n if (y > 0) dy[i] += y / 2;\n }\n }\n\n // position grid relative to anchor\n for (i=0; i<n; ++i) {\n bounds.union(boxes[i].translate(dx[i], dy[i]));\n }\n x = get(opt.anchor, X);\n y = get(opt.anchor, Y);\n switch (get(opt.anchor, Column)) {\n case End: x -= bounds.width(); break;\n case Middle: x -= bounds.width() / 2;\n }\n switch (get(opt.anchor, Row)) {\n case End: y -= bounds.height(); break;\n case Middle: y -= bounds.height() / 2;\n }\n x = Math.round(x);\n y = Math.round(y);\n\n // update mark positions, bounds, dirty\n bounds.clear();\n for (i=0; i<n; ++i) {\n groups[i].mark.bounds.clear();\n }\n for (i=0; i<n; ++i) {\n g = groups[i];\n g.x += (dx[i] += x);\n g.y += (dy[i] += y);\n bounds.union(g.mark.bounds.union(g.bounds.translate(dx[i], dy[i])));\n if (dirty) view.dirty(g);\n }\n\n return bounds;\n}\n\nexport function trellisLayout(view, group, opt) {\n var views = gridLayoutGroups(group),\n groups = views.marks,\n bbox = opt.bounds === Flush ? boundFlush : boundFull,\n off = opt.offset,\n ncols = opt.columns || groups.length,\n nrows = ncols < 0 ? 1 : Math.ceil(groups.length / ncols),\n cells = nrows * ncols,\n x, y, x2, y2, anchor, band, offset;\n\n // -- initial grid layout\n const bounds = gridLayout(view, groups, opt);\n\n // -- layout grid headers and footers --\n\n // perform row header layout\n if (views.rowheaders) {\n band = get(opt.headerBand, Row, null);\n x = layoutHeaders(view, views.rowheaders, groups, ncols, nrows, -get(off, 'rowHeader'), min, 0, bbox, 'x1', 0, ncols, 1, band);\n }\n\n // perform column header layout\n if (views.colheaders) {\n band = get(opt.headerBand, Column, null);\n y = layoutHeaders(view, views.colheaders, groups, ncols, ncols, -get(off, 'columnHeader'), min, 1, bbox, 'y1', 0, 1, ncols, band);\n }\n\n // perform row footer layout\n if (views.rowfooters) {\n band = get(opt.footerBand, Row, null);\n x2 = layoutHeaders(view, views.rowfooters, groups, ncols, nrows, get(off, 'rowFooter'), max, 0, bbox, 'x2', ncols-1, ncols, 1, band);\n }\n\n // perform column footer layout\n if (views.colfooters) {\n band = get(opt.footerBand, Column, null);\n y2 = layoutHeaders(view, views.colfooters, groups, ncols, ncols, get(off, 'columnFooter'), max, 1, bbox, 'y2', cells-ncols, 1, ncols, band);\n }\n\n // perform row title layout\n if (views.rowtitle) {\n anchor = get(opt.titleAnchor, Row);\n offset = get(off, 'rowTitle');\n offset = anchor === End ? x2 + offset : x - offset;\n band = get(opt.titleBand, Row, 0.5);\n layoutTitle(view, views.rowtitle, offset, 0, bounds, band);\n }\n\n // perform column title layout\n if (views.coltitle) {\n anchor = get(opt.titleAnchor, Column);\n offset = get(off, 'columnTitle');\n offset = anchor === End ? y2 + offset : y - offset;\n band = get(opt.titleBand, Column, 0.5);\n layoutTitle(view, views.coltitle, offset, 1, bounds, band);\n }\n}\n\nfunction boundFlush(item, field) {\n return field === 'x1' ? (item.x || 0)\n : field === 'y1' ? (item.y || 0)\n : field === 'x2' ? (item.x || 0) + (item.width || 0)\n : field === 'y2' ? (item.y || 0) + (item.height || 0)\n : undefined;\n}\n\nfunction boundFull(item, field) {\n return item.bounds[field];\n}\n\n// aggregation functions for grid margin determination\nfunction min(a, b) { return Math.floor(Math.min(a, b)); }\nfunction max(a, b) { return Math.ceil(Math.max(a, b)); }\n\nfunction layoutHeaders(view, headers, groups, ncols, limit, offset, agg, isX, bound, bf, start, stride, back, band) {\n var n = groups.length,\n init = 0,\n edge = 0,\n i, j, k, m, b, h, g, x, y;\n\n // if no groups, early exit and return 0\n if (!n) return init;\n\n // compute margin\n for (i=start; i<n; i+=stride) {\n if (groups[i]) init = agg(init, bound(groups[i], bf));\n }\n\n // if no headers, return margin calculation\n if (!headers.length) return init;\n\n // check if number of headers exceeds number of rows or columns\n if (headers.length > limit) {\n view.warn('Grid headers exceed limit: ' + limit);\n headers = headers.slice(0, limit);\n }\n\n // apply offset\n init += offset;\n\n // clear mark bounds for all headers\n for (j=0, m=headers.length; j<m; ++j) {\n view.dirty(headers[j]);\n headers[j].mark.bounds.clear();\n }\n\n // layout each header\n for (i=start, j=0, m=headers.length; j<m; ++j, i+=stride) {\n h = headers[j];\n b = h.mark.bounds;\n\n // search for nearest group to align to\n // necessary if table has empty cells\n for (k=i; k >= 0 && (g = groups[k]) == null; k-=back);\n\n // assign coordinates and update bounds\n if (isX) {\n x = band == null ? g.x : Math.round(g.bounds.x1 + band * g.bounds.width());\n y = init;\n } else {\n x = init;\n y = band == null ? g.y : Math.round(g.bounds.y1 + band * g.bounds.height());\n }\n b.union(h.bounds.translate(x - (h.x || 0), y - (h.y || 0)));\n h.x = x;\n h.y = y;\n view.dirty(h);\n\n // update current edge of layout bounds\n edge = agg(edge, b[bf]);\n }\n\n return edge;\n}\n\nfunction layoutTitle(view, g, offset, isX, bounds, band) {\n if (!g) return;\n view.dirty(g);\n\n // compute title coordinates\n var x = offset, y = offset;\n isX\n ? (x = Math.round(bounds.x1 + band * bounds.width()))\n : (y = Math.round(bounds.y1 + band * bounds.height()));\n\n // assign coordinates and update bounds\n g.bounds.translate(x - (g.x || 0), y - (g.y || 0));\n g.mark.bounds.clear().union(g.bounds);\n g.x = x;\n g.y = y;\n\n // queue title for redraw\n view.dirty(g);\n}\n","import {\n Symbols, Start, Middle, End, Top, Bottom, Left, Right,\n TopLeft, TopRight, BottomLeft, BottomRight, None,\n Each, Flush\n} from '../constants';\nimport {boundStroke} from 'vega-scenegraph';\n\n// utility for looking up legend layout configuration\nfunction lookup(config, orient) {\n const opt = config[orient] || {};\n return (key, d) => opt[key] != null ? opt[key]\n : config[key] != null ? config[key]\n : d;\n}\n\n// if legends specify offset directly, use the maximum specified value\nfunction offsets(legends, value) {\n var max = -Infinity;\n legends.forEach(item => {\n if (item.offset != null) max = Math.max(max, item.offset);\n });\n return max > -Infinity ? max : value;\n}\n\nexport function legendParams(g, orient, config, xb, yb, w, h) {\n const _ = lookup(config, orient),\n offset = offsets(g, _('offset', 0)),\n anchor = _('anchor', Start),\n mult = anchor === End ? 1 : anchor === Middle ? 0.5 : 0;\n\n const p = {\n align: Each,\n bounds: _('bounds', Flush),\n columns: _('direction') === 'vertical' ? 1 : g.length,\n padding: _('margin', 8),\n center: _('center'),\n nodirty: true\n };\n\n switch (orient) {\n case Left:\n p.anchor = {\n x: Math.floor(xb.x1) - offset, column: End,\n y: mult * (h || xb.height() + 2 * xb.y1), row: anchor\n };\n break;\n case Right:\n p.anchor = {\n x: Math.ceil(xb.x2) + offset,\n y: mult * (h || xb.height() + 2 * xb.y1), row: anchor\n };\n break;\n case Top:\n p.anchor = {\n y: Math.floor(yb.y1) - offset, row: End,\n x: mult * (w || yb.width() + 2 * yb.x1), column: anchor\n };\n break;\n case Bottom:\n p.anchor = {\n y: Math.ceil(yb.y2) + offset,\n x: mult * (w || yb.width() + 2 * yb.x1), column: anchor\n };\n break;\n case TopLeft:\n p.anchor = {x: offset, y: offset};\n break;\n case TopRight:\n p.anchor = {x: w - offset, y: offset, column: End};\n break;\n case BottomLeft:\n p.anchor = {x: offset, y: h - offset, row: End};\n break;\n case BottomRight:\n p.anchor = {x: w - offset, y: h - offset, column: End, row: End};\n break;\n }\n\n return p;\n}\n\nexport function legendLayout(view, legend) {\n var item = legend.items[0],\n datum = item.datum,\n orient = item.orient,\n bounds = item.bounds,\n x = item.x, y = item.y, w, h;\n\n // cache current bounds for later comparison\n item._bounds\n ? item._bounds.clear().union(bounds)\n : item._bounds = bounds.clone();\n bounds.clear();\n\n // adjust legend to accommodate padding and title\n legendGroupLayout(view, item, item.items[0].items[0]);\n\n // aggregate bounds to determine size, and include origin\n bounds = legendBounds(item, bounds);\n w = 2 * item.padding;\n h = 2 * item.padding;\n if (!bounds.empty()) {\n w = Math.ceil(bounds.width() + w);\n h = Math.ceil(bounds.height() + h);\n }\n\n if (datum.type === Symbols) {\n legendEntryLayout(item.items[0].items[0].items[0].items);\n }\n\n if (orient !== None) {\n item.x = x = 0;\n item.y = y = 0;\n }\n item.width = w;\n item.height = h;\n boundStroke(bounds.set(x, y, x + w, y + h), item);\n item.mark.bounds.clear().union(bounds);\n\n return item;\n}\n\nfunction legendBounds(item, b) {\n // aggregate item bounds\n item.items.forEach(_ => b.union(_.bounds));\n\n // anchor to legend origin\n b.x1 = item.padding;\n b.y1 = item.padding;\n\n return b;\n}\n\nfunction legendGroupLayout(view, item, entry) {\n var pad = item.padding,\n ex = pad - entry.x,\n ey = pad - entry.y;\n\n if (!item.datum.title) {\n if (ex || ey) translate(view, entry, ex, ey);\n } else {\n var title = item.items[1].items[0],\n anchor = title.anchor,\n tpad = item.titlePadding || 0,\n tx = pad - title.x,\n ty = pad - title.y;\n\n switch (title.orient) {\n case Left:\n ex += Math.ceil(title.bounds.width()) + tpad;\n break;\n case Right:\n case Bottom:\n break;\n default:\n ey += title.fontSize + tpad;\n }\n if (ex || ey) translate(view, entry, ex, ey);\n\n switch (title.orient) {\n case Left:\n ty += legendTitleOffset(item, entry, title, anchor, 0, 1);\n break;\n case Right:\n tx += legendTitleOffset(item, entry, title, End, 1, 0) + tpad;\n ty += legendTitleOffset(item, entry, title, anchor, 0, 1);\n break;\n case Bottom:\n tx += legendTitleOffset(item, entry, title, anchor, 1, 0);\n ty += legendTitleOffset(item, entry, title, End, 0, 0, 1) + tpad;\n break;\n default:\n tx += legendTitleOffset(item, entry, title, anchor, 1, 0);\n }\n if (tx || ty) translate(view, title, tx, ty);\n\n // translate legend if title pushes into negative coordinates\n if ((tx = Math.round(title.bounds.x1 - pad)) < 0) {\n translate(view, entry, -tx, 0);\n translate(view, title, -tx, 0);\n }\n }\n}\n\nfunction legendTitleOffset(item, entry, title, anchor, x, lr, noBar) {\n const grad = item.datum.type !== 'symbol',\n vgrad = title.datum.vgrad,\n e = grad && (lr || !vgrad) && !noBar ? entry.items[0] : entry,\n s = e.bounds[x ? 'x2' : 'y2'] - item.padding,\n u = vgrad && lr ? s : 0,\n v = vgrad && lr ? 0 : s;\n\n return Math.round(anchor === Start ? u : anchor === End ? v : 0.5 * s);\n}\n\nfunction translate(view, item, dx, dy) {\n item.x += dx;\n item.y += dy;\n item.bounds.translate(dx, dy);\n item.mark.bounds.translate(dx, dy);\n view.dirty(item);\n}\n\nfunction legendEntryLayout(entries) {\n // get max widths for each column\n var widths = entries.reduce(function(w, g) {\n w[g.column] = Math.max(g.bounds.x2 - g.x, w[g.column] || 0);\n return w;\n }, {});\n\n // set dimensions of legend entry groups\n entries.forEach(function(g) {\n g.width = widths[g.column];\n g.height = g.bounds.y2 - g.y;\n });\n}\n","import {\n AxisRole, LegendRole, TitleRole, FrameRole, ScopeRole,\n RowHeader, RowFooter, RowTitle, ColHeader, ColFooter, ColTitle,\n Top, Bottom, Left, Right,\n Fit, FitX, FitY, Pad, None, Padding\n} from './constants';\n\nimport {axisLayout, isYAxis} from './layout/axis';\nimport {gridLayout, trellisLayout} from './layout/grid';\nimport {legendLayout, legendParams} from './layout/legend';\nimport {titleLayout} from './layout/title';\n\nimport {Transform} from 'vega-dataflow';\nimport {Bounds} from 'vega-scenegraph';\nimport {inherits} from 'vega-util';\n\n/**\n * Layout view elements such as axes and legends.\n * Also performs size adjustments.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - Scenegraph mark of groups to layout.\n */\nexport default function ViewLayout(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(ViewLayout, Transform);\n\nprototype.transform = function(_, pulse) {\n // TODO incremental update, output?\n var view = pulse.dataflow;\n _.mark.items.forEach(function(group) {\n if (_.layout) trellisLayout(view, group, _.layout);\n layoutGroup(view, group, _);\n });\n if (_.modified()) pulse.reflow();\n return pulse;\n};\n\nfunction layoutGroup(view, group, _) {\n var items = group.items,\n width = Math.max(0, group.width || 0),\n height = Math.max(0, group.height || 0),\n viewBounds = new Bounds().set(0, 0, width, height),\n xBounds = viewBounds.clone(),\n yBounds = viewBounds.clone(),\n legends = [], title,\n mark, orient, b, i, n;\n\n // layout axes, gather legends, collect bounds\n for (i=0, n=items.length; i<n; ++i) {\n mark = items[i];\n switch (mark.role) {\n case AxisRole:\n b = isYAxis(mark) ? xBounds : yBounds;\n b.union(axisLayout(view, mark, width, height));\n break;\n case TitleRole:\n title = mark;\n break;\n case LegendRole:\n legends.push(legendLayout(view, mark));\n break;\n case FrameRole:\n case ScopeRole:\n case RowHeader:\n case RowFooter:\n case RowTitle:\n case ColHeader:\n case ColFooter:\n case ColTitle:\n xBounds.union(mark.bounds);\n yBounds.union(mark.bounds);\n break;\n default:\n viewBounds.union(mark.bounds);\n }\n }\n\n // layout legends, adjust viewBounds\n if (legends.length) {\n // group legends by orient\n const l = {};\n legends.forEach(item => {\n orient = item.orient || Right;\n if (orient !== None) (l[orient] || (l[orient] = [])).push(item);\n });\n\n // perform grid layout for each orient group\n for (let orient in l) {\n const g = l[orient];\n gridLayout(view, g, legendParams(\n g, orient, _.legends, xBounds, yBounds, width, height\n ));\n }\n\n // update view bounds\n legends.forEach(item => {\n const b = item.bounds;\n\n if (!b.equals(item._bounds)) {\n item.bounds = item._bounds;\n view.dirty(item); // dirty previous location\n item.bounds = b;\n view.dirty(item);\n }\n\n if (_.autosize && _.autosize.type === Fit) {\n // For autosize fit, incorporate the orthogonal dimension only.\n // Legends that overrun the chart area will then be clipped;\n // otherwise the chart area gets reduced to nothing!\n switch(item.orient) {\n case Left:\n case Right:\n viewBounds.add(b.x1, 0).add(b.x2, 0);\n break;\n case Top:\n case Bottom:\n viewBounds.add(0, b.y1).add(0, b.y2);\n }\n } else {\n viewBounds.union(b);\n }\n });\n }\n\n // combine bounding boxes\n viewBounds.union(xBounds).union(yBounds);\n\n // layout title, adjust bounds\n if (title) {\n viewBounds.union(titleLayout(view, title, width, height, viewBounds));\n }\n\n // perform size adjustment\n viewSizeLayout(view, group, viewBounds, _);\n}\n\nfunction viewSizeLayout(view, group, viewBounds, _) {\n var auto = _.autosize || {},\n type = auto.type,\n viewWidth = view._width,\n viewHeight = view._height,\n padding = view.padding();\n\n if (view._autosize < 1 || !type) return;\n\n var width = Math.max(0, group.width || 0),\n left = Math.max(0, Math.ceil(-viewBounds.x1)),\n right = Math.max(0, Math.ceil(viewBounds.x2 - width)),\n height = Math.max(0, group.height || 0),\n top = Math.max(0, Math.ceil(-viewBounds.y1)),\n bottom = Math.max(0, Math.ceil(viewBounds.y2 - height));\n\n if (auto.contains === Padding) {\n viewWidth -= padding.left + padding.right;\n viewHeight -= padding.top + padding.bottom;\n }\n\n if (type === None) {\n left = 0;\n top = 0;\n width = viewWidth;\n height = viewHeight;\n }\n\n else if (type === Fit) {\n width = Math.max(0, viewWidth - left - right);\n height = Math.max(0, viewHeight - top - bottom);\n }\n\n else if (type === FitX) {\n width = Math.max(0, viewWidth - left - right);\n viewHeight = height + top + bottom;\n }\n\n else if (type === FitY) {\n viewWidth = width + left + right;\n height = Math.max(0, viewHeight - top - bottom);\n }\n\n else if (type === Pad) {\n viewWidth = width + left + right;\n viewHeight = height + top + bottom;\n }\n\n view._resizeView(\n viewWidth, viewHeight,\n width, height,\n [left, top],\n auto.resize\n );\n}\n","import {Top, Bottom, Left, Right, Start, End, Group} from '../constants';\nimport {set, tempBounds} from './util';\n\nexport function titleLayout(view, title, width, height, viewBounds) {\n var item = title.items[0],\n frame = item.frame,\n orient = item.orient,\n anchor = item.anchor,\n offset = item.offset,\n bounds = item.bounds,\n vertical = (orient === Left || orient === Right),\n start = 0,\n end = vertical ? height : width,\n x = 0, y = 0, pos;\n\n if (frame !== Group) {\n orient === Left ? (start = viewBounds.y2, end = viewBounds.y1)\n : orient === Right ? (start = viewBounds.y1, end = viewBounds.y2)\n : (start = viewBounds.x1, end = viewBounds.x2);\n } else if (orient === Left) {\n start = height, end = 0;\n }\n\n pos = (anchor === Start) ? start\n : (anchor === End) ? end\n : (start + end) / 2;\n\n tempBounds.clear().union(bounds);\n\n // position title text\n switch (orient) {\n case Top:\n x = pos;\n y = viewBounds.y1 - offset;\n break;\n case Left:\n x = viewBounds.x1 - offset;\n y = pos;\n break;\n case Right:\n x = viewBounds.x2 + offset;\n y = pos;\n break;\n case Bottom:\n x = pos;\n y = viewBounds.y2 + offset;\n break;\n default:\n x = item.x;\n y = item.y;\n }\n\n bounds.translate(x - (item.x || 0), y - (item.y || 0));\n if (set(item, 'x', x) | set(item, 'y', y)) {\n item.bounds = tempBounds;\n view.dirty(item);\n item.bounds = bounds;\n view.dirty(item);\n }\n\n // update bounds\n return title.bounds.clear().union(bounds);\n}\n","export default function(count, paddingInner, paddingOuter) {\n var space = count - paddingInner + paddingOuter * 2;\n return count ? (space > 0 ? space : 1) : 0;\n}\n","export const Identity = 'identity';\n\nexport const Linear = 'linear';\nexport const Log = 'log';\nexport const Pow = 'pow';\nexport const Sqrt = 'sqrt';\nexport const Symlog = 'symlog';\n\nexport const Time = 'time';\nexport const UTC = 'utc';\n\nexport const Sequential = 'sequential';\nexport const Diverging = 'diverging';\n\nexport const Quantile = 'quantile';\nexport const Quantize = 'quantize';\nexport const Threshold = 'threshold';\n\nexport const Ordinal = 'ordinal';\nexport const Point = 'point';\nexport const Band = 'band';\nexport const BinOrdinal = 'bin-ordinal';\n\nexport function isValidScaleType(type) {\n switch (type) {\n case Identity:\n case Linear:\n case Log:\n case Pow:\n case Sqrt:\n case Symlog:\n case Time:\n case UTC:\n case Sequential:\n case Quantile:\n case Quantize:\n case Threshold:\n case Ordinal:\n case Point:\n case Band:\n case BinOrdinal:\n return true;\n }\n return false;\n}\n\nexport function isTemporal(key) {\n return key === Time || key === UTC;\n}\n\nexport function isBinned(key) {\n return key === BinOrdinal;\n}\n\nexport function isQuantile(key) {\n return key === Quantile;\n}\n\nexport function isSequential(key) {\n return key && key.startsWith(Sequential);\n}\n\nexport function isDiverging(key) {\n return key && key.startsWith(Diverging);\n}\n\nexport function isInterpolating(key) {\n return isSequential(key) || isDiverging(key);\n}\n\nexport function isLogarithmic(key) {\n return key === Log || key.endsWith('-log');\n}\n\nexport function isContinuous(key) {\n switch (key) {\n case Linear:\n case Log:\n case Pow:\n case Sqrt:\n case Symlog:\n case Time:\n case UTC:\n case Sequential:\n return true;\n }\n return false;\n}\n\nexport function isDiscrete(key) {\n return key === BinOrdinal\n || key === Ordinal\n || key === Band\n || key === Point;\n}\n\nexport function isDiscretizing(key) {\n return key === BinOrdinal\n || key === Quantile\n || key === Quantize\n || key === Threshold;\n}\n","import {UTC} from './types';\n\nimport {\n timeMillisecond, utcMillisecond,\n timeSecond, utcSecond,\n timeMinute, utcMinute,\n timeHour, utcHour,\n timeDay, utcDay,\n timeWeek, utcWeek,\n timeMonth, utcMonth,\n timeYear, utcYear\n} from 'd3-time';\n\nvar time = {\n millisecond: timeMillisecond,\n second: timeSecond,\n minute: timeMinute,\n hour: timeHour,\n day: timeDay,\n week: timeWeek,\n month: timeMonth,\n year: timeYear\n};\n\nvar utc = {\n millisecond: utcMillisecond,\n second: utcSecond,\n minute: utcMinute,\n hour: utcHour,\n day: utcDay,\n week: utcWeek,\n month: utcMonth,\n year: utcYear\n}\n\nexport function timeInterval(unit, type) {\n const t = (type === UTC ? utc : time);\n return t.hasOwnProperty(unit) && t[unit];\n}\n","export default function(scale) {\n return function(_) {\n var lo = _[0],\n hi = _[1],\n t;\n\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n\n return [\n scale.invert(lo),\n scale.invert(hi)\n ];\n }\n}\n","export default function(scale) {\n return function(_) {\n var range = scale.range(),\n lo = _[0],\n hi = _[1],\n min = -1, max, t, i, n;\n\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n\n for (i=0, n=range.length; i<n; ++i) {\n if (range[i] >= lo && range[i] <= hi) {\n if (min < 0) min = i;\n max = i;\n }\n }\n\n if (min < 0) return undefined;\n\n lo = scale.invertExtent(range[min]);\n hi = scale.invertExtent(range[max]);\n\n return [\n lo[0] === undefined ? lo[1] : lo[0],\n hi[1] === undefined ? hi[0] : hi[1]\n ];\n }\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","import {initRange} from \"./init\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new Map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new Map();\n for (const value of _) {\n const key = value + \"\";\n if (index.has(key)) continue;\n index.set(key, domain.push(value));\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: function() {\n return this.rgb().hex();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format])\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: function() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n },\n toString: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value\";\n\nexport default function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import decompose, {identity} from \"./decompose\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number\";\nimport {parseCss, parseSvg} from \"./parse\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","import bandSpace from './bandSpace';\nimport {range as sequence, bisectRight} from 'd3-array';\nimport {scaleOrdinal as ordinal} from 'd3-scale';\n\nexport function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse],\n space = bandSpace(n, paddingInner, paddingOuter);\n\n step = (stop - start) / (space || 1);\n if (round) {\n step = Math.floor(step);\n }\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) {\n start = Math.round(start);\n bandwidth = Math.round(bandwidth);\n }\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n if (arguments.length) {\n domain(_);\n return rescale();\n } else {\n return domain();\n }\n };\n\n scale.range = function(_) {\n if (arguments.length) {\n range = [+_[0], +_[1]];\n return rescale();\n } else {\n return range.slice();\n }\n };\n\n scale.rangeRound = function(_) {\n range = [+_[0], +_[1]];\n round = true;\n return rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n if (arguments.length) {\n round = !!_;\n return rescale();\n } else {\n return round;\n }\n };\n\n scale.padding = function(_) {\n if (arguments.length) {\n paddingOuter = Math.max(0, Math.min(1, _));\n paddingInner = paddingOuter;\n return rescale();\n } else {\n return paddingInner;\n }\n };\n\n scale.paddingInner = function(_) {\n if (arguments.length) {\n paddingInner = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return paddingInner;\n }\n };\n\n scale.paddingOuter = function(_) {\n if (arguments.length) {\n paddingOuter = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return paddingOuter;\n }\n };\n\n scale.align = function(_) {\n if (arguments.length) {\n align = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return align;\n }\n };\n\n scale.invertRange = function(_) {\n // bail if range has null or undefined values\n if (_[0] == null || _[1] == null) return;\n\n var lo = +_[0],\n hi = +_[1],\n reverse = range[1] < range[0],\n values = reverse ? ordinalRange().reverse() : ordinalRange(),\n n = values.length - 1, a, b, t;\n\n // bail if either range endpoint is invalid\n if (lo !== lo || hi !== hi) return;\n\n // order range inputs, bail if outside of scale range\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n if (hi < values[0] || lo > range[1-reverse]) return;\n\n // binary search to index into scale range\n a = Math.max(0, bisectRight(values, lo) - 1);\n b = lo===hi ? a : bisectRight(values, hi) - 1;\n\n // increment index a if lo is within padding gap\n if (lo - values[a] > bandwidth + 1e-10) ++a;\n\n if (reverse) {\n // map + swap\n t = a;\n a = n - b;\n b = n - t;\n }\n return (a > b) ? undefined : domain().slice(a, b+1);\n };\n\n scale.invert = function(_) {\n var value = scale.invertRange([_, _]);\n return value ? value[0] : value;\n };\n\n scale.copy = function() {\n return band()\n .domain(domain())\n .range(range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return rescale();\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band().paddingInner(1));\n}\n","var map = Array.prototype.map;\n\nexport function numbers(_) {\n return map.call(_, function(x) { return +x; });\n}\n","export var slice = Array.prototype.slice;\n","import invertRange from './scales/invertRange';\nimport invertRangeExtent from './scales/invertRangeExtent';\n\nimport {\n Identity,\n Linear, Log, Pow, Sqrt, Symlog,\n Time, UTC, Sequential, Diverging,\n Quantile, Quantize, Threshold,\n BinOrdinal, Ordinal, Band, Point\n} from './scales/types';\n\nimport {\n band as scaleBand,\n point as scalePoint\n} from './scales/scaleBand';\n\nimport {\n scaleBinOrdinal\n} from './scales/scaleBinOrdinal';\n\nimport * as $ from 'd3-scale';\n\n/**\n * Augment scales with their type and needed inverse methods.\n */\nfunction create(type, constructor) {\n return function scale() {\n var s = constructor();\n\n if (!s.invertRange) {\n s.invertRange = s.invert ? invertRange(s)\n : s.invertExtent ? invertRangeExtent(s)\n : undefined;\n }\n\n s.type = type;\n return s;\n };\n}\n\nexport default function scale(type, scale) {\n if (arguments.length > 1) {\n scales[type] = create(type, scale);\n return this;\n } else {\n return scales.hasOwnProperty(type) ? scales[type] : undefined;\n }\n}\n\nvar scales = {\n // identity scale\n [Identity]: $.scaleIdentity,\n\n // continuous scales\n [Linear]: $.scaleLinear,\n [Log]: $.scaleLog,\n [Pow]: $.scalePow,\n [Sqrt]: $.scaleSqrt,\n [Symlog]: $.scaleSymlog,\n [Time]: $.scaleTime,\n [UTC]: $.scaleUtc,\n\n // sequential scales\n [Sequential]: $.scaleSequential, // backwards compat\n [Sequential+'-'+Linear]: $.scaleSequential,\n [Sequential+'-'+Log]: $.scaleSequentialLog,\n [Sequential+'-'+Pow]: $.scaleSequentialPow,\n [Sequential+'-'+Sqrt]: $.scaleSequentialSqrt,\n [Sequential+'-'+Symlog]: $.scaleSequentialSymlog,\n\n // diverging scales\n [Diverging+'-'+Linear]: $.scaleDiverging,\n [Diverging+'-'+Log]: $.scaleDivergingLog,\n [Diverging+'-'+Pow]: $.scaleDivergingPow,\n [Diverging+'-'+Sqrt]: $.scaleDivergingSqrt,\n [Diverging+'-'+Symlog]: $.scaleDivergingSymlog,\n\n // discretizing scales\n [Quantile]: $.scaleQuantile,\n [Quantize]: $.scaleQuantize,\n [Threshold]: $.scaleThreshold,\n\n // discrete scales\n [BinOrdinal]: scaleBinOrdinal,\n [Ordinal]: $.scaleOrdinal,\n [Band]: scaleBand,\n [Point]: scalePoint\n};\n\nfor (var key in scales) {\n scale(key, scales[key]);\n}\n","import {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from 'd3-array';\nimport {tickFormat} from 'd3-scale';\nimport {peek} from 'vega-util';\nimport {numbers} from './numbers';\nimport {slice} from './slice';\n\nexport function scaleBinOrdinal() {\n var domain = [],\n range = [];\n\n function scale(x) {\n return x == null || x !== x\n ? undefined\n : range[(bisect(domain, x) - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (arguments.length) {\n domain = numbers(_);\n return scale;\n } else {\n return domain.slice();\n }\n };\n\n scale.range = function(_) {\n if (arguments.length) {\n range = slice.call(_);\n return scale;\n } else {\n return range.slice();\n }\n };\n\n scale.tickFormat = function(count, specifier) {\n return tickFormat(domain[0], peek(domain), count == null ? 10 : count, specifier);\n };\n\n scale.copy = function() {\n return scaleBinOrdinal().domain(scale.domain()).range(scale.range());\n };\n\n return scale;\n}","import getScale from './scales';\nimport {constant, peek} from 'vega-util';\nimport * as $ from 'd3-interpolate';\n\nconst scaleProps = ['clamp', 'base', 'constant', 'exponent'];\n\nexport function interpolateRange(interpolator, range) {\n var start = range[0],\n span = peek(range) - start;\n return function(i) { return interpolator(start + i * span); };\n}\n\nexport function interpolateColors(colors, type, gamma) {\n return $.piecewise(interpolate(type || 'rgb', gamma), colors);\n}\n\nexport function quantizeInterpolator(interpolator, count) {\n var samples = new Array(count),\n n = count + 1;\n for (var i = 0; i < count;) samples[i] = interpolator(++i / n);\n return samples;\n}\n\nexport function scaleCopy(scale) {\n const t = scale.type,\n s = scale.copy();\n s.type = t;\n return s;\n}\n\nexport function scaleFraction(scale, min, max) {\n var delta = max - min, i, t, s;\n\n if (!delta || !isFinite(delta)) {\n return constant(0.5);\n } else {\n i = (t = scale.type).indexOf('-');\n t = i < 0 ? t : t.slice(i + 1);\n s = getScale(t)().domain([min, max]).range([0, 1]);\n scaleProps.forEach(m => scale[m] ? s[m](scale[m]()) : 0);\n return s;\n }\n}\n\nexport function interpolate(type, gamma) {\n var interp = $[method(type)];\n return (gamma != null && interp && interp.gamma)\n ? interp.gamma(gamma)\n : interp;\n}\n\nfunction method(type) {\n return 'interpolate' + type.toLowerCase()\n .split('-')\n .map(function(s) { return s[0].toUpperCase() + s.slice(1); })\n .join('');\n}\n","import {discrete, continuous} from './palettes';\nimport {interpolateColors} from './interpolate';\n\nfunction colors(palette) {\n var n = palette.length / 6 | 0, c = new Array(n), i = 0;\n while (i < n) c[i] = '#' + palette.slice(i * 6, ++i * 6);\n return c;\n}\n\nfunction apply(_, f) {\n for (let k in _) scheme(k, f(_[k]));\n}\n\nconst schemes = {};\napply(discrete, colors);\napply(continuous, _ => interpolateColors(colors(_)));\n\nexport function scheme(name, scheme) {\n name = name && name.toLowerCase();\n if (arguments.length > 1) {\n schemes[name] = scheme;\n return this;\n } else {\n return schemes[name];\n }\n}\n","import {isLogarithmic, timeInterval, Time} from 'vega-scale';\nimport {error, isNumber, isObject, isString, peek, span} from 'vega-util';\nimport {timeFormat} from 'd3-time-format';\nimport {\n format as numberFormat,\n formatSpecifier\n} from 'd3-format';\n\n/**\n * Determine the tick count or interval function.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} count - The desired tick count or interval specifier.\n * @param {number} minStep - The desired minimum step between tick values.\n * @return {*} - The tick count or interval function.\n */\nexport function tickCount(scale, count, minStep) {\n var step;\n\n if (isNumber(count) && minStep != null) {\n count = Math.min(count, ~~(span(scale.domain()) / minStep) || 1);\n }\n\n if (isObject(count)) {\n step = count.step;\n count = count.interval;\n }\n\n if (isString(count)) {\n count = timeInterval(count, scale.type)\n || error('Only time and utc scales accept interval strings.');\n if (step) count = count.every(step);\n }\n\n return count;\n}\n\n/**\n * Filter a set of candidate tick values, ensuring that only tick values\n * that lie within the scale range are included.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {Array<*>} ticks - The candidate tick values.\n * @param {*} count - The tick count or interval function.\n * @return {Array<*>} - The filtered tick values.\n */\nexport function validTicks(scale, ticks, count) {\n var range = scale.range(),\n lo = Math.floor(range[0]),\n hi = Math.ceil(peek(range));\n\n if (lo > hi) {\n range = hi;\n hi = lo;\n lo = range;\n }\n\n ticks = ticks.filter(function(v) {\n v = scale(v);\n return lo <= v && v <= hi;\n });\n\n if (count > 0 && ticks.length > 1) {\n var endpoints = [ticks[0], peek(ticks)];\n while (ticks.length > count && ticks.length >= 3) {\n ticks = ticks.filter(function(_, i) { return !(i % 2); });\n }\n if (ticks.length < 3) {\n ticks = endpoints;\n }\n }\n\n return ticks;\n}\n\n/**\n * Generate tick values for the given scale and approximate tick count or\n * interval value. If the scale has a 'ticks' method, it will be used to\n * generate the ticks, with the count argument passed as a parameter. If the\n * scale lacks a 'ticks' method, the full scale domain will be returned.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} [count] - The approximate number of desired ticks.\n * @return {Array<*>} - The generated tick values.\n */\nexport function tickValues(scale, count) {\n return scale.bins ? validTicks(scale, binValues(scale.bins, count))\n : scale.ticks ? scale.ticks(count)\n : scale.domain();\n}\n\n/**\n * Generate tick values for an array of bin values.\n * @param {Array<*>} bins - An array of bin boundaries.\n * @param {Number} [count] - The approximate number of desired ticks.\n * @return {Array<*>} - The generated tick values.\n */\nfunction binValues(bins, count) {\n var n = bins.length,\n stride = ~~(n / (count || n));\n\n return stride < 2\n ? bins.slice()\n : bins.filter(function(x, i) { return !(i % stride); });\n}\n\n/**\n * Generate a label format function for a scale. If the scale has a\n * 'tickFormat' method, it will be used to generate the formatter, with the\n * count and specifier arguments passed as parameters. If the scale lacks a\n * 'tickFormat' method, the returned formatter performs simple string coercion.\n * If the input scale is a logarithmic scale and the format specifier does not\n * indicate a desired decimal precision, a special variable precision formatter\n * that automatically trims trailing zeroes will be generated.\n * @param {Scale} scale - The scale for which to generate the label formatter.\n * @param {*} [count] - The approximate number of desired ticks.\n * @param {string} [specifier] - The format specifier. Must be a legal d3\n * specifier string (see https://github.com/d3/d3-format#formatSpecifier).\n * @return {function(*):string} - The generated label formatter.\n */\nexport function tickFormat(scale, count, specifier, formatType) {\n var format = scale.tickFormat ? scale.tickFormat(count, specifier)\n : specifier && formatType === Time ? timeFormat(specifier)\n : specifier ? numberFormat(specifier)\n : String;\n\n if (isLogarithmic(scale.type)) {\n var logfmt = variablePrecision(specifier);\n format = scale.bins ? logfmt : filter(format, logfmt);\n }\n\n return format;\n}\n\nfunction filter(sourceFormat, targetFormat) {\n return function(_) {\n return sourceFormat(_) ? targetFormat(_) : '';\n };\n}\n\nfunction variablePrecision(specifier) {\n var s = formatSpecifier(specifier || ',');\n\n if (s.precision == null) {\n s.precision = 12;\n switch (s.type) {\n case '%': s.precision -= 2; break;\n case 'e': s.precision -= 1; break;\n }\n return trimZeroes(\n numberFormat(s), // number format\n numberFormat('.1f')(1)[1] // decimal point character\n );\n } else {\n return numberFormat(s);\n }\n}\n\nfunction trimZeroes(format, decimalChar) {\n return function(x) {\n var str = format(x),\n dec = str.indexOf(decimalChar),\n idx, end;\n\n if (dec < 0) return str;\n\n idx = rightmostDigit(str, dec);\n end = idx < str.length ? str.slice(idx) : '';\n while (--idx > dec) if (str[idx] !== '0') { ++idx; break; }\n\n return str.slice(0, idx) + end;\n };\n}\n\nfunction rightmostDigit(str, dec) {\n var i = str.lastIndexOf('e'), c;\n if (i > 0) return i;\n for (i=str.length; --i > dec;) {\n c = str.charCodeAt(i);\n if (c >= 48 && c <= 57) return i + 1; // is digit\n }\n}\n","import {tickCount, tickFormat, tickValues, validTicks} from './ticks';\nimport {Transform, ingest} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Generates axis ticks for visualizing a spatial scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate ticks for.\n * @param {*} [params.count=10] - The approximate number of ticks, or\n * desired tick interval, to use.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {function(*):string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid d3 4.0 format specifier.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nexport default function AxisTicks(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(AxisTicks, Transform);\n\nprototype.transform = function(_, pulse) {\n if (this.value && !_.modified()) {\n return pulse.StopPropagation;\n }\n\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n ticks = this.value,\n scale = _.scale,\n tally = _.count == null ? (_.values ? _.values.length : 10) : _.count,\n count = tickCount(scale, tally, _.minstep),\n format = _.format || tickFormat(scale, count, _.formatSpecifier, _.formatType),\n values = _.values ? validTicks(scale, _.values, count) : tickValues(scale, count);\n\n if (ticks) out.rem = ticks;\n\n ticks = values.map(function(value, i) {\n return ingest({\n index: i / (values.length - 1 || 1),\n value: value,\n label: format(value)\n });\n });\n\n if (_.extra && ticks.length) {\n // add an extra tick pegged to the initial domain value\n // this is used to generate axes with 'binned' domains\n ticks.push(ingest({\n index: -1,\n extra: {value: ticks[0].value},\n label: ''\n }));\n }\n\n out.source = ticks;\n out.add = ticks;\n this.value = ticks;\n\n return out;\n};\n","import {Transform, ingest, tupleid} from 'vega-dataflow';\nimport {error, fastmap, inherits, isArray} from 'vega-util';\n\n/**\n * Joins a set of data elements against a set of visual items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): object} [params.item] - An item generator function.\n * @param {function(object): *} [params.key] - The key field associating data and visual items.\n */\nexport default function DataJoin(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(DataJoin, Transform);\n\nfunction defaultItemCreate() {\n return ingest({});\n}\n\nfunction isExit(t) {\n return t.exit;\n}\n\nprototype.transform = function(_, pulse) {\n var df = pulse.dataflow,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n item = _.item || defaultItemCreate,\n key = _.key || tupleid,\n map = this.value;\n\n // prevent transient (e.g., hover) requests from\n // cascading across marks derived from marks\n if (isArray(out.encode)) {\n out.encode = null;\n }\n\n if (map && (_.modified('key') || pulse.modified(key))) {\n error('DataJoin does not support modified key function or fields.');\n }\n\n if (!map) {\n pulse = pulse.addAll();\n this.value = map = fastmap().test(isExit);\n map.lookup = function(t) { return map.get(key(t)); };\n }\n\n pulse.visit(pulse.ADD, function(t) {\n var k = key(t),\n x = map.get(k);\n\n if (x) {\n if (x.exit) {\n map.empty--;\n out.add.push(x);\n } else {\n out.mod.push(x);\n }\n } else {\n map.set(k, (x = item(t)));\n out.add.push(x);\n }\n\n x.datum = t;\n x.exit = false;\n });\n\n pulse.visit(pulse.MOD, function(t) {\n var k = key(t),\n x = map.get(k);\n\n if (x) {\n x.datum = t;\n out.mod.push(x);\n }\n });\n\n pulse.visit(pulse.REM, function(t) {\n var k = key(t),\n x = map.get(k);\n\n if (t === x.datum && !x.exit) {\n out.rem.push(x);\n x.exit = true;\n ++map.empty;\n }\n });\n\n if (pulse.changed(pulse.ADD_MOD)) out.modifies('datum');\n\n if (_.clean && map.empty > df.cleanThreshold) df.runAfter(map.clean);\n\n return out;\n};\n","import {Transform} from 'vega-dataflow';\nimport {falsy, inherits, isArray} from 'vega-util';\n\n/**\n * Invokes encoding functions for visual items.\n * @constructor\n * @param {object} params - The parameters to the encoding functions. This\n * parameter object will be passed through to all invoked encoding functions.\n * @param {object} [params.mod=false] - Flag indicating if tuples in the input\n * mod set that are unmodified by encoders should be included in the output.\n * @param {object} param.encoders - The encoding functions\n * @param {function(object, object): boolean} [param.encoders.update] - Update encoding set\n * @param {function(object, object): boolean} [param.encoders.enter] - Enter encoding set\n * @param {function(object, object): boolean} [param.encoders.exit] - Exit encoding set\n */\nexport default function Encode(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Encode, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.ADD_REM),\n fmod = _.mod || false,\n encoders = _.encoders,\n encode = pulse.encode;\n\n // if an array, the encode directive includes additional sets\n // that must be defined in order for the primary set to be invoked\n // e.g., only run the update set if the hover set is defined\n if (isArray(encode)) {\n if (out.changed() || encode.every(function(e) { return encoders[e]; })) {\n encode = encode[0];\n out.encode = null; // consume targeted encode directive\n } else {\n return pulse.StopPropagation;\n }\n }\n\n // marshall encoder functions\n var reenter = encode === 'enter',\n update = encoders.update || falsy,\n enter = encoders.enter || falsy,\n exit = encoders.exit || falsy,\n set = (encode && !reenter ? encoders[encode] : update) || falsy;\n\n if (pulse.changed(pulse.ADD)) {\n pulse.visit(pulse.ADD, function(t) { enter(t, _); update(t, _); });\n out.modifies(enter.output);\n out.modifies(update.output);\n if (set !== falsy && set !== update) {\n pulse.visit(pulse.ADD, function(t) { set(t, _); });\n out.modifies(set.output);\n }\n }\n\n if (pulse.changed(pulse.REM) && exit !== falsy) {\n pulse.visit(pulse.REM, function(t) { exit(t, _); });\n out.modifies(exit.output);\n }\n\n if (reenter || set !== falsy) {\n var flag = pulse.MOD | (_.modified() ? pulse.REFLOW : 0);\n if (reenter) {\n pulse.visit(flag, function(t) {\n var mod = enter(t, _) || fmod;\n if (set(t, _) || mod) out.mod.push(t);\n });\n if (out.mod.length) out.modifies(enter.output);\n } else {\n pulse.visit(flag, function(t) {\n if (set(t, _) || fmod) out.mod.push(t);\n });\n }\n if (out.mod.length) out.modifies(set.output);\n }\n\n return out.changed() ? out : pulse.StopPropagation;\n};\n","export const continuous = {\n blues: 'cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90',\n greens: 'd3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429',\n greys: 'e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e',\n oranges: 'fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303',\n purples: 'e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c',\n reds: 'fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13',\n\n blueGreen: 'd5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429',\n bluePurple: 'ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71',\n greenBlue: 'd3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1',\n orangeRed: 'fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403',\n purpleBlue: 'dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281',\n purpleBlueGreen: 'dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353',\n purpleRed: 'dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a',\n redPurple: 'fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174',\n yellowGreen: 'e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034',\n yellowOrangeBrown: 'feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204',\n yellowOrangeRed: 'fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225',\n\n blueOrange: '134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07',\n brownBlueGreen: '704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147',\n purpleGreen: '5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29',\n purpleOrange: '4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07',\n redBlue: '8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85',\n redGrey: '8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434',\n yellowGreenBlue: 'eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185',\n redYellowBlue: 'a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695',\n redYellowGreen: 'a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837',\n pinkYellowGreen: '8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419',\n spectral: '9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2',\n\n viridis: '440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725',\n magma: '0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf',\n inferno: '0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4',\n plasma: '0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921',\n\n rainbow: '6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa',\n sinebow: 'ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040',\n\n browns: 'eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632',\n tealBlues: 'bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985',\n teals: 'bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667',\n warmGreys: 'dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e',\n\n goldGreen: 'f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36',\n goldOrange: 'f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26',\n goldRed: 'f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e',\n\n lightGreyRed: 'efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b',\n lightGreyTeal: 'e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc',\n lightMulti: 'e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c',\n lightOrange: 'f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b',\n lightTealBlue: 'e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988',\n\n darkBlue: '3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff',\n darkGold: '3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff',\n darkGreen: '3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa',\n darkMulti: '3737371f5287197d8c29a86995ce3fffe800ffffff',\n darkRed: '3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c'\n};\n\nexport const discrete = {\n category10: '1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf',\n category20: '1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5',\n category20b: '393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6',\n category20c: '3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9',\n tableau10: '4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac',\n tableau20: '4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5',\n accent: '7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666',\n dark2: '1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666',\n paired: 'a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928',\n pastel1: 'fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2',\n pastel2: 'b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc',\n set1: 'e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999',\n set2: '66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3',\n set3: '8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f'\n};\n","export var Symbols = 'symbol';\nexport var Discrete = 'discrete';\nexport var Gradient = 'gradient';\n","import {Symbols, Discrete} from './legend-types';\nimport {tickFormat, tickValues} from './ticks';\n\nimport {\n Quantile,\n Quantize,\n Threshold,\n tickFormat as spanFormat,\n Time\n} from 'vega-scale';\nimport {peek} from 'vega-util';\n\nconst symbols = {\n [Quantile]: 'quantiles',\n [Quantize]: 'thresholds',\n [Threshold]: 'domain'\n};\n\nconst formats = {\n [Quantile]: 'quantiles',\n [Quantize]: 'domain'\n};\n\nexport function labelValues(scale, count) {\n return scale.bins ? binValues(scale.bins)\n : symbols[scale.type] ? thresholdValues(scale[symbols[scale.type]]())\n : tickValues(scale, count);\n}\n\nexport function thresholdFormat(scale, specifier) {\n var _ = scale[formats[scale.type]](),\n n = _.length,\n d = n > 1 ? _[1] - _[0] : _[0], i;\n\n for (i=1; i<n; ++i) {\n d = Math.min(d, _[i] - _[i-1]);\n }\n\n // 3 ticks times 10 for increased resolution\n return spanFormat(0, d, 3 * 10, specifier);\n}\n\nfunction thresholdValues(thresholds) {\n const values = [-Infinity].concat(thresholds);\n values.max = +Infinity;\n\n return values;\n}\n\nfunction binValues(bins) {\n const values = bins.slice(0, -1);\n values.max = peek(bins);\n\n return values;\n}\n\nfunction isDiscreteRange(scale) {\n return symbols[scale.type] || scale.bins;\n}\n\nexport function labelFormat(scale, count, type, specifier, formatType) {\n const format = formats[scale.type] && formatType !== Time\n ? thresholdFormat(scale, specifier)\n : tickFormat(scale, count, specifier, formatType);\n\n return type === Symbols && isDiscreteRange(scale) ? formatRange(format)\n : type === Discrete ? formatDiscrete(format)\n : formatPoint(format);\n}\n\nfunction formatRange(format) {\n return function(value, index, array) {\n var limit = array[index + 1] || array.max || +Infinity,\n lo = formatValue(value, format),\n hi = formatValue(limit, format);\n return lo && hi ? lo + '\\u2013' + hi : hi ? '< ' + hi : '\\u2265 ' + lo;\n };\n}\n\nfunction formatDiscrete(format) {\n return function(value, index) {\n return index ? format(value) : null;\n }\n}\n\nfunction formatPoint(format) {\n return function(value) {\n return format(value);\n };\n}\n\nfunction formatValue(value, format) {\n return isFinite(value) ? format(value) : null;\n}\n\nexport function labelFraction(scale) {\n var domain = scale.domain(),\n count = domain.length - 1,\n lo = +domain[0],\n hi = +peek(domain),\n span = hi - lo;\n\n if (scale.type === Threshold) {\n var adjust = count ? span / count : 0.1;\n lo -= adjust;\n hi += adjust;\n span = hi - lo;\n }\n\n return function(value) {\n return (value - lo) / span;\n };\n}\n","import {labelFormat, labelFraction, labelValues} from './labels';\nimport {Symbols, Gradient} from './legend-types';\nimport {tickCount} from './ticks';\nimport {Transform, ingest} from 'vega-dataflow';\nimport {scaleFraction} from 'vega-scale';\nimport {constant, inherits, isFunction, peek} from 'vega-util';\n\n/**\n * Generates legend entries for visualizing a scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate items for.\n * @param {*} [params.count=5] - The approximate number of items, or\n * desired tick interval, to use.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid D3 format specifier string.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nexport default function LegendEntries(params) {\n Transform.call(this, [], params);\n}\n\nvar prototype = inherits(LegendEntries, Transform);\n\nprototype.transform = function(_, pulse) {\n if (this.value != null && !_.modified()) {\n return pulse.StopPropagation;\n }\n\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n items = this.value,\n type = _.type || Symbols,\n scale = _.scale,\n count = tickCount(scale, _.count == null ? 5 : _.count, _.minstep),\n format = _.format || labelFormat(scale, count, type, _.formatSpecifier, _.formatType),\n values = _.values || labelValues(scale, count, type),\n domain, fraction, size, offset;\n\n if (items) out.rem = items;\n\n if (type === Symbols) {\n if (isFunction(size = _.size)) {\n // if first value maps to size zero, remove from list (vega#717)\n if (!_.values && scale(values[0]) === 0) {\n values = values.slice(1);\n }\n // compute size offset for legend entries\n offset = values.reduce(function(max, value) {\n return Math.max(max, size(value, _));\n }, 0);\n } else {\n size = constant(offset = size || 8);\n }\n\n items = values.map(function(value, index) {\n return ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n offset: offset,\n size: size(value, _)\n });\n });\n }\n\n else if (type === Gradient) {\n domain = scale.domain(),\n fraction = scaleFraction(scale, domain[0], peek(domain));\n\n // if automatic label generation produces 2 or fewer values,\n // use the domain end points instead (fixes vega/vega#1364)\n if (values.length < 3 && !_.values && domain[0] !== peek(domain)) {\n values = [domain[0], peek(domain)];\n }\n\n items = values.map(function(value, index) {\n return ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: fraction(value)\n });\n });\n }\n\n else {\n size = values.length - 1;\n fraction = labelFraction(scale);\n\n items = values.map(function(value, index) {\n return ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: index ? fraction(value) : 0,\n perc2: index === size ? 1 : fraction(values[index+1])\n });\n });\n }\n\n out.source = items;\n out.add = items;\n this.value = items;\n\n return out;\n};\n","import {Transform} from 'vega-dataflow';\nimport {error, fastmap, inherits} from 'vega-util';\n\nvar Paths = fastmap({\n 'line': line,\n 'line-radial': lineR,\n 'arc': arc,\n 'arc-radial': arcR,\n 'curve': curve,\n 'curve-radial': curveR,\n 'orthogonal-horizontal': orthoX,\n 'orthogonal-vertical': orthoY,\n 'orthogonal-radial': orthoR,\n 'diagonal-horizontal': diagonalX,\n 'diagonal-vertical': diagonalY,\n 'diagonal-radial': diagonalR\n});\n\nfunction sourceX(t) { return t.source.x; }\nfunction sourceY(t) { return t.source.y; }\nfunction targetX(t) { return t.target.x; }\nfunction targetY(t) { return t.target.y; }\n\n /**\n * Layout paths linking source and target elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function LinkPath(params) {\n Transform.call(this, {}, params);\n}\n\nLinkPath.Definition = {\n \"type\": \"LinkPath\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"sourceX\", \"type\": \"field\", \"default\": \"source.x\" },\n { \"name\": \"sourceY\", \"type\": \"field\", \"default\": \"source.y\" },\n { \"name\": \"targetX\", \"type\": \"field\", \"default\": \"target.x\" },\n { \"name\": \"targetY\", \"type\": \"field\", \"default\": \"target.y\" },\n { \"name\": \"orient\", \"type\": \"enum\", \"default\": \"vertical\",\n \"values\": [\"horizontal\", \"vertical\", \"radial\"] },\n { \"name\": \"shape\", \"type\": \"enum\", \"default\": \"line\",\n \"values\": [\"line\", \"arc\", \"curve\", \"diagonal\", \"orthogonal\"] },\n { \"name\": \"require\", \"type\": \"signal\" },\n { \"name\": \"as\", \"type\": \"string\", \"default\": \"path\" }\n ]\n};\n\nvar prototype = inherits(LinkPath, Transform);\n\nprototype.transform = function(_, pulse) {\n var sx = _.sourceX || sourceX,\n sy = _.sourceY || sourceY,\n tx = _.targetX || targetX,\n ty = _.targetY || targetY,\n as = _.as || 'path',\n orient = _.orient || 'vertical',\n shape = _.shape || 'line',\n path = Paths.get(shape + '-' + orient) || Paths.get(shape);\n\n if (!path) {\n error('LinkPath unsupported type: ' + _.shape\n + (_.orient ? '-' + _.orient : ''));\n }\n\n pulse.visit(pulse.SOURCE, function(t) {\n t[as] = path(sx(t), sy(t), tx(t), ty(t));\n });\n\n return pulse.reflow(_.modified()).modifies(as);\n};\n\n// -- Link Path Generation Methods -----\n\nfunction line(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy +\n 'L' + tx + ',' + ty;\n}\n\nfunction lineR(sa, sr, ta, tr) {\n return line(\n sr * Math.cos(sa), sr * Math.sin(sa),\n tr * Math.cos(ta), tr * Math.sin(ta)\n );\n}\n\nfunction arc(sx, sy, tx, ty) {\n var dx = tx - sx,\n dy = ty - sy,\n rr = Math.sqrt(dx * dx + dy * dy) / 2,\n ra = 180 * Math.atan2(dy, dx) / Math.PI;\n return 'M' + sx + ',' + sy +\n 'A' + rr + ',' + rr +\n ' ' + ra + ' 0 1' +\n ' ' + tx + ',' + ty;\n}\n\nfunction arcR(sa, sr, ta, tr) {\n return arc(\n sr * Math.cos(sa), sr * Math.sin(sa),\n tr * Math.cos(ta), tr * Math.sin(ta)\n );\n}\n\nfunction curve(sx, sy, tx, ty) {\n var dx = tx - sx,\n dy = ty - sy,\n ix = 0.2 * (dx + dy),\n iy = 0.2 * (dy - dx);\n return 'M' + sx + ',' + sy +\n 'C' + (sx+ix) + ',' + (sy+iy) +\n ' ' + (tx+iy) + ',' + (ty-ix) +\n ' ' + tx + ',' + ty;\n}\n\nfunction curveR(sa, sr, ta, tr) {\n return curve(\n sr * Math.cos(sa), sr * Math.sin(sa),\n tr * Math.cos(ta), tr * Math.sin(ta)\n );\n}\n\nfunction orthoX(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy +\n 'V' + ty + 'H' + tx;\n}\n\nfunction orthoY(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy +\n 'H' + tx + 'V' + ty;\n}\n\nfunction orthoR(sa, sr, ta, tr) {\n var sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa;\n return 'M' + (sr*sc) + ',' + (sr*ss) +\n 'A' + sr + ',' + sr + ' 0 0,' + (sf?1:0) +\n ' ' + (sr*tc) + ',' + (sr*ts) +\n 'L' + (tr*tc) + ',' + (tr*ts);\n}\n\nfunction diagonalX(sx, sy, tx, ty) {\n var m = (sx + tx) / 2;\n return 'M' + sx + ',' + sy +\n 'C' + m + ',' + sy +\n ' ' + m + ',' + ty +\n ' ' + tx + ',' + ty;\n}\n\nfunction diagonalY(sx, sy, tx, ty) {\n var m = (sy + ty) / 2;\n return 'M' + sx + ',' + sy +\n 'C' + sx + ',' + m +\n ' ' + tx + ',' + m +\n ' ' + tx + ',' + ty;\n}\n\nfunction diagonalR(sa, sr, ta, tr) {\n var sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n mr = (sr + tr) / 2;\n return 'M' + (sr*sc) + ',' + (sr*ss) +\n 'C' + (mr*sc) + ',' + (mr*ss) +\n ' ' + (mr*tc) + ',' + (mr*ts) +\n ' ' + (tr*tc) + ',' + (tr*ts);\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits, one} from 'vega-util';\nimport {range, sum} from 'd3-array';\n\n/**\n * Pie and donut chart layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size pie segments.\n * @param {number} [params.startAngle=0] - The start angle (in radians) of the layout.\n * @param {number} [params.endAngle=2π] - The end angle (in radians) of the layout.\n * @param {boolean} [params.sort] - Boolean flag for sorting sectors by value.\n */\nexport default function Pie(params) {\n Transform.call(this, null, params);\n}\n\nPie.Definition = {\n \"type\": \"Pie\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"startAngle\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"endAngle\", \"type\": \"number\", \"default\": 6.283185307179586 },\n { \"name\": \"sort\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"startAngle\", \"endAngle\"] }\n ]\n};\n\nvar prototype = inherits(Pie, Transform);\n\nprototype.transform = function(_, pulse) {\n var as = _.as || ['startAngle', 'endAngle'],\n startAngle = as[0],\n endAngle = as[1],\n field = _.field || one,\n start = _.startAngle || 0,\n stop = _.endAngle != null ? _.endAngle : 2 * Math.PI,\n data = pulse.source,\n values = data.map(field),\n n = values.length,\n a = start,\n k = (stop - start) / sum(values),\n index = range(n),\n i, t, v;\n\n if (_.sort) {\n index.sort(function(a, b) {\n return values[a] - values[b];\n });\n }\n\n for (i=0; i<n; ++i) {\n v = values[index[i]];\n t = data[index[i]];\n t[startAngle] = a;\n t[endAngle] = (a += v * k);\n }\n\n this.value = values;\n return pulse.reflow(_.modified()).modifies(as);\n};\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","import {tickCount} from './ticks';\nimport {Transform} from 'vega-dataflow';\nimport {\n error, inherits, isArray, isFunction, isString, peek, stringValue,\n toSet, zoomLinear, zoomLog, zoomPow, zoomSymlog\n} from 'vega-util';\n\nimport {\n Ordinal, Band, Point, Sequential, Diverging,\n Linear, Log, Pow, Sqrt, Symlog, Time, UTC,\n Quantile, Quantize, Threshold, BinOrdinal,\n isContinuous,\n isInterpolating,\n isLogarithmic,\n bandSpace,\n interpolateColors,\n interpolateRange,\n interpolate as getInterpolate,\n scale as getScale,\n scheme as getScheme,\n scaleImplicit,\n quantizeInterpolator\n} from 'vega-scale';\n\nimport {range as sequence} from 'd3-array';\n\nimport {\n interpolate,\n interpolateRound\n} from 'd3-interpolate';\n\nvar DEFAULT_COUNT = 5;\n\nfunction includeZero(scale) {\n const type = scale.type;\n return !scale.bins && (\n type === Linear || type === Pow || type === Sqrt\n );\n}\n\nfunction includePad(type) {\n return isContinuous(type) && type !== Sequential;\n}\n\nvar SKIP = toSet([\n 'set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount',\n 'domain', 'domainMin', 'domainMid', 'domainMax',\n 'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins',\n 'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma'\n]);\n\n/**\n * Maintains a scale function mapping data values to visual channels.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function Scale(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\nvar prototype = inherits(Scale, Transform);\n\nprototype.transform = function(_, pulse) {\n var df = pulse.dataflow,\n scale = this.value,\n key = scaleKey(_);\n\n if (!scale || key !== scale.type) {\n this.value = scale = getScale(key)();\n }\n\n for (key in _) if (!SKIP[key]) {\n // padding is a scale property for band/point but not others\n if (key === 'padding' && includePad(scale.type)) continue;\n // invoke scale property setter, raise warning if not found\n isFunction(scale[key])\n ? scale[key](_[key])\n : df.warn('Unsupported scale property: ' + key);\n }\n\n configureRange(scale, _,\n configureBins(scale, _, configureDomain(scale, _, df))\n );\n\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n};\n\nfunction scaleKey(_) {\n var t = _.type, d = '', n;\n\n // backwards compatibility pre Vega 5.\n if (t === Sequential) return Sequential + '-' + Linear;\n\n if (isContinuousColor(_)) {\n n = _.rawDomain ? _.rawDomain.length\n : _.domain ? _.domain.length + +(_.domainMid != null)\n : 0;\n d = n === 2 ? Sequential + '-'\n : n === 3 ? Diverging + '-'\n : '';\n }\n\n return ((d + t) || Linear).toLowerCase();\n}\n\nfunction isContinuousColor(_) {\n const t = _.type;\n return isContinuous(t) && t !== Time && t !== UTC && (\n _.scheme || _.range && _.range.length && _.range.every(isString)\n );\n}\n\nfunction configureDomain(scale, _, df) {\n // check raw domain, if provided use that and exit early\n var raw = rawDomain(scale, _.domainRaw, df);\n if (raw > -1) return raw;\n\n var domain = _.domain,\n type = scale.type,\n zero = _.zero || (_.zero === undefined && includeZero(scale)),\n n, mid;\n\n if (!domain) return 0;\n\n // adjust continuous domain for minimum pixel padding\n if (includePad(type) && _.padding && domain[0] !== peek(domain)) {\n domain = padDomain(type, domain, _.range, _.padding, _.exponent, _.constant);\n }\n\n // adjust domain based on zero, min, max settings\n if (zero || _.domainMin != null || _.domainMax != null || _.domainMid != null) {\n n = ((domain = domain.slice()).length - 1) || 1;\n if (zero) {\n if (domain[0] > 0) domain[0] = 0;\n if (domain[n] < 0) domain[n] = 0;\n }\n if (_.domainMin != null) domain[0] = _.domainMin;\n if (_.domainMax != null) domain[n] = _.domainMax;\n\n if (_.domainMid != null) {\n mid = _.domainMid;\n if (mid < domain[0] || mid > domain[n]) {\n df.warn('Scale domainMid exceeds domain min or max.', mid);\n }\n domain.splice(n, 0, mid);\n }\n }\n\n // set the scale domain\n scale.domain(domainCheck(type, domain, df));\n\n // if ordinal scale domain is defined, prevent implicit\n // domain construction as side-effect of scale lookup\n if (type === Ordinal) {\n scale.unknown(_.domainImplicit ? scaleImplicit : undefined);\n }\n\n // perform 'nice' adjustment as requested\n if (_.nice && scale.nice) {\n scale.nice((_.nice !== true && tickCount(scale, _.nice)) || null);\n }\n\n // return the cardinality of the domain\n return domain.length;\n}\n\nfunction rawDomain(scale, raw, df) {\n if (raw) {\n scale.domain(domainCheck(scale.type, raw, df));\n return raw.length;\n } else {\n return -1;\n }\n}\n\nfunction padDomain(type, domain, range, pad, exponent, constant) {\n var span = Math.abs(peek(range) - range[0]),\n frac = span / (span - 2 * pad),\n d = type === Log ? zoomLog(domain, null, frac)\n : type === Sqrt ? zoomPow(domain, null, frac, 0.5)\n : type === Pow ? zoomPow(domain, null, frac, exponent || 1)\n : type === Symlog ? zoomSymlog(domain, null, frac, constant || 1)\n : zoomLinear(domain, null, frac);\n\n domain = domain.slice();\n domain[0] = d[0];\n domain[domain.length-1] = d[1];\n return domain;\n}\n\nfunction domainCheck(type, domain, df) {\n if (isLogarithmic(type)) {\n // sum signs of domain values\n // if all pos or all neg, abs(sum) === domain.length\n var s = Math.abs(domain.reduce(function(s, v) {\n return s + (v < 0 ? -1 : v > 0 ? 1 : 0);\n }, 0));\n\n if (s !== domain.length) {\n df.warn('Log scale domain includes zero: ' + stringValue(domain));\n }\n }\n return domain;\n}\n\nfunction configureBins(scale, _, count) {\n let bins = _.bins;\n\n if (bins && !isArray(bins)) {\n // generate bin boundary array\n const domain = (bins.start == null || bins.stop == null) && scale.domain(),\n start = bins.start == null ? domain[0] : bins.start,\n stop = bins.stop == null ? peek(domain) : bins.stop,\n step = bins.step;\n\n if (!step) error('Scale bins parameter missing step property.');\n bins = sequence(start, stop + step, step);\n }\n\n if (bins) {\n // assign bin boundaries to scale instance\n scale.bins = bins;\n } else if (scale.bins) {\n // no current bins, remove bins if previously set\n delete scale.bins;\n }\n\n // special handling for bin-ordinal scales\n if (scale.type === BinOrdinal) {\n if (!bins) {\n // the domain specifies the bins\n scale.bins = scale.domain();\n } else if (!_.domain && !_.domainRaw) {\n // the bins specify the domain\n scale.domain(bins);\n count = bins.length;\n }\n }\n\n // return domain cardinality\n return count;\n}\n\nfunction configureRange(scale, _, count) {\n var round = _.round || false,\n range = _.range;\n\n // if range step specified, calculate full range extent\n if (_.rangeStep != null) {\n range = configureRangeStep(scale.type, _, count);\n }\n\n // else if a range scheme is defined, use that\n else if (_.scheme) {\n range = configureScheme(scale.type, _, count);\n if (isFunction(range)) return scale.interpolator(range);\n }\n\n // given a range array for an interpolating scale, convert to interpolator\n else if (range && isInterpolating(scale.type)) {\n return scale.interpolator(\n interpolateColors(flip(range, _.reverse), _.interpolate, _.interpolateGamma)\n );\n }\n\n // configure rounding / interpolation\n if (range && _.interpolate && scale.interpolate) {\n scale.interpolate(getInterpolate(_.interpolate, _.interpolateGamma));\n } else if (isFunction(scale.round)) {\n scale.round(round);\n } else if (isFunction(scale.rangeRound)) {\n scale.interpolate(round ? interpolateRound : interpolate);\n }\n\n if (range) scale.range(flip(range, _.reverse));\n}\n\nfunction configureRangeStep(type, _, count) {\n if (type !== Band && type !== Point) {\n error('Only band and point scales support rangeStep.');\n }\n\n // calculate full range based on requested step size and padding\n var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0,\n inner = type === Point ? 1\n : ((_.paddingInner != null ? _.paddingInner : _.padding) || 0);\n return [0, _.rangeStep * bandSpace(count, inner, outer)];\n}\n\nfunction configureScheme(type, _, count) {\n var extent = _.schemeExtent,\n name, scheme;\n\n if (isArray(_.scheme)) {\n scheme = interpolateColors(_.scheme, _.interpolate, _.interpolateGamma);\n } else {\n name = _.scheme.toLowerCase();\n scheme = getScheme(name);\n if (!scheme) error('Unrecognized scheme name: ' + _.scheme);\n }\n\n // determine size for potential discrete range\n count = (type === Threshold) ? count + 1\n : (type === BinOrdinal) ? count - 1\n : (type === Quantile || type === Quantize) ? (+_.schemeCount || DEFAULT_COUNT)\n : count;\n\n // adjust and/or quantize scheme as appropriate\n return isInterpolating(type) ? adjustScheme(scheme, extent, _.reverse)\n : isFunction(scheme) ? quantizeInterpolator(adjustScheme(scheme, extent), count)\n : type === Ordinal ? scheme : scheme.slice(0, count);\n}\n\nfunction adjustScheme(scheme, extent, reverse) {\n return (isFunction(scheme) && (extent || reverse))\n ? interpolateRange(scheme, flip(extent || [0, 1], reverse))\n : scheme;\n}\n\nfunction flip(array, reverse) {\n return reverse ? array.slice().reverse() : array;\n}\n\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Sorts scenegraph items in the pulse source array.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting tuples.\n */\nexport default function SortItems(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(SortItems, Transform);\n\nprototype.transform = function(_, pulse) {\n var mod = _.modified('sort')\n || pulse.changed(pulse.ADD)\n || pulse.modified(_.sort.fields)\n || pulse.modified('datum');\n\n if (mod) pulse.source.sort(_.sort);\n\n this.modified(mod);\n return pulse;\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits, one} from 'vega-util';\n\nvar Zero = 'zero',\n Center = 'center',\n Normalize = 'normalize',\n DefOutput = ['y0', 'y1'];\n\n/**\n * Stack layout for visualization elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to stack.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {function(object,object): number} [params.sort] - A comparator for stack sorting.\n * @param {string} [offset='zero'] - One of 'zero', 'center', 'normalize'.\n */\nexport default function Stack(params) {\n Transform.call(this, null, params);\n}\n\nStack.Definition = {\n \"type\": \"Stack\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"offset\", \"type\": \"enum\", \"default\": Zero, \"values\": [Zero, Center, Normalize] },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": DefOutput }\n ]\n};\n\nvar prototype = inherits(Stack, Transform);\n\nprototype.transform = function(_, pulse) {\n var as = _.as || DefOutput,\n y0 = as[0],\n y1 = as[1],\n field = _.field || one,\n stack = _.offset === Center ? stackCenter\n : _.offset === Normalize ? stackNormalize\n : stackZero,\n groups, i, n, max;\n\n // partition, sum, and sort the stack groups\n groups = partition(pulse.source, _.groupby, _.sort, field);\n\n // compute stack layouts per group\n for (i=0, n=groups.length, max=groups.max; i<n; ++i) {\n stack(groups[i], max, field, y0, y1);\n }\n\n return pulse.reflow(_.modified()).modifies(as);\n};\n\nfunction stackCenter(group, max, field, y0, y1) {\n var last = (max - group.sum) / 2,\n m = group.length,\n j = 0, t;\n\n for (; j<m; ++j) {\n t = group[j];\n t[y0] = last;\n t[y1] = (last += Math.abs(field(t)));\n }\n}\n\nfunction stackNormalize(group, max, field, y0, y1) {\n var scale = 1 / group.sum,\n last = 0,\n m = group.length,\n j = 0, v = 0, t;\n\n for (; j<m; ++j) {\n t = group[j];\n t[y0] = last;\n t[y1] = last = scale * (v += Math.abs(field(t)));\n }\n}\n\nfunction stackZero(group, max, field, y0, y1) {\n var lastPos = 0,\n lastNeg = 0,\n m = group.length,\n j = 0, v, t;\n\n for (; j<m; ++j) {\n t = group[j];\n v = +field(t);\n if (v < 0) {\n t[y0] = lastNeg;\n t[y1] = (lastNeg += v);\n } else {\n t[y0] = lastPos;\n t[y1] = (lastPos += v);\n }\n }\n}\n\nfunction partition(data, groupby, sort, field) {\n var groups = [],\n get = function(f) { return f(t); },\n map, i, n, m, t, k, g, s, max;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data.slice());\n } else {\n for (map={}, i=0, n=data.length; i<n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = (g = []);\n groups.push(g);\n }\n g.push(t);\n }\n }\n\n // compute sums of groups, sort groups as needed\n for (k=0, max=0, m=groups.length; k<m; ++k) {\n g = groups[k];\n for (i=0, s=0, n=g.length; i<n; ++i) {\n s += Math.abs(field(g[i]));\n }\n g.sum = s;\n if (s > max) max = s;\n if (sort) g.sort(sort);\n }\n groups.max = max;\n\n return groups;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","import {ingest, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\nimport {extent} from 'd3-array';\nimport {contours, contourDensity} from 'd3-contour';\n\nvar CONTOUR_PARAMS = ['size', 'smooth'];\nvar DENSITY_PARAMS = ['x', 'y', 'weight', 'size', 'cellSize', 'bandwidth'];\n\n/**\n * Generate contours based on kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<number>} params.size - The dimensions [width, height] over which to compute contours.\n * If the values parameter is provided, this must be the dimensions of the input data.\n * If density estimation is performed, this is the output view dimensions in pixels.\n * @param {Array<number>} [params.values] - An array of numeric values representing an\n * width x height grid of values over which to compute contours. If unspecified, this\n * transform will instead attempt to compute contours for the kernel density estimate\n * using values drawn from data tuples in the input pulse.\n * @param {function(object): number} [params.x] - The pixel x-coordinate accessor for density estimation.\n * @param {function(object): number} [params.y] - The pixel y-coordinate accessor for density estimation.\n * @param {function(object): number} [params.weight] - The data point weight accessor for density estimation.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n * @param {number} [params.bandwidth] - Kernel density estimation bandwidth.\n * @param {Array<number>} [params.thresholds] - Contour threshold array. If\n * this parameter is set, the count and nice parameters will be ignored.\n * @param {number} [params.count] - The desired number of contours.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n * threshold values should be automatically aligned to \"nice\"\n * human-friendly values. Setting this flag may cause the number of\n * thresholds to deviate from the specified count.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n * polygons should be smoothed using linear interpolation. The default is\n * true. The parameter is ignored when using density estimation.\n */\nexport default function Contour(params) {\n Transform.call(this, null, params);\n}\n\nContour.Definition = {\n \"type\": \"Contour\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2, \"required\": true },\n { \"name\": \"values\", \"type\": \"number\", \"array\": true },\n { \"name\": \"x\", \"type\": \"field\" },\n { \"name\": \"y\", \"type\": \"field\" },\n { \"name\": \"weight\", \"type\": \"field\" },\n { \"name\": \"cellSize\", \"type\": \"number\" },\n { \"name\": \"bandwidth\", \"type\": \"number\" },\n { \"name\": \"count\", \"type\": \"number\" },\n { \"name\": \"smooth\", \"type\": \"boolean\" },\n { \"name\": \"nice\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"thresholds\", \"type\": \"number\", \"array\": true }\n ]\n};\n\nvar prototype = inherits(Contour, Transform);\n\nprototype.transform = function(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified())\n return pulse.StopPropagation;\n\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n count = _.count || 10,\n contour, params, values;\n\n if (_.values) {\n contour = contours();\n params = CONTOUR_PARAMS;\n values = _.values;\n } else {\n contour = contourDensity();\n params = DENSITY_PARAMS;\n values = pulse.materialize(pulse.SOURCE).source;\n }\n\n // set threshold parameter\n contour.thresholds(_.thresholds || (_.nice ? count : quantize(count)));\n\n // set all other parameters\n params.forEach(function(param) {\n if (_[param] != null) contour[param](_[param]);\n });\n\n if (this.value) out.rem = this.value;\n values = values && values.length ? contour(values).map(ingest) : [];\n this.value = out.source = out.add = values;\n\n return out;\n};\n\nfunction quantize(k) {\n return function(values) {\n var ex = extent(values), x0 = ex[0], dx = ex[1] - x0,\n t = [], i = 1;\n for (; i<=k; ++i) t.push(x0 + dx * i / (k + 1));\n return t;\n };\n}\n","export var Feature = 'Feature';\nexport var FeatureCollection = 'FeatureCollection';\nexport var MultiPoint = 'MultiPoint';\n","import {Feature, FeatureCollection, MultiPoint} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {accessorFields, inherits} from 'vega-util';\n\n/**\n * Consolidate an array of [longitude, latitude] points or GeoJSON features\n * into a combined GeoJSON object. This transform is particularly useful for\n * combining geo data for a Projection's fit argument. The resulting GeoJSON\n * data is available as this transform's value. Input pulses are unchanged.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.fields] - A two-element array\n * of field accessors for the longitude and latitude values.\n * @param {function(object): *} params.geojson - A field accessor for\n * retrieving GeoJSON feature data.\n */\nexport default function GeoJSON(params) {\n Transform.call(this, null, params);\n}\n\nGeoJSON.Definition = {\n \"type\": \"GeoJSON\",\n \"metadata\": {},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"length\": 2 },\n { \"name\": \"geojson\", \"type\": \"field\" },\n ]\n};\n\nvar prototype = inherits(GeoJSON, Transform);\n\nprototype.transform = function(_, pulse) {\n var features = this._features,\n points = this._points,\n fields = _.fields,\n lon = fields && fields[0],\n lat = fields && fields[1],\n geojson = _.geojson,\n flag = pulse.ADD,\n mod;\n\n mod = _.modified()\n || pulse.changed(pulse.REM)\n || pulse.modified(accessorFields(geojson))\n || (lon && (pulse.modified(accessorFields(lon))))\n || (lat && (pulse.modified(accessorFields(lat))));\n\n if (!this.value || mod) {\n flag = pulse.SOURCE;\n this._features = (features = []);\n this._points = (points = []);\n }\n\n if (geojson) {\n pulse.visit(flag, function(t) {\n features.push(geojson(t));\n });\n }\n\n if (lon && lat) {\n pulse.visit(flag, function(t) {\n var x = lon(t),\n y = lat(t);\n if (x != null && y != null && (x = +x) === x && (y = +y) === y) {\n points.push([x, y]);\n }\n });\n features = features.concat({\n type: Feature,\n geometry: {\n type: MultiPoint,\n coordinates: points\n }\n });\n }\n\n this.value = {\n type: FeatureCollection,\n features: features\n };\n};\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","import clipBuffer from \"./buffer\";\nimport clipRejoin from \"./rejoin\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n // Handle degeneracies.\n // TODO ignore if not clipping polygons.\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n point1[0] += epsilon;\n point1[1] += epsilon;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1]);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"../math\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipRejoin from \"./rejoin\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","export default function(x) {\n return x;\n}\n","import noop from \"../noop\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math\";\nimport noop from \"../noop\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity\";\nimport stream from \"../stream\";\nimport pathArea from \"./area\";\nimport pathBounds from \"./bounds\";\nimport pathCentroid from \"./centroid\";\nimport PathContext from \"./context\";\nimport pathMeasure from \"./measure\";\nimport PathString from \"./string\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream\";\nimport boundsStream from \"../path/bounds\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport clipRectangle from \"../clip/rectangle\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy) {\n function transform(x, y) {\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k, (dy - y) / k];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [ai * x - bi * y + ci, fi - bi * x - ai * y];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math\";\nimport {projectionMutator} from \"./index\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y;\n return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pow, sign, sin, sqrt, tan} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {mercatorRaw} from \"./mercator\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {equirectangularRaw} from \"./equirectangular\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y;\n return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle\";\nimport identity from \"../identity\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({\n point: function(x, y) {\n this.stream.point(x * kx + tx, y * ky + ty);\n }\n });\n}\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect\n x0 = null, y0, x1, y1, // clip extent\n postclip = identity,\n cache,\n cacheStream,\n projection;\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return projection = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n },\n postclip: function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n },\n clipExtent: function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n },\n scale: function(_) {\n return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n },\n translate: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n },\n reflectX: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n },\n reflectY: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n },\n fitExtent: function(extent, object) {\n return fitExtent(projection, extent, object);\n },\n fitSize: function(size, object) {\n return fitSize(projection, size, object);\n },\n fitWidth: function(width, object) {\n return fitWidth(projection, width, object);\n },\n fitHeight: function(height, object) {\n return fitHeight(projection, height, object);\n }\n };\n}\n","import projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math\";\nimport {mercatorProjection} from \"./mercator\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","import {\n geoAlbers,\n geoAlbersUsa,\n geoAzimuthalEqualArea,\n geoAzimuthalEquidistant,\n geoConicConformal,\n geoConicEqualArea,\n geoConicEquidistant,\n geoEquirectangular,\n geoGnomonic,\n geoIdentity,\n geoMercator,\n geoNaturalEarth1,\n geoOrthographic,\n geoStereographic,\n geoTransverseMercator,\n geoPath\n} from 'd3-geo';\n\nvar defaultPath = geoPath();\n\nexport var projectionProperties = [\n // standard properties in d3-geo\n 'clipAngle',\n 'clipExtent',\n 'scale',\n 'translate',\n 'center',\n 'rotate',\n 'parallels',\n 'precision',\n 'reflectX',\n 'reflectY',\n\n // extended properties in d3-geo-projections\n 'coefficient',\n 'distance',\n 'fraction',\n 'lobes',\n 'parallel',\n 'radius',\n 'ratio',\n 'spacing',\n 'tilt'\n];\n\n/**\n * Augment projections with their type and a copy method.\n */\nfunction create(type, constructor) {\n return function projection() {\n var p = constructor();\n\n p.type = type;\n\n p.path = geoPath().projection(p);\n\n p.copy = p.copy || function() {\n var c = projection();\n projectionProperties.forEach(function(prop) {\n if (p.hasOwnProperty(prop)) c[prop](p[prop]());\n });\n c.path.pointRadius(p.path.pointRadius());\n return c;\n };\n\n return p;\n };\n}\n\nexport function projection(type, proj) {\n if (!type || typeof type !== 'string') {\n throw new Error('Projection type must be a name string.');\n }\n type = type.toLowerCase();\n if (arguments.length > 1) {\n projections[type] = create(type, proj);\n return this;\n } else {\n return projections.hasOwnProperty(type) ? projections[type] : null;\n }\n}\n\nexport function getProjectionPath(proj) {\n return (proj && proj.path) || defaultPath;\n}\n\nvar projections = {\n // base d3-geo projection types\n albers: geoAlbers,\n albersusa: geoAlbersUsa,\n azimuthalequalarea: geoAzimuthalEqualArea,\n azimuthalequidistant: geoAzimuthalEquidistant,\n conicconformal: geoConicConformal,\n conicequalarea: geoConicEqualArea,\n conicequidistant: geoConicEquidistant,\n equirectangular: geoEquirectangular,\n gnomonic: geoGnomonic,\n identity: geoIdentity,\n mercator: geoMercator,\n naturalEarth1: geoNaturalEarth1,\n orthographic: geoOrthographic,\n stereographic: geoStereographic,\n transversemercator: geoTransverseMercator\n};\n\nfor (var key in projections) {\n projection(key, projections[key]);\n}\n","import {epsilon} from \"../math\";\nimport albers from \"./albers\";\nimport conicEqualArea from \"./conicEqualArea\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {Transform} from 'vega-dataflow';\nimport {getProjectionPath} from 'vega-projection';\nimport {inherits, identity} from 'vega-util';\n\n/**\n * Map GeoJSON data to an SVG path string.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n * or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='path'] - The output field in which to store\n * the generated path data (default 'path').\n */\nexport default function GeoPath(params) {\n Transform.call(this, null, params);\n}\n\nGeoPath.Definition = {\n \"type\": \"GeoPath\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"projection\", \"type\": \"projection\" },\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"pointRadius\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"as\", \"type\": \"string\", \"default\": \"path\" }\n ]\n};\n\nvar prototype = inherits(GeoPath, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n path = this.value,\n field = _.field || identity,\n as = _.as || 'path',\n flag = out.SOURCE;\n\n function set(t) { t[as] = path(field(t)); }\n\n if (!path || _.modified()) {\n // parameters updated, reset and reflow\n this.value = path = getProjectionPath(_.projection);\n out.materialize().reflow();\n } else {\n flag = field === identity || pulse.modified(field.fields)\n ? out.ADD_MOD\n : out.ADD;\n }\n\n var prev = initPath(path, _.pointRadius);\n out.visit(flag, set);\n path.pointRadius(prev);\n\n return out.modifies(as);\n};\n\nfunction initPath(path, pointRadius) {\n var prev = path.pointRadius();\n path.context(null);\n if (pointRadius != null) {\n path.pointRadius(pointRadius);\n }\n return prev;\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Geo-code a longitude/latitude point to an x/y coordinate.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {Array<function(object): *>} params.fields - A two-element array of\n * field accessors for the longitude and latitude values.\n * @param {Array<string>} [params.as] - A two-element array of field names\n * under which to store the result. Defaults to ['x','y'].\n */\nexport default function GeoPoint(params) {\n Transform.call(this, null, params);\n}\n\nGeoPoint.Definition = {\n \"type\": \"GeoPoint\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"projection\", \"type\": \"projection\", \"required\": true },\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true, \"length\": 2 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"x\", \"y\"] }\n ]\n};\n\nvar prototype = inherits(GeoPoint, Transform);\n\nprototype.transform = function(_, pulse) {\n var proj = _.projection,\n lon = _.fields[0],\n lat = _.fields[1],\n as = _.as || ['x', 'y'],\n x = as[0],\n y = as[1],\n mod;\n\n function set(t) {\n var xy = proj([lon(t), lat(t)]);\n if (xy) {\n t[x] = xy[0];\n t[y] = xy[1];\n } else {\n t[x] = undefined;\n t[y] = undefined;\n }\n }\n\n if (_.modified()) {\n // parameters updated, reflow\n pulse = pulse.materialize().reflow(true).visit(pulse.SOURCE, set);\n } else {\n mod = pulse.modified(lon.fields) || pulse.modified(lat.fields);\n pulse.visit(mod ? pulse.ADD_MOD : pulse.ADD, set);\n }\n\n return pulse.modifies(as);\n};\n","import {Transform} from 'vega-dataflow';\nimport {getProjectionPath} from 'vega-projection';\nimport {inherits, field} from 'vega-util';\n\n/**\n * Annotate items with a geopath shape generator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n * or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='shape'] - The output field in which to store\n * the generated path data (default 'shape').\n */\nexport default function GeoShape(params) {\n Transform.call(this, null, params);\n}\n\nGeoShape.Definition = {\n \"type\": \"GeoShape\",\n \"metadata\": {\"modifies\": true, \"nomod\": true},\n \"params\": [\n { \"name\": \"projection\", \"type\": \"projection\" },\n { \"name\": \"field\", \"type\": \"field\", \"default\": \"datum\" },\n { \"name\": \"pointRadius\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"as\", \"type\": \"string\", \"default\": \"shape\" }\n ]\n};\n\nvar prototype = inherits(GeoShape, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n shape = this.value,\n as = _.as || 'shape',\n flag = out.ADD;\n\n if (!shape || _.modified()) {\n // parameters updated, reset and reflow\n this.value = shape = shapeGenerator(\n getProjectionPath(_.projection),\n _.field || field('datum'),\n _.pointRadius\n );\n out.materialize().reflow();\n flag = out.SOURCE;\n }\n\n out.visit(flag, function(t) { t[as] = shape; });\n\n return out.modifies(as);\n};\n\nfunction shapeGenerator(path, field, pointRadius) {\n var shape = pointRadius == null\n ? function(_) { return path(field(_)); }\n : function(_) {\n var prev = path.pointRadius(),\n value = path.pointRadius(pointRadius)(field(_));\n path.pointRadius(prev);\n return value;\n };\n shape.context = function(_) {\n path.context(_);\n return shape;\n };\n\n return shape;\n}\n","import {Transform, ingest, replace} from 'vega-dataflow';\nimport {inherits, isFunction} from 'vega-util';\nimport {geoGraticule} from 'd3-geo';\n\n/**\n * GeoJSON feature generator for creating graticules.\n * @constructor\n */\nexport default function Graticule(params) {\n Transform.call(this, [], params);\n this.generator = geoGraticule();\n}\n\nGraticule.Definition = {\n \"type\": \"Graticule\",\n \"metadata\": {\"changes\": true},\n \"params\": [\n { \"name\": \"extent\", \"type\": \"array\", \"array\": true, \"length\": 2,\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} },\n { \"name\": \"extentMajor\", \"type\": \"array\", \"array\": true, \"length\": 2,\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} },\n { \"name\": \"extentMinor\", \"type\": \"array\", \"array\": true, \"length\": 2,\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} },\n { \"name\": \"step\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"stepMajor\", \"type\": \"number\", \"array\": true, \"length\": 2, \"default\": [90, 360] },\n { \"name\": \"stepMinor\", \"type\": \"number\", \"array\": true, \"length\": 2, \"default\": [10, 10] },\n { \"name\": \"precision\", \"type\": \"number\", \"default\": 2.5 }\n ]\n};\n\nvar prototype = inherits(Graticule, Transform);\n\nprototype.transform = function(_, pulse) {\n var src = this.value,\n gen = this.generator, t;\n\n if (!src.length || _.modified()) {\n for (var prop in _) {\n if (isFunction(gen[prop])) {\n gen[prop](_[prop]);\n }\n }\n }\n\n t = gen();\n if (src.length) {\n pulse.mod.push(replace(src[0], t));\n } else {\n pulse.add.push(ingest(t));\n }\n src[0] = t;\n\n return pulse;\n};\n","import {Feature, FeatureCollection} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {projection, projectionProperties} from 'vega-projection';\nimport {array, error, inherits, isFunction} from 'vega-util';\n\n/**\n * Maintains a cartographic projection.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function Projection(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\nvar prototype = inherits(Projection, Transform);\n\nprototype.transform = function(_, pulse) {\n var proj = this.value;\n\n if (!proj || _.modified('type')) {\n this.value = (proj = create(_.type));\n projectionProperties.forEach(function(prop) {\n if (_[prop] != null) set(proj, prop, _[prop]);\n });\n } else {\n projectionProperties.forEach(function(prop) {\n if (_.modified(prop)) set(proj, prop, _[prop]);\n });\n }\n\n if (_.pointRadius != null) proj.path.pointRadius(_.pointRadius);\n if (_.fit) fit(proj, _);\n\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n};\n\nfunction fit(proj, _) {\n var data = collectGeoJSON(_.fit);\n _.extent ? proj.fitExtent(_.extent, data)\n : _.size ? proj.fitSize(_.size, data) : 0;\n}\n\nfunction create(type) {\n var constructor = projection((type || 'mercator').toLowerCase());\n if (!constructor) error('Unrecognized projection type: ' + type);\n return constructor();\n}\n\nfunction set(proj, key, value) {\n if (isFunction(proj[key])) proj[key](value);\n}\n\nexport function collectGeoJSON(data) {\n data = array(data);\n return data.length === 1 ? data[0]\n : {\n type: FeatureCollection,\n features: data.reduce((a, f) => a.concat(featurize(f)), [])\n };\n}\n\nfunction featurize(f) {\n return f.type === FeatureCollection\n ? f.features\n : array(f).filter(d => d != null).map(\n d => d.type === Feature ? d : {type: Feature, geometry: d}\n );\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add\";\nimport tree_cover from \"./cover\";\nimport tree_data from \"./data\";\nimport tree_extent from \"./extent\";\nimport tree_find from \"./find\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove\";\nimport tree_root from \"./root\";\nimport tree_size from \"./size\";\nimport tree_visit from \"./visit\";\nimport tree_visitAfter from \"./visitAfter\";\nimport tree_x, {defaultX} from \"./x\";\nimport tree_y, {defaultY} from \"./y\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {Transform} from 'vega-dataflow';\nimport {accessorFields, array, error, inherits, isFunction} from 'vega-util';\nimport {\n forceSimulation, forceCenter, forceCollide,\n forceManyBody, forceLink, forceX, forceY\n} from 'd3-force';\n\nvar ForceMap = {\n center: forceCenter,\n collide: forceCollide,\n nbody: forceManyBody,\n link: forceLink,\n x: forceX,\n y: forceY\n};\n\nvar Forces = 'forces',\n ForceParams = [\n 'alpha', 'alphaMin', 'alphaTarget',\n 'velocityDecay', 'forces'\n ],\n ForceConfig = ['static', 'iterations'],\n ForceOutput = ['x', 'y', 'vx', 'vy'];\n\n/**\n * Force simulation layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<object>} params.forces - The forces to apply.\n */\nexport default function Force(params) {\n Transform.call(this, null, params);\n}\n\nForce.Definition = {\n \"type\": \"Force\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"static\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"restart\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"iterations\", \"type\": \"number\", \"default\": 300 },\n { \"name\": \"alpha\", \"type\": \"number\", \"default\": 1 },\n { \"name\": \"alphaMin\", \"type\": \"number\", \"default\": 0.001 },\n { \"name\": \"alphaTarget\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"velocityDecay\", \"type\": \"number\", \"default\": 0.4 },\n { \"name\": \"forces\", \"type\": \"param\", \"array\": true,\n \"params\": [\n {\n \"key\": {\"force\": \"center\"},\n \"params\": [\n { \"name\": \"x\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"y\", \"type\": \"number\", \"default\": 0 }\n ]\n },\n {\n \"key\": {\"force\": \"collide\"},\n \"params\": [\n { \"name\": \"radius\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"strength\", \"type\": \"number\", \"default\": 0.7 },\n { \"name\": \"iterations\", \"type\": \"number\", \"default\": 1 }\n ]\n },\n {\n \"key\": {\"force\": \"nbody\"},\n \"params\": [\n { \"name\": \"strength\", \"type\": \"number\", \"default\": -30 },\n { \"name\": \"theta\", \"type\": \"number\", \"default\": 0.9 },\n { \"name\": \"distanceMin\", \"type\": \"number\", \"default\": 1 },\n { \"name\": \"distanceMax\", \"type\": \"number\" }\n ]\n },\n {\n \"key\": {\"force\": \"link\"},\n \"params\": [\n { \"name\": \"links\", \"type\": \"data\" },\n { \"name\": \"id\", \"type\": \"field\" },\n { \"name\": \"distance\", \"type\": \"number\", \"default\": 30, \"expr\": true },\n { \"name\": \"strength\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"iterations\", \"type\": \"number\", \"default\": 1 }\n ]\n },\n {\n \"key\": {\"force\": \"x\"},\n \"params\": [\n { \"name\": \"strength\", \"type\": \"number\", \"default\": 0.1 },\n { \"name\": \"x\", \"type\": \"field\" }\n ]\n },\n {\n \"key\": {\"force\": \"y\"},\n \"params\": [\n { \"name\": \"strength\", \"type\": \"number\", \"default\": 0.1 },\n { \"name\": \"y\", \"type\": \"field\" }\n ]\n }\n ] },\n {\n \"name\": \"as\", \"type\": \"string\", \"array\": true, \"modify\": false,\n \"default\": ForceOutput\n }\n ]\n};\n\nvar prototype = inherits(Force, Transform);\n\nprototype.transform = function(_, pulse) {\n var sim = this.value,\n change = pulse.changed(pulse.ADD_REM),\n params = _.modified(ForceParams),\n iters = _.iterations || 300;\n\n // configure simulation\n if (!sim) {\n this.value = sim = simulation(pulse.source, _);\n sim.on('tick', rerun(pulse.dataflow, this));\n if (!_.static) {\n change = true;\n sim.tick(); // ensure we run on init\n }\n pulse.modifies('index');\n } else {\n if (change) {\n pulse.modifies('index');\n sim.nodes(pulse.source);\n }\n if (params || pulse.changed(pulse.MOD)) {\n setup(sim, _, 0, pulse);\n }\n }\n\n // run simulation\n if (params || change || _.modified(ForceConfig)\n || (pulse.changed() && _.restart))\n {\n sim.alpha(Math.max(sim.alpha(), _.alpha || 1))\n .alphaDecay(1 - Math.pow(sim.alphaMin(), 1 / iters));\n\n if (_.static) {\n for (sim.stop(); --iters >= 0;) sim.tick();\n } else {\n if (sim.stopped()) sim.restart();\n if (!change) return pulse.StopPropagation; // defer to sim ticks\n }\n }\n\n return this.finish(_, pulse);\n};\n\nprototype.finish = function(_, pulse) {\n var dataflow = pulse.dataflow;\n\n // inspect dependencies, touch link source data\n for (var args=this._argops, j=0, m=args.length, arg; j<m; ++j) {\n arg = args[j];\n if (arg.name !== Forces || arg.op._argval.force !== 'link') {\n continue;\n }\n for (var ops=arg.op._argops, i=0, n=ops.length, op; i<n; ++i) {\n if (ops[i].name === 'links' && (op = ops[i].op.source)) {\n dataflow.pulse(op, dataflow.changeset().reflow());\n break;\n }\n }\n }\n\n // reflow all nodes\n return pulse.reflow(_.modified()).modifies(ForceOutput);\n};\n\nfunction rerun(df, op) {\n return function() { df.touch(op).run(); }\n}\n\nfunction simulation(nodes, _) {\n var sim = forceSimulation(nodes),\n stopped = false,\n stop = sim.stop,\n restart = sim.restart;\n\n sim.stopped = function() {\n return stopped;\n };\n sim.restart = function() {\n stopped = false;\n return restart();\n };\n sim.stop = function() {\n stopped = true;\n return stop();\n };\n\n return setup(sim, _, true).on('end', function() { stopped = true; });\n}\n\nfunction setup(sim, _, init, pulse) {\n var f = array(_.forces), i, n, p, name;\n\n for (i=0, n=ForceParams.length; i<n; ++i) {\n p = ForceParams[i];\n if (p !== Forces && _.modified(p)) sim[p](_[p]);\n }\n\n for (i=0, n=f.length; i<n; ++i) {\n name = Forces + i;\n p = init || _.modified(Forces, i) ? getForce(f[i])\n : pulse && modified(f[i], pulse) ? sim.force(name)\n : null;\n if (p) sim.force(name, p);\n }\n\n for (n=(sim.numForces || 0); i<n; ++i) {\n sim.force(Forces + i, null); // remove\n }\n\n sim.numForces = f.length;\n return sim;\n}\n\nfunction modified(f, pulse) {\n var k, v;\n for (k in f) {\n if (isFunction(v = f[k]) && pulse.modified(accessorFields(v)))\n return 1;\n }\n return 0;\n}\n\nfunction getForce(_) {\n var f, p;\n\n if (!ForceMap.hasOwnProperty(_.force)) {\n error('Unrecognized force: ' + _.force);\n }\n f = ForceMap[_.force]();\n\n for (p in _) {\n if (isFunction(f[p])) setForceParam(f[p], _[p], _);\n }\n\n return f;\n}\n\nfunction setForceParam(f, v, _) {\n f(isFunction(v) ? function(d) { return v(d, _); } : v);\n}\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","// Build lookup table mapping tuple keys to tree node instances\nexport default function(tree, key, filter) {\n var map = {};\n tree.each(function(node) {\n var t = node.data;\n if (filter(t)) map[key(t)] = node;\n });\n tree.lookup = map;\n return tree;\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count\";\nimport node_each from \"./each\";\nimport node_eachBefore from \"./eachBefore\";\nimport node_eachAfter from \"./eachAfter\";\nimport node_sum from \"./sum\";\nimport node_sort from \"./sort\";\nimport node_path from \"./path\";\nimport node_ancestors from \"./ancestors\";\nimport node_descendants from \"./descendants\";\nimport node_leaves from \"./leaves\";\nimport node_links from \"./links\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings\";\nimport {optional} from \"../accessors\";\nimport constant, {constantZero} from \"../constant\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import {required} from \"./accessors\";\nimport {Node, computeHeight} from \"./hierarchy/index\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\nimport {phi, squarifyRatio} from \"./squarify\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","import lookup from './lookup';\nimport {ingest, isTuple, Transform, tupleid} from 'vega-dataflow';\nimport {array, error, inherits} from 'vega-util';\nimport {hierarchy} from 'd3-hierarchy';\n\n /**\n * Nest tuples into a tree structure, grouped by key values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.keys - The key fields to nest by, in order.\n * @param {boolean} [params.generate=false] - A boolean flag indicating if\n * non-leaf nodes generated by this transform should be included in the\n * output. The default (false) includes only the input data (leaf nodes)\n * in the data stream.\n */\nexport default function Nest(params) {\n Transform.call(this, null, params);\n}\n\nNest.Definition = {\n \"type\": \"Nest\",\n \"metadata\": {\"treesource\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"keys\", \"type\": \"field\", \"array\": true },\n { \"name\": \"generate\", \"type\": \"boolean\" }\n ]\n};\n\nvar prototype = inherits(Nest, Transform);\n\nfunction children(n) {\n return n.values;\n}\n\nprototype.transform = function(_, pulse) {\n if (!pulse.source) {\n error('Nest transform requires an upstream data source.');\n }\n\n var gen = _.generate,\n mod = _.modified(),\n out = pulse.clone(),\n tree = this.value;\n\n if (!tree || mod || pulse.changed()) {\n // collect nodes to remove\n if (tree) {\n tree.each(function(node) {\n if (node.children && isTuple(node.data)) {\n out.rem.push(node.data);\n }\n });\n }\n\n // generate new tree structure\n this.value = tree = hierarchy({\n values: array(_.keys)\n .reduce(function(n, k) { n.key(k); return n; }, nest())\n .entries(out.source)\n }, children);\n\n // collect nodes to add\n if (gen) {\n tree.each(function(node) {\n if (node.children) {\n node = ingest(node.data);\n out.add.push(node);\n out.source.push(node);\n }\n });\n }\n\n // build lookup table\n lookup(tree, tupleid, tupleid);\n }\n\n out.source.root = tree;\n return out;\n};\n\nfunction nest() {\n var keys = [],\n nest;\n\n function apply(array, depth) {\n if (depth >= keys.length) {\n return array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = {},\n values,\n result = {};\n\n while (++i < n) {\n keyValue = key(value = array[i]) + '';\n if (values = valuesByKey[keyValue]) {\n values.push(value);\n } else {\n valuesByKey[keyValue] = [value];\n }\n }\n\n for (keyValue in valuesByKey) {\n result[keyValue] = apply(valuesByKey[keyValue], depth);\n }\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array = [], k;\n for (k in map) {\n array.push({key: k, values: entries(map[k], depth)});\n }\n return array;\n }\n\n return nest = {\n entries: function(array) { return entries(apply(array, 0), 0); },\n key: function(d) { keys.push(d); return nest; }\n };\n}\n","import {Transform} from 'vega-dataflow';\nimport {error, inherits, one} from 'vega-util';\n\n/**\n * Abstract class for tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function HierarchyLayout(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(HierarchyLayout, Transform);\n\nprototype.transform = function(_, pulse) {\n if (!pulse.source || !pulse.source.root) {\n error(this.constructor.name\n + ' transform requires a backing tree data source.');\n }\n\n var layout = this.layout(_.method),\n fields = this.fields,\n root = pulse.source.root,\n as = _.as || fields;\n\n if (_.field) root.sum(_.field);\n if (_.sort) root.sort(_.sort);\n\n setParams(layout, this.params, _);\n if (layout.separation) {\n layout.separation(_.separation !== false ? defaultSeparation : one);\n }\n\n try {\n this.value = layout(root);\n } catch (err) {\n error(err);\n }\n root.each(function(node) { setFields(node, fields, as); });\n\n return pulse.reflow(_.modified()).modifies(as).modifies('leaf');\n};\n\nfunction setParams(layout, params, _) {\n for (var p, i=0, n=params.length; i<n; ++i) {\n p = params[i];\n if (p in _) layout[p](_[p]);\n }\n}\n\nfunction setFields(node, fields, as) {\n var t = node.data;\n for (var i=0, n=fields.length-1; i<n; ++i) {\n t[as[i]] = node[fields[i]];\n }\n t[as[n]] = node.children ? node.children.length : 0;\n}\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n","import HierarchyLayout from './HierarchyLayout';\nimport {inherits} from 'vega-util';\nimport {pack} from 'd3-hierarchy';\n\nvar Output = ['x', 'y', 'r', 'depth', 'children'];\n\n/**\n * Packed circle tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nexport default function Pack(params) {\n HierarchyLayout.call(this, params);\n}\n\nPack.Definition = {\n \"type\": \"Pack\",\n \"metadata\": {\"tree\": true, \"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"padding\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"radius\", \"type\": \"field\", \"default\": null },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": Output.length, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Pack, HierarchyLayout);\n\nprototype.layout = pack;\n\nprototype.params = ['size', 'padding'];\n\nprototype.fields = Output;\n","import HierarchyLayout from './HierarchyLayout';\nimport {inherits} from 'vega-util';\nimport {partition} from 'd3-hierarchy';\n\nvar Output = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Partition tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nexport default function Partition(params) {\n HierarchyLayout.call(this, params);\n}\n\nPartition.Definition = {\n \"type\": \"Partition\",\n \"metadata\": {\"tree\": true, \"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"padding\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"round\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": Output.length, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Partition, HierarchyLayout);\n\nprototype.layout = partition;\n\nprototype.params = ['size', 'round', 'padding'];\n\nprototype.fields = Output;\n","import lookup from './lookup';\nimport {Transform} from 'vega-dataflow';\nimport {error, inherits, truthy} from 'vega-util';\nimport {stratify} from 'd3-hierarchy';\n\n /**\n * Stratify a collection of tuples into a tree structure based on\n * id and parent id fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.key - Unique key field for each tuple.\n * @param {function(object): *} params.parentKey - Field with key for parent tuple.\n */\nexport default function Stratify(params) {\n Transform.call(this, null, params);\n}\n\nStratify.Definition = {\n \"type\": \"Stratify\",\n \"metadata\": {\"treesource\": true},\n \"params\": [\n { \"name\": \"key\", \"type\": \"field\", \"required\": true },\n { \"name\": \"parentKey\", \"type\": \"field\", \"required\": true }\n ]\n};\n\nvar prototype = inherits(Stratify, Transform);\n\nprototype.transform = function(_, pulse) {\n if (!pulse.source) {\n error('Stratify transform requires an upstream data source.');\n }\n\n var tree = this.value,\n mod = _.modified(),\n out = pulse.fork(pulse.ALL).materialize(pulse.SOURCE),\n run = !this.value\n || mod\n || pulse.changed(pulse.ADD_REM)\n || pulse.modified(_.key.fields)\n || pulse.modified(_.parentKey.fields);\n\n // prevent upstream source pollution\n out.source = out.source.slice();\n\n if (run) {\n if (out.source.length) {\n tree = lookup(\n stratify().id(_.key).parentId(_.parentKey)(out.source)\n , _.key, truthy);\n } else {\n tree = lookup(stratify()([{}]), _.key, _.key);\n }\n }\n\n out.source.root = this.value = tree;\n return out;\n};\n","import roundNode from \"./treemap/round\";\nimport treemapDice from \"./treemap/dice\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import HierarchyLayout from './HierarchyLayout';\nimport {error, inherits} from 'vega-util';\nimport {tree, cluster} from 'd3-hierarchy';\n\nvar Layouts = {\n tidy: tree,\n cluster: cluster\n};\n\nvar Output = ['x', 'y', 'depth', 'children'];\n\n/**\n * Tree layout. Depending on the method parameter, performs either\n * Reingold-Tilford 'tidy' layout or dendrogram 'cluster' layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function Tree(params) {\n HierarchyLayout.call(this, params);\n}\n\nTree.Definition = {\n \"type\": \"Tree\",\n \"metadata\": {\"tree\": true, \"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"method\", \"type\": \"enum\", \"default\": \"tidy\", \"values\": [\"tidy\", \"cluster\"] },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"nodeSize\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"separation\", \"type\": \"boolean\", \"default\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": Output.length, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Tree, HierarchyLayout);\n\n/**\n * Tree layout generator. Supports both 'tidy' and 'cluster' layouts.\n */\nprototype.layout = function(method) {\n var m = method || 'tidy';\n if (Layouts.hasOwnProperty(m)) return Layouts[m]();\n else error('Unrecognized Tree layout method: ' + m);\n};\n\nprototype.params = ['size', 'nodeSize'];\n\nprototype.fields = Output;\n","import {ingest, tupleid, Transform} from 'vega-dataflow';\nimport {error, inherits} from 'vega-util';\n\n /**\n * Generate tuples representing links between tree nodes.\n * The resulting tuples will contain 'source' and 'target' fields,\n * which point to parent and child node tuples, respectively.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function TreeLinks(params) {\n Transform.call(this, [], params);\n}\n\nTreeLinks.Definition = {\n \"type\": \"TreeLinks\",\n \"metadata\": {\"tree\": true, \"generates\": true, \"changes\": true},\n \"params\": []\n};\n\nvar prototype = inherits(TreeLinks, Transform);\n\nprototype.transform = function(_, pulse) {\n var links = this.value,\n tree = pulse.source && pulse.source.root,\n out = pulse.fork(pulse.NO_SOURCE),\n lut = {};\n\n if (!tree) error('TreeLinks transform requires a tree data source.');\n\n if (pulse.changed(pulse.ADD_REM)) {\n // remove previous links\n out.rem = links;\n\n // build lookup table of valid tuples\n pulse.visit(pulse.SOURCE, function(t) { lut[tupleid(t)] = 1; });\n\n // generate links for all edges incident on valid tuples\n tree.each(function(node) {\n var t = node.data,\n p = node.parent && node.parent.data;\n if (p && lut[tupleid(t)] && lut[tupleid(p)]) {\n out.add.push(ingest({source: p, target: t}));\n }\n });\n this.value = out.add;\n }\n\n else if (pulse.changed(pulse.MOD)) {\n // build lookup table of modified tuples\n pulse.visit(pulse.MOD, function(t) { lut[tupleid(t)] = 1; });\n\n // gather links incident on modified tuples\n links.forEach(function(link) {\n if (lut[tupleid(link.source)] || lut[tupleid(link.target)]) {\n out.mod.push(link);\n }\n });\n }\n\n return out;\n};\n","import HierarchyLayout from './HierarchyLayout';\nimport {error, inherits} from 'vega-util';\nimport {\n treemap,\n treemapBinary,\n treemapDice,\n treemapSlice,\n treemapSliceDice,\n treemapSquarify,\n treemapResquarify\n} from 'd3-hierarchy';\n\nvar Tiles = {\n binary: treemapBinary,\n dice: treemapDice,\n slice: treemapSlice,\n slicedice: treemapSliceDice,\n squarify: treemapSquarify,\n resquarify: treemapResquarify\n};\n\nvar Output = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Treemap layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nexport default function Treemap(params) {\n HierarchyLayout.call(this, params);\n}\n\nTreemap.Definition = {\n \"type\": \"Treemap\",\n \"metadata\": {\"tree\": true, \"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"method\", \"type\": \"enum\", \"default\": \"squarify\",\n \"values\": [\"squarify\", \"resquarify\", \"binary\", \"dice\", \"slice\", \"slicedice\"] },\n { \"name\": \"padding\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingInner\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingOuter\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingTop\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingRight\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingBottom\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingLeft\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"ratio\", \"type\": \"number\", \"default\": 1.618033988749895 },\n { \"name\": \"round\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": Output.length, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Treemap, HierarchyLayout);\n\n/**\n * Treemap layout generator. Adds 'method' and 'ratio' parameters\n * to configure the underlying tile method.\n */\nprototype.layout = function() {\n var x = treemap();\n x.ratio = function(_) {\n var t = x.tile();\n if (t.ratio) x.tile(t.ratio(_));\n };\n x.method = function(_) {\n if (Tiles.hasOwnProperty(_)) x.tile(Tiles[_]);\n else error('Unrecognized Treemap layout method: ' + _);\n };\n return x;\n};\n\nprototype.params = [\n 'method', 'ratio', 'size', 'round',\n 'padding', 'paddingInner', 'paddingOuter',\n 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'\n];\n\nprototype.fields = Output;\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice\";\nimport slice from \"./slice\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import roundNode from \"./round\";\nimport squarify from \"./squarify\";\nimport {required} from \"../accessors\";\nimport constant, {constantZero} from \"../constant\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(data, groupby) {\n var groups = [],\n get = function(f) { return f(t); },\n map, i, n, t, k, g;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data);\n } else {\n for (map={}, i=0, n=data.length; i<n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = (g = []);\n g.dims = k;\n groups.push(g);\n }\n g.push(t);\n }\n }\n\n return groups;\n}\n","import partition from './partition';\nimport {regressionLoess} from 'vega-statistics';\nimport {ingest, Transform} from 'vega-dataflow';\nimport {accessorName, inherits} from 'vega-util';\n\n/**\n * Compute locally-weighted regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.bandwidth=0.3] - The loess bandwidth.\n */\nexport default function Loess(params) {\n Transform.call(this, null, params);\n}\n\nLoess.Definition = {\n \"type\": \"Loess\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"x\", \"type\": \"field\", \"required\": true },\n { \"name\": \"y\", \"type\": \"field\", \"required\": true },\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"bandwidth\", \"type\": \"number\", \"default\": 0.3 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true }\n ]\n};\n\nvar prototype = inherits(Loess, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n if (!this.value || pulse.changed() || _.modified()) {\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n m = names.length,\n as = _.as || [accessorName(_.x), accessorName(_.y)],\n values = [];\n\n groups.forEach(g => {\n regressionLoess(g, _.x, _.y, _.bandwidth || 0.3).forEach(p => {\n const t = {};\n for (let i=0; i<m; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = p[0];\n t[as[1]] = p[1];\n values.push(ingest(t));\n });\n });\n\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n\n return out;\n};\n","import partition from './partition';\nimport {ingest, Transform} from 'vega-dataflow';\nimport {\n regressionLinear, regressionLog, regressionExp,\n regressionPow, regressionQuad, regressionPoly, sampleCurve\n} from 'vega-statistics';\nimport {accessorName, error, extent, inherits} from 'vega-util';\n\nconst Methods = {\n linear: regressionLinear,\n log: regressionLog,\n exp: regressionExp,\n pow: regressionPow,\n quad: regressionQuad,\n poly: regressionPoly\n};\n\nfunction degreesOfFreedom(method, order) {\n return method === 'poly' ? order : method === 'quad' ? 2 : 1;\n}\n\n/**\n * Compute regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {string} [params.method='linear'] - The regression method to apply.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {Array<number>} [params.extent] - The domain extent over which to plot the regression line.\n * @param {number} [params.order=3] - The polynomial order. Only applies to the 'poly' method.\n */\nexport default function Regression(params) {\n Transform.call(this, null, params);\n}\n\nRegression.Definition = {\n \"type\": \"Regression\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"x\", \"type\": \"field\", \"required\": true },\n { \"name\": \"y\", \"type\": \"field\", \"required\": true },\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"method\", \"type\": \"string\", \"default\": \"linear\", \"values\": Object.keys(Methods) },\n { \"name\": \"order\", \"type\": \"number\", \"default\": 3 },\n { \"name\": \"extent\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"params\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true }\n ]\n};\n\nvar prototype = inherits(Regression, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n if (!this.value || pulse.changed() || _.modified()) {\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n method = _.method || 'linear',\n order = _.order || 3,\n dof = degreesOfFreedom(method, order),\n as = _.as || [accessorName(_.x), accessorName(_.y)],\n fit = Methods[method],\n values = [];\n\n let domain = _.extent;\n\n if (!Methods.hasOwnProperty(method)) {\n error('Invalid regression method: ' + method);\n }\n\n if (domain != null) {\n if (method === 'log' && domain[0] <= 0) {\n pulse.dataflow.warn('Ignoring extent with values <= 0 for log regression.');\n domain = null;\n }\n }\n\n groups.forEach(g => {\n const n = g.length;\n if (n <= dof) {\n pulse.dataflow.warn('Skipping regression with more parameters than data points.');\n return;\n }\n\n const model = fit(g, _.x, _.y, order);\n\n if (_.params) {\n // if parameter vectors requested return those\n values.push(ingest({\n keys: g.dims,\n coef: model.coef,\n rSquared: model.rSquared\n }));\n return;\n }\n\n const dom = domain || extent(g, _.x),\n add = p => {\n const t = {};\n for (let i=0; i<names.length; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = p[0];\n t[as[1]] = p[1];\n values.push(ingest(t));\n };\n\n if (method === 'linear') {\n // for linear regression we only need the end points\n dom.forEach(x => add([x, model.predict(x)]));\n } else {\n // otherwise return trend line sample points\n sampleCurve(model.predict, dom, 25, 200).forEach(add);\n }\n });\n\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n\n return out;\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\nimport {voronoi} from 'd3-voronoi';\n\nexport default function Voronoi(params) {\n Transform.call(this, null, params);\n}\n\nVoronoi.Definition = {\n \"type\": \"Voronoi\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"x\", \"type\": \"field\", \"required\": true },\n { \"name\": \"y\", \"type\": \"field\", \"required\": true },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"extent\", \"type\": \"array\", \"array\": true, \"length\": 2,\n \"default\": [[-1e5, -1e5], [1e5, 1e5]],\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} },\n { \"name\": \"as\", \"type\": \"string\", \"default\": \"path\" }\n ]\n};\n\nvar prototype = inherits(Voronoi, Transform);\n\nvar defaultExtent = [[-1e5, -1e5], [1e5, 1e5]];\n\nprototype.transform = function(_, pulse) {\n var as = _.as || 'path',\n data = pulse.source,\n diagram, polygons, i, n;\n\n // configure and construct voronoi diagram\n diagram = voronoi().x(_.x).y(_.y);\n if (_.size) diagram.size(_.size);\n else diagram.extent(_.extent || defaultExtent);\n\n this.value = (diagram = diagram(data));\n\n // map polygons to paths\n polygons = diagram.polygons();\n for (i=0, n=data.length; i<n; ++i) {\n data[i][as] = polygons[i]\n ? 'M' + polygons[i].join('L') + 'Z'\n : null;\n }\n\n return pulse.reflow(_.modified()).modifies(as);\n};\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","import {canvas} from 'vega-canvas';\n\n/*\nCopyright (c) 2013, Jason Davies.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n * The name Jason Davies may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL JASON DAVIES BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\nOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nvar cloudRadians = Math.PI / 180,\n cw = 1 << 11 >> 5,\n ch = 1 << 11;\n\nexport default function() {\n var size = [256, 256],\n text,\n font,\n fontSize,\n fontStyle,\n fontWeight,\n rotate,\n padding,\n spiral = archimedeanSpiral,\n words = [],\n random = Math.random,\n cloud = {};\n\n cloud.layout = function() {\n var contextAndRatio = getContext(canvas()),\n board = zeroArray((size[0] >> 5) * size[1]),\n bounds = null,\n n = words.length,\n i = -1,\n tags = [],\n data = words.map(function(d) {\n return {\n text: text(d),\n font: font(d),\n style: fontStyle(d),\n weight: fontWeight(d),\n rotate: rotate(d),\n size: ~~fontSize(d),\n padding: padding(d),\n xoff: 0,\n yoff: 0,\n x1: 0,\n y1: 0,\n x0: 0,\n y0: 0,\n hasText: false,\n sprite: null,\n datum: d\n };\n }).sort(function(a, b) { return b.size - a.size; });\n\n while (++i < n) {\n var d = data[i];\n d.x = (size[0] * (random() + .5)) >> 1;\n d.y = (size[1] * (random() + .5)) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n if (bounds) cloudBounds(bounds, d);\n else bounds = [{x: d.x + d.x0, y: d.y + d.y0}, {x: d.x + d.x1, y: d.y + d.y1}];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n\n return tags;\n };\n\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n var ratio = Math.sqrt(canvas.getContext(\"2d\").getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n\n var context = canvas.getContext(\"2d\");\n context.fillStyle = context.strokeStyle = \"red\";\n context.textAlign = \"center\";\n\n return {context: context, ratio: ratio};\n }\n\n function place(board, tag, bounds) {\n var startX = tag.x,\n startY = tag.y,\n maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n s = spiral(size),\n dt = random() < .5 ? 1 : -1,\n t = -dt,\n dxdy,\n dx,\n dy;\n\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n\n tag.x = startX + dx;\n tag.y = startY + dy;\n\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 ||\n tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n var sprite = tag.sprite,\n w = tag.width >> 5,\n sw = size[0] >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n tag.sprite = null;\n return true;\n }\n }\n }\n return false;\n }\n\n cloud.words = function(_) {\n if (arguments.length) {\n words = _;\n return cloud;\n } else {\n return words;\n }\n };\n\n cloud.size = function(_) {\n if (arguments.length) {\n size = [+_[0], +_[1]];\n return cloud;\n } else {\n return size;\n }\n };\n\n cloud.font = function(_) {\n if (arguments.length) {\n font = functor(_);\n return cloud;\n } else {\n return font;\n }\n };\n\n cloud.fontStyle = function(_) {\n if (arguments.length) {\n fontStyle = functor(_);\n return cloud;\n } else {\n return fontStyle;\n }\n };\n\n cloud.fontWeight = function(_) {\n if (arguments.length) {\n fontWeight = functor(_);\n return cloud;\n } else {\n return fontWeight;\n }\n };\n\n cloud.rotate = function(_) {\n if (arguments.length) {\n rotate = functor(_);\n return cloud;\n } else {\n return rotate;\n }\n };\n\n cloud.text = function(_) {\n if (arguments.length) {\n text = functor(_);\n return cloud;\n } else {\n return text;\n }\n };\n\n cloud.spiral = function(_) {\n if (arguments.length) {\n spiral = spirals[_] || _;\n return cloud;\n } else {\n return spiral;\n }\n };\n\n cloud.fontSize = function(_) {\n if (arguments.length) {\n fontSize = functor(_);\n return cloud;\n } else {\n return fontSize;\n }\n };\n\n cloud.padding = function(_) {\n if (arguments.length) {\n padding = functor(_);\n return cloud;\n } else {\n return padding;\n }\n };\n\n cloud.random = function(_) {\n if (arguments.length) {\n random = _;\n return cloud;\n } else {\n return random;\n }\n };\n\n return cloud;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n var c = contextAndRatio.context,\n ratio = contextAndRatio.ratio;\n\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n var x = 0,\n y = 0,\n maxh = 0,\n n = data.length,\n w, w32, h, i, j;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + \" \" + d.weight + \" \" + ~~((d.size + 1) / ratio) + \"px \" + d.font;\n w = c.measureText(d.text + \"m\").width * ratio;\n h = d.size << 1;\n if (d.rotate) {\n var sr = Math.sin(d.rotate * cloudRadians),\n cr = Math.cos(d.rotate * cloudRadians),\n wcr = w * cr,\n wsr = w * sr,\n hcr = h * cr,\n hsr = h * sr;\n w = (Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = (w + 0x1f) >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= (cw << 5)) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) {\n c.lineWidth = 2 * d.padding;\n c.strokeText(d.text, 0, 0);\n }\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n w = d.width;\n w32 = w >> 5;\n h = d.y1 - d.y0;\n // Zero the buffer\n for (i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n var seen = 0,\n seenRow = -1;\n for (j = 0; j < h; j++) {\n for (i = 0; i < w; i++) {\n var k = w32 * j + (i >> 5),\n m = pixels[((y + j) * (cw << 5) + (x + i)) << 2] ? 1 << (31 - (i % 32)) : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;\n else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n var sprite = tag.sprite,\n w = tag.width >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0))\n & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\n\nfunction cloudBounds(bounds, d) {\n var b0 = bounds[0],\n b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\n\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\n\nfunction archimedeanSpiral(size) {\n var e = size[0] / size[1];\n return function(t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\n\nfunction rectangularSpiral(size) {\n var dy = 4,\n dx = dy * size[0] / size[1],\n x = 0,\n y = 0;\n return function(t) {\n var sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) {\n case 0: x += dx; break;\n case 1: y += dy; break;\n case 2: x -= dx; break;\n default: y -= dy; break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n var a = [],\n i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\n\nfunction functor(d) {\n return typeof d === \"function\" ? d : function() { return d; };\n}\n\nvar spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\n","import cloud from './CloudLayout';\nimport {Transform} from 'vega-dataflow';\nimport {constant, error, inherits, isFunction} from 'vega-util';\nimport {scale} from 'vega-scale';\nimport {random} from 'vega-statistics';\n\nvar Output = ['x', 'y', 'font', 'fontSize', 'fontStyle', 'fontWeight', 'angle'];\n\nvar Params = ['text', 'font', 'rotate', 'fontSize', 'fontStyle', 'fontWeight'];\n\nexport default function Wordcloud(params) {\n Transform.call(this, cloud(), params);\n}\n\nWordcloud.Definition = {\n \"type\": \"Wordcloud\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"font\", \"type\": \"string\", \"expr\": true, \"default\": \"sans-serif\" },\n { \"name\": \"fontStyle\", \"type\": \"string\", \"expr\": true, \"default\": \"normal\" },\n { \"name\": \"fontWeight\", \"type\": \"string\", \"expr\": true, \"default\": \"normal\" },\n { \"name\": \"fontSize\", \"type\": \"number\", \"expr\": true, \"default\": 14 },\n { \"name\": \"fontSizeRange\", \"type\": \"number\", \"array\": \"nullable\", \"default\": [10, 50] },\n { \"name\": \"rotate\", \"type\": \"number\", \"expr\": true, \"default\": 0 },\n { \"name\": \"text\", \"type\": \"field\" },\n { \"name\": \"spiral\", \"type\": \"string\", \"values\": [\"archimedean\", \"rectangular\"] },\n { \"name\": \"padding\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 7, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Wordcloud, Transform);\n\nprototype.transform = function(_, pulse) {\n if (_.size && !(_.size[0] && _.size[1])) {\n error('Wordcloud size dimensions must be non-zero.');\n }\n\n function modp(param) {\n var p = _[param];\n return isFunction(p) && pulse.modified(p.fields);\n }\n\n var mod = _.modified();\n if (!(mod || pulse.changed(pulse.ADD_REM) || Params.some(modp))) return;\n\n var data = pulse.materialize(pulse.SOURCE).source,\n layout = this.value,\n as = _.as || Output,\n fontSize = _.fontSize || 14,\n range;\n\n isFunction(fontSize)\n ? (range = _.fontSizeRange)\n : (fontSize = constant(fontSize));\n\n // create font size scaling function as needed\n if (range) {\n var fsize = fontSize,\n sizeScale = scale('sqrt')()\n .domain(extent(fsize, data))\n .range(range);\n fontSize = function(x) { return sizeScale(fsize(x)); };\n }\n\n data.forEach(function(t) {\n t[as[0]] = NaN;\n t[as[1]] = NaN;\n t[as[3]] = 0;\n });\n\n // configure layout\n var words = layout\n .words(data)\n .text(_.text)\n .size(_.size || [500, 500])\n .padding(_.padding || 1)\n .spiral(_.spiral || 'archimedean')\n .rotate(_.rotate || 0)\n .font(_.font || 'sans-serif')\n .fontStyle(_.fontStyle || 'normal')\n .fontWeight(_.fontWeight || 'normal')\n .fontSize(fontSize)\n .random(random)\n .layout();\n\n var size = layout.size(),\n dx = size[0] >> 1,\n dy = size[1] >> 1,\n i = 0,\n n = words.length,\n w, t;\n\n for (; i<n; ++i) {\n w = words[i];\n t = w.datum;\n t[as[0]] = w.x + dx;\n t[as[1]] = w.y + dy;\n t[as[2]] = w.font;\n t[as[3]] = w.size;\n t[as[4]] = w.style;\n t[as[5]] = w.weight;\n t[as[6]] = w.rotate;\n }\n\n return pulse.reflow(mod).modifies(as);\n};\n\nfunction extent(field, data) {\n var min = +Infinity,\n max = -Infinity,\n i = 0,\n n = data.length,\n v;\n\n for (; i<n; ++i) {\n v = field(data[i]);\n if (v < min) min = v;\n if (v > max) max = v;\n }\n\n return [min, max];\n}\n","export function array8(n) { return new Uint8Array(n); }\n\nexport function array16(n) { return new Uint16Array(n); }\n\nexport function array32(n) { return new Uint32Array(n); }\n","import {array8, array16, array32} from './arrays';\n\n/**\n * Maintains CrossFilter state.\n */\nexport default function Bitmaps() {\n\n var width = 8,\n data = [],\n seen = array32(0),\n curr = array(0, width),\n prev = array(0, width);\n\n return {\n\n data: function() { return data; },\n\n seen: function() {\n return (seen = lengthen(seen, data.length));\n },\n\n add: function(array) {\n for (var i=0, j=data.length, n=array.length, t; i<n; ++i) {\n t = array[i];\n t._index = j++;\n data.push(t);\n }\n },\n\n remove: function(num, map) { // map: index -> boolean (true => remove)\n var n = data.length,\n copy = Array(n - num),\n reindex = data, // reuse old data array for index map\n t, i, j;\n\n // seek forward to first removal\n for (i=0; !map[i] && i<n; ++i) {\n copy[i] = data[i];\n reindex[i] = i;\n }\n\n // condense arrays\n for (j=i; i<n; ++i) {\n t = data[i];\n if (!map[i]) {\n reindex[i] = j;\n curr[j] = curr[i];\n prev[j] = prev[i];\n copy[j] = t;\n t._index = j++;\n } else {\n reindex[i] = -1;\n }\n curr[i] = 0; // clear unused bits\n }\n\n data = copy;\n return reindex;\n },\n\n size: function() { return data.length; },\n\n curr: function() { return curr; },\n\n prev: function() { return prev; },\n\n reset: function(k) { prev[k] = curr[k]; },\n\n all: function() {\n return width < 0x101 ? 0xff : width < 0x10001 ? 0xffff : 0xffffffff;\n },\n\n set: function(k, one) { curr[k] |= one; },\n\n clear: function(k, one) { curr[k] &= ~one; },\n\n resize: function(n, m) {\n var k = curr.length;\n if (n > k || m > width) {\n width = Math.max(m, width);\n curr = array(n, width, curr);\n prev = array(n, width);\n }\n }\n };\n}\n\nfunction lengthen(array, length, copy) {\n if (array.length >= length) return array;\n copy = copy || new array.constructor(length);\n copy.set(array);\n return copy;\n}\n\nfunction array(n, m, array) {\n var copy = (m < 0x101 ? array8 : m < 0x10001 ? array16 : array32)(n);\n if (array) copy.set(array);\n return copy;\n}\n","export default function(index, i, query) {\n var bit = (1 << i);\n\n return {\n one: bit,\n zero: ~bit,\n range: query.slice(),\n bisect: index.bisect,\n index: index.index,\n size: index.size,\n\n onAdd: function(added, curr) {\n var dim = this,\n range = dim.bisect(dim.range, added.value),\n idx = added.index,\n lo = range[0],\n hi = range[1],\n n1 = idx.length, i;\n\n for (i=0; i<lo; ++i) curr[idx[i]] |= bit;\n for (i=hi; i<n1; ++i) curr[idx[i]] |= bit;\n return dim;\n }\n };\n}\n","import {array32} from './arrays';\nimport {bisectLeft, bisectRight, permute} from 'd3-array';\n\n/**\n * Maintains a list of values, sorted by key.\n */\nexport default function SortedIndex() {\n var index = array32(0),\n value = [],\n size = 0;\n\n function insert(key, data, base) {\n if (!data.length) return [];\n\n var n0 = size,\n n1 = data.length,\n addv = Array(n1),\n addi = array32(n1),\n oldv, oldi, i;\n\n for (i=0; i<n1; ++i) {\n addv[i] = key(data[i]);\n addi[i] = i;\n }\n addv = sort(addv, addi);\n\n if (n0) {\n oldv = value;\n oldi = index;\n value = Array(n0 + n1);\n index = array32(n0 + n1);\n merge(base, oldv, oldi, n0, addv, addi, n1, value, index);\n } else {\n if (base > 0) for (i=0; i<n1; ++i) {\n addi[i] += base;\n }\n value = addv;\n index = addi;\n }\n size = n0 + n1;\n\n return {index: addi, value: addv};\n }\n\n function remove(num, map) {\n // map: index -> remove\n var n = size,\n idx, i, j;\n\n // seek forward to first removal\n for (i=0; !map[index[i]] && i<n; ++i);\n\n // condense index and value arrays\n for (j=i; i<n; ++i) {\n if (!map[idx=index[i]]) {\n index[j] = idx;\n value[j] = value[i];\n ++j;\n }\n }\n\n size = n - num;\n }\n\n function reindex(map) {\n for (var i=0, n=size; i<n; ++i) {\n index[i] = map[index[i]];\n }\n }\n\n function bisect(range, array) {\n var n;\n if (array) {\n n = array.length;\n } else {\n array = value;\n n = size;\n }\n return [\n bisectLeft(array, range[0], 0, n),\n bisectRight(array, range[1], 0, n)\n ];\n }\n\n return {\n insert: insert,\n remove: remove,\n bisect: bisect,\n reindex: reindex,\n index: function() { return index; },\n size: function() { return size; }\n };\n}\n\nfunction sort(values, index) {\n values.sort.call(index, function(a, b) {\n var x = values[a],\n y = values[b];\n return x < y ? -1 : x > y ? 1 : 0;\n });\n return permute(values, index);\n}\n\nfunction merge(base, value0, index0, n0, value1, index1, n1, value, index) {\n var i0 = 0, i1 = 0, i;\n\n for (i=0; i0 < n0 && i1 < n1; ++i) {\n if (value0[i0] < value1[i1]) {\n value[i] = value0[i0];\n index[i] = index0[i0++];\n } else {\n value[i] = value1[i1];\n index[i] = index1[i1++] + base;\n }\n }\n\n for (; i0 < n0; ++i0, ++i) {\n value[i] = value0[i0];\n index[i] = index0[i0];\n }\n\n for (; i1 < n1; ++i1, ++i) {\n value[i] = value1[i1];\n index[i] = index1[i1] + base;\n }\n}\n","import Bitmaps from './Bitmaps';\nimport Dimension from './Dimension';\nimport SortedIndex from './SortedIndex';\nimport {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * An indexed multi-dimensional filter.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.fields - An array of dimension accessors to filter.\n * @param {Array} params.query - An array of per-dimension range queries.\n */\nexport default function CrossFilter(params) {\n Transform.call(this, Bitmaps(), params);\n this._indices = null;\n this._dims = null;\n}\n\nCrossFilter.Definition = {\n \"type\": \"CrossFilter\",\n \"metadata\": {},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true },\n { \"name\": \"query\", \"type\": \"array\", \"array\": true, \"required\": true,\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} }\n ]\n};\n\nvar prototype = inherits(CrossFilter, Transform);\n\nprototype.transform = function(_, pulse) {\n if (!this._dims) {\n return this.init(_, pulse);\n } else {\n var init = _.modified('fields')\n || _.fields.some(function(f) { return pulse.modified(f.fields); });\n\n return init\n ? this.reinit(_, pulse)\n : this.eval(_, pulse);\n }\n};\n\nprototype.init = function(_, pulse) {\n var fields = _.fields,\n query = _.query,\n indices = this._indices = {},\n dims = this._dims = [],\n m = query.length,\n i = 0, key, index;\n\n // instantiate indices and dimensions\n for (; i<m; ++i) {\n key = fields[i].fname;\n index = indices[key] || (indices[key] = SortedIndex());\n dims.push(Dimension(index, i, query[i]));\n }\n\n return this.eval(_, pulse);\n};\n\nprototype.reinit = function(_, pulse) {\n var output = pulse.materialize().fork(),\n fields = _.fields,\n query = _.query,\n indices = this._indices,\n dims = this._dims,\n bits = this.value,\n curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all(),\n out = (output.rem = output.add),\n mod = output.mod,\n m = query.length,\n adds = {}, add, index, key,\n mods, remMap, modMap, i, n, f;\n\n // set prev to current state\n prev.set(curr);\n\n // if pulse has remove tuples, process them first\n if (pulse.rem.length) {\n remMap = this.remove(_, pulse, output);\n }\n\n // if pulse has added tuples, add them to state\n if (pulse.add.length) {\n bits.add(pulse.add);\n }\n\n // if pulse has modified tuples, create an index map\n if (pulse.mod.length) {\n modMap = {};\n for (mods=pulse.mod, i=0, n=mods.length; i<n; ++i) {\n modMap[mods[i]._index] = 1;\n }\n }\n\n // re-initialize indices as needed, update curr bitmap\n for (i=0; i<m; ++i) {\n f = fields[i];\n if (!dims[i] || _.modified('fields', i) || pulse.modified(f.fields)) {\n key = f.fname;\n if (!(add = adds[key])) {\n indices[key] = index = SortedIndex();\n adds[key] = add = index.insert(f, pulse.source, 0);\n }\n dims[i] = Dimension(index, i, query[i]).onAdd(add, curr);\n }\n }\n\n // visit each tuple\n // if filter state changed, push index to add/rem\n // else if in mod and passes a filter, push index to mod\n for (i=0, n=bits.data().length; i<n; ++i) {\n if (remMap[i]) { // skip if removed tuple\n continue;\n } else if (prev[i] !== curr[i]) { // add if state changed\n out.push(i);\n } else if (modMap[i] && curr[i] !== all) { // otherwise, pass mods through\n mod.push(i);\n }\n }\n\n bits.mask = (1 << m) - 1;\n return output;\n};\n\nprototype.eval = function(_, pulse) {\n var output = pulse.materialize().fork(),\n m = this._dims.length,\n mask = 0;\n\n if (pulse.rem.length) {\n this.remove(_, pulse, output);\n mask |= (1 << m) - 1;\n }\n\n if (_.modified('query') && !_.modified('fields')) {\n mask |= this.update(_, pulse, output);\n }\n\n if (pulse.add.length) {\n this.insert(_, pulse, output);\n mask |= (1 << m) - 1;\n }\n\n if (pulse.mod.length) {\n this.modify(pulse, output);\n mask |= (1 << m) - 1;\n }\n\n this.value.mask = mask;\n return output;\n};\n\nprototype.insert = function(_, pulse, output) {\n var tuples = pulse.add,\n bits = this.value,\n dims = this._dims,\n indices = this._indices,\n fields = _.fields,\n adds = {},\n out = output.add,\n k = bits.size(),\n n = k + tuples.length,\n m = dims.length, j, key, add;\n\n // resize bitmaps and add tuples as needed\n bits.resize(n, m);\n bits.add(tuples);\n\n var curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all();\n\n // add to dimensional indices\n for (j=0; j<m; ++j) {\n key = fields[j].fname;\n add = adds[key] || (adds[key] = indices[key].insert(fields[j], tuples, k));\n dims[j].onAdd(add, curr);\n }\n\n // set previous filters, output if passes at least one filter\n for (; k<n; ++k) {\n prev[k] = all;\n if (curr[k] !== all) out.push(k);\n }\n};\n\nprototype.modify = function(pulse, output) {\n var out = output.mod,\n bits = this.value,\n curr = bits.curr(),\n all = bits.all(),\n tuples = pulse.mod,\n i, n, k;\n\n for (i=0, n=tuples.length; i<n; ++i) {\n k = tuples[i]._index;\n if (curr[k] !== all) out.push(k);\n }\n};\n\nprototype.remove = function(_, pulse, output) {\n var indices = this._indices,\n bits = this.value,\n curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all(),\n map = {},\n out = output.rem,\n tuples = pulse.rem,\n i, n, k, f;\n\n // process tuples, output if passes at least one filter\n for (i=0, n=tuples.length; i<n; ++i) {\n k = tuples[i]._index;\n map[k] = 1; // build index map\n prev[k] = (f = curr[k]);\n curr[k] = all;\n if (f !== all) out.push(k);\n }\n\n // remove from dimensional indices\n for (k in indices) {\n indices[k].remove(n, map);\n }\n\n this.reindex(pulse, n, map);\n return map;\n};\n\n// reindex filters and indices after propagation completes\nprototype.reindex = function(pulse, num, map) {\n var indices = this._indices,\n bits = this.value;\n\n pulse.runAfter(function() {\n var indexMap = bits.remove(num, map);\n for (var key in indices) indices[key].reindex(indexMap);\n });\n};\n\nprototype.update = function(_, pulse, output) {\n var dims = this._dims,\n query = _.query,\n stamp = pulse.stamp,\n m = dims.length,\n mask = 0, i, q;\n\n // survey how many queries have changed\n output.filters = 0;\n for (q=0; q<m; ++q) {\n if (_.modified('query', q)) { i = q; ++mask; }\n }\n\n if (mask === 1) {\n // only one query changed, use more efficient update\n mask = dims[i].one;\n this.incrementOne(dims[i], query[i], output.add, output.rem);\n } else {\n // multiple queries changed, perform full record keeping\n for (q=0, mask=0; q<m; ++q) {\n if (!_.modified('query', q)) continue;\n mask |= dims[q].one;\n this.incrementAll(dims[q], query[q], stamp, output.add);\n output.rem = output.add; // duplicate add/rem for downstream resolve\n }\n }\n\n return mask;\n};\n\nprototype.incrementAll = function(dim, query, stamp, out) {\n var bits = this.value,\n seen = bits.seen(),\n curr = bits.curr(),\n prev = bits.prev(),\n index = dim.index(),\n old = dim.bisect(dim.range),\n range = dim.bisect(query),\n lo1 = range[0],\n hi1 = range[1],\n lo0 = old[0],\n hi0 = old[1],\n one = dim.one,\n i, j, k;\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n }\n\n dim.range = query.slice();\n};\n\nprototype.incrementOne = function(dim, query, add, rem) {\n var bits = this.value,\n curr = bits.curr(),\n index = dim.index(),\n old = dim.bisect(dim.range),\n range = dim.bisect(query),\n lo1 = range[0],\n hi1 = range[1],\n lo0 = old[0],\n hi0 = old[1],\n one = dim.one,\n i, j, k;\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n add.push(k);\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n rem.push(k);\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n add.push(k);\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n rem.push(k);\n }\n }\n\n dim.range = query.slice();\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Selectively filters tuples by resolving against a filter bitmap.\n * Useful for processing the output of a cross-filter transform.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.ignore - A bit mask indicating which filters to ignore.\n * @param {object} params.filter - The per-tuple filter bitmaps. Typically this\n * parameter value is a reference to a {@link CrossFilter} transform.\n */\nexport default function ResolveFilter(params) {\n Transform.call(this, null, params);\n}\n\nResolveFilter.Definition = {\n \"type\": \"ResolveFilter\",\n \"metadata\": {},\n \"params\": [\n { \"name\": \"ignore\", \"type\": \"number\", \"required\": true,\n \"description\": \"A bit mask indicating which filters to ignore.\" },\n { \"name\": \"filter\", \"type\": \"object\", \"required\": true,\n \"description\": \"Per-tuple filter bitmaps from a CrossFilter transform.\" }\n ]\n};\n\nvar prototype = inherits(ResolveFilter, Transform);\n\nprototype.transform = function(_, pulse) {\n var ignore = ~(_.ignore || 0), // bit mask where zeros -> dims to ignore\n bitmap = _.filter,\n mask = bitmap.mask;\n\n // exit early if no relevant filter changes\n if ((mask & ignore) === 0) return pulse.StopPropagation;\n\n var output = pulse.fork(pulse.ALL),\n data = bitmap.data(),\n curr = bitmap.curr(),\n prev = bitmap.prev(),\n pass = function(k) {\n return !(curr[k] & ignore) ? data[k] : null;\n };\n\n // propagate all mod tuples that pass the filter\n output.filter(output.MOD, pass);\n\n // determine add & rem tuples via filter functions\n // for efficiency, we do *not* populate new arrays,\n // instead we add filter functions applied downstream\n\n if (!(mask & (mask-1))) { // only one filter changed\n output.filter(output.ADD, pass);\n output.filter(output.REM, function(k) {\n return (curr[k] & ignore) === mask ? data[k] : null;\n });\n\n } else { // multiple filters changed\n output.filter(output.ADD, function(k) {\n var c = curr[k] & ignore,\n f = !c && (c ^ (prev[k] & ignore));\n return f ? data[k] : null;\n });\n output.filter(output.REM, function(k) {\n var c = curr[k] & ignore,\n f = c && !(c ^ (c ^ (prev[k] & ignore)));\n return f ? data[k] : null;\n });\n }\n\n // add filter to source data in case of reflow...\n return output.filter(output.SOURCE, function(t) { return pass(t._index); });\n};\n","import {isString} from 'vega-util';\n\nvar Default = 'default';\n\nexport default function(view) {\n var cursor = view._signals.cursor;\n\n // add cursor signal to dataflow, if needed\n if (!cursor) {\n view._signals.cursor = (cursor = view.add({user: Default, item: null}));\n }\n\n // evaluate cursor on each mousemove event\n view.on(view.events('view', 'mousemove'), cursor,\n function(_, event) {\n var value = cursor.value,\n user = value ? (isString(value) ? value : value.user) : Default,\n item = event.item && event.item.cursor || null;\n\n return (value && user === value.user && item == value.item) ? value\n : {user: user, item: item};\n }\n );\n\n // when cursor signal updates, set visible cursor\n view.add(null, function(_) {\n var user = _.cursor,\n item = this.value;\n\n if (!isString(user)) {\n item = user.item;\n user = user.user;\n }\n\n setCursor(user && user !== Default ? user : (item || user));\n\n return item;\n }, {cursor: cursor});\n}\n\nfunction setCursor(cursor) {\n // set cursor on document body\n // this ensures cursor applies even if dragging out of view\n if (typeof document !== 'undefined' && document.body) {\n document.body.style.cursor = cursor;\n }\n}\n","import {changeset, isChangeSet} from 'vega-dataflow';\nimport {error} from 'vega-util';\n\nexport function dataref(view, name) {\n var data = view._runtime.data;\n if (!data.hasOwnProperty(name)) {\n error('Unrecognized data set: ' + name);\n }\n return data[name];\n}\n\nexport function data(name) {\n return dataref(this, name).values.value;\n}\n\nexport function change(name, changes) {\n if (!isChangeSet(changes)) {\n error('Second argument to changes must be a changeset.');\n }\n var dataset = dataref(this, name);\n dataset.modified = true;\n return this.pulse(dataset.input, changes);\n}\n\nexport function insert(name, _) {\n return change.call(this, name, changeset().insert(_));\n}\n\nexport function remove(name, _) {\n return change.call(this, name, changeset().remove(_));\n}\n","export function width(view) {\n var padding = view.padding();\n return Math.max(0, view._viewWidth + padding.left + padding.right);\n}\n\nexport function height(view) {\n var padding = view.padding();\n return Math.max(0, view._viewHeight + padding.top + padding.bottom);\n}\n\nexport function offset(view) {\n var padding = view.padding(),\n origin = view._origin;\n return [\n padding.left + origin[0],\n padding.top + origin[1]\n ];\n}\n\nexport function resizeRenderer(view) {\n var origin = offset(view),\n w = width(view),\n h = height(view);\n\n view._renderer.background(view._background);\n view._renderer.resize(w, h, origin);\n view._handler.origin(origin);\n\n view._resizeListeners.forEach(function(handler) {\n try {\n handler(w, h);\n } catch (error) {\n view.error(error);\n }\n });\n}\n","import {offset} from './render-size';\nimport {constant, isString} from 'vega-util';\nimport {point} from 'vega-scenegraph';\n\n/**\n * Extend an event with additional view-specific methods.\n * Adds a new property ('vega') to an event that provides a number\n * of methods for querying information about the current interaction.\n * The vega object provides the following methods:\n * view - Returns the backing View instance.\n * item - Returns the currently active scenegraph item (if any).\n * group - Returns the currently active scenegraph group (if any).\n * This method accepts a single string-typed argument indicating the name\n * of the desired parent group. The scenegraph will be traversed from\n * the item up towards the root to search for a matching group. If no\n * argument is provided the enclosing group for the active item is\n * returned, unless the item it itself a group, in which case it is\n * returned directly.\n * xy - Returns a two-element array containing the x and y coordinates for\n * mouse or touch events. For touch events, this is based on the first\n * elements in the changedTouches array. This method accepts a single\n * argument: either an item instance or mark name that should serve as\n * the reference coordinate system. If no argument is provided the\n * top-level view coordinate system is assumed.\n * x - Returns the current x-coordinate, accepts the same arguments as xy.\n * y - Returns the current y-coordinate, accepts the same arguments as xy.\n * @param {Event} event - The input event to extend.\n * @param {Item} item - The currently active scenegraph item (if any).\n * @return {Event} - The extended input event.\n */\nexport default function(view, event, item) {\n var r = view._renderer,\n el = r && r.canvas(),\n p, e, translate;\n\n if (el) {\n translate = offset(view);\n e = event.changedTouches ? event.changedTouches[0] : event;\n p = point(e, el);\n p[0] -= translate[0];\n p[1] -= translate[1];\n }\n\n event.dataflow = view;\n event.item = item;\n event.vega = extension(view, item, p);\n return event;\n}\n\nfunction extension(view, item, point) {\n var itemGroup = item\n ? item.mark.marktype === 'group' ? item : item.mark.group\n : null;\n\n function group(name) {\n var g = itemGroup, i;\n if (name) for (i = item; i; i = i.mark.group) {\n if (i.mark.name === name) { g = i; break; }\n }\n return g && g.mark && g.mark.interactive ? g : {};\n }\n\n function xy(item) {\n if (!item) return point;\n if (isString(item)) item = group(item);\n\n var p = point.slice();\n while (item) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n item = item.mark && item.mark.group;\n }\n return p;\n }\n\n return {\n view: constant(view),\n item: constant(item || {}),\n group: group,\n xy: xy,\n x: function(item) { return xy(item)[0]; },\n y: function(item) { return xy(item)[1]; }\n };\n}\n","import eventExtend from './events-extend';\nimport {EventStream} from 'vega-dataflow';\nimport {extend, isArray, toSet} from 'vega-util';\n\nvar VIEW = 'view',\n TIMER = 'timer',\n WINDOW = 'window',\n NO_TRAP = {trap: false};\n\n/**\n * Initialize event handling configuration.\n * @param {object} config - The configuration settings.\n * @return {object}\n */\nexport function initializeEventConfig(config) {\n config = extend({}, config);\n\n var def = config.defaults;\n if (def) {\n if (isArray(def.prevent)) {\n def.prevent = toSet(def.prevent);\n }\n if (isArray(def.allow)) {\n def.allow = toSet(def.allow);\n }\n }\n\n return config;\n}\n\nfunction prevent(view, type) {\n var def = view._eventConfig.defaults,\n prevent = def && def.prevent,\n allow = def && def.allow;\n\n return prevent === false || allow === true ? false\n : prevent === true || allow === false ? true\n : prevent ? prevent[type]\n : allow ? !allow[type]\n : view.preventDefault();\n}\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @return {EventStream}\n */\nexport function events(source, type, filter) {\n var view = this,\n s = new EventStream(filter),\n send = function(e, item) {\n view.runAsync(null, () => {\n if (source === VIEW && prevent(view, type)) {\n e.preventDefault();\n }\n s.receive(eventExtend(view, e, item));\n });\n },\n sources;\n\n if (source === TIMER) {\n view.timer(send, type);\n }\n\n else if (source === VIEW) {\n // send traps errors, so use {trap: false} option\n view.addEventListener(type, send, NO_TRAP);\n }\n\n else {\n if (source === WINDOW) {\n if (typeof window !== 'undefined') sources = [window];\n } else if (typeof document !== 'undefined') {\n sources = document.querySelectorAll(source);\n }\n\n if (!sources) {\n view.warn('Can not resolve event source: ' + source);\n } else {\n for (var i=0, n=sources.length; i<n; ++i) {\n sources[i].addEventListener(type, send);\n }\n\n view._eventListeners.push({\n type: type,\n sources: sources,\n handler: send\n });\n }\n }\n\n return s;\n}\n","function itemFilter(event) {\n return event.item;\n}\n\nfunction markTarget(event) {\n // grab upstream collector feeding the mark operator\n var source = event.item.mark.source;\n return source.source || source;\n}\n\nfunction invoke(name) {\n return function(_, event) {\n return event.vega.view()\n .changeset()\n .encode(event.item, name);\n };\n}\n\nexport default function(hoverSet, leaveSet) {\n hoverSet = [hoverSet || 'hover'];\n leaveSet = [leaveSet || 'update', hoverSet[0]];\n\n // invoke hover set upon mouseover\n this.on(\n this.events('view', 'mouseover', itemFilter),\n markTarget,\n invoke(hoverSet)\n );\n\n // invoke leave set upon mouseout\n this.on(\n this.events('view', 'mouseout', itemFilter),\n markTarget,\n invoke(leaveSet)\n );\n\n return this;\n}\n","export default function(tag, attr, text) {\n var el = document.createElement(tag);\n for (var key in attr) el.setAttribute(key, attr[key]);\n if (text != null) el.textContent = text;\n return el;\n}\n","import element from './element';\nimport {debounce} from 'vega-util';\nimport {tickStep} from 'd3-array';\n\nvar BindClass = 'vega-bind',\n NameClass = 'vega-bind-name',\n RadioClass = 'vega-bind-radio',\n OptionClass = 'vega-option-';\n\n/**\n * Bind a signal to an external HTML input element. The resulting two-way\n * binding will propagate input changes to signals, and propagate signal\n * changes to the input element state. If this view instance has no parent\n * element, we assume the view is headless and no bindings are created.\n * @param {Element|string} el - The parent DOM element to which the input\n * element should be appended as a child. If string-valued, this argument\n * will be treated as a CSS selector. If null or undefined, the parent\n * element of this view will be used as the element.\n * @param {object} param - The binding parameters which specify the signal\n * to bind to, the input element type, and type-specific configuration.\n * @return {View} - This view instance.\n */\nexport default function(view, el, binding) {\n if (!el) return;\n\n var param = binding.param,\n bind = binding.state;\n\n if (!bind) {\n bind = binding.state = {\n elements: null,\n active: false,\n set: null,\n update: function(value) {\n if (value !== view.signal(param.signal)) {\n view.runAsync(null, function() {\n bind.source = true;\n view.signal(param.signal, value);\n });\n }\n }\n };\n if (param.debounce) {\n bind.update = debounce(param.debounce, bind.update);\n }\n }\n\n generate(bind, el, param, view.signal(param.signal));\n\n if (!bind.active) {\n view.on(view._signals[param.signal], null, function() {\n bind.source\n ? (bind.source = false)\n : bind.set(view.signal(param.signal));\n });\n bind.active = true;\n }\n\n return bind;\n}\n\n/**\n * Generate an HTML input form element and bind it to a signal.\n */\nfunction generate(bind, el, param, value) {\n var div = element('div', {'class': BindClass});\n\n div.appendChild(element('span',\n {'class': NameClass},\n (param.name || param.signal)\n ));\n\n el.appendChild(div);\n\n var input = form;\n switch (param.input) {\n case 'checkbox': input = checkbox; break;\n case 'select': input = select; break;\n case 'radio': input = radio; break;\n case 'range': input = range; break;\n }\n\n input(bind, div, param, value);\n}\n\n/**\n * Generates an arbitrary input form element.\n * The input type is controlled via user-provided parameters.\n */\nfunction form(bind, el, param, value) {\n var node = element('input');\n\n for (var key in param) {\n if (key !== 'signal' && key !== 'element') {\n node.setAttribute(key === 'input' ? 'type' : key, param[key]);\n }\n }\n node.setAttribute('name', param.signal);\n node.value = value;\n\n el.appendChild(node);\n\n node.addEventListener('input', function() {\n bind.update(node.value);\n });\n\n bind.elements = [node];\n bind.set = function(value) { node.value = value; };\n}\n\n/**\n * Generates a checkbox input element.\n */\nfunction checkbox(bind, el, param, value) {\n var attr = {type: 'checkbox', name: param.signal};\n if (value) attr.checked = true;\n var node = element('input', attr);\n\n el.appendChild(node);\n\n node.addEventListener('change', function() {\n bind.update(node.checked);\n });\n\n bind.elements = [node];\n bind.set = function(value) { node.checked = !!value || null; }\n}\n\n/**\n * Generates a selection list input element.\n */\nfunction select(bind, el, param, value) {\n var node = element('select', {name: param.signal});\n\n param.options.forEach(function(option) {\n var attr = {value: option};\n if (valuesEqual(option, value)) attr.selected = true;\n node.appendChild(element('option', attr, option+''));\n });\n\n el.appendChild(node);\n\n node.addEventListener('change', function() {\n bind.update(param.options[node.selectedIndex]);\n });\n\n bind.elements = [node];\n bind.set = function(value) {\n for (var i=0, n=param.options.length; i<n; ++i) {\n if (valuesEqual(param.options[i], value)) {\n node.selectedIndex = i; return;\n }\n }\n };\n}\n\n/**\n * Generates a radio button group.\n */\nfunction radio(bind, el, param, value) {\n var group = element('span', {'class': RadioClass});\n\n el.appendChild(group);\n\n bind.elements = param.options.map(function(option) {\n var id = OptionClass + param.signal + '-' + option;\n\n var attr = {\n id: id,\n type: 'radio',\n name: param.signal,\n value: option\n };\n if (valuesEqual(option, value)) attr.checked = true;\n\n var input = element('input', attr);\n\n input.addEventListener('change', function() {\n bind.update(option);\n });\n\n group.appendChild(input);\n group.appendChild(element('label', {'for': id}, option+''));\n\n return input;\n });\n\n bind.set = function(value) {\n var nodes = bind.elements,\n i = 0,\n n = nodes.length;\n for (; i<n; ++i) {\n if (valuesEqual(nodes[i].value, value)) nodes[i].checked = true;\n }\n };\n}\n\n/**\n * Generates a slider input element.\n */\nfunction range(bind, el, param, value) {\n value = value !== undefined ? value : ((+param.max) + (+param.min)) / 2;\n\n var min = param.min || Math.min(0, +value) || 0,\n max = param.max || Math.max(100, +value) || 100,\n step = param.step || tickStep(min, max, 100);\n\n var node = element('input', {\n type: 'range',\n name: param.signal,\n min: min,\n max: max,\n step: step\n });\n node.value = value;\n\n var label = element('label', {}, +value);\n\n el.appendChild(node);\n el.appendChild(label);\n\n function update() {\n label.textContent = node.value;\n bind.update(+node.value);\n }\n\n // subscribe to both input and change\n node.addEventListener('input', update);\n node.addEventListener('change', update);\n\n bind.elements = [node];\n bind.set = function(value) {\n node.value = value;\n label.textContent = value;\n };\n}\n\nfunction valuesEqual(a, b) {\n return a === b || (a+'' === b+'');\n}\n","import {width, height, offset} from './render-size';\n\nexport default function(view, r, el, constructor, scaleFactor, opt) {\n r = r || new constructor(view.loader());\n return r\n .initialize(el, width(view), height(view), offset(view), scaleFactor, opt)\n .background(view._background);\n}\n","export default function(view, fn) {\n return !fn ? null : function() {\n try {\n fn.apply(this, arguments);\n } catch (error) {\n view.error(error);\n }\n };\n}\n","import bind from './bind';\nimport element from './element';\nimport initializeRenderer from './initialize-renderer';\nimport initializeHandler from './initialize-handler';\nimport {CanvasHandler, renderModule} from 'vega-scenegraph';\n\nexport default function(el, elBind) {\n var view = this,\n type = view._renderType,\n module = renderModule(type),\n Handler, Renderer;\n\n // containing dom element\n el = view._el = el ? lookup(view, el) : null;\n\n // select appropriate renderer & handler\n if (!module) view.error('Unrecognized renderer type: ' + type);\n Handler = module.handler || CanvasHandler;\n Renderer = (el ? module.renderer : module.headless);\n\n // initialize renderer and input handler\n view._renderer = !Renderer ? null\n : initializeRenderer(view, view._renderer, el, Renderer);\n view._handler = initializeHandler(view, view._handler, el, Handler);\n view._redraw = true;\n\n // initialize signal bindings\n if (el) {\n elBind = elBind ? (view._elBind = lookup(view, elBind))\n : el.appendChild(element('div', {'class': 'vega-bindings'}));\n\n view._bind.forEach(function(_) {\n if (_.param.element) {\n _.element = lookup(view, _.param.element);\n }\n });\n\n view._bind.forEach(function(_) {\n bind(view, _.element || elBind, _);\n });\n }\n\n return view;\n}\n\nfunction lookup(view, el) {\n if (typeof el === 'string') {\n if (typeof document !== 'undefined') {\n el = document.querySelector(el);\n if (!el) {\n view.error('Signal bind element not found: ' + el);\n return null;\n }\n } else {\n view.error('DOM document instance not found.');\n return null;\n }\n }\n if (el) {\n try {\n el.innerHTML = '';\n } catch (e) {\n el = null;\n view.error(e);\n }\n }\n return el;\n}\n","import initializeRenderer from './initialize-renderer';\nimport {renderModule} from 'vega-scenegraph';\nimport {error} from 'vega-util';\n\n/**\n * Render the current scene in a headless fashion.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A Promise that resolves to a renderer.\n */\nexport default async function(view, type, scaleFactor, opt) {\n const module = renderModule(type),\n ctr = module && module.headless;\n\n if (!ctr) error('Unrecognized renderer type: ' + type);\n\n await view.runAsync();\n return initializeRenderer(view, null, null, ctr, scaleFactor, opt)\n .renderAsync(view._scenegraph.root);\n}\n","import renderHeadless from './render-headless';\nimport {RenderType} from 'vega-scenegraph';\n\n/**\n * Produce a Canvas instance containing a rendered visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to a Canvas instance.\n */\nexport default async function(scaleFactor, opt) {\n const r = await renderHeadless(this, RenderType.Canvas, scaleFactor, opt);\n return r.canvas();\n}\n","/*\n The following expression parser is based on Esprima (http://esprima.org/).\n Original header comment and license for Esprima is included here:\n\n Copyright (C) 2013 Ariya Hidayat <ariya.hidayat(a)gmail.com>\n Copyright (C) 2013 Thaddee Tyl <thaddee.tyl(a)gmail.com>\n Copyright (C) 2013 Mathias Bynens <mathias(a)qiwi.be>\n Copyright (C) 2012 Ariya Hidayat <ariya.hidayat(a)gmail.com>\n Copyright (C) 2012 Mathias Bynens <mathias(a)qiwi.be>\n Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim(a)boekesteijn.nl>\n Copyright (C) 2012 Kris Kowal <kris.kowal(a)cixar.com>\n Copyright (C) 2012 Yusuke Suzuki <utatane.tea(a)gmail.com>\n Copyright (C) 2012 Arpad Borsos <arpad.borsos(a)googlemail.com>\n Copyright (C) 2011 Ariya Hidayat <ariya.hidayat(a)gmail.com>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nimport ASTNode from './ast';\n\nvar TokenName,\n source,\n index,\n length,\n lookahead;\n\nvar TokenBooleanLiteral = 1,\n TokenEOF = 2,\n TokenIdentifier = 3,\n TokenKeyword = 4,\n TokenNullLiteral = 5,\n TokenNumericLiteral = 6,\n TokenPunctuator = 7,\n TokenStringLiteral = 8,\n TokenRegularExpression = 9;\n\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '<end>';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\n\nvar SyntaxArrayExpression = 'ArrayExpression',\n SyntaxBinaryExpression = 'BinaryExpression',\n SyntaxCallExpression = 'CallExpression',\n SyntaxConditionalExpression = 'ConditionalExpression',\n SyntaxIdentifier = 'Identifier',\n SyntaxLiteral = 'Literal',\n SyntaxLogicalExpression = 'LogicalExpression',\n SyntaxMemberExpression = 'MemberExpression',\n SyntaxObjectExpression = 'ObjectExpression',\n SyntaxProperty = 'Property',\n SyntaxUnaryExpression = 'UnaryExpression';\n\n// Error messages should be identical to V8.\nvar MessageUnexpectedToken = 'Unexpected token %0',\n MessageUnexpectedNumber = 'Unexpected number',\n MessageUnexpectedString = 'Unexpected string',\n MessageUnexpectedIdentifier = 'Unexpected identifier',\n MessageUnexpectedReserved = 'Unexpected reserved word',\n MessageUnexpectedEOS = 'Unexpected end of input',\n MessageInvalidRegExp = 'Invalid regular expression',\n MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\n\nvar ILLEGAL = 'ILLEGAL',\n DISABLED = 'Disabled.';\n\n// See also tools/generate-unicode-regex.py.\n var RegexNonAsciiIdentifierStart = new RegExp(\"[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]\"),\n RegexNonAsciiIdentifierPart = new RegExp(\"[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]\");\n\n// Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n /* istanbul ignore next */\n if (!condition) {\n throw new Error('ASSERT: ' + message);\n }\n}\n\nfunction isDecimalDigit(ch) {\n return (ch >= 0x30 && ch <= 0x39); // 0..9\n}\n\nfunction isHexDigit(ch) {\n return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\n\nfunction isOctalDigit(ch) {\n return '01234567'.indexOf(ch) >= 0;\n}\n\n// 7.2 White Space\n\nfunction isWhiteSpace(ch) {\n return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) ||\n (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0);\n}\n\n// 7.3 Line Terminators\n\nfunction isLineTerminator(ch) {\n return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029);\n}\n\n// 7.6 Identifier Names and Identifiers\n\nfunction isIdentifierStart(ch) {\n return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n (ch >= 0x41 && ch <= 0x5A) || // A..Z\n (ch >= 0x61 && ch <= 0x7A) || // a..z\n (ch === 0x5C) || // \\ (backslash)\n ((ch >= 0x80) && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch)));\n}\n\nfunction isIdentifierPart(ch) {\n return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n (ch >= 0x41 && ch <= 0x5A) || // A..Z\n (ch >= 0x61 && ch <= 0x7A) || // a..z\n (ch >= 0x30 && ch <= 0x39) || // 0..9\n (ch === 0x5C) || // \\ (backslash)\n ((ch >= 0x80) && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch)));\n}\n\n// 7.6.1.1 Keywords\n\nvar keywords = {\n 'if':1, 'in':1, 'do':1,\n 'var':1, 'for':1, 'new':1, 'try':1, 'let':1,\n 'this':1, 'else':1, 'case':1, 'void':1, 'with':1, 'enum':1,\n 'while':1, 'break':1, 'catch':1, 'throw':1, 'const':1, 'yield':1, 'class':1, 'super':1,\n 'return':1, 'typeof':1, 'delete':1, 'switch':1, 'export':1, 'import':1, 'public':1, 'static':1,\n 'default':1, 'finally':1, 'extends':1, 'package':1, 'private':1,\n 'function':1, 'continue':1, 'debugger':1,\n 'interface':1, 'protected':1,\n 'instanceof':1, 'implements':1\n};\n\nfunction skipComment() {\n var ch;\n\n while (index < length) {\n ch = source.charCodeAt(index);\n\n if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n ++index;\n } else {\n break;\n }\n }\n}\n\nfunction scanHexEscape(prefix) {\n var i, len, ch, code = 0;\n\n len = (prefix === 'u') ? 4 : 2;\n for (i = 0; i < len; ++i) {\n if (index < length && isHexDigit(source[index])) {\n ch = source[index++];\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n } else {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n return String.fromCharCode(code);\n}\n\nfunction scanUnicodeCodePointEscape() {\n var ch, code, cu1, cu2;\n\n ch = source[index];\n code = 0;\n\n // At least, one hex digit is required.\n if (ch === '}') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n while (index < length) {\n ch = source[index++];\n if (!isHexDigit(ch)) {\n break;\n }\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n }\n\n if (code > 0x10FFFF || ch !== '}') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n // UTF-16 Encoding\n if (code <= 0xFFFF) {\n return String.fromCharCode(code);\n }\n cu1 = ((code - 0x10000) >> 10) + 0xD800;\n cu2 = ((code - 0x10000) & 1023) + 0xDC00;\n return String.fromCharCode(cu1, cu2);\n}\n\nfunction getEscapedIdentifier() {\n var ch, id;\n\n ch = source.charCodeAt(index++);\n id = String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n id = ch;\n }\n\n while (index < length) {\n ch = source.charCodeAt(index);\n if (!isIdentifierPart(ch)) {\n break;\n }\n ++index;\n id += String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n id = id.substr(0, id.length - 1);\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n id += ch;\n }\n }\n\n return id;\n}\n\nfunction getIdentifier() {\n var start, ch;\n\n start = index++;\n while (index < length) {\n ch = source.charCodeAt(index);\n if (ch === 0x5C) {\n // Blackslash (U+005C) marks Unicode escape sequence.\n index = start;\n return getEscapedIdentifier();\n }\n if (isIdentifierPart(ch)) {\n ++index;\n } else {\n break;\n }\n }\n\n return source.slice(start, index);\n}\n\nfunction scanIdentifier() {\n var start, id, type;\n\n start = index;\n\n // Backslash (U+005C) starts an escaped character.\n id = (source.charCodeAt(index) === 0x5C) ? getEscapedIdentifier() : getIdentifier();\n\n // There is no keyword or literal with only one character.\n // Thus, it must be an identifier.\n if (id.length === 1) {\n type = TokenIdentifier;\n } else if (keywords.hasOwnProperty(id)) {\n type = TokenKeyword;\n } else if (id === 'null') {\n type = TokenNullLiteral;\n } else if (id === 'true' || id === 'false') {\n type = TokenBooleanLiteral;\n } else {\n type = TokenIdentifier;\n }\n\n return {\n type: type,\n value: id,\n start: start,\n end: index\n };\n}\n\n// 7.7 Punctuators\n\nfunction scanPunctuator() {\n var start = index,\n code = source.charCodeAt(index),\n code2,\n ch1 = source[index],\n ch2,\n ch3,\n ch4;\n\n switch (code) {\n\n // Check for most common single-character punctuators.\n case 0x2E: // . dot\n case 0x28: // ( open bracket\n case 0x29: // ) close bracket\n case 0x3B: // ; semicolon\n case 0x2C: // , comma\n case 0x7B: // { open curly brace\n case 0x7D: // } close curly brace\n case 0x5B: // [\n case 0x5D: // ]\n case 0x3A: // :\n case 0x3F: // ?\n case 0x7E: // ~\n ++index;\n return {\n type: TokenPunctuator,\n value: String.fromCharCode(code),\n start: start,\n end: index\n };\n\n default:\n code2 = source.charCodeAt(index + 1);\n\n // '=' (U+003D) marks an assignment or comparison operator.\n if (code2 === 0x3D) {\n switch (code) {\n case 0x2B: // +\n case 0x2D: // -\n case 0x2F: // /\n case 0x3C: // <\n case 0x3E: // >\n case 0x5E: // ^\n case 0x7C: // |\n case 0x25: // %\n case 0x26: // &\n case 0x2A: // *\n index += 2;\n return {\n type: TokenPunctuator,\n value: String.fromCharCode(code) + String.fromCharCode(code2),\n start: start,\n end: index\n };\n\n case 0x21: // !\n case 0x3D: // =\n index += 2;\n\n // !== and ===\n if (source.charCodeAt(index) === 0x3D) {\n ++index;\n }\n return {\n type: TokenPunctuator,\n value: source.slice(start, index),\n start: start,\n end: index\n };\n }\n }\n }\n\n // 4-character punctuator: >>>=\n\n ch4 = source.substr(index, 4);\n\n if (ch4 === '>>>=') {\n index += 4;\n return {\n type: TokenPunctuator,\n value: ch4,\n start: start,\n end: index\n };\n }\n\n // 3-character punctuators: === !== >>> <<= >>=\n\n ch3 = ch4.substr(0, 3);\n\n if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n index += 3;\n return {\n type: TokenPunctuator,\n value: ch3,\n start: start,\n end: index\n };\n }\n\n // Other 2-character punctuators: ++ -- << >> && ||\n ch2 = ch3.substr(0, 2);\n\n if ((ch1 === ch2[1] && ('+-<>&|'.indexOf(ch1) >= 0)) || ch2 === '=>') {\n index += 2;\n return {\n type: TokenPunctuator,\n value: ch2,\n start: start,\n end: index\n };\n }\n\n // 1-character punctuators: < > = ! + - * % & | ^ /\n\n if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n ++index;\n return {\n type: TokenPunctuator,\n value: ch1,\n start: start,\n end: index\n };\n }\n\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n}\n\n// 7.8.3 Numeric Literals\n\nfunction scanHexLiteral(start) {\n var number = '';\n\n while (index < length) {\n if (!isHexDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n\n if (number.length === 0) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n return {\n type: TokenNumericLiteral,\n value: parseInt('0x' + number, 16),\n start: start,\n end: index\n };\n}\n\nfunction scanOctalLiteral(start) {\n var number = '0' + source[index++];\n while (index < length) {\n if (!isOctalDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n\n if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n return {\n type: TokenNumericLiteral,\n value: parseInt(number, 8),\n octal: true,\n start: start,\n end: index\n };\n}\n\nfunction scanNumericLiteral() {\n var number, start, ch;\n\n ch = source[index];\n assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),\n 'Numeric literal must start with a decimal digit or a decimal point');\n\n start = index;\n number = '';\n if (ch !== '.') {\n number = source[index++];\n ch = source[index];\n\n // Hex number starts with '0x'.\n // Octal number starts with '0'.\n if (number === '0') {\n if (ch === 'x' || ch === 'X') {\n ++index;\n return scanHexLiteral(start);\n }\n if (isOctalDigit(ch)) {\n return scanOctalLiteral(start);\n }\n\n // decimal number starts with '0' such as '09' is illegal.\n if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n\n if (ch === '.') {\n number += source[index++];\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n\n if (ch === 'e' || ch === 'E') {\n number += source[index++];\n\n ch = source[index];\n if (ch === '+' || ch === '-') {\n number += source[index++];\n }\n if (isDecimalDigit(source.charCodeAt(index))) {\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n } else {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n return {\n type: TokenNumericLiteral,\n value: parseFloat(number),\n start: start,\n end: index\n };\n}\n\n// 7.8.4 String Literals\n\nfunction scanStringLiteral() {\n var str = '',\n quote, start, ch, code, octal = false;\n\n quote = source[index];\n assert((quote === '\\'' || quote === '\"'),\n 'String literal must starts with a quote');\n\n start = index;\n ++index;\n\n while (index < length) {\n ch = source[index++];\n\n if (ch === quote) {\n quote = '';\n break;\n } else if (ch === '\\\\') {\n ch = source[index++];\n if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n switch (ch) {\n case 'u':\n case 'x':\n if (source[index] === '{') {\n ++index;\n str += scanUnicodeCodePointEscape();\n } else {\n str += scanHexEscape(ch);\n }\n break;\n case 'n':\n str += '\\n';\n break;\n case 'r':\n str += '\\r';\n break;\n case 't':\n str += '\\t';\n break;\n case 'b':\n str += '\\b';\n break;\n case 'f':\n str += '\\f';\n break;\n case 'v':\n str += '\\x0B';\n break;\n\n default:\n if (isOctalDigit(ch)) {\n code = '01234567'.indexOf(ch);\n\n // \\0 is not octal escape sequence\n if (code !== 0) {\n octal = true;\n }\n\n if (index < length && isOctalDigit(source[index])) {\n octal = true;\n code = code * 8 + '01234567'.indexOf(source[index++]);\n\n // 3 digits are only allowed when string starts\n // with 0, 1, 2, 3\n if ('0123'.indexOf(ch) >= 0 &&\n index < length &&\n isOctalDigit(source[index])) {\n code = code * 8 + '01234567'.indexOf(source[index++]);\n }\n }\n str += String.fromCharCode(code);\n } else {\n str += ch;\n }\n break;\n }\n } else {\n if (ch === '\\r' && source[index] === '\\n') {\n ++index;\n }\n }\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n break;\n } else {\n str += ch;\n }\n }\n\n if (quote !== '') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n return {\n type: TokenStringLiteral,\n value: str,\n octal: octal,\n start: start,\n end: index\n };\n}\n\nfunction testRegExp(pattern, flags) {\n var tmp = pattern;\n\n if (flags.indexOf('u') >= 0) {\n // Replace each astral symbol and every Unicode code point\n // escape sequence with a single ASCII symbol to avoid throwing on\n // regular expressions that are only valid in combination with the\n // `/u` flag.\n // Note: replacing with the ASCII symbol `x` might cause false\n // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n // perfectly valid pattern that is equivalent to `[a-b]`, but it\n // would be replaced by `[x-b]` which throws an error.\n tmp = tmp\n .replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, function($0, $1) {\n if (parseInt($1, 16) <= 0x10FFFF) {\n return 'x';\n }\n throwError({}, MessageInvalidRegExp);\n })\n .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n }\n\n // First, detect invalid regular expressions.\n try {\n new RegExp(tmp);\n } catch (e) {\n throwError({}, MessageInvalidRegExp);\n }\n\n // Return a regular expression object for this pattern-flag pair, or\n // `null` in case the current environment doesn't support the flags it\n // uses.\n try {\n return new RegExp(pattern, flags);\n } catch (exception) {\n return null;\n }\n}\n\nfunction scanRegExpBody() {\n var ch, str, classMarker, terminated, body;\n\n ch = source[index];\n assert(ch === '/', 'Regular expression literal must start with a slash');\n str = source[index++];\n\n classMarker = false;\n terminated = false;\n while (index < length) {\n ch = source[index++];\n str += ch;\n if (ch === '\\\\') {\n ch = source[index++];\n // ECMA-262 7.8.5\n if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, MessageUnterminatedRegExp);\n }\n str += ch;\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, MessageUnterminatedRegExp);\n } else if (classMarker) {\n if (ch === ']') {\n classMarker = false;\n }\n } else {\n if (ch === '/') {\n terminated = true;\n break;\n } else if (ch === '[') {\n classMarker = true;\n }\n }\n }\n\n if (!terminated) {\n throwError({}, MessageUnterminatedRegExp);\n }\n\n // Exclude leading and trailing slash.\n body = str.substr(1, str.length - 2);\n return {\n value: body,\n literal: str\n };\n}\n\nfunction scanRegExpFlags() {\n var ch, str, flags;\n\n str = '';\n flags = '';\n while (index < length) {\n ch = source[index];\n if (!isIdentifierPart(ch.charCodeAt(0))) {\n break;\n }\n\n ++index;\n if (ch === '\\\\' && index < length) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n } else {\n flags += ch;\n str += ch;\n }\n }\n\n if (flags.search(/[^gimuy]/g) >= 0) {\n throwError({}, MessageInvalidRegExp, flags);\n }\n\n return {\n value: flags,\n literal: str\n };\n}\n\nfunction scanRegExp() {\n var start, body, flags, value;\n\n lookahead = null;\n skipComment();\n start = index;\n\n body = scanRegExpBody();\n flags = scanRegExpFlags();\n value = testRegExp(body.value, flags.value);\n\n return {\n literal: body.literal + flags.literal,\n value: value,\n regex: {\n pattern: body.value,\n flags: flags.value\n },\n start: start,\n end: index\n };\n}\n\nfunction isIdentifierName(token) {\n return token.type === TokenIdentifier ||\n token.type === TokenKeyword ||\n token.type === TokenBooleanLiteral ||\n token.type === TokenNullLiteral;\n}\n\nfunction advance() {\n var ch;\n\n skipComment();\n\n if (index >= length) {\n return {\n type: TokenEOF,\n start: index,\n end: index\n };\n }\n\n ch = source.charCodeAt(index);\n\n if (isIdentifierStart(ch)) {\n return scanIdentifier();\n }\n\n // Very common: ( and ) and ;\n if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n return scanPunctuator();\n }\n\n // String literal starts with single quote (U+0027) or double quote (U+0022).\n if (ch === 0x27 || ch === 0x22) {\n return scanStringLiteral();\n }\n\n\n // Dot (.) U+002E can also start a floating-point number, hence the need\n // to check the next character.\n if (ch === 0x2E) {\n if (isDecimalDigit(source.charCodeAt(index + 1))) {\n return scanNumericLiteral();\n }\n return scanPunctuator();\n }\n\n if (isDecimalDigit(ch)) {\n return scanNumericLiteral();\n }\n\n return scanPunctuator();\n}\n\nfunction lex() {\n var token;\n\n token = lookahead;\n index = token.end;\n\n lookahead = advance();\n\n index = token.end;\n\n return token;\n}\n\nfunction peek() {\n var pos;\n\n pos = index;\n\n lookahead = advance();\n index = pos;\n}\n\nfunction finishArrayExpression(elements) {\n var node = new ASTNode(SyntaxArrayExpression);\n node.elements = elements;\n return node;\n}\n\nfunction finishBinaryExpression(operator, left, right) {\n var node = new ASTNode((operator === '||' || operator === '&&') ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n node.operator = operator;\n node.left = left;\n node.right = right;\n return node;\n}\n\nfunction finishCallExpression(callee, args) {\n var node = new ASTNode(SyntaxCallExpression);\n node.callee = callee;\n node.arguments = args;\n return node;\n}\n\nfunction finishConditionalExpression(test, consequent, alternate) {\n var node = new ASTNode(SyntaxConditionalExpression);\n node.test = test;\n node.consequent = consequent;\n node.alternate = alternate;\n return node;\n}\n\nfunction finishIdentifier(name) {\n var node = new ASTNode(SyntaxIdentifier);\n node.name = name;\n return node;\n}\n\nfunction finishLiteral(token) {\n var node = new ASTNode(SyntaxLiteral);\n node.value = token.value;\n node.raw = source.slice(token.start, token.end);\n if (token.regex) {\n if (node.raw === '//') {\n node.raw = '/(?:)/';\n }\n node.regex = token.regex;\n }\n return node;\n}\n\nfunction finishMemberExpression(accessor, object, property) {\n var node = new ASTNode(SyntaxMemberExpression);\n node.computed = accessor === '[';\n node.object = object;\n node.property = property;\n if (!node.computed) property.member = true;\n return node;\n}\n\nfunction finishObjectExpression(properties) {\n var node = new ASTNode(SyntaxObjectExpression);\n node.properties = properties;\n return node;\n}\n\nfunction finishProperty(kind, key, value) {\n var node = new ASTNode(SyntaxProperty);\n node.key = key;\n node.value = value;\n node.kind = kind;\n return node;\n}\n\nfunction finishUnaryExpression(operator, argument) {\n var node = new ASTNode(SyntaxUnaryExpression);\n node.operator = operator;\n node.argument = argument;\n node.prefix = true;\n return node;\n}\n\n// Throw an exception\n\nfunction throwError(token, messageFormat) {\n var error,\n args = Array.prototype.slice.call(arguments, 2),\n msg = messageFormat.replace(\n /%(\\d)/g,\n function(whole, index) {\n assert(index < args.length, 'Message reference must be in range');\n return args[index];\n }\n );\n\n\n error = new Error(msg);\n error.index = index;\n error.description = msg;\n throw error;\n}\n\n// Throw an exception because of the token.\n\nfunction throwUnexpected(token) {\n if (token.type === TokenEOF) {\n throwError(token, MessageUnexpectedEOS);\n }\n\n if (token.type === TokenNumericLiteral) {\n throwError(token, MessageUnexpectedNumber);\n }\n\n if (token.type === TokenStringLiteral) {\n throwError(token, MessageUnexpectedString);\n }\n\n if (token.type === TokenIdentifier) {\n throwError(token, MessageUnexpectedIdentifier);\n }\n\n if (token.type === TokenKeyword) {\n throwError(token, MessageUnexpectedReserved);\n }\n\n // BooleanLiteral, NullLiteral, or Punctuator.\n throwError(token, MessageUnexpectedToken, token.value);\n}\n\n// Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\nfunction expect(value) {\n var token = lex();\n if (token.type !== TokenPunctuator || token.value !== value) {\n throwUnexpected(token);\n }\n}\n\n// Return true if the next token matches the specified punctuator.\n\nfunction match(value) {\n return lookahead.type === TokenPunctuator && lookahead.value === value;\n}\n\n// Return true if the next token matches the specified keyword\n\nfunction matchKeyword(keyword) {\n return lookahead.type === TokenKeyword && lookahead.value === keyword;\n}\n\n// 11.1.4 Array Initialiser\n\nfunction parseArrayInitialiser() {\n var elements = [];\n\n index = lookahead.start;\n expect('[');\n\n while (!match(']')) {\n if (match(',')) {\n lex();\n elements.push(null);\n } else {\n elements.push(parseConditionalExpression());\n\n if (!match(']')) {\n expect(',');\n }\n }\n }\n\n lex();\n\n return finishArrayExpression(elements);\n}\n\n// 11.1.5 Object Initialiser\n\nfunction parseObjectPropertyKey() {\n var token;\n\n index = lookahead.start;\n token = lex();\n\n // Note: This function is called only from parseObjectProperty(), where\n // EOF and Punctuator tokens are already filtered out.\n\n if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n if (token.octal) {\n throwError(token, MessageStrictOctalLiteral);\n }\n return finishLiteral(token);\n }\n\n return finishIdentifier(token.value);\n}\n\nfunction parseObjectProperty() {\n var token, key, id, value;\n\n index = lookahead.start;\n token = lookahead;\n\n if (token.type === TokenIdentifier) {\n id = parseObjectPropertyKey();\n expect(':');\n value = parseConditionalExpression();\n return finishProperty('init', id, value);\n }\n if (token.type === TokenEOF || token.type === TokenPunctuator) {\n throwUnexpected(token);\n } else {\n key = parseObjectPropertyKey();\n expect(':');\n value = parseConditionalExpression();\n return finishProperty('init', key, value);\n }\n}\n\nfunction parseObjectInitialiser() {\n var properties = [],\n property, name, key, map = {},\n toString = String;\n\n index = lookahead.start;\n expect('{');\n\n while (!match('}')) {\n property = parseObjectProperty();\n\n if (property.key.type === SyntaxIdentifier) {\n name = property.key.name;\n } else {\n name = toString(property.key.value);\n }\n\n key = '$' + name;\n if (Object.prototype.hasOwnProperty.call(map, key)) {\n throwError({}, MessageStrictDuplicateProperty);\n } else {\n map[key] = true;\n }\n\n properties.push(property);\n\n if (!match('}')) {\n expect(',');\n }\n }\n\n expect('}');\n\n return finishObjectExpression(properties);\n}\n\n// 11.1.6 The Grouping Operator\n\nfunction parseGroupExpression() {\n var expr;\n\n expect('(');\n\n expr = parseExpression();\n\n expect(')');\n\n return expr;\n}\n\n\n// 11.1 Primary Expressions\n\nvar legalKeywords = {\n \"if\": 1,\n \"this\": 1\n};\n\nfunction parsePrimaryExpression() {\n var type, token, expr;\n\n if (match('(')) {\n return parseGroupExpression();\n }\n\n if (match('[')) {\n return parseArrayInitialiser();\n }\n\n if (match('{')) {\n return parseObjectInitialiser();\n }\n\n type = lookahead.type;\n index = lookahead.start;\n\n\n if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n expr = finishIdentifier(lex().value);\n } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n if (lookahead.octal) {\n throwError(lookahead, MessageStrictOctalLiteral);\n }\n expr = finishLiteral(lex());\n } else if (type === TokenKeyword) {\n throw new Error(DISABLED);\n } else if (type === TokenBooleanLiteral) {\n token = lex();\n token.value = (token.value === 'true');\n expr = finishLiteral(token);\n } else if (type === TokenNullLiteral) {\n token = lex();\n token.value = null;\n expr = finishLiteral(token);\n } else if (match('/') || match('/=')) {\n expr = finishLiteral(scanRegExp());\n peek();\n } else {\n throwUnexpected(lex());\n }\n\n return expr;\n}\n\n// 11.2 Left-Hand-Side Expressions\n\nfunction parseArguments() {\n var args = [];\n\n expect('(');\n\n if (!match(')')) {\n while (index < length) {\n args.push(parseConditionalExpression());\n if (match(')')) {\n break;\n }\n expect(',');\n }\n }\n\n expect(')');\n\n return args;\n}\n\nfunction parseNonComputedProperty() {\n var token;\n index = lookahead.start;\n token = lex();\n\n if (!isIdentifierName(token)) {\n throwUnexpected(token);\n }\n\n return finishIdentifier(token.value);\n}\n\nfunction parseNonComputedMember() {\n expect('.');\n\n return parseNonComputedProperty();\n}\n\nfunction parseComputedMember() {\n var expr;\n\n expect('[');\n\n expr = parseExpression();\n\n expect(']');\n\n return expr;\n}\n\nfunction parseLeftHandSideExpressionAllowCall() {\n var expr, args, property;\n\n expr = parsePrimaryExpression();\n\n for (;;) {\n if (match('.')) {\n property = parseNonComputedMember();\n expr = finishMemberExpression('.', expr, property);\n } else if (match('(')) {\n args = parseArguments();\n expr = finishCallExpression(expr, args);\n } else if (match('[')) {\n property = parseComputedMember();\n expr = finishMemberExpression('[', expr, property);\n } else {\n break;\n }\n }\n\n return expr;\n}\n\n// 11.3 Postfix Expressions\n\nfunction parsePostfixExpression() {\n var expr = parseLeftHandSideExpressionAllowCall();\n\n if (lookahead.type === TokenPunctuator) {\n if ((match('++') || match('--'))) {\n throw new Error(DISABLED);\n }\n }\n\n return expr;\n}\n\n// 11.4 Unary Operators\n\nfunction parseUnaryExpression() {\n var token, expr;\n\n if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n expr = parsePostfixExpression();\n } else if (match('++') || match('--')) {\n throw new Error(DISABLED);\n } else if (match('+') || match('-') || match('~') || match('!')) {\n token = lex();\n expr = parseUnaryExpression();\n expr = finishUnaryExpression(token.value, expr);\n } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n throw new Error(DISABLED);\n } else {\n expr = parsePostfixExpression();\n }\n\n return expr;\n}\n\nfunction binaryPrecedence(token) {\n var prec = 0;\n\n if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n return 0;\n }\n\n switch (token.value) {\n case '||':\n prec = 1;\n break;\n\n case '&&':\n prec = 2;\n break;\n\n case '|':\n prec = 3;\n break;\n\n case '^':\n prec = 4;\n break;\n\n case '&':\n prec = 5;\n break;\n\n case '==':\n case '!=':\n case '===':\n case '!==':\n prec = 6;\n break;\n\n case '<':\n case '>':\n case '<=':\n case '>=':\n case 'instanceof':\n case 'in':\n prec = 7;\n break;\n\n case '<<':\n case '>>':\n case '>>>':\n prec = 8;\n break;\n\n case '+':\n case '-':\n prec = 9;\n break;\n\n case '*':\n case '/':\n case '%':\n prec = 11;\n break;\n\n default:\n break;\n }\n\n return prec;\n}\n\n// 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\nfunction parseBinaryExpression() {\n var marker, markers, expr, token, prec, stack, right, operator, left, i;\n\n marker = lookahead;\n left = parseUnaryExpression();\n\n token = lookahead;\n prec = binaryPrecedence(token);\n if (prec === 0) {\n return left;\n }\n token.prec = prec;\n lex();\n\n markers = [marker, lookahead];\n right = parseUnaryExpression();\n\n stack = [left, token, right];\n\n while ((prec = binaryPrecedence(lookahead)) > 0) {\n\n // Reduce: make a binary expression from the three topmost entries.\n while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {\n right = stack.pop();\n operator = stack.pop().value;\n left = stack.pop();\n markers.pop();\n expr = finishBinaryExpression(operator, left, right);\n stack.push(expr);\n }\n\n // Shift.\n token = lex();\n token.prec = prec;\n stack.push(token);\n markers.push(lookahead);\n expr = parseUnaryExpression();\n stack.push(expr);\n }\n\n // Final reduce to clean-up the stack.\n i = stack.length - 1;\n expr = stack[i];\n markers.pop();\n while (i > 1) {\n markers.pop()\n expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n i -= 2;\n }\n\n return expr;\n}\n\n// 11.12 Conditional Operator\n\nfunction parseConditionalExpression() {\n var expr, consequent, alternate;\n\n expr = parseBinaryExpression();\n\n if (match('?')) {\n lex();\n consequent = parseConditionalExpression();\n expect(':');\n alternate = parseConditionalExpression();\n\n expr = finishConditionalExpression(expr, consequent, alternate);\n }\n\n return expr;\n}\n\n// 11.14 Comma Operator\n\nfunction parseExpression() {\n var expr = parseConditionalExpression();\n\n if (match(',')) {\n throw new Error(DISABLED); // no sequence expressions\n }\n\n return expr;\n}\n\nexport default function(code) {\n source = code;\n index = 0;\n length = source.length;\n lookahead = null;\n\n peek();\n\n var expr = parseExpression();\n\n if (lookahead.type !== TokenEOF) {\n throw new Error(\"Unexpect token after expression.\");\n }\n return expr;\n}\n","export var RawCode = 'RawCode';\nexport var Literal = 'Literal';\nexport var Property = 'Property';\nexport var Identifier = 'Identifier';\n\nexport var ArrayExpression = 'ArrayExpression';\nexport var BinaryExpression = 'BinaryExpression';\nexport var CallExpression = 'CallExpression';\nexport var ConditionalExpression = 'ConditionalExpression';\nexport var LogicalExpression = 'LogicalExpression';\nexport var MemberExpression = 'MemberExpression';\nexport var ObjectExpression = 'ObjectExpression';\nexport var UnaryExpression = 'UnaryExpression';\n\nexport default function ASTNode(type) {\n this.type = type;\n}\n\nASTNode.prototype.visit = function(visitor) {\n var node = this, c, i, n;\n\n if (visitor(node)) return 1;\n\n for (c=children(node), i=0, n=c.length; i<n; ++i) {\n if (c[i].visit(visitor)) return 1;\n }\n};\n\nfunction children(node) {\n switch (node.type) {\n case ArrayExpression:\n return node.elements;\n case BinaryExpression:\n case LogicalExpression:\n return [node.left, node.right];\n case CallExpression:\n var args = node.arguments.slice();\n args.unshift(node.callee);\n return args;\n case ConditionalExpression:\n return [node.test, node.consequent, node.alternate];\n case MemberExpression:\n return [node.object, node.property];\n case ObjectExpression:\n return node.properties;\n case Property:\n return [node.key, node.value];\n case UnaryExpression:\n return [node.argument];\n case Identifier:\n case Literal:\n case RawCode:\n default:\n return [];\n }\n}\n","export default {\n NaN: 'NaN',\n E: 'Math.E',\n LN2: 'Math.LN2',\n LN10: 'Math.LN10',\n LOG2E: 'Math.LOG2E',\n LOG10E: 'Math.LOG10E',\n PI: 'Math.PI',\n SQRT1_2: 'Math.SQRT1_2',\n SQRT2: 'Math.SQRT2',\n MIN_VALUE: 'Number.MIN_VALUE',\n MAX_VALUE: 'Number.MAX_VALUE'\n};\n","import {error} from 'vega-util';\n\nexport default function(codegen) {\n\n function fncall(name, args, cast, type) {\n var obj = codegen(args[0]);\n if (cast) {\n obj = cast + '(' + obj + ')';\n if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n }\n return obj + '.' + name + (type < 0 ? '' : type === 0 ?\n '()' :\n '(' + args.slice(1).map(codegen).join(',') + ')');\n }\n\n function fn(name, cast, type) {\n return function(args) {\n return fncall(name, args, cast, type);\n };\n }\n\n var DATE = 'new Date',\n STRING = 'String',\n REGEXP = 'RegExp';\n\n return {\n // MATH functions\n isNaN: 'isNaN',\n isFinite: 'isFinite',\n abs: 'Math.abs',\n acos: 'Math.acos',\n asin: 'Math.asin',\n atan: 'Math.atan',\n atan2: 'Math.atan2',\n ceil: 'Math.ceil',\n cos: 'Math.cos',\n exp: 'Math.exp',\n floor: 'Math.floor',\n log: 'Math.log',\n max: 'Math.max',\n min: 'Math.min',\n pow: 'Math.pow',\n random: 'Math.random',\n round: 'Math.round',\n sin: 'Math.sin',\n sqrt: 'Math.sqrt',\n tan: 'Math.tan',\n\n clamp: function(args) {\n if (args.length < 3) error('Missing arguments to clamp function.');\n if (args.length > 3) error('Too many arguments to clamp function.');\n var a = args.map(codegen);\n return 'Math.max('+a[1]+', Math.min('+a[2]+','+a[0]+'))';\n },\n\n // DATE functions\n now: 'Date.now',\n utc: 'Date.UTC',\n datetime: DATE,\n date: fn('getDate', DATE, 0),\n day: fn('getDay', DATE, 0),\n year: fn('getFullYear', DATE, 0),\n month: fn('getMonth', DATE, 0),\n hours: fn('getHours', DATE, 0),\n minutes: fn('getMinutes', DATE, 0),\n seconds: fn('getSeconds', DATE, 0),\n milliseconds: fn('getMilliseconds', DATE, 0),\n time: fn('getTime', DATE, 0),\n timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n utcdate: fn('getUTCDate', DATE, 0),\n utcday: fn('getUTCDay', DATE, 0),\n utcyear: fn('getUTCFullYear', DATE, 0),\n utcmonth: fn('getUTCMonth', DATE, 0),\n utchours: fn('getUTCHours', DATE, 0),\n utcminutes: fn('getUTCMinutes', DATE, 0),\n utcseconds: fn('getUTCSeconds', DATE, 0),\n utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n\n // sequence functions\n length: fn('length', null, -1),\n join: fn('join', null),\n indexof: fn('indexOf', null),\n lastindexof: fn('lastIndexOf', null),\n slice: fn('slice', null),\n\n reverse: function(args) {\n return '('+codegen(args[0])+').slice().reverse()';\n },\n\n // STRING functions\n parseFloat: 'parseFloat',\n parseInt: 'parseInt',\n upper: fn('toUpperCase', STRING, 0),\n lower: fn('toLowerCase', STRING, 0),\n substring: fn('substring', STRING),\n split: fn('split', STRING),\n replace: fn('replace', STRING),\n trim: fn('trim', STRING, 0),\n\n // REGEXP functions\n regexp: REGEXP,\n test: fn('test', REGEXP),\n\n // Control Flow functions\n if: function(args) {\n if (args.length < 3) error('Missing arguments to if function.');\n if (args.length > 3) error('Too many arguments to if function.');\n var a = args.map(codegen);\n return '('+a[0]+'?'+a[1]+':'+a[2]+')';\n }\n };\n}\n","export const Intersect = 'intersect';\nexport const Union = 'union';\n","import {Intersect} from './constants';\nimport {field, inrange, isArray, isDate, toNumber} from 'vega-util';\n\nvar TYPE_ENUM = 'E',\n TYPE_RANGE_INC = 'R',\n TYPE_RANGE_EXC = 'R-E',\n TYPE_RANGE_LE = 'R-LE',\n TYPE_RANGE_RE = 'R-RE',\n UNIT_INDEX = 'index:unit';\n\n// TODO: revisit date coercion?\nfunction testPoint(datum, entry) {\n var fields = entry.fields,\n values = entry.values,\n n = fields.length,\n i = 0, dval, f;\n\n for (; i<n; ++i) {\n f = fields[i];\n f.getter = field.getter || field(f.field);\n dval = f.getter(datum);\n\n if (isDate(dval)) dval = toNumber(dval);\n if (isDate(values[i])) values[i] = toNumber(values[i]);\n if (isDate(values[i][0])) values[i] = values[i].map(toNumber);\n\n if (f.type === TYPE_ENUM) {\n // Enumerated fields can either specify individual values (single/multi selections)\n // or an array of values (interval selections).\n if(isArray(values[i]) ? values[i].indexOf(dval) < 0 : dval !== values[i]) {\n return false;\n }\n } else {\n if (f.type === TYPE_RANGE_INC) {\n if (!inrange(dval, values[i])) return false;\n } else if (f.type === TYPE_RANGE_RE) {\n // Discrete selection of bins test within the range [bin_start, bin_end).\n if (!inrange(dval, values[i], true, false)) return false;\n } else if (f.type === TYPE_RANGE_EXC) { // 'R-E'/'R-LE' included for completeness.\n if (!inrange(dval, values[i], false, false)) return false;\n } else if (f.type === TYPE_RANGE_LE) {\n if (!inrange(dval, values[i], false, true)) return false;\n }\n }\n }\n\n return true;\n}\n\n/**\n * Tests if a tuple is contained within an interactive selection.\n * @param {string} name - The name of the data set representing the selection.\n * Tuples in the dataset are of the form\n * {unit: string, fields: array<fielddef>, values: array<*>}.\n * Fielddef is of the form\n * {field: string, channel: string, type: 'E' | 'R'} where\n * 'type' identifies whether tuples in the dataset enumerate\n * values for the field, or specify a continuous range.\n * @param {object} datum - The tuple to test for inclusion.\n * @param {string} op - The set operation for combining selections.\n * One of 'intersect' or 'union' (default).\n * @return {boolean} - True if the datum is in the selection, false otherwise.\n */\nexport function selectionTest(name, datum, op) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n intersect = op === Intersect,\n n = entries.length,\n i = 0,\n entry, miss, count, unit, b;\n\n for (; i<n; ++i) {\n entry = entries[i];\n\n if (unitIdx && intersect) {\n // multi selections union within the same unit and intersect across units.\n miss = miss || {};\n count = miss[unit=entry.unit] || 0;\n\n // if we've already matched this unit, skip.\n if (count === -1) continue;\n\n b = testPoint(datum, entry);\n miss[unit] = b ? -1 : ++count;\n\n // if we match and there are no other units return true\n // if we've missed against all tuples in this unit return false\n if (b && unitIdx.size === 1) return true;\n if (!b && count === unitIdx.get(unit).count) return false;\n } else {\n b = testPoint(datum, entry);\n\n // if we find a miss and we do require intersection return false\n // if we find a match and we don't require intersection return true\n if (intersect ^ b) return b;\n }\n }\n\n // if intersecting and we made it here, then we saw no misses\n // if not intersecting, then we saw no matches\n // if no active selections, return false\n return n && intersect;\n}","import {Union} from './constants';\nimport {array, toNumber} from 'vega-util';\n\n/**\n * Resolves selection for use as a scale domain or reads via the API.\n * @param {string} name - The name of the dataset representing the selection\n * @param {string} [op='union'] - The set operation for combining selections.\n * One of 'intersect' or 'union' (default).\n * @returns {object} An object of selected fields and values.\n */\nexport function selectionResolve(name, op) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n resolved = {}, types = {},\n entry, fields, values, unit, field, res, resUnit, type, union,\n n = entries.length, i = 0, j, m;\n\n // First union all entries within the same unit.\n for (; i < n; ++i) {\n entry = entries[i];\n unit = entry.unit;\n fields = entry.fields;\n values = entry.values;\n\n for (j = 0, m = fields.length; j < m; ++j) {\n field = fields[j];\n res = resolved[field.field] || (resolved[field.field] = {});\n resUnit = res[unit] || (res[unit] = []);\n types[field.field] = type = field.type.charAt(0);\n union = ops[type + '_union'];\n res[unit] = union(resUnit, array(values[j]));\n }\n }\n\n // Then resolve fields across units as per the op.\n op = op || Union;\n Object.keys(resolved).forEach(function (field) {\n resolved[field] = Object.keys(resolved[field])\n .map(function (unit) { return resolved[field][unit]; })\n .reduce(function (acc, curr) {\n return acc === undefined ? curr :\n ops[types[field] + '_' + op](acc, curr);\n });\n });\n\n return resolved;\n}\n\nvar ops = {\n E_union: function(base, value) {\n if (!base.length) return value;\n\n var i = 0, n = value.length;\n for (; i<n; ++i) if (base.indexOf(value[i]) < 0) base.push(value[i]);\n return base;\n },\n\n E_intersect: function(base, value) {\n return !base.length ? value :\n base.filter(function (v) { return value.indexOf(v) >= 0; });\n },\n\n R_union: function(base, value) {\n var lo = toNumber(value[0]), hi = toNumber(value[1]);\n if (lo > hi) {\n lo = value[1];\n hi = value[0];\n }\n\n if (!base.length) return [lo, hi];\n if (base[0] > lo) base[0] = lo;\n if (base[1] < hi) base[1] = hi;\n return base;\n },\n\n R_intersect: function(base, value) {\n var lo = toNumber(value[0]), hi = toNumber(value[1]);\n if (lo > hi) {\n lo = value[1];\n hi = value[0];\n }\n\n if (!base.length) return [lo, hi];\n if (hi < base[0] || base[1] < lo) {\n return [];\n } else {\n if (base[0] < lo) base[0] = lo;\n if (base[1] > hi) base[1] = hi;\n }\n return base;\n }\n};\n","import {Intersect} from './constants';\nimport {Literal} from 'vega-expression';\nimport {error, peek} from 'vega-util';\n\nconst DataPrefix = ':',\n IndexPrefix = '@';\n\nexport function selectionVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to selection functions must be a string literal.');\n\n const data = args[0].value,\n op = args.length >= 2 && peek(args).value,\n field = 'unit',\n indexName = IndexPrefix + field,\n dataName = DataPrefix + data;\n\n if (op === Intersect && !params.hasOwnProperty(indexName)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n\n if (!params.hasOwnProperty(dataName)) {\n params[dataName] = scope.getData(data).tuplesRef();\n }\n}","import {truthy} from 'vega-util';\n\nexport function data(name) {\n const data = this.context.data[name];\n return data ? data.values.value : [];\n}\n\nexport function indata(name, field, value) {\n const index = this.context.data[name]['index:' + field],\n entry = index ? index.value.get(value) : undefined;\n return entry ? entry.count : entry;\n}\n\nexport function setdata(name, tuples) {\n const df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input;\n\n df.pulse(input, df.changeset().remove(truthy).insert(tuples));\n return 1;\n}\n","import {\n format as d3_format\n} from 'd3-format';\n\nimport {\n timeFormat as d3_timeFormat,\n timeParse as d3_timeParse,\n utcFormat as d3_utcFormat,\n utcParse as d3_utcParse\n} from 'd3-time-format';\n\nconst formatCache = {};\n\nfunction formatter(type, method, specifier) {\n let k = type + ':' + specifier,\n e = formatCache[k];\n if (!e || e[0] !== method) {\n formatCache[k] = (e = [method, method(specifier)]);\n }\n return e[1];\n}\n\nexport function format(_, specifier) {\n return formatter('format', d3_format, specifier)(_);\n}\n\nexport function timeFormat(_, specifier) {\n return formatter('timeFormat', d3_timeFormat, specifier)(_);\n}\n\nexport function utcFormat(_, specifier) {\n return formatter('utcFormat', d3_utcFormat, specifier)(_);\n}\n\nexport function timeParse(_, specifier) {\n return formatter('timeParse', d3_timeParse, specifier)(_);\n}\n\nexport function utcParse(_, specifier) {\n return formatter('utcParse', d3_utcParse, specifier)(_);\n}\n\nvar dateObj = new Date(2000, 0, 1);\n\nfunction time(month, day, specifier) {\n dateObj.setMonth(month);\n dateObj.setDate(day);\n return timeFormat(dateObj, specifier);\n}\n\nexport function monthFormat(month) {\n return time(month, 1, '%B');\n}\n\nexport function monthAbbrevFormat(month) {\n return time(month, 1, '%b');\n}\n\nexport function dayFormat(day) {\n return time(0, 2 + day, '%A');\n}\n\nexport function dayAbbrevFormat(day) {\n return time(0, 2 + day, '%a');\n}\n","import {bandSpace} from 'vega-scale';\nimport {isArray, isFunction, isString} from 'vega-util';\n\nexport function getScale(name, ctx) {\n let s;\n return isFunction(name) ? name\n : isString(name) ? (s = ctx.scales[name]) && s.value\n : undefined;\n}\n\nexport function range(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.range ? s.range() : [];\n}\n\nexport function domain(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.domain() : [];\n}\n\nexport function bandwidth(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.bandwidth ? s.bandwidth() : 0;\n}\n\nexport function bandspace(count, paddingInner, paddingOuter) {\n return bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);\n}\n\nexport function copy(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.copy() : undefined;\n}\n\nexport function scale(name, value, group) {\n const s = getScale(name, (group || this).context);\n return s && value !== undefined ? s(value) : undefined;\n}\n\nexport function invert(name, range, group) {\n const s = getScale(name, (group || this).context);\n return !s ? undefined\n : isArray(range) ? (s.invertRange || s.invert)(range)\n : (s.invert || s.invertExtent)(range);\n}\n","import {getScale} from './scale';\nimport {\n geoArea as area,\n geoBounds as bounds,\n geoCentroid as centroid\n} from 'd3-geo';\n\nfunction geoMethod(methodName, globalMethod) {\n return function(projection, geojson, group) {\n if (projection) {\n // projection defined, use it\n const p = getScale(projection, (group || this).context);\n return p && p.path[methodName](geojson);\n } else {\n // projection undefined, use global method\n return globalMethod(geojson);\n }\n };\n}\n\nexport const geoArea = geoMethod('area', area);\nexport const geoBounds = geoMethod('bounds', bounds);\nexport const geoCentroid = geoMethod('centroid', centroid);\n","function log(df, method, args) {\n try {\n df[method].apply(df, ['EXPRESSION'].concat([].slice.call(args)));\n } catch (err) {\n df.warn(err);\n }\n return args[args.length-1];\n}\n\nexport function warn() {\n return log(this.context.dataflow, 'warn', arguments);\n}\n\nexport function info() {\n return log(this.context.dataflow, 'info', arguments);\n}\n\nexport function debug() {\n return log(this.context.dataflow, 'debug', arguments);\n}\n","import {isTuple} from 'vega-dataflow';\nimport {isArray, truthy} from 'vega-util';\n\nfunction equal(a, b) {\n return a === b || a !== a && b !== b ? true\n : isArray(a) && isArray(b) && a.length === b.length ? equalArray(a, b)\n : false;\n}\n\nfunction equalArray(a, b) {\n for (let i=0, n=a.length; i<n; ++i) {\n if (!equal(a[i], b[i])) return false;\n }\n return true;\n}\n\nfunction removePredicate(props) {\n return function(_) {\n for (let key in props) {\n if (!equal(_[key], props[key])) return false;\n }\n return true;\n };\n}\n\nexport default function(name, insert, remove, toggle, modify, values) {\n let df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input,\n changes = data.changes,\n stamp = df.stamp(),\n predicate, key;\n\n if (df._trigger === false || !(input.value.length || insert || toggle)) {\n // nothing to do!\n return 0;\n }\n\n if (!changes || changes.stamp < stamp) {\n data.changes = (changes = df.changeset());\n changes.stamp = stamp;\n df.runAfter(function() {\n data.modified = true;\n df.pulse(input, changes).run();\n }, true, 1);\n }\n\n if (remove) {\n predicate = remove === true ? truthy\n : (isArray(remove) || isTuple(remove)) ? remove\n : removePredicate(remove);\n changes.remove(predicate);\n }\n\n if (insert) {\n changes.insert(insert);\n }\n\n if (toggle) {\n predicate = removePredicate(toggle);\n if (input.value.some(predicate)) {\n changes.remove(predicate);\n } else {\n changes.insert(toggle);\n }\n }\n\n if (modify) {\n for (key in values) {\n changes.modify(modify, key, values[key]);\n }\n }\n\n return 1;\n}\n","import {data} from './data';\n\nconst EMPTY = {};\n\nfunction datum(d) { return d.data; }\n\nfunction treeNodes(name, context) {\n const tree = data.call(context, name);\n return tree.root && tree.root.lookup || EMPTY;\n}\n\nexport function treePath(name, source, target) {\n const nodes = treeNodes(name, this),\n s = nodes[source],\n t = nodes[target];\n return s && t ? s.path(t).map(datum) : undefined;\n}\n\nexport function treeAncestors(name, node) {\n const n = treeNodes(name, this)[node];\n return n ? n.ancestors().map(datum) : undefined;\n}\n","const _window = (typeof window !== 'undefined' && window) || null;\n\nexport function screen() {\n return _window ? _window.screen : {};\n}\n\nexport function windowSize() {\n return _window\n ? [_window.innerWidth, _window.innerHeight]\n : [undefined, undefined];\n}\n\nexport function containerSize() {\n const view = this.context.dataflow,\n el = view.container && view.container();\n return el\n ? [el.clientWidth, el.clientHeight]\n : [undefined, undefined];\n}\n","export const DataPrefix = ':';\nexport const IndexPrefix = '@';\nexport const ScalePrefix = '%';\nexport const SignalPrefix = '$';\n","import {DataPrefix, IndexPrefix, ScalePrefix} from './prefix';\nimport {Identifier, Literal} from 'vega-expression';\nimport {error} from 'vega-util';\n\nexport function dataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) {\n error('First argument to data functions must be a string literal.');\n }\n\n const data = args[0].value,\n dataName = DataPrefix + data;\n\n if (!params.hasOwnProperty(dataName)) {\n params[dataName] = scope.getData(data).tuplesRef();\n }\n}\n\nexport function indataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to indata must be a string literal.');\n if (args[1].type !== Literal) error('Second argument to indata must be a string literal.');\n\n const data = args[0].value,\n field = args[1].value,\n indexName = IndexPrefix + field;\n\n if (!params.hasOwnProperty(indexName)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n}\n\nexport function scaleVisitor(name, args, scope, params) {\n if (args[0].type === Literal) {\n // add scale dependency\n addScaleDependency(scope, params, args[0].value);\n }\n else if (args[0].type === Identifier) {\n // indirect scale lookup; add all scales as parameters\n for (name in scope.scales) {\n addScaleDependency(scope, params, name);\n }\n }\n}\n\nfunction addScaleDependency(scope, params, name) {\n const scaleName = ScalePrefix + name;\n if (!params.hasOwnProperty(scaleName)) {\n try {\n params[scaleName] = scope.scaleRef(name);\n } catch (err) {\n // TODO: error handling? warning?\n }\n }\n}\n","import {\n codegen,\n constants,\n functions\n} from 'vega-expression';\n\nimport {\n isTuple\n} from 'vega-dataflow';\n\nimport {\n selectionTest,\n selectionResolve,\n selectionVisitor\n} from 'vega-selections';\n\nimport {\n random\n} from 'vega-statistics';\n\nimport {\n isArray,\n isBoolean,\n isDate,\n isNumber,\n isObject,\n isRegExp,\n isString,\n panLinear,\n panLog,\n panPow,\n panSymlog,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog,\n toBoolean,\n toDate,\n toNumber,\n toString,\n clampRange,\n extent,\n flush,\n inrange,\n lerp,\n pad,\n peek,\n quarter,\n utcquarter,\n span,\n stringValue,\n truncate\n} from 'vega-util';\n\nimport {\n range as sequence\n} from 'd3-array';\n\nimport {\n rgb,\n lab,\n hcl,\n hsl\n} from 'd3-color';\n\nimport {\n data,\n indata,\n setdata\n} from './data';\n\nimport {\n default as encode\n} from './encode';\n\nimport {\n format,\n utcFormat,\n timeFormat,\n utcParse,\n timeParse,\n monthFormat,\n monthAbbrevFormat,\n dayFormat,\n dayAbbrevFormat\n} from './format';\n\nimport {\n geoArea,\n geoBounds,\n geoCentroid\n} from './geo';\n\nimport {\n default as inScope\n} from './inscope';\n\nimport {\n default as intersect\n} from './intersect';\n\nimport {\n warn,\n info,\n debug\n} from './log';\n\nimport {\n default as merge\n} from './merge';\n\nimport {\n default as modify\n} from './modify';\n\nimport {\n pinchDistance,\n pinchAngle\n} from './pinch';\n\nimport {\n range,\n domain,\n bandwidth,\n bandspace,\n copy,\n scale,\n invert\n} from './scale';\n\nimport {\n default as scaleGradient\n} from './scale-gradient';\n\nimport {\n geoShape,\n pathShape\n} from './shape';\n\nimport {\n treePath,\n treeAncestors\n} from './tree';\n\nimport {\n containerSize,\n screen,\n windowSize\n} from './window';\n\nimport {\n dataVisitor,\n indataVisitor,\n scaleVisitor\n} from './visitors';\n\nimport {SignalPrefix} from './prefix';\n\n// Expression function context object\nexport const functionContext = {\n random: function() { return random(); }, // override default\n isArray,\n isBoolean,\n isDate,\n isDefined: function(_) { return _ !== undefined; },\n isNumber,\n isObject,\n isRegExp,\n isString,\n isTuple,\n isValid: function(_) { return _ != null && _ === _; },\n toBoolean,\n toDate,\n toNumber,\n toString,\n flush,\n lerp,\n merge,\n pad,\n peek,\n span,\n inrange,\n truncate,\n rgb,\n lab,\n hcl,\n hsl,\n sequence,\n format,\n utcFormat,\n utcParse,\n timeFormat,\n timeParse,\n monthFormat,\n monthAbbrevFormat,\n dayFormat,\n dayAbbrevFormat,\n quarter,\n utcquarter,\n warn,\n info,\n debug,\n extent,\n inScope,\n intersect,\n clampRange,\n pinchDistance,\n pinchAngle,\n screen,\n containerSize,\n windowSize,\n bandspace,\n setdata,\n pathShape,\n panLinear,\n panLog,\n panPow,\n panSymlog,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog,\n encode,\n modify\n};\n\nconst eventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'], // event functions\n eventPrefix = 'event.vega.', // event function prefix\n thisPrefix = 'this.', // function context prefix\n astVisitors = {}; // AST visitors for dependency analysis\n\n// Build expression function registry\nfunction buildFunctions(codegen) {\n const fn = functions(codegen);\n eventFunctions.forEach(name => fn[name] = eventPrefix + name);\n for (let name in functionContext) { fn[name] = thisPrefix + name; }\n return fn;\n}\n\n// Register an expression function\nexport function expressionFunction(name, fn, visitor) {\n if (arguments.length === 1) {\n return functionContext[name];\n }\n\n // register with the functionContext\n functionContext[name] = fn;\n\n // if there is an astVisitor register that, too\n if (visitor) astVisitors[name] = visitor;\n\n // if the code generator has already been initialized,\n // we need to also register the function with it\n if (codeGenerator) codeGenerator.functions[name] = thisPrefix + name;\n return this;\n}\n\n// register expression functions with ast visitors\nexpressionFunction('bandwidth', bandwidth, scaleVisitor);\nexpressionFunction('copy', copy, scaleVisitor);\nexpressionFunction('domain', domain, scaleVisitor);\nexpressionFunction('range', range, scaleVisitor);\nexpressionFunction('invert', invert, scaleVisitor);\nexpressionFunction('scale', scale, scaleVisitor);\nexpressionFunction('gradient', scaleGradient, scaleVisitor);\nexpressionFunction('geoArea', geoArea, scaleVisitor);\nexpressionFunction('geoBounds', geoBounds, scaleVisitor);\nexpressionFunction('geoCentroid', geoCentroid, scaleVisitor);\nexpressionFunction('geoShape', geoShape, scaleVisitor);\nexpressionFunction('indata', indata, indataVisitor);\nexpressionFunction('data', data, dataVisitor);\nexpressionFunction('treePath', treePath, dataVisitor);\nexpressionFunction('treeAncestors', treeAncestors, dataVisitor);\n\n// register Vega-Lite selection functions\nexpressionFunction('vlSelectionTest', selectionTest, selectionVisitor);\nexpressionFunction('vlSelectionResolve', selectionResolve, selectionVisitor);\n\n// Export code generator and parameters\nexport const codegenParams = {\n blacklist: ['_'],\n whitelist: ['datum', 'event', 'item'],\n fieldvar: 'datum',\n globalvar: function(id) { return '_[' + stringValue(SignalPrefix + id) + ']'; },\n functions: buildFunctions,\n constants: constants,\n visitors: astVisitors\n};\n\nexport var codeGenerator = codegen(codegenParams);\n","import {extend} from 'vega-util';\n\nexport default function() {\n var args = [].slice.call(arguments);\n args.unshift({});\n return extend.apply(null, args);\n}\n","export default function(item) {\n let group = this.context.group,\n value = false;\n\n if (group) while (item) {\n if (item === group) { value = true; break; }\n item = item.mark.group;\n }\n return value;\n}\n","import {Bounds, intersect} from 'vega-scenegraph';\nimport {array} from 'vega-util';\n\nexport default function(b, opt, group) {\n if (!b) return [];\n\n const [u, v] = b,\n box = new Bounds().set(u[0], u[1], v[0], v[1]),\n scene = group || this.context.dataflow.scenegraph().root;\n\n return intersect(scene, box, filter(opt));\n}\n\nfunction filter(opt) {\n let p = null;\n\n if (opt) {\n const types = array(opt.marktype),\n names = array(opt.markname);\n p = _ => (!types.length || types.some(t => _.marktype === t))\n && (!names.length || names.some(s => _.name === s));\n }\n\n return p;\n}","export function pinchDistance(event) {\n const t = event.touches,\n dx = t[0].clientX - t[1].clientX,\n dy = t[0].clientY - t[1].clientY;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nexport function pinchAngle(event) {\n const t = event.touches;\n return Math.atan2(\n t[0].clientY - t[1].clientY,\n t[0].clientX - t[1].clientX\n );\n}\n","import {getScale} from './scale';\nimport {pathParse, pathRender} from 'vega-scenegraph';\n\nexport function geoShape(projection, geojson, group) {\n const p = getScale(projection, (group || this).context);\n return function(context) {\n return p ? p.path.context(context)(geojson) : '';\n }\n}\n\nexport function pathShape(path) {\n let p = null;\n return function(context) {\n return context\n ? pathRender(context, (p = p || pathParse(path)))\n : path;\n };\n}\n","export default function(item, name, retval) {\n if (item) {\n const df = this.context.dataflow,\n target = item.mark.source;\n df.pulse(target, df.changeset().encode(item, name));\n }\n return retval !== undefined ? retval : item;\n}\n","import {getScale} from './scale';\nimport {scaleFraction, scale as get} from 'vega-scale';\nimport {Gradient} from 'vega-scenegraph';\nimport {identity, peek} from 'vega-util';\n\nexport default function(scale, p0, p1, count, group) {\n scale = getScale(scale, (group || this).context);\n\n const gradient = Gradient(p0, p1);\n\n let stops = scale.domain(),\n min = stops[0],\n max = peek(stops),\n fraction = identity\n\n if (!(max - min)) {\n // expand scale if domain has zero span, fix #1479\n scale = (scale.interpolator\n ? get('sequential')().interpolator(scale.interpolator())\n : get('linear')().interpolate(scale.interpolate()).range(scale.range())\n ).domain([min=0, max=1]);\n } else {\n fraction = scaleFraction(scale, min, max);\n }\n\n if (scale.ticks) {\n stops = scale.ticks(+count || 15);\n if (min !== stops[0]) stops.unshift(min);\n if (max !== peek(stops)) stops.push(max);\n }\n\n stops.forEach(_ => gradient.stop(fraction(_), scale(_)));\n\n return gradient;\n}\n","import Constants from './constants';\nimport Functions from './functions';\nimport {error, isFunction, isString, toSet} from 'vega-util';\n\nfunction stripQuotes(s) {\n var n = s && s.length - 1;\n return n && (\n (s[0]==='\"' && s[n]==='\"') ||\n (s[0]==='\\'' && s[n]==='\\'')\n ) ? s.slice(1, -1) : s;\n}\n\nexport default function(opt) {\n opt = opt || {};\n\n var whitelist = opt.whitelist ? toSet(opt.whitelist) : {},\n blacklist = opt.blacklist ? toSet(opt.blacklist) : {},\n constants = opt.constants || Constants,\n functions = (opt.functions || Functions)(visit),\n globalvar = opt.globalvar,\n fieldvar = opt.fieldvar,\n globals = {},\n fields = {},\n memberDepth = 0;\n\n var outputGlobal = isFunction(globalvar)\n ? globalvar\n : function (id) { return globalvar + '[\"' + id + '\"]'; };\n\n function visit(ast) {\n if (isString(ast)) return ast;\n var generator = Generators[ast.type];\n if (generator == null) error('Unsupported type: ' + ast.type);\n return generator(ast);\n }\n\n var Generators = {\n Literal: function(n) {\n return n.raw;\n },\n\n Identifier: function(n) {\n var id = n.name;\n if (memberDepth > 0) {\n return id;\n } else if (blacklist.hasOwnProperty(id)) {\n return error('Illegal identifier: ' + id);\n } else if (constants.hasOwnProperty(id)) {\n return constants[id];\n } else if (whitelist.hasOwnProperty(id)) {\n return id;\n } else {\n globals[id] = 1;\n return outputGlobal(id);\n }\n },\n\n MemberExpression: function(n) {\n var d = !n.computed;\n var o = visit(n.object);\n if (d) memberDepth += 1;\n var p = visit(n.property);\n if (o === fieldvar) {\n // strip quotes to sanitize field name (#1653)\n fields[stripQuotes(p)] = 1;\n }\n if (d) memberDepth -= 1;\n return o + (d ? '.'+p : '['+p+']');\n },\n\n CallExpression: function(n) {\n if (n.callee.type !== 'Identifier') {\n error('Illegal callee type: ' + n.callee.type);\n }\n var callee = n.callee.name;\n var args = n.arguments;\n var fn = functions.hasOwnProperty(callee) && functions[callee];\n if (!fn) error('Unrecognized function: ' + callee);\n return isFunction(fn)\n ? fn(args)\n : fn + '(' + args.map(visit).join(',') + ')';\n },\n\n ArrayExpression: function(n) {\n return '[' + n.elements.map(visit).join(',') + ']';\n },\n\n BinaryExpression: function(n) {\n return '(' + visit(n.left) + n.operator + visit(n.right) + ')';\n },\n\n UnaryExpression: function(n) {\n return '(' + n.operator + visit(n.argument) + ')';\n },\n\n ConditionalExpression: function(n) {\n return '(' + visit(n.test) +\n '?' + visit(n.consequent) +\n ':' + visit(n.alternate) +\n ')';\n },\n\n LogicalExpression: function(n) {\n return '(' + visit(n.left) + n.operator + visit(n.right) + ')';\n },\n\n ObjectExpression: function(n) {\n return '{' + n.properties.map(visit).join(',') + '}';\n },\n\n Property: function(n) {\n memberDepth += 1;\n var k = visit(n.key);\n memberDepth -= 1;\n return k + ':' + visit(n.value);\n }\n };\n\n function codegen(ast) {\n var result = {\n code: visit(ast),\n globals: Object.keys(globals),\n fields: Object.keys(fields)\n };\n globals = {};\n fields = {};\n return result;\n }\n\n codegen.functions = functions;\n codegen.constants = constants;\n\n return codegen;\n}\n","/**\n * Parse an expression given the argument signature and body code.\n */\nexport default function expression(args, code, ctx) {\n // wrap code in return statement if expression does not terminate\n if (code[code.length-1] !== ';') {\n code = 'return(' + code + ');';\n }\n var fn = Function.apply(null, args.concat(code));\n return ctx && ctx.functions ? fn.bind(ctx.functions) : fn;\n}\n\n/**\n * Parse an expression used to update an operator value.\n */\nexport function operatorExpression(code, ctx) {\n return expression(['_'], code, ctx);\n}\n\n/**\n * Parse an expression provided as an operator parameter value.\n */\nexport function parameterExpression(code, ctx) {\n return expression(['datum', '_'], code, ctx);\n}\n\n/**\n * Parse an expression applied to an event stream.\n */\nexport function eventExpression(code, ctx) {\n return expression(['event'], code, ctx);\n}\n\n/**\n * Parse an expression used to handle an event-driven operator update.\n */\nexport function handlerExpression(code, ctx) {\n return expression(['_', 'event'], code, ctx);\n}\n\n/**\n * Parse an expression that performs visual encoding.\n */\nexport function encodeExpression(code, ctx) {\n return expression(['item', '_'], code, ctx);\n}\n","import parseDataflow from './dataflow';\nimport {parameterExpression, encodeExpression} from './expression';\nimport {tupleid} from 'vega-dataflow';\nimport {accessor, array, compare, error, field, isArray, isObject, key} from 'vega-util';\n\n/**\n * Parse a set of operator parameters.\n */\nexport default function parseParameters(spec, ctx, params) {\n params = params || {};\n var key, value;\n\n for (key in spec) {\n value = spec[key];\n\n params[key] = isArray(value)\n ? value.map(function(v) { return parseParameter(v, ctx, params); })\n : parseParameter(value, ctx, params);\n }\n return params;\n}\n\n/**\n * Parse a single parameter.\n */\nfunction parseParameter(spec, ctx, params) {\n if (!spec || !isObject(spec)) return spec;\n\n for (var i=0, n=PARSERS.length, p; i<n; ++i) {\n p = PARSERS[i];\n if (spec.hasOwnProperty(p.key)) {\n return p.parse(spec, ctx, params);\n }\n }\n return spec;\n}\n\n/** Reference parsers. */\nvar PARSERS = [\n {key: '$ref', parse: getOperator},\n {key: '$key', parse: getKey},\n {key: '$expr', parse: getExpression},\n {key: '$field', parse: getField},\n {key: '$encode', parse: getEncode},\n {key: '$compare', parse: getCompare},\n {key: '$context', parse: getContext},\n {key: '$subflow', parse: getSubflow},\n {key: '$tupleid', parse: getTupleId}\n];\n\n/**\n * Resolve an operator reference.\n */\nfunction getOperator(_, ctx) {\n return ctx.get(_.$ref) || error('Operator not defined: ' + _.$ref);\n}\n\n/**\n * Resolve an expression reference.\n */\nfunction getExpression(_, ctx, params) {\n if (_.$params) { // parse expression parameters\n parseParameters(_.$params, ctx, params);\n }\n var k = 'e:' + _.$expr + '_' + _.$name;\n return ctx.fn[k]\n || (ctx.fn[k] = accessor(parameterExpression(_.$expr, ctx), _.$fields, _.$name));\n}\n\n/**\n * Resolve a key accessor reference.\n */\nfunction getKey(_, ctx) {\n var k = 'k:' + _.$key + '_' + (!!_.$flat);\n return ctx.fn[k] || (ctx.fn[k] = key(_.$key, _.$flat));\n}\n\n/**\n * Resolve a field accessor reference.\n */\nfunction getField(_, ctx) {\n if (!_.$field) return null;\n var k = 'f:' + _.$field + '_' + _.$name;\n return ctx.fn[k] || (ctx.fn[k] = field(_.$field, _.$name));\n}\n\n/**\n * Resolve a comparator function reference.\n */\nfunction getCompare(_, ctx) {\n var k = 'c:' + _.$compare + '_' + _.$order,\n c = array(_.$compare).map(function(_) {\n return (_ && _.$tupleid) ? tupleid : _;\n });\n return ctx.fn[k] || (ctx.fn[k] = compare(c, _.$order));\n}\n\n/**\n * Resolve an encode operator reference.\n */\nfunction getEncode(_, ctx) {\n var spec = _.$encode,\n encode = {}, name, enc;\n\n for (name in spec) {\n enc = spec[name];\n encode[name] = accessor(encodeExpression(enc.$expr, ctx), enc.$fields);\n encode[name].output = enc.$output;\n }\n return encode;\n}\n\n/**\n * Resolve a context reference.\n */\nfunction getContext(_, ctx) {\n return ctx;\n}\n\n/**\n * Resolve a recursive subflow specification.\n */\nfunction getSubflow(_, ctx) {\n var spec = _.$subflow;\n return function(dataflow, key, parent) {\n var subctx = parseDataflow(spec, ctx.fork()),\n op = subctx.get(spec.operators[0].id),\n p = subctx.signals.parent;\n if (p) p.set(parent);\n return op;\n };\n}\n\n/**\n * Resolve a tuple id reference.\n */\nfunction getTupleId() {\n return tupleid;\n}\n","export function canonicalType(type) {\n return (type + '').toLowerCase();\n}\nexport function isOperator(type) {\n return canonicalType(type) === 'operator';\n}\n\nexport function isCollect(type) {\n return canonicalType(type) === 'collect';\n}\n","import {operatorExpression} from './expression';\nimport parseParameters from './parameters';\nimport {isOperator} from './util';\nimport {error} from 'vega-util';\n\n/**\n * Parse a dataflow operator.\n */\nexport default function(spec, ctx) {\n if (isOperator(spec.type) || !spec.type) {\n ctx.operator(spec,\n spec.update ? operatorExpression(spec.update, ctx) : null);\n } else {\n ctx.transform(spec, spec.type);\n }\n}\n\n/**\n * Parse and assign operator parameters.\n */\nexport function parseOperatorParameters(spec, ctx) {\n if (spec.params) {\n var op = ctx.get(spec.id);\n if (!op) error('Invalid operator id: ' + spec.id);\n ctx.dataflow.connect(op, op.parameters(\n parseParameters(spec.params, ctx),\n spec.react,\n spec.initonly\n ));\n }\n}\n","import {eventExpression} from './expression';\nimport {error} from 'vega-util';\n\n/**\n * Parse an event stream specification.\n */\nexport default function(spec, ctx) {\n var filter = spec.filter != null ? eventExpression(spec.filter, ctx) : undefined,\n stream = spec.stream != null ? ctx.get(spec.stream) : undefined,\n args;\n\n if (spec.source) {\n stream = ctx.events(spec.source, spec.type, filter);\n }\n else if (spec.merge) {\n args = spec.merge.map(ctx.get.bind(ctx));\n stream = args[0].merge.apply(args[0], args.slice(1));\n }\n\n if (spec.between) {\n args = spec.between.map(ctx.get.bind(ctx));\n stream = stream.between(args[0], args[1]);\n }\n\n if (spec.filter) {\n stream = stream.filter(filter);\n }\n\n if (spec.throttle != null) {\n stream = stream.throttle(+spec.throttle);\n }\n\n if (spec.debounce != null) {\n stream = stream.debounce(+spec.debounce);\n }\n\n if (stream == null) {\n error('Invalid stream definition: ' + JSON.stringify(spec));\n }\n\n if (spec.consume) stream.consume(true);\n\n ctx.stream(spec, stream);\n}\n","import {eventExpression, handlerExpression} from './expression';\nimport parseParameters from './parameters';\nimport {error, isObject} from 'vega-util';\n\n/**\n * Parse an event-driven operator update.\n */\nexport default function(spec, ctx) {\n var srcid = isObject(srcid = spec.source) ? srcid.$ref : srcid,\n source = ctx.get(srcid),\n target = null,\n update = spec.update,\n params = undefined;\n\n if (!source) error('Source not defined: ' + spec.source);\n\n if (spec.target && spec.target.$expr) {\n target = eventExpression(spec.target.$expr, ctx);\n } else {\n target = ctx.get(spec.target);\n }\n\n if (update && update.$expr) {\n if (update.$params) {\n params = parseParameters(update.$params, ctx);\n }\n update = handlerExpression(update.$expr, ctx);\n }\n\n ctx.update(spec, source, target, update, params);\n}\n","import {default as parseOperator, parseOperatorParameters} from './operator';\nimport parseStream from './stream';\nimport parseUpdate from './update';\n\n/**\n * Parse a serialized dataflow specification.\n */\nexport default function(spec, ctx) {\n var operators = spec.operators || [];\n\n // parse background\n if (spec.background) {\n ctx.background = spec.background;\n }\n\n // parse event configuration\n if (spec.eventConfig) {\n ctx.eventConfig = spec.eventConfig;\n }\n\n // parse operators\n operators.forEach(function(entry) {\n parseOperator(entry, ctx);\n });\n\n // parse operator parameters\n operators.forEach(function(entry) {\n parseOperatorParameters(entry, ctx);\n });\n\n // parse streams\n (spec.streams || []).forEach(function(entry) {\n parseStream(entry, ctx);\n });\n\n // parse updates\n (spec.updates || []).forEach(function(entry) {\n parseUpdate(entry, ctx);\n });\n\n return ctx.resolve();\n}\n","import {truthy} from 'vega-util';\n\nvar SKIP = {skip: true};\n\nexport function getState(options) {\n var ctx = this,\n state = {};\n\n if (options.signals) {\n var signals = (state.signals = {});\n Object.keys(ctx.signals).forEach(function(key) {\n var op = ctx.signals[key];\n if (options.signals(key, op)) {\n signals[key] = op.value;\n }\n });\n }\n\n if (options.data) {\n var data = (state.data = {});\n Object.keys(ctx.data).forEach(function(key) {\n var dataset = ctx.data[key];\n if (options.data(key, dataset)) {\n data[key] = dataset.input.value;\n }\n });\n }\n\n if (ctx.subcontext && options.recurse !== false) {\n state.subcontext = ctx.subcontext.map(function(ctx) {\n return ctx.getState(options);\n });\n }\n\n return state;\n}\n\nexport function setState(state) {\n var ctx = this,\n df = ctx.dataflow,\n data = state.data,\n signals = state.signals;\n\n Object.keys(signals || {}).forEach(function(key) {\n df.update(ctx.signals[key], signals[key], SKIP);\n });\n\n Object.keys(data || {}).forEach(function(key) {\n df.pulse(\n ctx.data[key].input,\n df.changeset().remove(truthy).insert(data[key])\n );\n });\n\n (state.subcontext || []).forEach(function(substate, i) {\n var subctx = ctx.subcontext[i];\n if (subctx) subctx.setState(substate);\n });\n}\n","import {getState, setState} from './state';\nimport {canonicalType, isCollect} from './util';\n\n/**\n * Context objects store the current parse state.\n * Enables lookup of parsed operators, event streams, accessors, etc.\n * Provides a 'fork' method for creating child contexts for subflows.\n */\nexport default function(df, transforms, functions) {\n return new Context(df, transforms, functions);\n}\n\nfunction Context(df, transforms, functions) {\n this.dataflow = df;\n this.transforms = transforms;\n this.events = df.events.bind(df);\n this.signals = {};\n this.scales = {};\n this.nodes = {};\n this.data = {};\n this.fn = {};\n if (functions) {\n this.functions = Object.create(functions);\n this.functions.context = this;\n }\n}\n\nfunction ContextFork(ctx) {\n this.dataflow = ctx.dataflow;\n this.transforms = ctx.transforms;\n this.functions = ctx.functions;\n this.events = ctx.events;\n this.signals = Object.create(ctx.signals);\n this.scales = Object.create(ctx.scales);\n this.nodes = Object.create(ctx.nodes);\n this.data = Object.create(ctx.data);\n this.fn = Object.create(ctx.fn);\n if (ctx.functions) {\n this.functions = Object.create(ctx.functions);\n this.functions.context = this;\n }\n}\n\nContext.prototype = ContextFork.prototype = {\n fork: function() {\n var ctx = new ContextFork(this);\n (this.subcontext || (this.subcontext = [])).push(ctx);\n return ctx;\n },\n get: function(id) {\n return this.nodes[id];\n },\n set: function(id, node) {\n return this.nodes[id] = node;\n },\n add: function(spec, op) {\n var ctx = this,\n df = ctx.dataflow,\n data;\n\n ctx.set(spec.id, op);\n\n if (isCollect(spec.type) && (data = spec.value)) {\n if (data.$ingest) {\n df.ingest(op, data.$ingest, data.$format);\n } else if (data.$request) {\n df.preload(op, data.$request, data.$format);\n } else {\n df.pulse(op, df.changeset().insert(data));\n }\n }\n\n if (spec.root) {\n ctx.root = op;\n }\n\n if (spec.parent) {\n var p = ctx.get(spec.parent.$ref);\n if (p) {\n df.connect(p, [op]);\n op.targets().add(p);\n } else {\n (ctx.unresolved = ctx.unresolved || []).push(function() {\n p = ctx.get(spec.parent.$ref);\n df.connect(p, [op]);\n op.targets().add(p);\n });\n }\n }\n\n if (spec.signal) {\n ctx.signals[spec.signal] = op;\n }\n\n if (spec.scale) {\n ctx.scales[spec.scale] = op;\n }\n\n if (spec.data) {\n for (var name in spec.data) {\n data = ctx.data[name] || (ctx.data[name] = {});\n spec.data[name].forEach(function(role) { data[role] = op; });\n }\n }\n },\n resolve: function() {\n (this.unresolved || []).forEach(function(fn) { fn(); });\n delete this.unresolved;\n return this;\n },\n operator: function(spec, update) {\n this.add(spec, this.dataflow.add(spec.value, update));\n },\n transform: function(spec, type) {\n this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)]));\n },\n stream: function(spec, stream) {\n this.set(spec.id, stream);\n },\n update: function(spec, stream, target, update, params) {\n this.dataflow.on(stream, target, update, params, spec.options);\n },\n getState: getState,\n setState: setState\n};\n","import {transforms} from 'vega-dataflow';\nimport {functionContext} from 'vega-functions';\nimport {parse, context} from 'vega-runtime';\n\nexport default function(view, spec, functions) {\n var fn = functions || functionContext;\n return parse(spec, context(view, transforms, fn));\n}\n","var Width = 'width',\n Height = 'height',\n Padding = 'padding',\n Skip = {skip: true};\n\nexport function viewWidth(view, width) {\n var a = view.autosize(),\n p = view.padding();\n return width - (a && a.contains === Padding ? p.left + p.right : 0);\n}\n\nexport function viewHeight(view, height) {\n var a = view.autosize(),\n p = view.padding();\n return height - (a && a.contains === Padding ? p.top + p.bottom : 0);\n}\n\nexport function initializeResize(view) {\n var s = view._signals,\n w = s[Width],\n h = s[Height],\n p = s[Padding];\n\n function resetSize() {\n view._autosize = view._resize = 1;\n }\n\n // respond to width signal\n view._resizeWidth = view.add(null,\n function(_) {\n view._width = _.size;\n view._viewWidth = viewWidth(view, _.size);\n resetSize();\n },\n {size: w}\n );\n\n // respond to height signal\n view._resizeHeight = view.add(null,\n function(_) {\n view._height = _.size;\n view._viewHeight = viewHeight(view, _.size);\n resetSize();\n },\n {size: h}\n );\n\n // respond to padding signal\n var resizePadding = view.add(null, resetSize, {pad: p});\n\n // set rank to run immediately after source signal\n view._resizeWidth.rank = w.rank + 1;\n view._resizeHeight.rank = h.rank + 1;\n resizePadding.rank = p.rank + 1;\n}\n\nexport function resizeView(viewWidth, viewHeight, width, height, origin, auto) {\n this.runAfter(function(view) {\n var rerun = 0;\n\n // reset autosize flag\n view._autosize = 0;\n\n // width value changed: update signal, skip resize op\n if (view.width() !== width) {\n rerun = 1;\n view.signal(Width, width, Skip); // set width, skip update calc\n view._resizeWidth.skip(true); // skip width resize handler\n }\n\n // height value changed: update signal, skip resize op\n if (view.height() !== height) {\n rerun = 1;\n view.signal(Height, height, Skip); // set height, skip update calc\n view._resizeHeight.skip(true); // skip height resize handler\n }\n\n // view width changed: update view property, set resize flag\n if (view._viewWidth !== viewWidth) {\n view._resize = 1;\n view._viewWidth = viewWidth;\n }\n\n // view height changed: update view property, set resize flag\n if (view._viewHeight !== viewHeight) {\n view._resize = 1;\n view._viewHeight = viewHeight;\n }\n\n // origin changed: update view property, set resize flag\n if (view._origin[0] !== origin[0] || view._origin[1] !== origin[1]) {\n view._resize = 1;\n view._origin = origin;\n }\n\n // run dataflow on width/height signal change\n if (rerun) view.run('enter');\n if (auto) view.runAfter(v => v.resize());\n }, false, 1);\n}\n","import {transforms} from 'vega-dataflow';\nimport {isArray} from 'vega-util';\n\n/**\n * Get the current view state, consisting of signal values and/or data sets.\n * @param {object} [options] - Options flags indicating which state to export.\n * If unspecified, all signals and data sets will be exported.\n * @param {function(string, Operator):boolean} [options.signals] - Optional\n * predicate function for testing if a signal should be included in the\n * exported state. If unspecified, all signals will be included, except for\n * those named 'parent' or those which refer to a Transform value.\n * @param {function(string, object):boolean} [options.data] - Optional\n * predicate function for testing if a data set's input should be included\n * in the exported state. If unspecified, all data sets that have been\n * explicitly modified will be included.\n * @param {boolean} [options.recurse=true] - Flag indicating if the exported\n * state should recursively include state from group mark sub-contexts.\n * @return {object} - An object containing the exported state values.\n */\nexport function getState(options) {\n return this._runtime.getState(options || {\n data: dataTest,\n signals: signalTest,\n recurse: true\n });\n}\n\nfunction dataTest(name, data) {\n return data.modified\n && isArray(data.input.value)\n && name.indexOf('_:vega:_');\n}\n\nfunction signalTest(name, op) {\n return !(name === 'parent' || op instanceof transforms.proxy);\n}\n\n/**\n * Sets the current view state and updates the view by invoking run.\n * @param {object} state - A state object containing signal and/or\n * data set values, following the format used by the getState method.\n * @return {View} - This view instance.\n */\nexport function setState(state) {\n this.runAsync(null,\n v => { v._trigger = false; v._runtime.setState(state); },\n v => { v._trigger = true; }\n );\n return this;\n}\n","import {interval} from 'd3-timer';\n\nexport default function(callback, delay) {\n function tick(elapsed) {\n callback({timestamp: Date.now(), elapsed: elapsed});\n }\n this._timers.push(interval(tick, delay));\n}\n","import {isArray, isDate, isObject} from 'vega-util';\n\nexport default function(handler, event, item, value) {\n var el = handler.element();\n if (el) el.setAttribute('title', formatTooltip(value));\n}\n\nfunction formatTooltip(value) {\n return value == null ? ''\n : isArray(value) ? formatArray(value)\n : isObject(value) && !isDate(value) ? formatObject(value)\n : value + '';\n}\n\nfunction formatObject(obj) {\n return Object.keys(obj).map(function(key) {\n var v = obj[key];\n return key + ': ' + (isArray(v) ? formatArray(v) : formatValue(v));\n }).join('\\n');\n}\n\nfunction formatArray(value) {\n return '[' + value.map(formatValue).join(', ') + ']';\n}\n\nfunction formatValue(value) {\n return isArray(value) ? '[\\u2026]'\n : isObject(value) && !isDate(value) ? '{\\u2026}'\n : value;\n}\n","import cursor from './cursor';\nimport {data, dataref, change, insert, remove} from './data';\nimport {initializeEventConfig, events} from './events';\nimport hover from './hover';\nimport finalize from './finalize';\nimport initialize from './initialize';\nimport renderToImageURL from './render-to-image-url';\nimport renderToCanvas from './render-to-canvas';\nimport renderToSVG from './render-to-svg';\nimport {resizeRenderer} from './render-size';\nimport runtime from './runtime';\nimport {scale} from './scale';\nimport {resizeView, initializeResize, viewWidth, viewHeight} from './size';\nimport {getState, setState} from './state';\nimport timer from './timer';\nimport defaultTooltip from './tooltip';\nimport trap from './trap';\n\nimport {asyncCallback, Dataflow} from 'vega-dataflow';\nimport {error, extend, inherits, stringValue} from 'vega-util';\nimport {\n CanvasHandler, Scenegraph,\n renderModule, RenderType\n} from 'vega-scenegraph';\n\n/**\n * Create a new View instance from a Vega dataflow runtime specification.\n * The generated View will not immediately be ready for display. Callers\n * should also invoke the initialize method (e.g., to set the parent\n * DOM element in browser-based deployment) and then invoke the run\n * method to evaluate the dataflow graph. Rendering will automatically\n * be peformed upon dataflow runs.\n * @constructor\n * @param {object} spec - The Vega dataflow runtime specification.\n */\nexport default function View(spec, options) {\n var view = this;\n options = options || {};\n\n Dataflow.call(view);\n if (options.loader) view.loader(options.loader);\n if (options.logger) view.logger(options.logger);\n if (options.logLevel != null) view.logLevel(options.logLevel);\n\n view._el = null;\n view._elBind = null;\n view._renderType = options.renderer || RenderType.Canvas;\n view._scenegraph = new Scenegraph();\n var root = view._scenegraph.root;\n\n // initialize renderer, handler and event management\n view._renderer = null;\n view._tooltip = options.tooltip || defaultTooltip,\n view._redraw = true;\n view._handler = new CanvasHandler().scene(root);\n view._preventDefault = false;\n view._timers = [];\n view._eventListeners = [];\n view._resizeListeners = [];\n\n // initialize dataflow graph\n var ctx = runtime(view, spec, options.functions);\n view._runtime = ctx;\n view._signals = ctx.signals;\n view._bind = (spec.bindings || []).map(function(_) {\n return {\n state: null,\n param: extend({}, _)\n };\n });\n\n // initialize scenegraph\n if (ctx.root) ctx.root.set(root);\n root.source = ctx.data.root.input;\n view.pulse(\n ctx.data.root.input,\n view.changeset().insert(root.items)\n );\n\n // initialize background color\n view._background = options.background || ctx.background || null;\n\n // initialize event configuration\n view._eventConfig = initializeEventConfig(ctx.eventConfig);\n\n // initialize view size\n view._width = view.width();\n view._height = view.height();\n view._viewWidth = viewWidth(view, view._width);\n view._viewHeight = viewHeight(view, view._height);\n view._origin = [0, 0];\n view._resize = 0;\n view._autosize = 1;\n initializeResize(view);\n\n // initialize cursor\n cursor(view);\n\n // initialize hover proessing, if requested\n if (options.hover) view.hover();\n\n // initialize DOM container(s) and renderer\n if (options.container) view.initialize(options.container, options.bind);\n}\n\nvar prototype = inherits(View, Dataflow);\n\n// -- DATAFLOW / RENDERING ----\n\nprototype.evaluate = async function(encode, prerun, postrun) {\n // evaluate dataflow and prerun\n await Dataflow.prototype.evaluate.call(this, encode, prerun);\n\n // render as needed\n if (this._redraw || this._resize) {\n try {\n if (this._renderer) {\n if (this._resize) {\n this._resize = 0;\n resizeRenderer(this);\n }\n await this._renderer.renderAsync(this._scenegraph.root);\n }\n this._redraw = false;\n } catch (e) {\n this.error(e);\n }\n }\n\n // evaluate postrun\n if (postrun) asyncCallback(this, postrun);\n\n return this;\n};\n\nprototype.dirty = function(item) {\n this._redraw = true;\n this._renderer && this._renderer.dirty(item);\n};\n\n// -- GET / SET ----\n\nprototype.container = function() {\n return this._el;\n};\n\nprototype.scenegraph = function() {\n return this._scenegraph;\n};\n\nprototype.origin = function() {\n return this._origin.slice();\n};\n\nfunction lookupSignal(view, name) {\n return view._signals.hasOwnProperty(name)\n ? view._signals[name]\n : error('Unrecognized signal name: ' + stringValue(name));\n}\n\nprototype.signal = function(name, value, options) {\n var op = lookupSignal(this, name);\n return arguments.length === 1\n ? op.value\n : this.update(op, value, options);\n};\n\nprototype.background = function(_) {\n if (arguments.length) {\n this._background = _;\n this._resize = 1;\n return this;\n } else {\n return this._background;\n }\n};\n\nprototype.width = function(_) {\n return arguments.length ? this.signal('width', _) : this.signal('width');\n};\n\nprototype.height = function(_) {\n return arguments.length ? this.signal('height', _) : this.signal('height');\n};\n\nprototype.padding = function(_) {\n return arguments.length ? this.signal('padding', _) : this.signal('padding');\n};\n\nprototype.autosize = function(_) {\n return arguments.length ? this.signal('autosize', _) : this.signal('autosize');\n};\n\nprototype.renderer = function(type) {\n if (!arguments.length) return this._renderType;\n if (!renderModule(type)) error('Unrecognized renderer type: ' + type);\n if (type !== this._renderType) {\n this._renderType = type;\n this._resetRenderer();\n }\n return this;\n};\n\nprototype.tooltip = function(handler) {\n if (!arguments.length) return this._tooltip;\n if (handler !== this._tooltip) {\n this._tooltip = handler;\n this._resetRenderer();\n }\n return this;\n};\n\nprototype.loader = function(loader) {\n if (!arguments.length) return this._loader;\n if (loader !== this._loader) {\n Dataflow.prototype.loader.call(this, loader);\n this._resetRenderer();\n }\n return this;\n};\n\nprototype.resize = function() {\n // set flag to perform autosize\n this._autosize = 1;\n // touch autosize signal to ensure top-level ViewLayout runs\n return this.touch(lookupSignal(this, 'autosize'));\n};\n\nprototype._resetRenderer = function() {\n if (this._renderer) {\n this._renderer = null;\n this.initialize(this._el, this._elBind);\n }\n};\n\n// -- SIZING ----\nprototype._resizeView = resizeView;\n\n// -- EVENT HANDLING ----\n\nprototype.addEventListener = function(type, handler, options) {\n var callback = handler;\n if (!(options && options.trap === false)) {\n // wrap callback in error handler\n callback = trap(this, handler);\n callback.raw = handler;\n }\n this._handler.on(type, callback);\n return this;\n};\n\nprototype.removeEventListener = function(type, handler) {\n var handlers = this._handler.handlers(type),\n i = handlers.length, h, t;\n\n // search registered handlers, remove if match found\n while (--i >= 0) {\n t = handlers[i].type;\n h = handlers[i].handler;\n if (type === t && (handler === h || handler === h.raw)) {\n this._handler.off(t, h);\n break;\n }\n }\n return this;\n};\n\nprototype.addResizeListener = function(handler) {\n var l = this._resizeListeners;\n if (l.indexOf(handler) < 0) {\n // add handler if it isn't already registered\n // note: error trapping handled elsewhere, so\n // no need to wrap handlers here\n l.push(handler);\n }\n return this;\n};\n\nprototype.removeResizeListener = function(handler) {\n var l = this._resizeListeners,\n i = l.indexOf(handler);\n if (i >= 0) {\n l.splice(i, 1);\n }\n return this;\n};\n\nfunction findOperatorHandler(op, handler) {\n var t = op._targets || [],\n h = t.filter(function(op) {\n var u = op._update;\n return u && u.handler === handler;\n });\n return h.length ? h[0] : null;\n}\n\nfunction addOperatorListener(view, name, op, handler) {\n var h = findOperatorHandler(op, handler);\n if (!h) {\n h = trap(this, function() { handler(name, op.value); });\n h.handler = handler;\n view.on(op, null, h);\n }\n return view;\n}\n\nfunction removeOperatorListener(view, op, handler) {\n var h = findOperatorHandler(op, handler);\n if (h) op._targets.remove(h);\n return view;\n}\n\nprototype.addSignalListener = function(name, handler) {\n return addOperatorListener(this, name, lookupSignal(this, name), handler);\n};\n\nprototype.removeSignalListener = function(name, handler) {\n return removeOperatorListener(this, lookupSignal(this, name), handler);\n};\n\nprototype.addDataListener = function(name, handler) {\n return addOperatorListener(this, name, dataref(this, name).values, handler);\n};\n\nprototype.removeDataListener = function(name, handler) {\n return removeOperatorListener(this, dataref(this, name).values, handler);\n};\n\nprototype.preventDefault = function(_) {\n if (arguments.length) {\n this._preventDefault = _;\n return this;\n } else {\n return this._preventDefault;\n }\n};\n\nprototype.timer = timer;\nprototype.events = events;\nprototype.finalize = finalize;\nprototype.hover = hover;\n\n// -- DATA ----\nprototype.data = data;\nprototype.change = change;\nprototype.insert = insert;\nprototype.remove = remove;\n\n// -- SCALES --\nprototype.scale = scale;\n\n// -- INITIALIZATION ----\nprototype.initialize = initialize;\n\n// -- HEADLESS RENDERING ----\nprototype.toImageURL = renderToImageURL;\nprototype.toCanvas = renderToCanvas;\nprototype.toSVG = renderToSVG;\n\n// -- SAVE / RESTORE STATE ----\nprototype.getState = getState;\nprototype.setState = setState;\n","import {Timer, now} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","/**\n * Finalize a View instance that is being removed.\n * Cancel any running timers.\n * Remove all external event listeners.\n * Remove any currently displayed tooltip.\n */\nexport default function() {\n var tooltip = this._tooltip,\n timers = this._timers,\n listeners = this._eventListeners,\n n, m, e;\n\n n = timers.length;\n while (--n >= 0) {\n timers[n].stop();\n }\n\n n = listeners.length;\n while (--n >= 0) {\n e = listeners[n];\n m = e.sources.length;\n while (--m >= 0) {\n e.sources[m].removeEventListener(e.type, e.handler);\n }\n }\n\n if (tooltip) {\n tooltip.call(this, this._handler, null, null, null);\n }\n\n return this;\n}\n","import {error} from 'vega-util';\n\nexport function scale(name) {\n var scales = this._runtime.scales;\n if (!scales.hasOwnProperty(name)) {\n error('Unrecognized scale or projection: ' + name);\n }\n return scales[name].value;\n}\n","import {offset} from './render-size';\nimport trap from './trap';\n\nexport default function(view, prevHandler, el, constructor) {\n // instantiate scenegraph handler\n var handler = new constructor(view.loader(), trap(view, view.tooltip()))\n .scene(view.scenegraph().root)\n .initialize(el, offset(view), view);\n\n // transfer event handlers\n if (prevHandler) {\n prevHandler.handlers().forEach(function(h) {\n handler.on(h.type, h.handler);\n });\n }\n\n return handler;\n}\n","import renderHeadless from './render-headless';\nimport {RenderType as Type} from 'vega-scenegraph';\nimport {error} from 'vega-util';\n\n/**\n * Produce an image URL for the visualization. Depending on the type\n * parameter, the generated URL contains data for either a PNG or SVG image.\n * The URL can be used (for example) to download images of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @param {string} type - The image type. One of 'svg', 'png' or 'canvas'.\n * The 'canvas' and 'png' types are synonyms for a PNG image.\n * @return {Promise} - A promise that resolves to an image URL.\n */\nexport default async function(type, scaleFactor) {\n if (type !== Type.Canvas && type !== Type.SVG && type !== Type.PNG) {\n error('Unrecognized image type: ' + type);\n }\n\n const r = await renderHeadless(this, type, scaleFactor);\n return type === Type.SVG\n ? toBlobURL(r.svg(), 'image/svg+xml')\n : r.canvas().toDataURL('image/png');\n}\n\nfunction toBlobURL(data, mime) {\n var blob = new Blob([data], {type: mime});\n return window.URL.createObjectURL(blob);\n}\n","import renderHeadless from './render-headless';\nimport {RenderType} from 'vega-scenegraph';\n\n/**\n * Produce a rendered SVG string of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to an SVG string.\n */\nexport default async function(scaleFactor) {\n const r = await renderHeadless(this, RenderType.SVG, scaleFactor);\n return r.svg();\n}\n","import {isObject} from 'vega-util';\n\nexport default function(spec, config) {\n spec = spec || config.autosize;\n return isObject(spec)\n ? spec\n : {type: spec || 'pad'};\n}\n","import {isObject} from 'vega-util';\n\nexport default function(spec, config) {\n spec = spec || config.padding;\n return isObject(spec)\n ? {\n top: number(spec.top),\n bottom: number(spec.bottom),\n left: number(spec.left),\n right: number(spec.right)\n }\n : paddingObject(number(spec));\n}\n\nfunction number(_) {\n return +_ || 0;\n}\n\nfunction paddingObject(_) {\n return {top: _, bottom: _, left: _, right: _};\n}\n","import {error, stringValue} from 'vega-util';\n\nvar OUTER = 'outer',\n OUTER_INVALID = ['value', 'update', 'init', 'react', 'bind'];\n\nfunction outerError(prefix, name) {\n error(prefix + ' for \"outer\" push: ' + stringValue(name));\n}\n\nexport default function(signal, scope) {\n var name = signal.name;\n\n if (signal.push === OUTER) {\n // signal must already be defined, raise error if not\n if (!scope.signals[name]) outerError('No prior signal definition', name);\n // signal push must not use properties reserved for standard definition\n OUTER_INVALID.forEach(function(prop) {\n if (signal[prop] !== undefined) outerError('Invalid property ', prop);\n });\n } else {\n // define a new signal in the current scope\n var op = scope.addSignal(name, signal.value);\n if (signal.react === false) op.react = false;\n if (signal.bind) scope.addBinding(name, signal.bind);\n }\n}\n","import {CallExpression, parse} from 'vega-expression';\nimport {codeGenerator, codegenParams, SignalPrefix} from 'vega-functions';\nimport {error, isString, stringValue} from 'vega-util';\n\nexport default function(expr, scope, preamble) {\n var params = {}, ast, gen;\n\n // parse the expression to an abstract syntax tree (ast)\n try {\n expr = isString(expr) ? expr : (stringValue(expr) + '');\n ast = parse(expr);\n } catch (err) {\n error('Expression parse error: ' + expr);\n }\n\n // analyze ast function calls for dependencies\n ast.visit(function visitor(node) {\n if (node.type !== CallExpression) return;\n var name = node.callee.name,\n visit = codegenParams.visitors[name];\n if (visit) visit(name, node.arguments, scope, params);\n });\n\n // perform code generation\n gen = codeGenerator(ast);\n\n // collect signal dependencies\n gen.globals.forEach(function(name) {\n var signalName = SignalPrefix + name;\n if (!params.hasOwnProperty(signalName) && scope.getSignal(name)) {\n params[signalName] = scope.signalRef(name);\n }\n });\n\n // return generated expression code and dependencies\n return {\n $expr: preamble ? preamble + 'return(' + gen.code + ');' : gen.code,\n $fields: gen.fields,\n $params: params\n };\n}\n","import {isObject} from 'vega-util';\n\nexport function Entry(type, value, params, parent) {\n this.id = -1;\n this.type = type;\n this.value = value;\n this.params = params;\n if (parent) this.parent = parent;\n}\n\nexport function entry(type, value, params, parent) {\n return new Entry(type, value, params, parent);\n}\n\nexport function operator(value, params) {\n return entry('operator', value, params);\n}\n\n// -----\n\nexport function ref(op) {\n var ref = {$ref: op.id};\n // if operator not yet registered, cache ref to resolve later\n if (op.id < 0) (op.refs = op.refs || []).push(ref);\n return ref;\n}\n\nexport var tupleidRef = {\n $tupleid: 1,\n toString: function() { return ':_tupleid_:'; }\n};\n\nexport function fieldRef(field, name) {\n return name ? {$field: field, $name: name} : {$field: field};\n}\n\nexport var keyFieldRef = fieldRef('key');\n\nexport function compareRef(fields, orders) {\n return {$compare: fields, $order: orders};\n}\n\nexport function keyRef(fields, flat) {\n var ref = {$key: fields};\n if (flat) ref.$flat = true;\n return ref;\n}\n\n// -----\n\nexport var Ascending = 'ascending';\n\nexport var Descending = 'descending';\n\nexport function sortKey(sort) {\n return !isObject(sort) ? ''\n : (sort.order === Descending ? '-' : '+')\n + aggrField(sort.op, sort.field);\n}\n\nexport function aggrField(op, field) {\n return (op && op.signal ? '$' + op.signal : op || '')\n + (op && field ? '_' : '')\n + (field && field.signal ? '$' + field.signal : field || '');\n}\n\n// -----\n\nexport var Scope = 'scope';\n\nexport var View = 'view';\n\nexport function isSignal(_) {\n return _ && _.signal;\n}\n\nexport function isExpr(_) {\n return _ && _.expr;\n}\n\nexport function hasSignal(_) {\n if (isSignal(_)) return true;\n if (isObject(_)) for (var key in _) {\n if (hasSignal(_[key])) return true;\n }\n return false;\n}\n\nexport function value(specValue, defaultValue) {\n return specValue != null ? specValue : defaultValue;\n}\n\nexport function deref(v) {\n return v && v.signal || v;\n}\n","import parseExpression from './expression';\nimport {View, Scope} from '../util';\nimport {error, stringValue} from 'vega-util';\n\nvar Timer = 'timer';\n\nexport default function parseStream(stream, scope) {\n var method = stream.merge ? mergeStream\n : stream.stream ? nestedStream\n : stream.type ? eventStream\n : error('Invalid stream specification: ' + stringValue(stream));\n\n return method(stream, scope);\n}\n\nfunction eventSource(source) {\n return source === Scope ? View : (source || View);\n}\n\nfunction mergeStream(stream, scope) {\n var list = stream.merge.map(s => parseStream(s, scope)),\n entry = streamParameters({merge: list}, stream, scope);\n return scope.addStream(entry).id;\n}\n\nfunction nestedStream(stream, scope) {\n var id = parseStream(stream.stream, scope),\n entry = streamParameters({stream: id}, stream, scope);\n return scope.addStream(entry).id;\n}\n\nfunction eventStream(stream, scope) {\n var id, entry;\n\n if (stream.type === Timer) {\n id = scope.event(Timer, stream.throttle);\n stream = {between: stream.between, filter: stream.filter};\n } else {\n id = scope.event(eventSource(stream.source), stream.type);\n }\n\n entry = streamParameters({stream: id}, stream, scope);\n return Object.keys(entry).length === 1\n ? id\n : scope.addStream(entry).id;\n}\n\nfunction streamParameters(entry, stream, scope) {\n var param = stream.between;\n\n if (param) {\n if (param.length !== 2) {\n error('Stream \"between\" parameter must have 2 entries: ' + stringValue(stream));\n }\n entry.between = [\n parseStream(param[0], scope),\n parseStream(param[1], scope)\n ];\n }\n\n param = stream.filter ? [].concat(stream.filter) : [];\n if (stream.marktype || stream.markname || stream.markrole) {\n // add filter for mark type, name and/or role\n param.push(filterMark(stream.marktype, stream.markname, stream.markrole));\n }\n if (stream.source === Scope) {\n // add filter to limit events from sub-scope only\n param.push('inScope(event.item)');\n }\n if (param.length) {\n entry.filter = parseExpression('(' + param.join(')&&(') + ')').$expr;\n }\n\n if ((param = stream.throttle) != null) {\n entry.throttle = +param;\n }\n\n if ((param = stream.debounce) != null) {\n entry.debounce = +param;\n }\n\n if (stream.consume) {\n entry.consume = true;\n }\n\n return entry;\n}\n\nfunction filterMark(type, name, role) {\n var item = 'event.item';\n return item\n + (type && type !== '*' ? '&&' + item + '.mark.marktype===\\'' + type + '\\'' : '')\n + (role ? '&&' + item + '.mark.role===\\'' + role + '\\'' : '')\n + (name ? '&&' + item + '.mark.name===\\'' + name + '\\'' : '');\n}\n","/**\n * Parse an event selector string.\n * Returns an array of event stream definitions.\n */\nexport default function(selector, source, marks) {\n DEFAULT_SOURCE = source || VIEW;\n MARKS = marks || DEFAULT_MARKS;\n return parseMerge(selector.trim()).map(parseSelector);\n}\n\nvar VIEW = 'view',\n LBRACK = '[',\n RBRACK = ']',\n LBRACE = '{',\n RBRACE = '}',\n COLON = ':',\n COMMA = ',',\n NAME = '@',\n GT = '>',\n ILLEGAL = /[[\\]{}]/,\n DEFAULT_SOURCE,\n MARKS,\n DEFAULT_MARKS = {\n '*': 1,\n arc: 1,\n area: 1,\n group: 1,\n image: 1,\n line: 1,\n path: 1,\n rect: 1,\n rule: 1,\n shape: 1,\n symbol: 1,\n text: 1,\n trail: 1\n };\n\nfunction isMarkType(type) {\n return MARKS.hasOwnProperty(type);\n}\n\nfunction find(s, i, endChar, pushChar, popChar) {\n var count = 0,\n n = s.length,\n c;\n for (; i<n; ++i) {\n c = s[i];\n if (!count && c === endChar) return i;\n else if (popChar && popChar.indexOf(c) >= 0) --count;\n else if (pushChar && pushChar.indexOf(c) >= 0) ++count;\n }\n return i;\n}\n\nfunction parseMerge(s) {\n var output = [],\n start = 0,\n n = s.length,\n i = 0;\n\n while (i < n) {\n i = find(s, i, COMMA, LBRACK + LBRACE, RBRACK + RBRACE);\n output.push(s.substring(start, i).trim());\n start = ++i;\n }\n\n if (output.length === 0) {\n throw 'Empty event selector: ' + s;\n }\n return output;\n}\n\nfunction parseSelector(s) {\n return s[0] === '['\n ? parseBetween(s)\n : parseStream(s);\n}\n\nfunction parseBetween(s) {\n var n = s.length,\n i = 1,\n b, stream;\n\n i = find(s, i, RBRACK, LBRACK, RBRACK);\n if (i === n) {\n throw 'Empty between selector: ' + s;\n }\n\n b = parseMerge(s.substring(1, i));\n if (b.length !== 2) {\n throw 'Between selector must have two elements: ' + s;\n }\n\n s = s.slice(i + 1).trim();\n if (s[0] !== GT) {\n throw 'Expected \\'>\\' after between selector: ' + s;\n }\n\n b = b.map(parseSelector);\n\n stream = parseSelector(s.slice(1).trim());\n if (stream.between) {\n return {\n between: b,\n stream: stream\n };\n } else {\n stream.between = b;\n }\n\n return stream;\n}\n\nfunction parseStream(s) {\n var stream = {source: DEFAULT_SOURCE},\n source = [],\n throttle = [0, 0],\n markname = 0,\n start = 0,\n n = s.length,\n i = 0, j,\n filter;\n\n // extract throttle from end\n if (s[n-1] === RBRACE) {\n i = s.lastIndexOf(LBRACE);\n if (i >= 0) {\n try {\n throttle = parseThrottle(s.substring(i+1, n-1));\n } catch (e) {\n throw 'Invalid throttle specification: ' + s;\n }\n s = s.slice(0, i).trim();\n n = s.length;\n } else throw 'Unmatched right brace: ' + s;\n i = 0;\n }\n\n if (!n) throw s;\n\n // set name flag based on first char\n if (s[0] === NAME) markname = ++i;\n\n // extract first part of multi-part stream selector\n j = find(s, i, COLON);\n if (j < n) {\n source.push(s.substring(start, j).trim());\n start = i = ++j;\n }\n\n // extract remaining part of stream selector\n i = find(s, i, LBRACK);\n if (i === n) {\n source.push(s.substring(start, n).trim());\n } else {\n source.push(s.substring(start, i).trim());\n filter = [];\n start = ++i;\n if (start === n) throw 'Unmatched left bracket: ' + s;\n }\n\n // extract filters\n while (i < n) {\n i = find(s, i, RBRACK);\n if (i === n) throw 'Unmatched left bracket: ' + s;\n filter.push(s.substring(start, i).trim());\n if (i < n-1 && s[++i] !== LBRACK) throw 'Expected left bracket: ' + s;\n start = ++i;\n }\n\n // marshall event stream specification\n if (!(n = source.length) || ILLEGAL.test(source[n-1])) {\n throw 'Invalid event selector: ' + s;\n }\n\n if (n > 1) {\n stream.type = source[1];\n if (markname) {\n stream.markname = source[0].slice(1);\n } else if (isMarkType(source[0])) {\n stream.marktype = source[0];\n } else {\n stream.source = source[0];\n }\n } else {\n stream.type = source[0];\n }\n if (stream.type.slice(-1) === '!') {\n stream.consume = true;\n stream.type = stream.type.slice(0, -1)\n }\n if (filter != null) stream.filter = filter;\n if (throttle[0]) stream.throttle = throttle[0];\n if (throttle[1]) stream.debounce = throttle[1];\n\n return stream;\n}\n\nfunction parseThrottle(s) {\n var a = s.split(COMMA);\n if (!s.length || a.length > 2) throw s;\n return a.map(function(_) {\n var x = +_;\n if (x !== x) throw s;\n return x;\n });\n}\n","import parseExpression from './expression';\nimport parseStream from './stream';\nimport {Scope, View} from '../util';\nimport {selector} from 'vega-event-selector';\nimport {array, error, extend, isString, stringValue} from 'vega-util';\n\nvar preamble = 'var datum=event.item&&event.item.datum;';\n\nexport default function(spec, scope, target) {\n var events = spec.events,\n update = spec.update,\n encode = spec.encode,\n sources = [],\n entry = {target: target};\n\n if (!events) {\n error('Signal update missing events specification.');\n }\n\n // interpret as an event selector string\n if (isString(events)) {\n events = selector(events, scope.isSubscope() ? Scope : View);\n }\n\n // separate event streams from signal updates\n events = array(events)\n .filter(s => s.signal || s.scale ? (sources.push(s), 0) : 1);\n\n // merge internal operator listeners\n if (sources.length > 1) {\n sources = [mergeSources(sources)];\n }\n\n // merge event streams, include as source\n if (events.length) {\n sources.push(events.length > 1 ? {merge: events} : events[0]);\n }\n\n if (encode != null) {\n if (update) error('Signal encode and update are mutually exclusive.');\n update = 'encode(item(),' + stringValue(encode) + ')';\n }\n\n // resolve update value\n entry.update = isString(update) ? parseExpression(update, scope, preamble)\n : update.expr != null ? parseExpression(update.expr, scope, preamble)\n : update.value != null ? update.value\n : update.signal != null ? {\n $expr: '_.value',\n $params: {value: scope.signalRef(update.signal)}\n }\n : error('Invalid signal update specification.');\n\n if (spec.force) {\n entry.options = {force: true};\n }\n\n sources.forEach(function(source) {\n scope.addUpdate(extend(streamSource(source, scope), entry));\n });\n}\n\nfunction streamSource(stream, scope) {\n return {\n source: stream.signal ? scope.signalRef(stream.signal)\n : stream.scale ? scope.scaleRef(stream.scale)\n : parseStream(stream, scope)\n };\n}\n\nfunction mergeSources(sources) {\n return {\n signal: '['\n + sources.map(s => s.scale ? 'scale(\"' + s.scale + '\")' : s.signal)\n + ']'\n };\n}\n","import {entry} from './util';\n\nfunction transform(name) {\n return function(params, value, parent) {\n return entry(name, value, params || undefined, parent);\n };\n}\n\nexport var Aggregate = transform('aggregate');\nexport var AxisTicks = transform('axisticks');\nexport var Bound = transform('bound');\nexport var Collect = transform('collect');\nexport var Compare = transform('compare');\nexport var DataJoin = transform('datajoin');\nexport var Encode = transform('encode');\nexport var Expression = transform('expression');\nexport var Extent = transform('extent');\nexport var Facet = transform('facet');\nexport var Field = transform('field');\nexport var Key = transform('key');\nexport var LegendEntries = transform('legendentries');\nexport var Load = transform('load');\nexport var Mark = transform('mark');\nexport var MultiExtent = transform('multiextent');\nexport var MultiValues = transform('multivalues');\nexport var Overlap = transform('overlap');\nexport var Params = transform('params');\nexport var PreFacet = transform('prefacet');\nexport var Projection = transform('projection');\nexport var Proxy = transform('proxy');\nexport var Relay = transform('relay');\nexport var Render = transform('render');\nexport var Scale = transform('scale');\nexport var Sieve = transform('sieve');\nexport var SortItems = transform('sortitems');\nexport var ViewLayout = transform('viewlayout');\nexport var Values = transform('values');\n","import {ref, keyFieldRef} from '../util';\nimport {Collect, Aggregate, MultiExtent, MultiValues, Sieve, Values} from '../transforms';\n\nimport {isValidScaleType, isDiscrete, isQuantile} from 'vega-scale';\nimport {error, extend, isArray, isObject, isString, stringValue} from 'vega-util';\n\nvar FIELD_REF_ID = 0;\n\nexport function initScale(spec, scope) {\n var type = spec.type || 'linear';\n\n if (!isValidScaleType(type)) {\n error('Unrecognized scale type: ' + stringValue(type));\n }\n\n scope.addScale(spec.name, {\n type: type,\n domain: undefined\n });\n}\n\nexport function parseScale(spec, scope) {\n var params = scope.getScale(spec.name).params,\n key;\n\n params.domain = parseScaleDomain(spec.domain, spec, scope);\n\n if (spec.range != null) {\n params.range = parseScaleRange(spec, scope, params);\n }\n\n if (spec.interpolate != null) {\n parseScaleInterpolate(spec.interpolate, params);\n }\n\n if (spec.nice != null) {\n params.nice = parseScaleNice(spec.nice);\n }\n\n if (spec.bins != null) {\n params.bins = parseScaleBins(spec.bins, scope);\n }\n\n for (key in spec) {\n if (params.hasOwnProperty(key) || key === 'name') continue;\n params[key] = parseLiteral(spec[key], scope);\n }\n}\n\nfunction parseLiteral(v, scope) {\n return !isObject(v) ? v\n : v.signal ? scope.signalRef(v.signal)\n : error('Unsupported object: ' + stringValue(v));\n}\n\nfunction parseArray(v, scope) {\n return v.signal\n ? scope.signalRef(v.signal)\n : v.map(v => parseLiteral(v, scope));\n}\n\nfunction dataLookupError(name) {\n error('Can not find data set: ' + stringValue(name));\n}\n\n// -- SCALE DOMAIN ----\n\nfunction parseScaleDomain(domain, spec, scope) {\n if (!domain) {\n if (spec.domainMin != null || spec.domainMax != null) {\n error('No scale domain defined for domainMin/domainMax to override.');\n }\n return; // default domain\n }\n\n return domain.signal ? scope.signalRef(domain.signal)\n : (isArray(domain) ? explicitDomain\n : domain.fields ? multipleDomain\n : singularDomain)(domain, spec, scope);\n}\n\nfunction explicitDomain(domain, spec, scope) {\n return domain.map(function(v) {\n return parseLiteral(v, scope);\n });\n}\n\nfunction singularDomain(domain, spec, scope) {\n var data = scope.getData(domain.data);\n if (!data) dataLookupError(domain.data);\n\n return isDiscrete(spec.type)\n ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false))\n : isQuantile(spec.type) ? data.domainRef(scope, domain.field)\n : data.extentRef(scope, domain.field);\n}\n\nfunction multipleDomain(domain, spec, scope) {\n var data = domain.data,\n fields = domain.fields.reduce(function(dom, d) {\n d = isString(d) ? {data: data, field: d}\n : (isArray(d) || d.signal) ? fieldRef(d, scope)\n : d;\n dom.push(d);\n return dom;\n }, []);\n\n return (isDiscrete(spec.type) ? ordinalMultipleDomain\n : isQuantile(spec.type) ? quantileMultipleDomain\n : numericMultipleDomain)(domain, scope, fields);\n}\n\nfunction fieldRef(data, scope) {\n var name = '_:vega:_' + (FIELD_REF_ID++),\n coll = Collect({});\n\n if (isArray(data)) {\n coll.value = {$ingest: data};\n } else if (data.signal) {\n var code = 'setdata(' + stringValue(name) + ',' + data.signal + ')';\n coll.params.input = scope.signalRef(code);\n }\n scope.addDataPipeline(name, [coll, Sieve({})]);\n return {data: name, field: 'data'};\n}\n\nfunction ordinalMultipleDomain(domain, scope, fields) {\n var counts, a, c, v;\n\n // get value counts for each domain field\n counts = fields.map(function(f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.countsRef(scope, f.field);\n });\n\n // sum counts from all fields\n a = scope.add(Aggregate({\n groupby: keyFieldRef,\n ops:['sum'], fields: [scope.fieldRef('count')], as:['count'],\n pulse: counts\n }));\n\n // collect aggregate output\n c = scope.add(Collect({pulse: ref(a)}));\n\n // extract values for combined domain\n v = scope.add(Values({\n field: keyFieldRef,\n sort: scope.sortRef(parseSort(domain.sort, true)),\n pulse: ref(c)\n }));\n\n return ref(v);\n}\n\nfunction parseSort(sort, multidomain) {\n if (sort) {\n if (!sort.field && !sort.op) {\n if (isObject(sort)) sort.field = 'key';\n else sort = {field: 'key'};\n } else if (!sort.field && sort.op !== 'count') {\n error('No field provided for sort aggregate op: ' + sort.op);\n } else if (multidomain && sort.field) {\n error('Multiple domain scales can not sort by field.');\n } else if (multidomain && sort.op && sort.op !== 'count') {\n error('Multiple domain scales support op count only.');\n }\n }\n return sort;\n}\n\nfunction quantileMultipleDomain(domain, scope, fields) {\n // get value arrays for each domain field\n var values = fields.map(function(f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.domainRef(scope, f.field);\n });\n\n // combine value arrays\n return ref(scope.add(MultiValues({values: values})));\n}\n\nfunction numericMultipleDomain(domain, scope, fields) {\n // get extents for each domain field\n var extents = fields.map(function(f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.extentRef(scope, f.field);\n });\n\n // combine extents\n return ref(scope.add(MultiExtent({extents: extents})));\n}\n\n// -- SCALE BINS -----\n\nfunction parseScaleBins(v, scope) {\n return v.signal || isArray(v)\n ? parseArray(v, scope)\n : scope.objectProperty(v);\n}\n\n// -- SCALE NICE -----\n\nfunction parseScaleNice(nice) {\n return isObject(nice)\n ? {\n interval: parseLiteral(nice.interval),\n step: parseLiteral(nice.step)\n }\n : parseLiteral(nice);\n}\n\n// -- SCALE INTERPOLATION -----\n\nfunction parseScaleInterpolate(interpolate, params) {\n params.interpolate = parseLiteral(interpolate.type || interpolate);\n if (interpolate.gamma != null) {\n params.interpolateGamma = parseLiteral(interpolate.gamma);\n }\n}\n\n// -- SCALE RANGE -----\n\nfunction parseScaleRange(spec, scope, params) {\n var range = spec.range,\n config = scope.config.range;\n\n if (range.signal) {\n return scope.signalRef(range.signal);\n } else if (isString(range)) {\n if (config && config.hasOwnProperty(range)) {\n spec = extend({}, spec, {range: config[range]});\n return parseScaleRange(spec, scope, params);\n } else if (range === 'width') {\n range = [0, {signal: 'width'}]\n } else if (range === 'height') {\n range = isDiscrete(spec.type)\n ? [0, {signal: 'height'}]\n : [{signal: 'height'}, 0]\n } else {\n error('Unrecognized scale range value: ' + stringValue(range));\n }\n } else if (range.scheme) {\n params.scheme = isArray(range.scheme)\n ? parseArray(range.scheme, scope)\n : parseLiteral(range.scheme, scope);\n if (range.extent) params.schemeExtent = parseArray(range.extent, scope);\n if (range.count) params.schemeCount = parseLiteral(range.count, scope);\n return;\n } else if (range.step) {\n params.rangeStep = parseLiteral(range.step, scope);\n return;\n } else if (isDiscrete(spec.type) && !isArray(range)) {\n return parseScaleDomain(range, spec, scope);\n } else if (!isArray(range)) {\n error('Unsupported range type: ' + stringValue(range));\n }\n\n return range.map(v => (isArray(v) ? parseArray : parseLiteral)(v, scope));\n}\n","import {error, isArray, isObject, stringValue} from 'vega-util';\n\nexport default function(proj, scope) {\n var params = {};\n\n for (var name in proj) {\n if (name === 'name') continue;\n params[name] = parseParameter(proj[name], name, scope);\n }\n\n scope.addProjection(proj.name, params);\n}\n\nfunction parseParameter(_, name, scope) {\n return isArray(_) ? _.map(function(_) { return parseParameter(_, name, scope); })\n : !isObject(_) ? _\n : _.signal ? scope.signalRef(_.signal)\n : name === 'fit' ? _\n : error('Unsupported parameter object: ' + stringValue(_));\n}\n","export const Top = 'top';\nexport const Left = 'left';\nexport const Right = 'right';\nexport const Bottom = 'bottom';\nexport const Center = 'center';\n\nexport const Vertical = 'vertical';\n\nexport const Start = 'start';\nexport const Middle = 'middle';\nexport const End = 'end';\n\nexport const Index = 'index';\nexport const Label = 'label';\nexport const Offset = 'offset';\nexport const Perc = 'perc';\nexport const Perc2 = 'perc2';\nexport const Size = 'size';\nexport const Value = 'value';\n\nexport const GuideLabelStyle = 'guide-label';\nexport const GuideTitleStyle = 'guide-title';\nexport const GroupTitleStyle = 'group-title';\n\nexport const Symbols = 'symbol';\nexport const Gradient = 'gradient';\nexport const Discrete = 'discrete';\n\n// Encoding channels supported by legends\n// In priority order of 'canonical' scale\nexport const LegendScales = [\n 'size',\n 'shape',\n 'fill',\n 'stroke',\n 'strokeWidth',\n 'strokeDash',\n 'opacity'\n];\n\nexport const Skip = {\n name: 1,\n interactive: 1\n};\n\nexport const zero = {value: 0};\nexport const one = {value: 1};\n","import {toSet} from 'vega-util';\n\nvar Skip = toSet(['rule']),\n Swap = toSet(['group', 'image', 'rect']);\n\nexport default function(encode, marktype) {\n var code = '';\n\n if (Skip[marktype]) return code;\n\n if (encode.x2) {\n if (encode.x) {\n if (Swap[marktype]) {\n code += 'if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;';\n }\n code += 'o.width=o.x2-o.x;';\n } else {\n code += 'o.x=o.x2-(o.width||0);';\n }\n }\n\n if (encode.xc) {\n code += 'o.x=o.xc-(o.width||0)/2;';\n }\n\n if (encode.y2) {\n if (encode.y) {\n if (Swap[marktype]) {\n code += 'if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;';\n }\n code += 'o.height=o.y2-o.y;';\n } else {\n code += 'o.y=o.y2-(o.height||0);';\n }\n }\n\n if (encode.yc) {\n code += 'o.y=o.yc-(o.height||0)/2;';\n }\n\n return code;\n}\n","import expression from '../expression';\nimport {extend} from 'vega-util';\n\nexport default function(code, scope, params, fields) {\n var expr = expression(code, scope);\n expr.$fields.forEach(function(name) { fields[name] = 1; });\n extend(params, expr.$params);\n return expr.$expr;\n}\n","import expression from './expression';\nimport {error, isString, isObject, splitAccessPath, stringValue} from 'vega-util';\n\nexport default function(ref, scope, params, fields) {\n return resolve(isObject(ref) ? ref : {datum: ref}, scope, params, fields);\n}\n\nfunction resolve(ref, scope, params, fields) {\n var object, level, field;\n\n if (ref.signal) {\n object = 'datum';\n field = expression(ref.signal, scope, params, fields);\n } else if (ref.group || ref.parent) {\n level = Math.max(1, ref.level || 1);\n object = 'item';\n\n while (level-- > 0) {\n object += '.mark.group';\n }\n\n if (ref.parent) {\n field = ref.parent;\n object += '.datum';\n } else {\n field = ref.group;\n }\n } else if (ref.datum) {\n object = 'datum';\n field = ref.datum;\n } else {\n error('Invalid field reference: ' + stringValue(ref));\n }\n\n if (!ref.signal) {\n if (isString(field)) {\n fields[field] = 1; // TODO review field tracking?\n field = splitAccessPath(field).map(stringValue).join('][');\n } else {\n field = resolve(field, scope, params, fields);\n }\n }\n\n return object + '[' + field + ']';\n}\n","import expression from './expression';\nimport field from './field';\nimport {ScalePrefix} from 'vega-functions';\nimport {isString, stringValue} from 'vega-util';\n\nexport default function(enc, value, scope, params, fields) {\n var scale = getScale(enc.scale, scope, params, fields),\n interp, func, flag;\n\n if (enc.range != null) {\n // pull value from scale range\n interp = +enc.range;\n func = scale + '.range()';\n value = (interp === 0) ? (func + '[0]')\n : '($=' + func + ',' + ((interp === 1) ? '$[$.length-1]'\n : '$[0]+' + interp + '*($[$.length-1]-$[0])') + ')';\n } else {\n // run value through scale and/or pull scale bandwidth\n if (value !== undefined) value = scale + '(' + value + ')';\n\n if (enc.band && (flag = hasBandwidth(enc.scale, scope))) {\n func = scale + '.bandwidth';\n interp = +enc.band;\n interp = func + '()' + (interp===1 ? '' : '*' + interp);\n\n // if we don't know the scale type, check for bandwidth\n if (flag < 0) interp = '(' + func + '?' + interp + ':0)';\n\n value = (value ? value + '+' : '') + interp;\n\n if (enc.extra) {\n // include logic to handle extraneous elements\n value = '(datum.extra?' + scale + '(datum.extra.value):' + value + ')';\n }\n }\n\n if (value == null) value = '0';\n }\n\n return value;\n}\n\nfunction hasBandwidth(name, scope) {\n if (!isString(name)) return -1;\n var type = scope.scaleType(name);\n return type === 'band' || type === 'point' ? 1 : 0;\n}\n\nexport function getScale(name, scope, params, fields) {\n var scaleName;\n\n if (isString(name)) {\n // direct scale lookup; add scale as parameter\n scaleName = ScalePrefix + name;\n if (!params.hasOwnProperty(scaleName)) {\n params[scaleName] = scope.scaleRef(name);\n }\n scaleName = stringValue(scaleName);\n } else {\n // indirect scale lookup; add all scales as parameters\n for (scaleName in scope.scales) {\n params[ScalePrefix + scaleName] = scope.scaleRef(scaleName);\n }\n scaleName = stringValue(ScalePrefix) + '+'\n + (name.signal\n ? '(' + expression(name.signal, scope, params, fields) + ')'\n : field(name, scope, params, fields));\n }\n\n return '_[' + scaleName + ']';\n}\n","import {getScale} from './scale';\nimport {stringValue} from 'vega-util';\n\nexport default function(enc, scope, params, fields) {\n return 'this.gradient('\n + getScale(enc.gradient, scope, params, fields)\n + ',' + stringValue(enc.start)\n + ',' + stringValue(enc.stop)\n + ',' + stringValue(enc.count)\n + ')';\n}\n","import entry from './entry';\nimport {isObject} from 'vega-util';\n\nexport default function(property, scope, params, fields) {\n return isObject(property)\n ? '(' + entry(null, property, scope, params, fields) + ')'\n : property;\n}\n","import color from './color';\nimport field from './field';\nimport scale from './scale';\nimport gradient from './gradient';\nimport property from './property';\nimport expression from './expression';\nimport {stringValue} from 'vega-util';\n\nexport default function(channel, enc, scope, params, fields) {\n if (enc.gradient != null) {\n return gradient(enc, scope, params, fields);\n }\n\n var value = enc.signal ? expression(enc.signal, scope, params, fields)\n : enc.color ? color(enc.color, scope, params, fields)\n : enc.field != null ? field(enc.field, scope, params, fields)\n : enc.value !== undefined ? stringValue(enc.value)\n : undefined;\n\n if (enc.scale != null) {\n value = scale(enc, value, scope, params, fields);\n }\n\n if (value === undefined) {\n value = null;\n }\n\n if (enc.exponent != null) {\n value = 'Math.pow(' + value + ','\n + property(enc.exponent, scope, params, fields) + ')';\n }\n\n if (enc.mult != null) {\n value += '*' + property(enc.mult, scope, params, fields);\n }\n\n if (enc.offset != null) {\n value += '+' + property(enc.offset, scope, params, fields);\n }\n\n if (enc.round) {\n value = 'Math.round(' + value + ')';\n }\n\n return value;\n}\n","import entry from './entry';\n\nexport default function(enc, scope, params, fields) {\n function color(type, x, y, z) {\n var a = entry(null, x, scope, params, fields),\n b = entry(null, y, scope, params, fields),\n c = entry(null, z, scope, params, fields);\n return 'this.' + type + '(' + [a, b, c].join(',') + ').toString()';\n }\n\n return (enc.c) ? color('hcl', enc.h, enc.c, enc.l)\n : (enc.h || enc.s) ? color('hsl', enc.h, enc.s, enc.l)\n : (enc.l || enc.a) ? color('lab', enc.l, enc.a, enc.b)\n : (enc.r || enc.g || enc.b) ? color('rgb', enc.r, enc.g, enc.b)\n : null;\n}\n","import {stringValue} from 'vega-util';\n\nexport default function(obj, key, value) {\n const o = obj + '[' + stringValue(key) + ']';\n return `$=${value};if(${o}!==$)${o}=$,m=1;`;\n}\n","import entry from './entry';\nimport set from './set';\nimport expression from './expression';\nimport {peek} from 'vega-util';\n\nexport default function(channel, rules, scope, params, fields) {\n var code = '';\n\n rules.forEach(function(rule) {\n var value = entry(channel, rule, scope, params, fields);\n code += rule.test\n ? expression(rule.test, scope, params, fields) + '?' + value + ':'\n : value;\n });\n\n // if no else clause, terminate with null (vega/vega#1366)\n if (peek(code) === ':') {\n code += 'null';\n }\n\n return set('o', channel, code);\n}\n","import adjustSpatial from './encode/adjust-spatial';\nimport entry from './encode/entry';\nimport rule from './encode/rule';\nimport set from './encode/set';\nimport {isArray} from 'vega-util';\n\nexport default function parseEncode(encode, marktype, params, scope) {\n var fields = {},\n code = 'var o=item,datum=o.datum,m=0,$;',\n channel, enc, value;\n\n for (channel in encode) {\n enc = encode[channel];\n if (isArray(enc)) { // rule\n code += rule(channel, enc, scope, params, fields);\n } else {\n value = entry(channel, enc, scope, params, fields);\n code += set('o', channel, value);\n }\n }\n\n code += adjustSpatial(encode, marktype);\n code += 'return m;';\n\n return {\n $expr: code,\n $fields: Object.keys(fields),\n $output: Object.keys(encode)\n };\n}\n","export var MarkRole = 'mark';\nexport var FrameRole = 'frame';\nexport var ScopeRole = 'scope';\n\nexport var AxisRole = 'axis';\nexport var AxisDomainRole = 'axis-domain';\nexport var AxisGridRole = 'axis-grid';\nexport var AxisLabelRole = 'axis-label';\nexport var AxisTickRole = 'axis-tick';\nexport var AxisTitleRole = 'axis-title';\n\nexport var LegendRole = 'legend';\nexport var LegendBandRole = 'legend-band';\nexport var LegendEntryRole = 'legend-entry';\nexport var LegendGradientRole = 'legend-gradient';\nexport var LegendLabelRole = 'legend-label';\nexport var LegendSymbolRole = 'legend-symbol';\nexport var LegendTitleRole = 'legend-title';\n\nexport var TitleRole = 'title';\n","import parseEncode from '../encode';\nimport {FrameRole, MarkRole} from '../marks/roles';\nimport {array, extend, isArray, isObject} from 'vega-util';\n\nexport function encoder(_) {\n return isObject(_) ? extend({}, _) : {value: _};\n}\n\nexport function addEncode(object, name, value, set) {\n if (value != null) {\n if (isObject(value) && !isArray(value)) {\n object.update[name] = value;\n } else {\n object[set || 'enter'][name] = {value: value};\n }\n return 1;\n } else {\n return 0;\n }\n}\n\nexport function addEncoders(object, enter, update) {\n for (let name in enter) {\n addEncode(object, name, enter[name]);\n }\n for (let name in update) {\n addEncode(object, name, update[name], 'update');\n }\n}\n\nexport function extendEncode(encode, extra, skip) {\n for (var name in extra) {\n if (skip && skip.hasOwnProperty(name)) continue;\n encode[name] = extend(encode[name] || {}, extra[name]);\n }\n return encode;\n}\n\nexport function encoders(encode, type, role, style, scope, params) {\n var enc, key;\n params = params || {};\n params.encoders = {$encode: (enc = {})};\n\n encode = applyDefaults(encode, type, role, style, scope.config);\n\n for (key in encode) {\n enc[key] = parseEncode(encode[key], type, params, scope);\n }\n\n return params;\n}\n\nfunction applyDefaults(encode, type, role, style, config) {\n var enter = {}, key, skip, props;\n\n // ignore legend and axis\n if (role == 'legend' || String(role).indexOf('axis') === 0) {\n role = null;\n }\n\n // resolve mark config\n props = role === FrameRole ? config.group\n : (role === MarkRole) ? extend({}, config.mark, config[type])\n : null;\n\n for (key in props) {\n // do not apply defaults if relevant fields are defined\n skip = has(key, encode)\n || (key === 'fill' || key === 'stroke')\n && (has('fill', encode) || has('stroke', encode));\n\n if (!skip) enter[key] = defaultEncode(props[key]);\n }\n\n // resolve styles, apply with increasing precedence\n array(style).forEach(function(name) {\n var props = config.style && config.style[name];\n for (var key in props) {\n if (!has(key, encode)) {\n enter[key] = defaultEncode(props[key]);\n }\n }\n });\n\n encode = extend({}, encode); // defensive copy\n encode.enter = extend(enter, encode.enter);\n\n return encode;\n}\n\nfunction defaultEncode(value) {\n return value && value.signal\n ? {signal: value.signal}\n : {value: value};\n}\n\nexport function has(key, encode) {\n return encode && (\n (encode.enter && encode.enter[key]) ||\n (encode.update && encode.update[key])\n );\n}\n","import {Skip} from './constants';\nimport {extendEncode} from '../encode/encode-util';\n\nexport default function(type, role, style, key, dataRef, encode, extras) {\n return {\n type: type,\n name: extras ? extras.name : undefined,\n role: role,\n style: (extras && extras.style) || style,\n key: key,\n from: dataRef,\n interactive: !!(extras && extras.interactive),\n encode: extendEncode(encode, extras, Skip)\n };\n}\n","import {Left, Right, Center, Start, End, Vertical} from './constants';\nimport {value} from '../../util';\nimport {stringValue} from 'vega-util';\n\nexport function lookup(spec, config) {\n const _ = name => value(spec[name], config[name]);\n\n _.isVertical = s => Vertical === value(\n spec.direction,\n config.direction || (s ? config.symbolDirection : config.gradientDirection)\n );\n\n _.gradientLength = () => value(\n spec.gradientLength,\n config.gradientLength || config.gradientWidth\n );\n\n _.gradientThickness = () => value(\n spec.gradientThickness,\n config.gradientThickness || config.gradientHeight\n );\n\n _.entryColumns = () => value(\n spec.columns,\n value(config.columns, +_.isVertical(true))\n );\n\n return _;\n}\n\nexport function getEncoding(name, encode) {\n var v = encode && (\n (encode.update && encode.update[name]) ||\n (encode.enter && encode.enter[name])\n );\n return v && v.signal ? v : v ? v.value : null;\n}\n\nexport function getStyle(name, scope, style) {\n var s = scope.config.style[style];\n return s && s[name];\n}\n\nexport function anchorExpr(s, e, m) {\n return `item.anchor === \"${Start}\" ? ${s} : item.anchor === \"${End}\" ? ${e} : ${m}`;\n}\n\nexport const alignExpr = anchorExpr(\n stringValue(Left),\n stringValue(Right),\n stringValue(Center)\n);\n","export var GroupMark = 'group';\nexport var RectMark = 'rect';\nexport var RuleMark = 'rule';\nexport var SymbolMark = 'symbol';\nexport var TextMark = 'text';\n","import {zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {RectMark} from '../marks/marktypes';\nimport {LegendGradientRole} from '../marks/roles';\nimport {addEncoders, encoder} from '../encode/encode-util';\nimport {extend} from 'vega-util';\n\nexport default function(spec, scale, config, userEncode) {\n var _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = _.gradientThickness(),\n length = _.gradientLength(),\n encode, enter, start, stop, width, height;\n\n if (vertical) {\n start = [0, 1];\n stop = [0, 0];\n width = thickness;\n height = length;\n } else {\n start = [0, 0];\n stop = [1, 0];\n width = length;\n height = thickness;\n }\n\n encode = {\n enter: enter = {\n opacity: zero,\n x: zero,\n y: zero,\n width: encoder(width),\n height: encoder(height)\n },\n update: extend({}, enter, {\n opacity: one,\n fill: {gradient: scale, start: start, stop: stop}\n }),\n exit: {\n opacity: zero\n }\n };\n\n addEncoders(encode, {\n stroke: _('gradientStrokeColor'),\n strokeWidth: _('gradientStrokeWidth')\n }, { // update\n opacity: _('gradientOpacity')\n });\n\n return guideMark(RectMark, LegendGradientRole, null, undefined, undefined, encode, userEncode);\n}\n","import {Value, Perc, Perc2, zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {RectMark} from '../marks/marktypes';\nimport {LegendBandRole} from '../marks/roles';\nimport {addEncoders, encoder} from '../encode/encode-util';\nimport {extend} from 'vega-util';\n\nexport default function(spec, scale, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = _.gradientThickness(),\n length = _.gradientLength(),\n encode, enter, u, v, uu, vv, adjust = '';\n\n vertical\n ? (u = 'y', uu = 'y2', v = 'x', vv = 'width', adjust = '1-')\n : (u = 'x', uu = 'x2', v = 'y', vv = 'height');\n\n enter = {\n opacity: zero,\n fill: {scale: scale, field: Value}\n };\n enter[u] = {signal: adjust + 'datum.' + Perc, mult: length};\n enter[v] = zero;\n enter[uu] = {signal: adjust + 'datum.' + Perc2, mult: length};\n enter[vv] = encoder(thickness);\n\n encode = {\n enter: enter,\n update: extend({}, enter, {opacity: one}),\n exit: {opacity: zero}\n };\n\n addEncoders(encode, {\n stroke: _('gradientStrokeColor'),\n strokeWidth: _('gradientStrokeWidth')\n }, { // update\n opacity: _('gradientOpacity')\n });\n\n return guideMark(RectMark, LegendBandRole, null, Value, dataRef, encode, userEncode);\n}\n","import {\n Index, Label, Perc, Value, GuideLabelStyle, zero, one,\n Top, Bottom, Left, Right, Center, Middle\n} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {TextMark} from '../marks/marktypes';\nimport {LegendLabelRole} from '../marks/roles';\nimport {addEncoders, encoder} from '../encode/encode-util';\nimport {value} from '../../util';\n\nconst alignExpr = `datum.${Perc}<=0?\"${Left}\":datum.${Perc}>=1?\"${Right}\":\"${Center}\"`,\n baselineExpr = `datum.${Perc}<=0?\"${Bottom}\":datum.${Perc}>=1?\"${Top}\":\"${Middle}\"`;\n\nexport default function(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = encoder(_.gradientThickness()),\n length = _.gradientLength(),\n overlap = _('labelOverlap'),\n separation = _('labelSeparation'),\n encode, enter, update, u, v, adjust = '';\n\n encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: one,\n text: {field: Label}\n },\n exit: {\n opacity: zero\n }\n };\n\n addEncoders(encode, {\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontStyle: _('labelFontStyle'),\n fontWeight: _('labelFontWeight'),\n limit: value(spec.labelLimit, config.gradientLabelLimit)\n });\n\n if (vertical) {\n enter.align = {value: 'left'};\n enter.baseline = update.baseline = {signal: baselineExpr};\n u = 'y'; v = 'x'; adjust = '1-';\n } else {\n enter.align = update.align = {signal: alignExpr};\n enter.baseline = {value: 'top'};\n u = 'x'; v = 'y';\n }\n\n enter[u] = update[u] = {signal: adjust + 'datum.' + Perc, mult: length};\n\n enter[v] = update[v] = thickness;\n thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0;\n\n spec = guideMark(TextMark, LegendLabelRole, GuideLabelStyle, Value, dataRef, encode, userEncode);\n if (overlap) {\n spec.overlap = {\n separation: separation,\n method: overlap,\n order: 'datum.' + Index\n };\n }\n return spec;\n}\n","import {GroupMark} from '../marks/marktypes';\n\nexport default function(role, style, name, dataRef, interactive, encode, marks, layout) {\n return {\n type: GroupMark,\n name: name,\n role: role,\n style: style,\n from: dataRef,\n interactive: interactive || false,\n encode: encode,\n marks: marks,\n layout: layout\n };\n}\n","import {\n Index, Label, Offset, Size, Value, zero, one,\n Skip, GuideLabelStyle, LegendScales\n} from './constants';\nimport guideGroup from './guide-group';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {SymbolMark, TextMark} from '../marks/marktypes';\nimport {ScopeRole, LegendSymbolRole, LegendLabelRole} from '../marks/roles';\nimport {addEncoders, encoder, extendEncode} from '../encode/encode-util';\n\n// userEncode is top-level, includes entries, symbols, labels\nexport default function(spec, config, userEncode, dataRef, columns) {\n var _ = lookup(spec, config),\n entries = userEncode.entries,\n interactive = !!(entries && entries.interactive),\n name = entries ? entries.name : undefined,\n height = _('clipHeight'),\n symbolOffset = _('symbolOffset'),\n valueRef = {data: 'value'},\n encode = {},\n xSignal = `${columns} ? datum.${Offset} : datum.${Size}`,\n yEncode = height ? encoder(height) : {field: Size},\n index = `datum.${Index}`,\n ncols = `max(1, ${columns})`,\n enter, update, labelOffset, symbols, labels, nrows, sort;\n\n yEncode.mult = 0.5;\n\n // -- LEGEND SYMBOLS --\n encode = {\n enter: enter = {\n opacity: zero,\n x: {signal: xSignal, mult: 0.5, offset: symbolOffset},\n y: yEncode\n },\n update: update = {\n opacity: one,\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero\n }\n };\n\n if (!spec.fill) {\n addEncoders(encode, {\n fill: config.symbolBaseFillColor,\n stroke: config.symbolBaseStrokeColor\n });\n }\n\n addEncoders(encode, {\n fill: _('symbolFillColor'),\n shape: _('symbolType'),\n size: _('symbolSize'),\n stroke: _('symbolStrokeColor'),\n strokeDash: _('symbolDash'),\n strokeDashOffset: _('symbolDashOffset'),\n strokeWidth: _('symbolStrokeWidth')\n }, { // update\n opacity: _('symbolOpacity')\n });\n\n LegendScales.forEach(function(scale) {\n if (spec[scale]) {\n update[scale] = enter[scale] = {scale: spec[scale], field: Value};\n }\n });\n\n symbols = guideMark(\n SymbolMark, LegendSymbolRole, null,\n Value, valueRef, encode, userEncode.symbols\n );\n if (height) symbols.clip = true;\n\n // -- LEGEND LABELS --\n labelOffset = encoder(symbolOffset);\n labelOffset.offset = _('labelOffset');\n\n encode = {\n enter: enter = {\n opacity: zero,\n x: {signal: xSignal, offset: labelOffset},\n y: yEncode\n },\n update: update = {\n opacity: one,\n text: {field: Label},\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero\n }\n };\n\n addEncoders(encode, {\n align: _('labelAlign'),\n baseline: _('labelBaseline'),\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontStyle: _('labelFontStyle'),\n fontWeight: _('labelFontWeight'),\n limit: _('labelLimit')\n });\n\n labels = guideMark(\n TextMark, LegendLabelRole, GuideLabelStyle,\n Value, valueRef, encode, userEncode.labels\n );\n\n // -- LEGEND ENTRY GROUPS --\n encode = {\n enter: {\n noBound: {value: !height}, // ignore width/height in bounds calc\n width: zero,\n height: height ? encoder(height) : zero,\n opacity: zero\n },\n exit: {opacity: zero},\n update: update = {\n opacity: one,\n row: {signal: null},\n column: {signal: null}\n }\n };\n\n // annotate and sort groups to ensure correct ordering\n if (_.isVertical(true)) {\n nrows = `ceil(item.mark.items.length / ${ncols})`;\n update.row.signal = `${index}%${nrows}`;\n update.column.signal = `floor(${index} / ${nrows})`;\n sort = {field: ['row', index]};\n } else {\n update.row.signal = `floor(${index} / ${ncols})`;\n update.column.signal = `${index} % ${ncols}`;\n sort = {field: index};\n }\n // handle zero column case (implies infinite columns)\n update.column.signal = `${columns}?${update.column.signal}:${index}`;\n\n // facet legend entries into sub-groups\n dataRef = {facet: {data: dataRef, name: 'value', groupby: Index}};\n\n spec = guideGroup(\n ScopeRole, null, name, dataRef, interactive,\n extendEncode(encode, entries, Skip), [symbols, labels]\n );\n spec.sort = sort;\n return spec;\n}\n\nexport function legendSymbolLayout(spec, config) {\n const _ = lookup(spec, config);\n\n // layout parameters for legend entries\n return {\n align: _('gridAlign'),\n columns: _.entryColumns(),\n center: {\n row: true,\n column: false\n },\n padding: {\n row: _('rowPadding'),\n column: _('columnPadding')\n }\n };\n}\n","import {GuideTitleStyle, zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup, alignExpr, anchorExpr} from './guide-util';\nimport {TextMark} from '../marks/marktypes';\nimport {LegendTitleRole} from '../marks/roles';\nimport {addEncoders} from '../encode/encode-util';\n\n// expression logic for align, anchor, angle, and baseline calculation\nconst isL = 'item.orient === \"left\"',\n isR = 'item.orient === \"right\"',\n isLR = `(${isL} || ${isR})`,\n isVG = `datum.vgrad && ${isLR}`,\n baseline = anchorExpr('\"top\"', '\"bottom\"', '\"middle\"'),\n alignFlip = anchorExpr('\"right\"', '\"left\"', '\"center\"'),\n exprAlign = `datum.vgrad && ${isR} ? (${alignFlip}) : (${isLR} && !(datum.vgrad && ${isL})) ? \"left\" : ${alignExpr}`,\n exprAnchor = `item._anchor || (${isLR} ? \"middle\" : \"start\")`,\n exprAngle = `${isVG} ? (${isL} ? -90 : 90) : 0`,\n exprBaseline = `${isLR} ? (datum.vgrad ? (${isR} ? \"bottom\" : \"top\") : ${baseline}) : \"top\"`;\n\nexport default function(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config), encode;\n\n encode = {\n enter: {opacity: zero},\n update: {\n opacity: one,\n x: {field: {group: 'padding'}},\n y: {field: {group: 'padding'}}\n },\n exit: {opacity: zero}\n };\n\n addEncoders(encode, {\n orient: _('titleOrient'),\n _anchor: _('titleAnchor'),\n anchor: {signal: exprAnchor},\n angle: {signal: exprAngle},\n align: {signal: exprAlign},\n baseline: {signal: exprBaseline},\n text: spec.title,\n fill: _('titleColor'),\n fillOpacity: _('titleOpacity'),\n font: _('titleFont'),\n fontSize: _('titleFontSize'),\n fontStyle: _('titleFontStyle'),\n fontWeight: _('titleFontWeight'),\n limit: _('titleLimit')\n }, { // require update\n align: _('titleAlign'),\n baseline: _('titleBaseline'),\n });\n\n return guideMark(TextMark, LegendTitleRole, GuideTitleStyle, null, dataRef, encode, userEncode);\n}\n","import {isObject, stringValue} from 'vega-util';\n\nexport default function(clip, scope) {\n var expr;\n\n if (isObject(clip)) {\n if (clip.signal) {\n expr = clip.signal;\n } else if (clip.path) {\n expr = 'pathShape(' + param(clip.path) + ')';\n } else if (clip.sphere) {\n expr = 'geoShape(' + param(clip.sphere) + ', {type: \"Sphere\"})';\n }\n }\n\n return expr\n ? scope.signalRef(expr)\n : !!clip;\n}\n\nfunction param(value) {\n return isObject(value) && value.signal\n ? value.signal\n : stringValue(value);\n}","import {GroupMark} from './marktypes';\nimport {ScopeRole, MarkRole} from './roles';\n\nexport default function(spec) {\n var role = spec.role || '';\n return (!role.indexOf('axis') || !role.indexOf('legend'))\n ? role\n : spec.type === GroupMark ? ScopeRole : (role || MarkRole);\n}\n","import role from './role';\n\nexport default function(spec) {\n return {\n marktype: spec.type,\n name: spec.name || undefined,\n role: spec.role || role(spec),\n zindex: +spec.zindex || undefined\n };\n}\n","export default function(spec, scope) {\n return spec && spec.signal ? scope.signalRef(spec.signal)\n : spec === false ? false\n : true;\n}\n","import parseExpression from './expression';\nimport {entry, fieldRef, isSignal, ref} from '../util';\nimport {Params} from '../transforms';\nimport {definition} from 'vega-dataflow';\nimport {error, extend, isArray, isString, stringValue} from 'vega-util';\n\n/**\n * Parse a data transform specification.\n */\nexport default function(spec, scope) {\n var def = definition(spec.type);\n if (!def) error('Unrecognized transform type: ' + stringValue(spec.type));\n\n var t = entry(def.type.toLowerCase(), null, parseParameters(def, spec, scope));\n if (spec.signal) scope.addSignal(spec.signal, scope.proxy(t));\n t.metadata = def.metadata || {};\n\n return t;\n}\n\n/**\n * Parse all parameters of a data transform.\n */\nfunction parseParameters(def, spec, scope) {\n var params = {}, pdef, i, n;\n for (i=0, n=def.params.length; i<n; ++i) {\n pdef = def.params[i];\n params[pdef.name] = parseParameter(pdef, spec, scope);\n }\n return params;\n}\n\n/**\n * Parse a data transform parameter.\n */\nfunction parseParameter(def, spec, scope) {\n var type = def.type,\n value = spec[def.name];\n\n if (type === 'index') {\n return parseIndexParameter(def, spec, scope);\n } else if (value === undefined) {\n if (def.required) {\n error('Missing required ' + stringValue(spec.type)\n + ' parameter: ' + stringValue(def.name));\n }\n return;\n } else if (type === 'param') {\n return parseSubParameters(def, spec, scope);\n } else if (type === 'projection') {\n return scope.projectionRef(spec[def.name]);\n }\n\n return def.array && !isSignal(value)\n ? value.map(function(v) { return parameterValue(def, v, scope); })\n : parameterValue(def, value, scope);\n}\n\n/**\n * Parse a single parameter value.\n */\nfunction parameterValue(def, value, scope) {\n var type = def.type;\n\n if (isSignal(value)) {\n return isExpr(type) ? error('Expression references can not be signals.')\n : isField(type) ? scope.fieldRef(value)\n : isCompare(type) ? scope.compareRef(value)\n : scope.signalRef(value.signal);\n } else {\n var expr = def.expr || isField(type);\n return expr && outerExpr(value) ? scope.exprRef(value.expr, value.as)\n : expr && outerField(value) ? fieldRef(value.field, value.as)\n : isExpr(type) ? parseExpression(value, scope)\n : isData(type) ? ref(scope.getData(value).values)\n : isField(type) ? fieldRef(value)\n : isCompare(type) ? scope.compareRef(value)\n : value;\n }\n}\n\n/**\n * Parse parameter for accessing an index of another data set.\n */\nfunction parseIndexParameter(def, spec, scope) {\n if (!isString(spec.from)) {\n error('Lookup \"from\" parameter must be a string literal.');\n }\n return scope.getData(spec.from).lookupRef(scope, spec.key);\n}\n\n/**\n * Parse a parameter that contains one or more sub-parameter objects.\n */\nfunction parseSubParameters(def, spec, scope) {\n var value = spec[def.name];\n\n if (def.array) {\n if (!isArray(value)) { // signals not allowed!\n error('Expected an array of sub-parameters. Instead: ' + stringValue(value));\n }\n return value.map(function(v) {\n return parseSubParameter(def, v, scope);\n });\n } else {\n return parseSubParameter(def, value, scope);\n }\n}\n\n/**\n * Parse a sub-parameter object.\n */\nfunction parseSubParameter(def, value, scope) {\n var params, pdef, k, i, n;\n\n // loop over defs to find matching key\n for (i=0, n=def.params.length; i<n; ++i) {\n pdef = def.params[i];\n for (k in pdef.key) {\n if (pdef.key[k] !== value[k]) { pdef = null; break; }\n }\n if (pdef) break;\n }\n // raise error if matching key not found\n if (!pdef) error('Unsupported parameter: ' + stringValue(value));\n\n // parse params, create Params transform, return ref\n params = extend(parseParameters(pdef, value, scope), pdef.key);\n return ref(scope.add(Params(params)));\n}\n\n// -- Utilities -----\n\nexport function outerExpr(_) {\n return _ && _.expr;\n}\n\nexport function outerField(_) {\n return _ && _.field;\n}\n\nexport function isData(_) {\n return _ === 'data';\n}\n\nexport function isExpr(_) {\n return _ === 'expr';\n}\n\nexport function isField(_) {\n return _ === 'field';\n}\n\nexport function isCompare(_) {\n return _ === 'compare'\n}\n","import parseTransform from '../transform';\nimport {ref} from '../../util';\nimport {Collect} from '../../transforms';\nimport {array, error, extend} from 'vega-util';\n\nexport default function(from, group, scope) {\n var facet, key, op, dataRef, parent;\n\n // if no source data, generate singleton datum\n if (!from) {\n dataRef = ref(scope.add(Collect(null, [{}])));\n }\n\n // if faceted, process facet specification\n else if (facet = from.facet) {\n if (!group) error('Only group marks can be faceted.');\n\n // use pre-faceted source data, if available\n if (facet.field != null) {\n dataRef = parent = getDataRef(facet, scope);\n } else {\n // generate facet aggregates if no direct data specification\n if (!from.data) {\n op = parseTransform(extend({\n type: 'aggregate',\n groupby: array(facet.groupby)\n }, facet.aggregate), scope);\n op.params.key = scope.keyRef(facet.groupby);\n op.params.pulse = getDataRef(facet, scope);\n dataRef = parent = ref(scope.add(op));\n } else {\n parent = ref(scope.getData(from.data).aggregate);\n }\n\n key = scope.keyRef(facet.groupby, true);\n }\n }\n\n // if not yet defined, get source data reference\n if (!dataRef) {\n dataRef = getDataRef(from, scope);\n }\n\n return {\n key: key,\n pulse: dataRef,\n parent: parent\n };\n}\n\nexport function getDataRef(from, scope) {\n return from.$ref ? from\n : from.data && from.data.$ref ? from.data\n : ref(scope.getData(from.data).output);\n}","import {entry, ref, keyFieldRef, aggrField, sortKey} from './util';\nimport {Aggregate, Collect} from './transforms';\nimport {isString} from 'vega-util';\n\nexport default function DataScope(scope, input, output, values, aggr) {\n this.scope = scope; // parent scope object\n this.input = input; // first operator in pipeline (tuple input)\n this.output = output; // last operator in pipeline (tuple output)\n this.values = values; // operator for accessing tuples (but not tuple flow)\n\n // last aggregate in transform pipeline\n this.aggregate = aggr;\n\n // lookup table of field indices\n this.index = {};\n}\n\nDataScope.fromEntries = function(scope, entries) {\n var n = entries.length,\n i = 1,\n input = entries[0],\n values = entries[n-1],\n output = entries[n-2],\n aggr = null;\n\n if (input && input.type === 'load') {\n input = entries[1];\n }\n\n // add operator entries to this scope, wire up pulse chain\n scope.add(entries[0]);\n for (; i<n; ++i) {\n entries[i].params.pulse = ref(entries[i-1]);\n scope.add(entries[i]);\n if (entries[i].type === 'aggregate') aggr = entries[i];\n }\n\n return new DataScope(scope, input, output, values, aggr);\n};\n\nvar prototype = DataScope.prototype;\n\nprototype.countsRef = function(scope, field, sort) {\n var ds = this,\n cache = ds.counts || (ds.counts = {}),\n k = fieldKey(field), v, a, p;\n\n if (k != null) {\n scope = ds.scope;\n v = cache[k];\n }\n\n if (!v) {\n p = {\n groupby: scope.fieldRef(field, 'key'),\n pulse: ref(ds.output)\n };\n if (sort && sort.field) addSortField(scope, p, sort);\n a = scope.add(Aggregate(p));\n v = scope.add(Collect({pulse: ref(a)}));\n v = {agg: a, ref: ref(v)};\n if (k != null) cache[k] = v;\n } else if (sort && sort.field) {\n addSortField(scope, v.agg.params, sort);\n }\n\n return v.ref;\n};\n\nfunction fieldKey(field) {\n return isString(field) ? field : null;\n}\n\nfunction addSortField(scope, p, sort) {\n var as = aggrField(sort.op, sort.field), s;\n\n if (p.ops) {\n for (var i=0, n=p.as.length; i<n; ++i) {\n if (p.as[i] === as) return;\n }\n } else {\n p.ops = ['count'];\n p.fields = [null];\n p.as = ['count'];\n }\n if (sort.op) {\n p.ops.push((s=sort.op.signal) ? scope.signalRef(s) : sort.op);\n p.fields.push(scope.fieldRef(sort.field));\n p.as.push(as);\n }\n}\n\nfunction cache(scope, ds, name, optype, field, counts, index) {\n var cache = ds[name] || (ds[name] = {}),\n sort = sortKey(counts),\n k = fieldKey(field), v, op;\n\n if (k != null) {\n scope = ds.scope;\n k = k + (sort ? '|' + sort : '');\n v = cache[k];\n }\n\n if (!v) {\n var params = counts\n ? {field: keyFieldRef, pulse: ds.countsRef(scope, field, counts)}\n : {field: scope.fieldRef(field), pulse: ref(ds.output)};\n if (sort) params.sort = scope.sortRef(counts);\n op = scope.add(entry(optype, undefined, params));\n if (index) ds.index[field] = op;\n v = ref(op);\n if (k != null) cache[k] = v;\n }\n return v;\n}\n\nprototype.tuplesRef = function() {\n return ref(this.values);\n};\n\nprototype.extentRef = function(scope, field) {\n return cache(scope, this, 'extent', 'extent', field, false);\n};\n\nprototype.domainRef = function(scope, field) {\n return cache(scope, this, 'domain', 'values', field, false);\n};\n\nprototype.valuesRef = function(scope, field, sort) {\n return cache(scope, this, 'vals', 'values', field, sort || true);\n};\n\nprototype.lookupRef = function(scope, field) {\n return cache(scope, this, 'lookup', 'tupleindex', field, false);\n};\n\nprototype.indataRef = function(scope, field) {\n return cache(scope, this, 'indata', 'tupleindex', field, true, true);\n};\n","import {getDataRef} from './data';\nimport parseSpec from '../spec';\nimport DataScope from '../../DataScope';\nimport {ref} from '../../util';\nimport {Collect, Facet, PreFacet, Sieve} from '../../transforms';\nimport {error, stringValue} from 'vega-util';\n\nexport default function(spec, scope, group) {\n var facet = spec.from.facet,\n name = facet.name,\n data = getDataRef(facet, scope),\n subscope, source, values, op;\n\n if (!facet.name) {\n error('Facet must have a name: ' + stringValue(facet));\n }\n if (!facet.data) {\n error('Facet must reference a data set: ' + stringValue(facet));\n }\n\n if (facet.field) {\n op = scope.add(PreFacet({\n field: scope.fieldRef(facet.field),\n pulse: data\n }));\n } else if (facet.groupby) {\n op = scope.add(Facet({\n key: scope.keyRef(facet.groupby),\n group: ref(scope.proxy(group.parent)),\n pulse: data\n }));\n } else {\n error('Facet must specify groupby or field: ' + stringValue(facet));\n }\n\n // initialize facet subscope\n subscope = scope.fork();\n source = subscope.add(Collect());\n values = subscope.add(Sieve({pulse: ref(source)}));\n subscope.addData(name, new DataScope(subscope, source, source, values));\n subscope.addSignal('parent', null);\n\n // parse faceted subflow\n op.params.subflow = {\n $subflow: parseSpec(spec, subscope).toRuntime()\n };\n}\n","import parseExpression from './expression';\nimport {operator} from '../util';\n\nexport default function(spec, scope, name) {\n var remove = spec.remove,\n insert = spec.insert,\n toggle = spec.toggle,\n modify = spec.modify,\n values = spec.values,\n op = scope.add(operator()),\n update, expr;\n\n update = 'if(' + spec.trigger + ',modify(\"'\n + name + '\",'\n + [insert, remove, toggle, modify, values]\n .map(function(_) { return _ == null ? 'null' : _; })\n .join(',')\n + '),0)';\n\n expr = parseExpression(update, scope);\n op.update = expr.$expr;\n op.params = expr.$params;\n}\n","import clip from './marks/clip';\nimport definition from './marks/definition';\nimport interactive from './marks/interactive';\nimport parseData from './marks/data';\nimport parseFacet from './marks/facet';\nimport parseSubflow from './marks/subflow';\nimport getRole from './marks/role';\nimport {GroupMark} from './marks/marktypes';\nimport {FrameRole, MarkRole, ScopeRole} from './marks/roles';\nimport {encoders} from './encode/encode-util';\nimport parseTransform from './transform';\nimport parseTrigger from './trigger';\nimport parseSpec from './spec';\nimport DataScope from '../DataScope';\nimport {fieldRef, isSignal, ref} from '../util';\nimport {error} from 'vega-util';\nimport {Bound, Collect, DataJoin, Mark, Encode, Overlap, Render, Sieve, SortItems, ViewLayout} from '../transforms';\n\nexport default function(spec, scope) {\n var role = getRole(spec),\n group = spec.type === GroupMark,\n facet = spec.from && spec.from.facet,\n layout = spec.layout || role === ScopeRole || role === FrameRole,\n nested = role === MarkRole || layout || facet,\n overlap = spec.overlap,\n ops, op, input, store, enc, bound, render, sieve, name,\n joinRef, markRef, encodeRef, layoutRef, boundRef;\n\n // resolve input data\n input = parseData(spec.from, group, scope);\n\n // data join to map tuples to visual items\n op = scope.add(DataJoin({\n key: input.key || (spec.key ? fieldRef(spec.key) : undefined),\n pulse: input.pulse,\n clean: !group\n }));\n joinRef = ref(op);\n\n // collect visual items\n op = store = scope.add(Collect({pulse: joinRef}));\n\n // connect visual items to scenegraph\n op = scope.add(Mark({\n markdef: definition(spec),\n interactive: interactive(spec.interactive, scope),\n clip: clip(spec.clip, scope),\n context: {$context: true},\n groups: scope.lookup(),\n parent: scope.signals.parent ? scope.signalRef('parent') : null,\n index: scope.markpath(),\n pulse: ref(op)\n }));\n markRef = ref(op);\n\n // add visual encoders\n op = enc = scope.add(Encode(encoders(\n spec.encode, spec.type, role, spec.style, scope,\n {mod: false, pulse: markRef}\n )));\n\n // monitor parent marks to propagate changes\n op.params.parent = scope.encode();\n\n // add post-encoding transforms, if defined\n if (spec.transform) {\n spec.transform.forEach(function(_) {\n const tx = parseTransform(_, scope),\n md = tx.metadata;\n if (md.generates || md.changes) {\n error('Mark transforms should not generate new data.');\n }\n if (!md.nomod) enc.params.mod = true; // update encode mod handling\n tx.params.pulse = ref(op);\n scope.add(op = tx);\n });\n }\n\n // if item sort specified, perform post-encoding\n if (spec.sort) {\n op = scope.add(SortItems({\n sort: scope.compareRef(spec.sort, true), // stable sort\n pulse: ref(op)\n }));\n }\n\n encodeRef = ref(op);\n\n // add view layout operator if needed\n if (facet || layout) {\n layout = scope.add(ViewLayout({\n layout: scope.objectProperty(spec.layout),\n legends: scope.legends,\n mark: markRef,\n pulse: encodeRef\n }));\n layoutRef = ref(layout);\n }\n\n // compute bounding boxes\n bound = scope.add(Bound({mark: markRef, pulse: layoutRef || encodeRef}));\n boundRef = ref(bound);\n\n // if group mark, recurse to parse nested content\n if (group) {\n // juggle layout & bounds to ensure they run *after* any faceting transforms\n if (nested) { ops = scope.operators; ops.pop(); if (layout) ops.pop(); }\n\n scope.pushState(encodeRef, layoutRef || boundRef, joinRef);\n facet ? parseFacet(spec, scope, input) // explicit facet\n : nested ? parseSubflow(spec, scope, input) // standard mark group\n : parseSpec(spec, scope); // guide group, we can avoid nested scopes\n scope.popState();\n\n if (nested) { if (layout) ops.push(layout); ops.push(bound); }\n }\n\n // if requested, add overlap removal transform\n if (overlap) {\n boundRef = parseOverlap(overlap, boundRef, scope);\n }\n\n // render / sieve items\n render = scope.add(Render({pulse: boundRef}));\n sieve = scope.add(Sieve({pulse: ref(render)}, undefined, scope.parent()));\n\n // if mark is named, make accessible as reactive geometry\n // add trigger updates if defined\n if (spec.name != null) {\n name = spec.name;\n scope.addData(name, new DataScope(scope, store, render, sieve));\n if (spec.on) spec.on.forEach(function(on) {\n if (on.insert || on.remove || on.toggle) {\n error('Marks only support modify triggers.');\n }\n parseTrigger(on, scope, name);\n });\n }\n}\n\nfunction parseOverlap(overlap, source, scope) {\n var method = overlap.method,\n bound = overlap.bound,\n sep = overlap.separation, tol;\n\n var params = {\n separation: isSignal(sep) ? scope.signalRef(sep.signal) : sep,\n method: isSignal(method) ? scope.signalRef(method.signal) : method,\n pulse: source\n };\n\n if (overlap.order) {\n params.sort = scope.compareRef({field: overlap.order});\n }\n\n if (bound) {\n tol = bound.tolerance;\n params.boundTolerance = isSignal(tol) ? scope.signalRef(tol.signal) : +tol;\n params.boundScale = scope.scaleRef(bound.scale);\n params.boundOrient = bound.orient;\n }\n\n return ref(scope.add(Overlap(params)));\n}\n","import parseSpec from '../spec';\nimport {Sieve, PreFacet} from '../../transforms';\n\nexport default function(spec, scope, input) {\n var op = scope.add(PreFacet({pulse: input.pulse})),\n subscope = scope.fork();\n\n subscope.add(Sieve());\n subscope.addSignal('parent', null);\n\n // parse group mark subflow\n op.params.subflow = {\n $subflow: parseSpec(spec, subscope).toRuntime()\n };\n}\n","import {\n GuideLabelStyle, Skip,\n Symbols, Gradient, Discrete, LegendScales\n} from './guides/constants';\nimport legendGradient from './guides/legend-gradient';\nimport legendGradientDiscrete from './guides/legend-gradient-discrete';\nimport legendGradientLabels from './guides/legend-gradient-labels';\nimport {default as legendSymbolGroups, legendSymbolLayout} from './guides/legend-symbol-groups';\nimport legendTitle from './guides/legend-title';\nimport guideGroup from './guides/guide-group';\nimport {getEncoding, getStyle, lookup} from './guides/guide-util';\nimport parseExpression from './expression';\nimport parseMark from './mark';\nimport {LegendRole, LegendEntryRole} from './marks/roles';\nimport {addEncoders, extendEncode} from './encode/encode-util';\nimport {ref, deref} from '../util';\nimport {Collect, LegendEntries} from '../transforms';\n\nimport {isContinuous, isDiscretizing} from 'vega-scale';\nimport {error} from 'vega-util';\n\nexport default function(spec, scope) {\n var config = scope.config.legend,\n encode = spec.encode || {},\n legendEncode = encode.legend || {},\n name = legendEncode.name || undefined,\n interactive = legendEncode.interactive,\n style = legendEncode.style,\n _ = lookup(spec, config),\n entryEncode, entryLayout, params, children,\n type, datum, dataRef, entryRef, group;\n\n // resolve 'canonical' scale name\n var scale = LegendScales.reduce(function(a, b) { return a || spec[b]; }, 0);\n if (!scale) error('Missing valid scale for legend.');\n\n // resolve legend type (symbol, gradient, or discrete gradient)\n type = legendType(spec, scope.scaleType(scale));\n\n // single-element data source for legend group\n datum = {\n title: spec.title != null,\n type: type,\n vgrad: type !== 'symbol' && _.isVertical()\n };\n dataRef = ref(scope.add(Collect(null, [datum])));\n\n // encoding properties for legend group\n legendEncode = extendEncode(\n buildLegendEncode(_, config), legendEncode, Skip\n );\n\n // encoding properties for legend entry sub-group\n entryEncode = {enter: {x: {value: 0}, y: {value: 0}}};\n\n // data source for legend values\n entryRef = ref(scope.add(LegendEntries(params = {\n type: type,\n scale: scope.scaleRef(scale),\n count: scope.objectProperty(spec.tickCount),\n values: scope.objectProperty(spec.values),\n minstep: scope.property(spec.tickMinStep),\n formatType: scope.property(spec.formatType),\n formatSpecifier: scope.property(spec.format)\n })));\n\n // continuous gradient legend\n if (type === Gradient) {\n children = [\n legendGradient(spec, scale, config, encode.gradient),\n legendGradientLabels(spec, config, encode.labels, entryRef)\n ];\n // adjust default tick count based on the gradient length\n params.count = params.count || scope.signalRef(\n `max(2,2*floor((${deref(_.gradientLength())})/100))`\n );\n }\n\n // discrete gradient legend\n else if (type === Discrete) {\n children = [\n legendGradientDiscrete(spec, scale, config, encode.gradient, entryRef),\n legendGradientLabels(spec, config, encode.labels, entryRef)\n ];\n }\n\n // symbol legend\n else {\n // determine legend symbol group layout\n entryLayout = legendSymbolLayout(spec, config);\n children = [\n legendSymbolGroups(spec, config, encode, entryRef, deref(entryLayout.columns))\n ];\n // pass symbol size information to legend entry generator\n params.size = sizeExpression(spec, scope, children[0].marks);\n }\n\n // generate legend marks\n children = [\n guideGroup(LegendEntryRole, null, null, dataRef, interactive,\n entryEncode, children, entryLayout)\n ];\n\n // include legend title if defined\n if (datum.title) {\n children.push(legendTitle(spec, config, encode.title, dataRef));\n }\n\n // build legend specification\n group = guideGroup(LegendRole, style, name, dataRef, interactive, legendEncode, children);\n if (spec.zindex) group.zindex = spec.zindex;\n\n // parse legend specification\n return parseMark(group, scope);\n}\n\nfunction legendType(spec, scaleType) {\n var type = spec.type || Symbols;\n\n if (!spec.type && scaleCount(spec) === 1 && (spec.fill || spec.stroke)) {\n type = isContinuous(scaleType) ? Gradient\n : isDiscretizing(scaleType) ? Discrete\n : Symbols;\n }\n\n return type !== Gradient ? type\n : isDiscretizing(scaleType) ? Discrete\n : Gradient;\n}\n\nfunction scaleCount(spec) {\n return LegendScales.reduce(function(count, type) {\n return count + (spec[type] ? 1 : 0);\n }, 0);\n}\n\nfunction buildLegendEncode(_, config) {\n var encode = {enter: {}, update: {}};\n\n addEncoders(encode, {\n orient: _('orient'),\n offset: _('offset'),\n padding: _('padding'),\n titlePadding: _('titlePadding'),\n cornerRadius: _('cornerRadius'),\n fill: _('fillColor'),\n stroke: _('strokeColor'),\n strokeWidth: config.strokeWidth,\n strokeDash: config.strokeDash,\n x: _('legendX'),\n y: _('legendY'),\n });\n\n return encode;\n}\n\nfunction sizeExpression(spec, scope, marks) {\n var size = deref(getChannel('size', spec, marks)),\n strokeWidth = deref(getChannel('strokeWidth', spec, marks)),\n fontSize = deref(getFontSize(marks[1].encode, scope, GuideLabelStyle));\n\n return parseExpression(\n `max(ceil(sqrt(${size})+${strokeWidth}),${fontSize})`,\n scope\n );\n}\n\nfunction getChannel(name, spec, marks) {\n return spec[name]\n ? `scale(\"${spec[name]}\",datum)`\n : getEncoding(name, marks[0].encode);\n}\n\nfunction getFontSize(encode, scope, style) {\n return getEncoding('fontSize', encode) || getStyle('fontSize', scope, style);\n}\n","import {Top, Bottom, Left, Right, GroupTitleStyle} from './guides/constants';\nimport guideMark from './guides/guide-mark';\nimport {alignExpr, lookup} from './guides/guide-util';\nimport parseMark from './mark';\nimport {TextMark} from './marks/marktypes';\nimport {TitleRole} from './marks/roles';\nimport {addEncoders} from './encode/encode-util';\nimport {ref} from '../util';\nimport {Collect} from '../transforms';\nimport {extend, isString} from 'vega-util';\n\nconst angleExpr = `item.orient===\"${Left}\"?-90:item.orient===\"${Right}\"?90:0`,\n baselineExpr = `item.orient===\"${Bottom}\"?\"${Top}\":\"${Bottom}\"`;\n\nexport default function(spec, scope) {\n spec = isString(spec) ? {text: spec} : spec;\n\n var config = scope.config.title,\n encode = extend({}, spec.encode),\n dataRef, title;\n\n // single-element data source for group title\n dataRef = ref(scope.add(Collect(null, [{}])));\n\n // build title specification\n encode.name = spec.name;\n encode.interactive = spec.interactive;\n title = buildTitle(spec, config, encode, dataRef);\n if (spec.zindex) title.zindex = spec.zindex;\n\n // parse title specification\n return parseMark(title, scope);\n}\n\nfunction buildTitle(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n zero = {value: 0},\n title = spec.text,\n encode;\n\n encode = {\n enter: {opacity: zero},\n update: {opacity: {value: 1}},\n exit: {opacity: zero}\n };\n\n addEncoders(encode, {\n text: title,\n orient: _('orient'),\n anchor: _('anchor'),\n align: {signal: alignExpr},\n angle: {signal: angleExpr},\n baseline: {signal: baselineExpr},\n dx: _('dx'),\n dy: _('dy'),\n fill: _('color'),\n font: _('font'),\n fontSize: _('fontSize'),\n fontStyle: _('fontStyle'),\n fontWeight: _('fontWeight'),\n frame: _('frame'),\n limit: _('limit'),\n offset: _('offset') || 0\n }, { // update\n align: _('align'),\n angle: _('angle'),\n baseline: _('baseline')\n });\n\n return guideMark(TextMark, TitleRole, spec.style || GroupTitleStyle,\n null, dataRef, encode, userEncode);\n}\n","import parseTransform from './transform';\nimport parseTrigger from './trigger';\nimport {hasSignal, ref} from '../util';\nimport {Collect, Load, Relay, Sieve} from '../transforms';\nimport {array} from 'vega-util';\n\nexport default function parseData(data, scope) {\n var transforms = [];\n\n if (data.transform) {\n data.transform.forEach(function(tx) {\n transforms.push(parseTransform(tx, scope));\n });\n }\n\n if (data.on) {\n data.on.forEach(function(on) {\n parseTrigger(on, scope, data.name);\n });\n }\n\n scope.addDataPipeline(data.name, analyze(data, scope, transforms));\n}\n\n/**\n * Analyze a data pipeline, add needed operators.\n */\nfunction analyze(data, scope, ops) {\n var output = [],\n source = null,\n modify = false,\n generate = false,\n upstream, i, n, t, m;\n\n if (data.values) {\n // hard-wired input data set\n if (hasSignal(data.values) || hasSignal(data.format)) {\n // if either values or format has signal, use dynamic loader\n output.push(load(scope, data));\n output.push(source = collect());\n } else {\n // otherwise, ingest upon dataflow init\n output.push(source = collect({\n $ingest: data.values,\n $format: data.format\n }));\n }\n } else if (data.url) {\n // load data from external source\n if (hasSignal(data.url) || hasSignal(data.format)) {\n // if either url or format has signal, use dynamic loader\n output.push(load(scope, data));\n output.push(source = collect());\n } else {\n // otherwise, request load upon dataflow init\n output.push(source = collect({\n $request: data.url,\n $format: data.format\n }));\n }\n } else if (data.source) {\n // derives from one or more other data sets\n source = upstream = array(data.source).map(function(d) {\n return ref(scope.getData(d).output);\n });\n output.push(null); // populate later\n }\n\n // scan data transforms, add collectors as needed\n for (i=0, n=ops.length; i<n; ++i) {\n t = ops[i];\n m = t.metadata;\n\n if (!source && !m.source) {\n output.push(source = collect());\n }\n output.push(t);\n\n if (m.generates) generate = true;\n if (m.modifies && !generate) modify = true;\n\n if (m.source) source = t;\n else if (m.changes) source = null;\n }\n\n if (upstream) {\n n = upstream.length - 1;\n output[0] = Relay({\n derive: modify,\n pulse: n ? upstream : upstream[0]\n });\n if (modify || n) {\n // collect derived and multi-pulse tuples\n output.splice(1, 0, collect());\n }\n }\n\n if (!source) output.push(collect());\n output.push(Sieve({}));\n return output;\n}\n\nfunction collect(values) {\n var s = Collect({}, values);\n s.metadata = {source: true};\n return s;\n}\n\nfunction load(scope, data) {\n return Load({\n url: data.url ? scope.property(data.url) : undefined,\n values: data.values ? scope.property(data.values) : undefined,\n format: scope.objectProperty(data.format)\n });\n}\n","import {Top, Bottom, zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {RuleMark} from '../marks/marktypes';\nimport {AxisDomainRole} from '../marks/roles';\nimport {addEncoders} from '../encode/encode-util';\n\nexport default function(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n encode, enter, update, u, u2, v;\n\n encode = {\n enter: enter = {opacity: zero},\n update: update = {opacity: one},\n exit: {opacity: zero}\n };\n\n addEncoders(encode, {\n stroke: _('domainColor'),\n strokeDash: _('domainDash'),\n strokeDashOffset: _('domainDashOffset'),\n strokeWidth: _('domainWidth'),\n strokeOpacity: _('domainOpacity')\n });\n\n if (orient === Top || orient === Bottom) {\n u = 'x';\n v = 'y';\n } else {\n u = 'y';\n v = 'x';\n }\n u2 = u + '2';\n\n enter[v] = zero;\n update[u] = enter[u] = position(spec, 0);\n update[u2] = enter[u2] = position(spec, 1);\n\n return guideMark(RuleMark, AxisDomainRole, null, null, dataRef, encode, userEncode);\n}\n\nfunction position(spec, pos) {\n return {scale: spec.scale, range: pos};\n}\n","import {Left, Top, Bottom, Value, zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {RuleMark} from '../marks/marktypes';\nimport {AxisGridRole} from '../marks/roles';\nimport {addEncoders} from '../encode/encode-util';\nimport {extend, isObject} from 'vega-util';\n\nexport default function(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n vscale = spec.gridScale,\n sign = (orient === Left || orient === Top) ? 1 : -1,\n offset = offsetValue(spec.offset, sign),\n encode, enter, exit, update, tickPos, u, v, v2, s;\n\n encode = {\n enter: enter = {opacity: zero},\n update: update = {opacity: one},\n exit: exit = {opacity: zero}\n };\n\n addEncoders(encode, {\n stroke: _('gridColor'),\n strokeDash: _('gridDash'),\n strokeDashOffset: _('gridDashOffset'),\n strokeOpacity: _('gridOpacity'),\n strokeWidth: _('gridWidth')\n });\n\n tickPos = {\n scale: spec.scale,\n field: Value,\n band: _('bandPosition'),\n round: _('tickRound'),\n extra: _('tickExtra'),\n offset: _('tickOffset')\n };\n\n if (orient === Top || orient === Bottom) {\n u = 'x';\n v = 'y';\n s = 'height';\n } else {\n u = 'y';\n v = 'x';\n s = 'width';\n }\n v2 = v + '2';\n\n update[u] = enter[u] = exit[u] = tickPos;\n\n if (vscale) {\n update[v] = enter[v] = {scale: vscale, range: 0, mult: sign, offset: offset};\n update[v2] = enter[v2] = {scale: vscale, range: 1, mult: sign, offset: offset};\n } else {\n update[v] = enter[v] = {value: 0, offset: offset};\n update[v2] = enter[v2] = {signal: s, mult: sign, offset: offset};\n }\n\n return guideMark(RuleMark, AxisGridRole, null, Value, dataRef, encode, userEncode);\n}\n\nfunction offsetValue(offset, sign) {\n if (sign === 1) {\n // do nothing!\n } else if (!isObject(offset)) {\n offset = sign * (offset || 0);\n } else {\n var entry = offset = extend({}, offset);\n\n while (entry.mult != null) {\n if (!isObject(entry.mult)) {\n entry.mult *= sign;\n return offset;\n } else {\n entry = entry.mult = extend({}, entry.mult);\n }\n }\n\n entry.mult = sign;\n }\n\n return offset;\n}\n","import {Top, Bottom, Left, Right, Label, Value, GuideLabelStyle, zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {TextMark} from '../marks/marktypes';\nimport {AxisLabelRole} from '../marks/roles';\nimport {addEncoders, encoder} from '../encode/encode-util';\nimport {deref} from '../../util';\n\nfunction flushExpr(scale, threshold, a, b, c) {\n return {\n signal: 'flush(range(\"' + scale + '\"), '\n + 'scale(\"' + scale + '\", datum.value), '\n + threshold + ',' + a + ',' + b + ',' + c + ')'\n };\n}\n\nexport default function(spec, config, userEncode, dataRef, size) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n sign = (orient === Left || orient === Top) ? -1 : 1,\n isXAxis = (orient === Top || orient === Bottom),\n scale = spec.scale,\n flush = deref(_('labelFlush')),\n flushOffset = deref(_('labelFlushOffset')),\n flushOn = flush === 0 || !!flush,\n labelAlign = _('labelAlign'),\n labelBaseline = _('labelBaseline'),\n encode, enter, tickSize, tickPos, align, baseline, offset,\n bound, overlap, separation;\n\n tickSize = encoder(size);\n tickSize.mult = sign;\n tickSize.offset = encoder(_('labelPadding') || 0);\n tickSize.offset.mult = sign;\n\n tickPos = {\n scale: scale,\n field: Value,\n band: 0.5,\n offset: _('tickOffset')\n };\n\n if (isXAxis) {\n align = labelAlign || (flushOn\n ? flushExpr(scale, flush, '\"left\"', '\"right\"', '\"center\"')\n : 'center');\n baseline = labelBaseline || (orient === Top ? 'bottom' : 'top');\n offset = !labelAlign;\n } else {\n align = labelAlign || (orient === Right ? 'left' : 'right');\n baseline = labelBaseline || (flushOn\n ? flushExpr(scale, flush, '\"top\"', '\"bottom\"', '\"middle\"')\n : 'middle');\n offset = !labelBaseline;\n }\n\n offset = offset && flushOn && flushOffset\n ? flushExpr(scale, flush, '-' + flushOffset, flushOffset, 0)\n : null;\n\n encode = {\n enter: enter = {\n opacity: zero,\n x: isXAxis ? tickPos : tickSize,\n y: isXAxis ? tickSize : tickPos\n },\n update: {\n opacity: one,\n text: {field: Label},\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero,\n x: enter.x,\n y: enter.y\n }\n };\n\n addEncoders(encode, {\n [isXAxis ? 'dx' : 'dy']: offset,\n align: align,\n baseline: baseline,\n angle: _('labelAngle'),\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontWeight: _('labelFontWeight'),\n fontStyle: _('labelFontStyle'),\n limit: _('labelLimit')\n });\n\n bound = _('labelBound');\n overlap = _('labelOverlap');\n separation = _('labelSeparation');\n\n spec = guideMark(TextMark, AxisLabelRole, GuideLabelStyle, Value, dataRef, encode, userEncode);\n\n // if overlap method or bound defined, request label overlap removal\n if (overlap || bound) {\n spec.overlap = {\n separation: separation,\n method: overlap,\n order: 'datum.index',\n bound: bound ? {scale: scale, orient: orient, tolerance: bound} : null\n };\n }\n\n return spec;\n}\n","import axisConfig from './guides/axis-config';\nimport axisDomain from './guides/axis-domain';\nimport axisGrid from './guides/axis-grid';\nimport axisTicks from './guides/axis-ticks';\nimport axisLabels from './guides/axis-labels';\nimport axisTitle from './guides/axis-title';\nimport guideGroup from './guides/guide-group';\nimport {lookup} from './guides/guide-util';\nimport {AxisRole} from './marks/roles';\nimport parseMark from './mark';\nimport {encoder, extendEncode} from './encode/encode-util';\nimport {Skip} from './guides/constants';\nimport {ref, value} from '../util';\nimport {Collect, AxisTicks} from '../transforms';\n\nexport default function(spec, scope) {\n var config = axisConfig(spec, scope),\n encode = spec.encode || {},\n axisEncode = encode.axis || {},\n name = axisEncode.name || undefined,\n interactive = axisEncode.interactive,\n style = axisEncode.style,\n _ = lookup(spec, config),\n datum, dataRef, ticksRef, size, group, children;\n\n // single-element data source for axis group\n datum = {\n orient: spec.orient,\n ticks: !!_('ticks'),\n labels: !!_('labels'),\n grid: !!_('grid'),\n domain: !!_('domain'),\n title: spec.title != null\n };\n dataRef = ref(scope.add(Collect({}, [datum])));\n\n // encoding properties for axis group item\n axisEncode = extendEncode({\n update: {\n offset: encoder(_('offset') || 0),\n position: encoder(value(spec.position, 0)),\n titlePadding: encoder(_('titlePadding')),\n minExtent: encoder(_('minExtent')),\n maxExtent: encoder(_('maxExtent')),\n range: {signal: `abs(span(range(\"${spec.scale}\")))`}\n }\n }, encode.axis, Skip);\n\n // data source for axis ticks\n ticksRef = ref(scope.add(AxisTicks({\n scale: scope.scaleRef(spec.scale),\n extra: scope.property(_('tickExtra')),\n count: scope.objectProperty(spec.tickCount),\n values: scope.objectProperty(spec.values),\n minstep: scope.property(spec.tickMinStep),\n formatType: scope.property(spec.formatType),\n formatSpecifier: scope.property(spec.format)\n })));\n\n // generate axis marks\n children = [];\n\n // include axis gridlines if requested\n if (datum.grid) {\n children.push(axisGrid(spec, config, encode.grid, ticksRef));\n }\n\n // include axis ticks if requested\n if (datum.ticks) {\n size = _('tickSize');\n children.push(axisTicks(spec, config, encode.ticks, ticksRef, size));\n }\n\n // include axis labels if requested\n if (datum.labels) {\n size = datum.ticks ? size : 0;\n children.push(axisLabels(spec, config, encode.labels, ticksRef, size));\n }\n\n // include axis domain path if requested\n if (datum.domain) {\n children.push(axisDomain(spec, config, encode.domain, dataRef));\n }\n\n // include axis title if defined\n if (datum.title) {\n children.push(axisTitle(spec, config, encode.title, dataRef));\n }\n\n // build axis specification\n group = guideGroup(AxisRole, style, name, dataRef, interactive, axisEncode, children);\n if (spec.zindex) group.zindex = spec.zindex;\n\n // parse axis specification\n return parseMark(group, scope);\n}\n","import {Top, Bottom} from './constants';\nimport {extend} from 'vega-util';\n\nexport default function(spec, scope) {\n var config = scope.config,\n orient = spec.orient,\n xy = (orient === Top || orient === Bottom) ? config.axisX : config.axisY,\n or = config['axis' + orient[0].toUpperCase() + orient.slice(1)],\n band = scope.scaleType(spec.scale) === 'band' && config.axisBand;\n\n return (xy || or || band)\n ? extend({}, config.axis, xy, or, band)\n : config.axis;\n}","import {Top, Left, Bottom, Value, zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {lookup} from './guide-util';\nimport {RuleMark} from '../marks/marktypes';\nimport {AxisTickRole} from '../marks/roles';\nimport {addEncoders, encoder} from '../encode/encode-util';\n\nexport default function(spec, config, userEncode, dataRef, size) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n sign = (orient === Left || orient === Top) ? -1 : 1,\n encode, enter, exit, update, tickSize, tickPos;\n\n encode = {\n enter: enter = {opacity: zero},\n update: update = {opacity: one},\n exit: exit = {opacity: zero}\n };\n\n addEncoders(encode, {\n stroke: _('tickColor'),\n strokeDash: _('tickDash'),\n strokeDashOffset: _('tickDashOffset'),\n strokeOpacity: _('tickOpacity'),\n strokeWidth: _('tickWidth')\n });\n\n tickSize = encoder(size);\n tickSize.mult = sign;\n\n tickPos = {\n scale: spec.scale,\n field: Value,\n band: _('bandPosition'),\n round: _('tickRound'),\n extra: _('tickExtra'),\n offset: _('tickOffset')\n };\n\n if (orient === Top || orient === Bottom) {\n update.y = enter.y = zero;\n update.y2 = enter.y2 = tickSize;\n update.x = enter.x = exit.x = tickPos;\n } else {\n update.x = enter.x = zero;\n update.x2 = enter.x2 = tickSize;\n update.y = enter.y = exit.y = tickPos;\n }\n\n return guideMark(RuleMark, AxisTickRole, null, Value, dataRef, encode, userEncode);\n}\n","import {Top, Bottom, Left, GuideTitleStyle, zero, one} from './constants';\nimport guideMark from './guide-mark';\nimport {alignExpr, anchorExpr, lookup} from './guide-util';\nimport {encoder, has} from '../encode/encode-util';\nimport {TextMark} from '../marks/marktypes';\nimport {AxisTitleRole} from '../marks/roles';\nimport {addEncode, addEncoders} from '../encode/encode-util';\nimport {extend} from 'vega-util';\n\nexport default function(spec, config, userEncode, dataRef) {\n var _ = lookup(spec, config),\n orient = spec.orient,\n sign = (orient === Left || orient === Top) ? -1 : 1,\n horizontal = (orient === Top || orient === Bottom),\n encode, enter, update, titlePos;\n\n encode = {\n enter: enter = {\n opacity: zero,\n anchor: encoder(_('titleAnchor')),\n align: {signal: alignExpr}\n },\n update: update = extend({}, enter, {\n opacity: one,\n text: encoder(spec.title)\n }),\n exit: {\n opacity: zero\n }\n };\n\n titlePos = {\n signal: `lerp(range(\"${spec.scale}\"), ${anchorExpr(0, 1, 0.5)})`\n };\n\n if (horizontal) {\n update.x = titlePos;\n enter.angle = {value: 0};\n enter.baseline = {value: orient === Top ? 'bottom' : 'top'};\n } else {\n update.y = titlePos;\n enter.angle = {value: sign * 90};\n enter.baseline = {value: 'bottom'};\n }\n\n addEncoders(encode, {\n angle: _('titleAngle'),\n baseline: _('titleBaseline'),\n fill: _('titleColor'),\n fillOpacity: _('titleOpacity'),\n font: _('titleFont'),\n fontSize: _('titleFontSize'),\n fontStyle: _('titleFontStyle'),\n fontWeight: _('titleFontWeight'),\n limit: _('titleLimit')\n }, { // require update\n align: _('titleAlign')\n });\n\n !addEncode(encode, 'x', _('titleX'), 'update')\n && !horizontal && !has('x', userEncode)\n && (encode.enter.auto = {value: true});\n\n !addEncode(encode, 'y', _('titleY'), 'update')\n && horizontal && !has('y', userEncode)\n && (encode.enter.auto = {value: true});\n\n return guideMark(TextMark, AxisTitleRole, GuideTitleStyle, null, dataRef, encode, userEncode);\n}\n","import parseSignalUpdates from './signal-updates';\nimport {initScale, parseScale} from './scale';\nimport parseProjection from './projection';\nimport parseLegend from './legend';\nimport parseSignal from './signal';\nimport parseTitle from './title';\nimport parseData from './data';\nimport parseMark from './mark';\nimport parseAxis from './axis';\nimport {array} from 'vega-util';\n\nexport default function(spec, scope, preprocessed) {\n var signals = array(spec.signals),\n scales = array(spec.scales);\n\n if (!preprocessed) signals.forEach(function(_) {\n parseSignal(_, scope);\n });\n\n array(spec.projections).forEach(function(_) {\n parseProjection(_, scope);\n });\n\n scales.forEach(function(_) {\n initScale(_, scope);\n });\n\n array(spec.data).forEach(function(_) {\n parseData(_, scope);\n });\n\n scales.forEach(function(_) {\n parseScale(_, scope);\n });\n\n signals.forEach(function(_) {\n parseSignalUpdates(_, scope);\n });\n\n array(spec.axes).forEach(function(_) {\n parseAxis(_, scope);\n });\n\n array(spec.marks).forEach(function(_) {\n parseMark(_, scope);\n });\n\n array(spec.legends).forEach(function(_) {\n parseLegend(_, scope);\n });\n\n if (spec.title) {\n parseTitle(spec.title, scope);\n }\n\n scope.parseLambdas();\n return scope;\n}\n","import parseExpression from './expression';\nimport parseUpdate from './update';\nimport {error} from 'vega-util';\n\nexport default function(signal, scope) {\n var op = scope.getSignal(signal.name),\n expr = signal.update;\n\n if (signal.init) {\n if (expr) {\n error('Signals can not include both init and update expressions.');\n } else {\n expr = signal.init;\n op.initonly = true;\n }\n }\n\n if (expr) {\n expr = parseExpression(expr, scope);\n op.update = expr.$expr;\n op.params = expr.$params;\n }\n\n if (signal.on) {\n signal.on.forEach(function(_) {\n parseUpdate(_, scope, op.id);\n });\n }\n}\n","import parseAutosize from './autosize';\nimport parsePadding from './padding';\nimport parseSignal from './signal';\nimport parseSpec from './spec';\nimport {encoders, extendEncode} from './encode/encode-util';\nimport {GroupMark} from './marks/marktypes';\nimport {FrameRole} from './marks/roles';\nimport {ref, operator} from '../util';\nimport DataScope from '../DataScope';\nimport {Bound, Collect, Encode, Render, Sieve, ViewLayout} from '../transforms';\nimport {array, toSet} from 'vega-util';\n\nvar defined = toSet(['width', 'height', 'padding', 'autosize']);\n\nexport default function parseView(spec, scope) {\n var config = scope.config,\n op, input, encode, parent, root;\n\n scope.background = spec.background || config.background;\n scope.eventConfig = config.events;\n root = ref(scope.root = scope.add(operator()));\n scope.addSignal('width', spec.width || 0);\n scope.addSignal('height', spec.height || 0);\n scope.addSignal('padding', parsePadding(spec.padding, config));\n scope.addSignal('autosize', parseAutosize(spec.autosize, config));\n scope.legends = scope.objectProperty(config.legend && config.legend.layout);\n\n array(spec.signals).forEach(function(_) {\n if (!defined[_.name]) parseSignal(_, scope);\n });\n\n // Store root group item\n input = scope.add(Collect());\n\n // Encode root group item\n encode = extendEncode({\n enter: { x: {value: 0}, y: {value: 0} },\n update: { width: {signal: 'width'}, height: {signal: 'height'} }\n }, spec.encode);\n\n encode = scope.add(Encode(\n encoders(encode, GroupMark, FrameRole, spec.style, scope, {pulse: ref(input)}))\n );\n\n // Perform view layout\n parent = scope.add(ViewLayout({\n layout: scope.objectProperty(spec.layout),\n legends: scope.legends,\n autosize: scope.signalRef('autosize'),\n mark: root,\n pulse: ref(encode)\n }));\n scope.operators.pop();\n\n // Parse remainder of specification\n scope.pushState(ref(encode), ref(parent), null);\n parseSpec(spec, scope, true);\n scope.operators.push(parent);\n\n // Bound / render / sieve root item\n op = scope.add(Bound({mark: root, pulse: ref(parent)}));\n op = scope.add(Render({pulse: ref(op)}));\n op = scope.add(Sieve({pulse: ref(op)}));\n\n // Track metadata for root item\n scope.addData('root', new DataScope(scope, input, input, op));\n\n return scope;\n}\n","import DataScope from './DataScope';\nimport {\n aggrField, Ascending, compareRef, Entry, isExpr, isSignal,\n fieldRef, keyRef, tupleidRef, operator, ref\n} from './util';\nimport parseExpression from './parsers/expression';\nimport {Compare, Expression, Field, Key, Projection, Proxy, Scale, Sieve} from './transforms';\nimport {array, error, extend, isArray, isString, isObject, peek, stringValue} from 'vega-util';\n\nexport default function Scope(config) {\n this.config = config;\n\n this.bindings = [];\n this.field = {};\n this.signals = {};\n this.lambdas = {};\n this.scales = {};\n this.events = {};\n this.data = {};\n\n this.streams = [];\n this.updates = [];\n this.operators = [];\n this.background = null;\n this.eventConfig = null;\n\n this._id = 0;\n this._subid = 0;\n this._nextsub = [0];\n\n this._parent = [];\n this._encode = [];\n this._lookup = [];\n this._markpath = [];\n}\n\nfunction Subscope(scope) {\n this.config = scope.config;\n this.legends = scope.legends;\n\n this.field = Object.create(scope.field);\n this.signals = Object.create(scope.signals);\n this.lambdas = Object.create(scope.lambdas);\n this.scales = Object.create(scope.scales);\n this.events = Object.create(scope.events);\n this.data = Object.create(scope.data);\n\n this.streams = [];\n this.updates = [];\n this.operators = [];\n\n this._id = 0;\n this._subid = ++scope._nextsub[0];\n this._nextsub = scope._nextsub;\n\n this._parent = scope._parent.slice();\n this._encode = scope._encode.slice();\n this._lookup = scope._lookup.slice();\n this._markpath = scope._markpath;\n}\n\nvar prototype = Scope.prototype = Subscope.prototype;\n\n// ----\n\nprototype.fork = function() {\n return new Subscope(this);\n};\n\nprototype.isSubscope = function() {\n return this._subid > 0;\n};\n\nprototype.toRuntime = function() {\n this.finish();\n return {\n background: this.background,\n operators: this.operators,\n streams: this.streams,\n updates: this.updates,\n bindings: this.bindings,\n eventConfig: this.eventConfig\n };\n};\n\nprototype.id = function() {\n return (this._subid ? this._subid + ':' : 0) + this._id++;\n};\n\nprototype.add = function(op) {\n this.operators.push(op);\n op.id = this.id();\n // if pre-registration references exist, resolve them now\n if (op.refs) {\n op.refs.forEach(function(ref) { ref.$ref = op.id; });\n op.refs = null;\n }\n return op;\n};\n\nprototype.proxy = function(op) {\n var vref = op instanceof Entry ? ref(op) : op;\n return this.add(Proxy({value: vref}));\n};\n\nprototype.addStream = function(stream) {\n this.streams.push(stream);\n stream.id = this.id();\n return stream;\n};\n\nprototype.addUpdate = function(update) {\n this.updates.push(update);\n return update;\n};\n\n// Apply metadata\nprototype.finish = function() {\n var name, ds;\n\n // annotate root\n if (this.root) this.root.root = true;\n\n // annotate signals\n for (name in this.signals) {\n this.signals[name].signal = name;\n }\n\n // annotate scales\n for (name in this.scales) {\n this.scales[name].scale = name;\n }\n\n // annotate data sets\n function annotate(op, name, type) {\n var data, list;\n if (op) {\n data = op.data || (op.data = {});\n list = data[name] || (data[name] = []);\n list.push(type);\n }\n }\n for (name in this.data) {\n ds = this.data[name];\n annotate(ds.input, name, 'input');\n annotate(ds.output, name, 'output');\n annotate(ds.values, name, 'values');\n for (var field in ds.index) {\n annotate(ds.index[field], name, 'index:' + field);\n }\n }\n\n return this;\n};\n\n// ----\n\nprototype.pushState = function(encode, parent, lookup) {\n this._encode.push(ref(this.add(Sieve({pulse: encode}))));\n this._parent.push(parent);\n this._lookup.push(lookup ? ref(this.proxy(lookup)) : null);\n this._markpath.push(-1);\n};\n\nprototype.popState = function() {\n this._encode.pop();\n this._parent.pop();\n this._lookup.pop();\n this._markpath.pop();\n};\n\nprototype.parent = function() {\n return peek(this._parent);\n};\n\nprototype.encode = function() {\n return peek(this._encode);\n};\n\nprototype.lookup = function() {\n return peek(this._lookup);\n};\n\nprototype.markpath = function() {\n var p = this._markpath;\n return ++p[p.length-1];\n};\n\n// ----\n\nprototype.fieldRef = function(field, name) {\n if (isString(field)) return fieldRef(field, name);\n if (!field.signal) {\n error('Unsupported field reference: ' + stringValue(field));\n }\n\n var s = field.signal,\n f = this.field[s],\n params;\n\n if (!f) {\n params = {name: this.signalRef(s)};\n if (name) params.as = name;\n this.field[s] = f = ref(this.add(Field(params)));\n }\n return f;\n};\n\nprototype.compareRef = function(cmp, stable) {\n function check(_) {\n if (isSignal(_)) {\n signal = true;\n return scope.signalRef(_.signal);\n } else if (isExpr(_)) {\n signal = true;\n return scope.exprRef(_.expr);\n } else {\n return _;\n }\n }\n\n var scope = this,\n signal = false,\n fields = array(cmp.field).map(check),\n orders = array(cmp.order).map(check);\n\n if (stable) {\n fields.push(tupleidRef);\n }\n\n return signal\n ? ref(this.add(Compare({fields: fields, orders: orders})))\n : compareRef(fields, orders);\n};\n\nprototype.keyRef = function(fields, flat) {\n function check(_) {\n if (isSignal(_)) {\n signal = true;\n return ref(sig[_.signal]);\n } else {\n return _;\n }\n }\n\n var sig = this.signals,\n signal = false;\n fields = array(fields).map(check);\n\n return signal\n ? ref(this.add(Key({fields: fields, flat: flat})))\n : keyRef(fields, flat);\n};\n\nprototype.sortRef = function(sort) {\n if (!sort) return sort;\n\n // including id ensures stable sorting\n var a = [aggrField(sort.op, sort.field), tupleidRef],\n o = sort.order || Ascending;\n\n return o.signal\n ? ref(this.add(Compare({\n fields: a,\n orders: [o = this.signalRef(o.signal), o]\n })))\n : compareRef(a, [o, o]);\n};\n\n// ----\n\nprototype.event = function(source, type) {\n var key = source + ':' + type;\n if (!this.events[key]) {\n var id = this.id();\n this.streams.push({\n id: id,\n source: source,\n type: type\n });\n this.events[key] = id;\n }\n return this.events[key];\n};\n\n// ----\n\nprototype.addSignal = function(name, value) {\n if (this.signals.hasOwnProperty(name)) {\n error('Duplicate signal name: ' + stringValue(name));\n }\n var op = value instanceof Entry ? value : this.add(operator(value));\n return this.signals[name] = op;\n};\n\nprototype.getSignal = function(name) {\n if (!this.signals[name]) {\n error('Unrecognized signal name: ' + stringValue(name));\n }\n return this.signals[name];\n};\n\nprototype.signalRef = function(s) {\n if (this.signals[s]) {\n return ref(this.signals[s]);\n } else if (!this.lambdas.hasOwnProperty(s)) {\n this.lambdas[s] = this.add(operator(null));\n }\n return ref(this.lambdas[s]);\n};\n\nprototype.parseLambdas = function() {\n var code = Object.keys(this.lambdas);\n for (var i=0, n=code.length; i<n; ++i) {\n var s = code[i],\n e = parseExpression(s, this),\n op = this.lambdas[s];\n op.params = e.$params;\n op.update = e.$expr;\n }\n};\n\nprototype.property = function(spec) {\n return spec && spec.signal ? this.signalRef(spec.signal) : spec;\n};\n\nprototype.objectProperty = function(spec) {\n return (!spec || !isObject(spec)) ? spec\n : this.signalRef(spec.signal || propertyLambda(spec));\n};\n\nfunction propertyLambda(spec) {\n return (isArray(spec) ? arrayLambda : objectLambda)(spec);\n}\n\nfunction arrayLambda(array) {\n var code = '[',\n i = 0,\n n = array.length,\n value;\n\n for (; i<n; ++i) {\n value = array[i];\n code += (i > 0 ? ',' : '')\n + (isObject(value)\n ? (value.signal || propertyLambda(value))\n : stringValue(value));\n }\n return code + ']';\n}\n\nfunction objectLambda(obj) {\n var code = '{',\n i = 0,\n key, value;\n\n for (key in obj) {\n value = obj[key];\n code += (++i > 1 ? ',' : '')\n + stringValue(key) + ':'\n + (isObject(value)\n ? (value.signal || propertyLambda(value))\n : stringValue(value));\n }\n return code + '}';\n}\n\nprototype.exprRef = function(code, name) {\n var params = {expr: parseExpression(code, this)};\n if (name) params.expr.$name = name;\n return ref(this.add(Expression(params)));\n}\n\nprototype.addBinding = function(name, bind) {\n if (!this.bindings) {\n error('Nested signals do not support binding: ' + stringValue(name));\n }\n this.bindings.push(extend({signal: name}, bind));\n};\n\n// ----\n\nprototype.addScaleProj = function(name, transform) {\n if (this.scales.hasOwnProperty(name)) {\n error('Duplicate scale or projection name: ' + stringValue(name));\n }\n this.scales[name] = this.add(transform);\n};\n\nprototype.addScale = function(name, params) {\n this.addScaleProj(name, Scale(params));\n};\n\nprototype.addProjection = function(name, params) {\n this.addScaleProj(name, Projection(params));\n};\n\nprototype.getScale = function(name) {\n if (!this.scales[name]) {\n error('Unrecognized scale name: ' + stringValue(name));\n }\n return this.scales[name];\n};\n\nprototype.projectionRef =\nprototype.scaleRef = function(name) {\n return ref(this.getScale(name));\n};\n\nprototype.projectionType =\nprototype.scaleType = function(name) {\n return this.getScale(name).params.type;\n};\n\n// ----\n\nprototype.addData = function(name, dataScope) {\n if (this.data.hasOwnProperty(name)) {\n error('Duplicate data set name: ' + stringValue(name));\n }\n return (this.data[name] = dataScope);\n};\n\nprototype.getData = function(name) {\n if (!this.data[name]) {\n error('Undefined data set name: ' + stringValue(name));\n }\n return this.data[name];\n};\n\nprototype.addDataPipeline = function(name, entries) {\n if (this.data.hasOwnProperty(name)) {\n error('Duplicate data set name: ' + stringValue(name));\n }\n return this.addData(name, DataScope.fromEntries(this, entries));\n};\n","import {isArray, isObject} from 'vega-util';\n\nexport default function(configs) {\n return (configs || []).reduce((out, config) => {\n for (var key in config) {\n var r = key === 'legend' ? {'layout': 1}\n : key === 'style' ? true : null;\n copy(out, key, config[key], r);\n }\n return out;\n }, defaults());\n}\n\nfunction copy(output, key, value, recurse) {\n var k, o;\n if (isObject(value) && !isArray(value)) {\n o = isObject(output[key]) ? output[key] : (output[key] = {});\n for (k in value) {\n if (recurse && (recurse === true || recurse[k])) {\n copy(o, k, value[k]);\n } else {\n o[k] = value[k];\n }\n }\n } else {\n output[key] = value;\n }\n}\n\nvar defaultFont = 'sans-serif',\n defaultSymbolSize = 30,\n defaultStrokeWidth = 2,\n defaultColor = '#4c78a8',\n black = '#000',\n gray = '#888',\n lightGray = '#ddd';\n\n/**\n * Standard configuration defaults for Vega specification parsing.\n * Users can provide their own (sub-)set of these default values\n * by passing in a config object to the top-level parse method.\n */\nfunction defaults() {\n return {\n // default padding around visualization\n padding: 0,\n\n // default for automatic sizing; options: 'none', 'pad', 'fit'\n // or provide an object (e.g., {'type': 'pad', 'resize': true})\n autosize: 'pad',\n\n // default view background color\n // covers the entire view component\n background: null,\n\n // default event handling configuration\n // preventDefault for view-sourced event types except 'wheel'\n events: {\n defaults: {allow: ['wheel']}\n },\n\n // defaults for top-level group marks\n // accepts mark properties (fill, stroke, etc)\n // covers the data rectangle within group width/height\n group: null,\n\n // defaults for basic mark types\n // each subset accepts mark properties (fill, stroke, etc)\n mark: null,\n arc: { fill: defaultColor },\n area: { fill: defaultColor },\n image: null,\n line: {\n stroke: defaultColor,\n strokeWidth: defaultStrokeWidth\n },\n path: { stroke: defaultColor },\n rect: { fill: defaultColor },\n rule: { stroke: black },\n shape: { stroke: defaultColor },\n symbol: {\n fill: defaultColor,\n size: 64\n },\n text: {\n fill: black,\n font: defaultFont,\n fontSize: 11\n },\n\n // style definitions\n style: {\n // axis & legend labels\n 'guide-label': {\n fill: black,\n font: defaultFont,\n fontSize: 10\n },\n // axis & legend titles\n 'guide-title': {\n fill: black,\n font: defaultFont,\n fontSize: 11,\n fontWeight: 'bold'\n },\n // headers, including chart title\n 'group-title': {\n fill: black,\n font: defaultFont,\n fontSize: 13,\n fontWeight: 'bold'\n },\n // defaults for styled point marks in Vega-Lite\n point: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth,\n shape: 'circle'\n },\n circle: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth\n },\n square: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth,\n shape: 'square'\n },\n // defaults for styled group marks in Vega-Lite\n cell: {\n fill: 'transparent',\n stroke: lightGray\n }\n },\n\n // defaults for title\n title: {\n orient: 'top',\n anchor: 'middle',\n offset: 4\n },\n\n // defaults for axes\n axis: {\n minExtent: 0,\n maxExtent: 200,\n bandPosition: 0.5,\n domain: true,\n domainWidth: 1,\n domainColor: gray,\n grid: false,\n gridWidth: 1,\n gridColor: lightGray,\n labels: true,\n labelAngle: 0,\n labelLimit: 180,\n labelPadding: 2,\n ticks: true,\n tickColor: gray,\n tickOffset: 0,\n tickRound: true,\n tickSize: 5,\n tickWidth: 1,\n titlePadding: 4\n },\n\n // correction for centering bias\n axisBand: {\n tickOffset: -1\n },\n\n // defaults for legends\n legend: {\n orient: 'right',\n padding: 0,\n gridAlign: 'each',\n columnPadding: 10,\n rowPadding: 2,\n symbolDirection: 'vertical',\n gradientDirection: 'vertical',\n gradientLength: 200,\n gradientThickness: 16,\n gradientStrokeColor: lightGray,\n gradientStrokeWidth: 0,\n gradientLabelOffset: 2,\n labelAlign: 'left',\n labelBaseline: 'middle',\n labelLimit: 160,\n labelOffset: 4,\n labelOverlap: true,\n symbolType: 'circle',\n symbolSize: 100,\n symbolOffset: 0,\n symbolStrokeWidth: 1.5,\n symbolBaseFillColor: 'transparent',\n symbolBaseStrokeColor: gray,\n titleLimit: 180,\n titleOrient: 'top',\n titlePadding: 5,\n layout: {\n offset: 18,\n direction: 'horizontal',\n left: { direction: 'vertical' },\n right: { direction: 'vertical' }\n }\n },\n\n // defaults for scale ranges\n range: {\n category: {\n scheme: 'tableau10'\n },\n ordinal: {\n scheme: 'blues'\n },\n heatmap: {\n scheme: 'yellowgreenblue'\n },\n ramp: {\n scheme: 'blues'\n },\n diverging: {\n scheme: 'blueorange',\n extent: [1, 0]\n },\n symbol: [\n 'circle',\n 'square',\n 'triangle-up',\n 'cross',\n 'diamond',\n 'triangle-right',\n 'triangle-down',\n 'triangle-left'\n ]\n }\n };\n}\n","import parseView from './parsers/view';\nimport Scope from './Scope';\nimport defaults from './config';\nimport {error, isObject} from 'vega-util';\n\nexport default function(spec, config) {\n if (!isObject(spec)) error('Input Vega specification must be an object.');\n return parseView(spec, new Scope(defaults([config, spec.config])))\n .toRuntime();\n}\n","// -- Transforms -----\n\nimport {extend} from 'vega-util';\nimport {transforms} from 'vega-dataflow';\nimport * as tx from 'vega-transforms';\nimport * as vtx from 'vega-view-transforms';\nimport * as encode from 'vega-encode';\nimport * as geo from 'vega-geo';\nimport * as force from 'vega-force';\nimport * as tree from 'vega-hierarchy';\nimport * as reg from 'vega-regression';\nimport * as voronoi from 'vega-voronoi';\nimport * as wordcloud from 'vega-wordcloud';\nimport * as xf from 'vega-crossfilter';\nextend(transforms, tx, vtx, encode, geo, force, tree, reg, voronoi, wordcloud, xf);\n\n\n// -- Exports -----\n\nexport {\n version\n} from './package.json';\n\nexport * from 'vega-statistics';\n\nexport * from 'vega-util';\n\nexport * from 'vega-loader';\n\nexport * from 'vega-scenegraph';\n\nexport {\n Dataflow,\n EventStream,\n Parameters,\n Pulse,\n MultiPulse,\n Operator,\n Transform,\n changeset,\n ingest,\n isTuple,\n definition,\n transform,\n transforms,\n tupleid\n} from 'vega-dataflow';\n\nexport {\n scale,\n scheme,\n interpolate,\n interpolateColors,\n interpolateRange,\n timeInterval,\n quantizeInterpolator\n} from 'vega-scale';\n\nexport {\n projection\n} from 'vega-projection';\n\nexport {\n View\n} from 'vega-view';\n\nexport {\n expressionFunction,\n formatLocale,\n timeFormatLocale\n} from 'vega-functions';\n\nexport {\n parse\n} from 'vega-parser';\n\nexport {\n parse as runtime,\n context as runtimeContext\n} from 'vega-runtime';\n","export function isLogicalOr(op) {\n return !!op.or;\n}\nexport function isLogicalAnd(op) {\n return !!op.and;\n}\nexport function isLogicalNot(op) {\n return !!op.not;\n}\nexport function forEachLeaf(op, fn) {\n if (isLogicalNot(op)) {\n forEachLeaf(op.not, fn);\n }\n else if (isLogicalAnd(op)) {\n for (const subop of op.and) {\n forEachLeaf(subop, fn);\n }\n }\n else if (isLogicalOr(op)) {\n for (const subop of op.or) {\n forEachLeaf(subop, fn);\n }\n }\n else {\n fn(op);\n }\n}\nexport function normalizeLogicalOperand(op, normalizer) {\n if (isLogicalNot(op)) {\n return { not: normalizeLogicalOperand(op.not, normalizer) };\n }\n else if (isLogicalAnd(op)) {\n return { and: op.and.map(o => normalizeLogicalOperand(o, normalizer)) };\n }\n else if (isLogicalOr(op)) {\n return { or: op.or.map(o => normalizeLogicalOperand(o, normalizer)) };\n }\n else {\n return normalizer(op);\n }\n}\n//# sourceMappingURL=logical.js.map","import { default as clone_ } from 'clone';\nimport deepEqual_ from 'fast-deep-equal';\nimport stableStringify from 'fast-json-stable-stringify';\nimport { isArray, isNumber, isString, splitAccessPath, stringValue } from 'vega-util';\nimport { isLogicalAnd, isLogicalNot, isLogicalOr } from './logical';\nexport const deepEqual = deepEqual_;\nexport const duplicate = clone_;\n/**\n * Creates an object composed of the picked object properties.\n *\n * var object = {'a': 1, 'b': '2', 'c': 3};\n * pick(object, ['a', 'c']);\n * // → {'a': 1, 'c': 3}\n *\n */\nexport function pick(obj, props) {\n const copy = {};\n for (const prop of props) {\n if (obj.hasOwnProperty(prop)) {\n copy[prop] = obj[prop];\n }\n }\n return copy;\n}\n/**\n * The opposite of _.pick; this method creates an object composed of the own\n * and inherited enumerable string keyed properties of object that are not omitted.\n */\nexport function omit(obj, props) {\n const copy = Object.assign({}, obj);\n for (const prop of props) {\n delete copy[prop];\n }\n return copy;\n}\n/**\n * Monkey patch Set so that `stringify` produces a string representation of sets.\n */\nSet.prototype['toJSON'] = function () {\n return `Set(${[...this].map(x => stableStringify(x)).join(',')})`;\n};\n/**\n * Converts any object to a string representation that can be consumed by humans.\n */\nexport const stringify = stableStringify;\n/**\n * Converts any object to a string of limited size, or a number.\n */\nexport function hash(a) {\n if (isNumber(a)) {\n return a;\n }\n const str = isString(a) ? a : stableStringify(a);\n // short strings can be used as hash directly, longer strings are hashed to reduce memory usage\n if (str.length < 250) {\n return str;\n }\n // from http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-… let h = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n h = (h << 5) - h + char;\n h = h & h; // Convert to 32bit integer\n }\n return h;\n}\nexport function isNullOrFalse(x) {\n return x === false || x === null;\n}\nexport function contains(array, item) {\n return array.indexOf(item) > -1;\n}\n/** Returns the array without the elements in item */\nexport function without(array, excludedItems) {\n return array.filter(item => !contains(excludedItems, item));\n}\nexport function union(array, other) {\n return array.concat(without(other, array));\n}\n/**\n * Returns true if any item returns true.\n */\nexport function some(arr, f) {\n let i = 0;\n for (const [k, a] of arr.entries()) {\n if (f(a, k, i++)) {\n return true;\n }\n }\n return false;\n}\n/**\n * Returns true if all items return true.\n */\nexport function every(arr, f) {\n let i = 0;\n for (const [k, a] of arr.entries()) {\n if (!f(a, k, i++)) {\n return false;\n }\n }\n return true;\n}\nexport function flatten(arrays) {\n return [].concat(...arrays);\n}\nexport function fill(val, len) {\n const arr = new Array(len);\n for (let i = 0; i < len; ++i) {\n arr[i] = val;\n }\n return arr;\n}\n/**\n * recursively merges src into dest\n */\nexport function mergeDeep(dest, ...src) {\n for (const s of src) {\n dest = deepMerge_(dest, s);\n }\n return dest;\n}\n// recursively merges src into dest\nfunction deepMerge_(dest, src) {\n if (typeof src !== 'object' || src === null) {\n return dest;\n }\n for (const p in src) {\n if (!src.hasOwnProperty(p)) {\n continue;\n }\n if (src[p] === undefined) {\n continue;\n }\n if (typeof src[p] !== 'object' || isArray(src[p]) || src[p] === null) {\n dest[p] = src[p];\n }\n else if (typeof dest[p] !== 'object' || dest[p] === null) {\n dest[p] = mergeDeep(isArray(src[p].constructor) ? [] : {}, src[p]);\n }\n else {\n mergeDeep(dest[p], src[p]);\n }\n }\n return dest;\n}\nexport function unique(values, f) {\n const results = [];\n const u = {};\n let v;\n for (const val of values) {\n v = f(val);\n if (v in u) {\n continue;\n }\n u[v] = 1;\n results.push(val);\n }\n return results;\n}\n/**\n * Returns true if the two dictionaries disagree. Applies only to defined values.\n */\nexport function isEqual(dict, other) {\n const dictKeys = keys(dict);\n const otherKeys = keys(other);\n if (dictKeys.length !== otherKeys.length) {\n return false;\n }\n for (const key of dictKeys) {\n if (dict[key] !== other[key]) {\n return false;\n }\n }\n return true;\n}\nexport function setEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const e of a) {\n if (!b.has(e)) {\n return false;\n }\n }\n return true;\n}\nexport function hasIntersection(a, b) {\n for (const key of a) {\n if (b.has(key)) {\n return true;\n }\n }\n return false;\n}\nexport function prefixGenerator(a) {\n const prefixes = new Set();\n for (const x of a) {\n const splitField = splitAccessPath(x);\n // Wrap every element other than the first in `[]`\n const wrappedWithAccessors = splitField.map((y, i) => (i === 0 ? y : `[${y}]`));\n const computedPrefixes = wrappedWithAccessors.map((_, i) => wrappedWithAccessors.slice(0, i + 1).join(''));\n computedPrefixes.forEach(y => prefixes.add(y));\n }\n return prefixes;\n}\nexport function fieldIntersection(a, b) {\n return hasIntersection(prefixGenerator(a), prefixGenerator(b));\n}\nexport function isNumeric(num) {\n return !isNaN(num);\n}\nexport function differArray(array, other) {\n if (array.length !== other.length) {\n return true;\n }\n array.sort();\n other.sort();\n for (let i = 0; i < array.length; i++) {\n if (other[i] !== array[i]) {\n return true;\n }\n }\n return false;\n}\n// This is a stricter version of Object.keys but with better types. See https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208\n… const keys = Object.keys;\nexport function vals(x) {\n const _vals = [];\n for (const k in x) {\n if (x.hasOwnProperty(k)) {\n _vals.push(x[k]);\n }\n }\n return _vals;\n}\nexport function entries(x) {\n const _entries = [];\n for (const k in x) {\n if (x.hasOwnProperty(k)) {\n _entries.push({\n key: k,\n value: x[k]\n });\n }\n }\n return _entries;\n}\nexport function flagKeys(f) {\n return keys(f);\n}\nexport function isBoolean(b) {\n return b === true || b === false;\n}\n/**\n * Convert a string into a valid variable name\n */\nexport function varName(s) {\n // Replace non-alphanumeric characters (anything besides a-zA-Z0-9_) with _\n const alphanumericS = s.replace(/\\W/g, '_');\n // Add _ if the string has leading numbers.\n return (s.match(/^\\d+/) ? '_' : '') + alphanumericS;\n}\nexport function logicalExpr(op, cb) {\n if (isLogicalNot(op)) {\n return '!(' + logicalExpr(op.not, cb) + ')';\n }\n else if (isLogicalAnd(op)) {\n return '(' + op.and.map((and) => logicalExpr(and, cb)).join(') && (') + ')';\n }\n else if (isLogicalOr(op)) {\n return '(' + op.or.map((or) => logicalExpr(or, cb)).join(') || (') + ')';\n }\n else {\n return cb(op);\n }\n}\n/**\n * Delete nested property of an object, and delete the ancestors of the property if they become empty.\n */\nexport function deleteNestedProperty(obj, orderedProps) {\n if (orderedProps.length === 0) {\n return true;\n }\n const prop = orderedProps.shift();\n if (deleteNestedProperty(obj[prop], orderedProps)) {\n delete obj[prop];\n }\n return keys(obj).length === 0;\n}\nexport function titlecase(s) {\n return s.charAt(0).toUpperCase() + s.substr(1);\n}\n/**\n * Converts a path to an access path with datum.\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nexport function accessPathWithDatum(path, datum = 'datum') {\n const pieces = splitAccessPath(path);\n const prefixes = [];\n for (let i = 1; i <= pieces.length; i++) {\n const prefix = `[${pieces\n .slice(0, i)\n .map(stringValue)\n .join('][')}]`;\n prefixes.push(`${datum}${prefix}`);\n }\n return prefixes.join(' && ');\n}\n/**\n * Return access with datum to the flattened field.\n *\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nexport function flatAccessWithDatum(path, datum = 'datum') {\n return `${datum}[${stringValue(splitAccessPath(path).join('.'))}]`;\n}\n/**\n * Replaces path accesses with access to non-nested field.\n * For example, `foo[\"bar\"].baz` becomes `foo\\\\.bar\\\\.baz`.\n */\nexport function replacePathInField(path) {\n return `${splitAccessPath(path)\n .map(p => p.replace('.', '\\\\.'))\n .join('\\\\.')}`;\n}\n/**\n * Remove path accesses with access from field.\n * For example, `foo[\"bar\"].baz` becomes `foo.bar.baz`.\n */\nexport function removePathFromField(path) {\n return `${splitAccessPath(path).join('.')}`;\n}\n/**\n * Count the depth of the path. Returns 1 for fields that are not nested.\n */\nexport function accessPathDepth(path) {\n if (!path) {\n return 0;\n }\n return splitAccessPath(path).length;\n}\n/**\n * This is a replacement for chained || for numeric properties or properties that respect null so that 0 will be included.\n */\nexport function getFirstDefined(...args) {\n for (const arg of args) {\n if (arg !== undefined) {\n return arg;\n }\n }\n return undefined;\n}\n// variable used to generate id\nlet idCounter = 42;\n/**\n * Returns a new random id every time it gets called.\n *\n * Has side effect!\n */\nexport function uniqueId(prefix) {\n const id = ++idCounter;\n return prefix ? String(prefix) + id : id;\n}\n/**\n * Resets the id counter used in uniqueId. This can be useful for testing.\n */\nexport function resetIdCounter() {\n idCounter = 42;\n}\nexport function internalField(name) {\n return isInternalField(name) ? name : `__${name}`;\n}\nexport function isInternalField(name) {\n return name.indexOf('__') === 0;\n}\n/**\n * Normalize angle to be within [0,360).\n */\nexport function normalizeAngle(angle) {\n return ((angle % 360) + 360) % 360;\n}\n//# sourceMappingURL=util.js.map","import { toSet } from 'vega-util';\nimport { contains, flagKeys } from './util';\nexport const AREA = 'area';\nexport const BAR = 'bar';\nexport const LINE = 'line';\nexport const POINT = 'point';\nexport const RECT = 'rect';\nexport const RULE = 'rule';\nexport const TEXT = 'text';\nexport const TICK = 'tick';\nexport const TRAIL = 'trail';\nexport const CIRCLE = 'circle';\nexport const SQUARE = 'square';\nexport const GEOSHAPE = 'geoshape';\n// Using mapped type to declare index, ensuring we always have all marks when we add more.\nconst MARK_INDEX = {\n area: 1,\n bar: 1,\n line: 1,\n point: 1,\n text: 1,\n tick: 1,\n trail: 1,\n rect: 1,\n geoshape: 1,\n rule: 1,\n circle: 1,\n square: 1\n};\nexport function isMark(m) {\n return !!MARK_INDEX[m];\n}\nexport function isPathMark(m) {\n return contains(['line', 'area', 'trail'], m);\n}\nexport const PRIMITIVE_MARKS = flagKeys(MARK_INDEX);\nexport function isMarkDef(mark) {\n return mark['type'];\n}\nconst PRIMITIVE_MARK_INDEX = toSet(PRIMITIVE_MARKS);\nexport function isPrimitiveMark(mark) {\n const markType = isMarkDef(mark) ? mark.type : mark;\n return markType in PRIMITIVE_MARK_INDEX;\n}\nexport const STROKE_CONFIG = [\n 'stroke',\n 'strokeWidth',\n 'strokeDash',\n 'strokeDashOffset',\n 'strokeOpacity',\n 'strokeJoin',\n 'strokeMiterLimit'\n];\nexport const FILL_CONFIG = ['fill', 'fillOpacity'];\nexport const FILL_STROKE_CONFIG = [].concat(STROKE_CONFIG, FILL_CONFIG);\nexport const VL_ONLY_MARK_CONFIG_PROPERTIES = ['filled', 'color', 'tooltip'];\nexport const VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = {\n area: ['line', 'point'],\n bar: ['binSpacing', 'continuousBandSize', 'discreteBandSize'],\n line: ['point'],\n text: ['shortTimeLabels'],\n tick: ['bandSize', 'thickness']\n};\nexport const defaultMarkConfig = {\n color: '#4c78a8',\n tooltip: { content: 'encoding' }\n};\nexport const defaultBarConfig = {\n binSpacing: 1,\n continuousBandSize: 5\n};\nexport const defaultTickConfig = {\n thickness: 1\n};\nexport function getMarkType(m) {\n return isMarkDef(m) ? m.type : m;\n}\n//# sourceMappingURL=mark.js.map","export function isUnitSpec(spec) {\n return !!spec['mark'];\n}\n//# sourceMappingURL=unit.js.map","import { getMarkType } from '../mark';\nimport { isUnitSpec } from '../spec/unit';\nexport class CompositeMarkNormalizer {\n constructor(name, run) {\n this.name = name;\n this.run = run;\n }\n hasMatchingType(spec) {\n if (isUnitSpec(spec)) {\n return getMarkType(spec.mark) === this.name;\n }\n return false;\n }\n}\n//# sourceMappingURL=base.js.map","import { isString, toSet } from 'vega-util';\nimport { contains, flagKeys } from './util';\nconst AGGREGATE_OP_INDEX = {\n argmax: 1,\n argmin: 1,\n average: 1,\n count: 1,\n distinct: 1,\n max: 1,\n mean: 1,\n median: 1,\n min: 1,\n missing: 1,\n q1: 1,\n q3: 1,\n ci0: 1,\n ci1: 1,\n stderr: 1,\n stdev: 1,\n stdevp: 1,\n sum: 1,\n valid: 1,\n values: 1,\n variance: 1,\n variancep: 1\n};\nexport function isArgminDef(a) {\n return !!a && !!a['argmin'];\n}\nexport function isArgmaxDef(a) {\n return !!a && !!a['argmax'];\n}\nexport const AGGREGATE_OPS = flagKeys(AGGREGATE_OP_INDEX);\nexport function isAggregateOp(a) {\n return isString(a) && !!AGGREGATE_OP_INDEX[a];\n}\nexport const COUNTING_OPS = ['count', 'valid', 'missing', 'distinct'];\nexport function isCountingAggregateOp(aggregate) {\n return aggregate && isString(aggregate) && contains(COUNTING_OPS, aggregate);\n}\nexport function isMinMaxOp(aggregate) {\n return aggregate && isString(aggregate) && contains(['min', 'max'], aggregate);\n}\n/** Additive-based aggregation operations. These can be applied to stack. */\nexport const SUM_OPS = ['count', 'sum', 'distinct', 'valid', 'missing'];\n/**\n * Aggregation operators that always produce values within the range [domainMin, domainMax].\n */\nexport const SHARED_DOMAIN_OPS = ['mean', 'average', 'median', 'q1', 'q3', 'min', 'max'];\nexport const SHARED_DOMAIN_OP_INDEX = toSet(SHARED_DOMAIN_OPS);\n//# sourceMappingURL=aggregate.js.map","/*\n * Constants and utilities for encoding channels (Visual variables)\n * such as 'x', 'y', 'color'.\n */\nimport * as tslib_1 from \"tslib\";\nimport { flagKeys } from './util';\n// Facet\nexport const ROW = 'row';\nexport const COLUMN = 'column';\nexport const FACET = 'facet';\n// Position\nexport const X = 'x';\nexport const Y = 'y';\nexport const X2 = 'x2';\nexport const Y2 = 'y2';\n// Geo Position\nexport const LATITUDE = 'latitude';\nexport const LONGITUDE = 'longitude';\nexport const LATITUDE2 = 'latitude2';\nexport const LONGITUDE2 = 'longitude2';\n// Mark property with scale\nexport const COLOR = 'color';\nexport const FILL = 'fill';\nexport const STROKE = 'stroke';\nexport const SHAPE = 'shape';\nexport const SIZE = 'size';\nexport const OPACITY = 'opacity';\nexport const FILLOPACITY = 'fillOpacity';\nexport const STROKEOPACITY = 'strokeOpacity';\nexport const STROKEWIDTH = 'strokeWidth';\n// Non-scale channel\nexport const TEXT = 'text';\nexport const ORDER = 'order';\nexport const DETAIL = 'detail';\nexport const KEY = 'key';\nexport const TOOLTIP = 'tooltip';\nexport const HREF = 'href';\nexport function isGeoPositionChannel(c) {\n switch (c) {\n case LATITUDE:\n case LATITUDE2:\n case LONGITUDE:\n case LONGITUDE2:\n return true;\n }\n return false;\n}\nexport function getPositionChannelFromLatLong(channel) {\n switch (channel) {\n case LATITUDE:\n return 'y';\n case LATITUDE2:\n return 'y2';\n case LONGITUDE:\n return 'x';\n case LONGITUDE2:\n return 'x2';\n }\n}\nexport const GEOPOSITION_CHANNEL_INDEX = {\n longitude: 1,\n longitude2: 1,\n latitude: 1,\n latitude2: 1\n};\nexport const GEOPOSITION_CHANNELS = flagKeys(GEOPOSITION_CHANNEL_INDEX);\nconst UNIT_CHANNEL_INDEX = Object.assign({ \n // position\n x: 1, y: 1, x2: 1, y2: 1 }, GEOPOSITION_CHANNEL_INDEX, { \n // color\n color: 1, fill: 1, stroke: 1, \n // other non-position with scale\n opacity: 1, fillOpacity: 1, strokeOpacity: 1, strokeWidth: 1, size: 1, shape: 1, \n // channels without scales\n order: 1, text: 1, detail: 1, key: 1, tooltip: 1, href: 1 });\nexport function isColorChannel(channel) {\n return channel === 'color' || channel === 'fill' || channel === 'stroke';\n}\nconst FACET_CHANNEL_INDEX = {\n row: 1,\n column: 1,\n facet: 1\n};\nexport const FACET_CHANNELS = flagKeys(FACET_CHANNEL_INDEX);\nconst CHANNEL_INDEX = Object.assign({}, UNIT_CHANNEL_INDEX, FACET_CHANNEL_INDEX);\nexport const CHANNELS = flagKeys(CHANNEL_INDEX);\nconst { order: _o, detail: _d } = CHANNEL_INDEX, SINGLE_DEF_CHANNEL_INDEX = tslib_1.__rest(CHANNEL_INDEX, [\"order\", \"detail\"]);\nconst { order: _o1, detail: _d1, row: _r, column: _c, facet: _f } = CHANNEL_INDEX, SINGLE_DEF_UNIT_CHANNEL_INDEX = tslib_1.__rest(CHANNEL_INDEX, [\"order\", \"detail\", \"row\", \"column\", \"facet\"]);\n/**\n * Channels that cannot have an array of channelDef.\n * model.fieldDef, getFieldDef only work for these channels.\n *\n * (The only two channels that can have an array of channelDefs are \"detail\" and \"order\".\n * Since there can be multiple fieldDefs for detail and order, getFieldDef/model.fieldDef\n * are not applicable for them. Similarly, selection projection won't work with \"detail\" and \"order\".)\n */\nexport const SINGLE_DEF_CHANNELS = flagKeys(SINGLE_DEF_CHANNEL_INDEX);\nexport const SINGLE_DEF_UNIT_CHANNELS = flagKeys(SINGLE_DEF_UNIT_CHANNEL_INDEX);\nexport function isSingleDefUnitChannel(str) {\n return !!SINGLE_DEF_UNIT_CHANNEL_INDEX[str];\n}\nexport function isChannel(str) {\n return !!CHANNEL_INDEX[str];\n}\nexport const SECONDARY_RANGE_CHANNEL = ['x2', 'y2', 'latitude2', 'longitude2'];\nexport function isSecondaryRangeChannel(c) {\n const main = getMainRangeChannel(c);\n return main !== c;\n}\nexport function getMainRangeChannel(channel) {\n switch (channel) {\n case 'x2':\n return 'x';\n case 'y2':\n return 'y';\n case 'latitude2':\n return 'latitude';\n case 'longitude2':\n return 'longitude';\n }\n return channel;\n}\n// CHANNELS without COLUMN, ROW\nexport const UNIT_CHANNELS = flagKeys(UNIT_CHANNEL_INDEX);\n// NONPOSITION_CHANNELS = UNIT_CHANNELS without X, Y, X2, Y2;\nconst { x: _x, y: _y, \n// x2 and y2 share the same scale as x and y\nx2: _x2, y2: _y2, latitude: _latitude, longitude: _longitude, latitude2: _latitude2, longitude2: _longitude2 } = UNIT_CHANNEL_INDEX, \n// The rest of unit channels then have scale\nNONPOSITION_CHANNEL_INDEX = tslib_1.__rest(UNIT_CHANNEL_INDEX, [\"x\", \"y\", \"x2\", \"y2\", \"latitude\", \"longitude\", \"latitude2\", \"longitude2\"]);\nexport const NONPOSITION_CHANNELS = flagKeys(NONPOSITION_CHANNEL_INDEX);\n// POSITION_SCALE_CHANNELS = X and Y;\nconst POSITION_SCALE_CHANNEL_INDEX = { x: 1, y: 1 };\nexport const POSITION_SCALE_CHANNELS = flagKeys(POSITION_SCALE_CHANNEL_INDEX);\n// NON_POSITION_SCALE_CHANNEL = SCALE_CHANNELS without X, Y\nconst { \n// x2 and y2 share the same scale as x and y\n// text and tooltip have format instead of scale,\n// href has neither format, nor scale\ntext: _t, tooltip: _tt, href: _hr, \n// detail and order have no scale\ndetail: _dd, key: _k, order: _oo } = NONPOSITION_CHANNEL_INDEX, NONPOSITION_SCALE_CHANNEL_INDEX = tslib_1.__rest(NONPOSITION_CHANNEL_INDEX, [\"text\", \"tooltip\", \"href\", \"detail\", \"key\", \"order\"]);\nexport const NONPOSITION_SCALE_CHANNELS = flagKeys(NONPOSITION_SCALE_CHANNEL_INDEX);\nexport function isNonPositionScaleChannel(channel) {\n return !!NONPOSITION_CHANNEL_INDEX[channel];\n}\n/**\n * @returns whether Vega supports legends for a particular channel\n */\nexport function supportLegend(channel) {\n switch (channel) {\n case COLOR:\n case FILL:\n case STROKE:\n case SIZE:\n case SHAPE:\n case OPACITY:\n return true;\n case FILLOPACITY:\n case STROKEOPACITY:\n case STROKEWIDTH:\n return false;\n }\n}\n// Declare SCALE_CHANNEL_INDEX\nconst SCALE_CHANNEL_INDEX = Object.assign({}, POSITION_SCALE_CHANNEL_INDEX, NONPOSITION_SCALE_CHANNEL_INDEX);\n/** List of channels with scales */\nexport const SCALE_CHANNELS = flagKeys(SCALE_CHANNEL_INDEX);\nexport function isScaleChannel(channel) {\n return !!SCALE_CHANNEL_INDEX[channel];\n}\n/**\n * Return whether a channel supports a particular mark type.\n * @param channel channel name\n * @param mark the mark type\n * @return whether the mark supports the channel\n */\nexport function supportMark(channel, mark) {\n return getSupportedMark(channel)[mark];\n}\n/**\n * Return a dictionary showing whether a channel supports mark type.\n * @param channel\n * @return A dictionary mapping mark types to 'always', 'binned', or undefined\n */\nfunction getSupportedMark(channel) {\n switch (channel) {\n case COLOR:\n case FILL:\n case STROKE:\n // falls through\n case DETAIL:\n case KEY:\n case TOOLTIP:\n case HREF:\n case ORDER: // TODO: revise (order might not support rect, which is not stackable?)\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n case STROKEWIDTH:\n // falls through\n case FACET:\n case ROW: // falls through\n case COLUMN:\n return {\n // all marks\n point: 'always',\n tick: 'always',\n rule: 'always',\n circle: 'always',\n square: 'always',\n bar: 'always',\n rect: 'always',\n line: 'always',\n trail: 'always',\n area: 'always',\n text: 'always',\n geoshape: 'always'\n };\n case X:\n case Y:\n case LATITUDE:\n case LONGITUDE:\n return {\n // all marks except geoshape. geoshape does not use X, Y -- it uses a projection\n point: 'always',\n tick: 'always',\n rule: 'always',\n circle: 'always',\n square: 'always',\n bar: 'always',\n rect: 'always',\n line: 'always',\n trail: 'always',\n area: 'always',\n text: 'always'\n };\n case X2:\n case Y2:\n case LATITUDE2:\n case LONGITUDE2:\n return {\n rule: 'always',\n bar: 'always',\n rect: 'always',\n area: 'always',\n circle: 'binned',\n point: 'binned',\n square: 'binned',\n tick: 'binned'\n };\n case SIZE:\n return {\n point: 'always',\n tick: 'always',\n rule: 'always',\n circle: 'always',\n square: 'always',\n bar: 'always',\n text: 'always',\n line: 'always',\n trail: 'always'\n };\n case SHAPE:\n return { point: 'always', geoshape: 'always' };\n case TEXT:\n return { text: 'always' };\n }\n}\nexport function rangeType(channel) {\n switch (channel) {\n case X:\n case Y:\n case SIZE:\n case STROKEWIDTH:\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // X2 and Y2 use X and Y scales, so they similarly have continuous range. [falls through]\n case X2:\n case Y2:\n return undefined;\n case FACET:\n case ROW:\n case COLUMN:\n case SHAPE:\n // TEXT, TOOLTIP, and HREF have no scale but have discrete output [falls through]\n case TEXT:\n case TOOLTIP:\n case HREF:\n return 'discrete';\n // Color can be either continuous or discrete, depending on scale type.\n case COLOR:\n case FILL:\n case STROKE:\n return 'flexible';\n // No scale, no range type.\n case LATITUDE:\n case LONGITUDE:\n case LATITUDE2:\n case LONGITUDE2:\n case DETAIL:\n case KEY:\n case ORDER:\n return undefined;\n }\n /* istanbul ignore next: should never reach here. */\n throw new Error('rangeType not implemented for ' + channel);\n}\n//# sourceMappingURL=channel.js.map","import { stringify } from '../util';\n/**\n * Collection of all Vega-Lite Error Messages\n */\nexport const INVALID_SPEC = 'Invalid spec';\n// FIT\nexport const FIT_NON_SINGLE = 'Autosize \"fit\" only works for single views and layered views.';\nexport const CANNOT_FIX_RANGE_STEP_WITH_FIT = 'Cannot use a fixed value of \"rangeStep\" when \"autosize\" is \"fit\".';\n// SELECTION\nexport function cannotProjectOnChannelWithoutField(channel) {\n return `Cannot project a selection on encoding channel \"${channel}\", which has no field.`;\n}\nexport function nearestNotSupportForContinuous(mark) {\n return `The \"nearest\" transform is not supported for ${mark} marks.`;\n}\nexport function selectionNotSupported(mark) {\n return `Selection not supported for ${mark} yet`;\n}\nexport function selectionNotFound(name) {\n return `Cannot find a selection named \"${name}\"`;\n}\nexport const SCALE_BINDINGS_CONTINUOUS = 'Scale bindings are currently only supported for scales with unbinned, continuous domains.';\nexport const NO_INIT_SCALE_BINDINGS = 'Selections bound to scales cannot be separately initialized.';\n// REPEAT\nexport function noSuchRepeatedValue(field) {\n return `Unknown repeated value \"${field}\".`;\n}\nexport function columnsNotSupportByRowCol(type) {\n return `The \"columns\" property cannot be used when \"${type}\" has nested row/column.`;\n}\n// CONCAT\nexport const CONCAT_CANNOT_SHARE_AXIS = 'Axes cannot be shared in concatenated views yet (https://github.com/vega/vega-lite/issues/2415)';\n// REPEAT\nexport const REPEAT_CANNOT_SHARE_AXIS = 'Axes cannot be shared in repeated views yet (https://github.com/vega/vega-lite/issues/2415)';\n// DATA\nexport function unrecognizedParse(p) {\n return `Unrecognized parse \"${p}\".`;\n}\nexport function differentParse(field, local, ancestor) {\n return `An ancestor parsed field \"${field}\" as ${ancestor} but a child wants to parse the field as ${local}.`;\n}\n// TRANSFORMS\nexport function invalidTransformIgnored(transform) {\n return `Ignoring an invalid transform: ${stringify(transform)}.`;\n}\nexport const NO_FIELDS_NEEDS_AS = 'If \"from.fields\" is not specified, \"as\" has to be a string that specifies the key to be used for the data from the secondary source.';\n// ENCODING & FACET\nexport function encodingOverridden(channels) {\n return `Layer's shared ${channels.join(',')} channel ${channels.length === 1 ? 'is' : 'are'} overriden`;\n}\nexport function projectionOverridden(opt) {\n const { parentProjection, projection } = opt;\n return `Layer's shared projection ${stringify(parentProjection)} is overridden by a child projection ${stringify(projection)}.`;\n}\nexport function primitiveChannelDef(channel, type, value) {\n return `Channel ${channel} is a ${type}. Converted to {value: ${stringify(value)}}.`;\n}\nexport function invalidFieldType(type) {\n return `Invalid field type \"${type}\"`;\n}\nexport function nonZeroScaleUsedWithLengthMark(mark, channel, opt) {\n const scaleText = opt.scaleType\n ? `${opt.scaleType} scale`\n : opt.zeroFalse\n ? 'scale with zero=false'\n : 'scale with custom domain that excludes zero';\n return `A ${scaleText} is used to encode ${mark}'s ${channel}. This can be misleading as the ${channel === 'x' ? 'width' : 'height'} of the ${mark} can be arbitrary based on the scale domain. You may want to use point mark instead.`;\n}\nexport function invalidFieldTypeForCountAggregate(type, aggregate) {\n return `Invalid field type \"${type}\" for aggregate: \"${aggregate}\", using \"quantitative\" instead.`;\n}\nexport function invalidAggregate(aggregate) {\n return `Invalid aggregation operator \"${aggregate}\"`;\n}\nexport function missingFieldType(channel, newType) {\n return `Missing type for channel \"${channel}\", using \"${newType}\" instead.`;\n}\nexport function droppingColor(type, opt) {\n const { fill, stroke } = opt;\n return (`Dropping color ${type} as the plot also has ` + (fill && stroke ? 'fill and stroke' : fill ? 'fill' : 'stroke'));\n}\nexport function emptyFieldDef(fieldDef, channel) {\n return `Dropping ${stringify(fieldDef)} from channel \"${channel}\" since it does not contain data field or value.`;\n}\nexport function latLongDeprecated(channel, type, newChannel) {\n return `${channel}-encoding with type ${type} is deprecated. Replacing with ${newChannel}-encoding.`;\n}\nexport const LINE_WITH_VARYING_SIZE = 'Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.';\nexport function incompatibleChannel(channel, markOrFacet, when) {\n return `${channel} dropped as it is incompatible with \"${markOrFacet}\"${when ? ` when ${when}` : ''}.`;\n}\nexport function invalidEncodingChannel(channel) {\n return `${channel}-encoding is dropped as ${channel} is not a valid encoding channel.`;\n}\nexport function facetChannelShouldBeDiscrete(channel) {\n return `${channel} encoding should be discrete (ordinal / nominal / binned).`;\n}\nexport function facetChannelDropped(channels) {\n return `Facet encoding dropped as ${channels.join(' and ')} ${channels.length > 1 ? 'are' : 'is'} also specified.`;\n}\nexport function discreteChannelCannotEncode(channel, type) {\n return `Using discrete channel \"${channel}\" to encode \"${type}\" field can be misleading as it does not encode ${type === 'ordinal' ? 'order' : 'magnitude'}.`;\n}\n// Mark\nexport const BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL = 'Bar mark should not be used with point scale when rangeStep is null. Please use band scale instead.';\nexport function lineWithRange(hasX2, hasY2) {\n const channels = hasX2 && hasY2 ? 'x2 and y2' : hasX2 ? 'x2' : 'y2';\n return `Line mark is for continuous lines and thus cannot be used with ${channels}. We will use the rule mark (line segments) instead.`;\n}\nexport function orientOverridden(original, actual) {\n return `Specified orient \"${original}\" overridden with \"${actual}\"`;\n}\n// SCALE\nexport const CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN = 'custom domain scale cannot be unioned with default field-based domain';\nexport function cannotUseScalePropertyWithNonColor(prop) {\n return `Cannot use the scale property \"${prop}\" with non-color channel.`;\n}\nexport function unaggregateDomainHasNoEffectForRawField(fieldDef) {\n return `Using unaggregated domain with raw field has no effect (${stringify(fieldDef)}).`;\n}\nexport function unaggregateDomainWithNonSharedDomainOp(aggregate) {\n return `Unaggregated domain not applicable for \"${aggregate}\" since it produces values outside the origin domain of the source data.`;\n}\nexport function unaggregatedDomainWithLogScale(fieldDef) {\n return `Unaggregated domain is currently unsupported for log scale (${stringify(fieldDef)}).`;\n}\nexport function cannotApplySizeToNonOrientedMark(mark) {\n return `Cannot apply size to non-oriented mark \"${mark}\".`;\n}\nexport function rangeStepDropped(channel) {\n return `rangeStep for \"${channel}\" is dropped as top-level ${channel === 'x' ? 'width' : 'height'} is provided.`;\n}\nexport function scaleTypeNotWorkWithChannel(channel, scaleType, defaultScaleType) {\n return `Channel \"${channel}\" does not work with \"${scaleType}\" scale. We are using \"${defaultScaleType}\" scale instead.`;\n}\nexport function scaleTypeNotWorkWithFieldDef(scaleType, defaultScaleType) {\n return `FieldDef does not work with \"${scaleType}\" scale. We are using \"${defaultScaleType}\" scale instead.`;\n}\nexport function scalePropertyNotWorkWithScaleType(scaleType, propName, channel) {\n return `${channel}-scale's \"${propName}\" is dropped as it does not work with ${scaleType} scale.`;\n}\nexport function scaleTypeNotWorkWithMark(mark, scaleType) {\n return `Scale type \"${scaleType}\" does not work with mark \"${mark}\".`;\n}\nexport function mergeConflictingProperty(property, propertyOf, v1, v2) {\n return `Conflicting ${propertyOf.toString()} property \"${property.toString()}\" (${stringify(v1)} and ${stringify(v2)}). Using ${stringify(v1)}.`;\n}\nexport function independentScaleMeansIndependentGuide(channel) {\n return `Setting the scale to be independent for \"${channel}\" means we also have to set the guide (axis or legend) to be independent.`;\n}\nexport function domainSortDropped(sort) {\n return `Dropping sort property ${stringify(sort)} as unioned domains only support boolean or op 'count'.`;\n}\nexport const UNABLE_TO_MERGE_DOMAINS = 'Unable to merge domains';\nexport const MORE_THAN_ONE_SORT = 'Domains that should be unioned has conflicting sort properties. Sort will be set to true.';\n// AXIS\nexport const INVALID_CHANNEL_FOR_AXIS = 'Invalid channel for axis.';\n// STACK\nexport function cannotStackRangedMark(channel) {\n return `Cannot stack \"${channel}\" if there is already \"${channel}2\"`;\n}\nexport function cannotStackNonLinearScale(scaleType) {\n return `Cannot stack non-linear scale (${scaleType})`;\n}\nexport function stackNonSummativeAggregate(aggregate) {\n return `Stacking is applied even though the aggregate function is non-summative (\"${aggregate}\")`;\n}\n// TIMEUNIT\nexport function invalidTimeUnit(unitName, value) {\n return `Invalid ${unitName}: ${stringify(value)}`;\n}\nexport function dayReplacedWithDate(fullTimeUnit) {\n return `Time unit \"${fullTimeUnit}\" is not supported. We are replacing it with ${fullTimeUnit.replace('day', 'date')}.`;\n}\nexport function droppedDay(d) {\n return `Dropping day from datetime ${stringify(d)} as day cannot be combined with other units.`;\n}\nexport function errorBarCenterAndExtentAreNotNeeded(center, extent) {\n return `${extent ? 'extent ' : ''}${extent && center ? 'and ' : ''}${center ? 'center ' : ''}${extent && center ? 'are ' : 'is '}not needed when data are aggregated.`;\n}\nexport function errorBarCenterIsUsedWithWrongExtent(center, extent, mark) {\n return `${center} is not usually used with ${extent} for ${mark}.`;\n}\nexport function errorBarContinuousAxisHasCustomizedAggregate(aggregate, compositeMark) {\n return `Continuous axis should not have customized aggregation function ${aggregate}; ${compositeMark} already agregates the axis.`;\n}\nexport function errorBarCenterIsNotNeeded(extent, mark) {\n return `Center is not needed to be specified in ${mark} when extent is ${extent}.`;\n}\nexport function errorBand1DNotSupport(property) {\n return `1D error band does not support ${property}`;\n}\n// CHANNEL\nexport function channelRequiredForBinned(channel) {\n return `Channel ${channel} is required for \"binned\" bin`;\n}\nexport function domainRequiredForThresholdScale(channel) {\n return `Domain for ${channel} is required for threshold scale`;\n}\n//# sourceMappingURL=message.js.map","/**\n * Vega-Lite's singleton logger utility.\n */\nimport { logger, Warn } from 'vega-util';\nimport * as message_ from './message';\nexport const message = message_;\n/**\n * Main (default) Vega Logger instance for Vega-Lite\n */\nconst main = logger(Warn);\nlet current = main;\n/**\n * Logger tool for checking if the code throws correct warning\n */\nexport class LocalLogger {\n constructor() {\n this.warns = [];\n this.infos = [];\n this.debugs = [];\n }\n level() {\n return this;\n }\n warn(...args) {\n this.warns.push(...args);\n return this;\n }\n info(...args) {\n this.infos.push(...args);\n return this;\n }\n debug(...args) {\n this.debugs.push(...args);\n return this;\n }\n error(...args) {\n throw Error(...args);\n return this; // @ts-ignore\n }\n}\nexport function wrap(f) {\n return () => {\n current = new LocalLogger();\n f(current);\n reset();\n };\n}\n/**\n * Set the singleton logger to be a custom logger\n */\nexport function set(newLogger) {\n current = newLogger;\n return current;\n}\n/**\n * Reset the main logger to use the default Vega Logger\n */\nexport function reset() {\n current = main;\n return current;\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function warn(..._) {\n current.warn.apply(current, arguments);\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function info(..._) {\n current.info.apply(current, arguments);\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function debug(..._) {\n current.debug.apply(current, arguments);\n}\n//# sourceMappingURL=index.js.map","// DateTime definition object\nimport { isNumber } from 'vega-util';\nimport * as log from './log';\nimport { duplicate, keys } from './util';\n/*\n * A designated year that starts on Sunday.\n */\nconst SUNDAY_YEAR = 2006;\nexport function isDateTime(o) {\n return (!!o &&\n (!!o.year ||\n !!o.quarter ||\n !!o.month ||\n !!o.date ||\n !!o.day ||\n !!o.hours ||\n !!o.minutes ||\n !!o.seconds ||\n !!o.milliseconds));\n}\nexport const MONTHS = [\n 'january',\n 'february',\n 'march',\n 'april',\n 'may',\n 'june',\n 'july',\n 'august',\n 'september',\n 'october',\n 'november',\n 'december'\n];\nexport const SHORT_MONTHS = MONTHS.map(m => m.substr(0, 3));\nexport const DAYS = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nexport const SHORT_DAYS = DAYS.map(d => d.substr(0, 3));\nfunction normalizeQuarter(q) {\n if (isNumber(q)) {\n if (q > 4) {\n log.warn(log.message.invalidTimeUnit('quarter', q));\n }\n // We accept 1-based quarter, so need to readjust to 0-based quarter\n return (q - 1).toString();\n }\n else {\n // Invalid quarter\n throw new Error(log.message.invalidTimeUnit('quarter', q));\n }\n}\nfunction normalizeMonth(m) {\n if (isNumber(m)) {\n // We accept 1-based month, so need to readjust to 0-based month\n return (m - 1).toString();\n }\n else {\n const lowerM = m.toLowerCase();\n const monthIndex = MONTHS.indexOf(lowerM);\n if (monthIndex !== -1) {\n return monthIndex + ''; // 0 for january, ...\n }\n const shortM = lowerM.substr(0, 3);\n const shortMonthIndex = SHORT_MONTHS.indexOf(shortM);\n if (shortMonthIndex !== -1) {\n return shortMonthIndex + '';\n }\n // Invalid month\n throw new Error(log.message.invalidTimeUnit('month', m));\n }\n}\nfunction normalizeDay(d) {\n if (isNumber(d)) {\n // mod so that this can be both 0-based where 0 = sunday\n // and 1-based where 7=sunday\n return (d % 7) + '';\n }\n else {\n const lowerD = d.toLowerCase();\n const dayIndex = DAYS.indexOf(lowerD);\n if (dayIndex !== -1) {\n return dayIndex + ''; // 0 for january, ...\n }\n const shortD = lowerD.substr(0, 3);\n const shortDayIndex = SHORT_DAYS.indexOf(shortD);\n if (shortDayIndex !== -1) {\n return shortDayIndex + '';\n }\n // Invalid day\n throw new Error(log.message.invalidTimeUnit('day', d));\n }\n}\n/**\n * Return Vega Expression for a particular date time.\n * @param d\n * @param normalize whether to normalize quarter, month, day.\n */\nexport function dateTimeExpr(d, normalize = false) {\n const units = [];\n if (normalize && d.day !== undefined) {\n if (keys(d).length > 1) {\n log.warn(log.message.droppedDay(d));\n d = duplicate(d);\n delete d.day;\n }\n }\n if (d.year !== undefined) {\n units.push(d.year);\n }\n else if (d.day !== undefined) {\n // Set year to 2006 for working with day since January 1 2006 is a Sunday\n units.push(SUNDAY_YEAR);\n }\n else {\n units.push(0);\n }\n if (d.month !== undefined) {\n const month = normalize ? normalizeMonth(d.month) : d.month;\n units.push(month);\n }\n else if (d.quarter !== undefined) {\n const quarter = normalize ? normalizeQuarter(d.quarter) : d.quarter;\n units.push(quarter + '*3');\n }\n else {\n units.push(0); // months start at zero in JS\n }\n if (d.date !== undefined) {\n units.push(d.date);\n }\n else if (d.day !== undefined) {\n // HACK: Day only works as a standalone unit\n // This is only correct because we always set year to 2006 for day\n const day = normalize ? normalizeDay(d.day) : d.day;\n units.push(day + '+1');\n }\n else {\n units.push(1); // Date starts at 1 in JS\n }\n // Note: can't use TimeUnit enum here as importing it will create\n // circular dependency problem!\n for (const timeUnit of ['hours', 'minutes', 'seconds', 'milliseconds']) {\n if (d[timeUnit] !== undefined) {\n units.push(d[timeUnit]);\n }\n else {\n units.push(0);\n }\n }\n if (d.utc) {\n return `utc(${units.join(', ')})`;\n }\n else {\n return `datetime(${units.join(', ')})`;\n }\n}\n//# sourceMappingURL=datetime.js.map","export function isFacetMapping(f) {\n return !!f['row'] || !!f['column'];\n}\nexport function isFacetFieldDef(channelDef) {\n return !!channelDef && !!channelDef['header'];\n}\nexport function isFacetSpec(spec) {\n return spec['facet'] !== undefined;\n}\n//# sourceMappingURL=facet.js.map","import { dateTimeExpr } from './datetime';\nimport * as log from './log';\nimport { accessPathWithDatum, flagKeys } from './util';\nexport var TimeUnit;\n(function (TimeUnit) {\n TimeUnit.YEAR = 'year';\n TimeUnit.MONTH = 'month';\n TimeUnit.DAY = 'day';\n TimeUnit.DATE = 'date';\n TimeUnit.HOURS = 'hours';\n TimeUnit.MINUTES = 'minutes';\n TimeUnit.SECONDS = 'seconds';\n TimeUnit.MILLISECONDS = 'milliseconds';\n TimeUnit.YEARMONTH = 'yearmonth';\n TimeUnit.YEARMONTHDATE = 'yearmonthdate';\n TimeUnit.YEARMONTHDATEHOURS = 'yearmonthdatehours';\n TimeUnit.YEARMONTHDATEHOURSMINUTES = 'yearmonthdatehoursminutes';\n TimeUnit.YEARMONTHDATEHOURSMINUTESSECONDS = 'yearmonthdatehoursminutesseconds';\n // MONTHDATE and MONTHDATEHOURS always include 29 February since we use year 0th (which is a leap year);\n TimeUnit.MONTHDATE = 'monthdate';\n TimeUnit.MONTHDATEHOURS = 'monthdatehours';\n TimeUnit.HOURSMINUTES = 'hoursminutes';\n TimeUnit.HOURSMINUTESSECONDS = 'hoursminutesseconds';\n TimeUnit.MINUTESSECONDS = 'minutesseconds';\n TimeUnit.SECONDSMILLISECONDS = 'secondsmilliseconds';\n TimeUnit.QUARTER = 'quarter';\n TimeUnit.YEARQUARTER = 'yearquarter';\n TimeUnit.QUARTERMONTH = 'quartermonth';\n TimeUnit.YEARQUARTERMONTH = 'yearquartermonth';\n TimeUnit.UTCYEAR = 'utcyear';\n TimeUnit.UTCMONTH = 'utcmonth';\n TimeUnit.UTCDAY = 'utcday';\n TimeUnit.UTCDATE = 'utcdate';\n TimeUnit.UTCHOURS = 'utchours';\n TimeUnit.UTCMINUTES = 'utcminutes';\n TimeUnit.UTCSECONDS = 'utcseconds';\n TimeUnit.UTCMILLISECONDS = 'utcmilliseconds';\n TimeUnit.UTCYEARMONTH = 'utcyearmonth';\n TimeUnit.UTCYEARMONTHDATE = 'utcyearmonthdate';\n TimeUnit.UTCYEARMONTHDATEHOURS = 'utcyearmonthdatehours';\n TimeUnit.UTCYEARMONTHDATEHOURSMINUTES = 'utcyearmonthdatehoursminutes';\n TimeUnit.UTCYEARMONTHDATEHOURSMINUTESSECONDS = 'utcyearmonthdatehoursminutesseconds';\n // UTCMONTHDATE and UTCMONTHDATEHOURS always include 29 February since we use year 0th (which is a leap year);\n TimeUnit.UTCMONTHDATE = 'utcmonthdate';\n TimeUnit.UTCMONTHDATEHOURS = 'utcmonthdatehours';\n TimeUnit.UTCHOURSMINUTES = 'utchoursminutes';\n TimeUnit.UTCHOURSMINUTESSECONDS = 'utchoursminutesseconds';\n TimeUnit.UTCMINUTESSECONDS = 'utcminutesseconds';\n TimeUnit.UTCSECONDSMILLISECONDS = 'utcsecondsmilliseconds';\n TimeUnit.UTCQUARTER = 'utcquarter';\n TimeUnit.UTCYEARQUARTER = 'utcyearquarter';\n TimeUnit.UTCQUARTERMONTH = 'utcquartermonth';\n TimeUnit.UTCYEARQUARTERMONTH = 'utcyearquartermonth';\n})(TimeUnit || (TimeUnit = {}));\n/** Time Unit that only corresponds to only one part of Date objects. */\nconst LOCAL_SINGLE_TIMEUNIT_INDEX = {\n year: 1,\n quarter: 1,\n month: 1,\n day: 1,\n date: 1,\n hours: 1,\n minutes: 1,\n seconds: 1,\n milliseconds: 1\n};\nexport const TIMEUNIT_PARTS = flagKeys(LOCAL_SINGLE_TIMEUNIT_INDEX);\nexport function isLocalSingleTimeUnit(timeUnit) {\n return !!LOCAL_SINGLE_TIMEUNIT_INDEX[timeUnit];\n}\nconst UTC_SINGLE_TIMEUNIT_INDEX = {\n utcyear: 1,\n utcquarter: 1,\n utcmonth: 1,\n utcday: 1,\n utcdate: 1,\n utchours: 1,\n utcminutes: 1,\n utcseconds: 1,\n utcmilliseconds: 1\n};\nexport function isUtcSingleTimeUnit(timeUnit) {\n return !!UTC_SINGLE_TIMEUNIT_INDEX[timeUnit];\n}\nconst LOCAL_MULTI_TIMEUNIT_INDEX = {\n yearquarter: 1,\n yearquartermonth: 1,\n yearmonth: 1,\n yearmonthdate: 1,\n yearmonthdatehours: 1,\n yearmonthdatehoursminutes: 1,\n yearmonthdatehoursminutesseconds: 1,\n quartermonth: 1,\n monthdate: 1,\n monthdatehours: 1,\n hoursminutes: 1,\n hoursminutesseconds: 1,\n minutesseconds: 1,\n secondsmilliseconds: 1\n};\nconst UTC_MULTI_TIMEUNIT_INDEX = {\n utcyearquarter: 1,\n utcyearquartermonth: 1,\n utcyearmonth: 1,\n utcyearmonthdate: 1,\n utcyearmonthdatehours: 1,\n utcyearmonthdatehoursminutes: 1,\n utcyearmonthdatehoursminutesseconds: 1,\n utcquartermonth: 1,\n utcmonthdate: 1,\n utcmonthdatehours: 1,\n utchoursminutes: 1,\n utchoursminutesseconds: 1,\n utcminutesseconds: 1,\n utcsecondsmilliseconds: 1\n};\nconst UTC_TIMEUNIT_INDEX = Object.assign({}, UTC_SINGLE_TIMEUNIT_INDEX, UTC_MULTI_TIMEUNIT_INDEX);\nexport function isUTCTimeUnit(t) {\n return !!UTC_TIMEUNIT_INDEX[t];\n}\nexport function getLocalTimeUnit(t) {\n return t.substr(3);\n}\nconst TIMEUNIT_INDEX = Object.assign({}, LOCAL_SINGLE_TIMEUNIT_INDEX, UTC_SINGLE_TIMEUNIT_INDEX, LOCAL_MULTI_TIMEUNIT_INDEX, UTC_MULTI_TIMEUNIT_INDEX);\nexport const TIMEUNITS = flagKeys(TIMEUNIT_INDEX);\nexport function isTimeUnit(t) {\n return !!TIMEUNIT_INDEX[t];\n}\nconst SET_DATE_METHOD = {\n year: 'setFullYear',\n month: 'setMonth',\n date: 'setDate',\n hours: 'setHours',\n minutes: 'setMinutes',\n seconds: 'setSeconds',\n milliseconds: 'setMilliseconds',\n // Day and quarter have their own special cases\n quarter: null,\n day: null\n};\n/**\n * Converts a date to only have the measurements relevant to the specified unit\n * i.e. ('yearmonth', '2000-12-04 07:58:14') -> '2000-12-01 00:00:00'\n * Note: the base date is Jan 01 1900 00:00:00\n */\nexport function convert(unit, date) {\n const isUTC = isUTCTimeUnit(unit);\n const result = isUTC\n ? // start with uniform date\n new Date(Date.UTC(1972, 0, 1, 0, 0, 0, 0)) // 1972 is the first leap year after 1970, the start of unix time\n : new Date(1972, 0, 1, 0, 0, 0, 0);\n for (const timeUnitPart of TIMEUNIT_PARTS) {\n if (containsTimeUnit(unit, timeUnitPart)) {\n switch (timeUnitPart) {\n case TimeUnit.DAY:\n throw new Error(\"Cannot convert to TimeUnits containing 'day'\");\n case TimeUnit.QUARTER: {\n const { getDateMethod, setDateMethod } = dateMethods('month', isUTC);\n // indicate quarter by setting month to be the first of the quarter i.e. may (4) -> april (3)\n result[setDateMethod](Math.floor(date[getDateMethod]() / 3) * 3);\n break;\n }\n default: {\n const { getDateMethod, setDateMethod } = dateMethods(timeUnitPart, isUTC);\n result[setDateMethod](date[getDateMethod]());\n }\n }\n }\n }\n return result;\n}\nfunction dateMethods(singleUnit, isUtc) {\n const rawSetDateMethod = SET_DATE_METHOD[singleUnit];\n const setDateMethod = isUtc ? 'setUTC' + rawSetDateMethod.substr(3) : rawSetDateMethod;\n const getDateMethod = 'get' + (isUtc ? 'UTC' : '') + rawSetDateMethod.substr(3);\n return { setDateMethod, getDateMethod };\n}\nexport function getTimeUnitParts(timeUnit) {\n return TIMEUNIT_PARTS.reduce((parts, part) => {\n if (containsTimeUnit(timeUnit, part)) {\n return [...parts, part];\n }\n return parts;\n }, []);\n}\n/** Returns true if fullTimeUnit contains the timeUnit, false otherwise. */\nexport function containsTimeUnit(fullTimeUnit, timeUnit) {\n const index = fullTimeUnit.indexOf(timeUnit);\n return (index > -1 && (timeUnit !== TimeUnit.SECONDS || index === 0 || fullTimeUnit.charAt(index - 1) !== 'i') // exclude milliseconds\n );\n}\n/**\n * Returns Vega expresssion for a given timeUnit and fieldRef\n */\nexport function fieldExpr(fullTimeUnit, field) {\n const fieldRef = accessPathWithDatum(field);\n const utc = isUTCTimeUnit(fullTimeUnit) ? 'utc' : '';\n function func(timeUnit) {\n if (timeUnit === TimeUnit.QUARTER) {\n // quarter starting at 0 (0,3,6,9).\n return `(${utc}quarter(${fieldRef})-1)`;\n }\n else {\n return `${utc}${timeUnit}(${fieldRef})`;\n }\n }\n const d = TIMEUNIT_PARTS.reduce((dateExpr, tu) => {\n if (containsTimeUnit(fullTimeUnit, tu)) {\n dateExpr[tu] = func(tu);\n }\n return dateExpr;\n }, {});\n return dateTimeExpr(d);\n}\nexport function getDateTimeComponents(timeUnit, shortTimeLabels) {\n if (!timeUnit) {\n return undefined;\n }\n const dateComponents = [];\n const hasYear = containsTimeUnit(timeUnit, TimeUnit.YEAR);\n if (containsTimeUnit(timeUnit, TimeUnit.MONTH)) {\n // By default use short month name\n dateComponents.push(shortTimeLabels !== false ? '%b' : '%B');\n }\n if (containsTimeUnit(timeUnit, TimeUnit.DAY)) {\n dateComponents.push(shortTimeLabels ? '%a' : '%A');\n }\n else if (containsTimeUnit(timeUnit, TimeUnit.DATE)) {\n dateComponents.push('%d' + (hasYear ? ',' : '')); // add comma if there is year\n }\n if (hasYear) {\n dateComponents.push(shortTimeLabels ? '%y' : '%Y');\n }\n const timeComponents = [];\n if (containsTimeUnit(timeUnit, TimeUnit.HOURS)) {\n timeComponents.push('%H');\n }\n if (containsTimeUnit(timeUnit, TimeUnit.MINUTES)) {\n timeComponents.push('%M');\n }\n if (containsTimeUnit(timeUnit, TimeUnit.SECONDS)) {\n timeComponents.push('%S');\n }\n if (containsTimeUnit(timeUnit, TimeUnit.MILLISECONDS)) {\n timeComponents.push('%L');\n }\n const dateTimeComponents = [];\n if (dateComponents.length > 0) {\n dateTimeComponents.push(dateComponents.join(' '));\n }\n if (timeComponents.length > 0) {\n dateTimeComponents.push(timeComponents.join(':'));\n }\n return dateTimeComponents;\n}\n/**\n * returns the signal expression used for axis labels for a time unit\n */\nexport function formatExpression(timeUnit, field, shortTimeLabels, isUTCScale) {\n if (!timeUnit) {\n return undefined;\n }\n const dateTimeComponents = getDateTimeComponents(timeUnit, shortTimeLabels);\n let expression = '';\n if (containsTimeUnit(timeUnit, TimeUnit.QUARTER)) {\n // special expression for quarter as prefix\n expression = `'Q' + quarter(${field})`;\n }\n if (dateTimeComponents.length > 0) {\n if (expression) {\n // Add space between quarter and main time format\n expression += ` + ' ' + `;\n }\n // We only use utcFormat for utc scale\n // For utc time units, the data is already converted as a part of timeUnit transform.\n // Thus, utc time units should use timeFormat to avoid shifting the time twice.\n if (isUTCScale) {\n expression += `utcFormat(${field}, '${dateTimeComponents.join(' ')}')`;\n }\n else {\n expression += `timeFormat(${field}, '${dateTimeComponents.join(' ')}')`;\n }\n }\n // If expression is still an empty string, return undefined instead.\n return expression || undefined;\n}\nexport function normalizeTimeUnit(timeUnit) {\n if (timeUnit !== 'day' && timeUnit.indexOf('day') >= 0) {\n log.warn(log.message.dayReplacedWithDate(timeUnit));\n return timeUnit.replace('day', 'date');\n }\n return timeUnit;\n}\n//# sourceMappingURL=timeunit.js.map","/** Constants and utilities for data type */\n/** Data type based on level of measurement */\nexport const TYPE_INDEX = {\n quantitative: 1,\n ordinal: 1,\n temporal: 1,\n nominal: 1,\n geojson: 1\n};\nexport function isType(t) {\n return !!TYPE_INDEX[t];\n}\nexport const QUANTITATIVE = 'quantitative';\nexport const ORDINAL = 'ordinal';\nexport const TEMPORAL = 'temporal';\nexport const NOMINAL = 'nominal';\nexport const GEOJSON = 'geojson';\n/**\n * Get full, lowercase type name for a given type.\n * @param type\n * @return Full type name.\n */\nexport function getFullName(type) {\n if (type) {\n type = type.toLowerCase();\n switch (type) {\n case 'q':\n case QUANTITATIVE:\n return 'quantitative';\n case 't':\n case TEMPORAL:\n return 'temporal';\n case 'o':\n case ORDINAL:\n return 'ordinal';\n case 'n':\n case NOMINAL:\n return 'nominal';\n case GEOJSON:\n return 'geojson';\n }\n }\n // If we get invalid input, return undefined type.\n return undefined;\n}\n//# sourceMappingURL=type.js.map","import * as tslib_1 from \"tslib\";\n// Declaration and utility for variants of a field definition object\nimport { isArray, isBoolean, isNumber, isString } from 'vega-util';\nimport { isAggregateOp, isArgmaxDef, isArgminDef, isCountingAggregateOp } from './aggregate';\nimport { autoMaxBins, binToString, isBinned, isBinning } from './bin';\nimport { isScaleChannel, isSecondaryRangeChannel, POSITION_SCALE_CHANNELS, rangeType } from './channel';\nimport { dateTimeExpr, isDateTime } from './datetime';\nimport * as log from './log';\nimport { isFacetFieldDef } from './spec/facet';\nimport { getLocalTimeUnit, getTimeUnitParts, isLocalSingleTimeUnit, isUtcSingleTimeUnit, normalizeTimeUnit } from './timeunit';\nimport { getFullName, QUANTITATIVE } from './type';\nimport { contains, flatAccessWithDatum, getFirstDefined, internalField, replacePathInField, titlecase } from './util';\nexport function isConditionalSelection(c) {\n return c['selection'];\n}\nexport function isRepeatRef(field) {\n return field && !isString(field) && 'repeat' in field;\n}\nexport function toFieldDefBase(fieldDef) {\n const { field, timeUnit, bin, aggregate } = fieldDef;\n return Object.assign({}, (timeUnit ? { timeUnit } : {}), (bin ? { bin } : {}), (aggregate ? { aggregate } : {}), { field });\n}\nexport function isSortableFieldDef(fieldDef) {\n return isTypedFieldDef(fieldDef) && !!fieldDef['sort'];\n}\nexport function isConditionalDef(channelDef) {\n return !!channelDef && !!channelDef.condition;\n}\n/**\n * Return if a channelDef is a ConditionalValueDef with ConditionFieldDef\n */\nexport function hasConditionalFieldDef(channelDef) {\n return !!channelDef && !!channelDef.condition && !isArray(channelDef.condition) && isFieldDef(channelDef.condition);\n}\nexport function hasConditionalValueDef(channelDef) {\n return !!channelDef && !!channelDef.condition && (isArray(channelDef.condition) || isValueDef(channelDef.condition));\n}\nexport function isFieldDef(channelDef) {\n return !!channelDef && (!!channelDef['field'] || channelDef['aggregate'] === 'count');\n}\nexport function isTypedFieldDef(channelDef) {\n return !!channelDef && ((!!channelDef['field'] && !!channelDef['type']) || channelDef['aggregate'] === 'count');\n}\nexport function isStringFieldDef(channelDef) {\n return isFieldDef(channelDef) && isString(channelDef.field);\n}\nexport function isValueDef(channelDef) {\n return channelDef && 'value' in channelDef && channelDef['value'] !== undefined;\n}\nexport function isScaleFieldDef(channelDef) {\n return !!channelDef && (!!channelDef['scale'] || !!channelDef['sort']);\n}\nexport function isPositionFieldDef(channelDef) {\n return !!channelDef && (!!channelDef['axis'] || !!channelDef['stack'] || !!channelDef['impute']);\n}\nexport function isMarkPropFieldDef(channelDef) {\n return !!channelDef && !!channelDef['legend'];\n}\nexport function isTextFieldDef(channelDef) {\n return !!channelDef && !!channelDef['format'];\n}\nfunction isOpFieldDef(fieldDef) {\n return !!fieldDef['op'];\n}\n/**\n * Get a Vega field reference from a Vega-Lite field def.\n */\nexport function vgField(fieldDef, opt = {}) {\n let field = fieldDef.field;\n const prefix = opt.prefix;\n let suffix = opt.suffix;\n let argAccessor = ''; // for accessing argmin/argmax field at the end without getting escaped\n if (isCount(fieldDef)) {\n field = internalField('count');\n }\n else {\n let fn;\n if (!opt.nofn) {\n if (isOpFieldDef(fieldDef)) {\n fn = fieldDef.op;\n }\n else {\n const { bin, aggregate, timeUnit } = fieldDef;\n if (isBinning(bin)) {\n fn = binToString(bin);\n suffix = (opt.binSuffix || '') + (opt.suffix || '');\n }\n else if (aggregate) {\n if (isArgmaxDef(aggregate)) {\n argAccessor = `.${field}`;\n field = `argmax_${aggregate.argmax}`;\n }\n else if (isArgminDef(aggregate)) {\n argAccessor = `.${field}`;\n field = `argmin_${aggregate.argmin}`;\n }\n else {\n fn = String(aggregate);\n }\n }\n else if (timeUnit) {\n fn = String(timeUnit);\n }\n }\n }\n if (fn) {\n field = field ? `${fn}_${field}` : fn;\n }\n }\n if (suffix) {\n field = `${field}_${suffix}`;\n }\n if (prefix) {\n field = `${prefix}_${field}`;\n }\n if (opt.forAs) {\n return field;\n }\n else if (opt.expr) {\n // Expression to access flattened field. No need to escape dots.\n return flatAccessWithDatum(field, opt.expr) + argAccessor;\n }\n else {\n // We flattened all fields so paths should have become dot.\n return replacePathInField(field) + argAccessor;\n }\n}\nexport function isDiscrete(fieldDef) {\n switch (fieldDef.type) {\n case 'nominal':\n case 'ordinal':\n case 'geojson':\n return true;\n case 'quantitative':\n return !!fieldDef.bin;\n case 'temporal':\n return false;\n }\n throw new Error(log.message.invalidFieldType(fieldDef.type));\n}\nexport function isContinuous(fieldDef) {\n return !isDiscrete(fieldDef);\n}\nexport function isCount(fieldDef) {\n return fieldDef.aggregate === 'count';\n}\nexport function verbalTitleFormatter(fieldDef, config) {\n const { field, bin, timeUnit, aggregate } = fieldDef;\n if (aggregate === 'count') {\n return config.countTitle;\n }\n else if (isBinning(bin)) {\n return `${field} (binned)`;\n }\n else if (timeUnit) {\n const units = getTimeUnitParts(timeUnit).join('-');\n return `${field} (${units})`;\n }\n else if (aggregate) {\n if (isArgmaxDef(aggregate)) {\n return `${field} for max ${aggregate.argmax}`;\n }\n else if (isArgminDef(aggregate)) {\n return `${field} for min ${aggregate.argmin}`;\n }\n else {\n return `${titlecase(aggregate)} of ${field}`;\n }\n }\n return field;\n}\nexport function functionalTitleFormatter(fieldDef) {\n const { aggregate, bin, timeUnit, field } = fieldDef;\n if (isArgmaxDef(aggregate)) {\n return `${field} for argmax(${aggregate.argmax})`;\n }\n else if (isArgminDef(aggregate)) {\n return `${field} for argmin(${aggregate.argmin})`;\n }\n const fn = aggregate || timeUnit || (isBinning(bin) && 'bin');\n if (fn) {\n return fn.toUpperCase() + '(' + field + ')';\n }\n else {\n return field;\n }\n}\nexport const defaultTitleFormatter = (fieldDef, config) => {\n switch (config.fieldTitle) {\n case 'plain':\n return fieldDef.field;\n case 'functional':\n return functionalTitleFormatter(fieldDef);\n default:\n return verbalTitleFormatter(fieldDef, config);\n }\n};\nlet titleFormatter = defaultTitleFormatter;\nexport function setTitleFormatter(formatter) {\n titleFormatter = formatter;\n}\nexport function resetTitleFormatter() {\n setTitleFormatter(defaultTitleFormatter);\n}\nexport function title(fieldDef, config, { allowDisabling, includeDefault = true }) {\n const guide = getGuide(fieldDef) || {};\n const guideTitle = guide.title;\n const def = includeDefault ? defaultTitle(fieldDef, config) : undefined;\n if (allowDisabling) {\n return getFirstDefined(guideTitle, fieldDef.title, def);\n }\n else {\n return guideTitle || fieldDef.title || def;\n }\n}\nexport function getGuide(fieldDef) {\n if (isPositionFieldDef(fieldDef) && fieldDef.axis) {\n return fieldDef.axis;\n }\n else if (isMarkPropFieldDef(fieldDef) && fieldDef.legend) {\n return fieldDef.legend;\n }\n else if (isFacetFieldDef(fieldDef) && fieldDef.header) {\n return fieldDef.header;\n }\n return undefined;\n}\nexport function defaultTitle(fieldDef, config) {\n return titleFormatter(fieldDef, config);\n}\nexport function format(fieldDef) {\n if (isTextFieldDef(fieldDef) && fieldDef.format) {\n return fieldDef.format;\n }\n else {\n const guide = getGuide(fieldDef) || {};\n return guide.format;\n }\n}\nexport function defaultType(fieldDef, channel) {\n if (fieldDef.timeUnit) {\n return 'temporal';\n }\n if (isBinning(fieldDef.bin)) {\n return 'quantitative';\n }\n switch (rangeType(channel)) {\n case 'continuous':\n return 'quantitative';\n case 'discrete':\n return 'nominal';\n case 'flexible': // color\n return 'nominal';\n default:\n return 'quantitative';\n }\n}\n/**\n * Returns the fieldDef -- either from the outer channelDef or from the condition of channelDef.\n * @param channelDef\n */\nexport function getFieldDef(channelDef) {\n if (isFieldDef(channelDef)) {\n return channelDef;\n }\n else if (hasConditionalFieldDef(channelDef)) {\n return channelDef.condition;\n }\n return undefined;\n}\nexport function getTypedFieldDef(channelDef) {\n if (isFieldDef(channelDef)) {\n return channelDef;\n }\n else if (hasConditionalFieldDef(channelDef)) {\n return channelDef.condition;\n }\n return undefined;\n}\n/**\n * Convert type to full, lowercase type, or augment the fieldDef with a default type if missing.\n */\nexport function normalize(channelDef, channel) {\n if (isString(channelDef) || isNumber(channelDef) || isBoolean(channelDef)) {\n const primitiveType = isString(channelDef) ? 'string' : isNumber(channelDef) ? 'number' : 'boolean';\n log.warn(log.message.primitiveChannelDef(channel, primitiveType, channelDef));\n return { value: channelDef };\n }\n // If a fieldDef contains a field, we need type.\n if (isFieldDef(channelDef)) {\n return normalizeFieldDef(channelDef, channel);\n }\n else if (hasConditionalFieldDef(channelDef)) {\n return Object.assign({}, channelDef, { \n // Need to cast as normalizeFieldDef normally return FieldDef, but here we know that it is definitely Condition<FieldDef>\n condition: normalizeFieldDef(channelDef.condition, channel) });\n }\n return channelDef;\n}\nexport function normalizeFieldDef(fieldDef, channel) {\n const { aggregate, timeUnit, bin } = fieldDef;\n // Drop invalid aggregate\n if (aggregate && !isAggregateOp(aggregate) && !isArgmaxDef(aggregate) && !isArgminDef(aggregate)) {\n const { aggregate: _ } = fieldDef, fieldDefWithoutAggregate = tslib_1.__rest(fieldDef, [\"aggregate\"]);\n log.warn(log.message.invalidAggregate(aggregate));\n fieldDef = fieldDefWithoutAggregate;\n }\n // Normalize Time Unit\n if (timeUnit) {\n fieldDef = Object.assign({}, fieldDef, { timeUnit: normalizeTimeUnit(timeUnit) });\n }\n // Normalize bin\n if (isBinning(bin)) {\n fieldDef = Object.assign({}, fieldDef, { bin: normalizeBin(bin, channel) });\n }\n if (isBinned(bin) && !contains(POSITION_SCALE_CHANNELS, channel)) {\n log.warn(`Channel ${channel} should not be used with \"binned\" bin`);\n }\n // Normalize Type\n if (isTypedFieldDef(fieldDef)) {\n const { type } = fieldDef;\n const fullType = getFullName(type);\n if (type !== fullType) {\n // convert short type to full type\n fieldDef = Object.assign({}, fieldDef, { type: fullType });\n }\n if (type !== 'quantitative') {\n if (isCountingAggregateOp(aggregate)) {\n log.warn(log.message.invalidFieldTypeForCountAggregate(type, aggregate));\n fieldDef = Object.assign({}, fieldDef, { type: 'quantitative' });\n }\n }\n }\n else if (!isSecondaryRangeChannel(channel)) {\n // If type is empty / invalid, then augment with default type\n const newType = defaultType(fieldDef, channel);\n log.warn(log.message.missingFieldType(channel, newType));\n fieldDef = Object.assign({}, fieldDef, { type: newType });\n }\n if (isTypedFieldDef(fieldDef)) {\n const { compatible, warning } = channelCompatibility(fieldDef, channel);\n if (!compatible) {\n log.warn(warning);\n }\n }\n return fieldDef;\n}\nexport function normalizeBin(bin, channel) {\n if (isBoolean(bin)) {\n return { maxbins: autoMaxBins(channel) };\n }\n else if (bin === 'binned') {\n return {\n binned: true\n };\n }\n else if (!bin.maxbins && !bin.step) {\n return Object.assign({}, bin, { maxbins: autoMaxBins(channel) });\n }\n else {\n return bin;\n }\n}\nconst COMPATIBLE = { compatible: true };\nexport function channelCompatibility(fieldDef, channel) {\n const type = fieldDef.type;\n if (type === 'geojson' && channel !== 'shape') {\n return {\n compatible: false,\n warning: `Channel ${channel} should not be used with a geojson data.`\n };\n }\n switch (channel) {\n case 'row':\n case 'column':\n case 'facet':\n if (isContinuous(fieldDef)) {\n return {\n compatible: false,\n warning: log.message.facetChannelShouldBeDiscrete(channel)\n };\n }\n return COMPATIBLE;\n case 'x':\n case 'y':\n case 'color':\n case 'fill':\n case 'stroke':\n case 'text':\n case 'detail':\n case 'key':\n case 'tooltip':\n case 'href':\n return COMPATIBLE;\n case 'longitude':\n case 'longitude2':\n case 'latitude':\n case 'latitude2':\n if (type !== QUANTITATIVE) {\n return {\n compatible: false,\n warning: `Channel ${channel} should be used with a quantitative field only, not ${fieldDef.type} field.`\n };\n }\n return COMPATIBLE;\n case 'opacity':\n case 'fillOpacity':\n case 'strokeOpacity':\n case 'strokeWidth':\n case 'size':\n case 'x2':\n case 'y2':\n if (type === 'nominal' && !fieldDef['sort']) {\n return {\n compatible: false,\n warning: `Channel ${channel} should not be used with an unsorted discrete field.`\n };\n }\n return COMPATIBLE;\n case 'shape':\n if (!contains(['ordinal', 'nominal', 'geojson'], fieldDef.type)) {\n return {\n compatible: false,\n warning: 'Shape channel should be used with only either discrete or geojson data.'\n };\n }\n return COMPATIBLE;\n case 'order':\n if (fieldDef.type === 'nominal' && !('sort' in fieldDef)) {\n return {\n compatible: false,\n warning: `Channel order is inappropriate for nominal field, which has no inherent order.`\n };\n }\n return COMPATIBLE;\n }\n throw new Error('channelCompatability not implemented for channel ' + channel);\n}\nexport function isNumberFieldDef(fieldDef) {\n return fieldDef.type === 'quantitative' || isBinning(fieldDef.bin);\n}\n/**\n * Check if the field def uses a time format or does not use any format but is temporal (this does not cover field defs that are temporal but use a number format).\n */\nexport function isTimeFormatFieldDef(fieldDef) {\n const formatType = (isPositionFieldDef(fieldDef) && fieldDef.axis && fieldDef.axis.formatType) ||\n (isMarkPropFieldDef(fieldDef) && fieldDef.legend && fieldDef.legend.formatType) ||\n (isTextFieldDef(fieldDef) && fieldDef.formatType);\n return formatType === 'time' || (!formatType && isTimeFieldDef(fieldDef));\n}\n/**\n * Check if field def has tye `temporal`. If you want to also cover field defs that use a time format, use `isTimeFormatFieldDef`.\n */\nexport function isTimeFieldDef(fieldDef) {\n return fieldDef.type === 'temporal' || !!fieldDef.timeUnit;\n}\n/**\n * Getting a value associated with a fielddef.\n * Convert the value to Vega expression if applicable (for datetime object, or string if the field def is temporal or has timeUnit)\n */\nexport function valueExpr(v, { timeUnit, type, time, undefinedIfExprNotRequired }) {\n let expr;\n if (isDateTime(v)) {\n expr = dateTimeExpr(v, true);\n }\n else if (isString(v) || isNumber(v)) {\n if (timeUnit || type === 'temporal') {\n if (isLocalSingleTimeUnit(timeUnit)) {\n expr = dateTimeExpr({ [timeUnit]: v }, true);\n }\n else if (isUtcSingleTimeUnit(timeUnit)) {\n // FIXME is this really correct?\n expr = valueExpr(v, { timeUnit: getLocalTimeUnit(timeUnit) });\n }\n else {\n // just pass the string to date function (which will call JS Date.parse())\n expr = `datetime(${JSON.stringify(v)})`;\n }\n }\n }\n if (expr) {\n return time ? `time(${expr})` : expr;\n }\n // number or boolean or normal string\n return undefinedIfExprNotRequired ? undefined : JSON.stringify(v);\n}\n/**\n * Standardize value array -- convert each value to Vega expression if applicable\n */\nexport function valueArray(fieldDef, values) {\n const { timeUnit, type } = fieldDef;\n return values.map(v => {\n const expr = valueExpr(v, { timeUnit, type, undefinedIfExprNotRequired: true });\n // return signal for the expression if we need an expression\n if (expr !== undefined) {\n return { signal: expr };\n }\n // otherwise just return the original value\n return v;\n });\n}\n/**\n * Checks whether a fieldDef for a particular channel requires a computed bin range.\n */\nexport function binRequiresRange(fieldDef, channel) {\n if (!isBinning(fieldDef.bin)) {\n console.warn('Only use this method with binned field defs');\n return false;\n }\n // We need the range only when the user explicitly forces a binned field to be use discrete scale. In this case, bin range is used in axis and legend labels.\n // We could check whether the axis or legend exists (not disabled) but that seems overkill.\n return isScaleChannel(channel) && contains(['ordinal', 'nominal'], fieldDef.type);\n}\n//# sourceMappingURL=channeldef.js.map","import { isBoolean, isObject } from 'vega-util';\nimport { COLOR, COLUMN, FILL, FILLOPACITY, OPACITY, ROW, SHAPE, SIZE, STROKE, STROKEOPACITY, STROKEWIDTH } from './channel';\nimport { normalizeBin } from './channeldef';\nimport { keys, varName } from './util';\n/**\n * Create a key for the bin configuration. Not for prebinned bin.\n */\nexport function binToString(bin) {\n if (isBoolean(bin)) {\n bin = normalizeBin(bin, undefined);\n }\n return ('bin' +\n keys(bin)\n .map(p => varName(`_${p}_${bin[p]}`))\n .join(''));\n}\n/**\n * Vega-Lite should bin the data.\n */\nexport function isBinning(bin) {\n return bin === true || (isBinParams(bin) && !bin.binned);\n}\n/**\n * The data is already binned and so Vega-Lite should not bin it again.\n */\nexport function isBinned(bin) {\n return bin === 'binned' || (isBinParams(bin) && bin.binned);\n}\nexport function isBinParams(bin) {\n return isObject(bin);\n}\nexport function autoMaxBins(channel) {\n switch (channel) {\n case ROW:\n case COLUMN:\n case SIZE:\n case COLOR:\n case FILL:\n case STROKE:\n case STROKEWIDTH:\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // Facets and Size shouldn't have too many bins\n // We choose 6 like shape to simplify the rule [falls through]\n case SHAPE:\n return 6; // Vega's \"shape\" has 6 distinct values\n default:\n return 10;\n }\n}\n//# sourceMappingURL=bin.js.map","import * as tslib_1 from \"tslib\";\nimport { isArray } from 'vega-util';\nimport { isArgmaxDef, isArgminDef } from './aggregate';\nimport { isBinning } from './bin';\nimport { CHANNELS, isChannel, isNonPositionScaleChannel, isSecondaryRangeChannel, supportMark } from './channel';\nimport { binRequiresRange, getFieldDef, getGuide, getTypedFieldDef, hasConditionalFieldDef, isConditionalDef, isFieldDef, isTypedFieldDef, isValueDef, normalize, normalizeFieldDef, title, vgField } from './channeldef';\nimport * as log from './log';\nimport { getDateTimeComponents } from './timeunit';\nimport { TEMPORAL } from './type';\nimport { keys, some } from './util';\nexport function channelHasField(encoding, channel) {\n const channelDef = encoding && encoding[channel];\n if (channelDef) {\n if (isArray(channelDef)) {\n return some(channelDef, fieldDef => !!fieldDef.field);\n }\n else {\n return isFieldDef(channelDef) || hasConditionalFieldDef(channelDef);\n }\n }\n return false;\n}\nexport function isAggregate(encoding) {\n return some(CHANNELS, channel => {\n if (channelHasField(encoding, channel)) {\n const channelDef = encoding[channel];\n if (isArray(channelDef)) {\n return some(channelDef, fieldDef => !!fieldDef.aggregate);\n }\n else {\n const fieldDef = getFieldDef(channelDef);\n return fieldDef && !!fieldDef.aggregate;\n }\n }\n return false;\n });\n}\nexport function extractTransformsFromEncoding(oldEncoding, config) {\n const groupby = [];\n const bins = [];\n const timeUnits = [];\n const aggregate = [];\n const encoding = {};\n forEach(oldEncoding, (channelDef, channel) => {\n // Extract potential embedded transformations along with remaining properties\n if (isFieldDef(channelDef)) {\n const { field, aggregate: aggOp, timeUnit, bin } = channelDef, remaining = tslib_1.__rest(channelDef, [\"field\", \"aggregate\", \"timeUnit\", \"bin\"]);\n if (aggOp || timeUnit || bin) {\n const guide = getGuide(channelDef);\n const isTitleDefined = guide && guide.title;\n let newField = vgField(channelDef, { forAs: true });\n const newFieldDef = Object.assign({}, (isTitleDefined ? [] : { title: title(channelDef, config, { allowDisabling: true }) }), remaining, { \n // Always overwrite field\n field: newField });\n const isPositionChannel = channel === 'x' || channel === 'y';\n if (aggOp) {\n let op;\n if (isArgmaxDef(aggOp)) {\n op = 'argmax';\n newField = vgField({ aggregate: 'argmax', field: aggOp.argmax }, { forAs: true });\n newFieldDef.field = `${newField}.${field}`;\n }\n else if (isArgminDef(aggOp)) {\n op = 'argmin';\n newField = vgField({ aggregate: 'argmin', field: aggOp.argmin }, { forAs: true });\n newFieldDef.field = `${newField}.${field}`;\n }\n else if (aggOp !== 'boxplot' && aggOp !== 'errorbar' && aggOp !== 'errorband') {\n op = aggOp;\n }\n if (op) {\n const aggregateEntry = {\n op,\n as: newField\n };\n if (field) {\n aggregateEntry.field = field;\n }\n aggregate.push(aggregateEntry);\n }\n }\n else if (isTypedFieldDef(channelDef) && isBinning(bin)) {\n bins.push({ bin, field, as: newField });\n // Add additional groupbys for range and end of bins\n groupby.push(vgField(channelDef, { binSuffix: 'end' }));\n if (binRequiresRange(channelDef, channel)) {\n groupby.push(vgField(channelDef, { binSuffix: 'range' }));\n }\n // Create accompanying 'x2' or 'y2' field if channel is 'x' or 'y' respectively\n if (isPositionChannel) {\n const secondaryChannel = {\n field: newField + '_end'\n };\n encoding[channel + '2'] = secondaryChannel;\n }\n newFieldDef.bin = 'binned';\n if (!isSecondaryRangeChannel(channel)) {\n newFieldDef['type'] = 'quantitative';\n }\n }\n else if (timeUnit) {\n timeUnits.push({ timeUnit, field, as: newField });\n // Add formatting to appropriate property based on the type of channel we're processing\n const format = getDateTimeComponents(timeUnit, config.axis.shortTimeLabels).join(' ');\n const formatType = isTypedFieldDef(channelDef) && channelDef.type !== TEMPORAL && 'time';\n if (channel === 'text' || channel === 'tooltip') {\n newFieldDef['format'] = newFieldDef['format'] || format;\n if (formatType) {\n newFieldDef['formatType'] = formatType;\n }\n }\n else if (isNonPositionScaleChannel(channel)) {\n newFieldDef['legend'] = Object.assign({ format }, (formatType ? { formatType } : {}), newFieldDef['legend']);\n }\n else if (isPositionChannel) {\n newFieldDef['axis'] = Object.assign({ format }, (formatType ? { formatType } : {}), newFieldDef['axis']);\n }\n }\n if (!aggOp) {\n groupby.push(newField);\n }\n // now the field should refer to post-transformed field instead\n encoding[channel] = newFieldDef;\n }\n else {\n groupby.push(field);\n encoding[channel] = oldEncoding[channel];\n }\n }\n else {\n // For value def, just copy\n encoding[channel] = oldEncoding[channel];\n }\n });\n return {\n bins,\n timeUnits,\n aggregate,\n groupby,\n encoding\n };\n}\nexport function markChannelCompatible(encoding, channel, mark) {\n const markSupported = supportMark(channel, mark);\n if (!markSupported) {\n return false;\n }\n else if (markSupported === 'binned') {\n const primaryFieldDef = encoding[channel === 'x2' ? 'x' : 'y'];\n // circle, point, square and tick only support x2/y2 when their corresponding x/y fieldDef\n // has \"binned\" data and thus need x2/y2 to specify the bin-end field.\n if (isFieldDef(primaryFieldDef) && isFieldDef(encoding[channel]) && primaryFieldDef.bin === 'binned') {\n return true;\n }\n else {\n return false;\n }\n }\n return true;\n}\nexport function normalizeEncoding(encoding, mark) {\n return keys(encoding).reduce((normalizedEncoding, channel) => {\n if (!isChannel(channel)) {\n // Drop invalid channel\n log.warn(log.message.invalidEncodingChannel(channel));\n return normalizedEncoding;\n }\n if (!markChannelCompatible(encoding, channel, mark)) {\n // Drop unsupported channel\n log.warn(log.message.incompatibleChannel(channel, mark));\n return normalizedEncoding;\n }\n // Drop line's size if the field is aggregated.\n if (channel === 'size' && mark === 'line') {\n const fieldDef = getTypedFieldDef(encoding[channel]);\n if (fieldDef && fieldDef.aggregate) {\n log.warn(log.message.LINE_WITH_VARYING_SIZE);\n return normalizedEncoding;\n }\n }\n // Drop color if either fill or stroke is specified\n if (channel === 'color' && ('fill' in encoding || 'stroke' in encoding)) {\n log.warn(log.message.droppingColor('encoding', { fill: 'fill' in encoding, stroke: 'stroke' in encoding }));\n return normalizedEncoding;\n }\n const channelDef = encoding[channel];\n if (channel === 'detail' ||\n (channel === 'order' && !isArray(channelDef) && !isValueDef(channelDef)) ||\n (channel === 'tooltip' && isArray(channelDef))) {\n if (channelDef) {\n // Array of fieldDefs for detail channel (or production rule)\n normalizedEncoding[channel] = (isArray(channelDef) ? channelDef : [channelDef]).reduce((defs, fieldDef) => {\n if (!isFieldDef(fieldDef)) {\n log.warn(log.message.emptyFieldDef(fieldDef, channel));\n }\n else {\n defs.push(normalizeFieldDef(fieldDef, channel));\n }\n return defs;\n }, []);\n }\n }\n else {\n if (channel === 'tooltip' && channelDef === null) {\n // Preserve null so we can use it to disable tooltip\n normalizedEncoding[channel] = null;\n }\n else if (!isFieldDef(channelDef) && !isValueDef(channelDef) && !isConditionalDef(channelDef)) {\n log.warn(log.message.emptyFieldDef(channelDef, channel));\n return normalizedEncoding;\n }\n normalizedEncoding[channel] = normalize(channelDef, channel);\n }\n return normalizedEncoding;\n }, {});\n}\nexport function isRanged(encoding) {\n return encoding && ((!!encoding.x && !!encoding.x2) || (!!encoding.y && !!encoding.y2));\n}\nexport function fieldDefs(encoding) {\n const arr = [];\n for (const channel of keys(encoding)) {\n if (channelHasField(encoding, channel)) {\n const channelDef = encoding[channel];\n (isArray(channelDef) ? channelDef : [channelDef]).forEach(def => {\n if (isFieldDef(def)) {\n arr.push(def);\n }\n else if (hasConditionalFieldDef(def)) {\n arr.push(def.condition);\n }\n });\n }\n }\n return arr;\n}\nexport function forEach(mapping, f, thisArg) {\n if (!mapping) {\n return;\n }\n for (const channel of keys(mapping)) {\n const el = mapping[channel];\n if (isArray(el)) {\n el.forEach((channelDef) => {\n f.call(thisArg, channelDef, channel);\n });\n }\n else {\n f.call(thisArg, el, channel);\n }\n }\n}\nexport function reduce(mapping, f, init, thisArg) {\n if (!mapping) {\n return init;\n }\n return keys(mapping).reduce((r, channel) => {\n const map = mapping[channel];\n if (isArray(map)) {\n return map.reduce((r1, channelDef) => {\n return f.call(thisArg, r1, channelDef, channel);\n }, r);\n }\n else {\n return f.call(thisArg, r, map, channel);\n }\n }, init);\n}\n//# sourceMappingURL=encoding.js.map","import * as tslib_1 from \"tslib\";\nimport { isArray, isBoolean, isString } from 'vega-util';\nimport { isContinuous, isFieldDef } from '../channeldef';\nimport { fieldDefs } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nexport function filterTooltipWithAggregatedField(oldEncoding) {\n const { tooltip } = oldEncoding, filteredEncoding = tslib_1.__rest(oldEncoding, [\"tooltip\"]);\n if (!tooltip) {\n return { filteredEncoding: oldEncoding };\n }\n let customTooltipWithAggregatedField;\n let customTooltipWithoutAggregatedField;\n if (isArray(tooltip)) {\n tooltip.forEach((t) => {\n if (t.aggregate) {\n if (!customTooltipWithAggregatedField) {\n customTooltipWithAggregatedField = [];\n }\n customTooltipWithAggregatedField.push(t);\n }\n else {\n if (!customTooltipWithoutAggregatedField) {\n customTooltipWithoutAggregatedField = [];\n }\n customTooltipWithoutAggregatedField.push(t);\n }\n });\n if (customTooltipWithAggregatedField) {\n filteredEncoding.tooltip = customTooltipWithAggregatedField;\n }\n }\n else {\n if (tooltip['aggregate']) {\n filteredEncoding.tooltip = tooltip;\n }\n else {\n customTooltipWithoutAggregatedField = tooltip;\n }\n }\n if (isArray(customTooltipWithoutAggregatedField) && customTooltipWithoutAggregatedField.length === 1) {\n customTooltipWithoutAggregatedField = customTooltipWithoutAggregatedField[0];\n }\n return { customTooltipWithoutAggregatedField, filteredEncoding };\n}\nexport function getCompositeMarkTooltip(tooltipSummary, continuousAxisChannelDef, encodingWithoutContinuousAxis, withFieldName = true) {\n const fiveSummaryTooltip = tooltipSummary.map(({ fieldPrefix, titlePrefix }) => ({\n field: fieldPrefix + continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type,\n title: titlePrefix + (withFieldName ? ' of ' + continuousAxisChannelDef.field : '')\n }));\n return {\n tooltip: [\n ...fiveSummaryTooltip,\n // need to cast because TextFieldDef support fewer types of bin\n ...fieldDefs(encodingWithoutContinuousAxis)\n ]\n };\n}\nexport function makeCompositeAggregatePartFactory(compositeMarkDef, continuousAxis, continuousAxisChannelDef, sharedEncoding, compositeMarkConfig) {\n const { scale, axis } = continuousAxisChannelDef;\n return ({ partName, mark, positionPrefix, endPositionPrefix = undefined, extraEncoding = {} }) => {\n const title = axis && axis.title !== undefined\n ? undefined\n : continuousAxisChannelDef.title !== undefined\n ? continuousAxisChannelDef.title\n : continuousAxisChannelDef.field;\n return partLayerMixins(compositeMarkDef, partName, compositeMarkConfig, {\n mark,\n encoding: Object.assign({ [continuousAxis]: Object.assign({ field: positionPrefix + '_' + continuousAxisChannelDef.field, type: continuousAxisChannelDef.type }, (title ? { title } : {}), (scale ? { scale } : {}), (axis ? { axis } : {})) }, (isString(endPositionPrefix)\n ? {\n [continuousAxis + '2']: {\n field: endPositionPrefix + '_' + continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type\n }\n }\n : {}), sharedEncoding, extraEncoding)\n });\n };\n}\nexport function partLayerMixins(markDef, part, compositeMarkConfig, partBaseSpec) {\n const { clip, color, opacity } = markDef;\n const mark = markDef.type;\n if (markDef[part] || (markDef[part] === undefined && compositeMarkConfig[part])) {\n return [\n Object.assign({}, partBaseSpec, { mark: Object.assign({}, compositeMarkConfig[part], (clip ? { clip } : {}), (color ? { color } : {}), (opacity ? { opacity } : {}), (isMarkDef(partBaseSpec.mark) ? partBaseSpec.mark : { type: partBaseSpec.mark }), { style: `${mark}-${part}` }, (isBoolean(markDef[part]) ? {} : markDef[part])) })\n ];\n }\n return [];\n}\nexport function compositeMarkContinuousAxis(spec, orient, compositeMark) {\n const { encoding } = spec;\n const continuousAxis = orient === 'vertical' ? 'y' : 'x';\n const continuousAxisChannelDef = encoding[continuousAxis]; // Safe to cast because if x is not continuous fielddef, the orient would not be horizontal.\n const continuousAxisChannelDef2 = encoding[continuousAxis + '2'];\n const continuousAxisChannelDefError = encoding[continuousAxis + 'Error'];\n const continuousAxisChannelDefError2 = encoding[continuousAxis + 'Error2'];\n return {\n continuousAxisChannelDef: filterAggregateFromChannelDef(continuousAxisChannelDef, compositeMark),\n continuousAxisChannelDef2: filterAggregateFromChannelDef(continuousAxisChannelDef2, compositeMark),\n continuousAxisChannelDefError: filterAggregateFromChannelDef(continuousAxisChannelDefError, compositeMark),\n continuousAxisChannelDefError2: filterAggregateFromChannelDef(continuousAxisChannelDefError2, compositeMark),\n continuousAxis\n };\n}\nfunction filterAggregateFromChannelDef(continuousAxisChannelDef, compositeMark) {\n if (continuousAxisChannelDef && continuousAxisChannelDef.aggregate) {\n const { aggregate } = continuousAxisChannelDef, continuousAxisWithoutAggregate = tslib_1.__rest(continuousAxisChannelDef, [\"aggregate\"]);\n if (aggregate !== compositeMark) {\n log.warn(log.message.errorBarContinuousAxisHasCustomizedAggregate(aggregate, compositeMark));\n }\n return continuousAxisWithoutAggregate;\n }\n else {\n return continuousAxisChannelDef;\n }\n}\nexport function compositeMarkOrient(spec, compositeMark) {\n const { mark, encoding } = spec;\n if (isFieldDef(encoding.x) && isContinuous(encoding.x)) {\n // x is continuous\n if (isFieldDef(encoding.y) && isContinuous(encoding.y)) {\n // both x and y are continuous\n if (encoding.x.aggregate === undefined && encoding.y.aggregate === compositeMark) {\n return 'vertical';\n }\n else if (encoding.y.aggregate === undefined && encoding.x.aggregate === compositeMark) {\n return 'horizontal';\n }\n else if (encoding.x.aggregate === compositeMark && encoding.y.aggregate === compositeMark) {\n throw new Error('Both x and y cannot have aggregate');\n }\n else {\n if (isMarkDef(mark) && mark.orient) {\n return mark.orient;\n }\n // default orientation = vertical\n return 'vertical';\n }\n }\n // x is continuous but y is not\n return 'horizontal';\n }\n else if (isFieldDef(encoding.y) && isContinuous(encoding.y)) {\n // y is continuous but x is not\n return 'vertical';\n }\n else {\n // Neither x nor y is continuous.\n throw new Error('Need a valid continuous axis for ' + compositeMark + 's');\n }\n}\n//# sourceMappingURL=common.js.map","import * as tslib_1 from \"tslib\";\nimport { isNumber, isObject } from 'vega-util';\nimport { extractTransformsFromEncoding } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { getFirstDefined, keys } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { compositeMarkContinuousAxis, compositeMarkOrient, filterTooltipWithAggregatedField, getCompositeMarkTooltip, makeCompositeAggregatePartFactory, partLayerMixins } from './common';\nexport const BOXPLOT = 'boxplot';\nconst BOXPLOT_PART_INDEX = {\n box: 1,\n median: 1,\n outliers: 1,\n rule: 1,\n ticks: 1\n};\nexport const BOXPLOT_PARTS = keys(BOXPLOT_PART_INDEX);\nexport const boxPlotNormalizer = new CompositeMarkNormalizer(BOXPLOT, normalizeBoxPlot);\nexport function getBoxPlotType(extent) {\n if (isNumber(extent)) {\n return 'tukey';\n }\n // Ham: If we ever want to, we could add another extent syntax `{kIQR: number}` for the original [Q1-k*IQR, Q3+k*IQR] whisker and call this boxPlotType = `kIQR`. However, I'm not exposing this for now.\n return extent;\n}\nexport function normalizeBoxPlot(spec, { config }) {\n // TODO: use selection\n const { mark, encoding: _encoding, selection, projection: _p } = spec, outerSpec = tslib_1.__rest(spec, [\"mark\", \"encoding\", \"selection\", \"projection\"]);\n const markDef = isMarkDef(mark) ? mark : { type: mark };\n // TODO(https://github.com/vega/vega-lite/issues/3702): add selection support\n if (selection) {\n log.warn(log.message.selectionNotSupported('boxplot'));\n }\n const extent = markDef.extent || config.boxplot.extent;\n const sizeValue = getFirstDefined(markDef.size, config.boxplot.size);\n const boxPlotType = getBoxPlotType(extent);\n const { transform, continuousAxisChannelDef, continuousAxis, groupby, aggregate, encodingWithoutContinuousAxis, ticksOrient, customTooltipWithoutAggregatedField } = boxParams(spec, extent, config);\n const { color, size } = encodingWithoutContinuousAxis, encodingWithoutSizeColorAndContinuousAxis = tslib_1.__rest(encodingWithoutContinuousAxis, [\"color\", \"size\"]);\n const makeBoxPlotPart = (sharedEncoding) => {\n return makeCompositeAggregatePartFactory(markDef, continuousAxis, continuousAxisChannelDef, sharedEncoding, config.boxplot);\n };\n const makeBoxPlotExtent = makeBoxPlotPart(encodingWithoutSizeColorAndContinuousAxis);\n const makeBoxPlotBox = makeBoxPlotPart(encodingWithoutContinuousAxis);\n const makeBoxPlotMidTick = makeBoxPlotPart(Object.assign({}, encodingWithoutSizeColorAndContinuousAxis, (size ? { size } : {})));\n const fiveSummaryTooltipEncoding = getCompositeMarkTooltip([\n { fieldPrefix: boxPlotType === 'min-max' ? 'upper_whisker_' : 'max_', titlePrefix: 'Max' },\n { fieldPrefix: 'upper_box_', titlePrefix: 'Q3' },\n { fieldPrefix: 'mid_box_', titlePrefix: 'Median' },\n { fieldPrefix: 'lower_box_', titlePrefix: 'Q1' },\n { fieldPrefix: boxPlotType === 'min-max' ? 'lower_whisker_' : 'min_', titlePrefix: 'Min' }\n ], continuousAxisChannelDef, encodingWithoutContinuousAxis);\n // ## Whisker Layers\n const endTick = { type: 'tick', color: 'black', opacity: 1, orient: ticksOrient };\n const whiskerTooltipEncoding = boxPlotType === 'min-max'\n ? fiveSummaryTooltipEncoding // for min-max, show five-summary tooltip for whisker\n : // for tukey / k-IQR, just show upper/lower-whisker\n getCompositeMarkTooltip([\n { fieldPrefix: 'upper_whisker_', titlePrefix: 'Upper Whisker' },\n { fieldPrefix: 'lower_whisker_', titlePrefix: 'Lower Whisker' }\n ], continuousAxisChannelDef, encodingWithoutContinuousAxis);\n const whiskerLayers = [\n ...makeBoxPlotExtent({\n partName: 'rule',\n mark: 'rule',\n positionPrefix: 'lower_whisker',\n endPositionPrefix: 'lower_box',\n extraEncoding: whiskerTooltipEncoding\n }),\n ...makeBoxPlotExtent({\n partName: 'rule',\n mark: 'rule',\n positionPrefix: 'upper_box',\n endPositionPrefix: 'upper_whisker',\n extraEncoding: whiskerTooltipEncoding\n }),\n ...makeBoxPlotExtent({\n partName: 'ticks',\n mark: endTick,\n positionPrefix: 'lower_whisker',\n extraEncoding: whiskerTooltipEncoding\n }),\n ...makeBoxPlotExtent({\n partName: 'ticks',\n mark: endTick,\n positionPrefix: 'upper_whisker',\n extraEncoding: whiskerTooltipEncoding\n })\n ];\n // ## Box Layers\n // TODO: support hiding certain mark parts\n const boxLayers = [\n ...(boxPlotType !== 'tukey' ? whiskerLayers : []),\n ...makeBoxPlotBox({\n partName: 'box',\n mark: Object.assign({ type: 'bar' }, (sizeValue ? { size: sizeValue } : {})),\n positionPrefix: 'lower_box',\n endPositionPrefix: 'upper_box',\n extraEncoding: fiveSummaryTooltipEncoding\n }),\n ...makeBoxPlotMidTick({\n partName: 'median',\n mark: Object.assign({ type: 'tick' }, (isObject(config.boxplot.median) && config.boxplot.median.color ? { color: config.boxplot.median.color } : {}), (sizeValue ? { size: sizeValue } : {}), { orient: ticksOrient }),\n positionPrefix: 'mid_box',\n extraEncoding: fiveSummaryTooltipEncoding\n })\n ];\n // ## Filtered Layers\n let filteredLayersMixins;\n if (boxPlotType !== 'min-max') {\n const lowerBoxExpr = `datum[\"lower_box_${continuousAxisChannelDef.field}\"]`;\n const upperBoxExpr = `datum[\"upper_box_${continuousAxisChannelDef.field}\"]`;\n const iqrExpr = `(${upperBoxExpr} - ${lowerBoxExpr})`;\n const lowerWhiskerExpr = `${lowerBoxExpr} - ${extent} * ${iqrExpr}`;\n const upperWhiskerExpr = `${upperBoxExpr} + ${extent} * ${iqrExpr}`;\n const fieldExpr = `datum[\"${continuousAxisChannelDef.field}\"]`;\n const joinaggregateTransform = {\n joinaggregate: boxParamsQuartiles(continuousAxisChannelDef.field),\n groupby\n };\n let filteredWhiskerSpec = undefined;\n if (boxPlotType === 'tukey') {\n filteredWhiskerSpec = {\n transform: [\n {\n filter: `(${lowerWhiskerExpr} <= ${fieldExpr}) && (${fieldExpr} <= ${upperWhiskerExpr})`\n },\n {\n aggregate: [\n {\n op: 'min',\n field: continuousAxisChannelDef.field,\n as: 'lower_whisker_' + continuousAxisChannelDef.field\n },\n {\n op: 'max',\n field: continuousAxisChannelDef.field,\n as: 'upper_whisker_' + continuousAxisChannelDef.field\n },\n // preserve lower_box / upper_box\n {\n op: 'min',\n field: 'lower_box_' + continuousAxisChannelDef.field,\n as: 'lower_box_' + continuousAxisChannelDef.field\n },\n {\n op: 'max',\n field: 'upper_box_' + continuousAxisChannelDef.field,\n as: 'upper_box_' + continuousAxisChannelDef.field\n },\n ...aggregate\n ],\n groupby\n }\n ],\n layer: whiskerLayers\n };\n }\n const { tooltip } = encodingWithoutSizeColorAndContinuousAxis, encodingWithoutSizeColorContinuousAxisAndTooltip = tslib_1.__rest(encodingWithoutSizeColorAndContinuousAxis, [\"tooltip\"]);\n const outlierLayersMixins = partLayerMixins(markDef, 'outliers', config.boxplot, {\n transform: [{ filter: `(${fieldExpr} < ${lowerWhiskerExpr}) || (${fieldExpr} > ${upperWhiskerExpr})` }],\n mark: 'point',\n encoding: Object.assign({ [continuousAxis]: {\n field: continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type\n } }, encodingWithoutSizeColorContinuousAxisAndTooltip, (customTooltipWithoutAggregatedField ? { tooltip: customTooltipWithoutAggregatedField } : {}))\n })[0];\n if (outlierLayersMixins && filteredWhiskerSpec) {\n filteredLayersMixins = {\n transform: [joinaggregateTransform],\n layer: [outlierLayersMixins, filteredWhiskerSpec]\n };\n }\n else if (outlierLayersMixins) {\n filteredLayersMixins = outlierLayersMixins;\n filteredLayersMixins.transform.unshift(joinaggregateTransform);\n }\n else if (filteredWhiskerSpec) {\n filteredLayersMixins = filteredWhiskerSpec;\n filteredLayersMixins.transform.unshift(joinaggregateTransform);\n }\n }\n if (filteredLayersMixins) {\n // tukey box plot with outliers included\n return Object.assign({}, outerSpec, { layer: [\n ...(filteredLayersMixins ? [filteredLayersMixins] : []),\n {\n // boxplot\n transform,\n layer: boxLayers\n }\n ] });\n }\n return Object.assign({}, outerSpec, { transform: (outerSpec.transform || []).concat(transform), layer: boxLayers });\n}\nfunction boxParamsQuartiles(continousAxisField) {\n return [\n {\n op: 'q1',\n field: continousAxisField,\n as: 'lower_box_' + continousAxisField\n },\n {\n op: 'q3',\n field: continousAxisField,\n as: 'upper_box_' + continousAxisField\n }\n ];\n}\nfunction boxParams(spec, extent, config) {\n const orient = compositeMarkOrient(spec, BOXPLOT);\n const { continuousAxisChannelDef, continuousAxis } = compositeMarkContinuousAxis(spec, orient, BOXPLOT);\n const continuousFieldName = continuousAxisChannelDef.field;\n const boxPlotType = getBoxPlotType(extent);\n const boxplotSpecificAggregate = [\n ...boxParamsQuartiles(continuousFieldName),\n {\n op: 'median',\n field: continuousFieldName,\n as: 'mid_box_' + continuousFieldName\n },\n {\n op: 'min',\n field: continuousFieldName,\n as: (boxPlotType === 'min-max' ? 'lower_whisker_' : 'min_') + continuousFieldName\n },\n {\n op: 'max',\n field: continuousFieldName,\n as: (boxPlotType === 'min-max' ? 'upper_whisker_' : 'max_') + continuousFieldName\n }\n ];\n const postAggregateCalculates = boxPlotType === 'min-max' || boxPlotType === 'tukey'\n ? []\n : [\n // This is for the original k-IQR, which we do not expose\n {\n calculate: `datum[\"upper_box_${continuousFieldName}\"] - datum[\"lower_box_${continuousFieldName}\"]`,\n as: 'iqr_' + continuousFieldName\n },\n {\n calculate: `min(datum[\"upper_box_${continuousFieldName}\"] + datum[\"iqr_${continuousFieldName}\"] * ${extent}, datum[\"max_${continuousFieldName}\"])`,\n as: 'upper_whisker_' + continuousFieldName\n },\n {\n calculate: `max(datum[\"lower_box_${continuousFieldName}\"] - datum[\"iqr_${continuousFieldName}\"] * ${extent}, datum[\"min_${continuousFieldName}\"])`,\n as: 'lower_whisker_' + continuousFieldName\n }\n ];\n const _a = spec.encoding, _b = continuousAxis, oldContinuousAxisChannelDef = _a[_b], oldEncodingWithoutContinuousAxis = tslib_1.__rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\n const { customTooltipWithoutAggregatedField, filteredEncoding } = filterTooltipWithAggregatedField(oldEncodingWithoutContinuousAxis);\n const { bins, timeUnits, aggregate, groupby, encoding: encodingWithoutContinuousAxis } = extractTransformsFromEncoding(filteredEncoding, config);\n const ticksOrient = orient === 'vertical' ? 'horizontal' : 'vertical';\n return {\n transform: [\n ...bins,\n ...timeUnits,\n {\n aggregate: [...aggregate, ...boxplotSpecificAggregate],\n groupby\n },\n ...postAggregateCalculates\n ],\n groupby,\n aggregate,\n continuousAxisChannelDef,\n continuousAxis,\n encodingWithoutContinuousAxis,\n ticksOrient,\n customTooltipWithoutAggregatedField\n };\n}\n//# sourceMappingURL=boxplot.js.map","import * as tslib_1 from \"tslib\";\nimport { isContinuous, isFieldDef, title } from '../channeldef';\nimport { extractTransformsFromEncoding } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { keys, titlecase } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { compositeMarkContinuousAxis, compositeMarkOrient, getCompositeMarkTooltip, makeCompositeAggregatePartFactory } from './common';\nexport const ERRORBAR = 'errorbar';\nconst ERRORBAR_PART_INDEX = {\n ticks: 1,\n rule: 1\n};\nexport const ERRORBAR_PARTS = keys(ERRORBAR_PART_INDEX);\nexport const errorBarNormalizer = new CompositeMarkNormalizer(ERRORBAR, normalizeErrorBar);\nexport function normalizeErrorBar(spec, { config }) {\n const { transform, continuousAxisChannelDef, continuousAxis, encodingWithoutContinuousAxis, ticksOrient, markDef, outerSpec, tooltipEncoding } = errorBarParams(spec, ERRORBAR, config);\n const makeErrorBarPart = makeCompositeAggregatePartFactory(markDef, continuousAxis, continuousAxisChannelDef, encodingWithoutContinuousAxis, config.errorbar);\n const tick = { type: 'tick', orient: ticksOrient };\n return Object.assign({}, outerSpec, { transform, layer: [\n ...makeErrorBarPart({\n partName: 'ticks',\n mark: tick,\n positionPrefix: 'lower',\n extraEncoding: tooltipEncoding\n }),\n ...makeErrorBarPart({\n partName: 'ticks',\n mark: tick,\n positionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n }),\n ...makeErrorBarPart({\n partName: 'rule',\n mark: 'rule',\n positionPrefix: 'lower',\n endPositionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n })\n ] });\n}\nfunction errorBarOrientAndInputType(spec, compositeMark) {\n const { encoding } = spec;\n if (errorBarIsInputTypeRaw(encoding)) {\n return {\n orient: compositeMarkOrient(spec, compositeMark),\n inputType: 'raw'\n };\n }\n const isTypeAggregatedUpperLower = errorBarIsInputTypeAggregatedUpperLower(encoding);\n const isTypeAggregatedError = errorBarIsInputTypeAggregatedError(encoding);\n const x = encoding.x;\n const y = encoding.y;\n if (isTypeAggregatedUpperLower) {\n // type is aggregated-upper-lower\n if (isTypeAggregatedError) {\n throw new Error(compositeMark + ' cannot be both type aggregated-upper-lower and aggregated-error');\n }\n const x2 = encoding.x2;\n const y2 = encoding.y2;\n if (isFieldDef(x2) && isFieldDef(y2)) {\n // having both x, x2 and y, y2\n throw new Error(compositeMark + ' cannot have both x2 and y2');\n }\n else if (isFieldDef(x2)) {\n if (isFieldDef(x) && isContinuous(x)) {\n // having x, x2 quantitative and field y, y2 are not specified\n return { orient: 'horizontal', inputType: 'aggregated-upper-lower' };\n }\n else {\n // having x, x2 that are not both quantitative\n throw new Error('Both x and x2 have to be quantitative in ' + compositeMark);\n }\n }\n else if (isFieldDef(y2)) {\n // y2 is a FieldDef\n if (isFieldDef(y) && isContinuous(y)) {\n // having y, y2 quantitative and field x, x2 are not specified\n return { orient: 'vertical', inputType: 'aggregated-upper-lower' };\n }\n else {\n // having y, y2 that are not both quantitative\n throw new Error('Both y and y2 have to be quantitative in ' + compositeMark);\n }\n }\n throw new Error('No ranged axis');\n }\n else {\n // type is aggregated-error\n const xError = encoding.xError;\n const xError2 = encoding.xError2;\n const yError = encoding.yError;\n const yError2 = encoding.yError2;\n if (isFieldDef(xError2) && !isFieldDef(xError)) {\n // having xError2 without xError\n throw new Error(compositeMark + ' cannot have xError2 without xError');\n }\n if (isFieldDef(yError2) && !isFieldDef(yError)) {\n // having yError2 without yError\n throw new Error(compositeMark + ' cannot have yError2 without yError');\n }\n if (isFieldDef(xError) && isFieldDef(yError)) {\n // having both xError and yError\n throw new Error(compositeMark + ' cannot have both xError and yError with both are quantiative');\n }\n else if (isFieldDef(xError)) {\n if (isFieldDef(x) && isContinuous(x)) {\n // having x and xError that are all quantitative\n return { orient: 'horizontal', inputType: 'aggregated-error' };\n }\n else {\n // having x, xError, and xError2 that are not all quantitative\n throw new Error('All x, xError, and xError2 (if exist) have to be quantitative');\n }\n }\n else if (isFieldDef(yError)) {\n if (isFieldDef(y) && isContinuous(y)) {\n // having y and yError that are all quantitative\n return { orient: 'vertical', inputType: 'aggregated-error' };\n }\n else {\n // having y, yError, and yError2 that are not all quantitative\n throw new Error('All y, yError, and yError2 (if exist) have to be quantitative');\n }\n }\n throw new Error('No ranged axis');\n }\n}\nfunction errorBarIsInputTypeRaw(encoding) {\n return ((isFieldDef(encoding.x) || isFieldDef(encoding.y)) &&\n !isFieldDef(encoding.x2) &&\n !isFieldDef(encoding.y2) &&\n !isFieldDef(encoding.xError) &&\n !isFieldDef(encoding.xError2) &&\n !isFieldDef(encoding.yError) &&\n !isFieldDef(encoding.yError2));\n}\nfunction errorBarIsInputTypeAggregatedUpperLower(encoding) {\n return isFieldDef(encoding.x2) || isFieldDef(encoding.y2);\n}\nfunction errorBarIsInputTypeAggregatedError(encoding) {\n return (isFieldDef(encoding.xError) ||\n isFieldDef(encoding.xError2) ||\n isFieldDef(encoding.yError) ||\n isFieldDef(encoding.yError2));\n}\nexport function errorBarParams(spec, compositeMark, config) {\n // TODO: use selection\n const { mark, encoding, selection, projection: _p } = spec, outerSpec = tslib_1.__rest(spec, [\"mark\", \"encoding\", \"selection\", \"projection\"]);\n const markDef = isMarkDef(mark) ? mark : { type: mark };\n // TODO(https://github.com/vega/vega-lite/issues/3702): add selection support\n if (selection) {\n log.warn(log.message.selectionNotSupported(compositeMark));\n }\n const { orient, inputType } = errorBarOrientAndInputType(spec, compositeMark);\n const { continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, continuousAxis } = compositeMarkContinuousAxis(spec, orient, compositeMark);\n const { errorBarSpecificAggregate, postAggregateCalculates, tooltipSummary, tooltipTitleWithFieldName } = errorBarAggregationAndCalculation(markDef, continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, inputType, compositeMark, config);\n const _a = continuousAxis, oldContinuousAxisChannelDef = encoding[_a], _b = continuousAxis === 'x' ? 'x2' : 'y2', oldContinuousAxisChannelDef2 = encoding[_b], _c = continuousAxis === 'x' ? 'xError' : 'yError', oldContinuousAxisChannelDefError = encoding[_c], _d = continuousAxis === 'x' ? 'xError2' : 'yError2', oldContinuousAxisChannelDefError2 = encoding[_d], oldEncodingWithoutContinuousAxis = tslib_1.__rest(encoding, [typeof _a === \"symbol\" ? _a : _a + \"\", typeof _b === \"symbol\" ? _b : _b + \"\", typeof _c === \"symbol\" ? _c : _c + \"\", typeof _d === \"symbol\" ? _d : _d + \"\"]);\n const { bins, timeUnits, aggregate: oldAggregate, groupby: oldGroupBy, encoding: encodingWithoutContinuousAxis } = extractTransformsFromEncoding(oldEncodingWithoutContinuousAxis, config);\n const aggregate = [...oldAggregate, ...errorBarSpecificAggregate];\n const groupby = inputType !== 'raw' ? [] : oldGroupBy;\n const tooltipEncoding = getCompositeMarkTooltip(tooltipSummary, continuousAxisChannelDef, encodingWithoutContinuousAxis, tooltipTitleWithFieldName);\n return {\n transform: [\n ...(outerSpec.transform || []),\n ...bins,\n ...timeUnits,\n ...(!aggregate.length ? [] : [{ aggregate, groupby }]),\n ...postAggregateCalculates\n ],\n groupby,\n continuousAxisChannelDef,\n continuousAxis,\n encodingWithoutContinuousAxis,\n ticksOrient: orient === 'vertical' ? 'horizontal' : 'vertical',\n markDef,\n outerSpec,\n tooltipEncoding\n };\n}\nfunction errorBarAggregationAndCalculation(markDef, continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, inputType, compositeMark, config) {\n let errorBarSpecificAggregate = [];\n let postAggregateCalculates = [];\n const continuousFieldName = continuousAxisChannelDef.field;\n let tooltipSummary;\n let tooltipTitleWithFieldName = false;\n if (inputType === 'raw') {\n const center = markDef.center\n ? markDef.center\n : markDef.extent\n ? markDef.extent === 'iqr'\n ? 'median'\n : 'mean'\n : config.errorbar.center;\n const extent = markDef.extent ? markDef.extent : center === 'mean' ? 'stderr' : 'iqr';\n if ((center === 'median') !== (extent === 'iqr')) {\n log.warn(log.message.errorBarCenterIsUsedWithWrongExtent(center, extent, compositeMark));\n }\n if (extent === 'stderr' || extent === 'stdev') {\n errorBarSpecificAggregate = [\n { op: extent, field: continuousFieldName, as: 'extent_' + continuousFieldName },\n { op: center, field: continuousFieldName, as: 'center_' + continuousFieldName }\n ];\n postAggregateCalculates = [\n {\n calculate: `datum[\"center_${continuousFieldName}\"] + datum[\"extent_${continuousFieldName}\"]`,\n as: 'upper_' + continuousFieldName\n },\n {\n calculate: `datum[\"center_${continuousFieldName}\"] - datum[\"extent_${continuousFieldName}\"]`,\n as: 'lower_' + continuousFieldName\n }\n ];\n tooltipSummary = [\n { fieldPrefix: 'center_', titlePrefix: titlecase(center) },\n { fieldPrefix: 'upper_', titlePrefix: getTitlePrefix(center, extent, '+') },\n { fieldPrefix: 'lower_', titlePrefix: getTitlePrefix(center, extent, '-') }\n ];\n tooltipTitleWithFieldName = true;\n }\n else {\n if (markDef.center && markDef.extent) {\n log.warn(log.message.errorBarCenterIsNotNeeded(markDef.extent, compositeMark));\n }\n let centerOp;\n let lowerExtentOp;\n let upperExtentOp;\n if (extent === 'ci') {\n centerOp = 'mean';\n lowerExtentOp = 'ci0';\n upperExtentOp = 'ci1';\n }\n else {\n centerOp = 'median';\n lowerExtentOp = 'q1';\n upperExtentOp = 'q3';\n }\n errorBarSpecificAggregate = [\n { op: lowerExtentOp, field: continuousFieldName, as: 'lower_' + continuousFieldName },\n { op: upperExtentOp, field: continuousFieldName, as: 'upper_' + continuousFieldName },\n { op: centerOp, field: continuousFieldName, as: 'center_' + continuousFieldName }\n ];\n tooltipSummary = [\n {\n fieldPrefix: 'upper_',\n titlePrefix: title({ field: continuousFieldName, aggregate: upperExtentOp, type: 'quantitative' }, config, {\n allowDisabling: false\n })\n },\n {\n fieldPrefix: 'lower_',\n titlePrefix: title({ field: continuousFieldName, aggregate: lowerExtentOp, type: 'quantitative' }, config, {\n allowDisabling: false\n })\n },\n {\n fieldPrefix: 'center_',\n titlePrefix: title({ field: continuousFieldName, aggregate: centerOp, type: 'quantitative' }, config, {\n allowDisabling: false\n })\n }\n ];\n }\n }\n else {\n if (markDef.center || markDef.extent) {\n log.warn(log.message.errorBarCenterAndExtentAreNotNeeded(markDef.center, markDef.extent));\n }\n if (inputType === 'aggregated-upper-lower') {\n tooltipSummary = [];\n postAggregateCalculates = [\n { calculate: `datum[\"${continuousAxisChannelDef2.field}\"]`, as: 'upper_' + continuousFieldName },\n { calculate: `datum[\"${continuousFieldName}\"]`, as: 'lower_' + continuousFieldName }\n ];\n }\n else if (inputType === 'aggregated-error') {\n tooltipSummary = [{ fieldPrefix: '', titlePrefix: continuousFieldName }];\n postAggregateCalculates = [\n {\n calculate: `datum[\"${continuousFieldName}\"] + datum[\"${continuousAxisChannelDefError.field}\"]`,\n as: 'upper_' + continuousFieldName\n }\n ];\n if (continuousAxisChannelDefError2) {\n postAggregateCalculates.push({\n calculate: `datum[\"${continuousFieldName}\"] + datum[\"${continuousAxisChannelDefError2.field}\"]`,\n as: 'lower_' + continuousFieldName\n });\n }\n else {\n postAggregateCalculates.push({\n calculate: `datum[\"${continuousFieldName}\"] - datum[\"${continuousAxisChannelDefError.field}\"]`,\n as: 'lower_' + continuousFieldName\n });\n }\n }\n for (const postAggregateCalculate of postAggregateCalculates) {\n tooltipSummary.push({\n fieldPrefix: postAggregateCalculate.as.substring(0, 6),\n titlePrefix: postAggregateCalculate.calculate\n .replace(new RegExp('datum\\\\[\\\\\"', 'g'), '')\n .replace(new RegExp('\\\\\"\\\\]', 'g'), '')\n });\n }\n }\n return { postAggregateCalculates, errorBarSpecificAggregate, tooltipSummary, tooltipTitleWithFieldName };\n}\nfunction getTitlePrefix(center, extent, operation) {\n return titlecase(center) + ' ' + operation + ' ' + extent;\n}\n//# sourceMappingURL=errorbar.js.map","import * as log from '../log';\nimport { keys } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { makeCompositeAggregatePartFactory } from './common';\nimport { errorBarParams } from './errorbar';\nexport const ERRORBAND = 'errorband';\nconst ERRORBAND_PART_INDEX = {\n band: 1,\n borders: 1\n};\nexport const ERRORBAND_PARTS = keys(ERRORBAND_PART_INDEX);\nexport const errorBandNormalizer = new CompositeMarkNormalizer(ERRORBAND, normalizeErrorBand);\nexport function normalizeErrorBand(spec, { config }) {\n const { transform, continuousAxisChannelDef, continuousAxis, encodingWithoutContinuousAxis, markDef, outerSpec, tooltipEncoding } = errorBarParams(spec, ERRORBAND, config);\n const errorBandDef = markDef;\n const makeErrorBandPart = makeCompositeAggregatePartFactory(errorBandDef, continuousAxis, continuousAxisChannelDef, encodingWithoutContinuousAxis, config.errorband);\n const is2D = spec.encoding.x !== undefined && spec.encoding.y !== undefined;\n let bandMark = { type: is2D ? 'area' : 'rect' };\n let bordersMark = { type: is2D ? 'line' : 'rule' };\n const interpolate = Object.assign({}, (errorBandDef.interpolate ? { interpolate: errorBandDef.interpolate } : {}), (errorBandDef.tension && errorBandDef.interpolate ? { interpolate: errorBandDef.tension } : {}));\n if (is2D) {\n bandMark = Object.assign({}, bandMark, interpolate);\n bordersMark = Object.assign({}, bordersMark, interpolate);\n }\n else if (errorBandDef.interpolate) {\n log.warn(log.message.errorBand1DNotSupport('interpolate'));\n }\n else if (errorBandDef.tension) {\n log.warn(log.message.errorBand1DNotSupport('tension'));\n }\n return Object.assign({}, outerSpec, { transform, layer: [\n ...makeErrorBandPart({\n partName: 'band',\n mark: bandMark,\n positionPrefix: 'lower',\n endPositionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n }),\n ...makeErrorBandPart({\n partName: 'borders',\n mark: bordersMark,\n positionPrefix: 'lower',\n extraEncoding: tooltipEncoding\n }),\n ...makeErrorBandPart({\n partName: 'borders',\n mark: bordersMark,\n positionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n })\n ] });\n}\n//# sourceMappingURL=errorband.js.map","import { keys } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { BOXPLOT, BOXPLOT_PARTS, normalizeBoxPlot } from './boxplot';\nimport { ERRORBAND, ERRORBAND_PARTS, normalizeErrorBand } from './errorband';\nimport { ERRORBAR, ERRORBAR_PARTS, normalizeErrorBar } from './errorbar';\n/**\n * Registry index for all composite mark's normalizer\n */\nconst compositeMarkRegistry = {};\nexport function add(mark, run, parts) {\n const normalizer = new CompositeMarkNormalizer(mark, run);\n compositeMarkRegistry[mark] = { normalizer, parts };\n}\nexport function remove(mark) {\n delete compositeMarkRegistry[mark];\n}\nexport function getAllCompositeMarks() {\n return keys(compositeMarkRegistry);\n}\nadd(BOXPLOT, normalizeBoxPlot, BOXPLOT_PARTS);\nadd(ERRORBAR, normalizeErrorBar, ERRORBAR_PARTS);\nadd(ERRORBAND, normalizeErrorBand, ERRORBAND_PARTS);\n//# sourceMappingURL=index.js.map","export const VL_ONLY_GUIDE_CONFIG = ['shortTimeLabels'];\nexport const VL_ONLY_LEGEND_CONFIG = [\n 'gradientHorizontalMaxLength',\n 'gradientHorizontalMinLength',\n 'gradientVerticalMaxLength',\n 'gradientVerticalMinLength'\n];\n//# sourceMappingURL=guide.js.map","import { flagKeys } from './util';\nexport const defaultLegendConfig = {\n gradientHorizontalMaxLength: 200,\n gradientHorizontalMinLength: 100,\n gradientVerticalMaxLength: 200,\n gradientVerticalMinLength: 64 // This is the Vega's minimum.\n};\nconst COMMON_LEGEND_PROPERTY_INDEX = {\n clipHeight: 1,\n columnPadding: 1,\n columns: 1,\n cornerRadius: 1,\n direction: 1,\n fillColor: 1,\n format: 1,\n formatType: 1,\n gradientLength: 1,\n gradientOpacity: 1,\n gradientStrokeColor: 1,\n gradientStrokeWidth: 1,\n gradientThickness: 1,\n gridAlign: 1,\n labelAlign: 1,\n labelBaseline: 1,\n labelColor: 1,\n labelFont: 1,\n labelFontSize: 1,\n labelFontStyle: 1,\n labelFontWeight: 1,\n labelLimit: 1,\n labelOffset: 1,\n labelOpacity: 1,\n labelOverlap: 1,\n labelPadding: 1,\n labelSeparation: 1,\n legendX: 1,\n legendY: 1,\n offset: 1,\n orient: 1,\n padding: 1,\n rowPadding: 1,\n strokeColor: 1,\n symbolDash: 1,\n symbolDashOffset: 1,\n symbolFillColor: 1,\n symbolOffset: 1,\n symbolOpacity: 1,\n symbolSize: 1,\n symbolStrokeColor: 1,\n symbolStrokeWidth: 1,\n symbolType: 1,\n tickCount: 1,\n tickMinStep: 1,\n title: 1,\n titleAlign: 1,\n titleAnchor: 1,\n titleBaseline: 1,\n titleColor: 1,\n titleFont: 1,\n titleFontSize: 1,\n titleFontStyle: 1,\n titleFontWeight: 1,\n titleLimit: 1,\n titleOpacity: 1,\n titleOrient: 1,\n titlePadding: 1,\n type: 1,\n values: 1,\n zindex: 1\n};\nconst VG_LEGEND_PROPERTY_INDEX = Object.assign({}, COMMON_LEGEND_PROPERTY_INDEX, { \n // channel scales\n opacity: 1, shape: 1, stroke: 1, fill: 1, size: 1, strokeWidth: 1, \n // encode\n encode: 1 });\nexport const LEGEND_PROPERTIES = flagKeys(COMMON_LEGEND_PROPERTY_INDEX);\nexport const VG_LEGEND_PROPERTIES = flagKeys(VG_LEGEND_PROPERTY_INDEX);\n//# sourceMappingURL=legend.js.map","import * as tslib_1 from \"tslib\";\nimport { toSet } from 'vega-util';\nimport * as CHANNEL from './channel';\nimport { CHANNELS, isColorChannel } from './channel';\nimport * as log from './log';\nimport * as TYPE from './type';\nimport { TYPE_INDEX } from './type';\nimport { contains, flagKeys, keys } from './util';\nexport var ScaleType;\n(function (ScaleType) {\n // Continuous - Quantitative\n ScaleType.LINEAR = 'linear';\n ScaleType.LOG = 'log';\n ScaleType.POW = 'pow';\n ScaleType.SQRT = 'sqrt';\n ScaleType.SYMLOG = 'symlog';\n // Continuous - Time\n ScaleType.TIME = 'time';\n ScaleType.UTC = 'utc';\n // Discretizing scales\n ScaleType.QUANTILE = 'quantile';\n ScaleType.QUANTIZE = 'quantize';\n ScaleType.THRESHOLD = 'threshold';\n ScaleType.BIN_ORDINAL = 'bin-ordinal';\n // Discrete scales\n ScaleType.ORDINAL = 'ordinal';\n ScaleType.POINT = 'point';\n ScaleType.BAND = 'band';\n})(ScaleType || (ScaleType = {}));\n/**\n * Index for scale categories -- only scale of the same categories can be merged together.\n * Current implementation is trying to be conservative and avoid merging scale type that might not work together\n */\nconst SCALE_CATEGORY_INDEX = {\n linear: 'numeric',\n log: 'numeric',\n pow: 'numeric',\n sqrt: 'numeric',\n symlog: 'numeric',\n time: 'time',\n utc: 'time',\n ordinal: 'ordinal',\n 'bin-ordinal': 'bin-ordinal',\n point: 'ordinal-position',\n band: 'ordinal-position',\n quantile: 'discretizing',\n quantize: 'discretizing',\n threshold: 'discretizing'\n};\nexport const SCALE_TYPES = keys(SCALE_CATEGORY_INDEX);\n/**\n * Whether the two given scale types can be merged together.\n */\nexport function scaleCompatible(scaleType1, scaleType2) {\n const scaleCategory1 = SCALE_CATEGORY_INDEX[scaleType1];\n const scaleCategory2 = SCALE_CATEGORY_INDEX[scaleType2];\n return (scaleCategory1 === scaleCategory2 ||\n (scaleCategory1 === 'ordinal-position' && scaleCategory2 === 'time') ||\n (scaleCategory2 === 'ordinal-position' && scaleCategory1 === 'time'));\n}\n/**\n * Index for scale precedence -- high score = higher priority for merging.\n */\nconst SCALE_PRECEDENCE_INDEX = {\n // numeric\n linear: 0,\n log: 1,\n pow: 1,\n sqrt: 1,\n symlog: 1,\n // time\n time: 0,\n utc: 0,\n // ordinal-position -- these have higher precedence than continuous scales as they support more types of data\n point: 10,\n band: 11,\n // non grouped types\n ordinal: 0,\n 'bin-ordinal': 0,\n quantile: 0,\n quantize: 0,\n threshold: 0\n};\n/**\n * Return scale categories -- only scale of the same categories can be merged together.\n */\nexport function scaleTypePrecedence(scaleType) {\n return SCALE_PRECEDENCE_INDEX[scaleType];\n}\nexport const CONTINUOUS_TO_CONTINUOUS_SCALES = ['linear', 'log', 'pow', 'sqrt', 'symlog', 'time', 'utc'];\nconst CONTINUOUS_TO_CONTINUOUS_INDEX = toSet(CONTINUOUS_TO_CONTINUOUS_SCALES);\nexport const CONTINUOUS_TO_DISCRETE_SCALES = ['quantile', 'quantize', 'threshold'];\nconst CONTINUOUS_TO_DISCRETE_INDEX = toSet(CONTINUOUS_TO_DISCRETE_SCALES);\nexport const CONTINUOUS_DOMAIN_SCALES = CONTINUOUS_TO_CONTINUOUS_SCALES.concat([\n 'quantile',\n 'quantize',\n 'threshold'\n]);\nconst CONTINUOUS_DOMAIN_INDEX = toSet(CONTINUOUS_DOMAIN_SCALES);\nexport const DISCRETE_DOMAIN_SCALES = ['ordinal', 'bin-ordinal', 'point', 'band'];\nconst DISCRETE_DOMAIN_INDEX = toSet(DISCRETE_DOMAIN_SCALES);\nexport const TIME_SCALE_TYPES = ['time', 'utc'];\nexport function hasDiscreteDomain(type) {\n return type in DISCRETE_DOMAIN_INDEX;\n}\nexport function hasContinuousDomain(type) {\n return type in CONTINUOUS_DOMAIN_INDEX;\n}\nexport function isContinuousToContinuous(type) {\n return type in CONTINUOUS_TO_CONTINUOUS_INDEX;\n}\nexport function isContinuousToDiscrete(type) {\n return type in CONTINUOUS_TO_DISCRETE_INDEX;\n}\nexport const defaultScaleConfig = {\n textXRangeStep: 90,\n rangeStep: 20,\n pointPadding: 0.5,\n barBandPaddingInner: 0.1,\n rectBandPaddingInner: 0,\n minBandSize: 2,\n minFontSize: 8,\n maxFontSize: 40,\n minOpacity: 0.3,\n maxOpacity: 0.8,\n // FIXME: revise if these *can* become ratios of rangeStep\n minSize: 9,\n minStrokeWidth: 1,\n maxStrokeWidth: 4,\n quantileCount: 4,\n quantizeCount: 4\n};\nexport function isExtendedScheme(scheme) {\n return scheme && !!scheme['name'];\n}\nexport function isSelectionDomain(domain) {\n return domain && domain['selection'];\n}\nconst SCALE_PROPERTY_INDEX = {\n type: 1,\n domain: 1,\n range: 1,\n rangeStep: 1,\n scheme: 1,\n bins: 1,\n // Other properties\n reverse: 1,\n round: 1,\n // quantitative / time\n clamp: 1,\n nice: 1,\n // quantitative\n base: 1,\n exponent: 1,\n constant: 1,\n interpolate: 1,\n zero: 1,\n // band/point\n padding: 1,\n paddingInner: 1,\n paddingOuter: 1\n};\nexport const SCALE_PROPERTIES = flagKeys(SCALE_PROPERTY_INDEX);\nconst { type, domain, range, rangeStep, scheme } = SCALE_PROPERTY_INDEX, NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX = tslib_1.__rest(SCALE_PROPERTY_INDEX, [\"type\", \"domain\", \"range\", \"rangeStep\", \"scheme\"]);\nexport const NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES = flagKeys(NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX);\nexport const SCALE_TYPE_INDEX = generateScaleTypeIndex();\nexport function scaleTypeSupportProperty(scaleType, propName) {\n switch (propName) {\n case 'type':\n case 'domain':\n case 'reverse':\n case 'range':\n return true;\n case 'scheme':\n case 'interpolate':\n return !contains(['point', 'band', 'identity'], scaleType);\n case 'bins':\n return !contains(['point', 'band', 'identity', 'ordinal'], scaleType);\n case 'round':\n return isContinuousToContinuous(scaleType) || scaleType === 'band' || scaleType === 'point';\n case 'padding':\n return isContinuousToContinuous(scaleType) || contains(['point', 'band'], scaleType);\n case 'paddingOuter':\n case 'rangeStep':\n return contains(['point', 'band'], scaleType);\n case 'paddingInner':\n return scaleType === 'band';\n case 'clamp':\n return isContinuousToContinuous(scaleType);\n case 'nice':\n return isContinuousToContinuous(scaleType) || scaleType === 'quantize' || scaleType === 'threshold';\n case 'exponent':\n return scaleType === 'pow';\n case 'base':\n return scaleType === 'log';\n case 'constant':\n return scaleType === 'symlog';\n case 'zero':\n return (hasContinuousDomain(scaleType) &&\n !contains([\n 'log',\n 'time',\n 'utc',\n 'threshold',\n 'quantile' // quantile depends on distribution so zero does not matter\n ], scaleType));\n }\n /* istanbul ignore next: should never reach here*/\n throw new Error(`Invalid scale property ${propName}.`);\n}\n/**\n * Returns undefined if the input channel supports the input scale property name\n */\nexport function channelScalePropertyIncompatability(channel, propName) {\n switch (propName) {\n case 'interpolate':\n case 'scheme':\n if (!isColorChannel(channel)) {\n return log.message.cannotUseScalePropertyWithNonColor(channel);\n }\n return undefined;\n case 'type':\n case 'bins':\n case 'domain':\n case 'range':\n case 'base':\n case 'exponent':\n case 'constant':\n case 'nice':\n case 'padding':\n case 'paddingInner':\n case 'paddingOuter':\n case 'rangeStep':\n case 'reverse':\n case 'round':\n case 'clamp':\n case 'zero':\n return undefined; // GOOD!\n }\n /* istanbul ignore next: it should never reach here */\n throw new Error(`Invalid scale property \"${propName}\".`);\n}\nexport function scaleTypeSupportDataType(specifiedType, fieldDefType) {\n if (contains([TYPE.ORDINAL, TYPE.NOMINAL], fieldDefType)) {\n return specifiedType === undefined || hasDiscreteDomain(specifiedType);\n }\n else if (fieldDefType === TYPE.TEMPORAL) {\n return contains([ScaleType.TIME, ScaleType.UTC, undefined], specifiedType);\n }\n else if (fieldDefType === TYPE.QUANTITATIVE) {\n return contains([\n ScaleType.LOG,\n ScaleType.POW,\n ScaleType.SQRT,\n ScaleType.SYMLOG,\n ScaleType.QUANTILE,\n ScaleType.QUANTIZE,\n ScaleType.THRESHOLD,\n ScaleType.LINEAR,\n undefined\n ], specifiedType);\n }\n return true;\n}\nexport function channelSupportScaleType(channel, scaleType) {\n switch (channel) {\n case CHANNEL.X:\n case CHANNEL.Y:\n return isContinuousToContinuous(scaleType) || contains(['band', 'point'], scaleType);\n case CHANNEL.SIZE: // TODO: size and opacity can support ordinal with more modification\n case CHANNEL.STROKEWIDTH:\n case CHANNEL.OPACITY:\n case CHANNEL.FILLOPACITY:\n case CHANNEL.STROKEOPACITY:\n // Although it generally doesn't make sense to use band with size and opacity,\n // it can also work since we use band: 0.5 to get midpoint.\n return (isContinuousToContinuous(scaleType) ||\n isContinuousToDiscrete(scaleType) ||\n contains(['band', 'point'], scaleType));\n case CHANNEL.COLOR:\n case CHANNEL.FILL:\n case CHANNEL.STROKE:\n return scaleType !== 'band'; // band does not make sense with color\n case CHANNEL.SHAPE:\n return scaleType === 'ordinal'; // shape = lookup only\n }\n /* istanbul ignore next: it should never reach here */\n return false;\n}\nexport function getSupportedScaleType(channel, fieldDefType) {\n return SCALE_TYPE_INDEX[generateScaleTypeIndexKey(channel, fieldDefType)];\n}\n// generates ScaleTypeIndex where keys are encoding channels and values are list of valid ScaleTypes\nfunction generateScaleTypeIndex() {\n const index = {};\n for (const channel of CHANNELS) {\n for (const fieldDefType of keys(TYPE_INDEX)) {\n for (const scaleType of SCALE_TYPES) {\n const key = generateScaleTypeIndexKey(channel, fieldDefType);\n if (channelSupportScaleType(channel, scaleType) && scaleTypeSupportDataType(scaleType, fieldDefType)) {\n index[key] = index[key] || [];\n index[key].push(scaleType);\n }\n }\n }\n }\n return index;\n}\nfunction generateScaleTypeIndexKey(channel, fieldDefType) {\n return channel + '_' + fieldDefType;\n}\n//# sourceMappingURL=scale.js.map","export const SELECTION_ID = '_vgsid_';\nexport function isIntervalSelection(s) {\n return s.type === 'interval';\n}\nexport const defaultConfig = {\n single: {\n on: 'click',\n fields: [SELECTION_ID],\n resolve: 'global',\n empty: 'all',\n clear: 'dblclick'\n },\n multi: {\n on: 'click',\n fields: [SELECTION_ID],\n toggle: 'event.shiftKey',\n resolve: 'global',\n empty: 'all',\n clear: 'dblclick'\n },\n interval: {\n on: '[mousedown, window:mouseup] > window:mousemove!',\n encodings: ['x', 'y'],\n translate: '[mousedown, window:mouseup] > window:mousemove!',\n zoom: 'wheel!',\n mark: { fill: '#333', fillOpacity: 0.125, stroke: 'white' },\n resolve: 'global',\n clear: 'dblclick'\n }\n};\n//# sourceMappingURL=selection.js.map","export function isAnyConcatSpec(spec) {\n return isVConcatSpec(spec) || isHConcatSpec(spec) || isConcatSpec(spec);\n}\nexport function isConcatSpec(spec) {\n return spec['concat'] !== undefined;\n}\nexport function isVConcatSpec(spec) {\n return spec['vconcat'] !== undefined;\n}\nexport function isHConcatSpec(spec) {\n return spec['hconcat'] !== undefined;\n}\n//# sourceMappingURL=concat.js.map","export function isRepeatSpec(spec) {\n return spec['repeat'] !== undefined;\n}\n//# sourceMappingURL=repeat.js.map","import { isArray, isNumber } from 'vega-util';\nimport { flagKeys } from '../util';\nimport { isConcatSpec } from './concat';\nimport { isFacetMapping, isFacetSpec } from './facet';\nimport { isRepeatSpec } from './repeat';\nexport const DEFAULT_SPACING = 20;\nconst COMPOSITION_LAYOUT_INDEX = {\n align: 1,\n bounds: 1,\n center: 1,\n columns: 1,\n spacing: 1\n};\nconst COMPOSITION_LAYOUT_PROPERTIES = flagKeys(COMPOSITION_LAYOUT_INDEX);\nexport function extractCompositionLayout(spec, specType, config) {\n const compositionConfig = config[specType];\n const layout = {};\n // Apply config first\n const { spacing: spacingConfig, columns } = compositionConfig;\n if (spacingConfig !== undefined) {\n layout.spacing = spacingConfig;\n }\n if (columns !== undefined) {\n if ((isFacetSpec(spec) && !isFacetMapping(spec.facet)) ||\n (isRepeatSpec(spec) && isArray(spec.repeat)) ||\n isConcatSpec(spec)) {\n layout.columns = columns;\n }\n }\n // Then copy properties from the spec\n for (const prop of COMPOSITION_LAYOUT_PROPERTIES) {\n if (spec[prop] !== undefined) {\n if (prop === 'spacing') {\n const spacing = spec[prop];\n layout[prop] = isNumber(spacing)\n ? spacing\n : {\n row: spacing.row || spacingConfig,\n column: spacing.column || spacingConfig\n };\n }\n else {\n layout[prop] = spec[prop];\n }\n }\n }\n return layout;\n}\n//# sourceMappingURL=base.js.map","import * as tslib_1 from \"tslib\";\nexport function extractTitleConfig(titleConfig) {\n const { \n // These are non-mark title config that need to be hardcoded\n anchor, frame, offset, orient, \n // color needs to be redirect to fill\n color } = titleConfig, \n // The rest are mark config.\n titleMarkConfig = tslib_1.__rest(titleConfig, [\"anchor\", \"frame\", \"offset\", \"orient\", \"color\"]);\n const mark = Object.assign({}, titleMarkConfig, (color ? { fill: color } : {}));\n const nonMark = Object.assign({}, (anchor ? { anchor } : {}), (frame ? { frame } : {}), (offset ? { offset } : {}), (orient ? { orient } : {}));\n return { mark, nonMark };\n}\n//# sourceMappingURL=title.js.map","import { isObject } from 'vega-util';\nimport { getAllCompositeMarks } from './compositemark';\nimport { VL_ONLY_GUIDE_CONFIG, VL_ONLY_LEGEND_CONFIG } from './guide';\nimport { defaultLegendConfig } from './legend';\nimport * as mark from './mark';\nimport { PRIMITIVE_MARKS, VL_ONLY_MARK_CONFIG_PROPERTIES, VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX } from './mark';\nimport { defaultScaleConfig } from './scale';\nimport { defaultConfig as defaultSelectionConfig } from './selection';\nimport { DEFAULT_SPACING } from './spec/base';\nimport { extractTitleConfig } from './title';\nimport { duplicate, keys, mergeDeep } from './util';\nexport const defaultViewConfig = {\n width: 200,\n height: 200\n};\nexport function isVgScheme(rangeConfig) {\n return rangeConfig && !!rangeConfig['scheme'];\n}\nexport const defaultConfig = {\n padding: 5,\n timeFormat: '%b %d, %Y',\n countTitle: 'Count of Records',\n invalidValues: 'filter',\n view: defaultViewConfig,\n mark: mark.defaultMarkConfig,\n area: {},\n bar: mark.defaultBarConfig,\n circle: {},\n geoshape: {},\n line: {},\n point: {},\n rect: {},\n rule: { color: 'black' },\n square: {},\n text: { color: 'black' },\n tick: mark.defaultTickConfig,\n trail: {},\n boxplot: {\n size: 14,\n extent: 1.5,\n box: {},\n median: { color: 'white' },\n outliers: {},\n rule: {},\n ticks: null\n },\n errorbar: {\n center: 'mean',\n rule: true,\n ticks: false\n },\n errorband: {\n band: {\n opacity: 0.3\n },\n borders: false\n },\n scale: defaultScaleConfig,\n projection: {},\n axis: {},\n axisX: {},\n axisY: {},\n axisLeft: {},\n axisRight: {},\n axisTop: {},\n axisBottom: {},\n axisBand: {},\n legend: defaultLegendConfig,\n header: { titlePadding: 10, labelPadding: 10 },\n headerColumn: {},\n headerRow: {},\n headerFacet: {},\n selection: defaultSelectionConfig,\n style: {},\n title: {},\n facet: { spacing: DEFAULT_SPACING },\n repeat: { spacing: DEFAULT_SPACING },\n concat: { spacing: DEFAULT_SPACING }\n};\nexport function initConfig(config) {\n return mergeDeep(duplicate(defaultConfig), config);\n}\nconst MARK_STYLES = ['view', ...PRIMITIVE_MARKS];\nconst VL_ONLY_CONFIG_PROPERTIES = [\n 'padding',\n 'facet',\n 'concat',\n 'repeat',\n 'numberFormat',\n 'timeFormat',\n 'countTitle',\n 'header',\n 'stack',\n 'scale',\n 'selection',\n 'invalidValues',\n 'overlay' // FIXME: Redesign and unhide this\n];\nconst VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = Object.assign({ view: ['width', 'height'] }, VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX);\nexport function stripAndRedirectConfig(config) {\n config = duplicate(config);\n for (const prop of VL_ONLY_CONFIG_PROPERTIES) {\n delete config[prop];\n }\n // Remove Vega-Lite only axis/legend config\n if (config.axis) {\n for (const prop of VL_ONLY_GUIDE_CONFIG) {\n delete config.axis[prop];\n }\n }\n if (config.legend) {\n for (const prop of VL_ONLY_GUIDE_CONFIG) {\n delete config.legend[prop];\n }\n for (const prop of VL_ONLY_LEGEND_CONFIG) {\n delete config.legend[prop];\n }\n }\n // Remove Vega-Lite only generic mark config\n if (config.mark) {\n for (const prop of VL_ONLY_MARK_CONFIG_PROPERTIES) {\n delete config.mark[prop];\n }\n }\n for (const markType of MARK_STYLES) {\n // Remove Vega-Lite-only mark config\n for (const prop of VL_ONLY_MARK_CONFIG_PROPERTIES) {\n delete config[markType][prop];\n }\n // Remove Vega-Lite only mark-specific config\n const vlOnlyMarkSpecificConfigs = VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX[markType];\n if (vlOnlyMarkSpecificConfigs) {\n for (const prop of vlOnlyMarkSpecificConfigs) {\n delete config[markType][prop];\n }\n }\n // Redirect mark config to config.style so that mark config only affect its own mark type\n // without affecting other marks that share the same underlying Vega marks.\n // For example, config.rect should not affect bar marks.\n redirectConfig(config, markType);\n }\n for (const m of getAllCompositeMarks()) {\n // Clean up the composite mark config as we don't need them in the output specs anymore\n delete config[m];\n }\n // Redirect config.title -- so that title config do not\n // affect header labels, which also uses `title` directive to implement.\n redirectConfig(config, 'title', 'group-title');\n // Remove empty config objects\n for (const prop in config) {\n if (isObject(config[prop]) && keys(config[prop]).length === 0) {\n delete config[prop];\n }\n }\n return keys(config).length > 0 ? config : undefined;\n}\nfunction redirectConfig(config, prop, // string = composite mark\ntoProp, compositeMarkPart) {\n const propConfig = prop === 'title'\n ? extractTitleConfig(config.title).mark\n : compositeMarkPart\n ? config[prop][compositeMarkPart]\n : config[prop];\n if (prop === 'view') {\n toProp = 'cell'; // View's default style is \"cell\"\n }\n const style = Object.assign({}, propConfig, config.style[prop]);\n // set config.style if it is not an empty object\n if (keys(style).length > 0) {\n config.style[toProp || prop] = style;\n }\n if (!compositeMarkPart) {\n // For composite mark, so don't delete the whole config yet as we have to do multiple redirections.\n delete config[prop];\n }\n}\n//# sourceMappingURL=config.js.map","export function isLayerSpec(spec) {\n return spec['layer'] !== undefined;\n}\n//# sourceMappingURL=layer.js.map","import * as tslib_1 from \"tslib\";\nimport * as log from '../log';\nimport { isConcatSpec, isHConcatSpec, isVConcatSpec } from './concat';\nimport { isFacetSpec } from './facet';\nimport { isLayerSpec } from './layer';\nimport { isRepeatSpec } from './repeat';\nimport { isUnitSpec } from './unit';\nexport class SpecMapper {\n map(spec, params) {\n if (isFacetSpec(spec)) {\n return this.mapFacet(spec, params);\n }\n else if (isRepeatSpec(spec)) {\n return this.mapRepeat(spec, params);\n }\n else if (isHConcatSpec(spec)) {\n return this.mapHConcat(spec, params);\n }\n else if (isVConcatSpec(spec)) {\n return this.mapVConcat(spec, params);\n }\n else if (isConcatSpec(spec)) {\n return this.mapConcat(spec, params);\n }\n else {\n return this.mapLayerOrUnit(spec, params);\n }\n }\n mapLayerOrUnit(spec, params) {\n if (isLayerSpec(spec)) {\n return this.mapLayer(spec, params);\n }\n else if (isUnitSpec(spec)) {\n return this.mapUnit(spec, params);\n }\n throw new Error(log.message.INVALID_SPEC);\n }\n mapLayer(spec, params) {\n return Object.assign({}, spec, { layer: spec.layer.map(subspec => this.mapLayerOrUnit(subspec, params)) });\n }\n mapHConcat(spec, params) {\n return Object.assign({}, spec, { hconcat: spec.hconcat.map(subspec => this.map(subspec, params)) });\n }\n mapVConcat(spec, params) {\n return Object.assign({}, spec, { vconcat: spec.vconcat.map(subspec => this.map(subspec, params)) });\n }\n mapConcat(spec, params) {\n const { concat } = spec, rest = tslib_1.__rest(spec, [\"concat\"]);\n return Object.assign({}, rest, { concat: concat.map(subspec => this.map(subspec, params)) });\n }\n mapFacet(spec, params) {\n return Object.assign({}, spec, { \n // TODO: remove \"any\" once we support all facet listed in https://github.com/vega/vega-lite/issues/2760\n spec: this.map(spec.spec, params) });\n }\n mapRepeat(spec, params) {\n return Object.assign({}, spec, { spec: this.map(spec.spec, params) });\n }\n}\n//# sourceMappingURL=map.js.map","import { isArray, isBoolean } from 'vega-util';\nimport { SUM_OPS } from './aggregate';\nimport { NONPOSITION_CHANNELS, X, X2, Y2 } from './channel';\nimport { getTypedFieldDef, isFieldDef, isStringFieldDef, vgField } from './channeldef';\nimport { channelHasField } from './encoding';\nimport * as log from './log';\nimport { AREA, BAR, CIRCLE, isMarkDef, isPathMark, LINE, POINT, RULE, SQUARE, TEXT, TICK } from './mark';\nimport { ScaleType } from './scale';\nimport { contains, getFirstDefined } from './util';\nconst STACK_OFFSET_INDEX = {\n zero: 1,\n center: 1,\n normalize: 1\n};\nexport function isStackOffset(s) {\n return !!STACK_OFFSET_INDEX[s];\n}\nexport const STACKABLE_MARKS = [BAR, AREA, RULE, POINT, CIRCLE, SQUARE, LINE, TEXT, TICK];\nexport const STACK_BY_DEFAULT_MARKS = [BAR, AREA];\nfunction potentialStackedChannel(encoding) {\n const xDef = encoding.x;\n const yDef = encoding.y;\n if (isFieldDef(xDef) && isFieldDef(yDef)) {\n if (xDef.type === 'quantitative' && yDef.type === 'quantitative') {\n if (xDef.stack) {\n return 'x';\n }\n else if (yDef.stack) {\n return 'y';\n }\n // if there is no explicit stacking, only apply stack if there is only one aggregate for x or y\n if (!!xDef.aggregate !== !!yDef.aggregate) {\n return xDef.aggregate ? 'x' : 'y';\n }\n }\n else if (xDef.type === 'quantitative') {\n return 'x';\n }\n else if (yDef.type === 'quantitative') {\n return 'y';\n }\n }\n else if (isFieldDef(xDef) && xDef.type === 'quantitative') {\n return 'x';\n }\n else if (isFieldDef(yDef) && yDef.type === 'quantitative') {\n return 'y';\n }\n return undefined;\n}\n// Note: CompassQL uses this method and only pass in required properties of each argument object.\n// If required properties change, make sure to update CompassQL.\nexport function stack(m, encoding, stackConfig, opt = {}) {\n const mark = isMarkDef(m) ? m.type : m;\n // Should have stackable mark\n if (!contains(STACKABLE_MARKS, mark)) {\n return null;\n }\n const fieldChannel = potentialStackedChannel(encoding);\n if (!fieldChannel) {\n return null;\n }\n const stackedFieldDef = encoding[fieldChannel];\n const stackedField = isStringFieldDef(stackedFieldDef) ? vgField(stackedFieldDef, {}) : undefined;\n const dimensionChannel = fieldChannel === 'x' ? 'y' : 'x';\n const dimensionDef = encoding[dimensionChannel];\n const dimensionField = isStringFieldDef(dimensionDef) ? vgField(dimensionDef, {}) : undefined;\n // Should have grouping level of detail that is different from the dimension field\n const stackBy = NONPOSITION_CHANNELS.reduce((sc, channel) => {\n // Ignore tooltip in stackBy (https://github.com/vega/vega-lite/issues/4001)\n if (channel !== 'tooltip' && channelHasField(encoding, channel)) {\n const channelDef = encoding[channel];\n (isArray(channelDef) ? channelDef : [channelDef]).forEach(cDef => {\n const fieldDef = getTypedFieldDef(cDef);\n if (fieldDef.aggregate) {\n return;\n }\n // Check whether the channel's field is identical to x/y's field or if the channel is a repeat\n const f = isStringFieldDef(fieldDef) ? vgField(fieldDef, {}) : undefined;\n if (\n // if fielddef is a repeat, just include it in the stack by\n !f ||\n // otherwise, the field must be different from x and y fields.\n (f !== dimensionField && f !== stackedField)) {\n sc.push({ channel, fieldDef });\n }\n });\n }\n return sc;\n }, []);\n if (stackBy.length === 0) {\n return null;\n }\n // Automatically determine offset\n let offset;\n if (stackedFieldDef.stack !== undefined) {\n if (isBoolean(stackedFieldDef.stack)) {\n offset = stackedFieldDef.stack ? 'zero' : null;\n }\n else {\n offset = stackedFieldDef.stack;\n }\n }\n else if (contains(STACK_BY_DEFAULT_MARKS, mark)) {\n // Bar and Area with sum ops are automatically stacked by default\n offset = getFirstDefined(stackConfig, 'zero');\n }\n else {\n offset = stackConfig;\n }\n if (!offset || !isStackOffset(offset)) {\n return null;\n }\n // warn when stacking non-linear\n if (stackedFieldDef.scale && stackedFieldDef.scale.type && stackedFieldDef.scale.type !== ScaleType.LINEAR) {\n if (opt.disallowNonLinearStack) {\n return null;\n }\n else {\n log.warn(log.message.cannotStackNonLinearScale(stackedFieldDef.scale.type));\n }\n }\n // Check if it is a ranged mark\n if (channelHasField(encoding, fieldChannel === X ? X2 : Y2)) {\n if (stackedFieldDef.stack !== undefined) {\n log.warn(log.message.cannotStackRangedMark(fieldChannel));\n }\n return null;\n }\n // Warn if stacking summative aggregate\n if (stackedFieldDef.aggregate && !contains(SUM_OPS, stackedFieldDef.aggregate)) {\n log.warn(log.message.stackNonSummativeAggregate(stackedFieldDef.aggregate));\n }\n return {\n groupbyChannel: dimensionDef ? dimensionChannel : undefined,\n fieldChannel,\n impute: isPathMark(mark),\n stackBy,\n offset\n };\n}\n//# sourceMappingURL=stack.js.map","import * as tslib_1 from \"tslib\";\nimport { isObject } from 'vega-util';\nimport { isMarkDef } from '../mark';\nimport { isUnitSpec } from '../spec/unit';\nimport { stack } from '../stack';\nimport { keys, omit, pick } from '../util';\nfunction dropLineAndPoint(markDef) {\n const { point: _point, line: _line } = markDef, mark = tslib_1.__rest(markDef, [\"point\", \"line\"]);\n return keys(mark).length > 1 ? mark : mark.type;\n}\nfunction dropLineAndPointFromConfig(config) {\n for (const mark of ['line', 'area', 'rule', 'trail']) {\n if (config[mark]) {\n config = Object.assign({}, config, { [mark]: omit(config[mark], ['point', 'line']) });\n }\n }\n return config;\n}\nfunction getPointOverlay(markDef, markConfig = {}, encoding) {\n if (markDef.point === 'transparent') {\n return { opacity: 0 };\n }\n else if (markDef.point) {\n // truthy : true or object\n return isObject(markDef.point) ? markDef.point : {};\n }\n else if (markDef.point !== undefined) {\n // false or null\n return null;\n }\n else {\n // undefined (not disabled)\n if (markConfig.point || encoding.shape) {\n // enable point overlay if config[mark].point is truthy or if encoding.shape is provided\n return isObject(markConfig.point) ? markConfig.point : {};\n }\n // markDef.point is defined as falsy\n return undefined;\n }\n}\nfunction getLineOverlay(markDef, markConfig = {}) {\n if (markDef.line) {\n // true or object\n return markDef.line === true ? {} : markDef.line;\n }\n else if (markDef.line !== undefined) {\n // false or null\n return null;\n }\n else {\n // undefined (not disabled)\n if (markConfig.line) {\n // enable line overlay if config[mark].line is truthy\n return markConfig.line === true ? {} : markConfig.line;\n }\n // markDef.point is defined as falsy\n return undefined;\n }\n}\nexport class PathOverlayNormalizer {\n constructor() {\n this.name = 'path-overlay';\n }\n hasMatchingType(spec, config) {\n if (isUnitSpec(spec)) {\n const { mark, encoding } = spec;\n const markDef = isMarkDef(mark) ? mark : { type: mark };\n switch (markDef.type) {\n case 'line':\n case 'rule':\n case 'trail':\n return !!getPointOverlay(markDef, config[markDef.type], encoding);\n case 'area':\n return (\n // false / null are also included as we want to remove the properties\n !!getPointOverlay(markDef, config[markDef.type], encoding) ||\n !!getLineOverlay(markDef, config[markDef.type]));\n }\n }\n return false;\n }\n run(spec, params, normalize) {\n const { config } = params;\n const { selection, projection, encoding, mark } = spec, outerSpec = tslib_1.__rest(spec, [\"selection\", \"projection\", \"encoding\", \"mark\"]);\n const markDef = isMarkDef(mark) ? mark : { type: mark };\n const pointOverlay = getPointOverlay(markDef, config[markDef.type], encoding);\n const lineOverlay = markDef.type === 'area' && getLineOverlay(markDef, config[markDef.type]);\n const layer = [\n Object.assign({}, (selection ? { selection } : {}), { \n // Do not include point / line overlay in the normalize spec\n mark: dropLineAndPoint(Object.assign({}, markDef, (markDef.type === 'area' ? { opacity: 0.7 } : {}))), \n // drop shape from encoding as this might be used to trigger point overlay\n encoding: omit(encoding, ['shape']) })\n ];\n // FIXME: determine rules for applying selections.\n // Need to copy stack config to overlayed layer\n const stackProps = stack(markDef, encoding, config ? config.stack : undefined);\n let overlayEncoding = encoding;\n if (stackProps) {\n const { fieldChannel: stackFieldChannel, offset } = stackProps;\n overlayEncoding = Object.assign({}, encoding, { [stackFieldChannel]: Object.assign({}, encoding[stackFieldChannel], (offset ? { stack: offset } : {})) });\n }\n if (lineOverlay) {\n layer.push(Object.assign({}, (projection ? { projection } : {}), { mark: Object.assign({ type: 'line' }, pick(markDef, ['clip', 'interpolate', 'tension']), lineOverlay), encoding: overlayEncoding }));\n }\n if (pointOverlay) {\n layer.push(Object.assign({}, (projection ? { projection } : {}), { mark: Object.assign({ type: 'point', opacity: 1, filled: true }, pick(markDef, ['clip']), pointOverlay), encoding: overlayEncoding }));\n }\n return normalize(Object.assign({}, outerSpec, { layer }), Object.assign({}, params, { config: dropLineAndPointFromConfig(config) }));\n }\n}\n//# sourceMappingURL=pathoverlay.js.map","import { getMainRangeChannel, SECONDARY_RANGE_CHANNEL } from '../channel';\nimport { isFieldDef } from '../channeldef';\nimport * as log from '../log';\nimport { isUnitSpec } from '../spec/unit';\nexport class RuleForRangedLineNormalizer {\n constructor() {\n this.name = 'RuleForRangedLine';\n }\n hasMatchingType(spec) {\n if (isUnitSpec(spec)) {\n const { encoding, mark } = spec;\n if (mark === 'line') {\n for (const channel of SECONDARY_RANGE_CHANNEL) {\n const mainChannel = getMainRangeChannel(channel);\n const mainChannelDef = encoding[mainChannel];\n if (!!encoding[channel] && isFieldDef(mainChannelDef) && mainChannelDef.bin !== 'binned') {\n return true;\n }\n }\n }\n }\n return false;\n }\n run(spec, params, normalize) {\n const { encoding } = spec;\n log.warn(log.message.lineWithRange(!!encoding.x2, !!encoding.y2));\n return normalize(Object.assign({}, spec, { mark: 'rule' }), params);\n }\n}\n//# sourceMappingURL=ruleforrangedline.js.map","import * as tslib_1 from \"tslib\";\nimport { isArray } from 'vega-util';\nimport { COLUMN, FACET, ROW } from '../channel';\nimport { boxPlotNormalizer } from '../compositemark/boxplot';\nimport { errorBandNormalizer } from '../compositemark/errorband';\nimport { errorBarNormalizer } from '../compositemark/errorbar';\nimport { channelHasField } from '../encoding';\nimport * as log from '../log';\nimport { isFacetMapping } from '../spec/facet';\nimport { SpecMapper } from '../spec/map';\nimport { isUnitSpec } from '../spec/unit';\nimport { keys, omit } from '../util';\nimport { PathOverlayNormalizer } from './pathoverlay';\nimport { RuleForRangedLineNormalizer } from './ruleforrangedline';\nexport class CoreNormalizer extends SpecMapper {\n constructor() {\n super(...arguments);\n this.nonFacetUnitNormalizers = [\n boxPlotNormalizer,\n errorBarNormalizer,\n errorBandNormalizer,\n new PathOverlayNormalizer(),\n new RuleForRangedLineNormalizer()\n ];\n }\n map(spec, params) {\n // Special handling for a faceted unit spec as it can return a facet spec, not just a layer or unit spec like a normal unit spec.\n if (isUnitSpec(spec)) {\n const hasRow = channelHasField(spec.encoding, ROW);\n const hasColumn = channelHasField(spec.encoding, COLUMN);\n const hasFacet = channelHasField(spec.encoding, FACET);\n if (hasRow || hasColumn || hasFacet) {\n return this.mapFacetedUnit(spec, params);\n }\n }\n return super.map(spec, params);\n }\n // This is for normalizing non-facet unit\n mapUnit(spec, params) {\n const { parentEncoding, parentProjection } = params;\n if (parentEncoding || parentProjection) {\n return this.mapUnitWithParentEncodingOrProjection(spec, params);\n }\n const normalizeLayerOrUnit = this.mapLayerOrUnit.bind(this);\n for (const unitNormalizer of this.nonFacetUnitNormalizers) {\n if (unitNormalizer.hasMatchingType(spec, params.config)) {\n return unitNormalizer.run(spec, params, normalizeLayerOrUnit);\n }\n }\n return spec;\n }\n mapRepeat(spec, params) {\n const { repeat } = spec;\n if (!isArray(repeat) && spec.columns) {\n // is repeat with row/column\n spec = omit(spec, ['columns']);\n log.warn(log.message.columnsNotSupportByRowCol('repeat'));\n }\n return Object.assign({}, spec, { spec: this.map(spec.spec, params) });\n }\n mapFacet(spec, params) {\n const { facet } = spec;\n if (isFacetMapping(facet) && spec.columns) {\n // is facet with row/column\n spec = omit(spec, ['columns']);\n log.warn(log.message.columnsNotSupportByRowCol('facet'));\n }\n return super.mapFacet(spec, params);\n }\n mapUnitWithParentEncodingOrProjection(spec, params) {\n const { encoding, projection } = spec;\n const { parentEncoding, parentProjection, config } = params;\n const mergedProjection = mergeProjection({ parentProjection, projection });\n const mergedEncoding = mergeEncoding({ parentEncoding, encoding });\n return this.mapUnit(Object.assign({}, spec, (mergedProjection ? { projection: mergedProjection } : {}), (mergedEncoding ? { encoding: mergedEncoding } : {})), { config });\n }\n mapFacetedUnit(spec, params) {\n // New encoding in the inside spec should not contain row / column\n // as row/column should be moved to facet\n const _a = spec.encoding, { row, column, facet } = _a, encoding = tslib_1.__rest(_a, [\"row\", \"column\", \"facet\"]);\n // Mark and encoding should be moved into the inner spec\n const { mark, width, projection, height, selection, encoding: _ } = spec, outerSpec = tslib_1.__rest(spec, [\"mark\", \"width\", \"projection\", \"height\", \"selection\", \"encoding\"]);\n if (facet && (row || column)) {\n log.warn(log.message.facetChannelDropped([...(row ? [ROW] : []), ...(column ? [COLUMN] : [])]));\n }\n return this.mapFacet(Object.assign({}, outerSpec, { \n // row / column has higher precedence than facet\n facet: row || column\n ? Object.assign({}, (row ? { row } : {}), (column ? { column } : {})) : facet, spec: Object.assign({}, (projection ? { projection } : {}), { mark }, (width ? { width } : {}), (height ? { height } : {}), { encoding }, (selection ? { selection } : {})) }), params);\n }\n mapLayer(spec, _a) {\n // Special handling for extended layer spec\n var { parentEncoding, parentProjection } = _a, otherParams = tslib_1.__rest(_a, [\"parentEncoding\", \"parentProjection\"]);\n const { encoding, projection } = spec, rest = tslib_1.__rest(spec, [\"encoding\", \"projection\"]);\n const params = Object.assign({}, otherParams, { parentEncoding: mergeEncoding({ parentEncoding, encoding }), parentProjection: mergeProjection({ parentProjection, projection }) });\n return super.mapLayer(rest, params);\n }\n}\nfunction mergeEncoding(opt) {\n const { parentEncoding, encoding } = opt;\n if (parentEncoding && encoding) {\n const overriden = keys(parentEncoding).reduce((o, key) => {\n if (encoding[key]) {\n o.push(key);\n }\n return o;\n }, []);\n if (overriden.length > 0) {\n log.warn(log.message.encodingOverridden(overriden));\n }\n }\n const merged = Object.assign({}, (parentEncoding || {}), (encoding || {}));\n return keys(merged).length > 0 ? merged : undefined;\n}\nfunction mergeProjection(opt) {\n const { parentProjection, projection } = opt;\n if (parentProjection && projection) {\n log.warn(log.message.projectionOverridden({ parentProjection, projection }));\n }\n return projection || parentProjection;\n}\n//# sourceMappingURL=core.js.map","import { initConfig } from '../config';\nimport { CoreNormalizer } from './core';\nexport function normalize(spec, config) {\n if (config === undefined) {\n config = initConfig(spec.config);\n }\n return normalizeGenericSpec(spec, config);\n}\nconst normalizer = new CoreNormalizer();\n/**\n * Decompose extended unit specs into composition of pure unit specs.\n */\nfunction normalizeGenericSpec(spec, config = {}) {\n return normalizer.map(spec, { config });\n}\n//# sourceMappingURL=index.js.map","import { isString } from 'vega-util';\nimport * as log from '../log';\nfunction _normalizeAutoSize(autosize) {\n return isString(autosize) ? { type: autosize } : autosize || {};\n}\nexport function normalizeAutoSize(topLevelAutosize, configAutosize, isUnitOrLayer = true) {\n const autosize = Object.assign({ type: 'pad' }, _normalizeAutoSize(configAutosize), _normalizeAutoSize(topLevelAutosize));\n if (autosize.type === 'fit') {\n if (!isUnitOrLayer) {\n log.warn(log.message.FIT_NON_SINGLE);\n autosize.type = 'pad';\n }\n }\n return autosize;\n}\nconst TOP_LEVEL_PROPERTIES = [\n 'background',\n 'padding'\n // We do not include \"autosize\" here as it is supported by only unit and layer specs and thus need to be normalized\n];\nexport function extractTopLevelProperties(t) {\n return TOP_LEVEL_PROPERTIES.reduce((o, p) => {\n if (t && t[p] !== undefined) {\n o[p] = t[p];\n }\n return o;\n }, {});\n}\n//# sourceMappingURL=toplevel.js.map","export function isUrlData(data) {\n return !!data['url'];\n}\nexport function isInlineData(data) {\n return !!data['values'];\n}\nexport function isNamedData(data) {\n return !!data['name'] && !isUrlData(data) && !isInlineData(data) && !isGenerator(data);\n}\nexport function isGenerator(data) {\n return data && (isSequenceGenerator(data) || isSphereGenerator(data) || isGraticuleGenerator(data));\n}\nexport function isSequenceGenerator(data) {\n return !!data['sequence'];\n}\nexport function isSphereGenerator(data) {\n return !!data['sphere'];\n}\nexport function isGraticuleGenerator(data) {\n return !!data['graticule'];\n}\nexport const MAIN = 'main';\nexport const RAW = 'raw';\n//# sourceMappingURL=data.js.map","import { isArray } from 'vega-util';\nimport { valueExpr, vgField } from './channeldef';\nimport { fieldExpr as timeUnitFieldExpr, normalizeTimeUnit } from './timeunit';\nexport function isSelectionPredicate(predicate) {\n return predicate && predicate['selection'];\n}\nexport function isFieldEqualPredicate(predicate) {\n return predicate && !!predicate.field && predicate.equal !== undefined;\n}\nexport function isFieldLTPredicate(predicate) {\n return predicate && !!predicate.field && predicate.lt !== undefined;\n}\nexport function isFieldLTEPredicate(predicate) {\n return predicate && !!predicate.field && predicate.lte !== undefined;\n}\nexport function isFieldGTPredicate(predicate) {\n return predicate && !!predicate.field && predicate.gt !== undefined;\n}\nexport function isFieldGTEPredicate(predicate) {\n return predicate && !!predicate.field && predicate.gte !== undefined;\n}\nexport function isFieldRangePredicate(predicate) {\n if (predicate && predicate.field) {\n if (isArray(predicate.range) && predicate.range.length === 2) {\n return true;\n }\n }\n return false;\n}\nexport function isFieldOneOfPredicate(predicate) {\n return (predicate && !!predicate.field && (isArray(predicate.oneOf) || isArray(predicate.in)) // backward compatibility\n );\n}\nexport function isFieldValidPredicate(predicate) {\n return predicate && !!predicate.field && predicate.valid !== undefined;\n}\nexport function isFieldPredicate(predicate) {\n return (isFieldOneOfPredicate(predicate) ||\n isFieldEqualPredicate(predicate) ||\n isFieldRangePredicate(predicate) ||\n isFieldLTPredicate(predicate) ||\n isFieldGTPredicate(predicate) ||\n isFieldLTEPredicate(predicate) ||\n isFieldGTEPredicate(predicate));\n}\nfunction predicateValueExpr(v, timeUnit) {\n return valueExpr(v, { timeUnit, time: true });\n}\nfunction predicateValuesExpr(vals, timeUnit) {\n return vals.map(v => predicateValueExpr(v, timeUnit));\n}\n// This method is used by Voyager. Do not change its behavior without changing Voyager.\nexport function fieldFilterExpression(predicate, useInRange = true) {\n const { field, timeUnit } = predicate;\n const fieldExpr = timeUnit\n ? // For timeUnit, cast into integer with time() so we can use ===, inrange, indexOf to compare values directly.\n // TODO: We calculate timeUnit on the fly here. Consider if we would like to consolidate this with timeUnit pipeline\n // TODO: support utc\n 'time(' + timeUnitFieldExpr(timeUnit, field) + ')'\n : vgField(predicate, { expr: 'datum' });\n if (isFieldEqualPredicate(predicate)) {\n return fieldExpr + '===' + predicateValueExpr(predicate.equal, timeUnit);\n }\n else if (isFieldLTPredicate(predicate)) {\n const upper = predicate.lt;\n return `${fieldExpr}<${predicateValueExpr(upper, timeUnit)}`;\n }\n else if (isFieldGTPredicate(predicate)) {\n const lower = predicate.gt;\n return `${fieldExpr}>${predicateValueExpr(lower, timeUnit)}`;\n }\n else if (isFieldLTEPredicate(predicate)) {\n const upper = predicate.lte;\n return `${fieldExpr}<=${predicateValueExpr(upper, timeUnit)}`;\n }\n else if (isFieldGTEPredicate(predicate)) {\n const lower = predicate.gte;\n return `${fieldExpr}>=${predicateValueExpr(lower, timeUnit)}`;\n }\n else if (isFieldOneOfPredicate(predicate)) {\n return `indexof([${predicateValuesExpr(predicate.oneOf, timeUnit).join(',')}], ${fieldExpr}) !== -1`;\n }\n else if (isFieldValidPredicate(predicate)) {\n return predicate.valid ? `${fieldExpr}!==null&&!isNaN(${fieldExpr})` : `${fieldExpr}===null||isNaN(${fieldExpr})`;\n }\n else if (isFieldRangePredicate(predicate)) {\n const lower = predicate.range[0];\n const upper = predicate.range[1];\n if (lower !== null && upper !== null && useInRange) {\n return ('inrange(' +\n fieldExpr +\n ', [' +\n predicateValueExpr(lower, timeUnit) +\n ', ' +\n predicateValueExpr(upper, timeUnit) +\n '])');\n }\n const exprs = [];\n if (lower !== null) {\n exprs.push(`${fieldExpr} >= ${predicateValueExpr(lower, timeUnit)}`);\n }\n if (upper !== null) {\n exprs.push(`${fieldExpr} <= ${predicateValueExpr(upper, timeUnit)}`);\n }\n return exprs.length > 0 ? exprs.join(' && ') : 'true';\n }\n /* istanbul ignore next: it should never reach here */\n throw new Error(`Invalid field predicate: ${JSON.stringify(predicate)}`);\n}\nexport function normalizePredicate(f) {\n if (isFieldPredicate(f) && f.timeUnit) {\n return Object.assign({}, f, { timeUnit: normalizeTimeUnit(f.timeUnit) });\n }\n return f;\n}\n//# sourceMappingURL=predicate.js.map","import { normalizeLogicalOperand } from './logical';\nimport { normalizePredicate } from './predicate';\nexport function isFilter(t) {\n return t['filter'] !== undefined;\n}\nexport function isImputeSequence(t) {\n return t && t['start'] !== undefined && t['stop'] !== undefined;\n}\nexport function isLookup(t) {\n return t['lookup'] !== undefined;\n}\nexport function isSample(t) {\n return t['sample'] !== undefined;\n}\nexport function isWindow(t) {\n return t['window'] !== undefined;\n}\nexport function isJoinAggregate(t) {\n return t['joinaggregate'] !== undefined;\n}\nexport function isFlatten(t) {\n return t['flatten'] !== undefined;\n}\nexport function isCalculate(t) {\n return t['calculate'] !== undefined;\n}\nexport function isBin(t) {\n return !!t['bin'];\n}\nexport function isImpute(t) {\n return t['impute'] !== undefined;\n}\nexport function isTimeUnit(t) {\n return t['timeUnit'] !== undefined;\n}\nexport function isAggregate(t) {\n return t['aggregate'] !== undefined;\n}\nexport function isStack(t) {\n return t['stack'] !== undefined;\n}\nexport function isFold(t) {\n return t['fold'] !== undefined;\n}\nexport function normalizeTransform(transform) {\n return transform.map(t => {\n if (isFilter(t)) {\n return {\n filter: normalizeLogicalOperand(t.filter, normalizePredicate)\n };\n }\n return t;\n });\n}\n//# sourceMappingURL=transform.js.map","import { isArray } from 'vega-util';\nimport { flagKeys } from './util';\nexport function isSignalRef(o) {\n return !!o['signal'];\n}\nexport function isVgRangeStep(range) {\n return !!range['step'];\n}\nexport function isDataRefUnionedDomain(domain) {\n if (!isArray(domain)) {\n return 'fields' in domain && !('data' in domain);\n }\n return false;\n}\nexport function isFieldRefUnionDomain(domain) {\n if (!isArray(domain)) {\n return 'fields' in domain && 'data' in domain;\n }\n return false;\n}\nexport function isDataRefDomain(domain) {\n if (!isArray(domain)) {\n return 'field' in domain && 'data' in domain;\n }\n return false;\n}\nconst VG_MARK_CONFIG_INDEX = {\n opacity: 1,\n fill: 1,\n fillOpacity: 1,\n stroke: 1,\n strokeCap: 1,\n strokeWidth: 1,\n strokeOpacity: 1,\n strokeDash: 1,\n strokeDashOffset: 1,\n strokeJoin: 1,\n strokeMiterLimit: 1,\n size: 1,\n shape: 1,\n interpolate: 1,\n tension: 1,\n orient: 1,\n align: 1,\n baseline: 1,\n text: 1,\n dir: 1,\n dx: 1,\n dy: 1,\n ellipsis: 1,\n limit: 1,\n radius: 1,\n theta: 1,\n angle: 1,\n font: 1,\n fontSize: 1,\n fontWeight: 1,\n fontStyle: 1,\n cursor: 1,\n href: 1,\n tooltip: 1,\n cornerRadius: 1,\n x: 1,\n y: 1,\n x2: 1,\n y2: 1\n // commented below are vg channel that do not have mark config.\n // xc'|'width'|'yc'|'height'\n // clip: 1,\n // endAngle: 1,\n // innerRadius: 1,\n // outerRadius: 1,\n // path: 1,\n // startAngle: 1,\n // url: 1,\n};\nexport const VG_MARK_CONFIGS = flagKeys(VG_MARK_CONFIG_INDEX);\n//# sourceMappingURL=vega.schema.js.map","import { flagKeys } from './util';\nexport const AXIS_PARTS = ['domain', 'grid', 'labels', 'ticks', 'title'];\n/**\n * A dictionary listing whether a certain axis property is applicable for only main axes or only grid axes.\n * (Properties not listed are applicable for both)\n */\nexport const AXIS_PROPERTY_TYPE = {\n grid: 'grid',\n gridColor: 'grid',\n gridDash: 'grid',\n gridOpacity: 'grid',\n gridScale: 'grid',\n gridWidth: 'grid',\n orient: 'main',\n bandPosition: 'both',\n domain: 'main',\n domainColor: 'main',\n domainOpacity: 'main',\n domainWidth: 'main',\n format: 'main',\n formatType: 'main',\n labelAlign: 'main',\n labelAngle: 'main',\n labelBaseline: 'main',\n labelBound: 'main',\n labelColor: 'main',\n labelFlush: 'main',\n labelFlushOffset: 'main',\n labelFont: 'main',\n labelFontSize: 'main',\n labelFontWeight: 'main',\n labelLimit: 'main',\n labelOpacity: 'main',\n labelOverlap: 'main',\n labelPadding: 'main',\n labels: 'main',\n maxExtent: 'main',\n minExtent: 'main',\n offset: 'main',\n position: 'main',\n tickColor: 'main',\n tickExtra: 'main',\n tickOffset: 'both',\n tickOpacity: 'main',\n tickRound: 'main',\n ticks: 'main',\n tickSize: 'main',\n title: 'main',\n titleAlign: 'main',\n titleAngle: 'main',\n titleBaseline: 'main',\n titleColor: 'main',\n titleFont: 'main',\n titleFontSize: 'main',\n titleFontWeight: 'main',\n titleLimit: 'main',\n titleOpacity: 'main',\n titlePadding: 'main',\n titleX: 'main',\n titleY: 'main',\n tickWidth: 'both',\n tickCount: 'both',\n values: 'both',\n scale: 'both',\n zindex: 'both' // this is actually set afterward, so it doesn't matter\n};\nconst COMMON_AXIS_PROPERTIES_INDEX = {\n orient: 1,\n bandPosition: 1,\n domain: 1,\n domainColor: 1,\n domainDash: 1,\n domainDashOffset: 1,\n domainOpacity: 1,\n domainWidth: 1,\n format: 1,\n formatType: 1,\n grid: 1,\n gridColor: 1,\n gridDash: 1,\n gridDashOffset: 1,\n gridOpacity: 1,\n gridWidth: 1,\n labelAlign: 1,\n labelAngle: 1,\n labelBaseline: 1,\n labelBound: 1,\n labelColor: 1,\n labelFlush: 1,\n labelFlushOffset: 1,\n labelFont: 1,\n labelFontSize: 1,\n labelFontStyle: 1,\n labelFontWeight: 1,\n labelLimit: 1,\n labelOpacity: 1,\n labelOverlap: 1,\n labelPadding: 1,\n labels: 1,\n labelSeparation: 1,\n maxExtent: 1,\n minExtent: 1,\n offset: 1,\n position: 1,\n tickColor: 1,\n tickCount: 1,\n tickDash: 1,\n tickDashOffset: 1,\n tickExtra: 1,\n tickMinStep: 1,\n tickOffset: 1,\n tickOpacity: 1,\n tickRound: 1,\n ticks: 1,\n tickSize: 1,\n tickWidth: 1,\n title: 1,\n titleAlign: 1,\n titleAnchor: 1,\n titleAngle: 1,\n titleBaseline: 1,\n titleColor: 1,\n titleFont: 1,\n titleFontSize: 1,\n titleFontStyle: 1,\n titleFontWeight: 1,\n titleLimit: 1,\n titleOpacity: 1,\n titlePadding: 1,\n titleX: 1,\n titleY: 1,\n values: 1,\n zindex: 1\n};\nconst AXIS_PROPERTIES_INDEX = Object.assign({}, COMMON_AXIS_PROPERTIES_INDEX, { encoding: 1 });\nconst VG_AXIS_PROPERTIES_INDEX = Object.assign({ gridScale: 1, scale: 1 }, COMMON_AXIS_PROPERTIES_INDEX, { encode: 1 });\nexport function isAxisProperty(prop) {\n return !!AXIS_PROPERTIES_INDEX[prop];\n}\nexport const VG_AXIS_PROPERTIES = flagKeys(VG_AXIS_PROPERTIES_INDEX);\n// Export for dependent projects\nexport const AXIS_PROPERTIES = flagKeys(AXIS_PROPERTIES_INDEX);\n//# sourceMappingURL=axis.js.map","import * as tslib_1 from \"tslib\";\nimport { isArray } from 'vega-util';\nimport { AXIS_PARTS, AXIS_PROPERTY_TYPE } from '../../axis';\nimport { POSITION_SCALE_CHANNELS } from '../../channel';\nimport { defaultTitle } from '../../channeldef';\nimport { getFirstDefined, keys } from '../../util';\nfunction assembleTitle(title, config) {\n if (isArray(title)) {\n return title.map(fieldDef => defaultTitle(fieldDef, config)).join(', ');\n }\n return title;\n}\nexport function assembleAxis(axisCmpt, kind, config, opt = { header: false }) {\n const _a = axisCmpt.combine(), { orient, scale, title, zindex } = _a, axis = tslib_1.__rest(_a, [\"orient\", \"scale\", \"title\", \"zindex\"]);\n // Remove properties that are not valid for this kind of axis\n keys(axis).forEach(key => {\n const propType = AXIS_PROPERTY_TYPE[key];\n if (propType && propType !== kind && propType !== 'both') {\n delete axis[key];\n }\n });\n if (kind === 'grid') {\n if (!axis.grid) {\n return undefined;\n }\n // Remove unnecessary encode block\n if (axis.encode) {\n // Only need to keep encode block for grid\n const { grid } = axis.encode;\n axis.encode = Object.assign({}, (grid ? { grid } : {}));\n if (keys(axis.encode).length === 0) {\n delete axis.encode;\n }\n }\n return Object.assign({ scale,\n orient }, axis, { domain: false, labels: false, \n // Always set min/maxExtent to 0 to ensure that `config.axis*.minExtent` and `config.axis*.maxExtent`\n // would not affect gridAxis\n maxExtent: 0, minExtent: 0, ticks: false, zindex: getFirstDefined(zindex, 0) // put grid behind marks by default\n });\n }\n else {\n // kind === 'main'\n if (!opt.header && axisCmpt.mainExtracted) {\n // if mainExtracted has been extracted to a separate facet\n return undefined;\n }\n // Remove unnecessary encode block\n if (axis.encode) {\n for (const part of AXIS_PARTS) {\n if (!axisCmpt.hasAxisPart(part)) {\n delete axis.encode[part];\n }\n }\n if (keys(axis.encode).length === 0) {\n delete axis.encode;\n }\n }\n const titleString = assembleTitle(title, config);\n return Object.assign({ scale,\n orient, grid: false }, (titleString ? { title: titleString } : {}), axis, { zindex: getFirstDefined(zindex, 1) // put axis line above marks by default\n });\n }\n}\n/**\n * Add axis signals so grid line works correctly\n * (Fix https://github.com/vega/vega-lite/issues/4226)\n */\nexport function assembleAxisSignals(model) {\n const { axes } = model.component;\n for (const channel of POSITION_SCALE_CHANNELS) {\n if (axes[channel]) {\n for (const axis of axes[channel]) {\n if (!axis.get('gridScale')) {\n // If there is x-axis but no y-scale for gridScale, need to set height/weight so x-axis can draw the grid with the right height. Same for y-axis and width.\n const sizeType = channel === 'x' ? 'height' : 'width';\n return [\n {\n name: sizeType,\n update: model.getSizeSignalRef(sizeType).signal\n }\n ];\n }\n }\n }\n }\n return [];\n}\nexport function assembleAxes(axisComponents, config) {\n const { x = [], y = [] } = axisComponents;\n return [\n ...x.map(a => assembleAxis(a, 'main', config)),\n ...x.map(a => assembleAxis(a, 'grid', config)),\n ...y.map(a => assembleAxis(a, 'main', config)),\n ...y.map(a => assembleAxis(a, 'grid', config))\n ].filter(a => a); // filter undefined\n}\n//# sourceMappingURL=assemble.js.map","import { keys } from './util';\nexport const HEADER_TITLE_PROPERTIES_MAP = {\n titleAlign: 'align',\n titleAnchor: 'anchor',\n titleAngle: 'angle',\n titleBaseline: 'baseline',\n titleColor: 'color',\n titleFont: 'font',\n titleFontSize: 'fontSize',\n titleFontWeight: 'fontWeight',\n titleLimit: 'limit',\n titleOrient: 'orient',\n titlePadding: 'offset'\n};\nexport const HEADER_LABEL_PROPERTIES_MAP = {\n labelAlign: 'align',\n labelAnchor: 'anchor',\n labelAngle: 'angle',\n labelColor: 'color',\n labelFont: 'font',\n labelFontSize: 'fontSize',\n labelLimit: 'limit',\n labelOrient: 'orient',\n labelPadding: 'offset'\n};\nexport const HEADER_TITLE_PROPERTIES = keys(HEADER_TITLE_PROPERTIES_MAP);\nexport const HEADER_LABEL_PROPERTIES = keys(HEADER_LABEL_PROPERTIES_MAP);\n//# sourceMappingURL=header.js.map","import { isArray } from 'vega-util';\nexport const DEFAULT_SORT_OP = 'mean';\nexport function isSortByEncoding(sort) {\n return !!sort && !!sort['encoding'];\n}\nexport function isSortField(sort) {\n return !!sort && (sort['op'] === 'count' || !!sort['field']);\n}\nexport function isSortArray(sort) {\n return !!sort && isArray(sort);\n}\n//# sourceMappingURL=sort.js.map","export function getAxisConfig(property, config, channel, orient, scaleType) {\n // configTypes to loop, starting from higher precedence\n const configTypes = [\n ...(scaleType === 'band' ? ['axisBand'] : []),\n channel === 'x' ? 'axisX' : 'axisY',\n // axisTop, axisBottom, ...\n ...(orient ? ['axis' + orient.substr(0, 1).toUpperCase() + orient.substr(1)] : []),\n 'axis'\n ];\n for (const configType of configTypes) {\n if (config[configType] && config[configType][property] !== undefined) {\n return config[configType][property];\n }\n }\n return undefined;\n}\n//# sourceMappingURL=config.js.map","import { isBinning } from '../../bin';\nimport { X, Y } from '../../channel';\nimport { valueArray } from '../../channeldef';\nimport * as log from '../../log';\nimport { hasDiscreteDomain } from '../../scale';\nimport { NOMINAL, ORDINAL } from '../../type';\nimport { contains, normalizeAngle } from '../../util';\nimport { getAxisConfig } from './config';\n// TODO: we need to refactor this method after we take care of config refactoring\n/**\n * Default rules for whether to show a grid should be shown for a channel.\n * If `grid` is unspecified, the default value is `true` for ordinal scales that are not binned\n */\nexport function defaultGrid(scaleType, fieldDef) {\n return !hasDiscreteDomain(scaleType) && !isBinning(fieldDef.bin);\n}\nexport function gridScale(model, channel) {\n const gridChannel = channel === 'x' ? 'y' : 'x';\n if (model.getScaleComponent(gridChannel)) {\n return model.scaleName(gridChannel);\n }\n return undefined;\n}\nexport function labelAngle(model, specifiedAxis, channel, fieldDef) {\n // try axis value\n if (specifiedAxis.labelAngle !== undefined) {\n return normalizeAngle(specifiedAxis.labelAngle);\n }\n else {\n // try axis config value\n const angle = getAxisConfig('labelAngle', model.config, channel, orient(channel), model.getScaleComponent(channel).get('type'));\n if (angle !== undefined) {\n return normalizeAngle(angle);\n }\n else {\n // get default value\n if (channel === X && contains([NOMINAL, ORDINAL], fieldDef.type)) {\n return 270;\n }\n // no default\n return undefined;\n }\n }\n}\nexport function defaultLabelBaseline(angle, axisOrient) {\n if (angle !== undefined) {\n angle = normalizeAngle(angle);\n if (axisOrient === 'top' || axisOrient === 'bottom') {\n if (angle <= 45 || 315 <= angle) {\n return axisOrient === 'top' ? 'bottom' : 'top';\n }\n else if (135 <= angle && angle <= 225) {\n return axisOrient === 'top' ? 'top' : 'bottom';\n }\n else {\n return 'middle';\n }\n }\n else {\n if (angle <= 45 || 315 <= angle || (135 <= angle && angle <= 225)) {\n return 'middle';\n }\n else if (45 <= angle && angle <= 135) {\n return axisOrient === 'left' ? 'top' : 'bottom';\n }\n else {\n return axisOrient === 'left' ? 'bottom' : 'top';\n }\n }\n }\n return undefined;\n}\nexport function defaultLabelAlign(angle, axisOrient) {\n if (angle !== undefined) {\n angle = normalizeAngle(angle);\n if (axisOrient === 'top' || axisOrient === 'bottom') {\n if (angle % 180 === 0) {\n return 'center';\n }\n else if (0 < angle && angle < 180) {\n return axisOrient === 'top' ? 'right' : 'left';\n }\n else {\n return axisOrient === 'top' ? 'left' : 'right';\n }\n }\n else {\n if ((angle + 90) % 180 === 0) {\n return 'center';\n }\n else if (90 <= angle && angle < 270) {\n return axisOrient === 'left' ? 'left' : 'right';\n }\n else {\n return axisOrient === 'left' ? 'right' : 'left';\n }\n }\n }\n return undefined;\n}\nexport function defaultLabelFlush(fieldDef, channel) {\n if (channel === 'x' && contains(['quantitative', 'temporal'], fieldDef.type)) {\n return true;\n }\n return undefined;\n}\nexport function defaultLabelOverlap(fieldDef, scaleType) {\n // do not prevent overlap for nominal data because there is no way to infer what the missing labels are\n if (fieldDef.type !== 'nominal') {\n if (scaleType === 'log') {\n return 'greedy';\n }\n return true;\n }\n return undefined;\n}\nexport function orient(channel) {\n switch (channel) {\n case X:\n return 'bottom';\n case Y:\n return 'left';\n }\n /* istanbul ignore next: This should never happen. */\n throw new Error(log.message.INVALID_CHANNEL_FOR_AXIS);\n}\nexport function defaultTickCount({ fieldDef, scaleType, size }) {\n if (!hasDiscreteDomain(scaleType) &&\n scaleType !== 'log' &&\n !contains(['month', 'hours', 'day', 'quarter'], fieldDef.timeUnit)) {\n if (isBinning(fieldDef.bin)) {\n // for binned data, we don't want more ticks than maxbins\n return { signal: `ceil(${size.signal}/10)` };\n }\n return { signal: `ceil(${size.signal}/40)` };\n }\n return undefined;\n}\nexport function values(specifiedAxis, model, fieldDef) {\n const vals = specifiedAxis.values;\n if (vals) {\n return valueArray(fieldDef, vals);\n }\n return undefined;\n}\n//# sourceMappingURL=properties.js.map","import { isArray } from 'vega-util';\nimport { isBinning } from '../bin';\nimport { isScaleFieldDef, isTimeFormatFieldDef, vgField } from '../channeldef';\nimport { ScaleType } from '../scale';\nimport { formatExpression } from '../timeunit';\nimport { QUANTITATIVE } from '../type';\nimport { getFirstDefined, stringify } from '../util';\nexport function applyMarkConfig(e, model, propsList) {\n for (const property of propsList) {\n const value = getMarkConfig(property, model.markDef, model.config);\n if (value !== undefined) {\n e[property] = { value: value };\n }\n }\n return e;\n}\nexport function getStyles(mark) {\n return [].concat(mark.type, mark.style || []);\n}\n/**\n * Return property value from style or mark specific config property if exists.\n * Otherwise, return general mark specific config.\n */\nexport function getMarkConfig(channel, mark, config, { vgChannel } = {} // Note: Ham: I use `any` here as it's too hard to make TS knows that MarkConfig[vgChannel] would have the same type as MarkConfig[P]\n) {\n return getFirstDefined(\n // style config has highest precedence\n vgChannel ? getStyleConfig(channel, mark, config.style) : undefined, getStyleConfig(channel, mark, config.style), \n // then mark-specific config\n vgChannel ? config[mark.type][vgChannel] : undefined, config[mark.type][channel], \n // If there is vgChannel, skip vl channel.\n // For example, vl size for text is vg fontSize, but config.mark.size is only for point size.\n vgChannel ? config.mark[vgChannel] : config.mark[channel]);\n}\nexport function getStyleConfig(prop, mark, styleConfigIndex) {\n const styles = getStyles(mark);\n let value;\n for (const style of styles) {\n const styleConfig = styleConfigIndex[style];\n // MarkConfig extends VgMarkConfig so a prop may not be a valid property for style\n // However here we also check if it is defined, so it is okay to cast here\n const p = prop;\n if (styleConfig && styleConfig[p] !== undefined) {\n value = styleConfig[p];\n }\n }\n return value;\n}\nexport function formatSignalRef(fieldDef, specifiedFormat, expr, config) {\n if (isTimeFormatFieldDef(fieldDef)) {\n const isUTCScale = isScaleFieldDef(fieldDef) && fieldDef['scale'] && fieldDef['scale'].type === ScaleType.UTC;\n return {\n signal: timeFormatExpression(vgField(fieldDef, {\n expr\n }), fieldDef.timeUnit, specifiedFormat, config.text.shortTimeLabels, config.timeFormat, isUTCScale, true)\n };\n }\n else {\n const format = numberFormat(fieldDef, specifiedFormat, config);\n if (isBinning(fieldDef.bin)) {\n const startField = vgField(fieldDef, { expr });\n const endField = vgField(fieldDef, { expr, binSuffix: 'end' });\n return {\n signal: binFormatExpression(startField, endField, format, config)\n };\n }\n else if (fieldDef.type === 'quantitative') {\n return {\n signal: `${formatExpr(vgField(fieldDef, { expr, binSuffix: 'range' }), format)}`\n };\n }\n else {\n return { signal: `''+${vgField(fieldDef, { expr })}` };\n }\n }\n}\n/**\n * Returns number format for a fieldDef\n */\nexport function numberFormat(fieldDef, specifiedFormat, config) {\n // Specified format in axis/legend has higher precedence than fieldDef.format\n if (specifiedFormat) {\n return specifiedFormat;\n }\n if (fieldDef.type === QUANTITATIVE) {\n // we only apply the default if the field is quantitative\n return config.numberFormat;\n }\n return undefined;\n}\nfunction formatExpr(field, format) {\n return `format(${field}, \"${format || ''}\")`;\n}\nexport function numberFormatExpr(field, specifiedFormat, config) {\n return formatExpr(field, specifiedFormat || config.numberFormat);\n}\nexport function binFormatExpression(startField, endField, format, config) {\n return `${startField} === null || isNaN(${startField}) ? \"null\" : ${numberFormatExpr(startField, format, config)} + \" - \" + ${numberFormatExpr(endField, format, config)}`;\n}\n/**\n * Returns the time expression used for axis/legend labels or text mark for a temporal field\n */\nexport function timeFormatExpression(field, timeUnit, format, shortTimeLabels, rawTimeFormat, // should be provided only for actual text and headers, not axis/legend labels\nisUTCScale, alwaysReturn = false) {\n if (!timeUnit || format) {\n // If there is not time unit, or if user explicitly specify format for axis/legend/text.\n format = format || rawTimeFormat; // only use provided timeFormat if there is no timeUnit.\n if (format || alwaysReturn) {\n return `${isUTCScale ? 'utc' : 'time'}Format(${field}, '${format}')`;\n }\n else {\n return undefined;\n }\n }\n else {\n return formatExpression(timeUnit, field, shortTimeLabels, isUTCScale);\n }\n}\n/**\n * Return Vega sort parameters (tuple of field and order).\n */\nexport function sortParams(orderDef, fieldRefOption) {\n return (isArray(orderDef) ? orderDef : [orderDef]).reduce((s, orderChannelDef) => {\n s.field.push(vgField(orderChannelDef, fieldRefOption));\n s.order.push(orderChannelDef.sort || 'ascending');\n return s;\n }, { field: [], order: [] });\n}\nexport function mergeTitleFieldDefs(f1, f2) {\n const merged = [...f1];\n f2.forEach(fdToMerge => {\n for (const fieldDef1 of merged) {\n // If already exists, no need to append to merged array\n if (stringify(fieldDef1) === stringify(fdToMerge)) {\n return;\n }\n }\n merged.push(fdToMerge);\n });\n return merged;\n}\nexport function mergeTitle(title1, title2) {\n if (title1 === title2 || !title2) {\n // if titles are the same or title2 is falsy\n return title1;\n }\n else if (!title1) {\n // if title1 is falsy\n return title2;\n }\n else {\n // join title with comma if they are different\n return title1 + ', ' + title2;\n }\n}\nexport function mergeTitleComponent(v1, v2) {\n if (isArray(v1.value) && isArray(v2.value)) {\n return {\n explicit: v1.explicit,\n value: mergeTitleFieldDefs(v1.value, v2.value)\n };\n }\n else if (!isArray(v1.value) && !isArray(v2.value)) {\n return {\n explicit: v1.explicit,\n value: mergeTitle(v1.value, v2.value)\n };\n }\n /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n throw new Error('It should never reach here');\n}\n//# sourceMappingURL=common.js.map","import { uniqueId } from '../../util';\n/**\n * A node in the dataflow tree.\n */\nexport class DataFlowNode {\n constructor(parent, debugName) {\n this.debugName = debugName;\n this._children = [];\n this._parent = null;\n if (parent) {\n this.parent = parent;\n }\n }\n /**\n * Clone this node with a deep copy but don't clone links to children or parents.\n */\n clone() {\n throw new Error('Cannot clone node');\n }\n /**\n * Return a hash of the node.\n */\n hash() {\n if (this._hash === undefined) {\n this._hash = uniqueId();\n }\n return this._hash;\n }\n /**\n * Set of fields that are being created by this node.\n */\n producedFields() {\n return new Set();\n }\n dependentFields() {\n return new Set();\n }\n get parent() {\n return this._parent;\n }\n /**\n * Set the parent of the node and also add this node to the parent's children.\n */\n set parent(parent) {\n this._parent = parent;\n if (parent) {\n parent.addChild(this);\n }\n }\n get children() {\n return this._children;\n }\n numChildren() {\n return this._children.length;\n }\n addChild(child, loc) {\n // do not add the same child twice\n if (this._children.indexOf(child) > -1) {\n console.warn('Attempt to add the same child twice.');\n return;\n }\n if (loc !== undefined) {\n this._children.splice(loc, 0, child);\n }\n else {\n this._children.push(child);\n }\n }\n removeChild(oldChild) {\n const loc = this._children.indexOf(oldChild);\n this._children.splice(loc, 1);\n return loc;\n }\n /**\n * Remove node from the dataflow.\n */\n remove() {\n let loc = this._parent.removeChild(this);\n for (const child of this._children) {\n // do not use the set method because we want to insert at a particular location\n child._parent = this._parent;\n this._parent.addChild(child, loc++);\n }\n }\n /**\n * Insert another node as a parent of this node.\n */\n insertAsParentOf(other) {\n const parent = other.parent;\n parent.removeChild(this);\n this.parent = parent;\n other.parent = this;\n }\n swapWithParent() {\n const parent = this._parent;\n const newParent = parent.parent;\n // reconnect the children\n for (const child of this._children) {\n child.parent = parent;\n }\n // remove old links\n this._children = []; // equivalent to removing every child link one by one\n parent.removeChild(this);\n parent.parent.removeChild(parent);\n // swap two nodes\n this.parent = newParent;\n parent.parent = this;\n }\n}\nexport class OutputNode extends DataFlowNode {\n /**\n * @param source The name of the source. Will change in assemble.\n * @param type The type of the output node.\n * @param refCounts A global ref counter map.\n */\n constructor(parent, source, type, refCounts) {\n super(parent, source);\n this.type = type;\n this.refCounts = refCounts;\n this._source = this._name = source;\n if (this.refCounts && !(this._name in this.refCounts)) {\n this.refCounts[this._name] = 0;\n }\n }\n clone() {\n const cloneObj = new this.constructor();\n cloneObj.debugName = 'clone_' + this.debugName;\n cloneObj._source = this._source;\n cloneObj._name = 'clone_' + this._name;\n cloneObj.type = this.type;\n cloneObj.refCounts = this.refCounts;\n cloneObj.refCounts[cloneObj._name] = 0;\n return cloneObj;\n }\n /**\n * Request the datasource name and increase the ref counter.\n *\n * During the parsing phase, this will return the simple name such as 'main' or 'raw'.\n * It is crucial to request the name from an output node to mark it as a required node.\n * If nobody ever requests the name, this datasource will not be instantiated in the assemble phase.\n *\n * In the assemble phase, this will return the correct name.\n */\n getSource() {\n this.refCounts[this._name]++;\n return this._source;\n }\n isRequired() {\n return !!this.refCounts[this._name];\n }\n setSource(source) {\n this._source = source;\n }\n}\n//# sourceMappingURL=dataflow.js.map","import { parse } from 'vega-expression';\nfunction getName(node) {\n const name = [];\n if (node.type === 'Identifier') {\n return [node.name];\n }\n if (node.type === 'Literal') {\n return [node.value];\n }\n if (node.type === 'MemberExpression') {\n name.push(...getName(node.object));\n name.push(...getName(node.property));\n }\n return name;\n}\nfunction startsWithDatum(node) {\n if (node.object.type === 'MemberExpression') {\n return startsWithDatum(node.object);\n }\n return node.object.name === 'datum';\n}\nexport function getDependentFields(expression) {\n const ast = parse(expression);\n const dependents = new Set();\n ast.visit((node) => {\n if (node.type === 'MemberExpression' && startsWithDatum(node)) {\n dependents.add(getName(node)\n .slice(1)\n .join('.'));\n }\n });\n return dependents;\n}\n//# sourceMappingURL=expressions.js.map","import { isScaleFieldDef, vgField } from '../../channeldef';\nimport { fieldFilterExpression } from '../../predicate';\nimport { isSortArray } from '../../sort';\nimport { duplicate, hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\nimport { getDependentFields } from './expressions';\n/**\n * We don't know what a calculate node depends on so we should never move it beyond anything that produces fields.\n */\nexport class CalculateNode extends DataFlowNode {\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n this._dependentFields = getDependentFields(this.transform.calculate);\n }\n clone() {\n return new CalculateNode(null, duplicate(this.transform));\n }\n static parseAllForSortIndex(parent, model) {\n // get all the encoding with sort fields from model\n model.forEachFieldDef((fieldDef, channel) => {\n if (!isScaleFieldDef(fieldDef)) {\n return;\n }\n if (isSortArray(fieldDef.sort)) {\n const { field, timeUnit } = fieldDef;\n const sort = fieldDef.sort;\n // generate `datum[\"a\"] === val0 ? 0 : datum[\"a\"] === val1 ? 1 : ... : n` via FieldEqualPredicate\n const calculate = sort\n .map((sortValue, i) => {\n return `${fieldFilterExpression({ field, timeUnit, equal: sortValue })} ? ${i} : `;\n })\n .join('') + sort.length;\n parent = new CalculateNode(parent, {\n calculate,\n as: sortArrayIndexField(fieldDef, channel, { forAs: true })\n });\n }\n });\n return parent;\n }\n producedFields() {\n return new Set([this.transform.as]);\n }\n dependentFields() {\n return this._dependentFields;\n }\n assemble() {\n return {\n type: 'formula',\n expr: this.transform.calculate,\n as: this.transform.as\n };\n }\n hash() {\n return `Calculate ${hash(this.transform)}`;\n }\n}\nexport function sortArrayIndexField(fieldDef, channel, opt) {\n return vgField(fieldDef, Object.assign({ prefix: channel, suffix: 'sort_index' }, (opt || {})));\n}\n//# sourceMappingURL=calculate.js.map","import { contains, getFirstDefined } from '../../util';\n/**\n * Get header channel, which can be different from facet channel when orient is specified or when the facet channel is facet.\n */\nexport function getHeaderChannel(channel, orient) {\n if (contains(['top', 'bottom'], orient)) {\n return 'column';\n }\n else if (contains(['left', 'right'], orient)) {\n return 'row';\n }\n return channel === 'row' ? 'row' : 'column';\n}\nexport function getHeaderProperty(prop, facetFieldDef, config, channel) {\n const headerSpecificConfig = channel === 'row' ? config.headerRow : channel === 'column' ? config.headerColumn : config.headerFacet;\n return getFirstDefined(facetFieldDef && facetFieldDef.header ? facetFieldDef.header[prop] : undefined, headerSpecificConfig[prop], config.header[prop]);\n}\nexport function getHeaderProperties(properties, facetFieldDef, config, channel) {\n const props = {};\n for (const prop of properties) {\n const value = getHeaderProperty(prop, facetFieldDef, config, channel);\n if (value !== undefined) {\n props[prop] = value;\n }\n }\n return props;\n}\n//# sourceMappingURL=common.js.map","export const HEADER_CHANNELS = ['row', 'column'];\nexport const HEADER_TYPES = ['header', 'footer'];\n//# sourceMappingURL=component.js.map","import { isArray } from 'vega-util';\nimport { FACET_CHANNELS } from '../../channel';\nimport { vgField } from '../../channeldef';\nimport { HEADER_LABEL_PROPERTIES, HEADER_LABEL_PROPERTIES_MAP, HEADER_TITLE_PROPERTIES, HEADER_TITLE_PROPERTIES_MAP } from '../../header';\nimport { isSortField } from '../../sort';\nimport { isFacetMapping } from '../../spec/facet';\nimport { contains, keys } from '../../util';\nimport { defaultLabelAlign, defaultLabelBaseline } from '../axis/properties';\nimport { formatSignalRef } from '../common';\nimport { sortArrayIndexField } from '../data/calculate';\nimport { isFacetModel } from '../model';\nimport { getHeaderChannel, getHeaderProperties, getHeaderProperty } from './common';\nimport { HEADER_TYPES } from './component';\n// TODO: rename to assembleHeaderTitleGroup\nexport function assembleTitleGroup(model, channel) {\n const title = model.component.layoutHeaders[channel].title;\n const config = model.config ? model.config : undefined;\n const facetFieldDef = model.component.layoutHeaders[channel].facetFieldDef\n ? model.component.layoutHeaders[channel].facetFieldDef\n : undefined;\n const { titleAnchor, titleAngle, titleOrient } = getHeaderProperties(['titleAnchor', 'titleAngle', 'titleOrient'], facetFieldDef, config, channel);\n const headerChannel = getHeaderChannel(channel, titleOrient);\n return {\n name: `${channel}-title`,\n type: 'group',\n role: `${headerChannel}-title`,\n title: Object.assign({ text: title }, (channel === 'row' ? { orient: 'left' } : {}), { style: 'guide-title' }, defaultHeaderGuideBaseline(titleAngle, headerChannel), defaultHeaderGuideAlign(headerChannel, titleAngle, titleAnchor), assembleHeaderProperties(config, facetFieldDef, channel, HEADER_TITLE_PROPERTIES, HEADER_TITLE_PROPERTIES_MAP))\n };\n}\nexport function defaultHeaderGuideAlign(headerChannel, angle, anchor = 'middle') {\n switch (anchor) {\n case 'start':\n return { align: 'left' };\n case 'end':\n return { align: 'right' };\n }\n const align = defaultLabelAlign(angle, headerChannel === 'row' ? 'left' : 'top');\n return align ? { align } : {};\n}\nexport function defaultHeaderGuideBaseline(angle, channel) {\n const baseline = defaultLabelBaseline(angle, channel === 'row' ? 'left' : 'top');\n return baseline ? { baseline } : {};\n}\nexport function assembleHeaderGroups(model, channel) {\n const layoutHeader = model.component.layoutHeaders[channel];\n const groups = [];\n for (const headerType of HEADER_TYPES) {\n if (layoutHeader[headerType]) {\n for (const headerCmpt of layoutHeader[headerType]) {\n groups.push(assembleHeaderGroup(model, channel, headerType, layoutHeader, headerCmpt));\n }\n }\n }\n return groups;\n}\nfunction getSort(facetFieldDef, channel) {\n const { sort } = facetFieldDef;\n if (isSortField(sort)) {\n return {\n field: vgField(sort, { expr: 'datum' }),\n order: sort.order || 'ascending'\n };\n }\n else if (isArray(sort)) {\n return {\n field: sortArrayIndexField(facetFieldDef, channel, { expr: 'datum' }),\n order: 'ascending'\n };\n }\n else {\n return {\n field: vgField(facetFieldDef, { expr: 'datum' }),\n order: sort || 'ascending'\n };\n }\n}\nexport function assembleLabelTitle(facetFieldDef, channel, config) {\n const { format, labelAngle, labelAnchor, labelOrient } = getHeaderProperties(['format', 'labelAngle', 'labelAnchor', 'labelOrient'], facetFieldDef, config, channel);\n const headerChannel = getHeaderChannel(channel, labelOrient);\n return Object.assign({ text: formatSignalRef(facetFieldDef, format, 'parent', config) }, (channel === 'row' ? { orient: 'left' } : {}), { style: 'guide-label', frame: 'group' }, defaultHeaderGuideBaseline(labelAngle, headerChannel), defaultHeaderGuideAlign(headerChannel, labelAngle, labelAnchor), assembleHeaderProperties(config, facetFieldDef, channel, HEADER_LABEL_PROPERTIES, HEADER_LABEL_PROPERTIES_MAP));\n}\nexport function assembleHeaderGroup(model, channel, headerType, layoutHeader, headerCmpt) {\n if (headerCmpt) {\n let title = null;\n const { facetFieldDef } = layoutHeader;\n const config = model.config ? model.config : undefined;\n if (facetFieldDef && headerCmpt.labels) {\n const { labelOrient } = getHeaderProperties(['labelOrient'], facetFieldDef, config, channel);\n // Include label title in the header if orient aligns with the channel\n if ((channel === 'row' && !contains(['top', 'bottom'], labelOrient)) ||\n (channel === 'column' && !contains(['left', 'right'], labelOrient))) {\n title = assembleLabelTitle(facetFieldDef, channel, config);\n }\n }\n const isFacetWithoutRowCol = isFacetModel(model) && !isFacetMapping(model.facet);\n const axes = headerCmpt.axes;\n const hasAxes = axes && axes.length > 0;\n if (title || hasAxes) {\n const sizeChannel = channel === 'row' ? 'height' : 'width';\n return Object.assign({ name: model.getName(`${channel}_${headerType}`), type: 'group', role: `${channel}-${headerType}` }, (layoutHeader.facetFieldDef\n ? {\n from: { data: model.getName(channel + '_domain') },\n sort: getSort(facetFieldDef, channel)\n }\n : {}), (hasAxes && isFacetWithoutRowCol\n ? {\n from: { data: model.getName(`facet_domain_${channel}`) }\n }\n : {}), (title ? { title } : {}), (headerCmpt.sizeSignal\n ? {\n encode: {\n update: {\n [sizeChannel]: headerCmpt.sizeSignal\n }\n }\n }\n : {}), (hasAxes ? { axes } : {}));\n }\n }\n return null;\n}\nconst LAYOUT_TITLE_BAND = {\n column: {\n start: 0,\n end: 1\n },\n row: {\n start: 1,\n end: 0\n }\n};\nexport function getLayoutTitleBand(titleAnchor, headerChannel) {\n return LAYOUT_TITLE_BAND[headerChannel][titleAnchor];\n}\nexport function assembleLayoutTitleBand(headerComponentIndex, config) {\n const titleBand = {};\n for (const channel of FACET_CHANNELS) {\n const headerComponent = headerComponentIndex[channel];\n if (headerComponent && headerComponent.facetFieldDef) {\n const { titleAnchor, titleOrient } = getHeaderProperties(['titleAnchor', 'titleOrient'], headerComponent.facetFieldDef, config, channel);\n const headerChannel = getHeaderChannel(channel, titleOrient);\n const band = getLayoutTitleBand(titleAnchor, headerChannel);\n if (band !== undefined) {\n titleBand[headerChannel] = band;\n }\n }\n }\n return keys(titleBand).length > 0 ? titleBand : undefined;\n}\nexport function assembleHeaderProperties(config, facetFieldDef, channel, properties, propertiesMap) {\n const props = {};\n for (const prop of properties) {\n if (!propertiesMap[prop]) {\n continue;\n }\n const value = getHeaderProperty(prop, facetFieldDef, config, channel);\n if (value !== undefined) {\n props[propertiesMap[prop]] = value;\n }\n }\n return props;\n}\n//# sourceMappingURL=assemble.js.map","import { hasDiscreteDomain } from '../../scale';\nimport { getFirstDefined } from '../../util';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { isFacetModel } from '../model';\nexport function assembleLayoutSignals(model) {\n return [...sizeSignals(model, 'width'), ...sizeSignals(model, 'height')];\n}\nexport function sizeSignals(model, sizeType) {\n const channel = sizeType === 'width' ? 'x' : 'y';\n const size = model.component.layoutSize.get(sizeType);\n if (!size || size === 'merged') {\n return [];\n }\n // Read size signal name from name map, just in case it is the top-level size signal that got renamed.\n const name = model.getSizeSignalRef(sizeType).signal;\n if (size === 'range-step') {\n const scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n const type = scaleComponent.get('type');\n const range = scaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n const scaleName = model.scaleName(channel);\n if (isFacetModel(model.parent)) {\n // If parent is facet and this is an independent scale, return only signal signal\n // as the width/height will be calculated using the cardinality from\n // facet's aggregate rather than reading from scale domain\n const parentResolve = model.parent.component.resolve;\n if (parentResolve.scale[channel] === 'independent') {\n return [stepSignal(scaleName, range)];\n }\n }\n return [\n stepSignal(scaleName, range),\n {\n name,\n update: sizeExpr(scaleName, scaleComponent, `domain('${scaleName}').length`)\n }\n ];\n }\n }\n /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n throw new Error('layout size is range step although there is no rangeStep.');\n }\n else {\n return [\n {\n name,\n value: size\n }\n ];\n }\n}\nfunction stepSignal(scaleName, range) {\n return {\n name: scaleName + '_step',\n value: range.step\n };\n}\nexport function sizeExpr(scaleName, scaleComponent, cardinality) {\n const type = scaleComponent.get('type');\n const padding = scaleComponent.get('padding');\n const paddingOuter = getFirstDefined(scaleComponent.get('paddingOuter'), padding);\n let paddingInner = scaleComponent.get('paddingInner');\n paddingInner =\n type === 'band'\n ? // only band has real paddingInner\n paddingInner !== undefined\n ? paddingInner\n : padding\n : // For point, as calculated in https://github.com/vega/vega-scale/blob/master/src/band.js#L128,\n // it's equivalent to have paddingInner = 1 since there is only n-1 steps between n points.\n 1;\n return `bandspace(${cardinality}, ${paddingInner}, ${paddingOuter}) * ${scaleName}_step`;\n}\n//# sourceMappingURL=assemble.js.map","import { vgField } from '../../channeldef';\nimport { fieldExpr } from '../../timeunit';\nimport { duplicate, hash, keys, vals } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport class TimeUnitNode extends DataFlowNode {\n constructor(parent, formula) {\n super(parent);\n this.formula = formula;\n }\n clone() {\n return new TimeUnitNode(null, duplicate(this.formula));\n }\n static makeFromEncoding(parent, model) {\n const formula = model.reduceFieldDef((timeUnitComponent, fieldDef) => {\n if (fieldDef.timeUnit) {\n const f = vgField(fieldDef, { forAs: true });\n timeUnitComponent[f] = {\n as: f,\n timeUnit: fieldDef.timeUnit,\n field: fieldDef.field\n };\n }\n return timeUnitComponent;\n }, {});\n if (keys(formula).length === 0) {\n return null;\n }\n return new TimeUnitNode(parent, formula);\n }\n static makeFromTransform(parent, t) {\n return new TimeUnitNode(parent, {\n [t.field]: {\n as: t.as,\n timeUnit: t.timeUnit,\n field: t.field\n }\n });\n }\n merge(other) {\n this.formula = Object.assign({}, this.formula, other.formula);\n other.remove();\n }\n producedFields() {\n return new Set(vals(this.formula).map(f => f.as));\n }\n dependentFields() {\n return new Set(vals(this.formula).map(f => f.field));\n }\n hash() {\n return `TimeUnit ${hash(this.formula)}`;\n }\n assemble() {\n return vals(this.formula).map(c => {\n return {\n type: 'formula',\n as: c.as,\n expr: fieldExpr(c.timeUnit, c.field)\n };\n });\n }\n}\n//# sourceMappingURL=timeunit.js.map","import { stringValue } from 'vega-util';\nimport { VL_SELECTION_RESOLVE } from '..';\nimport { isScaleChannel, X, Y } from '../../../channel';\nimport * as log from '../../../log';\nimport { hasContinuousDomain } from '../../../scale';\nimport { accessPathWithDatum, varName } from '../../../util';\nconst scaleBindings = {\n has: selCmpt => {\n return selCmpt.type === 'interval' && selCmpt.resolve === 'global' && selCmpt.bind && selCmpt.bind === 'scales';\n },\n parse: (model, selDef, selCmpt) => {\n const name = varName(selCmpt.name);\n const bound = (selCmpt.scales = []);\n for (const proj of selCmpt.project.items) {\n const channel = proj.channel;\n if (!isScaleChannel(channel)) {\n continue;\n }\n const scale = model.getScaleComponent(channel);\n const scaleType = scale ? scale.get('type') : undefined;\n if (!scale || !hasContinuousDomain(scaleType)) {\n log.warn(log.message.SCALE_BINDINGS_CONTINUOUS);\n continue;\n }\n scale.set('domainRaw', { signal: accessPathWithDatum(proj.field, name) }, true);\n bound.push(proj);\n // Bind both x/y for diag plot of repeated views.\n if (model.repeater && model.repeater.row === model.repeater.column) {\n const scale2 = model.getScaleComponent(channel === X ? Y : X);\n scale2.set('domainRaw', { signal: accessPathWithDatum(proj.field, name) }, true);\n }\n }\n },\n topLevelSignals: (model, selCmpt, signals) => {\n const bound = selCmpt.scales.filter(proj => !signals.filter(s => s.name === proj.signals.data).length);\n // Top-level signals are only needed for multiview displays and if this\n // view's top-level signals haven't already been generated.\n if (!model.parent || !bound.length) {\n return signals;\n }\n // vlSelectionResolve does not account for the behavior of bound scales in\n // multiview displays. Each unit view adds a tuple to the store, but the\n // state of the selection is the unit selection most recently updated. This\n // state is captured by the top-level signals that we insert and \"push\n // outer\" to from within the units. We need to reassemble this state into\n // the top-level named signal, except no single selCmpt has a global view.\n const namedSg = signals.filter(s => s.name === selCmpt.name)[0];\n const update = namedSg.update;\n if (update.indexOf(VL_SELECTION_RESOLVE) >= 0) {\n namedSg.update = `{${bound.map(proj => `${stringValue(proj.field)}: ${proj.signals.data}`).join(', ')}}`;\n }\n else {\n for (const proj of bound) {\n const mapping = `, ${stringValue(proj.field)}: ${proj.signals.data}`;\n if (update.indexOf(mapping) < 0) {\n namedSg.update = update.substring(0, update.length - 1) + mapping + '}';\n }\n }\n }\n return signals.concat(bound.map(proj => ({ name: proj.signals.data })));\n },\n signals: (model, selCmpt, signals) => {\n // Nested signals need only push to top-level signals with multiview displays.\n if (model.parent) {\n for (const proj of selCmpt.scales) {\n const signal = signals.filter(s => s.name === proj.signals.data)[0];\n signal.push = 'outer';\n delete signal.value;\n delete signal.update;\n }\n }\n return signals;\n }\n};\nexport default scaleBindings;\nexport function domain(model, channel) {\n const scale = stringValue(model.scaleName(channel));\n return `domain(${scale})`;\n}\n//# sourceMappingURL=scales.js.map","import * as tslib_1 from \"tslib\";\nimport { array, isArray } from 'vega-util';\nimport { isSingleDefUnitChannel } from '../../../channel';\nimport * as log from '../../../log';\nimport { hasContinuousDomain } from '../../../scale';\nimport { isIntervalSelection } from '../../../selection';\nimport { keys, varName } from '../../../util';\nimport { TimeUnitNode } from '../../data/timeunit';\nimport scales from './scales';\nexport const TUPLE_FIELDS = '_tuple_fields';\nexport class SelectionProjectionComponent {\n constructor(...items) {\n this.items = items;\n this.has = {};\n }\n}\nconst project = {\n has: () => {\n return true; // This transform handles its own defaults, so always run parse.\n },\n parse: (model, selDef, selCmpt) => {\n const name = selCmpt.name;\n const proj = selCmpt.project || (selCmpt.project = new SelectionProjectionComponent());\n const parsed = {};\n const timeUnits = {};\n const signals = new Set();\n const signalName = (p, range) => {\n const suffix = range === 'visual' ? p.channel : p.field;\n let sg = varName(`${name}_${suffix}`);\n for (let counter = 1; signals.has(sg); counter++) {\n sg = varName(`${name}_${suffix}_${counter}`);\n }\n signals.add(sg);\n return { [range]: sg };\n };\n // If no explicit projection (either fields or encodings) is specified, set some defaults.\n // If an initial value is set, try to infer projections.\n // Otherwise, use the default configuration.\n if (!selDef.fields && !selDef.encodings) {\n const cfg = model.config.selection[selDef.type];\n if (selDef.init) {\n for (const init of array(selDef.init)) {\n for (const key of keys(init)) {\n if (isSingleDefUnitChannel(key)) {\n (selDef.encodings || (selDef.encodings = [])).push(key);\n }\n else {\n if (isIntervalSelection(selDef)) {\n log.warn('Interval selections should be initialized using \"x\" and/or \"y\" keys.');\n selDef.encodings = cfg.encodings;\n }\n else {\n (selDef.fields || (selDef.fields = [])).push(key);\n }\n }\n }\n }\n }\n else {\n selDef.encodings = cfg.encodings;\n selDef.fields = cfg.fields;\n }\n }\n // TODO: find a possible channel mapping for these fields.\n for (const field of selDef.fields || []) {\n const p = { type: 'E', field };\n p.signals = Object.assign({}, signalName(p, 'data'));\n proj.items.push(p);\n }\n for (const channel of selDef.encodings || []) {\n const fieldDef = model.fieldDef(channel);\n if (fieldDef) {\n let field = fieldDef.field;\n if (fieldDef.timeUnit) {\n field = model.vgField(channel);\n // Construct TimeUnitComponents which will be combined into a\n // TimeUnitNode. This node may need to be inserted into the\n // dataflow if the selection is used across views that do not\n // have these time units defined.\n timeUnits[field] = {\n as: field,\n field: fieldDef.field,\n timeUnit: fieldDef.timeUnit\n };\n }\n // Prevent duplicate projections on the same field.\n // TODO: what if the same field is bound to multiple channels (e.g., SPLOM diag).\n if (!parsed[field]) {\n // Determine whether the tuple will store enumerated or ranged values.\n // Interval selections store ranges for continuous scales, and enumerations otherwise.\n // Single/multi selections store ranges for binned fields, and enumerations otherwise.\n let type = 'E';\n if (selCmpt.type === 'interval') {\n const scaleType = model.getScaleComponent(channel).get('type');\n if (hasContinuousDomain(scaleType)) {\n type = 'R';\n }\n }\n else if (fieldDef.bin) {\n type = 'R-RE';\n }\n const p = { field, channel, type };\n p.signals = Object.assign({}, signalName(p, 'data'), signalName(p, 'visual'));\n proj.items.push((parsed[field] = p));\n proj.has[channel] = parsed[field];\n }\n }\n else {\n log.warn(log.message.cannotProjectOnChannelWithoutField(channel));\n }\n }\n if (selDef.init) {\n if (scales.has(selCmpt)) {\n log.warn(log.message.NO_INIT_SCALE_BINDINGS);\n }\n else {\n const parseInit = (i) => {\n return proj.items.map(p => (i[p.channel] !== undefined ? i[p.channel] : i[p.field]));\n };\n if (isIntervalSelection(selDef)) {\n selCmpt.init = parseInit(selDef.init);\n }\n else {\n const init = isArray(selDef.init) ? selDef.init : [selDef.init];\n selCmpt.init = init.map(parseInit);\n }\n }\n }\n if (keys(timeUnits).length) {\n proj.timeUnit = new TimeUnitNode(null, timeUnits);\n }\n },\n signals: (model, selCmpt, allSignals) => {\n const name = selCmpt.name + TUPLE_FIELDS;\n const hasSignal = allSignals.filter(s => s.name === name);\n return hasSignal.length\n ? allSignals\n : allSignals.concat({\n name,\n value: selCmpt.project.items.map(proj => {\n const { signals } = proj, rest = tslib_1.__rest(proj, [\"signals\"]);\n return rest;\n })\n });\n }\n};\nexport default project;\n//# sourceMappingURL=project.js.map","import * as tslib_1 from \"tslib\";\nimport { stringValue } from 'vega-util';\nimport { STORE, TUPLE, unitName } from '.';\nimport { X, Y } from '../../channel';\nimport { warn } from '../../log';\nimport { hasContinuousDomain } from '../../scale';\nimport { keys } from '../../util';\nimport { assembleInit } from './assemble';\nimport { TUPLE_FIELDS } from './transforms/project';\nimport scales from './transforms/scales';\nexport const BRUSH = '_brush';\nexport const SCALE_TRIGGER = '_scale_trigger';\nconst interval = {\n signals: (model, selCmpt) => {\n const name = selCmpt.name;\n const fieldsSg = name + TUPLE_FIELDS;\n const hasScales = scales.has(selCmpt);\n const signals = [];\n const dataSignals = [];\n const scaleTriggers = [];\n if (selCmpt.translate && !hasScales) {\n const filterExpr = `!event.item || event.item.mark.name !== ${stringValue(name + BRUSH)}`;\n events(selCmpt, (_, evt) => {\n const filters = evt.between[0].filter || (evt.between[0].filter = []);\n if (filters.indexOf(filterExpr) < 0) {\n filters.push(filterExpr);\n }\n });\n }\n selCmpt.project.items.forEach((proj, i) => {\n const channel = proj.channel;\n if (channel !== X && channel !== Y) {\n warn('Interval selections only support x and y encoding channels.');\n return;\n }\n const init = selCmpt.init ? selCmpt.init[i] : null;\n const cs = channelSignals(model, selCmpt, proj, init);\n const dname = proj.signals.data;\n const vname = proj.signals.visual;\n const scaleName = stringValue(model.scaleName(channel));\n const scaleType = model.getScaleComponent(channel).get('type');\n const toNum = hasContinuousDomain(scaleType) ? '+' : '';\n signals.push(...cs);\n dataSignals.push(dname);\n scaleTriggers.push({\n scaleName: model.scaleName(channel),\n expr: `(!isArray(${dname}) || ` +\n `(${toNum}invert(${scaleName}, ${vname})[0] === ${toNum}${dname}[0] && ` +\n `${toNum}invert(${scaleName}, ${vname})[1] === ${toNum}${dname}[1]))`\n });\n });\n // Proxy scale reactions to ensure that an infinite loop doesn't occur\n // when an interval selection filter touches the scale.\n if (!hasScales) {\n signals.push({\n name: name + SCALE_TRIGGER,\n value: {},\n on: [\n {\n events: scaleTriggers.map(t => ({ scale: t.scaleName })),\n update: scaleTriggers.map(t => t.expr).join(' && ') + ` ? ${name + SCALE_TRIGGER} : {}`\n }\n ]\n });\n }\n // Only add an interval to the store if it has valid data extents. Data extents\n // are set to null if pixel extents are equal to account for intervals over\n // ordinal/nominal domains which, when inverted, will still produce a valid datum.\n const init = selCmpt.init;\n const update = `unit: ${unitName(model)}, fields: ${fieldsSg}, values`;\n return signals.concat(Object.assign({ name: name + TUPLE }, (init ? { init: `{${update}: ${assembleInit(init)}}` } : {}), { on: [\n {\n events: [{ signal: dataSignals.join(' || ') }],\n update: dataSignals.join(' && ') + ` ? {${update}: [${dataSignals}]} : null`\n }\n ] }));\n },\n modifyExpr: (model, selCmpt) => {\n const tpl = selCmpt.name + TUPLE;\n return tpl + ', ' + (selCmpt.resolve === 'global' ? 'true' : `{unit: ${unitName(model)}}`);\n },\n marks: (model, selCmpt, marks) => {\n const name = selCmpt.name;\n const { x, y } = selCmpt.project.has;\n const xvname = x && x.signals.visual;\n const yvname = y && y.signals.visual;\n const store = `data(${stringValue(selCmpt.name + STORE)})`;\n // Do not add a brush if we're binding to scales.\n if (scales.has(selCmpt)) {\n return marks;\n }\n const update = {\n x: x !== undefined ? { signal: `${xvname}[0]` } : { value: 0 },\n y: y !== undefined ? { signal: `${yvname}[0]` } : { value: 0 },\n x2: x !== undefined ? { signal: `${xvname}[1]` } : { field: { group: 'width' } },\n y2: y !== undefined ? { signal: `${yvname}[1]` } : { field: { group: 'height' } }\n };\n // If the selection is resolved to global, only a single interval is in\n // the store. Wrap brush mark's encodings with a production rule to test\n // this based on the `unit` property. Hide the brush mark if it corresponds\n // to a unit different from the one in the store.\n if (selCmpt.resolve === 'global') {\n for (const key of keys(update)) {\n update[key] = [\n Object.assign({ test: `${store}.length && ${store}[0].unit === ${unitName(model)}` }, update[key]),\n { value: 0 }\n ];\n }\n }\n // Two brush marks ensure that fill colors and other aesthetic choices do\n // not interefere with the core marks, but that the brushed region can still\n // be interacted with (e.g., dragging it around).\n const _a = selCmpt.mark, { fill, fillOpacity } = _a, stroke = tslib_1.__rest(_a, [\"fill\", \"fillOpacity\"]);\n const vgStroke = keys(stroke).reduce((def, k) => {\n def[k] = [\n {\n test: [x !== undefined && `${xvname}[0] !== ${xvname}[1]`, y !== undefined && `${yvname}[0] !== ${yvname}[1]`]\n .filter(t => t)\n .join(' && '),\n value: stroke[k]\n },\n { value: null }\n ];\n return def;\n }, {});\n return [\n {\n name: name + BRUSH + '_bg',\n type: 'rect',\n clip: true,\n encode: {\n enter: {\n fill: { value: fill },\n fillOpacity: { value: fillOpacity }\n },\n update: update\n }\n },\n ...marks,\n {\n name: name + BRUSH,\n type: 'rect',\n clip: true,\n encode: {\n enter: {\n fill: { value: 'transparent' }\n },\n update: Object.assign({}, update, vgStroke)\n }\n }\n ];\n }\n};\nexport default interval;\n/**\n * Returns the visual and data signals for an interval selection.\n */\nfunction channelSignals(model, selCmpt, proj, init) {\n const channel = proj.channel;\n const vname = proj.signals.visual;\n const dname = proj.signals.data;\n const hasScales = scales.has(selCmpt);\n const scaleName = stringValue(model.scaleName(channel));\n const scale = model.getScaleComponent(channel);\n const scaleType = scale ? scale.get('type') : undefined;\n const scaled = (str) => `scale(${scaleName}, ${str})`;\n const size = model.getSizeSignalRef(channel === X ? 'width' : 'height').signal;\n const coord = `${channel}(unit)`;\n const on = events(selCmpt, (def, evt) => {\n return [\n ...def,\n { events: evt.between[0], update: `[${coord}, ${coord}]` },\n { events: evt, update: `[${vname}[0], clamp(${coord}, 0, ${size})]` } // Brush End\n ];\n });\n // React to pan/zooms of continuous scales. Non-continuous scales\n // (band, point) cannot be pan/zoomed and any other changes\n // to their domains (e.g., filtering) should clear the brushes.\n on.push({\n events: { signal: selCmpt.name + SCALE_TRIGGER },\n update: hasContinuousDomain(scaleType) ? `[${scaled(`${dname}[0]`)}, ${scaled(`${dname}[1]`)}]` : `[0, 0]`\n });\n return hasScales\n ? [{ name: dname, on: [] }]\n : [\n Object.assign({ name: vname }, (init ? { init: assembleInit(init, scaled) } : { value: [] }), { on: on }),\n Object.assign({ name: dname }, (init ? { init: assembleInit(init) } : {}), { on: [\n {\n events: { signal: vname },\n update: `${vname}[0] === ${vname}[1] ? null : invert(${scaleName}, ${vname})`\n }\n ] })\n ];\n}\nfunction events(selCmpt, cb) {\n return selCmpt.events.reduce((on, evt) => {\n if (!evt.between) {\n warn(`${evt} is not an ordered event stream for interval selections`);\n return on;\n }\n return cb(on, evt);\n }, []);\n}\n//# sourceMappingURL=interval.js.map","import { stringValue } from 'vega-util';\nimport { STORE, TUPLE, unitName } from '.';\nimport { accessPathWithDatum } from '../../util';\nimport { assembleInit } from './assemble';\nimport { TUPLE_FIELDS } from './transforms/project';\nexport function singleOrMultiSignals(model, selCmpt) {\n const name = selCmpt.name;\n const fieldsSg = name + TUPLE_FIELDS;\n const proj = selCmpt.project;\n const datum = '(item().isVoronoi ? datum.datum : datum)';\n const values = proj.items\n .map(p => {\n const fieldDef = model.fieldDef(p.channel);\n // Binned fields should capture extents, for a range test against the raw field.\n return fieldDef && fieldDef.bin\n ? `[${accessPathWithDatum(model.vgField(p.channel, {}), datum)}, ` +\n `${accessPathWithDatum(model.vgField(p.channel, { binSuffix: 'end' }), datum)}]`\n : `${accessPathWithDatum(p.field, datum)}`;\n })\n .join(', ');\n // Only add a discrete selection to the store if a datum is present _and_\n // the interaction isn't occurring on a group mark. This guards against\n // polluting interactive state with invalid values in faceted displays\n // as the group marks are also data-driven. We force the update to account\n // for constant null states but varying toggles (e.g., shift-click in\n // whitespace followed by a click in whitespace; the store should only\n // be cleared on the second click).\n const update = `unit: ${unitName(model)}, fields: ${fieldsSg}, values`;\n const signals = [\n {\n name: name + TUPLE,\n on: [\n {\n events: selCmpt.events,\n update: `datum && item().mark.marktype !== 'group' ? {${update}: [${values}]} : null`,\n force: true\n }\n ]\n }\n ];\n if (selCmpt.init) {\n const insert = selCmpt.init.map((i) => {\n const str = assembleInit(i);\n return `{${update}: ${str}}`;\n });\n signals.push({\n name: `${name}_init`,\n init: `modify(${stringValue(selCmpt.name + STORE)}, [${insert}])`\n });\n }\n return signals;\n}\nconst multi = {\n signals: singleOrMultiSignals,\n modifyExpr: (model, selCmpt) => {\n const tpl = selCmpt.name + TUPLE;\n return tpl + ', ' + (selCmpt.resolve === 'global' ? 'null' : `{unit: ${unitName(model)}}`);\n }\n};\nexport default multi;\n//# sourceMappingURL=multi.js.map","import { TUPLE, unitName } from '.';\nimport { singleOrMultiSignals } from './multi';\nconst single = {\n signals: singleOrMultiSignals,\n modifyExpr: (model, selCmpt) => {\n const tpl = selCmpt.name + TUPLE;\n return tpl + ', ' + (selCmpt.resolve === 'global' ? 'true' : `{unit: ${unitName(model)}}`);\n }\n};\nexport default single;\n//# sourceMappingURL=single.js.map","import { stringValue } from 'vega-util';\nimport { FACET_CHANNELS } from '../../channel';\nimport { SELECTION_ID } from '../../selection';\nimport { accessPathWithDatum } from '../../util';\nimport { isFacetModel } from '../model';\nimport interval from './interval';\nimport multi from './multi';\nimport single from './single';\nexport const STORE = '_store';\nexport const TUPLE = '_tuple';\nexport const MODIFY = '_modify';\nexport const SELECTION_DOMAIN = '_selection_domain_';\nexport const VL_SELECTION_RESOLVE = 'vlSelectionResolve';\nconst compilers = { single, multi, interval };\nexport function forEachSelection(model, cb) {\n const selections = model.component.selection;\n for (const name in selections) {\n if (selections.hasOwnProperty(name)) {\n const sel = selections[name];\n cb(sel, compilers[sel.type]);\n }\n }\n}\nfunction getFacetModel(model) {\n let parent = model.parent;\n while (parent) {\n if (isFacetModel(parent)) {\n break;\n }\n parent = parent.parent;\n }\n return parent;\n}\nexport function unitName(model) {\n let name = stringValue(model.name);\n const facetModel = getFacetModel(model);\n if (facetModel) {\n const { facet } = facetModel;\n for (const channel of FACET_CHANNELS) {\n if (facet[channel]) {\n name += ` + '__facet_${channel}_' + (${accessPathWithDatum(facetModel.vgField(channel), 'facet')})`;\n }\n }\n }\n return name;\n}\nexport function requiresSelectionId(model) {\n let identifier = false;\n forEachSelection(model, selCmpt => {\n identifier = identifier || selCmpt.project.items.some(proj => proj.field === SELECTION_ID);\n });\n return identifier;\n}\nexport function isRawSelectionDomain(domainRaw) {\n return domainRaw.signal.indexOf(SELECTION_DOMAIN) >= 0;\n}\n//# sourceMappingURL=index.js.map","import * as log from '../../../log';\nimport { isPathMark } from '../../../mark';\nimport { tooltip } from '../../mark/mixins';\nconst VORONOI = 'voronoi';\nconst nearest = {\n has: selCmpt => {\n return selCmpt.type !== 'interval' && selCmpt.nearest;\n },\n marks: (model, selCmpt, marks) => {\n const { x, y } = selCmpt.project.has;\n const markType = model.mark;\n if (isPathMark(markType)) {\n log.warn(log.message.nearestNotSupportForContinuous(markType));\n return marks;\n }\n const cellDef = {\n name: model.getName(VORONOI),\n type: 'path',\n from: { data: model.getName('marks') },\n encode: {\n update: Object.assign({ fill: { value: 'transparent' }, strokeWidth: { value: 0.35 }, stroke: { value: 'transparent' }, isVoronoi: { value: true } }, tooltip(model, { reactiveGeom: true }))\n },\n transform: [\n {\n type: 'voronoi',\n x: { expr: x || (!x && !y) ? 'datum.datum.x || 0' : '0' },\n y: { expr: y || (!x && !y) ? 'datum.datum.y || 0' : '0' },\n size: [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')]\n }\n ]\n };\n let index = 0;\n let exists = false;\n marks.forEach((mark, i) => {\n const name = mark.name || '';\n if (name === model.component.mark[0].name) {\n index = i;\n }\n else if (name.indexOf(VORONOI) >= 0) {\n exists = true;\n }\n });\n if (!exists) {\n marks.splice(index + 1, 0, cellDef);\n }\n return marks;\n }\n};\nexport default nearest;\n//# sourceMappingURL=nearest.js.map","import { TUPLE } from '..';\nimport { accessPathWithDatum, varName } from '../../../util';\nimport { assembleInit } from '../assemble';\nimport nearest from './nearest';\nimport { TUPLE_FIELDS } from './project';\nconst inputBindings = {\n has: selCmpt => {\n return selCmpt.type === 'single' && selCmpt.resolve === 'global' && selCmpt.bind && selCmpt.bind !== 'scales';\n },\n topLevelSignals: (model, selCmpt, signals) => {\n const name = selCmpt.name;\n const proj = selCmpt.project;\n const bind = selCmpt.bind;\n const init = selCmpt.init && selCmpt.init[0]; // Can only exist on single selections (one initial value).\n const datum = nearest.has(selCmpt) ? '(item().isVoronoi ? datum.datum : datum)' : 'datum';\n proj.items.forEach((p, i) => {\n const sgname = varName(`${name}_${p.field}`);\n const hasSignal = signals.filter(s => s.name === sgname);\n if (!hasSignal.length) {\n signals.unshift(Object.assign({ name: sgname }, (init ? { init: assembleInit(init[i]) } : { value: null }), { on: [\n {\n events: selCmpt.events,\n update: `datum && item().mark.marktype !== 'group' ? ${accessPathWithDatum(p.field, datum)} : null`\n }\n ], bind: bind[p.field] || bind[p.channel] || bind }));\n }\n });\n return signals;\n },\n signals: (model, selCmpt, signals) => {\n const name = selCmpt.name;\n const proj = selCmpt.project;\n const signal = signals.filter(s => s.name === name + TUPLE)[0];\n const fields = name + TUPLE_FIELDS;\n const values = proj.items.map(p => varName(`${name}_${p.field}`));\n const valid = values.map(v => `${v} !== null`).join(' && ');\n if (values.length) {\n signal.update = `${valid} ? {fields: ${fields}, values: [${values.join(', ')}]} : null`;\n }\n delete signal.value;\n delete signal.on;\n return signals;\n }\n};\nexport default inputBindings;\n//# sourceMappingURL=inputs.js.map","import { TUPLE, unitName } from '..';\nexport const TOGGLE = '_toggle';\nconst toggle = {\n has: selCmpt => {\n return selCmpt.type === 'multi' && selCmpt.toggle;\n },\n signals: (model, selCmpt, signals) => {\n return signals.concat({\n name: selCmpt.name + TOGGLE,\n value: false,\n on: [{ events: selCmpt.events, update: selCmpt.toggle }]\n });\n },\n modifyExpr: (model, selCmpt) => {\n const tpl = selCmpt.name + TUPLE;\n const signal = selCmpt.name + TOGGLE;\n return (`${signal} ? null : ${tpl}, ` +\n (selCmpt.resolve === 'global' ? `${signal} ? null : true, ` : `${signal} ? null : {unit: ${unitName(model)}}, `) +\n `${signal} ? ${tpl} : null`);\n }\n};\nexport default toggle;\n//# sourceMappingURL=toggle.js.map","import { selector as parseSelector } from 'vega-event-selector';\nimport { TUPLE } from '..';\nimport { varName } from '../../../util';\nimport inputBindings from './inputs';\nimport toggle, { TOGGLE } from './toggle';\nconst clear = {\n has: selCmpt => {\n return selCmpt.clear !== false;\n },\n parse: (model, selDef, selCmpt) => {\n if (selDef.clear) {\n selCmpt.clear = parseSelector(selDef.clear, 'scope');\n }\n },\n topLevelSignals: (model, selCmpt, signals) => {\n if (inputBindings.has(selCmpt)) {\n selCmpt.project.items.forEach(proj => {\n const idx = signals.findIndex(n => n.name === varName(`${selCmpt.name}_${proj.field}`));\n if (idx !== -1) {\n signals[idx].on.push({ events: selCmpt.clear, update: 'null' });\n }\n });\n }\n return signals;\n },\n signals: (model, selCmpt, signals) => {\n function addClear(idx, update) {\n if (idx !== -1 && signals[idx].on) {\n signals[idx].on.push({ events: selCmpt.clear, update });\n }\n }\n // Be as minimalist as possible when adding clear triggers to minimize dataflow execution.\n if (selCmpt.type === 'interval') {\n selCmpt.project.items.forEach(proj => {\n const vIdx = signals.findIndex(n => n.name === proj.signals.visual);\n addClear(vIdx, '[0, 0]');\n if (vIdx === -1) {\n const dIdx = signals.findIndex(n => n.name === proj.signals.data);\n addClear(dIdx, 'null');\n }\n });\n }\n else {\n let tIdx = signals.findIndex(n => n.name === selCmpt.name + TUPLE);\n addClear(tIdx, 'null');\n if (toggle.has(selCmpt)) {\n tIdx = signals.findIndex(n => n.name === selCmpt.name + TOGGLE);\n addClear(tIdx, 'false');\n }\n }\n return signals;\n }\n};\nexport default clear;\n//# sourceMappingURL=clear.js.map","import { selector as parseSelector } from 'vega-event-selector';\nimport { X, Y } from '../../../channel';\nimport { BRUSH as INTERVAL_BRUSH } from '../interval';\nimport scalesCompiler, { domain } from './scales';\nconst ANCHOR = '_translate_anchor';\nconst DELTA = '_translate_delta';\nconst translate = {\n has: selCmpt => {\n return selCmpt.type === 'interval' && selCmpt.translate;\n },\n signals: (model, selCmpt, signals) => {\n const name = selCmpt.name;\n const hasScales = scalesCompiler.has(selCmpt);\n const anchor = name + ANCHOR;\n const { x, y } = selCmpt.project.has;\n let events = parseSelector(selCmpt.translate, 'scope');\n if (!hasScales) {\n events = events.map(e => ((e.between[0].markname = name + INTERVAL_BRUSH), e));\n }\n signals.push({\n name: anchor,\n value: {},\n on: [\n {\n events: events.map(e => e.between[0]),\n update: '{x: x(unit), y: y(unit)' +\n (x !== undefined ? ', extent_x: ' + (hasScales ? domain(model, X) : `slice(${x.signals.visual})`) : '') +\n (y !== undefined ? ', extent_y: ' + (hasScales ? domain(model, Y) : `slice(${y.signals.visual})`) : '') +\n '}'\n }\n ]\n }, {\n name: name + DELTA,\n value: {},\n on: [\n {\n events: events,\n update: `{x: ${anchor}.x - x(unit), y: ${anchor}.y - y(unit)}`\n }\n ]\n });\n if (x !== undefined) {\n onDelta(model, selCmpt, x, 'width', signals);\n }\n if (y !== undefined) {\n onDelta(model, selCmpt, y, 'height', signals);\n }\n return signals;\n }\n};\nexport default translate;\nfunction onDelta(model, selCmpt, proj, size, signals) {\n const name = selCmpt.name;\n const anchor = name + ANCHOR;\n const delta = name + DELTA;\n const channel = proj.channel;\n const hasScales = scalesCompiler.has(selCmpt);\n const signal = signals.filter(s => s.name === proj.signals[hasScales ? 'data' : 'visual'])[0];\n const sizeSg = model.getSizeSignalRef(size).signal;\n const scaleCmpt = model.getScaleComponent(channel);\n const scaleType = scaleCmpt.get('type');\n const sign = hasScales && channel === X ? '-' : ''; // Invert delta when panning x-scales.\n const extent = `${anchor}.extent_${channel}`;\n const offset = `${sign}${delta}.${channel} / ` + (hasScales ? `${sizeSg}` : `span(${extent})`);\n const panFn = !hasScales\n ? 'panLinear'\n : scaleType === 'log'\n ? 'panLog'\n : scaleType === 'pow'\n ? 'panPow'\n : 'panLinear';\n const update = `${panFn}(${extent}, ${offset}` +\n (hasScales && scaleType === 'pow' ? `, ${scaleCmpt.get('exponent') || 1}` : '') +\n ')';\n signal.on.push({\n events: { signal: delta },\n update: hasScales ? update : `clampRange(${update}, 0, ${sizeSg})`\n });\n}\n//# sourceMappingURL=translate.js.map","import { selector as parseSelector } from 'vega-event-selector';\nimport { stringValue } from 'vega-util';\nimport { X, Y } from '../../../channel';\nimport { BRUSH as INTERVAL_BRUSH } from '../interval';\nimport { default as scalesCompiler, domain } from './scales';\nconst ANCHOR = '_zoom_anchor';\nconst DELTA = '_zoom_delta';\nconst zoom = {\n has: selCmpt => {\n return selCmpt.type === 'interval' && selCmpt.zoom;\n },\n signals: (model, selCmpt, signals) => {\n const name = selCmpt.name;\n const hasScales = scalesCompiler.has(selCmpt);\n const delta = name + DELTA;\n const { x, y } = selCmpt.project.has;\n const sx = stringValue(model.scaleName(X));\n const sy = stringValue(model.scaleName(Y));\n let events = parseSelector(selCmpt.zoom, 'scope');\n if (!hasScales) {\n events = events.map(e => ((e.markname = name + INTERVAL_BRUSH), e));\n }\n signals.push({\n name: name + ANCHOR,\n on: [\n {\n events: events,\n update: !hasScales\n ? `{x: x(unit), y: y(unit)}`\n : '{' +\n [sx ? `x: invert(${sx}, x(unit))` : '', sy ? `y: invert(${sy}, y(unit))` : '']\n .filter(expr => !!expr)\n .join(', ') +\n '}'\n }\n ]\n }, {\n name: delta,\n on: [\n {\n events: events,\n force: true,\n update: 'pow(1.001, event.deltaY * pow(16, event.deltaMode))'\n }\n ]\n });\n if (x !== undefined) {\n onDelta(model, selCmpt, x, 'width', signals);\n }\n if (y !== undefined) {\n onDelta(model, selCmpt, y, 'height', signals);\n }\n return signals;\n }\n};\nexport default zoom;\nfunction onDelta(model, selCmpt, proj, size, signals) {\n const name = selCmpt.name;\n const channel = proj.channel;\n const hasScales = scalesCompiler.has(selCmpt);\n const signal = signals.filter(s => s.name === proj.signals[hasScales ? 'data' : 'visual'])[0];\n const sizeSg = model.getSizeSignalRef(size).signal;\n const scaleCmpt = model.getScaleComponent(channel);\n const scaleType = scaleCmpt.get('type');\n const base = hasScales ? domain(model, channel) : signal.name;\n const delta = name + DELTA;\n const anchor = `${name}${ANCHOR}.${channel}`;\n const zoomFn = !hasScales\n ? 'zoomLinear'\n : scaleType === 'log'\n ? 'zoomLog'\n : scaleType === 'pow'\n ? 'zoomPow'\n : 'zoomLinear';\n const update = `${zoomFn}(${base}, ${anchor}, ${delta}` +\n (hasScales && scaleType === 'pow' ? `, ${scaleCmpt.get('exponent') || 1}` : '') +\n ')';\n signal.on.push({\n events: { signal: delta },\n update: hasScales ? update : `clampRange(${update}, 0, ${sizeSg})`\n });\n}\n//# sourceMappingURL=zoom.js.map","import clear from './clear';\nimport inputs from './inputs';\nimport nearest from './nearest';\nimport project from './project';\nimport scales from './scales';\nimport toggle from './toggle';\nimport translate from './translate';\nimport zoom from './zoom';\nconst compilers = [project, toggle, scales, translate, zoom, inputs, nearest, clear];\nexport function forEachTransform(selCmpt, cb) {\n for (const t of compilers) {\n if (t.has(selCmpt)) {\n cb(t);\n }\n }\n}\n//# sourceMappingURL=transforms.js.map","import { selector as parseSelector } from 'vega-event-selector';\nimport { identity, isArray, stringValue } from 'vega-util';\nimport { forEachSelection, MODIFY, SELECTION_DOMAIN, STORE, VL_SELECTION_RESOLVE } from '.';\nimport { dateTimeExpr, isDateTime } from '../../datetime';\nimport { warn } from '../../log';\nimport { accessPathWithDatum, keys, logicalExpr, varName } from '../../util';\nimport { isUnitModel } from '../model';\nimport { forEachTransform } from './transforms/transforms';\nexport function assembleInit(init, wrap = identity) {\n if (isArray(init)) {\n const str = init.map(v => assembleInit(v, wrap)).join(', ');\n return `[${str}]`;\n }\n else if (isDateTime(init)) {\n return wrap(dateTimeExpr(init));\n }\n return wrap(JSON.stringify(init));\n}\nexport function assembleUnitSelectionSignals(model, signals) {\n forEachSelection(model, (selCmpt, selCompiler) => {\n const name = selCmpt.name;\n let modifyExpr = selCompiler.modifyExpr(model, selCmpt);\n signals.push(...selCompiler.signals(model, selCmpt));\n forEachTransform(selCmpt, txCompiler => {\n if (txCompiler.signals) {\n signals = txCompiler.signals(model, selCmpt, signals);\n }\n if (txCompiler.modifyExpr) {\n modifyExpr = txCompiler.modifyExpr(model, selCmpt, modifyExpr);\n }\n });\n signals.push({\n name: name + MODIFY,\n update: `modify(${stringValue(selCmpt.name + STORE)}, ${modifyExpr})`\n });\n });\n return signals;\n}\nexport function assembleFacetSignals(model, signals) {\n if (model.component.selection && keys(model.component.selection).length) {\n const name = stringValue(model.getName('cell'));\n signals.unshift({\n name: 'facet',\n value: {},\n on: [\n {\n events: parseSelector('mousemove', 'scope'),\n update: `isTuple(facet) ? facet : group(${name}).datum`\n }\n ]\n });\n }\n return signals;\n}\nexport function assembleTopLevelSignals(model, signals) {\n let hasSelections = false;\n forEachSelection(model, (selCmpt, selCompiler) => {\n const name = selCmpt.name;\n const store = stringValue(name + STORE);\n const hasSg = signals.filter(s => s.name === name);\n if (!hasSg.length) {\n signals.push({\n name: selCmpt.name,\n update: `${VL_SELECTION_RESOLVE}(${store}` +\n (selCmpt.resolve === 'global' ? ')' : `, ${stringValue(selCmpt.resolve)})`)\n });\n }\n hasSelections = true;\n if (selCompiler.topLevelSignals) {\n signals = selCompiler.topLevelSignals(model, selCmpt, signals);\n }\n forEachTransform(selCmpt, txCompiler => {\n if (txCompiler.topLevelSignals) {\n signals = txCompiler.topLevelSignals(model, selCmpt, signals);\n }\n });\n });\n if (hasSelections) {\n const hasUnit = signals.filter(s => s.name === 'unit');\n if (!hasUnit.length) {\n signals.unshift({\n name: 'unit',\n value: {},\n on: [{ events: 'mousemove', update: 'isTuple(group()) ? group() : unit' }]\n });\n }\n }\n return signals;\n}\nexport function assembleUnitSelectionData(model, data) {\n forEachSelection(model, selCmpt => {\n const contains = data.filter(d => d.name === selCmpt.name + STORE);\n if (!contains.length) {\n data.push({ name: selCmpt.name + STORE });\n }\n });\n return data;\n}\nexport function assembleUnitSelectionMarks(model, marks) {\n forEachSelection(model, (selCmpt, selCompiler) => {\n marks = selCompiler.marks ? selCompiler.marks(model, selCmpt, marks) : marks;\n forEachTransform(selCmpt, txCompiler => {\n if (txCompiler.marks) {\n marks = txCompiler.marks(model, selCmpt, marks);\n }\n });\n });\n return marks;\n}\nexport function assembleLayerSelectionMarks(model, marks) {\n for (const child of model.children) {\n if (isUnitModel(child)) {\n marks = assembleUnitSelectionMarks(child, marks);\n }\n }\n return marks;\n}\nexport function assembleSelectionPredicate(model, selections, dfnode) {\n const stores = [];\n function expr(name) {\n const vname = varName(name);\n const selCmpt = model.getSelectionComponent(vname, name);\n const store = stringValue(vname + STORE);\n if (selCmpt.project.timeUnit) {\n const child = dfnode || model.component.data.raw;\n const tunode = selCmpt.project.timeUnit.clone();\n if (child.parent) {\n tunode.insertAsParentOf(child);\n }\n else {\n child.parent = tunode;\n }\n }\n if (selCmpt.empty !== 'none') {\n stores.push(store);\n }\n return (`vlSelectionTest(${store}, datum` + (selCmpt.resolve === 'global' ? ')' : `, ${stringValue(selCmpt.resolve)})`));\n }\n const predicateStr = logicalExpr(selections, expr);\n return ((stores.length ? '!(' + stores.map(s => `length(data(${s}))`).join(' || ') + ') || ' : '') + `(${predicateStr})`);\n}\n// Selections are parsed _after_ scales. If a scale domain is set to\n// use a selection, the SELECTION_DOMAIN constant is used as the\n// domainRaw.signal during scale.parse and then replaced with the necessary\n// selection expression function during scale.assemble. To not pollute the\n// type signatures to account for this setup, the selection domain definition\n// is coerced to a string and appended to SELECTION_DOMAIN.\nexport function assembleSelectionScaleDomain(model, domainRaw) {\n const selDomain = JSON.parse(domainRaw.signal.replace(SELECTION_DOMAIN, ''));\n const name = varName(selDomain.selection);\n const encoding = selDomain.encoding;\n let field = selDomain.field;\n let selCmpt = model.component.selection && model.component.selection[name];\n if (selCmpt) {\n warn('Use \"bind\": \"scales\" to setup a binding for scales and selections within the same view.');\n }\n else {\n selCmpt = model.getSelectionComponent(name, selDomain.selection);\n if (!encoding && !field) {\n field = selCmpt.project.items[0].field;\n if (selCmpt.project.items.length > 1) {\n warn('A \"field\" or \"encoding\" must be specified when using a selection as a scale domain. ' +\n `Using \"field\": ${stringValue(field)}.`);\n }\n }\n else if (encoding && !field) {\n const encodings = selCmpt.project.items.filter(p => p.channel === encoding);\n if (!encodings.length || encodings.length > 1) {\n field = selCmpt.project.items[0].field;\n warn((!encodings.length ? 'No ' : 'Multiple ') +\n `matching ${stringValue(encoding)} encoding found for selection ${stringValue(selDomain.selection)}. ` +\n `Using \"field\": ${stringValue(field)}.`);\n }\n else {\n field = encodings[0].field;\n }\n }\n return { signal: accessPathWithDatum(field, name) };\n }\n return { signal: 'null' };\n}\n//# sourceMappingURL=assemble.js.map","import { isString } from 'vega-util';\nimport { fieldFilterExpression, isSelectionPredicate } from '../predicate';\nimport { logicalExpr } from '../util';\nimport { assembleSelectionPredicate } from './selection/assemble';\n/**\n * Converts a predicate into an expression.\n */\n// model is only used for selection filters.\nexport function expression(model, filterOp, node) {\n return logicalExpr(filterOp, (predicate) => {\n if (isString(predicate)) {\n return predicate;\n }\n else if (isSelectionPredicate(predicate)) {\n return assembleSelectionPredicate(model, predicate.selection, node);\n }\n else {\n // Filter Object\n return fieldFilterExpression(predicate);\n }\n });\n}\n//# sourceMappingURL=predicate.js.map","import { isFunction, isString, stringValue } from 'vega-util';\nimport { isCountingAggregateOp } from '../../aggregate';\nimport { isBinned, isBinning } from '../../bin';\nimport { getMainRangeChannel, X, X2, Y, Y2 } from '../../channel';\nimport { binRequiresRange, format, hasConditionalFieldDef, isFieldDef, isTypedFieldDef, isValueDef, title, vgField } from '../../channeldef';\nimport { forEach } from '../../encoding';\nimport * as log from '../../log';\nimport { isPathMark } from '../../mark';\nimport { hasDiscreteDomain, isContinuousToContinuous, ScaleType } from '../../scale';\nimport { QUANTITATIVE } from '../../type';\nimport { contains, getFirstDefined } from '../../util';\nimport { formatSignalRef, getMarkConfig } from '../common';\nfunction midPointWithPositionInvalidTest(params) {\n const { channel, channelDef, mark, scale } = params;\n const ref = midPoint(params);\n // Wrap to check if the positional value is invalid, if so, plot the point on the min value\n if (\n // Only this for field def without counting aggregate (as count wouldn't be null)\n isFieldDef(channelDef) &&\n !isCountingAggregateOp(channelDef.aggregate) &&\n // and only for continuous scale without zero (otherwise, null / invalid will be interpreted as zero, which doesn't cause layout problem)\n scale &&\n isContinuousToContinuous(scale.get('type')) &&\n scale.get('zero') === false) {\n return wrapPositionInvalidTest({\n fieldDef: channelDef,\n channel,\n mark,\n ref\n });\n }\n return ref;\n}\nfunction wrapPositionInvalidTest({ fieldDef, channel, mark, ref }) {\n if (!isPathMark(mark)) {\n // Only do this for non-path mark (as path marks will already use \"defined\" to skip points)\n return [fieldInvalidTestValueRef(fieldDef, channel), ref];\n }\n return ref;\n}\nexport function fieldInvalidTestValueRef(fieldDef, channel) {\n const test = fieldInvalidPredicate(fieldDef, true);\n const mainChannel = getMainRangeChannel(channel);\n const zeroValueRef = mainChannel === 'x' ? { value: 0 } : { field: { group: 'height' } };\n return Object.assign({ test }, zeroValueRef);\n}\nexport function fieldInvalidPredicate(field, invalid = true) {\n field = isString(field) ? field : vgField(field, { expr: 'datum' });\n const op = invalid ? '||' : '&&';\n const eq = invalid ? '===' : '!==';\n return `${field} ${eq} null ${op} ${invalid ? '' : '!'}isNaN(${field})`;\n}\n// TODO: we need to find a way to refactor these so that scaleName is a part of scale\n// but that's complicated. For now, this is a huge step moving forward.\n/**\n * @return Vega ValueRef for normal x- or y-position without projection\n */\nexport function position(params) {\n const { channel, channelDef, scaleName, stack, offset } = params;\n if (isFieldDef(channelDef) && stack && channel === stack.fieldChannel) {\n // x or y use stack_end so that stacked line's point mark use stack_end too.\n return fieldRef(channelDef, scaleName, { suffix: 'end' }, { offset });\n }\n return midPointWithPositionInvalidTest(params);\n}\n/**\n * @return Vega ValueRef for normal x2- or y2-position without projection\n */\nexport function position2({ channel, channelDef, channel2Def, scaleName, scale, stack, mark, offset, defaultRef }) {\n if (isFieldDef(channelDef) &&\n stack &&\n // If fieldChannel is X and channel is X2 (or Y and Y2)\n channel.charAt(0) === stack.fieldChannel.charAt(0)) {\n return fieldRef(channelDef, scaleName, { suffix: 'start' }, { offset });\n }\n return midPointWithPositionInvalidTest({\n channel,\n channelDef: channel2Def,\n scaleName,\n scale,\n stack,\n mark,\n offset,\n defaultRef\n });\n}\nexport function getOffset(channel, markDef) {\n const offsetChannel = (channel + 'Offset'); // Need to cast as the type can't be inferred automatically\n // TODO: in the future read from encoding channel too\n const markDefOffsetValue = markDef[offsetChannel];\n if (markDefOffsetValue) {\n return markDefOffsetValue;\n }\n return undefined;\n}\n/**\n * Value Ref for binned fields\n */\nexport function bin({ channel, fieldDef, scaleName, mark, side, offset }) {\n const binSuffix = side === 'start' ? undefined : 'end';\n const ref = fieldRef(fieldDef, scaleName, { binSuffix }, offset ? { offset } : {});\n return wrapPositionInvalidTest({\n fieldDef,\n channel,\n mark,\n ref\n });\n}\nexport function fieldRef(fieldDef, scaleName, opt, mixins) {\n const ref = Object.assign({}, (scaleName ? { scale: scaleName } : {}), { field: vgField(fieldDef, opt) });\n if (mixins) {\n const { offset, band } = mixins;\n return Object.assign({}, ref, (offset ? { offset } : {}), (band ? { band } : {}));\n }\n return ref;\n}\nexport function bandRef(scaleName, band = true) {\n return {\n scale: scaleName,\n band: band\n };\n}\n/**\n * Signal that returns the middle of a bin from start and end field. Should only be used with x and y.\n */\nfunction binMidSignal({ scaleName, fieldDef, fieldDef2, offset }) {\n const start = vgField(fieldDef, { expr: 'datum' });\n const end = fieldDef2 !== undefined\n ? vgField(fieldDef2, { expr: 'datum' })\n : vgField(fieldDef, { binSuffix: 'end', expr: 'datum' });\n return Object.assign({ signal: `scale(\"${scaleName}\", (${start} + ${end}) / 2)` }, (offset ? { offset } : {}));\n}\n/**\n * @returns {VgValueRef} Value Ref for xc / yc or mid point for other channels.\n */\nexport function midPoint({ channel, channelDef, channel2Def, scaleName, scale, stack, offset, defaultRef }) {\n // TODO: datum support\n if (channelDef) {\n /* istanbul ignore else */\n if (isFieldDef(channelDef)) {\n if (isTypedFieldDef(channelDef)) {\n if (isBinning(channelDef.bin)) {\n // Use middle only for x an y to place marks in the center between start and end of the bin range.\n // We do not use the mid point for other channels (e.g. size) so that properties of legends and marks match.\n if (contains([X, Y], channel) && channelDef.type === QUANTITATIVE) {\n if (stack && stack.impute) {\n // For stack, we computed bin_mid so we can impute.\n return fieldRef(channelDef, scaleName, { binSuffix: 'mid' }, { offset });\n }\n // For non-stack, we can just calculate bin mid on the fly using signal.\n return binMidSignal({ scaleName, fieldDef: channelDef, offset });\n }\n return fieldRef(channelDef, scaleName, binRequiresRange(channelDef, channel) ? { binSuffix: 'range' } : {}, {\n offset\n });\n }\n else if (isBinned(channelDef.bin)) {\n if (isFieldDef(channel2Def)) {\n return binMidSignal({ scaleName, fieldDef: channelDef, fieldDef2: channel2Def, offset });\n }\n else {\n const channel2 = channel === X ? X2 : Y2;\n log.warn(log.message.channelRequiredForBinned(channel2));\n }\n }\n }\n if (scale) {\n const scaleType = scale.get('type');\n if (hasDiscreteDomain(scaleType)) {\n if (scaleType === 'band') {\n // For band, to get mid point, need to offset by half of the band\n return fieldRef(channelDef, scaleName, { binSuffix: 'range' }, { band: 0.5, offset });\n }\n return fieldRef(channelDef, scaleName, { binSuffix: 'range' }, { offset });\n }\n }\n return fieldRef(channelDef, scaleName, {}, { offset }); // no need for bin suffix\n }\n else if (isValueDef(channelDef)) {\n const value = channelDef.value;\n const offsetMixins = offset ? { offset } : {};\n if (contains(['x', 'x2'], channel) && value === 'width') {\n return Object.assign({ field: { group: 'width' } }, offsetMixins);\n }\n else if (contains(['y', 'y2'], channel) && value === 'height') {\n return Object.assign({ field: { group: 'height' } }, offsetMixins);\n }\n return Object.assign({ value }, offsetMixins);\n }\n // If channelDef is neither field def or value def, it's a condition-only def.\n // In such case, we will use default ref.\n }\n return isFunction(defaultRef) ? defaultRef() : defaultRef;\n}\nexport function tooltipForEncoding(encoding, config, { reactiveGeom }) {\n const keyValues = [];\n const usedKey = {};\n function add(fieldDef, channel) {\n const mainChannel = getMainRangeChannel(channel);\n if (channel !== mainChannel) {\n fieldDef = Object.assign({}, fieldDef, { type: encoding[mainChannel].type });\n }\n const key = title(fieldDef, config, { allowDisabling: false });\n const value = text(fieldDef, config, reactiveGeom ? 'datum.datum' : 'datum').signal;\n if (!usedKey[key]) {\n keyValues.push(`${stringValue(key)}: ${value}`);\n }\n usedKey[key] = true;\n }\n forEach(encoding, (channelDef, channel) => {\n if (isFieldDef(channelDef)) {\n add(channelDef, channel);\n }\n else if (hasConditionalFieldDef(channelDef)) {\n add(channelDef.condition, channel);\n }\n });\n return keyValues.length ? { signal: `{${keyValues.join(', ')}}` } : undefined;\n}\nexport function text(channelDef, config, expr = 'datum') {\n // text\n if (channelDef) {\n if (isValueDef(channelDef)) {\n return { value: channelDef.value };\n }\n if (isTypedFieldDef(channelDef)) {\n return formatSignalRef(channelDef, format(channelDef), expr, config);\n }\n }\n return undefined;\n}\nexport function mid(sizeRef) {\n return Object.assign({}, sizeRef, { mult: 0.5 });\n}\nexport function positionDefault({ markDef, config, defaultRef, channel, scaleName, scale, mark, checkBarAreaWithoutZero: checkBarAreaWithZero }) {\n return () => {\n const mainChannel = getMainRangeChannel(channel);\n const definedValueOrConfig = getFirstDefined(markDef[channel], getMarkConfig(channel, markDef, config));\n if (definedValueOrConfig !== undefined) {\n return { value: definedValueOrConfig };\n }\n if (isString(defaultRef)) {\n if (scaleName) {\n const scaleType = scale.get('type');\n if (contains([ScaleType.LOG, ScaleType.TIME, ScaleType.UTC], scaleType)) {\n // Log scales cannot have zero.\n // Zero in time scale is arbitrary, and does not affect ratio.\n // (Time is an interval level of measurement, not ratio).\n // See https://en.wikipedia.org/wiki/Level_of_measurement for more info.\n if (checkBarAreaWithZero && (mark === 'bar' || mark === 'area')) {\n log.warn(log.message.nonZeroScaleUsedWithLengthMark(mark, mainChannel, { scaleType }));\n }\n }\n else {\n if (scale.domainDefinitelyIncludesZero) {\n return {\n scale: scaleName,\n value: 0\n };\n }\n if (checkBarAreaWithZero && (mark === 'bar' || mark === 'area')) {\n log.warn(log.message.nonZeroScaleUsedWithLengthMark(mark, mainChannel, { zeroFalse: scale.explicit.zero === false }));\n }\n }\n }\n if (defaultRef === 'zeroOrMin') {\n return mainChannel === 'x' ? { value: 0 } : { field: { group: 'height' } };\n }\n else {\n // zeroOrMax\n return mainChannel === 'x' ? { field: { group: 'width' } } : { value: 0 };\n }\n }\n return defaultRef;\n };\n}\n//# sourceMappingURL=valueref.js.map","import { array, isArray, isObject, isString } from 'vega-util';\nimport { isBinned, isBinning } from '../../bin';\nimport { SCALE_CHANNELS, X, X2, Y2 } from '../../channel';\nimport { getTypedFieldDef, isConditionalSelection, isFieldDef, isValueDef } from '../../channeldef';\nimport * as log from '../../log';\nimport { isPathMark } from '../../mark';\nimport { hasContinuousDomain } from '../../scale';\nimport { contains, getFirstDefined, keys } from '../../util';\nimport { VG_MARK_CONFIGS } from '../../vega.schema';\nimport { getMarkConfig } from '../common';\nimport { expression } from '../predicate';\nimport { assembleSelectionPredicate } from '../selection/assemble';\nimport * as ref from './valueref';\nimport { fieldInvalidPredicate } from './valueref';\nfunction isVisible(c) {\n return c !== 'transparent' && c !== null && c !== undefined;\n}\nexport function color(model) {\n const { markDef, encoding, config } = model;\n const { filled, type: markType } = markDef;\n const configValue = {\n fill: getMarkConfig('fill', markDef, config),\n stroke: getMarkConfig('stroke', markDef, config),\n color: getMarkConfig('color', markDef, config)\n };\n const transparentIfNeeded = contains(['bar', 'point', 'circle', 'square', 'geoshape'], markType)\n ? 'transparent'\n : undefined;\n const defaultFill = getFirstDefined(markDef.fill, configValue.fill, \n // If there is no fill, always fill symbols, bar, geoshape\n // with transparent fills https://github.com/vega/vega-lite/issues/1316\n transparentIfNeeded);\n const defaultStroke = getFirstDefined(markDef.stroke, configValue.stroke);\n const colorVgChannel = filled ? 'fill' : 'stroke';\n const fillStrokeMarkDefAndConfig = Object.assign({}, (defaultFill ? { fill: { value: defaultFill } } : {}), (defaultStroke ? { stroke: { value: defaultStroke } } : {}));\n if (encoding.fill || encoding.stroke) {\n // ignore encoding.color, markDef.color, config.color\n if (markDef.color) {\n // warn for markDef.color (no need to warn encoding.color as it will be dropped in normalized already)\n log.warn(log.message.droppingColor('property', { fill: 'fill' in encoding, stroke: 'stroke' in encoding }));\n }\n return Object.assign({}, nonPosition('fill', model, { defaultValue: getFirstDefined(defaultFill, transparentIfNeeded) }), nonPosition('stroke', model, { defaultValue: defaultStroke }));\n }\n else if (encoding.color) {\n return Object.assign({}, fillStrokeMarkDefAndConfig, nonPosition('color', model, {\n vgChannel: colorVgChannel,\n // apply default fill/stroke first, then color config, then transparent if needed.\n defaultValue: getFirstDefined(markDef[colorVgChannel], markDef.color, configValue[colorVgChannel], configValue.color, filled ? transparentIfNeeded : undefined)\n }));\n }\n else if (isVisible(markDef.fill) || isVisible(markDef.stroke)) {\n // Ignore markDef.color\n if (markDef.color) {\n log.warn(log.message.droppingColor('property', { fill: 'fill' in markDef, stroke: 'stroke' in markDef }));\n }\n return fillStrokeMarkDefAndConfig;\n }\n else if (markDef.color) {\n return Object.assign({}, fillStrokeMarkDefAndConfig, { \n // override config with markDef.color\n [colorVgChannel]: { value: markDef.color } });\n }\n else if (isVisible(configValue.fill) || isVisible(configValue.stroke)) {\n // ignore config.color\n return fillStrokeMarkDefAndConfig;\n }\n else if (configValue.color) {\n return Object.assign({}, (transparentIfNeeded ? { fill: { value: 'transparent' } } : {}), { [colorVgChannel]: { value: configValue.color } });\n }\n return {};\n}\nexport function baseEncodeEntry(model, ignore) {\n const { fill, stroke } = color(model);\n return Object.assign({}, markDefProperties(model.markDef, ignore), wrapAllFieldsInvalid(model, 'fill', fill), wrapAllFieldsInvalid(model, 'stroke', stroke), nonPosition('opacity', model), nonPosition('fillOpacity', model), nonPosition('strokeOpacity', model), nonPosition('strokeWidth', model), tooltip(model), text(model, 'href'));\n}\nfunction wrapAllFieldsInvalid(model, channel, valueRef) {\n const { config, mark } = model;\n if (config.invalidValues === 'hide' && valueRef && !isPathMark(mark)) {\n // For non-path marks, we have to exclude invalid values (null and NaN) for scales with continuous domains.\n // For path marks, we will use \"defined\" property and skip these values instead.\n const test = allFieldsInvalidPredicate(model, { invalid: true, channels: SCALE_CHANNELS });\n if (test) {\n return {\n [channel]: [\n // prepend the invalid case\n // TODO: support custom value\n { test, value: null },\n ...array(valueRef)\n ]\n };\n }\n }\n return valueRef ? { [channel]: valueRef } : {};\n}\nfunction markDefProperties(mark, ignore) {\n return VG_MARK_CONFIGS.reduce((m, prop) => {\n if (mark[prop] !== undefined && ignore[prop] !== 'ignore') {\n m[prop] = { value: mark[prop] };\n }\n return m;\n }, {});\n}\nexport function valueIfDefined(prop, value) {\n if (value !== undefined) {\n return { [prop]: { value: value } };\n }\n return undefined;\n}\nfunction allFieldsInvalidPredicate(model, { invalid = false, channels }) {\n const filterIndex = channels.reduce((aggregator, channel) => {\n const scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n const scaleType = scaleComponent.get('type');\n const field = model.vgField(channel, { expr: 'datum' });\n // While discrete domain scales can handle invalid values, continuous scales can't.\n if (field && hasContinuousDomain(scaleType)) {\n aggregator[field] = true;\n }\n }\n return aggregator;\n }, {});\n const fields = keys(filterIndex);\n if (fields.length > 0) {\n const op = invalid ? '||' : '&&';\n return fields.map(field => fieldInvalidPredicate(field, invalid)).join(` ${op} `);\n }\n return undefined;\n}\nexport function defined(model) {\n if (model.config.invalidValues) {\n const signal = allFieldsInvalidPredicate(model, { channels: ['x', 'y'] });\n if (signal) {\n return { defined: { signal } };\n }\n }\n return {};\n}\n/**\n * Return mixins for non-positional channels with scales. (Text doesn't have scale.)\n */\nexport function nonPosition(channel, model, opt = {}) {\n const { markDef, encoding, config } = model;\n const { vgChannel = channel } = opt;\n let { defaultRef, defaultValue } = opt;\n if (defaultRef === undefined) {\n // prettier-ignore\n defaultValue = defaultValue ||\n (vgChannel === channel\n ? // When vl channel is the same as Vega's, no need to read from config as Vega will apply them correctly\n markDef[channel]\n : // However, when they are different (e.g, vl's text size is vg fontSize), need to read \"size\" from configs\n getFirstDefined(markDef[channel], markDef[vgChannel], getMarkConfig(channel, markDef, config, { vgChannel })));\n defaultRef = defaultValue ? { value: defaultValue } : undefined;\n }\n const channelDef = encoding[channel];\n return wrapCondition(model, channelDef, vgChannel, cDef => {\n return ref.midPoint({\n channel,\n channelDef: cDef,\n scaleName: model.scaleName(channel),\n scale: model.getScaleComponent(channel),\n stack: null,\n defaultRef\n });\n });\n}\n/**\n * Return a mixin that include a Vega production rule for a Vega-Lite conditional channel definition.\n * or a simple mixin if channel def has no condition.\n */\nexport function wrapCondition(model, channelDef, vgChannel, refFn) {\n const condition = channelDef && channelDef.condition;\n const valueRef = refFn(channelDef);\n if (condition) {\n const conditions = isArray(condition) ? condition : [condition];\n const vgConditions = conditions.map(c => {\n const conditionValueRef = refFn(c);\n const test = isConditionalSelection(c)\n ? assembleSelectionPredicate(model, c.selection)\n : expression(model, c.test);\n return Object.assign({ test }, conditionValueRef);\n });\n return {\n [vgChannel]: [...vgConditions, ...(valueRef !== undefined ? [valueRef] : [])]\n };\n }\n else {\n return valueRef !== undefined ? { [vgChannel]: valueRef } : {};\n }\n}\nexport function tooltip(model, opt = {}) {\n const { encoding, markDef, config } = model;\n const channelDef = encoding.tooltip;\n if (isArray(channelDef)) {\n return { tooltip: ref.tooltipForEncoding({ tooltip: channelDef }, config, opt) };\n }\n else {\n return wrapCondition(model, channelDef, 'tooltip', cDef => {\n // use valueRef based on channelDef first\n const tooltipRefFromChannelDef = ref.text(cDef, model.config, opt.reactiveGeom ? 'datum.datum' : 'datum');\n if (tooltipRefFromChannelDef) {\n return tooltipRefFromChannelDef;\n }\n if (cDef === null) {\n // Allow using encoding.tooltip = null to disable tooltip\n return undefined;\n }\n // If tooltipDef does not exist, then use value from markDef or config\n const markTooltip = getFirstDefined(markDef.tooltip, getMarkConfig('tooltip', markDef, config));\n if (isString(markTooltip)) {\n return { value: markTooltip };\n }\n else if (isObject(markTooltip)) {\n // `tooltip` is `{fields: 'encodings' | 'fields'}`\n if (markTooltip.content === 'encoding') {\n return ref.tooltipForEncoding(encoding, config, opt);\n }\n else {\n return { signal: 'datum' };\n }\n }\n return undefined;\n });\n }\n}\nexport function text(model, channel = 'text') {\n const channelDef = model.encoding[channel];\n return wrapCondition(model, channelDef, channel, cDef => ref.text(cDef, model.config));\n}\nexport function bandPosition(fieldDef, channel, model, defaultSizeRef) {\n const scaleName = model.scaleName(channel);\n const sizeChannel = channel === 'x' ? 'width' : 'height';\n if (model.encoding.size ||\n model.markDef.size !== undefined ||\n (defaultSizeRef && defaultSizeRef.value !== undefined)) {\n const orient = model.markDef.orient;\n if (orient) {\n const centeredBandPositionMixins = {\n // Use xc/yc and place the mark at the middle of the band\n // This way we never have to deal with size's condition for x/y position.\n [channel + 'c']: ref.fieldRef(fieldDef, scaleName, {}, { band: 0.5 })\n };\n if (getTypedFieldDef(model.encoding.size)) {\n return Object.assign({}, centeredBandPositionMixins, nonPosition('size', model, { vgChannel: sizeChannel }));\n }\n else if (isValueDef(model.encoding.size)) {\n return Object.assign({}, centeredBandPositionMixins, nonPosition('size', model, { vgChannel: sizeChannel }));\n }\n else if (model.markDef.size !== undefined) {\n return Object.assign({}, centeredBandPositionMixins, { [sizeChannel]: { value: model.markDef.size } });\n }\n else if (defaultSizeRef && defaultSizeRef.value !== undefined) {\n return Object.assign({}, centeredBandPositionMixins, { [sizeChannel]: defaultSizeRef });\n }\n }\n else {\n log.warn(log.message.cannotApplySizeToNonOrientedMark(model.markDef.type));\n }\n }\n return {\n // FIXME: make offset works correctly here when we support group bar (https://github.com/vega/vega-lite/issues/396)\n [channel]: ref.fieldRef(fieldDef, scaleName, { binSuffix: 'range' }, {}),\n [sizeChannel]: defaultSizeRef || ref.bandRef(scaleName)\n };\n}\nexport function centeredPointPositionWithSize(channel, model, defaultPosRef, defaultSizeRef) {\n const centerChannel = channel === 'x' ? 'xc' : 'yc';\n const sizeChannel = channel === 'x' ? 'width' : 'height';\n return Object.assign({}, pointPosition(channel, model, defaultPosRef, centerChannel), nonPosition('size', model, { defaultRef: defaultSizeRef, vgChannel: sizeChannel }));\n}\nexport function binPosition({ fieldDef, fieldDef2, channel, scaleName, mark, spacing = 0, reverse }) {\n const binSpacing = {\n x: reverse ? spacing : 0,\n x2: reverse ? 0 : spacing,\n y: reverse ? 0 : spacing,\n y2: reverse ? spacing : 0\n };\n const channel2 = channel === X ? X2 : Y2;\n if (isBinning(fieldDef.bin)) {\n return {\n [channel2]: ref.bin({\n channel,\n fieldDef,\n scaleName,\n mark,\n side: 'start',\n offset: binSpacing[`${channel}2`]\n }),\n [channel]: ref.bin({ channel, fieldDef, scaleName, mark, side: 'end', offset: binSpacing[channel] })\n };\n }\n else if (isBinned(fieldDef.bin) && isFieldDef(fieldDef2)) {\n return {\n [channel2]: ref.fieldRef(fieldDef, scaleName, {}, { offset: binSpacing[`${channel}2`] }),\n [channel]: ref.fieldRef(fieldDef2, scaleName, {}, { offset: binSpacing[channel] })\n };\n }\n else {\n log.warn(log.message.channelRequiredForBinned(channel2));\n return undefined;\n }\n}\n/**\n * Return mixins for point (non-band) position channels.\n */\nexport function pointPosition(channel, model, defaultRef, vgChannel) {\n // TODO: refactor how refer to scale as discussed in https://github.com/vega/vega-lite/pull/1613\n const { encoding, mark, markDef, config, stack } = model;\n const channelDef = encoding[channel];\n const channel2Def = encoding[channel === X ? X2 : Y2];\n const scaleName = model.scaleName(channel);\n const scale = model.getScaleComponent(channel);\n const offset = ref.getOffset(channel, model.markDef);\n const valueRef = !channelDef && (encoding.latitude || encoding.longitude)\n ? // use geopoint output if there are lat/long and there is no point position overriding lat/long.\n { field: model.getName(channel) }\n : ref.position({\n channel,\n channelDef,\n channel2Def,\n scaleName,\n scale,\n stack,\n mark,\n offset,\n defaultRef: ref.positionDefault({\n markDef,\n config,\n defaultRef,\n channel,\n scaleName,\n scale,\n mark,\n checkBarAreaWithoutZero: !channel2Def // only check for non-ranged marks\n })\n });\n return {\n [vgChannel || channel]: valueRef\n };\n}\n/**\n * Return mixins for x2, y2.\n * If channel is not specified, return one channel based on orientation.\n */\nexport function pointPosition2(model, defaultRef, channel) {\n const { encoding, mark, markDef, stack, config } = model;\n const baseChannel = channel === 'x2' ? 'x' : 'y';\n const channelDef = encoding[baseChannel];\n const scaleName = model.scaleName(baseChannel);\n const scale = model.getScaleComponent(baseChannel);\n const offset = ref.getOffset(channel, model.markDef);\n const valueRef = !channelDef && (encoding.latitude || encoding.longitude)\n ? // use geopoint output if there are lat2/long2 and there is no point position2 overriding lat2/long2.\n { field: model.getName(channel) }\n : ref.position2({\n channel,\n channelDef,\n channel2Def: encoding[channel],\n scaleName,\n scale,\n stack,\n mark,\n offset,\n defaultRef: ref.positionDefault({\n markDef,\n config,\n defaultRef,\n channel,\n scaleName,\n scale,\n mark,\n checkBarAreaWithoutZero: !encoding[channel] // only check for non-ranged marks\n })\n });\n return { [channel]: valueRef };\n}\n//# sourceMappingURL=mixins.js.map","import { keys } from '../util';\nimport { wrapCondition } from './mark/mixins';\nexport function guideEncodeEntry(encoding, model) {\n return keys(encoding).reduce((encode, channel) => {\n const valueDef = encoding[channel];\n return Object.assign({}, encode, wrapCondition(model, valueDef, channel, (x) => ({ value: x.value })));\n }, {});\n}\n//# sourceMappingURL=guide.js.map","import { POSITION_SCALE_CHANNELS } from '../channel';\nimport * as log from '../log';\nimport { contains } from '../util';\nimport { isConcatModel, isFacetModel, isLayerModel, isRepeatModel } from './model';\nexport function defaultScaleResolve(channel, model) {\n if (isLayerModel(model) || isFacetModel(model)) {\n return 'shared';\n }\n else if (isConcatModel(model) || isRepeatModel(model)) {\n return contains(POSITION_SCALE_CHANNELS, channel) ? 'independent' : 'shared';\n }\n /* istanbul ignore next: should never reach here. */\n throw new Error('invalid model type for resolve');\n}\nexport function parseGuideResolve(resolve, channel) {\n const channelScaleResolve = resolve.scale[channel];\n const guide = contains(POSITION_SCALE_CHANNELS, channel) ? 'axis' : 'legend';\n if (channelScaleResolve === 'independent') {\n if (resolve[guide][channel] === 'shared') {\n log.warn(log.message.independentScaleMeansIndependentGuide(channel));\n }\n return 'independent';\n }\n return resolve[guide][channel] || 'shared';\n}\n//# sourceMappingURL=resolve.js.map","import * as log from '../log';\nimport { duplicate, getFirstDefined, keys, stringify } from '../util';\n/**\n * Generic class for storing properties that are explicitly specified\n * and implicitly determined by the compiler.\n * This is important for scale/axis/legend merging as\n * we want to prioritize properties that users explicitly specified.\n */\nexport class Split {\n constructor(explicit = {}, implicit = {}) {\n this.explicit = explicit;\n this.implicit = implicit;\n }\n clone() {\n return new Split(duplicate(this.explicit), duplicate(this.implicit));\n }\n combine() {\n // FIXME remove \"as any\".\n // Add \"as any\" to avoid an error \"Spread types may only be created from object types\".\n return Object.assign({}, this.explicit, this.implicit);\n }\n get(key) {\n // Explicit has higher precedence\n return getFirstDefined(this.explicit[key], this.implicit[key]);\n }\n getWithExplicit(key) {\n // Explicit has higher precedence\n if (this.explicit[key] !== undefined) {\n return { explicit: true, value: this.explicit[key] };\n }\n else if (this.implicit[key] !== undefined) {\n return { explicit: false, value: this.implicit[key] };\n }\n return { explicit: false, value: undefined };\n }\n setWithExplicit(key, value) {\n if (value.value !== undefined) {\n this.set(key, value.value, value.explicit);\n }\n }\n set(key, value, explicit) {\n delete this[explicit ? 'implicit' : 'explicit'][key];\n this[explicit ? 'explicit' : 'implicit'][key] = value;\n return this;\n }\n copyKeyFromSplit(key, s) {\n // Explicit has higher precedence\n if (s.explicit[key] !== undefined) {\n this.set(key, s.explicit[key], true);\n }\n else if (s.implicit[key] !== undefined) {\n this.set(key, s.implicit[key], false);\n }\n }\n copyKeyFromObject(key, s) {\n // Explicit has higher precedence\n if (s[key] !== undefined) {\n this.set(key, s[key], true);\n }\n }\n /**\n * Merge split object into this split object. Properties from the other split\n * overwrite properties from this split.\n */\n copyAll(other) {\n for (const key of keys(other.combine())) {\n const val = other.getWithExplicit(key);\n this.setWithExplicit(key, val);\n }\n }\n}\nexport function makeExplicit(value) {\n return {\n explicit: true,\n value\n };\n}\nexport function makeImplicit(value) {\n return {\n explicit: false,\n value\n };\n}\nexport function tieBreakByComparing(compare) {\n return (v1, v2, property, propertyOf) => {\n const diff = compare(v1.value, v2.value);\n if (diff > 0) {\n return v1;\n }\n else if (diff < 0) {\n return v2;\n }\n return defaultTieBreaker(v1, v2, property, propertyOf);\n };\n}\nexport function defaultTieBreaker(v1, v2, property, propertyOf) {\n if (v1.explicit && v2.explicit) {\n log.warn(log.message.mergeConflictingProperty(property, propertyOf, v1.value, v2.value));\n }\n // If equal score, prefer v1.\n return v1;\n}\nexport function mergeValuesWithExplicit(v1, v2, property, propertyOf, tieBreaker = defaultTieBreaker) {\n if (v1 === undefined || v1.value === undefined) {\n // For first run\n return v2;\n }\n if (v1.explicit && !v2.explicit) {\n return v1;\n }\n else if (v2.explicit && !v1.explicit) {\n return v2;\n }\n else if (stringify(v1.value) === stringify(v2.value)) {\n return v1;\n }\n else {\n return tieBreaker(v1, v2, property, propertyOf);\n }\n}\n//# sourceMappingURL=split.js.map","import { Split } from '../split';\nexport class LegendComponent extends Split {\n}\n//# sourceMappingURL=component.js.map","import { isColorChannel } from '../../channel';\nimport { valueArray } from '../../channeldef';\nimport { isContinuousToContinuous } from '../../scale';\nimport { contains, getFirstDefined } from '../../util';\nexport function values(legend, fieldDef) {\n const vals = legend.values;\n if (vals) {\n return valueArray(fieldDef, vals);\n }\n return undefined;\n}\nexport function defaultSymbolType(mark) {\n return mark === 'line' ? 'stroke' : 'circle';\n}\nexport function clipHeight(legendType) {\n if (legendType === 'gradient') {\n return 20;\n }\n return undefined;\n}\nexport function type(params) {\n const { legend } = params;\n return getFirstDefined(legend.type, defaultType(params));\n}\nexport function defaultType({ channel, timeUnit, scaleType, alwaysReturn }) {\n // Following the logic in https://github.com/vega/vega-parser/blob/master/src/parsers/legend.js\n if (isColorChannel(channel)) {\n if (contains(['quarter', 'month', 'day'], timeUnit)) {\n return 'symbol';\n }\n if (isContinuousToContinuous(scaleType)) {\n return alwaysReturn ? 'gradient' : undefined;\n }\n }\n return alwaysReturn ? 'symbol' : undefined;\n}\nexport function direction({ legend, legendConfig, timeUnit, channel, scaleType }) {\n const orient = getFirstDefined(legend.orient, legendConfig.orient, 'right');\n const legendType = type({ legend, channel, timeUnit, scaleType, alwaysReturn: true });\n return getFirstDefined(legend.direction, legendConfig[legendType ? 'gradientDirection' : 'symbolDirection'], defaultDirection(orient, legendType));\n}\nfunction defaultDirection(orient, legendType) {\n switch (orient) {\n case 'top':\n case 'bottom':\n return 'horizontal';\n case 'left':\n case 'right':\n case 'none':\n case undefined: // undefined = \"right\" in Vega\n return undefined; // vertical is Vega's default\n default:\n // top-left / ...\n // For inner legend, uses compact layout like Tableau\n return legendType === 'gradient' ? 'horizontal' : undefined;\n }\n}\nexport function defaultGradientLength({ legend, legendConfig, model, channel, scaleType }) {\n const { gradientHorizontalMaxLength, gradientHorizontalMinLength, gradientVerticalMaxLength, gradientVerticalMinLength } = legendConfig;\n const dir = direction({ legend, legendConfig, channel, scaleType });\n if (dir === 'horizontal') {\n const orient = getFirstDefined(legend.orient, legendConfig.orient);\n if (orient === 'top' || orient === 'bottom') {\n return gradientLengthSignal(model, 'width', gradientHorizontalMinLength, gradientHorizontalMaxLength);\n }\n else {\n return gradientHorizontalMinLength;\n }\n }\n else {\n // vertical / undefined (Vega uses vertical by default)\n return gradientLengthSignal(model, 'height', gradientVerticalMinLength, gradientVerticalMaxLength);\n }\n}\nfunction gradientLengthSignal(model, sizeType, min, max) {\n const sizeSignal = model.getSizeSignalRef(sizeType).signal;\n return { signal: `clamp(${sizeSignal}, ${min}, ${max})` };\n}\nexport function defaultLabelOverlap(scaleType) {\n if (contains(['quantile', 'threshold', 'log'], scaleType)) {\n return 'greedy';\n }\n return undefined;\n}\n//# sourceMappingURL=properties.js.map","import { isArray } from 'vega-util';\nimport { COLOR, OPACITY, SHAPE } from '../../channel';\nimport { hasConditionalValueDef, isTimeFormatFieldDef, isValueDef } from '../../channeldef';\nimport { AREA, BAR, CIRCLE, FILL_STROKE_CONFIG, GEOSHAPE, LINE, POINT, SQUARE, TEXT, TICK } from '../../mark';\nimport { ScaleType } from '../../scale';\nimport { getFirstDefined, keys } from '../../util';\nimport { applyMarkConfig, timeFormatExpression } from '../common';\nimport * as mixins from '../mark/mixins';\nimport { defaultType } from './properties';\nfunction type(legendCmp, model, channel) {\n const scaleType = model.getScaleComponent(channel).get('type');\n return getFirstDefined(legendCmp.get('type'), defaultType({ channel, scaleType, alwaysReturn: true }));\n}\nexport function symbols(fieldDef, symbolsSpec, model, channel, legendCmp) {\n if (type(legendCmp, model, channel) !== 'symbol') {\n return undefined;\n }\n let out = Object.assign({}, applyMarkConfig({}, model, FILL_STROKE_CONFIG), mixins.color(model)); // FIXME: remove this when VgEncodeEntry is compatible with SymbolEncodeEntry\n switch (model.mark) {\n case BAR:\n case TICK:\n case TEXT:\n out.shape = { value: 'square' };\n break;\n case CIRCLE:\n case SQUARE:\n out.shape = { value: model.mark };\n break;\n case POINT:\n case LINE:\n case GEOSHAPE:\n case AREA:\n // use default circle\n break;\n }\n const { markDef, encoding, config } = model;\n const filled = markDef.filled;\n const opacity = getMaxValue(encoding.opacity) || markDef.opacity;\n if (out.fill) {\n // for fill legend, we don't want any fill in symbol\n if (channel === 'fill' || (filled && channel === COLOR)) {\n delete out.fill;\n }\n else {\n if (out.fill['field']) {\n // For others, set fill to some opaque value (or nothing if a color is already set)\n if (legendCmp.get('symbolFillColor')) {\n delete out.fill;\n }\n else {\n out.fill = { value: config.legend.symbolBaseFillColor || 'black' };\n out.fillOpacity = { value: opacity || 1 };\n }\n }\n else if (isArray(out.fill)) {\n const fill = getFirstConditionValue(encoding.fill || encoding.color) ||\n markDef.fill ||\n (filled && markDef.color);\n if (fill) {\n out.fill = { value: fill };\n }\n }\n }\n }\n if (out.stroke) {\n if (channel === 'stroke' || (!filled && channel === COLOR)) {\n delete out.stroke;\n }\n else {\n if (out.stroke['field']) {\n // For others, remove stroke field\n delete out.stroke;\n }\n else if (isArray(out.stroke)) {\n const stroke = getFirstDefined(getFirstConditionValue(encoding.stroke || encoding.color), markDef.stroke, filled ? markDef.color : undefined);\n if (stroke) {\n out.stroke = { value: stroke };\n }\n }\n }\n }\n if (channel !== SHAPE) {\n const shape = getFirstConditionValue(encoding.shape) || markDef.shape;\n if (shape) {\n out.shape = { value: shape };\n }\n }\n if (channel !== OPACITY) {\n if (opacity) {\n // only apply opacity if it is neither zero or undefined\n out.opacity = { value: opacity };\n }\n }\n out = Object.assign({}, out, symbolsSpec);\n return keys(out).length > 0 ? out : undefined;\n}\nexport function gradient(fieldDef, gradientSpec, model, channel, legendCmp) {\n if (type(legendCmp, model, channel) !== 'gradient') {\n return undefined;\n }\n let out = {};\n const opacity = getMaxValue(model.encoding.opacity) || model.markDef.opacity;\n if (opacity) {\n // only apply opacity if it is neither zero or undefined\n out.opacity = { value: opacity };\n }\n out = Object.assign({}, out, gradientSpec);\n return keys(out).length > 0 ? out : undefined;\n}\nexport function labels(fieldDef, labelsSpec, model, channel) {\n const legend = model.legend(channel);\n const config = model.config;\n let out = {};\n if (isTimeFormatFieldDef(fieldDef)) {\n const isUTCScale = model.getScaleComponent(channel).get('type') === ScaleType.UTC;\n const expr = timeFormatExpression('datum.value', fieldDef.timeUnit, legend.format, config.legend.shortTimeLabels, config.timeFormat, isUTCScale);\n labelsSpec = Object.assign({}, (expr ? { text: { signal: expr } } : {}), labelsSpec);\n }\n out = Object.assign({}, out, labelsSpec);\n return keys(out).length > 0 ? out : undefined;\n}\nfunction getMaxValue(channelDef) {\n return getConditionValue(channelDef, (v, conditionalDef) => Math.max(v, conditionalDef.value));\n}\nfunction getFirstConditionValue(channelDef) {\n return getConditionValue(channelDef, (v, conditionalDef) => {\n return getFirstDefined(v, conditionalDef.value);\n });\n}\nfunction getConditionValue(channelDef, reducer) {\n if (hasConditionalValueDef(channelDef)) {\n return (isArray(channelDef.condition) ? channelDef.condition : [channelDef.condition]).reduce(reducer, channelDef.value);\n }\n else if (isValueDef(channelDef)) {\n return channelDef.value;\n }\n return undefined;\n}\n//# sourceMappingURL=encode.js.map","import { COLOR, FILL, FILLOPACITY, OPACITY, SHAPE, SIZE, STROKE, STROKEOPACITY, STROKEWIDTH } from '../../channel';\nimport { getTypedFieldDef, isFieldDef, isTimeFormatFieldDef, title as fieldDefTitle } from '../../channeldef';\nimport { LEGEND_PROPERTIES, VG_LEGEND_PROPERTIES } from '../../legend';\nimport { GEOJSON } from '../../type';\nimport { deleteNestedProperty, getFirstDefined, keys } from '../../util';\nimport { mergeTitleComponent, numberFormat } from '../common';\nimport { guideEncodeEntry } from '../guide';\nimport { isUnitModel } from '../model';\nimport { parseGuideResolve } from '../resolve';\nimport { defaultTieBreaker, makeImplicit, mergeValuesWithExplicit } from '../split';\nimport { LegendComponent } from './component';\nimport * as encode from './encode';\nimport * as properties from './properties';\nimport { direction, type } from './properties';\nexport function parseLegend(model) {\n if (isUnitModel(model)) {\n model.component.legends = parseUnitLegend(model);\n }\n else {\n model.component.legends = parseNonUnitLegend(model);\n }\n}\nfunction parseUnitLegend(model) {\n const { encoding } = model;\n return [COLOR, FILL, STROKE, STROKEWIDTH, SIZE, SHAPE, OPACITY, FILLOPACITY, STROKEOPACITY].reduce((legendComponent, channel) => {\n const def = encoding[channel];\n if (model.legend(channel) &&\n model.getScaleComponent(channel) &&\n !(isFieldDef(def) && (channel === SHAPE && def.type === GEOJSON))) {\n legendComponent[channel] = parseLegendForChannel(model, channel);\n }\n return legendComponent;\n }, {});\n}\nfunction getLegendDefWithScale(model, channel) {\n const scale = model.scaleName(COLOR);\n if (channel === 'color') {\n return model.markDef.filled ? { fill: scale } : { stroke: scale };\n }\n return { [channel]: model.scaleName(channel) };\n}\nfunction isExplicit(value, property, legend, fieldDef) {\n switch (property) {\n case 'values':\n // specified legend.values is already respected, but may get transformed.\n return !!legend.values;\n case 'title':\n // title can be explicit if fieldDef.title is set\n if (property === 'title' && value === fieldDef.title) {\n return true;\n }\n }\n // Otherwise, things are explicit if the returned value matches the specified property\n return value === legend[property];\n}\nexport function parseLegendForChannel(model, channel) {\n const fieldDef = model.fieldDef(channel);\n const legend = model.legend(channel);\n const legendCmpt = new LegendComponent({}, getLegendDefWithScale(model, channel));\n for (const property of LEGEND_PROPERTIES) {\n const value = getProperty(property, legend, channel, model);\n if (value !== undefined) {\n const explicit = isExplicit(value, property, legend, fieldDef);\n if (explicit || model.config.legend[property] === undefined) {\n legendCmpt.set(property, value, explicit);\n }\n }\n }\n const legendEncoding = legend.encoding || {};\n const legendEncode = ['labels', 'legend', 'title', 'symbols', 'gradient'].reduce((e, part) => {\n const legendEncodingPart = guideEncodeEntry(legendEncoding[part] || {}, model);\n const value = encode[part]\n ? encode[part](fieldDef, legendEncodingPart, model, channel, legendCmpt) // apply rule\n : legendEncodingPart; // no rule -- just default values\n if (value !== undefined && keys(value).length > 0) {\n e[part] = { update: value };\n }\n return e;\n }, {});\n if (keys(legendEncode).length > 0) {\n legendCmpt.set('encode', legendEncode, !!legend.encoding);\n }\n return legendCmpt;\n}\nfunction getProperty(property, legend, channel, model) {\n const { encoding, mark } = model;\n const fieldDef = getTypedFieldDef(encoding[channel]);\n const legendConfig = model.config.legend;\n const { timeUnit } = fieldDef;\n const scaleType = model.getScaleComponent(channel).get('type');\n switch (property) {\n // TODO: enable when https://github.com/vega/vega/issues/1351 is fixed\n // case 'clipHeight':\n // return getFirstDefined(specifiedLegend.clipHeight, properties.clipHeight(properties.type(...)));\n case 'direction':\n return direction({ legend, legendConfig, timeUnit, channel, scaleType });\n case 'format':\n // We don't include temporal field here as we apply format in encode block\n if (isTimeFormatFieldDef(fieldDef)) {\n return undefined;\n }\n return numberFormat(fieldDef, legend.format, model.config);\n case 'formatType':\n // Same as format, We don't include temporal field here as we apply format in encode block\n if (isTimeFormatFieldDef(fieldDef)) {\n return undefined;\n }\n return legend.formatType;\n case 'gradientLength':\n return getFirstDefined(\n // do specified gradientLength first\n legend.gradientLength, legendConfig.gradientLength, \n // Otherwise, use smart default based on plot height\n properties.defaultGradientLength({\n model,\n legend,\n legendConfig,\n channel,\n scaleType\n }));\n case 'labelOverlap':\n return getFirstDefined(legend.labelOverlap, properties.defaultLabelOverlap(scaleType));\n case 'symbolType':\n return getFirstDefined(legend.symbolType, properties.defaultSymbolType(mark));\n case 'title':\n return fieldDefTitle(fieldDef, model.config, { allowDisabling: true }) || undefined;\n case 'type':\n return type({ legend, channel, timeUnit, scaleType, alwaysReturn: false });\n case 'values':\n return properties.values(legend, fieldDef);\n }\n // Otherwise, return specified property.\n return legend[property];\n}\nfunction parseNonUnitLegend(model) {\n const { legends, resolve } = model.component;\n for (const child of model.children) {\n parseLegend(child);\n keys(child.component.legends).forEach((channel) => {\n resolve.legend[channel] = parseGuideResolve(model.component.resolve, channel);\n if (resolve.legend[channel] === 'shared') {\n // If the resolve says shared (and has not been overridden)\n // We will try to merge and see if there is a conflict\n legends[channel] = mergeLegendComponent(legends[channel], child.component.legends[channel]);\n if (!legends[channel]) {\n // If merge returns nothing, there is a conflict so we cannot make the legend shared.\n // Thus, mark legend as independent and remove the legend component.\n resolve.legend[channel] = 'independent';\n delete legends[channel];\n }\n }\n });\n }\n keys(legends).forEach((channel) => {\n for (const child of model.children) {\n if (!child.component.legends[channel]) {\n // skip if the child does not have a particular legend\n continue;\n }\n if (resolve.legend[channel] === 'shared') {\n // After merging shared legend, make sure to remove legend from child\n delete child.component.legends[channel];\n }\n }\n });\n return legends;\n}\nexport function mergeLegendComponent(mergedLegend, childLegend) {\n if (!mergedLegend) {\n return childLegend.clone();\n }\n const mergedOrient = mergedLegend.getWithExplicit('orient');\n const childOrient = childLegend.getWithExplicit('orient');\n if (mergedOrient.explicit && childOrient.explicit && mergedOrient.value !== childOrient.value) {\n // TODO: throw warning if resolve is explicit (We don't have info about explicit/implicit resolve yet.)\n // Cannot merge due to inconsistent orient\n return undefined;\n }\n let typeMerged = false;\n // Otherwise, let's merge\n for (const prop of VG_LEGEND_PROPERTIES) {\n const mergedValueWithExplicit = mergeValuesWithExplicit(mergedLegend.getWithExplicit(prop), childLegend.getWithExplicit(prop), prop, 'legend', \n // Tie breaker function\n (v1, v2) => {\n switch (prop) {\n case 'symbolType':\n return mergeSymbolType(v1, v2);\n case 'title':\n return mergeTitleComponent(v1, v2);\n case 'type':\n // There are only two types. If we have different types, then prefer symbol over gradient.\n typeMerged = true;\n return makeImplicit('symbol');\n }\n return defaultTieBreaker(v1, v2, prop, 'legend');\n });\n mergedLegend.setWithExplicit(prop, mergedValueWithExplicit);\n }\n if (typeMerged) {\n if (((mergedLegend.implicit || {}).encode || {}).gradient) {\n deleteNestedProperty(mergedLegend.implicit, ['encode', 'gradient']);\n }\n if (((mergedLegend.explicit || {}).encode || {}).gradient) {\n deleteNestedProperty(mergedLegend.explicit, ['encode', 'gradient']);\n }\n }\n return mergedLegend;\n}\nfunction mergeSymbolType(st1, st2) {\n if (st2.value === 'circle') {\n // prefer \"circle\" over \"stroke\"\n return st2;\n }\n return st1;\n}\n//# sourceMappingURL=parse.js.map","import { flatten, keys, stringify, vals } from '../../util';\nimport { mergeLegendComponent } from './parse';\nexport function assembleLegends(model) {\n const legendComponentIndex = model.component.legends;\n const legendByDomain = {};\n for (const channel of keys(legendComponentIndex)) {\n const scaleComponent = model.getScaleComponent(channel);\n const domainHash = stringify(scaleComponent.domains);\n if (legendByDomain[domainHash]) {\n for (const mergedLegendComponent of legendByDomain[domainHash]) {\n const merged = mergeLegendComponent(mergedLegendComponent, legendComponentIndex[channel]);\n if (!merged) {\n // If cannot merge, need to add this legend separately\n legendByDomain[domainHash].push(legendComponentIndex[channel]);\n }\n }\n }\n else {\n legendByDomain[domainHash] = [legendComponentIndex[channel].clone()];\n }\n }\n return flatten(vals(legendByDomain)).map((legendCmpt) => {\n const legend = legendCmpt.combine();\n if (legend.encode && legend.encode.symbols) {\n const out = legend.encode.symbols.update;\n if (out.fill && out.fill['value'] !== 'transparent' && !out.stroke && !legend.stroke) {\n // For non color channel's legend, we need to override symbol stroke config from Vega config if stroke channel is not used.\n out.stroke = { value: 'transparent' };\n }\n if (legend.fill) {\n // If top-level fill is defined, for non color channel's legend, we need remove fill.\n delete out.fill;\n }\n }\n return legend;\n });\n}\n//# sourceMappingURL=assemble.js.map","import * as tslib_1 from \"tslib\";\nimport { contains } from '../../util';\nimport { isSignalRef } from '../../vega.schema';\nimport { isConcatModel, isLayerModel, isRepeatModel } from '../model';\nexport function assembleProjections(model) {\n if (isLayerModel(model) || isConcatModel(model) || isRepeatModel(model)) {\n return assembleProjectionsForModelAndChildren(model);\n }\n else {\n return assembleProjectionForModel(model);\n }\n}\nexport function assembleProjectionsForModelAndChildren(model) {\n return model.children.reduce((projections, child) => {\n return projections.concat(child.assembleProjections());\n }, assembleProjectionForModel(model));\n}\nexport function assembleProjectionForModel(model) {\n const component = model.component.projection;\n if (!component || component.merged) {\n return [];\n }\n const projection = component.combine();\n const { name } = projection, rest = tslib_1.__rest(projection, [\"name\"]); // we need to extract name so that it is always present in the output and pass TS type validation\n if (!component.data) {\n // generate custom projection, no automatic fitting\n return [\n Object.assign({ name }, { translate: { signal: '[width / 2, height / 2]' } }, rest)\n ];\n }\n else {\n // generate projection that uses extent fitting\n const size = {\n signal: `[${component.size.map(ref => ref.signal).join(', ')}]`\n };\n const fit = component.data.reduce((sources, data) => {\n const source = isSignalRef(data) ? data.signal : `data('${model.lookupDataSource(data)}')`;\n if (!contains(sources, source)) {\n // build a unique list of sources\n sources.push(source);\n }\n return sources;\n }, []);\n if (fit.length <= 0) {\n throw new Error(\"Projection's fit didn't find any data sources\");\n }\n return [\n Object.assign({ name,\n size, fit: {\n signal: fit.length > 1 ? `[${fit.join(', ')}]` : fit[0]\n } }, rest)\n ];\n }\n}\n//# sourceMappingURL=assemble.js.map","export const PROJECTION_PROPERTIES = [\n 'type',\n 'clipAngle',\n 'clipExtent',\n 'center',\n 'rotate',\n 'precision',\n 'reflectX',\n 'reflectY',\n 'coefficient',\n 'distance',\n 'fraction',\n 'lobes',\n 'parallel',\n 'radius',\n 'ratio',\n 'spacing',\n 'tilt'\n];\n//# sourceMappingURL=projection.js.map","import { Split } from '../split';\nexport class ProjectionComponent extends Split {\n constructor(name, specifiedProjection, size, data) {\n super(Object.assign({}, specifiedProjection), // all explicit properties of projection\n { name } // name as initial implicit property\n );\n this.specifiedProjection = specifiedProjection;\n this.size = size;\n this.data = data;\n this.merged = false;\n }\n /**\n * Whether the projection parameters should fit provided data.\n */\n get isFit() {\n return !!this.data;\n }\n}\n//# sourceMappingURL=component.js.map","import { LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2, SHAPE } from '../../channel';\nimport { MAIN } from '../../data';\nimport { PROJECTION_PROPERTIES } from '../../projection';\nimport { GEOJSON } from '../../type';\nimport { duplicate, every, stringify } from '../../util';\nimport { isUnitModel } from '../model';\nimport { ProjectionComponent } from './component';\nexport function parseProjection(model) {\n model.component.projection = isUnitModel(model) ? parseUnitProjection(model) : parseNonUnitProjections(model);\n}\nfunction parseUnitProjection(model) {\n if (model.hasProjection) {\n const proj = model.specifiedProjection;\n const fit = !(proj && (proj.scale != null || proj.translate != null));\n const size = fit ? [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')] : undefined;\n const data = fit ? gatherFitData(model) : undefined;\n return new ProjectionComponent(model.projectionName(true), Object.assign({}, (model.config.projection || {}), (proj || {})), size, data);\n }\n return undefined;\n}\nfunction gatherFitData(model) {\n const data = [];\n [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]].forEach(posssiblePair => {\n if (model.channelHasField(posssiblePair[0]) || model.channelHasField(posssiblePair[1])) {\n data.push({\n signal: model.getName(`geojson_${data.length}`)\n });\n }\n });\n if (model.channelHasField(SHAPE) && model.fieldDef(SHAPE).type === GEOJSON) {\n data.push({\n signal: model.getName(`geojson_${data.length}`)\n });\n }\n if (data.length === 0) {\n // main source is geojson, so we can just use that\n data.push(model.requestDataName(MAIN));\n }\n return data;\n}\nfunction mergeIfNoConflict(first, second) {\n const allPropertiesShared = every(PROJECTION_PROPERTIES, prop => {\n // neither has the property\n if (!first.explicit.hasOwnProperty(prop) && !second.explicit.hasOwnProperty(prop)) {\n return true;\n }\n // both have property and an equal value for property\n if (first.explicit.hasOwnProperty(prop) &&\n second.explicit.hasOwnProperty(prop) &&\n // some properties might be signals or objects and require hashing for comparison\n stringify(first.get(prop)) === stringify(second.get(prop))) {\n return true;\n }\n return false;\n });\n const size = stringify(first.size) === stringify(second.size);\n if (size) {\n if (allPropertiesShared) {\n return first;\n }\n else if (stringify(first.explicit) === stringify({})) {\n return second;\n }\n else if (stringify(second.explicit) === stringify({})) {\n return first;\n }\n }\n // if all properties don't match, let each unit spec have its own projection\n return null;\n}\nfunction parseNonUnitProjections(model) {\n if (model.children.length === 0) {\n return undefined;\n }\n let nonUnitProjection;\n // parse all children first\n model.children.forEach(child => parseProjection(child));\n // analyze parsed projections, attempt to merge\n const mergable = every(model.children, child => {\n const projection = child.component.projection;\n if (!projection) {\n // child layer does not use a projection\n return true;\n }\n else if (!nonUnitProjection) {\n // cached 'projection' is null, cache this one\n nonUnitProjection = projection;\n return true;\n }\n else {\n const merge = mergeIfNoConflict(nonUnitProjection, projection);\n if (merge) {\n nonUnitProjection = merge;\n }\n return !!merge;\n }\n });\n // if cached one and all other children share the same projection,\n if (nonUnitProjection && mergable) {\n // so we can elevate it to the layer level\n const name = model.projectionName(true);\n const modelProjection = new ProjectionComponent(name, nonUnitProjection.specifiedProjection, nonUnitProjection.size, duplicate(nonUnitProjection.data));\n // rename and assign all others as merged\n model.children.forEach(child => {\n const projection = child.component.projection;\n if (projection) {\n if (projection.isFit) {\n modelProjection.data.push(...child.component.projection.data);\n }\n child.renameProjection(projection.get('name'), name);\n projection.merged = true;\n }\n });\n return modelProjection;\n }\n return undefined;\n}\n//# sourceMappingURL=parse.js.map","import { isGenerator, isInlineData, isNamedData, isSphereGenerator, isUrlData } from '../../data';\nimport { contains, keys, omit } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport class SourceNode extends DataFlowNode {\n constructor(data) {\n super(null); // source cannot have parent\n data = data || { name: 'source' };\n let format;\n if (!isGenerator(data)) {\n format = data.format ? Object.assign({}, omit(data.format, ['parse'])) : {};\n }\n if (isInlineData(data)) {\n this._data = { values: data.values };\n }\n else if (isUrlData(data)) {\n this._data = { url: data.url };\n if (!format.type) {\n // Extract extension from URL using snippet from\n // http://stackoverflow.com/questions/680929/how-to-extract-extension-from-fil… let defaultExtension = /(?:\\.([^.]+))?$/.exec(data.url)[1];\n if (!contains(['json', 'csv', 'tsv', 'dsv', 'topojson'], defaultExtension)) {\n defaultExtension = 'json';\n }\n // defaultExtension has type string but we ensure that it is DataFormatType above\n format.type = defaultExtension;\n }\n }\n else if (isSphereGenerator(data)) {\n // hardwire GeoJSON sphere data into output specification\n this._data = { values: [{ type: 'Sphere' }] };\n }\n else if (isNamedData(data) || isGenerator(data)) {\n this._data = {};\n }\n // set flag to check if generator\n this._generator = isGenerator(data);\n // any dataset can be named\n if (data.name) {\n this._name = data.name;\n }\n if (format && keys(format).length > 0) {\n this._data.format = format;\n }\n }\n get data() {\n return this._data;\n }\n hasName() {\n return !!this._name;\n }\n get isGenerator() {\n return this._generator;\n }\n get dataName() {\n return this._name;\n }\n set dataName(name) {\n this._name = name;\n }\n set parent(parent) {\n throw new Error('Source nodes have to be roots.');\n }\n remove() {\n throw new Error('Source nodes are roots and cannot be removed.');\n }\n hash() {\n throw new Error('Cannot hash sources');\n }\n assemble() {\n return Object.assign({ name: this._name }, this._data, { transform: [] });\n }\n}\n//# sourceMappingURL=source.js.map","import { entries, uniqueId } from './../../util';\nimport { SourceNode } from './source';\n/**\n * Print debug information for dataflow tree.\n */\nexport function debug(node) {\n console.log(`${node.constructor.name}${node.debugName ? `(${node.debugName})` : ''} -> ${node.children.map(c => {\n return `${c.constructor.name}${c.debugName ? ` (${c.debugName})` : ''}`;\n })}`);\n console.log(node);\n node.children.forEach(debug);\n}\n/**\n * Print the dataflow tree as graphviz.\n *\n * Render the output in http://viz-js.com/.\n */\nexport function draw(roots) {\n // check the graph before printing it since the logic below assumes a consistent graph\n checkLinks(roots);\n const nodes = {};\n const edges = [];\n function getId(node) {\n let id = node['__uniqueid'];\n if (id === undefined) {\n id = uniqueId();\n node['__uniqueid'] = id;\n }\n return id;\n }\n function getLabel(node) {\n const out = [node.constructor.name.slice(0, -4)];\n if (node.debugName) {\n out.push(`<i>${node.debugName}</i>`);\n }\n else if (node instanceof SourceNode) {\n if (node.data.name || node.data.url) {\n out.push(`<i>${node.data.name || node.data.url}</i>`);\n }\n }\n const dep = node.dependentFields();\n if (dep.size) {\n out.push(`<font color=\"grey\" point-size=\"10\">IN:</font> ${[...node.dependentFields()].join(', ')}`);\n }\n const prod = node.producedFields();\n if (prod.size) {\n out.push(`<font color=\"grey\" point-size=\"10\">OUT:</font> ${[...node.producedFields()].join(', ')}`);\n }\n return out.join('<br/>');\n }\n function collector(node) {\n const id = getId(node);\n nodes[id] = {\n id: id,\n label: getLabel(node),\n hash: node instanceof SourceNode\n ? node.data.url || node.data.name || node.debugName\n : String(node.hash()).replace(/\"/g, '')\n };\n for (const child of node.children) {\n edges.push([id, getId(child)]);\n collector(child);\n }\n }\n roots.forEach(n => collector(n));\n const dot = `digraph DataFlow {\n rankdir = TB;\n node [shape=record]\n ${entries(nodes)\n .map(({ key, value }) => ` \"${key}\" [\n label = <${value.label}>;\n tooltip = \"[${value.id}]
${value.hash}\"\n ]`)\n .join('\\n')}\n\n ${edges.map(([source, target]) => `\"${source}\" -> \"${target}\"`).join(' ')}\n}`;\n console.log(dot);\n return dot;\n}\n/**\n * Iterates over a dataflow graph and checks whether all links are consistent.\n */\nexport function checkLinks(nodes) {\n for (const node of nodes) {\n for (const child of node.children) {\n if (child.parent !== node) {\n console.error('Dataflow graph is inconsistent.', node, child);\n return false;\n }\n }\n if (!checkLinks(node.children)) {\n return false;\n }\n }\n return true;\n}\n//# sourceMappingURL=debug.js.map","import { SourceNode } from './source';\n/**\n * Abstract base class for BottomUpOptimizer and TopDownOptimizer.\n * Contains only mutation handling logic. Subclasses need to implement iteration logic.\n */\nclass OptimizerBase {\n constructor() {\n this._mutated = false;\n }\n // Once true, _mutated is never set to false\n setMutated() {\n this._mutated = true;\n }\n get mutatedFlag() {\n return this._mutated;\n }\n}\n/**\n * Starts from a node and runs the optimization function(the \"run\" method) upwards to the root,\n * depending on the continueFlag and mutatedFlag values returned by the optimization function.\n */\nexport class BottomUpOptimizer extends OptimizerBase {\n constructor() {\n super();\n this._continue = false;\n }\n setContinue() {\n this._continue = true;\n }\n get continueFlag() {\n return this._continue;\n }\n get flags() {\n return { continueFlag: this.continueFlag, mutatedFlag: this.mutatedFlag };\n }\n set flags({ continueFlag, mutatedFlag }) {\n if (continueFlag) {\n this.setContinue();\n }\n if (mutatedFlag) {\n this.setMutated();\n }\n }\n /**\n * Reset the state of the optimizer after it has completed a run from the bottom of the tree to the top.\n */\n reset() {\n // do nothing\n }\n optimizeNextFromLeaves(node) {\n if (node instanceof SourceNode) {\n return false;\n }\n const next = node.parent;\n const { continueFlag } = this.run(node);\n if (continueFlag) {\n this.optimizeNextFromLeaves(next);\n }\n return this.mutatedFlag;\n }\n}\n/**\n * The optimizer function( the \"run\" method), is invoked on the given node and then continues recursively.\n */\nexport class TopDownOptimizer extends OptimizerBase {\n}\n//# sourceMappingURL=optimizer.js.map","import { isArgmaxDef, isArgminDef } from '../../aggregate';\nimport { isBinning } from '../../bin';\nimport { getPositionChannelFromLatLong, isGeoPositionChannel, isScaleChannel } from '../../channel';\nimport { binRequiresRange, isTypedFieldDef, vgField } from '../../channeldef';\nimport * as log from '../../log';\nimport { duplicate, hash, keys, replacePathInField, setEqual } from '../../util';\nimport { DataFlowNode } from './dataflow';\nfunction addDimension(dims, channel, fieldDef, model) {\n if (isTypedFieldDef(fieldDef) && isBinning(fieldDef.bin)) {\n dims.add(vgField(fieldDef, {}));\n dims.add(vgField(fieldDef, { binSuffix: 'end' }));\n if (binRequiresRange(fieldDef, channel)) {\n dims.add(vgField(fieldDef, { binSuffix: 'range' }));\n }\n }\n else if (isGeoPositionChannel(channel)) {\n const posChannel = getPositionChannelFromLatLong(channel);\n dims.add(model.getName(posChannel));\n }\n else {\n dims.add(vgField(fieldDef));\n }\n return dims;\n}\nfunction mergeMeasures(parentMeasures, childMeasures) {\n for (const field of keys(childMeasures)) {\n // when we merge a measure, we either have to add an aggregation operator or even a new field\n const ops = childMeasures[field];\n for (const op of keys(ops)) {\n if (field in parentMeasures) {\n // add operator to existing measure field\n parentMeasures[field][op] = new Set([...(parentMeasures[field][op] || []), ...ops[op]]);\n }\n else {\n parentMeasures[field] = { [op]: ops[op] };\n }\n }\n }\n}\nexport class AggregateNode extends DataFlowNode {\n /**\n * @param dimensions string set for dimensions\n * @param measures dictionary mapping field name => dict of aggregation functions and names to use\n */\n constructor(parent, dimensions, measures) {\n super(parent);\n this.dimensions = dimensions;\n this.measures = measures;\n }\n clone() {\n return new AggregateNode(null, new Set(this.dimensions), duplicate(this.measures));\n }\n get groupBy() {\n return this.dimensions;\n }\n static makeFromEncoding(parent, model) {\n let isAggregate = false;\n model.forEachFieldDef(fd => {\n if (fd.aggregate) {\n isAggregate = true;\n }\n });\n const meas = {};\n const dims = new Set();\n if (!isAggregate) {\n // no need to create this node if the model has no aggregation\n return null;\n }\n model.forEachFieldDef((fieldDef, channel) => {\n const { aggregate, field } = fieldDef;\n if (aggregate) {\n if (aggregate === 'count') {\n meas['*'] = meas['*'] || {};\n meas['*']['count'] = new Set([vgField(fieldDef, { forAs: true })]);\n }\n else {\n if (isArgminDef(aggregate) || isArgmaxDef(aggregate)) {\n const op = isArgminDef(aggregate) ? 'argmin' : 'argmax';\n const argField = aggregate[op];\n meas[argField] = meas[argField] || {};\n meas[argField][op] = new Set([vgField({ op, field: argField }, { forAs: true })]);\n }\n else {\n meas[field] = meas[field] || {};\n meas[field][aggregate] = new Set([vgField(fieldDef, { forAs: true })]);\n }\n // For scale channel with domain === 'unaggregated', add min/max so we can use their union as unaggregated domain\n if (isScaleChannel(channel) && model.scaleDomain(channel) === 'unaggregated') {\n meas[field] = meas[field] || {};\n meas[field]['min'] = new Set([vgField({ field, aggregate: 'min' }, { forAs: true })]);\n meas[field]['max'] = new Set([vgField({ field, aggregate: 'max' }, { forAs: true })]);\n }\n }\n }\n else {\n addDimension(dims, channel, fieldDef, model);\n }\n });\n if (dims.size + keys(meas).length === 0) {\n return null;\n }\n return new AggregateNode(parent, dims, meas);\n }\n static makeFromTransform(parent, t) {\n const dims = new Set();\n const meas = {};\n for (const s of t.aggregate) {\n const { op, field, as } = s;\n if (op) {\n if (op === 'count') {\n meas['*'] = meas['*'] || {};\n meas['*']['count'] = new Set([as ? as : vgField(s, { forAs: true })]);\n }\n else {\n meas[field] = meas[field] || {};\n meas[field][op] = new Set([as ? as : vgField(s, { forAs: true })]);\n }\n }\n }\n for (const s of t.groupby || []) {\n dims.add(s);\n }\n if (dims.size + keys(meas).length === 0) {\n return null;\n }\n return new AggregateNode(parent, dims, meas);\n }\n merge(other) {\n if (setEqual(this.dimensions, other.dimensions)) {\n mergeMeasures(this.measures, other.measures);\n return true;\n }\n else {\n log.debug('different dimensions, cannot merge');\n return false;\n }\n }\n addDimensions(fields) {\n fields.forEach(this.dimensions.add, this.dimensions);\n }\n dependentFields() {\n return new Set([...this.dimensions, ...keys(this.measures)]);\n }\n producedFields() {\n const out = new Set();\n for (const field of keys(this.measures)) {\n for (const op of keys(this.measures[field])) {\n const m = this.measures[field][op];\n if (m.size === 0) {\n out.add(`${op}_${field}`);\n }\n else {\n m.forEach(out.add, out);\n }\n }\n }\n return out;\n }\n hash() {\n return `Aggregate ${hash({ dimensions: this.dimensions, measures: this.measures })}`;\n }\n assemble() {\n const ops = [];\n const fields = [];\n const as = [];\n for (const field of keys(this.measures)) {\n for (const op of keys(this.measures[field])) {\n for (const alias of this.measures[field][op]) {\n as.push(alias);\n ops.push(op);\n fields.push(field === '*' ? null : replacePathInField(field));\n }\n }\n }\n const result = {\n type: 'aggregate',\n groupby: [...this.dimensions],\n ops,\n fields,\n as\n };\n return result;\n }\n}\n//# sourceMappingURL=aggregate.js.map","import { isString } from 'vega-util';\nimport { binToString, isBinning } from '../../bin';\nimport { binRequiresRange, isTypedFieldDef, normalizeBin, vgField } from '../../channeldef';\nimport { duplicate, flatten, hash, keys, unique, vals } from '../../util';\nimport { binFormatExpression } from '../common';\nimport { isUnitModel } from '../model';\nimport { DataFlowNode } from './dataflow';\nfunction rangeFormula(model, fieldDef, channel, config) {\n if (binRequiresRange(fieldDef, channel)) {\n // read format from axis or legend, if there is no format then use config.numberFormat\n const guide = isUnitModel(model) ? model.axis(channel) || model.legend(channel) || {} : {};\n const startField = vgField(fieldDef, { expr: 'datum' });\n const endField = vgField(fieldDef, { expr: 'datum', binSuffix: 'end' });\n return {\n formulaAs: vgField(fieldDef, { binSuffix: 'range', forAs: true }),\n formula: binFormatExpression(startField, endField, guide.format, config)\n };\n }\n return {};\n}\nfunction binKey(bin, field) {\n return `${binToString(bin)}_${field}`;\n}\nfunction getSignalsFromModel(model, key) {\n return {\n signal: model.getName(`${key}_bins`),\n extentSignal: model.getName(`${key}_extent`)\n };\n}\nfunction isBinTransform(t) {\n return 'as' in t;\n}\nfunction createBinComponent(t, bin, model) {\n let as;\n if (isBinTransform(t)) {\n as = isString(t.as) ? [t.as, `${t.as}_end`] : [t.as[0], t.as[1]];\n }\n else {\n as = [vgField(t, { forAs: true }), vgField(t, { binSuffix: 'end', forAs: true })];\n }\n const normalizedBin = normalizeBin(bin, undefined) || {};\n const key = binKey(normalizedBin, t.field);\n const { signal, extentSignal } = getSignalsFromModel(model, key);\n const binComponent = Object.assign({ bin: normalizedBin, field: t.field, as: [as] }, (signal ? { signal } : {}), (extentSignal ? { extentSignal } : {}));\n return { key, binComponent };\n}\nexport class BinNode extends DataFlowNode {\n constructor(parent, bins) {\n super(parent);\n this.bins = bins;\n }\n clone() {\n return new BinNode(null, duplicate(this.bins));\n }\n static makeFromEncoding(parent, model) {\n const bins = model.reduceFieldDef((binComponentIndex, fieldDef, channel) => {\n if (isTypedFieldDef(fieldDef) && isBinning(fieldDef.bin)) {\n const { key, binComponent } = createBinComponent(fieldDef, fieldDef.bin, model);\n binComponentIndex[key] = Object.assign({}, binComponent, binComponentIndex[key], rangeFormula(model, fieldDef, channel, model.config));\n }\n return binComponentIndex;\n }, {});\n if (keys(bins).length === 0) {\n return null;\n }\n return new BinNode(parent, bins);\n }\n /**\n * Creates a bin node from BinTransform.\n * The optional parameter should provide\n */\n static makeFromTransform(parent, t, model) {\n const { key, binComponent } = createBinComponent(t, t.bin, model);\n return new BinNode(parent, {\n [key]: binComponent\n });\n }\n /**\n * Merge bin nodes. This method either integrates the bin config from the other node\n * or if this node already has a bin config, renames the corresponding signal in the model.\n */\n merge(other, renameSignal) {\n for (const key of keys(other.bins)) {\n if (key in this.bins) {\n renameSignal(other.bins[key].signal, this.bins[key].signal);\n // Ensure that we don't have duplicate names for signal pairs\n this.bins[key].as = unique([...this.bins[key].as, ...other.bins[key].as], hash);\n }\n else {\n this.bins[key] = other.bins[key];\n }\n }\n for (const child of other.children) {\n other.removeChild(child);\n child.parent = this;\n }\n other.remove();\n }\n producedFields() {\n return new Set(flatten(flatten(vals(this.bins).map(c => c.as))));\n }\n dependentFields() {\n return new Set(vals(this.bins).map(c => c.field));\n }\n hash() {\n return `Bin ${hash(this.bins)}`;\n }\n assemble() {\n return flatten(vals(this.bins).map(bin => {\n const transform = [];\n const [binAs, ...remainingAs] = bin.as;\n const binTrans = Object.assign({ type: 'bin', field: bin.field, as: binAs, signal: bin.signal }, bin.bin);\n if (!bin.bin.extent && bin.extentSignal) {\n transform.push({\n type: 'extent',\n field: bin.field,\n signal: bin.extentSignal\n });\n binTrans.extent = { signal: bin.extentSignal };\n }\n transform.push(binTrans);\n for (const as of remainingAs) {\n for (let i = 0; i < 2; i++) {\n transform.push({\n type: 'formula',\n expr: vgField({ field: binAs[i] }, { expr: 'datum' }),\n as: as[i]\n });\n }\n }\n if (bin.formula) {\n transform.push({\n type: 'formula',\n expr: bin.formula,\n as: bin.formulaAs\n });\n }\n return transform;\n }));\n }\n}\n//# sourceMappingURL=bin.js.map","import { isArray } from 'vega-util';\nimport { isBinning } from '../../bin';\nimport { COLUMN, FACET_CHANNELS, ROW } from '../../channel';\nimport { vgField } from '../../channeldef';\nimport * as log from '../../log';\nimport { hasDiscreteDomain } from '../../scale';\nimport { DEFAULT_SORT_OP, isSortField } from '../../sort';\nimport { hash } from '../../util';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { HEADER_CHANNELS, HEADER_TYPES } from '../header/component';\nimport { assembleDomain, getFieldFromDomain } from '../scale/domain';\nimport { sortArrayIndexField } from './calculate';\nimport { DataFlowNode } from './dataflow';\n/**\n * A node that helps us track what fields we are faceting by.\n */\nexport class FacetNode extends DataFlowNode {\n /**\n * @param model The facet model.\n * @param name The name that this facet source will have.\n * @param data The source data for this facet data.\n */\n constructor(parent, model, name, data) {\n super(parent);\n this.model = model;\n this.name = name;\n this.data = data;\n for (const channel of FACET_CHANNELS) {\n const fieldDef = model.facet[channel];\n if (fieldDef) {\n const { bin, sort } = fieldDef;\n this[channel] = Object.assign({ name: model.getName(`${channel}_domain`), fields: [vgField(fieldDef), ...(isBinning(bin) ? [vgField(fieldDef, { binSuffix: 'end' })] : [])] }, (isSortField(sort)\n ? { sortField: sort }\n : isArray(sort)\n ? { sortIndexField: sortArrayIndexField(fieldDef, channel) }\n : {}));\n }\n }\n this.childModel = model.child;\n }\n hash() {\n let out = `Facet`;\n for (const channel of FACET_CHANNELS) {\n if (this[channel]) {\n out += ` ${channel.charAt(0)}:${hash(this[channel])}`;\n }\n }\n return out;\n }\n get fields() {\n const f = [];\n for (const channel of FACET_CHANNELS) {\n if (this[channel] && this[channel].fields) {\n f.push(...this[channel].fields);\n }\n }\n return f;\n }\n /**\n * The name to reference this source is its name.\n */\n getSource() {\n return this.name;\n }\n getChildIndependentFieldsWithStep() {\n const childIndependentFieldsWithStep = {};\n for (const channel of ['x', 'y']) {\n const childScaleComponent = this.childModel.component.scales[channel];\n if (childScaleComponent && !childScaleComponent.merged) {\n // independent scale\n const type = childScaleComponent.get('type');\n const range = childScaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n const domain = assembleDomain(this.childModel, channel);\n const field = getFieldFromDomain(domain);\n if (field) {\n childIndependentFieldsWithStep[channel] = field;\n }\n else {\n log.warn('Unknown field for ${channel}. Cannot calculate view size.');\n }\n }\n }\n }\n return childIndependentFieldsWithStep;\n }\n assembleRowColumnHeaderData(channel, crossedDataName, childIndependentFieldsWithStep) {\n const childChannel = { row: 'y', column: 'x' }[channel];\n const fields = [];\n const ops = [];\n const as = [];\n if (childIndependentFieldsWithStep && childIndependentFieldsWithStep[childChannel]) {\n if (crossedDataName) {\n // If there is a crossed data, calculate max\n fields.push(`distinct_${childIndependentFieldsWithStep[childChannel]}`);\n ops.push('max');\n }\n else {\n // If there is no crossed data, just calculate distinct\n fields.push(childIndependentFieldsWithStep[childChannel]);\n ops.push('distinct');\n }\n // Although it is technically a max, just name it distinct so it's easier to refer to it\n as.push(`distinct_${childIndependentFieldsWithStep[childChannel]}`);\n }\n const { sortField, sortIndexField } = this[channel];\n if (sortField) {\n const { op = DEFAULT_SORT_OP, field } = sortField;\n fields.push(field);\n ops.push(op);\n as.push(vgField(sortField, { forAs: true }));\n }\n else if (sortIndexField) {\n fields.push(sortIndexField);\n ops.push('max');\n as.push(sortIndexField);\n }\n return {\n name: this[channel].name,\n // Use data from the crossed one if it exist\n source: crossedDataName || this.data,\n transform: [\n Object.assign({ type: 'aggregate', groupby: this[channel].fields }, (fields.length\n ? {\n fields,\n ops,\n as\n }\n : {}))\n ]\n };\n }\n assembleFacetHeaderData(childIndependentFieldsWithStep) {\n const { columns } = this.model.layout;\n const { layoutHeaders } = this.model.component;\n const data = [];\n const hasSharedAxis = {};\n for (const headerChannel of HEADER_CHANNELS) {\n for (const headerType of HEADER_TYPES) {\n const headers = (layoutHeaders[headerChannel] && layoutHeaders[headerChannel][headerType]) || [];\n for (const header of headers) {\n if (header.axes && header.axes.length > 0) {\n hasSharedAxis[headerChannel] = true;\n break;\n }\n }\n }\n if (hasSharedAxis[headerChannel]) {\n const cardinality = `length(data(\"${this.facet.name}\"))`;\n const stop = headerChannel === 'row'\n ? columns\n ? { signal: `ceil(${cardinality} / ${columns})` }\n : 1\n : columns\n ? { signal: `min(${cardinality}, ${columns})` }\n : { signal: cardinality };\n data.push({\n name: `${this.facet.name}_${headerChannel}`,\n transform: [\n {\n type: 'sequence',\n start: 0,\n stop\n }\n ]\n });\n }\n }\n const { row, column } = hasSharedAxis;\n if (row || column) {\n data.unshift(this.assembleRowColumnHeaderData('facet', null, childIndependentFieldsWithStep));\n }\n return data;\n }\n assemble() {\n const data = [];\n let crossedDataName = null;\n const childIndependentFieldsWithStep = this.getChildIndependentFieldsWithStep();\n const { column, row, facet } = this;\n if (column && row && (childIndependentFieldsWithStep.x || childIndependentFieldsWithStep.y)) {\n // Need to create a cross dataset to correctly calculate cardinality\n crossedDataName = `cross_${this.column.name}_${this.row.name}`;\n const fields = [].concat(childIndependentFieldsWithStep.x || [], childIndependentFieldsWithStep.y || []);\n const ops = fields.map(() => 'distinct');\n data.push({\n name: crossedDataName,\n source: this.data,\n transform: [\n {\n type: 'aggregate',\n groupby: this.fields,\n fields,\n ops\n }\n ]\n });\n }\n for (const channel of [COLUMN, ROW]) {\n if (this[channel]) {\n data.push(this.assembleRowColumnHeaderData(channel, crossedDataName, childIndependentFieldsWithStep));\n }\n }\n if (facet) {\n const facetData = this.assembleFacetHeaderData(childIndependentFieldsWithStep);\n if (facetData) {\n data.push(...facetData);\n }\n }\n return data;\n }\n}\n//# sourceMappingURL=facet.js.map","import { duplicate } from '../../util';\nimport { expression } from '../predicate';\nimport { DataFlowNode } from './dataflow';\nimport { getDependentFields } from './expressions';\nexport class FilterNode extends DataFlowNode {\n constructor(parent, model, filter) {\n super(parent);\n this.model = model;\n this.filter = filter;\n // TODO: refactor this to not take a node and\n // then add a static function makeFromOperand and make the constructor take only an expression\n this.expr = expression(this.model, this.filter, this);\n this._dependentFields = getDependentFields(this.expr);\n }\n clone() {\n return new FilterNode(null, this.model, duplicate(this.filter));\n }\n dependentFields() {\n return this._dependentFields;\n }\n assemble() {\n return {\n type: 'filter',\n expr: this.expr\n };\n }\n hash() {\n return `Filter ${this.expr}`;\n }\n}\n//# sourceMappingURL=filter.js.map","import { isNumber, isString } from 'vega-util';\nimport { isMinMaxOp } from '../../aggregate';\nimport { getMainRangeChannel } from '../../channel';\nimport { isNumberFieldDef, isScaleFieldDef, isTimeFormatFieldDef, isTypedFieldDef } from '../../channeldef';\nimport { isGenerator } from '../../data';\nimport { isDateTime } from '../../datetime';\nimport * as log from '../../log';\nimport { forEachLeaf } from '../../logical';\nimport { isFieldEqualPredicate, isFieldOneOfPredicate, isFieldPredicate, isFieldRangePredicate } from '../../predicate';\nimport { isSortField } from '../../sort';\nimport { accessPathDepth, accessPathWithDatum, duplicate, hash, keys, removePathFromField } from '../../util';\nimport { isFacetModel, isUnitModel } from '../model';\nimport { Split } from '../split';\nimport { DataFlowNode } from './dataflow';\n/**\n * Remove quotes from a string.\n */\nfunction unquote(pattern) {\n if ((pattern[0] === \"'\" && pattern[pattern.length - 1] === \"'\") ||\n (pattern[0] === '\"' && pattern[pattern.length - 1] === '\"')) {\n return pattern.slice(1, -1);\n }\n return pattern;\n}\n/**\n * @param field The field.\n * @param parse What to parse the field as.\n */\nfunction parseExpression(field, parse) {\n const f = accessPathWithDatum(field);\n if (parse === 'number') {\n return `toNumber(${f})`;\n }\n else if (parse === 'boolean') {\n return `toBoolean(${f})`;\n }\n else if (parse === 'string') {\n return `toString(${f})`;\n }\n else if (parse === 'date') {\n return `toDate(${f})`;\n }\n else if (parse === 'flatten') {\n return f;\n }\n else if (parse.indexOf('date:') === 0) {\n const specifier = unquote(parse.slice(5, parse.length));\n return `timeParse(${f},'${specifier}')`;\n }\n else if (parse.indexOf('utc:') === 0) {\n const specifier = unquote(parse.slice(4, parse.length));\n return `utcParse(${f},'${specifier}')`;\n }\n else {\n log.warn(log.message.unrecognizedParse(parse));\n return null;\n }\n}\nexport class ParseNode extends DataFlowNode {\n clone() {\n return new ParseNode(null, duplicate(this._parse));\n }\n constructor(parent, parse) {\n super(parent);\n this._parse = parse;\n }\n hash() {\n return `Parse ${hash(this._parse)}`;\n }\n /**\n * Creates a parse node from a data.format.parse and updates ancestorParse.\n */\n static makeExplicit(parent, model, ancestorParse) {\n // Custom parse\n let explicit = {};\n const data = model.data;\n if (!isGenerator(data) && data && data.format && data.format.parse) {\n explicit = data.format.parse;\n }\n return this.makeWithAncestors(parent, explicit, {}, ancestorParse);\n }\n static makeImplicitFromFilterTransform(parent, transform, ancestorParse) {\n const parse = {};\n forEachLeaf(transform.filter, filter => {\n if (isFieldPredicate(filter)) {\n // Automatically add a parse node for filters with filter objects\n let val = null;\n // For EqualFilter, just use the equal property.\n // For RangeFilter and OneOfFilter, all array members should have\n // the same type, so we only use the first one.\n if (isFieldEqualPredicate(filter)) {\n val = filter.equal;\n }\n else if (isFieldRangePredicate(filter)) {\n val = filter.range[0];\n }\n else if (isFieldOneOfPredicate(filter)) {\n val = (filter.oneOf || filter['in'])[0];\n } // else -- for filter expression, we can't infer anything\n if (val) {\n if (isDateTime(val)) {\n parse[filter.field] = 'date';\n }\n else if (isNumber(val)) {\n parse[filter.field] = 'number';\n }\n else if (isString(val)) {\n parse[filter.field] = 'string';\n }\n }\n if (filter.timeUnit) {\n parse[filter.field] = 'date';\n }\n }\n });\n if (keys(parse).length === 0) {\n return null;\n }\n return this.makeWithAncestors(parent, {}, parse, ancestorParse);\n }\n /**\n * Creates a parse node for implicit parsing from a model and updates ancestorParse.\n */\n static makeImplicitFromEncoding(parent, model, ancestorParse) {\n const implicit = {};\n function add(fieldDef) {\n if (isTimeFormatFieldDef(fieldDef)) {\n implicit[fieldDef.field] = 'date';\n }\n else if (isNumberFieldDef(fieldDef) && isMinMaxOp(fieldDef.aggregate)) {\n implicit[fieldDef.field] = 'number';\n }\n else if (accessPathDepth(fieldDef.field) > 1) {\n // For non-date/non-number (strings and booleans), derive a flattened field for a referenced nested field.\n // (Parsing numbers / dates already flattens numeric and temporal fields.)\n if (!(fieldDef.field in implicit)) {\n implicit[fieldDef.field] = 'flatten';\n }\n }\n else if (isScaleFieldDef(fieldDef) && isSortField(fieldDef.sort) && accessPathDepth(fieldDef.sort.field) > 1) {\n // Flatten fields that we sort by but that are not otherwise flattened.\n if (!(fieldDef.sort.field in implicit)) {\n implicit[fieldDef.sort.field] = 'flatten';\n }\n }\n }\n if (isUnitModel(model) || isFacetModel(model)) {\n // Parse encoded fields\n model.forEachFieldDef((fieldDef, channel) => {\n if (isTypedFieldDef(fieldDef)) {\n add(fieldDef);\n }\n else {\n const mainChannel = getMainRangeChannel(channel);\n if (mainChannel !== channel) {\n const mainFieldDef = model.fieldDef(mainChannel);\n add(Object.assign({}, fieldDef, { type: mainFieldDef.type }));\n }\n else {\n throw new Error(`Non-secondary channel ${channel} must have type in its field definition ${JSON.stringify(fieldDef)}`);\n }\n }\n });\n }\n return this.makeWithAncestors(parent, {}, implicit, ancestorParse);\n }\n /**\n * Creates a parse node from \"explicit\" parse and \"implicit\" parse and updates ancestorParse.\n */\n static makeWithAncestors(parent, explicit, implicit, ancestorParse) {\n // We should not parse what has already been parsed in a parent (explicitly or implicitly) or what has been derived (maked as \"derived\"). We also don't need to flatten a field that has already been parsed.\n for (const field of keys(implicit)) {\n const parsedAs = ancestorParse.getWithExplicit(field);\n if (parsedAs.value !== undefined) {\n // We always ignore derived fields even if they are implicitly defined because we expect users to create the right types.\n if (parsedAs.explicit ||\n parsedAs.value === implicit[field] ||\n parsedAs.value === 'derived' ||\n implicit[field] === 'flatten') {\n delete implicit[field];\n }\n else {\n log.warn(log.message.differentParse(field, implicit[field], parsedAs.value));\n }\n }\n }\n for (const field of keys(explicit)) {\n const parsedAs = ancestorParse.get(field);\n if (parsedAs !== undefined) {\n // Don't parse a field again if it has been parsed with the same type already.\n if (parsedAs === explicit[field]) {\n delete explicit[field];\n }\n else {\n log.warn(log.message.differentParse(field, explicit[field], parsedAs));\n }\n }\n }\n const parse = new Split(explicit, implicit);\n // add the format parse from this model so that children don't parse the same field again\n ancestorParse.copyAll(parse);\n // copy only non-null parses\n const p = {};\n for (const key of keys(parse.combine())) {\n const val = parse.get(key);\n if (val !== null) {\n p[key] = val;\n }\n }\n if (keys(p).length === 0 || ancestorParse.parseNothing) {\n return null;\n }\n return new ParseNode(parent, p);\n }\n get parse() {\n return this._parse;\n }\n merge(other) {\n this._parse = Object.assign({}, this._parse, other.parse);\n other.remove();\n }\n /**\n * Assemble an object for Vega's format.parse property.\n */\n assembleFormatParse() {\n const formatParse = {};\n for (const field of keys(this._parse)) {\n const p = this._parse[field];\n if (accessPathDepth(field) === 1) {\n formatParse[field] = p;\n }\n }\n return formatParse;\n }\n // format parse depends and produces all fields in its parse\n producedFields() {\n return new Set(keys(this._parse));\n }\n dependentFields() {\n return new Set(keys(this._parse));\n }\n assembleTransforms(onlyNested = false) {\n return keys(this._parse)\n .filter(field => (onlyNested ? accessPathDepth(field) > 1 : true))\n .map(field => {\n const expr = parseExpression(field, this._parse[field]);\n if (!expr) {\n return null;\n }\n const formula = {\n type: 'formula',\n expr,\n as: removePathFromField(field) // Vega output is always flattened\n };\n return formula;\n })\n .filter(t => t !== null);\n }\n}\n//# sourceMappingURL=formatparse.js.map","import { vgField } from '../../channeldef';\nimport { duplicate, hash } from '../../util';\nimport { unique } from './../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for the join aggregate transform nodes.\n */\nexport class JoinAggregateTransformNode extends DataFlowNode {\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n }\n clone() {\n return new JoinAggregateTransformNode(null, duplicate(this.transform));\n }\n addDimensions(fields) {\n this.transform.groupby = unique(this.transform.groupby.concat(fields), d => d);\n }\n dependentFields() {\n const out = new Set();\n this.transform.groupby.forEach(f => out.add(f));\n this.transform.joinaggregate\n .map(w => w.field)\n .filter(f => f !== undefined)\n .forEach(f => out.add(f));\n return out;\n }\n producedFields() {\n return new Set(this.transform.joinaggregate.map(this.getDefaultName));\n }\n getDefaultName(joinAggregateFieldDef) {\n return joinAggregateFieldDef.as || vgField(joinAggregateFieldDef);\n }\n hash() {\n return `JoinAggregateTransform ${hash(this.transform)}`;\n }\n assemble() {\n const fields = [];\n const ops = [];\n const as = [];\n for (const joinaggregate of this.transform.joinaggregate) {\n ops.push(joinaggregate.op);\n as.push(this.getDefaultName(joinaggregate));\n fields.push(joinaggregate.field === undefined ? null : joinaggregate.field);\n }\n const groupby = this.transform.groupby;\n return Object.assign({ type: 'joinaggregate', as,\n ops,\n fields }, (groupby !== undefined ? { groupby } : {}));\n }\n}\n//# sourceMappingURL=joinaggregate.js.map","import { isArray, isString } from 'vega-util';\nimport { getTypedFieldDef, isFieldDef, vgField } from '../../channeldef';\nimport { duplicate, getFirstDefined, hash } from '../../util';\nimport { sortParams } from '../common';\nimport { DataFlowNode } from './dataflow';\nfunction getStackByFields(model) {\n return model.stack.stackBy.reduce((fields, by) => {\n const fieldDef = by.fieldDef;\n const _field = vgField(fieldDef);\n if (_field) {\n fields.push(_field);\n }\n return fields;\n }, []);\n}\nfunction isValidAsArray(as) {\n return isArray(as) && as.every(s => isString(s)) && as.length > 1;\n}\nexport class StackNode extends DataFlowNode {\n clone() {\n return new StackNode(null, duplicate(this._stack));\n }\n constructor(parent, stack) {\n super(parent);\n this._stack = stack;\n }\n static makeFromTransform(parent, stackTransform) {\n const { stack, groupby, as, offset = 'zero' } = stackTransform;\n const sortFields = [];\n const sortOrder = [];\n if (stackTransform.sort !== undefined) {\n for (const sortField of stackTransform.sort) {\n sortFields.push(sortField.field);\n sortOrder.push(getFirstDefined(sortField.order, 'ascending'));\n }\n }\n const sort = {\n field: sortFields,\n order: sortOrder\n };\n let normalizedAs;\n if (isValidAsArray(as)) {\n normalizedAs = as;\n }\n else if (isString(as)) {\n normalizedAs = [as, as + '_end'];\n }\n else {\n normalizedAs = [stackTransform.stack + '_start', stackTransform.stack + '_end'];\n }\n return new StackNode(parent, {\n stackField: stack,\n groupby,\n offset,\n sort,\n facetby: [],\n as: normalizedAs\n });\n }\n static makeFromEncoding(parent, model) {\n const stackProperties = model.stack;\n const { encoding } = model;\n if (!stackProperties) {\n return null;\n }\n let dimensionFieldDef;\n if (stackProperties.groupbyChannel) {\n const cDef = encoding[stackProperties.groupbyChannel];\n dimensionFieldDef = getTypedFieldDef(cDef);\n }\n const stackby = getStackByFields(model);\n const orderDef = model.encoding.order;\n let sort;\n if (isArray(orderDef) || isFieldDef(orderDef)) {\n sort = sortParams(orderDef);\n }\n else {\n // default = descending by stackFields\n // FIXME is the default here correct for binned fields?\n sort = stackby.reduce((s, field) => {\n s.field.push(field);\n s.order.push('descending');\n return s;\n }, { field: [], order: [] });\n }\n return new StackNode(parent, {\n dimensionFieldDef,\n stackField: model.vgField(stackProperties.fieldChannel),\n facetby: [],\n stackby,\n sort,\n offset: stackProperties.offset,\n impute: stackProperties.impute,\n as: [\n model.vgField(stackProperties.fieldChannel, { suffix: 'start', forAs: true }),\n model.vgField(stackProperties.fieldChannel, { suffix: 'end', forAs: true })\n ]\n });\n }\n get stack() {\n return this._stack;\n }\n addDimensions(fields) {\n this._stack.facetby.push(...fields);\n }\n dependentFields() {\n const out = new Set();\n out.add(this._stack.stackField);\n this.getGroupbyFields().forEach(out.add);\n this._stack.facetby.forEach(out.add);\n const field = this._stack.sort.field;\n isArray(field) ? field.forEach(out.add) : out.add(field);\n return out;\n }\n producedFields() {\n return new Set(this._stack.as);\n }\n hash() {\n return `Stack ${hash(this._stack)}`;\n }\n getGroupbyFields() {\n const { dimensionFieldDef, impute, groupby } = this._stack;\n if (dimensionFieldDef) {\n if (dimensionFieldDef.bin) {\n if (impute) {\n // For binned group by field with impute, we calculate bin_mid\n // as we cannot impute two fields simultaneously\n return [vgField(dimensionFieldDef, { binSuffix: 'mid' })];\n }\n return [\n // For binned group by field without impute, we need both bin (start) and bin_end\n vgField(dimensionFieldDef, {}),\n vgField(dimensionFieldDef, { binSuffix: 'end' })\n ];\n }\n return [vgField(dimensionFieldDef)];\n }\n return groupby || [];\n }\n assemble() {\n const transform = [];\n const { facetby, dimensionFieldDef, stackField: field, stackby, sort, offset, impute, as } = this._stack;\n // Impute\n if (impute && dimensionFieldDef) {\n if (dimensionFieldDef.bin) {\n // As we can only impute one field at a time, we need to calculate\n // mid point for a binned field\n transform.push({\n type: 'formula',\n expr: '(' +\n vgField(dimensionFieldDef, { expr: 'datum' }) +\n '+' +\n vgField(dimensionFieldDef, { expr: 'datum', binSuffix: 'end' }) +\n ')/2',\n as: vgField(dimensionFieldDef, { binSuffix: 'mid', forAs: true })\n });\n }\n transform.push({\n type: 'impute',\n field,\n groupby: [...stackby, ...facetby],\n key: vgField(dimensionFieldDef, { binSuffix: 'mid' }),\n method: 'value',\n value: 0\n });\n }\n // Stack\n transform.push({\n type: 'stack',\n groupby: [...this.getGroupbyFields(), ...facetby],\n field,\n sort,\n as,\n offset\n });\n return transform;\n }\n}\n//# sourceMappingURL=stack.js.map","import { isAggregateOp } from '../../aggregate';\nimport { vgField } from '../../channeldef';\nimport { duplicate, hash } from '../../util';\nimport { unique } from './../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for the window transform nodes\n */\nexport class WindowTransformNode extends DataFlowNode {\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n }\n clone() {\n return new WindowTransformNode(null, duplicate(this.transform));\n }\n addDimensions(fields) {\n this.transform.groupby = unique(this.transform.groupby.concat(fields), d => d);\n }\n dependentFields() {\n const out = new Set();\n this.transform.groupby.forEach(f => out.add(f));\n this.transform.sort.forEach(m => out.add(m.field));\n this.transform.window\n .map(w => w.field)\n .filter(f => f !== undefined)\n .forEach(f => out.add(f));\n return out;\n }\n producedFields() {\n return new Set(this.transform.window.map(this.getDefaultName));\n }\n getDefaultName(windowFieldDef) {\n return windowFieldDef.as || vgField(windowFieldDef);\n }\n hash() {\n return `WindowTransform ${hash(this.transform)}`;\n }\n assemble() {\n const fields = [];\n const ops = [];\n const as = [];\n const params = [];\n for (const window of this.transform.window) {\n ops.push(window.op);\n as.push(this.getDefaultName(window));\n params.push(window.param === undefined ? null : window.param);\n fields.push(window.field === undefined ? null : window.field);\n }\n const frame = this.transform.frame;\n const groupby = this.transform.groupby;\n if (frame && frame[0] === null && frame[1] === null && ops.every(o => isAggregateOp(o))) {\n // when the window does not rely on any particular window ops or frame, switch to a simpler and more efficient joinaggregate\n return Object.assign({ type: 'joinaggregate', as, ops: ops, fields }, (groupby !== undefined ? { groupby } : {}));\n }\n const sortFields = [];\n const sortOrder = [];\n if (this.transform.sort !== undefined) {\n for (const sortField of this.transform.sort) {\n sortFields.push(sortField.field);\n sortOrder.push(sortField.order || 'ascending');\n }\n }\n const sort = {\n field: sortFields,\n order: sortOrder\n };\n const ignorePeers = this.transform.ignorePeers;\n return Object.assign({ type: 'window', params,\n as,\n ops,\n fields,\n sort }, (ignorePeers !== undefined ? { ignorePeers } : {}), (groupby !== undefined ? { groupby } : {}), (frame !== undefined ? { frame } : {}));\n }\n}\n//# sourceMappingURL=window.js.map","import { MAIN } from '../../data';\nimport { fieldIntersection, flatten, hash, hasIntersection, keys } from '../../util';\nimport { AggregateNode } from './aggregate';\nimport { BinNode } from './bin';\nimport { OutputNode } from './dataflow';\nimport { FacetNode } from './facet';\nimport { FilterNode } from './filter';\nimport { ParseNode } from './formatparse';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nimport { FACET_SCALE_PREFIX } from './optimize';\nimport { BottomUpOptimizer, TopDownOptimizer } from './optimizer';\nimport { SourceNode } from './source';\nimport { StackNode } from './stack';\nimport { TimeUnitNode } from './timeunit';\nimport { WindowTransformNode } from './window';\n/**\n * Start optimization path at the leaves. Useful for merging up or removing things.\n *\n * If the callback returns true, the recursion continues.\n */\nexport function iterateFromLeaves(f) {\n function optimizeNextFromLeaves(node) {\n if (node instanceof SourceNode) {\n return false;\n }\n const next = node.parent;\n const { continueFlag, mutatedFlag } = f(node);\n let childFlag = false;\n if (continueFlag) {\n childFlag = optimizeNextFromLeaves(next);\n }\n return mutatedFlag || childFlag;\n }\n return optimizeNextFromLeaves;\n}\n/**\n * Move parse nodes up to forks.\n */\nexport class MoveParseUp extends BottomUpOptimizer {\n run(node) {\n const parent = node.parent;\n // move parse up by merging or swapping\n if (node instanceof ParseNode) {\n if (parent instanceof SourceNode) {\n return this.flags;\n }\n if (parent.numChildren() > 1) {\n // don't move parse further up but continue with parent.\n this.setContinue();\n return this.flags;\n }\n if (parent instanceof ParseNode) {\n this.setMutated();\n parent.merge(node);\n }\n else {\n // don't swap with nodes that produce something that the parse node depends on (e.g. lookup)\n if (fieldIntersection(parent.producedFields(), node.dependentFields())) {\n this.setContinue();\n return this.flags;\n }\n this.setMutated();\n node.swapWithParent();\n }\n }\n this.setContinue();\n return this.flags;\n }\n}\n/**\n * Merge identical nodes at forks by comparing hashes.\n *\n * Does not need to iterate from leaves so we implement this with recursion as it's a bit simpler.\n */\nexport class MergeIdenticalNodes extends TopDownOptimizer {\n mergeNodes(parent, nodes) {\n const mergedNode = nodes.shift();\n for (const node of nodes) {\n parent.removeChild(node);\n node.parent = mergedNode;\n node.remove();\n }\n }\n run(node) {\n const hashes = node.children.map(x => x.hash());\n const buckets = {};\n for (let i = 0; i < hashes.length; i++) {\n if (buckets[hashes[i]] === undefined) {\n buckets[hashes[i]] = [node.children[i]];\n }\n else {\n buckets[hashes[i]].push(node.children[i]);\n }\n }\n for (const k of keys(buckets)) {\n if (buckets[k].length > 1) {\n this.setMutated();\n this.mergeNodes(node, buckets[k]);\n }\n }\n for (const child of node.children) {\n this.run(child);\n }\n return this.mutatedFlag;\n }\n}\n/**\n * Repeatedly remove leaf nodes that are not output or facet nodes.\n * The reason is that we don't need subtrees that don't have any output nodes.\n * Facet nodes are needed for the row or column domains.\n */\nexport class RemoveUnusedSubtrees extends BottomUpOptimizer {\n run(node) {\n if (node instanceof OutputNode || node.numChildren() > 0 || node instanceof FacetNode) {\n // no need to continue with parent because it is output node or will have children (there was a fork)\n return this.flags;\n }\n else {\n this.setMutated();\n node.remove();\n }\n return this.flags;\n }\n}\n/**\n * Removes duplicate time unit nodes (as determined by the name of the\n * output field) that may be generated due to selections projected over\n * time units.\n */\nexport class RemoveDuplicateTimeUnits extends BottomUpOptimizer {\n constructor() {\n super(...arguments);\n this.fields = new Set();\n }\n run(node) {\n this.setContinue();\n if (node instanceof TimeUnitNode) {\n const pfields = node.producedFields();\n if (hasIntersection(pfields, this.fields)) {\n this.setMutated();\n node.remove();\n }\n else {\n this.fields = new Set([...this.fields, ...pfields]);\n }\n }\n return this.flags;\n }\n reset() {\n this.fields.clear();\n }\n}\n/**\n * Clones the subtree and ignores output nodes except for the leaves, which are renamed.\n */\nfunction cloneSubtree(facet) {\n function clone(node) {\n if (!(node instanceof FacetNode)) {\n const copy = node.clone();\n if (copy instanceof OutputNode) {\n const newName = FACET_SCALE_PREFIX + copy.getSource();\n copy.setSource(newName);\n facet.model.component.data.outputNodes[newName] = copy;\n }\n else if (copy instanceof AggregateNode ||\n copy instanceof StackNode ||\n copy instanceof WindowTransformNode ||\n copy instanceof JoinAggregateTransformNode) {\n copy.addDimensions(facet.fields);\n }\n flatten(node.children.map(clone)).forEach((n) => (n.parent = copy));\n return [copy];\n }\n return flatten(node.children.map(clone));\n }\n return clone;\n}\n/**\n * Move facet nodes down to the next fork or output node. Also pull the main output with the facet node.\n * After moving down the facet node, make a copy of the subtree and make it a child of the main output.\n */\nexport function moveFacetDown(node) {\n if (node instanceof FacetNode) {\n if (node.numChildren() === 1 && !(node.children[0] instanceof OutputNode)) {\n // move down until we hit a fork or output node\n const child = node.children[0];\n if (child instanceof AggregateNode ||\n child instanceof StackNode ||\n child instanceof WindowTransformNode ||\n child instanceof JoinAggregateTransformNode) {\n child.addDimensions(node.fields);\n }\n child.swapWithParent();\n moveFacetDown(node);\n }\n else {\n // move main to facet\n const facetMain = node.model.component.data.main;\n moveMainDownToFacet(facetMain);\n // replicate the subtree and place it before the facet's main node\n const cloner = cloneSubtree(node);\n const copy = flatten(node.children.map(cloner));\n for (const c of copy) {\n c.parent = facetMain;\n }\n }\n }\n else {\n node.children.map(moveFacetDown);\n }\n}\nfunction moveMainDownToFacet(node) {\n if (node instanceof OutputNode && node.type === MAIN) {\n if (node.numChildren() === 1) {\n const child = node.children[0];\n if (!(child instanceof FacetNode)) {\n child.swapWithParent();\n moveMainDownToFacet(node);\n }\n }\n }\n}\n/**\n * Remove nodes that are not required starting from a root.\n */\nexport class RemoveUnnecessaryNodes extends TopDownOptimizer {\n run(node) {\n // remove output nodes that are not required\n if (node instanceof OutputNode && !node.isRequired()) {\n this.setMutated();\n node.remove();\n }\n for (const child of node.children) {\n this.run(child);\n }\n return this.mutatedFlag;\n }\n}\n/**\n * Inserts an Intermediate ParseNode containing all non-conflicting Parse fields and removes the empty ParseNodes\n */\nexport class MergeParse extends BottomUpOptimizer {\n run(node) {\n const parent = node.parent;\n const parseChildren = parent.children.filter((x) => x instanceof ParseNode);\n if (parseChildren.length > 1) {\n const commonParse = {};\n for (const parseNode of parseChildren) {\n const parse = parseNode.parse;\n for (const k of keys(parse)) {\n if (commonParse[k] === undefined) {\n commonParse[k] = parse[k];\n }\n else if (commonParse[k] !== parse[k]) {\n delete commonParse[k];\n }\n }\n }\n if (keys(commonParse).length !== 0) {\n this.setMutated();\n const mergedParseNode = new ParseNode(parent, commonParse);\n for (const parseNode of parseChildren) {\n for (const key of keys(commonParse)) {\n delete parseNode.parse[key];\n }\n parent.removeChild(parseNode);\n parseNode.parent = mergedParseNode;\n if (keys(parseNode.parse).length === 0) {\n parseNode.remove();\n }\n }\n }\n }\n this.setContinue();\n return this.flags;\n }\n}\nexport class MergeAggregateNodes extends BottomUpOptimizer {\n run(node) {\n const parent = node.parent;\n const aggChildren = parent.children.filter((x) => x instanceof AggregateNode);\n // Object which we'll use to map the fields which an aggregate is grouped by to\n // the set of aggregates with that grouping. This is useful as only aggregates\n // with the same group by can be merged\n const groupedAggregates = {};\n // Build groupedAggregates\n for (const agg of aggChildren) {\n const groupBys = hash(keys(agg.groupBy).sort());\n if (!(groupBys in groupedAggregates)) {\n groupedAggregates[groupBys] = [];\n }\n groupedAggregates[groupBys].push(agg);\n }\n // Merge aggregateNodes with same key in groupedAggregates\n for (const group of keys(groupedAggregates)) {\n const mergeableAggs = groupedAggregates[group];\n if (mergeableAggs.length > 1) {\n const mergedAggs = mergeableAggs.pop();\n for (const agg of mergeableAggs) {\n if (mergedAggs.merge(agg)) {\n parent.removeChild(agg);\n agg.parent = mergedAggs;\n agg.remove();\n this.setMutated();\n }\n }\n }\n }\n this.setContinue();\n return this.flags;\n }\n}\n/**\n * Merge bin nodes and move bin nodes up through forks but stop at filters and parse as we want them to stay before the bin node.\n */\nexport class MergeBins extends BottomUpOptimizer {\n constructor(model) {\n super();\n this.model = model;\n }\n run(node) {\n const parent = node.parent;\n const moveBinsUp = !(parent instanceof SourceNode || parent instanceof FilterNode || parent instanceof ParseNode);\n const promotableBins = [];\n const remainingBins = [];\n for (const child of parent.children) {\n if (child instanceof BinNode) {\n if (moveBinsUp && !fieldIntersection(parent.producedFields(), child.dependentFields())) {\n promotableBins.push(child);\n }\n else {\n remainingBins.push(child);\n }\n }\n }\n if (promotableBins.length > 0) {\n const promotedBin = promotableBins.pop();\n for (const bin of promotableBins) {\n promotedBin.merge(bin, this.model.renameSignal.bind(this.model));\n }\n this.setMutated();\n if (parent instanceof BinNode) {\n parent.merge(promotedBin, this.model.renameSignal.bind(this.model));\n }\n else {\n promotedBin.swapWithParent();\n }\n }\n if (remainingBins.length > 1) {\n const remainingBin = remainingBins.pop();\n for (const bin of remainingBins) {\n remainingBin.merge(bin, this.model.renameSignal.bind(this.model));\n }\n this.setMutated();\n }\n this.setContinue();\n return this.flags;\n }\n}\n//# sourceMappingURL=optimizers.js.map","import * as log from '../../log';\nimport { checkLinks } from './debug';\nimport { BottomUpOptimizer } from './optimizer';\nimport * as optimizers from './optimizers';\nexport const FACET_SCALE_PREFIX = 'scale_';\nexport const MAX_OPTIMIZATION_RUNS = 5;\n/**\n * Return all leaf nodes.\n */\nfunction getLeaves(roots) {\n const leaves = [];\n function append(node) {\n if (node.numChildren() === 0) {\n leaves.push(node);\n }\n else {\n node.children.forEach(append);\n }\n }\n roots.forEach(append);\n return leaves;\n}\nexport function isTrue(x) {\n return x;\n}\n/**\n * Run the specified optimizer on the provided nodes.\n *\n * @param optimizer The optimizer instance to run.\n * @param nodes A set of nodes to optimize.\n * @param flag Flag that will be or'ed with return valued from optimization calls to the nodes.\n */\nfunction runOptimizer(optimizer, nodes, flag) {\n const flags = nodes.map(node => {\n if (optimizer instanceof BottomUpOptimizer) {\n const runFlags = optimizer.optimizeNextFromLeaves(node);\n optimizer.reset();\n return runFlags;\n }\n else {\n return optimizer.run(node);\n }\n });\n return flags.some(isTrue) || flag;\n}\nfunction optimizationDataflowHelper(dataComponent, model) {\n let roots = dataComponent.sources;\n let mutatedFlag = false;\n // mutatedFlag should always be on the right side otherwise short circuit logic might cause the mutating method to not execute\n mutatedFlag = runOptimizer(new optimizers.RemoveUnnecessaryNodes(), roots, mutatedFlag);\n // remove source nodes that don't have any children because they also don't have output nodes\n roots = roots.filter(r => r.numChildren() > 0);\n mutatedFlag = runOptimizer(new optimizers.RemoveUnusedSubtrees(), getLeaves(roots), mutatedFlag);\n roots = roots.filter(r => r.numChildren() > 0);\n mutatedFlag = runOptimizer(new optimizers.MoveParseUp(), getLeaves(roots), mutatedFlag);\n mutatedFlag = runOptimizer(new optimizers.MergeBins(model), getLeaves(roots), mutatedFlag);\n mutatedFlag = runOptimizer(new optimizers.RemoveDuplicateTimeUnits(), getLeaves(roots), mutatedFlag);\n mutatedFlag = runOptimizer(new optimizers.MergeParse(), getLeaves(roots), mutatedFlag);\n mutatedFlag = runOptimizer(new optimizers.MergeAggregateNodes(), getLeaves(roots), mutatedFlag);\n mutatedFlag = runOptimizer(new optimizers.MergeIdenticalNodes(), roots, mutatedFlag);\n dataComponent.sources = roots;\n return mutatedFlag;\n}\n/**\n * Optimizes the dataflow of the passed in data component.\n */\nexport function optimizeDataflow(data, model) {\n // check before optimizations\n checkLinks(data.sources);\n let firstPassCounter = 0;\n let secondPassCounter = 0;\n for (let i = 0; i < MAX_OPTIMIZATION_RUNS; i++) {\n if (!optimizationDataflowHelper(data, model)) {\n break;\n }\n firstPassCounter++;\n }\n // move facets down and make a copy of the subtree so that we can have scales at the top level\n data.sources.map(optimizers.moveFacetDown);\n for (let i = 0; i < MAX_OPTIMIZATION_RUNS; i++) {\n if (!optimizationDataflowHelper(data, model)) {\n break;\n }\n secondPassCounter++;\n }\n // check after optimizations\n checkLinks(data.sources);\n if (Math.max(firstPassCounter, secondPassCounter) === MAX_OPTIMIZATION_RUNS) {\n log.warn(`Maximum optimization runs(${MAX_OPTIMIZATION_RUNS}) reached.`);\n }\n}\n//# sourceMappingURL=optimize.js.map","/**\n * A class that behaves like a SignalRef but lazily generates the signal.\n * The provided generator function should use `Model.getSignalName` to use the correct signal name.\n */\nexport class SignalRefWrapper {\n constructor(exprGenerator) {\n Object.defineProperty(this, 'signal', {\n enumerable: true,\n get: exprGenerator\n });\n }\n static fromName(rename, signalName) {\n return new SignalRefWrapper(() => rename(signalName));\n }\n}\n//# sourceMappingURL=signal.js.map","import * as tslib_1 from \"tslib\";\nimport { isObject, isString } from 'vega-util';\nimport { SHARED_DOMAIN_OP_INDEX } from '../../aggregate';\nimport { isBinning } from '../../bin';\nimport { isScaleChannel } from '../../channel';\nimport { binRequiresRange, valueExpr, vgField } from '../../channeldef';\nimport { MAIN, RAW } from '../../data';\nimport * as log from '../../log';\nimport { hasDiscreteDomain, isSelectionDomain } from '../../scale';\nimport { DEFAULT_SORT_OP, isSortArray, isSortByEncoding, isSortField } from '../../sort';\nimport * as util from '../../util';\nimport { isDataRefDomain, isDataRefUnionedDomain, isFieldRefUnionDomain } from '../../vega.schema';\nimport { sortArrayIndexField } from '../data/calculate';\nimport { FACET_SCALE_PREFIX } from '../data/optimize';\nimport { isFacetModel, isUnitModel } from '../model';\nimport { SELECTION_DOMAIN } from '../selection';\nimport { SignalRefWrapper } from '../signal';\nexport function parseScaleDomain(model) {\n if (isUnitModel(model)) {\n parseUnitScaleDomain(model);\n }\n else {\n parseNonUnitScaleDomain(model);\n }\n}\nfunction parseUnitScaleDomain(model) {\n const scales = model.specifiedScales;\n const localScaleComponents = model.component.scales;\n util.keys(localScaleComponents).forEach((channel) => {\n const specifiedScale = scales[channel];\n const specifiedDomain = specifiedScale ? specifiedScale.domain : undefined;\n const domains = parseDomainForChannel(model, channel);\n const localScaleCmpt = localScaleComponents[channel];\n localScaleCmpt.domains = domains;\n if (isSelectionDomain(specifiedDomain)) {\n // As scale parsing occurs before selection parsing, we use a temporary\n // signal here and append the scale.domain definition. This is replaced\n // with the correct domainRaw signal during scale assembly.\n // For more information, see isRawSelectionDomain in selection.ts.\n // FIXME: replace this with a special property in the scaleComponent\n localScaleCmpt.set('domainRaw', {\n signal: SELECTION_DOMAIN + util.hash(specifiedDomain)\n }, true);\n }\n if (model.component.data.isFaceted) {\n // get resolve from closest facet parent as this decides whether we need to refer to cloned subtree or not\n let facetParent = model;\n while (!isFacetModel(facetParent) && facetParent.parent) {\n facetParent = facetParent.parent;\n }\n const resolve = facetParent.component.resolve.scale[channel];\n if (resolve === 'shared') {\n for (const domain of domains) {\n // Replace the scale domain with data output from a cloned subtree after the facet.\n if (isDataRefDomain(domain)) {\n // use data from cloned subtree (which is the same as data but with a prefix added once)\n domain.data = FACET_SCALE_PREFIX + domain.data.replace(FACET_SCALE_PREFIX, '');\n }\n }\n }\n }\n });\n}\nfunction parseNonUnitScaleDomain(model) {\n for (const child of model.children) {\n parseScaleDomain(child);\n }\n const localScaleComponents = model.component.scales;\n util.keys(localScaleComponents).forEach((channel) => {\n let domains;\n let domainRaw = null;\n for (const child of model.children) {\n const childComponent = child.component.scales[channel];\n if (childComponent) {\n if (domains === undefined) {\n domains = childComponent.domains;\n }\n else {\n domains = domains.concat(childComponent.domains);\n }\n const dr = childComponent.get('domainRaw');\n if (domainRaw && dr && domainRaw.signal !== dr.signal) {\n log.warn('The same selection must be used to override scale domains in a layered view.');\n }\n domainRaw = dr;\n }\n }\n localScaleComponents[channel].domains = domains;\n if (domainRaw) {\n localScaleComponents[channel].set('domainRaw', domainRaw, true);\n }\n });\n}\n/**\n * Remove unaggregated domain if it is not applicable\n * Add unaggregated domain if domain is not specified and config.scale.useUnaggregatedDomain is true.\n */\nfunction normalizeUnaggregatedDomain(domain, fieldDef, scaleType, scaleConfig) {\n if (domain === 'unaggregated') {\n const { valid, reason } = canUseUnaggregatedDomain(fieldDef, scaleType);\n if (!valid) {\n log.warn(reason);\n return undefined;\n }\n }\n else if (domain === undefined && scaleConfig.useUnaggregatedDomain) {\n // Apply config if domain is not specified.\n const { valid } = canUseUnaggregatedDomain(fieldDef, scaleType);\n if (valid) {\n return 'unaggregated';\n }\n }\n return domain;\n}\nexport function parseDomainForChannel(model, channel) {\n const scaleType = model.getScaleComponent(channel).get('type');\n const domain = normalizeUnaggregatedDomain(model.scaleDomain(channel), model.fieldDef(channel), scaleType, model.config.scale);\n if (domain !== model.scaleDomain(channel)) {\n model.specifiedScales[channel] = Object.assign({}, model.specifiedScales[channel], { domain });\n }\n // If channel is either X or Y then union them with X2 & Y2 if they exist\n if (channel === 'x' && model.channelHasField('x2')) {\n if (model.channelHasField('x')) {\n return parseSingleChannelDomain(scaleType, domain, model, 'x').concat(parseSingleChannelDomain(scaleType, domain, model, 'x2'));\n }\n else {\n return parseSingleChannelDomain(scaleType, domain, model, 'x2');\n }\n }\n else if (channel === 'y' && model.channelHasField('y2')) {\n if (model.channelHasField('y')) {\n return parseSingleChannelDomain(scaleType, domain, model, 'y').concat(parseSingleChannelDomain(scaleType, domain, model, 'y2'));\n }\n else {\n return parseSingleChannelDomain(scaleType, domain, model, 'y2');\n }\n }\n return parseSingleChannelDomain(scaleType, domain, model, channel);\n}\nfunction mapDomainToDataSignal(domain, type, timeUnit) {\n return domain.map(v => {\n const data = valueExpr(v, { timeUnit, type });\n return { signal: `{data: ${data}}` };\n });\n}\nfunction parseSingleChannelDomain(scaleType, domain, model, channel) {\n const fieldDef = model.fieldDef(channel);\n if (domain && domain !== 'unaggregated' && !isSelectionDomain(domain)) {\n // explicit value\n const { type, timeUnit } = fieldDef;\n if (type === 'temporal' || timeUnit) {\n return mapDomainToDataSignal(domain, type, timeUnit);\n }\n return [domain];\n }\n const stack = model.stack;\n if (stack && channel === stack.fieldChannel) {\n if (stack.offset === 'normalize') {\n return [[0, 1]];\n }\n const data = model.requestDataName(MAIN);\n return [\n {\n data,\n field: model.vgField(channel, { suffix: 'start' })\n },\n {\n data,\n field: model.vgField(channel, { suffix: 'end' })\n }\n ];\n }\n const sort = isScaleChannel(channel)\n ? domainSort(model, channel, scaleType)\n : undefined;\n if (domain === 'unaggregated') {\n const data = model.requestDataName(MAIN);\n const { field } = fieldDef;\n return [\n {\n data,\n field: vgField({ field, aggregate: 'min' })\n },\n {\n data,\n field: vgField({ field, aggregate: 'max' })\n }\n ];\n }\n else if (isBinning(fieldDef.bin)) {\n if (hasDiscreteDomain(scaleType)) {\n if (scaleType === 'bin-ordinal') {\n // we can omit the domain as it is inferred from the `bins` property\n return [];\n }\n // ordinal bin scale takes domain from bin_range, ordered by bin start\n // This is useful for both axis-based scale (x/y) and legend-based scale (other channels).\n return [\n {\n // If sort by aggregation of a specified sort field, we need to use RAW table,\n // so we can aggregate values for the scale independently from the main aggregation.\n data: util.isBoolean(sort) ? model.requestDataName(MAIN) : model.requestDataName(RAW),\n // Use range if we added it and the scale does not support computing a range as a signal.\n field: model.vgField(channel, binRequiresRange(fieldDef, channel) ? { binSuffix: 'range' } : {}),\n // we have to use a sort object if sort = true to make the sort correct by bin start\n sort: sort === true || !isObject(sort)\n ? {\n field: model.vgField(channel, {}),\n op: 'min' // min or max doesn't matter since we sort by the start of the bin range\n }\n : sort\n }\n ];\n }\n else {\n // continuous scales\n if (isBinning(fieldDef.bin)) {\n const signalName = model.getName(vgField(fieldDef, { suffix: 'bins' }));\n return [\n new SignalRefWrapper(() => {\n const signal = model.getSignalName(signalName);\n return `[${signal}.start, ${signal}.stop]`;\n })\n ];\n }\n else {\n return [\n {\n data: model.requestDataName(MAIN),\n field: model.vgField(channel, {})\n }\n ];\n }\n }\n }\n else if (sort) {\n return [\n {\n // If sort by aggregation of a specified sort field, we need to use RAW table,\n // so we can aggregate values for the scale independently from the main aggregation.\n data: util.isBoolean(sort) ? model.requestDataName(MAIN) : model.requestDataName(RAW),\n field: model.vgField(channel),\n sort: sort\n }\n ];\n }\n else {\n return [\n {\n data: model.requestDataName(MAIN),\n field: model.vgField(channel)\n }\n ];\n }\n}\nfunction normalizeSortField(sort, isStacked) {\n const { op, field, order } = sort;\n return Object.assign({ \n // Apply default op\n op: op || (isStacked ? 'sum' : DEFAULT_SORT_OP) }, (field ? { field: util.replacePathInField(field) } : {}), (order ? { order } : {}));\n}\nexport function domainSort(model, channel, scaleType) {\n if (!hasDiscreteDomain(scaleType)) {\n return undefined;\n }\n // save to cast as the only exception is the geojson type for shape, which would not generate a scale\n const fieldDef = model.fieldDef(channel);\n const sort = fieldDef.sort;\n // if the sort is specified with array, use the derived sort index field\n if (isSortArray(sort)) {\n return {\n op: 'min',\n field: sortArrayIndexField(fieldDef, channel),\n order: 'ascending'\n };\n }\n const isStacked = model.stack !== null;\n // Sorted based on an aggregate calculation over a specified sort field (only for ordinal scale)\n if (isSortField(sort)) {\n return normalizeSortField(sort, isStacked);\n }\n else if (isSortByEncoding(sort)) {\n const { encoding, order } = sort;\n const { aggregate, field } = model.fieldDef(encoding);\n const sortField = {\n op: aggregate,\n field,\n order\n };\n return normalizeSortField(sortField, isStacked);\n }\n else if (sort === 'descending') {\n return {\n op: 'min',\n field: model.vgField(channel),\n order: 'descending'\n };\n }\n else if (util.contains(['ascending', undefined /* default =ascending*/], sort)) {\n return true;\n }\n // sort == null\n return undefined;\n}\n/**\n * Determine if a scale can use unaggregated domain.\n * @return {Boolean} Returns true if all of the following conditions apply:\n * 1. `scale.domain` is `unaggregated`\n * 2. Aggregation function is not `count` or `sum`\n * 3. The scale is quantitative or time scale.\n */\nexport function canUseUnaggregatedDomain(fieldDef, scaleType) {\n const { aggregate, type } = fieldDef;\n if (!aggregate) {\n return {\n valid: false,\n reason: log.message.unaggregateDomainHasNoEffectForRawField(fieldDef)\n };\n }\n if (isString(aggregate) && !SHARED_DOMAIN_OP_INDEX[aggregate]) {\n return {\n valid: false,\n reason: log.message.unaggregateDomainWithNonSharedDomainOp(aggregate)\n };\n }\n if (type === 'quantitative') {\n if (scaleType === 'log') {\n return {\n valid: false,\n reason: log.message.unaggregatedDomainWithLogScale(fieldDef)\n };\n }\n }\n return { valid: true };\n}\n/**\n * Converts an array of domains to a single Vega scale domain.\n */\nexport function mergeDomains(domains) {\n const uniqueDomains = util.unique(domains.map(domain => {\n // ignore sort property when computing the unique domains\n if (isDataRefDomain(domain)) {\n const { sort: _s } = domain, domainWithoutSort = tslib_1.__rest(domain, [\"sort\"]);\n return domainWithoutSort;\n }\n return domain;\n }), util.hash);\n const sorts = util.unique(domains\n .map(d => {\n if (isDataRefDomain(d)) {\n const s = d.sort;\n if (s !== undefined && !util.isBoolean(s)) {\n if (s.op === 'count') {\n // let's make sure that if op is count, we don't use a field\n delete s.field;\n }\n if (s.order === 'ascending') {\n // drop order: ascending as it is the default\n delete s.order;\n }\n }\n return s;\n }\n return undefined;\n })\n .filter(s => s !== undefined), util.hash);\n if (uniqueDomains.length === 0) {\n return undefined;\n }\n else if (uniqueDomains.length === 1) {\n const domain = domains[0];\n if (isDataRefDomain(domain) && sorts.length > 0) {\n let sort = sorts[0];\n if (sorts.length > 1) {\n log.warn(log.message.MORE_THAN_ONE_SORT);\n sort = true;\n }\n return Object.assign({}, domain, { sort });\n }\n return domain;\n }\n // only keep simple sort properties that work with unioned domains\n const simpleSorts = util.unique(sorts.map(s => {\n if (util.isBoolean(s)) {\n return s;\n }\n if (s.op === 'count') {\n return s;\n }\n log.warn(log.message.domainSortDropped(s));\n return true;\n }), util.hash);\n let sort;\n if (simpleSorts.length === 1) {\n sort = simpleSorts[0];\n }\n else if (simpleSorts.length > 1) {\n log.warn(log.message.MORE_THAN_ONE_SORT);\n sort = true;\n }\n const allData = util.unique(domains.map(d => {\n if (isDataRefDomain(d)) {\n return d.data;\n }\n return null;\n }), x => x);\n if (allData.length === 1 && allData[0] !== null) {\n // create a union domain of different fields with a single data source\n const domain = Object.assign({ data: allData[0], fields: uniqueDomains.map(d => d.field) }, (sort ? { sort } : {}));\n return domain;\n }\n return Object.assign({ fields: uniqueDomains }, (sort ? { sort } : {}));\n}\n/**\n * Return a field if a scale single field.\n * Return `undefined` otherwise.\n *\n */\nexport function getFieldFromDomain(domain) {\n if (isDataRefDomain(domain) && isString(domain.field)) {\n return domain.field;\n }\n else if (isDataRefUnionedDomain(domain)) {\n let field;\n for (const nonUnionDomain of domain.fields) {\n if (isDataRefDomain(nonUnionDomain) && isString(nonUnionDomain.field)) {\n if (!field) {\n field = nonUnionDomain.field;\n }\n else if (field !== nonUnionDomain.field) {\n log.warn('Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect.');\n return field;\n }\n }\n }\n log.warn('Detected faceted independent scales that union domain of identical fields from different source detected. We will assume that this is the same field from a different fork of the same data source. However, if this is not case, the result view size maybe incorrect.');\n return field;\n }\n else if (isFieldRefUnionDomain(domain)) {\n log.warn('Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.');\n const field = domain.fields[0];\n return isString(field) ? field : undefined;\n }\n return undefined;\n}\nexport function assembleDomain(model, channel) {\n const scaleComponent = model.component.scales[channel];\n const domains = scaleComponent.domains.map(domain => {\n // Correct references to data as the original domain's data was determined\n // in parseScale, which happens before parseData. Thus the original data\n // reference can be incorrect.\n if (isDataRefDomain(domain)) {\n domain.data = model.lookupDataSource(domain.data);\n }\n return domain;\n });\n // domains is an array that has to be merged into a single vega domain\n return mergeDomains(domains);\n}\n//# sourceMappingURL=domain.js.map","import * as tslib_1 from \"tslib\";\nimport { keys } from '../../util';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { isConcatModel, isLayerModel, isRepeatModel } from '../model';\nimport { isRawSelectionDomain } from '../selection';\nimport { assembleSelectionScaleDomain } from '../selection/assemble';\nimport { assembleDomain } from './domain';\nexport function assembleScales(model) {\n if (isLayerModel(model) || isConcatModel(model) || isRepeatModel(model)) {\n // For concat / layer / repeat, include scales of children too\n return model.children.reduce((scales, child) => {\n return scales.concat(assembleScales(child));\n }, assembleScalesForModel(model));\n }\n else {\n // For facet, child scales would not be included in the parent's scope.\n // For unit, there is no child.\n return assembleScalesForModel(model);\n }\n}\nexport function assembleScalesForModel(model) {\n return keys(model.component.scales).reduce((scales, channel) => {\n const scaleComponent = model.component.scales[channel];\n if (scaleComponent.merged) {\n // Skipped merged scales\n return scales;\n }\n const scale = scaleComponent.combine();\n // need to separate const and non const object destruction\n let { domainRaw } = scale;\n const { name, type, domainRaw: _d, range: _r } = scale, otherScaleProps = tslib_1.__rest(scale, [\"name\", \"type\", \"domainRaw\", \"range\"]);\n const range = assembleScaleRange(scale.range, name, channel);\n // As scale parsing occurs before selection parsing, a temporary signal\n // is used for domainRaw. Here, we detect if this temporary signal\n // is set, and replace it with the correct domainRaw signal.\n // For more information, see isRawSelectionDomain in selection.ts.\n if (domainRaw && isRawSelectionDomain(domainRaw)) {\n domainRaw = assembleSelectionScaleDomain(model, domainRaw);\n }\n const domain = assembleDomain(model, channel);\n scales.push(Object.assign({ name,\n type }, (domain ? { domain } : {}), (domainRaw ? { domainRaw } : {}), { range: range }, otherScaleProps));\n return scales;\n }, []);\n}\nexport function assembleScaleRange(scaleRange, scaleName, channel) {\n // add signals to x/y range\n if (channel === 'x' || channel === 'y') {\n if (isVgRangeStep(scaleRange)) {\n // For x/y range step, use a signal created in layout assemble instead of a constant range step.\n return {\n step: { signal: scaleName + '_step' }\n };\n }\n }\n return scaleRange;\n}\n//# sourceMappingURL=assemble.js.map","import { isArray } from 'vega-util';\nimport { some } from '../../util';\nimport { Split } from '../split';\nexport class ScaleComponent extends Split {\n constructor(name, typeWithExplicit) {\n super({}, // no initial explicit property\n { name } // name as initial implicit property\n );\n this.merged = false;\n this.domains = [];\n this.setWithExplicit('type', typeWithExplicit);\n }\n /**\n * Whether the scale definitely includes zero in the domain\n */\n get domainDefinitelyIncludesZero() {\n if (this.get('zero') !== false) {\n return true;\n }\n const domains = this.domains;\n if (isArray(domains)) {\n return some(domains, d => isArray(d) && d.length === 2 && d[0] <= 0 && d[1] >= 0);\n }\n return false;\n }\n}\n//# sourceMappingURL=component.js.map","import { isArray, isNumber } from 'vega-util';\nimport { isBinning } from '../../bin';\nimport { COLOR, FILL, FILLOPACITY, OPACITY, POSITION_SCALE_CHANNELS, SCALE_CHANNELS, SHAPE, SIZE, STROKE, STROKEOPACITY, STROKEWIDTH, X, Y } from '../../channel';\nimport { vgField } from '../../channeldef';\nimport * as log from '../../log';\nimport { channelScalePropertyIncompatability, hasContinuousDomain, hasDiscreteDomain, isContinuousToDiscrete, isExtendedScheme, scaleTypeSupportProperty } from '../../scale';\nimport * as util from '../../util';\nimport { isSignalRef, isVgRangeStep } from '../../vega.schema';\nimport { SignalRefWrapper } from '../signal';\nimport { makeExplicit, makeImplicit } from '../split';\nexport const RANGE_PROPERTIES = ['range', 'rangeStep', 'scheme'];\nfunction getSizeType(channel) {\n return channel === 'x' ? 'width' : channel === 'y' ? 'height' : undefined;\n}\nexport function parseUnitScaleRange(model) {\n const localScaleComponents = model.component.scales;\n // use SCALE_CHANNELS instead of scales[channel] to ensure that x, y come first!\n SCALE_CHANNELS.forEach((channel) => {\n const localScaleCmpt = localScaleComponents[channel];\n if (!localScaleCmpt) {\n return;\n }\n const mergedScaleCmpt = model.getScaleComponent(channel);\n const specifiedScale = model.specifiedScales[channel];\n const fieldDef = model.fieldDef(channel);\n // Read if there is a specified width/height\n const sizeType = getSizeType(channel);\n let sizeSpecified = sizeType ? !!model.component.layoutSize.get(sizeType) : undefined;\n const scaleType = mergedScaleCmpt.get('type');\n // if autosize is fit, size cannot be data driven\n const rangeStep = util.contains(['point', 'band'], scaleType) || !!specifiedScale.rangeStep;\n if (sizeType && model.fit && !sizeSpecified && rangeStep) {\n log.warn(log.message.CANNOT_FIX_RANGE_STEP_WITH_FIT);\n sizeSpecified = true;\n }\n const xyRangeSteps = getXYRangeStep(model);\n const rangeWithExplicit = parseRangeForChannel(channel, model.getSignalName.bind(model), scaleType, fieldDef.type, specifiedScale, model.config, localScaleCmpt.get('zero'), model.mark, sizeSpecified, model.getName(sizeType), xyRangeSteps);\n localScaleCmpt.setWithExplicit('range', rangeWithExplicit);\n });\n}\nfunction getRangeStep(model, channel) {\n const scaleCmpt = model.getScaleComponent(channel);\n if (!scaleCmpt) {\n return undefined;\n }\n const scaleType = scaleCmpt.get('type');\n const fieldDef = model.fieldDef(channel);\n if (hasDiscreteDomain(scaleType)) {\n const range = scaleCmpt && scaleCmpt.get('range');\n if (range && isVgRangeStep(range) && isNumber(range.step)) {\n return range.step;\n // TODO: support the case without range step\n }\n }\n else if (fieldDef && fieldDef.bin && isBinning(fieldDef.bin)) {\n const binSignal = model.getName(vgField(fieldDef, { suffix: 'bins' }));\n // TODO: extract this to be range step signal\n const sizeType = getSizeType(channel);\n const sizeSignal = model.getName(sizeType);\n return new SignalRefWrapper(() => {\n const updatedName = model.getSignalName(binSignal);\n const binCount = `(${updatedName}.stop - ${updatedName}.start) / ${updatedName}.step`;\n return `${model.getSignalName(sizeSignal)} / (${binCount})`;\n });\n }\n return undefined;\n}\nfunction getXYRangeStep(model) {\n const steps = [];\n for (const channel of POSITION_SCALE_CHANNELS) {\n const step = getRangeStep(model, channel);\n if (step !== undefined) {\n steps.push(step);\n }\n }\n return steps;\n}\n/**\n * Return mixins that includes one of the range properties (range, rangeStep, scheme).\n */\nexport function parseRangeForChannel(channel, getSignalName, scaleType, type, specifiedScale, config, zero, mark, sizeSpecified, sizeSignal, xyRangeSteps) {\n const noRangeStep = sizeSpecified || specifiedScale.rangeStep === null;\n // Check if any of the range properties is specified.\n // If so, check if it is compatible and make sure that we only output one of the properties\n for (const property of RANGE_PROPERTIES) {\n if (specifiedScale[property] !== undefined) {\n const supportedByScaleType = scaleTypeSupportProperty(scaleType, property);\n const channelIncompatability = channelScalePropertyIncompatability(channel, property);\n if (!supportedByScaleType) {\n log.warn(log.message.scalePropertyNotWorkWithScaleType(scaleType, property, channel));\n }\n else if (channelIncompatability) {\n // channel\n log.warn(channelIncompatability);\n }\n else {\n switch (property) {\n case 'range':\n return makeExplicit(specifiedScale[property]);\n case 'scheme':\n return makeExplicit(parseScheme(specifiedScale[property]));\n case 'rangeStep': {\n const rangeStep = specifiedScale[property];\n if (rangeStep !== null) {\n if (!sizeSpecified) {\n return makeExplicit({ step: rangeStep });\n }\n else {\n // If top-level size is specified, we ignore specified rangeStep.\n log.warn(log.message.rangeStepDropped(channel));\n }\n }\n }\n }\n }\n }\n }\n return makeImplicit(defaultRange(channel, getSignalName, scaleType, type, config, zero, mark, sizeSignal, xyRangeSteps, noRangeStep, specifiedScale.domain));\n}\nfunction parseScheme(scheme) {\n if (isExtendedScheme(scheme)) {\n return Object.assign({ scheme: scheme.name }, util.omit(scheme, ['name']));\n }\n return { scheme: scheme };\n}\nfunction defaultRange(channel, getSignalName, scaleType, type, config, zero, mark, sizeSignal, xyRangeSteps, noRangeStep, domain) {\n switch (channel) {\n case X:\n case Y:\n if (util.contains(['point', 'band'], scaleType) && !noRangeStep) {\n if (channel === X && mark === 'text') {\n if (config.scale.textXRangeStep) {\n return { step: config.scale.textXRangeStep };\n }\n }\n else {\n if (config.scale.rangeStep) {\n return { step: config.scale.rangeStep };\n }\n }\n }\n // If range step is null, use zero to width or height.\n // Note that these range signals are temporary\n // as they can be merged and renamed.\n // (We do not have the right size signal here since parseLayoutSize() happens after parseScale().)\n // We will later replace these temporary names with\n // the final name in assembleScaleRange()\n if (channel === Y && hasContinuousDomain(scaleType)) {\n // For y continuous scale, we have to start from the height as the bottom part has the max value.\n return [SignalRefWrapper.fromName(getSignalName, sizeSignal), 0];\n }\n else {\n return [0, SignalRefWrapper.fromName(getSignalName, sizeSignal)];\n }\n case SIZE: {\n // TODO: support custom rangeMin, rangeMax\n const rangeMin = sizeRangeMin(mark, zero, config);\n const rangeMax = sizeRangeMax(mark, xyRangeSteps, config);\n if (isContinuousToDiscrete(scaleType)) {\n return interpolateRange(rangeMin, rangeMax, defaultContinuousToDiscreteCount(scaleType, config, domain, channel));\n }\n else {\n return [rangeMin, rangeMax];\n }\n }\n case STROKEWIDTH:\n // TODO: support custom rangeMin, rangeMax\n return [config.scale.minStrokeWidth, config.scale.maxStrokeWidth];\n case SHAPE:\n return 'symbol';\n case COLOR:\n case FILL:\n case STROKE:\n if (scaleType === 'ordinal') {\n // Only nominal data uses ordinal scale by default\n return type === 'nominal' ? 'category' : 'ordinal';\n }\n else {\n return mark === 'rect' || mark === 'geoshape' ? 'heatmap' : 'ramp';\n }\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // TODO: support custom rangeMin, rangeMax\n return [config.scale.minOpacity, config.scale.maxOpacity];\n }\n /* istanbul ignore next: should never reach here */\n throw new Error(`Scale range undefined for channel ${channel}`);\n}\nexport function defaultContinuousToDiscreteCount(scaleType, config, domain, channel) {\n switch (scaleType) {\n case 'quantile':\n return config.scale.quantileCount;\n case 'quantize':\n return config.scale.quantizeCount;\n case 'threshold':\n if (domain !== undefined && isArray(domain)) {\n return domain.length + 1;\n }\n else {\n log.warn(log.message.domainRequiredForThresholdScale(channel));\n // default threshold boundaries for threshold scale since domain has cardinality of 2\n return 3;\n }\n }\n}\n/**\n * Returns the linear interpolation of the range according to the cardinality\n *\n * @param rangeMin start of the range\n * @param rangeMax end of the range\n * @param cardinality number of values in the output range\n */\nexport function interpolateRange(rangeMin, rangeMax, cardinality) {\n // always return a signal since it's better to compute the sequence in Vega later\n const f = () => {\n const rMax = isSignalRef(rangeMax) ? rangeMax.signal : rangeMax;\n const step = `(${rMax} - ${rangeMin}) / (${cardinality} - 1)`;\n return `sequence(${rangeMin}, ${rangeMax} + ${step}, ${step})`;\n };\n if (isSignalRef(rangeMax)) {\n return new SignalRefWrapper(f);\n }\n else {\n return { signal: f() };\n }\n}\nfunction sizeRangeMin(mark, zero, config) {\n if (zero) {\n return 0;\n }\n switch (mark) {\n case 'bar':\n case 'tick':\n return config.scale.minBandSize;\n case 'line':\n case 'trail':\n case 'rule':\n return config.scale.minStrokeWidth;\n case 'text':\n return config.scale.minFontSize;\n case 'point':\n case 'square':\n case 'circle':\n return config.scale.minSize;\n }\n /* istanbul ignore next: should never reach here */\n // sizeRangeMin not implemented for the mark\n throw new Error(log.message.incompatibleChannel('size', mark));\n}\nexport const MAX_SIZE_RANGE_STEP_RATIO = 0.95;\nfunction sizeRangeMax(mark, xyRangeSteps, config) {\n const scaleConfig = config.scale;\n switch (mark) {\n case 'bar':\n case 'tick': {\n if (config.scale.maxBandSize !== undefined) {\n return config.scale.maxBandSize;\n }\n const min = minXYRangeStep(xyRangeSteps, config.scale);\n if (isNumber(min)) {\n return min - 1;\n }\n else {\n return new SignalRefWrapper(() => `${min.signal} - 1`);\n }\n }\n case 'line':\n case 'trail':\n case 'rule':\n return config.scale.maxStrokeWidth;\n case 'text':\n return config.scale.maxFontSize;\n case 'point':\n case 'square':\n case 'circle': {\n if (config.scale.maxSize) {\n return config.scale.maxSize;\n }\n const pointStep = minXYRangeStep(xyRangeSteps, scaleConfig);\n if (isNumber(pointStep)) {\n return Math.pow(MAX_SIZE_RANGE_STEP_RATIO * pointStep, 2);\n }\n else {\n return new SignalRefWrapper(() => `pow(${MAX_SIZE_RANGE_STEP_RATIO} * ${pointStep.signal}, 2)`);\n }\n }\n }\n /* istanbul ignore next: should never reach here */\n // sizeRangeMax not implemented for the mark\n throw new Error(log.message.incompatibleChannel('size', mark));\n}\n/**\n * @returns {number} Range step of x or y or minimum between the two if both are ordinal scale.\n */\nfunction minXYRangeStep(xyRangeSteps, scaleConfig) {\n if (xyRangeSteps.length > 0) {\n let min = Infinity;\n for (const step of xyRangeSteps) {\n if (isSignalRef(step)) {\n min = undefined;\n }\n else {\n if (min !== undefined && step < min) {\n min = step;\n }\n }\n }\n return min !== undefined\n ? min\n : new SignalRefWrapper(() => {\n const exprs = xyRangeSteps.map(e => (isSignalRef(e) ? e.signal : e));\n return `min(${exprs.join(', ')})`;\n });\n }\n if (scaleConfig.rangeStep) {\n return scaleConfig.rangeStep;\n }\n return 21; // FIXME: re-evaluate the default value here.\n}\n//# sourceMappingURL=range.js.map","import { isArray } from 'vega-util';\nimport { isBinned, isBinning, isBinParams } from '../../bin';\nimport { COLOR, FILL, STROKE, X, Y } from '../../channel';\nimport { vgField } from '../../channeldef';\nimport * as log from '../../log';\nimport { channelScalePropertyIncompatability, hasContinuousDomain, isContinuousToContinuous, isContinuousToDiscrete, ScaleType, scaleTypeSupportProperty } from '../../scale';\nimport * as util from '../../util';\nimport { contains, getFirstDefined, keys } from '../../util';\nimport { isUnitModel } from '../model';\nimport { mergeValuesWithExplicit, tieBreakByComparing } from '../split';\nimport { SignalRefWrapper } from './../signal';\nimport { parseUnitScaleRange } from './range';\nexport function parseScaleProperty(model, property) {\n if (isUnitModel(model)) {\n parseUnitScaleProperty(model, property);\n }\n else {\n parseNonUnitScaleProperty(model, property);\n }\n}\nfunction parseUnitScaleProperty(model, property) {\n const localScaleComponents = model.component.scales;\n keys(localScaleComponents).forEach((channel) => {\n const specifiedScale = model.specifiedScales[channel];\n const localScaleCmpt = localScaleComponents[channel];\n const mergedScaleCmpt = model.getScaleComponent(channel);\n const fieldDef = model.fieldDef(channel);\n const config = model.config;\n const specifiedValue = specifiedScale[property];\n const sType = mergedScaleCmpt.get('type');\n const supportedByScaleType = scaleTypeSupportProperty(sType, property);\n const channelIncompatability = channelScalePropertyIncompatability(channel, property);\n if (specifiedValue !== undefined) {\n // If there is a specified value, check if it is compatible with scale type and channel\n if (!supportedByScaleType) {\n log.warn(log.message.scalePropertyNotWorkWithScaleType(sType, property, channel));\n }\n else if (channelIncompatability) {\n // channel\n log.warn(channelIncompatability);\n }\n }\n if (supportedByScaleType && channelIncompatability === undefined) {\n if (specifiedValue !== undefined) {\n // copyKeyFromObject ensures type safety\n localScaleCmpt.copyKeyFromObject(property, specifiedScale);\n }\n else {\n const value = getDefaultValue(property, model, channel, fieldDef, mergedScaleCmpt.get('type'), mergedScaleCmpt.get('padding'), mergedScaleCmpt.get('paddingInner'), specifiedScale.domain, model.markDef, config);\n if (value !== undefined) {\n localScaleCmpt.set(property, value, false);\n }\n }\n }\n });\n}\n// Note: This method is used in Voyager.\nexport function getDefaultValue(property, model, channel, fieldDef, scaleType, scalePadding, scalePaddingInner, specifiedDomain, markDef, config) {\n const scaleConfig = config.scale;\n const { type, sort } = fieldDef;\n // If we have default rule-base, determine default value first\n switch (property) {\n case 'bins':\n return bins(model, fieldDef);\n case 'interpolate':\n return interpolate(channel, type);\n case 'nice':\n return nice(scaleType, channel, fieldDef);\n case 'padding':\n return padding(channel, scaleType, scaleConfig, fieldDef, markDef, config.bar);\n case 'paddingInner':\n return paddingInner(scalePadding, channel, markDef.type, scaleConfig);\n case 'paddingOuter':\n return paddingOuter(scalePadding, channel, scaleType, markDef.type, scalePaddingInner, scaleConfig);\n case 'reverse':\n return reverse(scaleType, sort);\n case 'zero':\n return zero(channel, fieldDef, specifiedDomain, markDef, scaleType);\n }\n // Otherwise, use scale config\n return scaleConfig[property];\n}\n// This method is here rather than in range.ts to avoid circular dependency.\nexport function parseScaleRange(model) {\n if (isUnitModel(model)) {\n parseUnitScaleRange(model);\n }\n else {\n parseNonUnitScaleProperty(model, 'range');\n }\n}\nexport function parseNonUnitScaleProperty(model, property) {\n const localScaleComponents = model.component.scales;\n for (const child of model.children) {\n if (property === 'range') {\n parseScaleRange(child);\n }\n else {\n parseScaleProperty(child, property);\n }\n }\n keys(localScaleComponents).forEach((channel) => {\n let valueWithExplicit;\n for (const child of model.children) {\n const childComponent = child.component.scales[channel];\n if (childComponent) {\n const childValueWithExplicit = childComponent.getWithExplicit(property);\n valueWithExplicit = mergeValuesWithExplicit(valueWithExplicit, childValueWithExplicit, property, 'scale', tieBreakByComparing((v1, v2) => {\n switch (property) {\n case 'range':\n // For range step, prefer larger step\n if (v1.step && v2.step) {\n return v1.step - v2.step;\n }\n return 0;\n // TODO: precedence rule for other properties\n }\n return 0;\n }));\n }\n }\n localScaleComponents[channel].setWithExplicit(property, valueWithExplicit);\n });\n}\nexport function bins(model, fieldDef) {\n const bin = fieldDef.bin;\n if (isBinning(bin)) {\n const signal = model.getName(vgField(fieldDef, { suffix: 'bins' }));\n return new SignalRefWrapper(() => {\n return model.getSignalName(signal);\n });\n }\n else if (isBinned(bin) && isBinParams(bin) && bin.step !== undefined) {\n // start and stop will be determined from the scale domain\n return {\n step: bin.step\n };\n }\n return undefined;\n}\nexport function interpolate(channel, type) {\n if (contains([COLOR, FILL, STROKE], channel) && type !== 'nominal') {\n return 'hcl';\n }\n return undefined;\n}\nexport function nice(scaleType, channel, fieldDef) {\n if (fieldDef.bin || util.contains([ScaleType.TIME, ScaleType.UTC], scaleType)) {\n return undefined;\n }\n return util.contains([X, Y], channel) ? true : undefined;\n}\nexport function padding(channel, scaleType, scaleConfig, fieldDef, markDef, barConfig) {\n if (util.contains([X, Y], channel)) {\n if (isContinuousToContinuous(scaleType)) {\n if (scaleConfig.continuousPadding !== undefined) {\n return scaleConfig.continuousPadding;\n }\n const { type, orient } = markDef;\n if (type === 'bar' && !fieldDef.bin) {\n if ((orient === 'vertical' && channel === 'x') || (orient === 'horizontal' && channel === 'y')) {\n return barConfig.continuousBandSize;\n }\n }\n }\n if (scaleType === ScaleType.POINT) {\n return scaleConfig.pointPadding;\n }\n }\n return undefined;\n}\nexport function paddingInner(paddingValue, channel, mark, scaleConfig) {\n if (paddingValue !== undefined) {\n // If user has already manually specified \"padding\", no need to add default paddingInner.\n return undefined;\n }\n if (util.contains([X, Y], channel)) {\n // Padding is only set for X and Y by default.\n // Basically it doesn't make sense to add padding for color and size.\n // paddingOuter would only be called if it's a band scale, just return the default for bandScale.\n const { bandPaddingInner, barBandPaddingInner, rectBandPaddingInner } = scaleConfig;\n return getFirstDefined(bandPaddingInner, mark === 'bar' ? barBandPaddingInner : rectBandPaddingInner);\n }\n return undefined;\n}\nexport function paddingOuter(paddingValue, channel, scaleType, mark, paddingInnerValue, scaleConfig) {\n if (paddingValue !== undefined) {\n // If user has already manually specified \"padding\", no need to add default paddingOuter.\n return undefined;\n }\n if (util.contains([X, Y], channel)) {\n // Padding is only set for X and Y by default.\n // Basically it doesn't make sense to add padding for color and size.\n if (scaleType === ScaleType.BAND) {\n const { bandPaddingOuter, barBandPaddingOuter, rectBandPaddingOuter } = scaleConfig;\n return getFirstDefined(bandPaddingOuter, mark === 'bar' ? barBandPaddingOuter : rectBandPaddingOuter, \n /* By default, paddingOuter is paddingInner / 2. The reason is that\n size (width/height) = step * (cardinality - paddingInner + 2 * paddingOuter).\n and we want the width/height to be integer by default.\n Note that step (by default) and cardinality are integers.) */\n paddingInnerValue / 2);\n }\n }\n return undefined;\n}\nexport function reverse(scaleType, sort) {\n if (hasContinuousDomain(scaleType) && sort === 'descending') {\n // For continuous domain scales, Vega does not support domain sort.\n // Thus, we reverse range instead if sort is descending\n return true;\n }\n return undefined;\n}\nexport function zero(channel, fieldDef, specifiedDomain, markDef, scaleType) {\n // If users explicitly provide a domain range, we should not augment zero as that will be unexpected.\n const hasCustomDomain = !!specifiedDomain && specifiedDomain !== 'unaggregated';\n if (hasCustomDomain) {\n if (hasContinuousDomain(scaleType)) {\n if (isArray(specifiedDomain)) {\n const first = specifiedDomain[0];\n const last = specifiedDomain[specifiedDomain.length - 1];\n if (first <= 0 && last >= 0) {\n // if the domain includes zero, make zero remains true\n return true;\n }\n }\n return false;\n }\n }\n // If there is no custom domain, return true only for the following cases:\n // 1) using quantitative field with size\n // While this can be either ratio or interval fields, our assumption is that\n // ratio are more common. However, if the scaleType is discretizing scale, we want to return\n // false so that range doesn't start at zero\n if (channel === 'size' && fieldDef.type === 'quantitative' && !isContinuousToDiscrete(scaleType)) {\n return true;\n }\n // 2) non-binned, quantitative x-scale or y-scale\n // (For binning, we should not include zero by default because binning are calculated without zero.)\n if (!fieldDef.bin && util.contains([X, Y], channel)) {\n const { orient, type } = markDef;\n if (contains(['bar', 'area', 'line', 'trail'], type)) {\n if ((orient === 'horizontal' && channel === 'y') || (orient === 'vertical' && channel === 'x')) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n//# sourceMappingURL=properties.js.map","import { isBinning } from '../../bin';\nimport { isColorChannel, isScaleChannel, rangeType } from '../../channel';\nimport * as log from '../../log';\nimport { channelSupportScaleType, scaleTypeSupportDataType } from '../../scale';\nimport * as util from '../../util';\n/**\n * Determine if there is a specified scale type and if it is appropriate,\n * or determine default type if type is unspecified or inappropriate.\n */\n// NOTE: CompassQL uses this method.\nexport function scaleType(specifiedScale, channel, fieldDef, mark) {\n const defaultScaleType = defaultType(channel, fieldDef, mark);\n const { type } = specifiedScale;\n if (!isScaleChannel(channel)) {\n // There is no scale for these channels\n return null;\n }\n if (type !== undefined) {\n // Check if explicitly specified scale type is supported by the channel\n if (!channelSupportScaleType(channel, type)) {\n log.warn(log.message.scaleTypeNotWorkWithChannel(channel, type, defaultScaleType));\n return defaultScaleType;\n }\n // Check if explicitly specified scale type is supported by the data type\n if (!scaleTypeSupportDataType(type, fieldDef.type)) {\n log.warn(log.message.scaleTypeNotWorkWithFieldDef(type, defaultScaleType));\n return defaultScaleType;\n }\n return type;\n }\n return defaultScaleType;\n}\n/**\n * Determine appropriate default scale type.\n */\n// NOTE: Voyager uses this method.\nfunction defaultType(channel, fieldDef, mark) {\n switch (fieldDef.type) {\n case 'nominal':\n case 'ordinal':\n if (isColorChannel(channel) || rangeType(channel) === 'discrete') {\n if (channel === 'shape' && fieldDef.type === 'ordinal') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'ordinal'));\n }\n return 'ordinal';\n }\n if (util.contains(['x', 'y'], channel)) {\n if (util.contains(['rect', 'bar', 'rule'], mark)) {\n // The rect/bar mark should fit into a band.\n // For rule, using band scale to make rule align with axis ticks better https://github.com/vega/vega-lite/issues/3429\n return 'band';\n }\n if (mark === 'bar') {\n return 'band';\n }\n }\n // Otherwise, use ordinal point scale so we can easily get center positions of the marks.\n return 'point';\n case 'temporal':\n if (isColorChannel(channel)) {\n return 'time';\n }\n else if (rangeType(channel) === 'discrete') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'temporal'));\n // TODO: consider using quantize (equivalent to binning) once we have it\n return 'ordinal';\n }\n return 'time';\n case 'quantitative':\n if (isColorChannel(channel)) {\n if (isBinning(fieldDef.bin)) {\n return 'bin-ordinal';\n }\n return 'linear';\n }\n else if (rangeType(channel) === 'discrete') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'quantitative'));\n // TODO: consider using quantize (equivalent to binning) once we have it\n return 'ordinal';\n }\n return 'linear';\n case 'geojson':\n return undefined;\n }\n /* istanbul ignore next: should never reach this */\n throw new Error(log.message.invalidFieldType(fieldDef.type));\n}\n//# sourceMappingURL=type.js.map","import { SCALE_CHANNELS, SHAPE } from '../../channel';\nimport { hasConditionalFieldDef, isFieldDef } from '../../channeldef';\nimport { GEOSHAPE } from '../../mark';\nimport { NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES, scaleCompatible, scaleTypePrecedence } from '../../scale';\nimport { GEOJSON } from '../../type';\nimport { keys } from '../../util';\nimport { isUnitModel } from '../model';\nimport { defaultScaleResolve } from '../resolve';\nimport { mergeValuesWithExplicit, tieBreakByComparing } from '../split';\nimport { ScaleComponent } from './component';\nimport { parseScaleDomain } from './domain';\nimport { parseScaleProperty, parseScaleRange } from './properties';\nimport { scaleType } from './type';\nexport function parseScales(model) {\n parseScaleCore(model);\n parseScaleDomain(model);\n for (const prop of NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES) {\n parseScaleProperty(model, prop);\n }\n // range depends on zero\n parseScaleRange(model);\n}\nexport function parseScaleCore(model) {\n if (isUnitModel(model)) {\n model.component.scales = parseUnitScaleCore(model);\n }\n else {\n model.component.scales = parseNonUnitScaleCore(model);\n }\n}\n/**\n * Parse scales for all channels of a model.\n */\nfunction parseUnitScaleCore(model) {\n const { encoding, mark } = model;\n return SCALE_CHANNELS.reduce((scaleComponents, channel) => {\n let fieldDef;\n let specifiedScale;\n const channelDef = encoding[channel];\n // Don't generate scale for shape of geoshape\n if (isFieldDef(channelDef) && mark === GEOSHAPE && channel === SHAPE && channelDef.type === GEOJSON) {\n return scaleComponents;\n }\n if (isFieldDef(channelDef)) {\n fieldDef = channelDef;\n specifiedScale = channelDef.scale;\n }\n else if (hasConditionalFieldDef(channelDef)) {\n fieldDef = channelDef.condition;\n specifiedScale = channelDef.condition['scale']; // We use ['scale'] since we know that channel here has scale for sure\n }\n if (fieldDef && specifiedScale !== null && specifiedScale !== false) {\n specifiedScale = specifiedScale || {};\n const sType = scaleType(specifiedScale, channel, fieldDef, mark);\n scaleComponents[channel] = new ScaleComponent(model.scaleName(channel + '', true), {\n value: sType,\n explicit: specifiedScale.type === sType\n });\n }\n return scaleComponents;\n }, {});\n}\nconst scaleTypeTieBreaker = tieBreakByComparing((st1, st2) => scaleTypePrecedence(st1) - scaleTypePrecedence(st2));\nfunction parseNonUnitScaleCore(model) {\n const scaleComponents = (model.component.scales = {});\n const scaleTypeWithExplicitIndex = {};\n const resolve = model.component.resolve;\n // Parse each child scale and determine if a particular channel can be merged.\n for (const child of model.children) {\n parseScaleCore(child);\n // Instead of always merging right away -- check if it is compatible to merge first!\n keys(child.component.scales).forEach((channel) => {\n // if resolve is undefined, set default first\n resolve.scale[channel] = resolve.scale[channel] || defaultScaleResolve(channel, model);\n if (resolve.scale[channel] === 'shared') {\n const explicitScaleType = scaleTypeWithExplicitIndex[channel];\n const childScaleType = child.component.scales[channel].getWithExplicit('type');\n if (explicitScaleType) {\n if (scaleCompatible(explicitScaleType.value, childScaleType.value)) {\n // merge scale component if type are compatible\n scaleTypeWithExplicitIndex[channel] = mergeValuesWithExplicit(explicitScaleType, childScaleType, 'type', 'scale', scaleTypeTieBreaker);\n }\n else {\n // Otherwise, update conflicting channel to be independent\n resolve.scale[channel] = 'independent';\n // Remove from the index so they don't get merged\n delete scaleTypeWithExplicitIndex[channel];\n }\n }\n else {\n scaleTypeWithExplicitIndex[channel] = childScaleType;\n }\n }\n });\n }\n // Merge each channel listed in the index\n keys(scaleTypeWithExplicitIndex).forEach((channel) => {\n // Create new merged scale component\n const name = model.scaleName(channel, true);\n const typeWithExplicit = scaleTypeWithExplicitIndex[channel];\n scaleComponents[channel] = new ScaleComponent(name, typeWithExplicit);\n // rename each child and mark them as merged\n for (const child of model.children) {\n const childScale = child.component.scales[channel];\n if (childScale) {\n child.renameScale(childScale.get('name'), name);\n childScale.merged = true;\n }\n }\n });\n return scaleComponents;\n}\n//# sourceMappingURL=parse.js.map","import * as tslib_1 from \"tslib\";\nimport { isString } from 'vega-util';\nimport { FACET_CHANNELS, isChannel, isScaleChannel } from '../channel';\nimport { getFieldDef, vgField } from '../channeldef';\nimport { forEach, reduce } from '../encoding';\nimport * as log from '../log';\nimport { hasDiscreteDomain } from '../scale';\nimport { isFacetSpec, isLayerSpec, isUnitSpec } from '../spec';\nimport { extractCompositionLayout } from '../spec/base';\nimport { extractTitleConfig } from '../title';\nimport { normalizeTransform } from '../transform';\nimport { contains, duplicate, keys, varName } from '../util';\nimport { isVgRangeStep } from '../vega.schema';\nimport { assembleAxes } from './axis/assemble';\nimport { assembleHeaderGroups, assembleLayoutTitleBand, assembleTitleGroup } from './header/assemble';\nimport { HEADER_CHANNELS } from './header/component';\nimport { sizeExpr } from './layoutsize/assemble';\nimport { assembleLegends } from './legend/assemble';\nimport { parseLegend } from './legend/parse';\nimport { assembleProjections } from './projection/assemble';\nimport { parseProjection } from './projection/parse';\nimport { assembleScales } from './scale/assemble';\nimport { assembleDomain, getFieldFromDomain } from './scale/domain';\nimport { parseScales } from './scale/parse';\nimport { Split } from './split';\nexport class NameMap {\n constructor() {\n this.nameMap = {};\n }\n rename(oldName, newName) {\n this.nameMap[oldName] = newName;\n }\n has(name) {\n return this.nameMap[name] !== undefined;\n }\n get(name) {\n // If the name appears in the _nameMap, we need to read its new name.\n // We have to loop over the dict just in case the new name also gets renamed.\n while (this.nameMap[name] && name !== this.nameMap[name]) {\n name = this.nameMap[name];\n }\n return name;\n }\n}\n/*\n We use type guards instead of `instanceof` as `instanceof` makes\n different parts of the compiler depend on the actual implementation of\n the model classes, which in turn depend on different parts of the compiler.\n Thus, `instanceof` leads to circular dependency problems.\n\n On the other hand, type guards only make different parts of the compiler\n depend on the type of the model classes, but not the actual implementation.\n*/\nexport function isUnitModel(model) {\n return model && model.type === 'unit';\n}\nexport function isFacetModel(model) {\n return model && model.type === 'facet';\n}\nexport function isRepeatModel(model) {\n return model && model.type === 'repeat';\n}\nexport function isConcatModel(model) {\n return model && model.type === 'concat';\n}\nexport function isLayerModel(model) {\n return model && model.type === 'layer';\n}\nexport class Model {\n constructor(spec, type, parent, parentGivenName, config, repeater, resolve, view) {\n this.type = type;\n this.parent = parent;\n this.config = config;\n this.repeater = repeater;\n this.view = view;\n this.children = [];\n /**\n * Corrects the data references in marks after assemble.\n */\n this.correctDataNames = (mark) => {\n // TODO: make this correct\n // for normal data references\n if (mark.from && mark.from.data) {\n mark.from.data = this.lookupDataSource(mark.from.data);\n }\n // for access to facet data\n if (mark.from && mark.from.facet && mark.from.facet.data) {\n mark.from.facet.data = this.lookupDataSource(mark.from.facet.data);\n }\n return mark;\n };\n this.parent = parent;\n this.config = config;\n this.repeater = repeater;\n // If name is not provided, always use parent's givenName to avoid name conflicts.\n this.name = spec.name || parentGivenName;\n this.title = isString(spec.title) ? { text: spec.title } : spec.title;\n // Shared name maps\n this.scaleNameMap = parent ? parent.scaleNameMap : new NameMap();\n this.projectionNameMap = parent ? parent.projectionNameMap : new NameMap();\n this.signalNameMap = parent ? parent.signalNameMap : new NameMap();\n this.data = spec.data;\n this.description = spec.description;\n this.transforms = normalizeTransform(spec.transform || []);\n this.layout = isUnitSpec(spec) || isLayerSpec(spec) ? {} : extractCompositionLayout(spec, type, config);\n this.component = {\n data: {\n sources: parent ? parent.component.data.sources : [],\n outputNodes: parent ? parent.component.data.outputNodes : {},\n outputNodeRefCounts: parent ? parent.component.data.outputNodeRefCounts : {},\n // data is faceted if the spec is a facet spec or the parent has faceted data and no data is defined\n isFaceted: isFacetSpec(spec) || (parent && parent.component.data.isFaceted && !spec.data)\n },\n layoutSize: new Split(),\n layoutHeaders: { row: {}, column: {}, facet: {} },\n mark: null,\n resolve: Object.assign({ scale: {}, axis: {}, legend: {} }, (resolve ? duplicate(resolve) : {})),\n selection: null,\n scales: null,\n projection: null,\n axes: {},\n legends: {}\n };\n }\n get width() {\n return this.getSizeSignalRef('width');\n }\n get height() {\n return this.getSizeSignalRef('height');\n }\n initSize(size) {\n const { width, height } = size;\n if (width) {\n this.component.layoutSize.set('width', width, true);\n }\n if (height) {\n this.component.layoutSize.set('height', height, true);\n }\n }\n parse() {\n this.parseScale();\n this.parseLayoutSize(); // depends on scale\n this.renameTopLevelLayoutSizeSignal();\n this.parseSelections();\n this.parseProjection();\n this.parseData(); // (pathorder) depends on markDef; selection filters depend on parsed selections; depends on projection because some transforms require the finalized projection name.\n this.parseAxesAndHeaders(); // depends on scale and layout size\n this.parseLegends(); // depends on scale, markDef\n this.parseMarkGroup(); // depends on data name, scale, layout size, axisGroup, and children's scale, axis, legend and mark.\n }\n parseScale() {\n parseScales(this);\n }\n parseProjection() {\n parseProjection(this);\n }\n /**\n * Rename top-level spec's size to be just width / height, ignoring model name.\n * This essentially merges the top-level spec's width/height signals with the width/height signals\n * to help us reduce redundant signals declaration.\n */\n renameTopLevelLayoutSizeSignal() {\n if (this.getName('width') !== 'width') {\n this.renameSignal(this.getName('width'), 'width');\n }\n if (this.getName('height') !== 'height') {\n this.renameSignal(this.getName('height'), 'height');\n }\n }\n parseLegends() {\n parseLegend(this);\n }\n assembleGroupStyle() {\n if (this.type === 'unit' || this.type === 'layer') {\n return (this.view && this.view.style) || 'cell';\n }\n return undefined;\n }\n assembleEncodeFromView(view) {\n // Exclude \"style\"\n const { style: _ } = view, baseView = tslib_1.__rest(view, [\"style\"]);\n const e = {};\n for (const property in baseView) {\n if (baseView.hasOwnProperty(property)) {\n const value = baseView[property];\n if (value !== undefined) {\n e[property] = { value };\n }\n }\n }\n return e;\n }\n assembleGroupEncodeEntry(isTopLevel) {\n let encodeEntry = undefined;\n if (this.view) {\n encodeEntry = this.assembleEncodeFromView(this.view);\n }\n if (!isTopLevel) {\n // For top-level spec, we can set the global width and height signal to adjust the group size.\n // For other child specs, we have to manually set width and height in the encode entry.\n if (this.type === 'unit' || this.type === 'layer') {\n return Object.assign({ width: this.getSizeSignalRef('width'), height: this.getSizeSignalRef('height') }, (encodeEntry || {}));\n }\n }\n return encodeEntry;\n }\n assembleLayout() {\n if (!this.layout) {\n return undefined;\n }\n const _a = this.layout, { spacing } = _a, layout = tslib_1.__rest(_a, [\"spacing\"]);\n const { component, config } = this;\n const titleBand = assembleLayoutTitleBand(component.layoutHeaders, config);\n return Object.assign({ padding: spacing }, this.assembleDefaultLayout(), layout, (titleBand ? { titleBand } : {}));\n }\n assembleDefaultLayout() {\n return {};\n }\n assembleHeaderMarks() {\n const { layoutHeaders } = this.component;\n let headerMarks = [];\n for (const channel of FACET_CHANNELS) {\n if (layoutHeaders[channel].title) {\n headerMarks.push(assembleTitleGroup(this, channel));\n }\n }\n for (const channel of HEADER_CHANNELS) {\n headerMarks = headerMarks.concat(assembleHeaderGroups(this, channel));\n }\n return headerMarks;\n }\n assembleAxes() {\n return assembleAxes(this.component.axes, this.config);\n }\n assembleLegends() {\n return assembleLegends(this);\n }\n assembleProjections() {\n return assembleProjections(this);\n }\n assembleTitle() {\n const _a = this.title || {}, { encoding } = _a, titleNoEncoding = tslib_1.__rest(_a, [\"encoding\"]);\n const title = Object.assign({}, extractTitleConfig(this.config.title).nonMark, titleNoEncoding, (encoding ? { encode: { update: encoding } } : {}));\n if (title.text) {\n if (contains(['unit', 'layer'], this.type)) {\n // Unit/Layer\n if (contains(['middle', undefined], title.anchor)) {\n title.frame = title.frame || 'group';\n }\n }\n else {\n // composition with Vega layout\n // Set title = \"start\" by default for composition as \"middle\" does not look nice\n // https://github.com/vega/vega/issues/960#issuecomment-471360328\n title.anchor = title.anchor || 'start';\n }\n return keys(title).length > 0 ? title : undefined;\n }\n return undefined;\n }\n /**\n * Assemble the mark group for this model. We accept optional `signals` so that we can include concat top-level signals with the top-level model's local signals.\n */\n assembleGroup(signals = []) {\n const group = {};\n signals = signals.concat(this.assembleSignals());\n if (signals.length > 0) {\n group.signals = signals;\n }\n const layout = this.assembleLayout();\n if (layout) {\n group.layout = layout;\n }\n group.marks = [].concat(this.assembleHeaderMarks(), this.assembleMarks());\n // Only include scales if this spec is top-level or if parent is facet.\n // (Otherwise, it will be merged with upper-level's scope.)\n const scales = !this.parent || isFacetModel(this.parent) ? assembleScales(this) : [];\n if (scales.length > 0) {\n group.scales = scales;\n }\n const axes = this.assembleAxes();\n if (axes.length > 0) {\n group.axes = axes;\n }\n const legends = this.assembleLegends();\n if (legends.length > 0) {\n group.legends = legends;\n }\n return group;\n }\n hasDescendantWithFieldOnChannel(channel) {\n for (const child of this.children) {\n if (isUnitModel(child)) {\n if (child.channelHasField(channel)) {\n return true;\n }\n }\n else {\n if (child.hasDescendantWithFieldOnChannel(channel)) {\n return true;\n }\n }\n }\n return false;\n }\n getName(text) {\n return varName((this.name ? this.name + '_' : '') + text);\n }\n /**\n * Request a data source name for the given data source type and mark that data source as required. This method should be called in parse, so that all used data source can be correctly instantiated in assembleData().\n */\n requestDataName(name) {\n const fullName = this.getName(name);\n // Increase ref count. This is critical because otherwise we won't create a data source.\n // We also increase the ref counts on OutputNode.getSource() calls.\n const refCounts = this.component.data.outputNodeRefCounts;\n refCounts[fullName] = (refCounts[fullName] || 0) + 1;\n return fullName;\n }\n getSizeSignalRef(sizeType) {\n if (isFacetModel(this.parent)) {\n const channel = sizeType === 'width' ? 'x' : 'y';\n const scaleComponent = this.component.scales[channel];\n if (scaleComponent && !scaleComponent.merged) {\n // independent scale\n const type = scaleComponent.get('type');\n const range = scaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n const scaleName = scaleComponent.get('name');\n const domain = assembleDomain(this, channel);\n const field = getFieldFromDomain(domain);\n if (field) {\n const fieldRef = vgField({ aggregate: 'distinct', field }, { expr: 'datum' });\n return {\n signal: sizeExpr(scaleName, scaleComponent, fieldRef)\n };\n }\n else {\n log.warn('Unknown field for ${channel}. Cannot calculate view size.');\n return null;\n }\n }\n }\n }\n return {\n signal: this.signalNameMap.get(this.getName(sizeType))\n };\n }\n /**\n * Lookup the name of the datasource for an output node. You probably want to call this in assemble.\n */\n lookupDataSource(name) {\n const node = this.component.data.outputNodes[name];\n if (!node) {\n // Name not found in map so let's just return what we got.\n // This can happen if we already have the correct name.\n return name;\n }\n return node.getSource();\n }\n getSignalName(oldSignalName) {\n return this.signalNameMap.get(oldSignalName);\n }\n renameSignal(oldName, newName) {\n this.signalNameMap.rename(oldName, newName);\n }\n renameScale(oldName, newName) {\n this.scaleNameMap.rename(oldName, newName);\n }\n renameProjection(oldName, newName) {\n this.projectionNameMap.rename(oldName, newName);\n }\n /**\n * @return scale name for a given channel after the scale has been parsed and named.\n */\n scaleName(originalScaleName, parse) {\n if (parse) {\n // During the parse phase always return a value\n // No need to refer to rename map because a scale can't be renamed\n // before it has the original name.\n return this.getName(originalScaleName);\n }\n // If there is a scale for the channel, it should either\n // be in the scale component or exist in the name map\n if (\n // If there is a scale for the channel, there should be a local scale component for it\n (isChannel(originalScaleName) && isScaleChannel(originalScaleName) && this.component.scales[originalScaleName]) ||\n // in the scale name map (the scale get merged by its parent)\n this.scaleNameMap.has(this.getName(originalScaleName))) {\n return this.scaleNameMap.get(this.getName(originalScaleName));\n }\n return undefined;\n }\n /**\n * @return projection name after the projection has been parsed and named.\n */\n projectionName(parse) {\n if (parse) {\n // During the parse phase always return a value\n // No need to refer to rename map because a projection can't be renamed\n // before it has the original name.\n return this.getName('projection');\n }\n if ((this.component.projection && !this.component.projection.merged) ||\n this.projectionNameMap.has(this.getName('projection'))) {\n return this.projectionNameMap.get(this.getName('projection'));\n }\n return undefined;\n }\n /**\n * Traverse a model's hierarchy to get the scale component for a particular channel.\n */\n getScaleComponent(channel) {\n /* istanbul ignore next: This is warning for debugging test */\n if (!this.component.scales) {\n throw new Error('getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().');\n }\n const localScaleComponent = this.component.scales[channel];\n if (localScaleComponent && !localScaleComponent.merged) {\n return localScaleComponent;\n }\n return this.parent ? this.parent.getScaleComponent(channel) : undefined;\n }\n /**\n * Traverse a model's hierarchy to get a particular selection component.\n */\n getSelectionComponent(variableName, origName) {\n let sel = this.component.selection[variableName];\n if (!sel && this.parent) {\n sel = this.parent.getSelectionComponent(variableName, origName);\n }\n if (!sel) {\n throw new Error(log.message.selectionNotFound(origName));\n }\n return sel;\n }\n}\n/** Abstract class for UnitModel and FacetModel. Both of which can contain fieldDefs as a part of its own specification. */\nexport class ModelWithField extends Model {\n /** Get \"field\" reference for Vega */\n vgField(channel, opt = {}) {\n const fieldDef = this.fieldDef(channel);\n if (!fieldDef) {\n return undefined;\n }\n return vgField(fieldDef, opt);\n }\n reduceFieldDef(f, init, t) {\n return reduce(this.getMapping(), (acc, cd, c) => {\n const fieldDef = getFieldDef(cd);\n if (fieldDef) {\n return f(acc, fieldDef, c);\n }\n return acc;\n }, init, t);\n }\n forEachFieldDef(f, t) {\n forEach(this.getMapping(), (cd, c) => {\n const fieldDef = getFieldDef(cd);\n if (fieldDef) {\n f(fieldDef, c);\n }\n }, t);\n }\n}\n//# sourceMappingURL=model.js.map","import { isScaleChannel } from '../../channel';\nimport { vgField as fieldRef } from '../../channeldef';\nimport { isPathMark } from '../../mark';\nimport { hasContinuousDomain } from '../../scale';\nimport { keys } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport class FilterInvalidNode extends DataFlowNode {\n constructor(parent, fieldDefs) {\n super(parent);\n this.fieldDefs = fieldDefs;\n }\n clone() {\n return new FilterInvalidNode(null, Object.assign({}, this.fieldDefs));\n }\n static make(parent, model) {\n const { config, mark } = model;\n if (config.invalidValues !== 'filter') {\n return null;\n }\n const filter = model.reduceFieldDef((aggregator, fieldDef, channel) => {\n const scaleComponent = isScaleChannel(channel) && model.getScaleComponent(channel);\n if (scaleComponent) {\n const scaleType = scaleComponent.get('type');\n // While discrete domain scales can handle invalid values, continuous scales can't.\n // Thus, for non-path marks, we have to filter null for scales with continuous domains.\n // (For path marks, we will use \"defined\" property and skip these values instead.)\n if (hasContinuousDomain(scaleType) && !fieldDef.aggregate && !isPathMark(mark)) {\n aggregator[fieldDef.field] = fieldDef;\n }\n }\n return aggregator;\n }, {});\n if (!keys(filter).length) {\n return null;\n }\n return new FilterInvalidNode(parent, filter);\n }\n get filter() {\n return this.fieldDefs;\n }\n // create the VgTransforms for each of the filtered fields\n assemble() {\n const filters = keys(this.filter).reduce((vegaFilters, field) => {\n const fieldDef = this.fieldDefs[field];\n const ref = fieldRef(fieldDef, { expr: 'datum' });\n if (fieldDef !== null) {\n vegaFilters.push(`${ref} !== null`);\n vegaFilters.push(`!isNaN(${ref})`);\n }\n return vegaFilters;\n }, []);\n return filters.length > 0\n ? {\n type: 'filter',\n expr: filters.join(' && ')\n }\n : null;\n }\n}\n//# sourceMappingURL=filterinvalid.js.map","import { duplicate, hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for flatten transform nodes\n */\nexport class FlattenTransformNode extends DataFlowNode {\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n this.transform = duplicate(transform); // duplicate to prevent side effects\n const { flatten, as = [] } = this.transform;\n this.transform.as = flatten.map((f, i) => as[i] || f);\n }\n clone() {\n return new FlattenTransformNode(this.parent, duplicate(this.transform));\n }\n producedFields() {\n return new Set(this.transform.as);\n }\n hash() {\n return `FlattenTransform ${hash(this.transform)}`;\n }\n assemble() {\n const { flatten: fields, as } = this.transform;\n const result = {\n type: 'flatten',\n fields,\n as\n };\n return result;\n }\n}\n//# sourceMappingURL=flatten.js.map","import { duplicate, hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for flatten transform nodes\n */\nexport class FoldTransformNode extends DataFlowNode {\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n this.transform = duplicate(transform); // duplicate to prevent side effects\n const specifiedAs = this.transform.as || [undefined, undefined];\n this.transform.as = [specifiedAs[0] || 'key', specifiedAs[1] || 'value'];\n }\n clone() {\n return new FoldTransformNode(null, duplicate(this.transform));\n }\n producedFields() {\n return new Set(this.transform.as);\n }\n hash() {\n return `FoldTransform ${hash(this.transform)}`;\n }\n assemble() {\n const { fold, as } = this.transform;\n const result = {\n type: 'fold',\n fields: fold,\n as\n };\n return result;\n }\n}\n//# sourceMappingURL=fold.js.map","import { LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2, SHAPE } from '../../channel';\nimport { isValueDef } from '../../channeldef';\nimport { GEOJSON } from '../../type';\nimport { duplicate } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport class GeoJSONNode extends DataFlowNode {\n constructor(parent, fields, geojson, signal) {\n super(parent);\n this.fields = fields;\n this.geojson = geojson;\n this.signal = signal;\n }\n clone() {\n return new GeoJSONNode(null, duplicate(this.fields), this.geojson, this.signal);\n }\n static parseAll(parent, model) {\n if (model.component.projection && !model.component.projection.isFit) {\n return parent;\n }\n let geoJsonCounter = 0;\n [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]].forEach((coordinates) => {\n const pair = coordinates.map(channel => model.channelHasField(channel)\n ? model.fieldDef(channel).field\n : isValueDef(model.encoding[channel])\n ? { expr: model.encoding[channel].value + '' }\n : undefined);\n if (pair[0] || pair[1]) {\n parent = new GeoJSONNode(parent, pair, null, model.getName(`geojson_${geoJsonCounter++}`));\n }\n });\n if (model.channelHasField(SHAPE)) {\n const fieldDef = model.fieldDef(SHAPE);\n if (fieldDef.type === GEOJSON) {\n parent = new GeoJSONNode(parent, null, fieldDef.field, model.getName(`geojson_${geoJsonCounter++}`));\n }\n }\n return parent;\n }\n assemble() {\n return Object.assign({ type: 'geojson' }, (this.fields ? { fields: this.fields } : {}), (this.geojson ? { geojson: this.geojson } : {}), { signal: this.signal });\n }\n}\n//# sourceMappingURL=geojson.js.map","import { LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2 } from '../../channel';\nimport { isValueDef } from '../../channeldef';\nimport { duplicate } from '../../util';\nimport { DataFlowNode } from './dataflow';\nexport class GeoPointNode extends DataFlowNode {\n constructor(parent, projection, fields, as) {\n super(parent);\n this.projection = projection;\n this.fields = fields;\n this.as = as;\n }\n clone() {\n return new GeoPointNode(null, this.projection, duplicate(this.fields), duplicate(this.as));\n }\n static parseAll(parent, model) {\n if (!model.projectionName()) {\n return parent;\n }\n [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]].forEach((coordinates) => {\n const pair = coordinates.map(channel => model.channelHasField(channel)\n ? model.fieldDef(channel).field\n : isValueDef(model.encoding[channel])\n ? { expr: model.encoding[channel].value + '' }\n : undefined);\n const suffix = coordinates[0] === LONGITUDE2 ? '2' : '';\n if (pair[0] || pair[1]) {\n parent = new GeoPointNode(parent, model.projectionName(), pair, [\n model.getName('x' + suffix),\n model.getName('y' + suffix)\n ]);\n }\n });\n return parent;\n }\n assemble() {\n return {\n type: 'geopoint',\n projection: this.projection,\n fields: this.fields,\n as: this.as\n };\n }\n}\n//# sourceMappingURL=geopoint.js.map","import { DataFlowNode } from './dataflow';\nexport class GraticuleNode extends DataFlowNode {\n constructor(parent, params) {\n super(parent);\n this.params = params;\n }\n clone() {\n return new GraticuleNode(null, this.params);\n }\n assemble() {\n return Object.assign({ type: 'graticule' }, (this.params === true ? {} : this.params));\n }\n}\n//# sourceMappingURL=graticule.js.map","import { SELECTION_ID } from '../../selection';\nimport { DataFlowNode } from './dataflow';\nexport class IdentifierNode extends DataFlowNode {\n clone() {\n return new IdentifierNode(null);\n }\n constructor(parent) {\n super(parent);\n }\n producedFields() {\n return new Set([SELECTION_ID]);\n }\n hash() {\n return 'Identifier';\n }\n assemble() {\n return { type: 'identifier', as: SELECTION_ID };\n }\n}\n//# sourceMappingURL=identifier.js.map","import { isNumber } from 'vega-util';\nimport { isBinned, isBinning } from '../../bin';\nimport { isFieldDef } from '../../channeldef';\nimport * as log from '../../log';\nimport { hasDiscreteDomain, ScaleType } from '../../scale';\nimport { getFirstDefined } from '../../util';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { getMarkConfig } from '../common';\nimport * as mixins from './mixins';\nimport * as ref from './valueref';\nexport const bar = {\n vgMark: 'rect',\n encodeEntry: (model) => {\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), barPosition(model, 'x'), barPosition(model, 'y'));\n }\n};\nfunction barPosition(model, channel) {\n const { config, encoding, markDef } = model;\n const orient = markDef.orient;\n const sizeDef = encoding.size;\n const isBarLength = channel === 'x' ? orient === 'horizontal' : orient === 'vertical';\n const channel2 = channel === 'x' ? 'x2' : 'y2';\n const fieldDef = encoding[channel];\n const fieldDef2 = encoding[channel2];\n const scaleName = model.scaleName(channel);\n const scale = model.getScaleComponent(channel);\n const spacing = getFirstDefined(markDef.binSpacing, config.bar.binSpacing);\n const reverse = scale ? scale.get('reverse') : undefined;\n const mark = 'bar';\n // x, x2, and width -- we must specify two of these in all conditions\n if (isFieldDef(fieldDef) && isBinned(fieldDef.bin)) {\n return mixins.binPosition({ fieldDef, fieldDef2, channel, mark, scaleName, spacing, reverse });\n }\n else if (isBarLength || fieldDef2) {\n return Object.assign({}, mixins.pointPosition(channel, model, 'zeroOrMin'), mixins.pointPosition2(model, 'zeroOrMin', channel2));\n }\n else {\n const sizeChannel = channel === 'x' ? 'width' : 'height';\n // vertical\n if (isFieldDef(fieldDef)) {\n const scaleType = scale.get('type');\n if (isBinning(fieldDef.bin) && !sizeDef && !hasDiscreteDomain(scaleType)) {\n return mixins.binPosition({ fieldDef, channel, scaleName, mark, spacing, reverse });\n }\n else {\n if (scaleType === ScaleType.BAND) {\n return mixins.bandPosition(fieldDef, channel, model, defaultSizeRef(markDef, sizeChannel, scaleName, scale, config));\n }\n }\n }\n // sized bin, normal point-ordinal axis, quantitative x-axis, or no x\n return mixins.centeredPointPositionWithSize(channel, model, ref.mid(model[sizeChannel]), defaultSizeRef(markDef, sizeChannel, scaleName, scale, config));\n }\n}\nfunction defaultSizeRef(markDef, sizeChannel, scaleName, scale, config) {\n const markPropOrConfig = getFirstDefined(markDef[sizeChannel], markDef.size, getMarkConfig('size', markDef, config, { vgChannel: sizeChannel }));\n if (markPropOrConfig !== undefined) {\n return { value: markPropOrConfig };\n }\n if (scale) {\n const scaleType = scale.get('type');\n if (scaleType === 'point' || scaleType === 'band') {\n if (config.bar.discreteBandSize !== undefined) {\n return { value: config.bar.discreteBandSize };\n }\n if (scaleType === ScaleType.POINT) {\n const scaleRange = scale.get('range');\n if (isVgRangeStep(scaleRange) && isNumber(scaleRange.step)) {\n return { value: scaleRange.step - 1 };\n }\n log.warn(log.message.BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL);\n }\n else {\n // BAND\n return ref.bandRef(scaleName);\n }\n }\n else {\n // continuous scale\n return { value: config.bar.continuousBandSize };\n }\n }\n // No Scale\n const value = getFirstDefined(\n // No scale is like discrete bar (with one item)\n config.bar.discreteBandSize, config.scale.rangeStep ? config.scale.rangeStep - 1 : undefined, \n // If somehow default rangeStep is set to null or undefined, use 20 as back up\n 20);\n return { value };\n}\n//# sourceMappingURL=bar.js.map","import * as mixins from './mixins';\nimport * as ref from './valueref';\nfunction encodeEntry(model, fixedShape) {\n const { config, width, height } = model;\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'include', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width)), mixins.pointPosition('y', model, ref.mid(height)), mixins.nonPosition('size', model), shapeMixins(model, config, fixedShape));\n}\nexport function shapeMixins(model, config, fixedShape) {\n if (fixedShape) {\n return { shape: { value: fixedShape } };\n }\n return mixins.nonPosition('shape', model);\n}\nexport const point = {\n vgMark: 'symbol',\n encodeEntry: (model) => {\n return encodeEntry(model);\n }\n};\nexport const circle = {\n vgMark: 'symbol',\n encodeEntry: (model) => {\n return encodeEntry(model, 'circle');\n }\n};\nexport const square = {\n vgMark: 'symbol',\n encodeEntry: (model) => {\n return encodeEntry(model, 'square');\n }\n};\n//# sourceMappingURL=point.js.map","import { isBinned, isBinning } from '../../bin';\nimport { isFieldDef } from '../../channeldef';\nimport * as log from '../../log';\nimport { RECT } from '../../mark';\nimport { hasDiscreteDomain, ScaleType } from '../../scale';\nimport * as mixins from './mixins';\nexport const rect = {\n vgMark: 'rect',\n encodeEntry: (model) => {\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), rectPosition(model, 'x'), rectPosition(model, 'y'));\n }\n};\nexport function rectPosition(model, channel) {\n const channel2 = channel === 'x' ? 'x2' : 'y2';\n const fieldDef = model.encoding[channel];\n const fieldDef2 = model.encoding[channel2];\n const scale = model.getScaleComponent(channel);\n const scaleType = scale ? scale.get('type') : undefined;\n const scaleName = model.scaleName(channel);\n if (isFieldDef(fieldDef) && (isBinning(fieldDef.bin) || isBinned(fieldDef.bin))) {\n return mixins.binPosition({\n fieldDef,\n fieldDef2,\n channel,\n mark: 'rect',\n scaleName,\n spacing: 0,\n reverse: scale.get('reverse')\n });\n }\n else if (isFieldDef(fieldDef) && scale && hasDiscreteDomain(scaleType)) {\n /* istanbul ignore else */\n if (scaleType === ScaleType.BAND) {\n return mixins.bandPosition(fieldDef, channel, model);\n }\n else {\n // We don't support rect mark with point/ordinal scale\n throw new Error(log.message.scaleTypeNotWorkWithMark(RECT, scaleType));\n }\n }\n else {\n // continuous scale or no scale\n return Object.assign({}, mixins.pointPosition(channel, model, 'zeroOrMax'), mixins.pointPosition2(model, 'zeroOrMin', channel2));\n }\n}\n//# sourceMappingURL=rect.js.map","import { getFirstDefined } from '../../util';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { getMarkConfig } from '../common';\nimport * as mixins from './mixins';\nimport * as ref from './valueref';\nexport const tick = {\n vgMark: 'rect',\n encodeEntry: (model) => {\n const { config, markDef, width, height } = model;\n const orient = markDef.orient;\n const vgSizeChannel = orient === 'horizontal' ? 'width' : 'height';\n const vgThicknessChannel = orient === 'horizontal' ? 'height' : 'width';\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width), 'xc'), mixins.pointPosition('y', model, ref.mid(height), 'yc'), mixins.nonPosition('size', model, {\n defaultValue: defaultSize(model),\n vgChannel: vgSizeChannel\n }), { [vgThicknessChannel]: { value: getFirstDefined(markDef.thickness, config.tick.thickness) } });\n }\n};\nfunction defaultSize(model) {\n const { config, markDef } = model;\n const { orient } = markDef;\n const vgSizeChannel = orient === 'horizontal' ? 'width' : 'height';\n const scale = model.getScaleComponent(orient === 'horizontal' ? 'x' : 'y');\n const markPropOrConfig = getFirstDefined(markDef[vgSizeChannel], markDef.size, getMarkConfig('size', markDef, config, { vgChannel: vgSizeChannel }), config.tick.bandSize);\n if (markPropOrConfig !== undefined) {\n return markPropOrConfig;\n }\n else {\n const scaleRange = scale ? scale.get('range') : undefined;\n const rangeStep = scaleRange && isVgRangeStep(scaleRange) ? scaleRange.step : config.scale.rangeStep;\n if (typeof rangeStep !== 'number') {\n // FIXME consolidate this log\n throw new Error('Function does not handle non-numeric rangeStep');\n }\n return (rangeStep * 3) / 4;\n }\n}\n//# sourceMappingURL=tick.js.map","import { isArray } from 'vega-util';\nimport { getTypedFieldDef, isFieldDef, isValueDef, vgField } from '../../channeldef';\nimport { MAIN } from '../../data';\nimport { isAggregate } from '../../encoding';\nimport { AREA, isPathMark, LINE, TRAIL } from '../../mark';\nimport { isSortField } from '../../sort';\nimport { contains, getFirstDefined, isNullOrFalse, keys } from '../../util';\nimport { getMarkConfig, getStyles, sortParams } from '../common';\nimport { area } from './area';\nimport { bar } from './bar';\nimport { geoshape } from './geoshape';\nimport { line, trail } from './line';\nimport { circle, point, square } from './point';\nimport { rect } from './rect';\nimport { rule } from './rule';\nimport { text } from './text';\nimport { tick } from './tick';\nconst markCompiler = {\n area,\n bar,\n circle,\n geoshape,\n line,\n point,\n rect,\n rule,\n square,\n text,\n tick,\n trail\n};\nexport function parseMarkGroups(model) {\n if (contains([LINE, AREA, TRAIL], model.mark)) {\n return parsePathMark(model);\n }\n else {\n return getMarkGroups(model);\n }\n}\nconst FACETED_PATH_PREFIX = 'faceted_path_';\nfunction parsePathMark(model) {\n const details = pathGroupingFields(model.mark, model.encoding);\n const pathMarks = getMarkGroups(model, {\n // If has subfacet for line/area group, need to use faceted data from below.\n fromPrefix: details.length > 0 ? FACETED_PATH_PREFIX : ''\n });\n if (details.length > 0) {\n // have level of details - need to facet line into subgroups\n // TODO: for non-stacked plot, map order to zindex. (Maybe rename order for layer to zindex?)\n return [\n {\n name: model.getName('pathgroup'),\n type: 'group',\n from: {\n facet: {\n name: FACETED_PATH_PREFIX + model.requestDataName(MAIN),\n data: model.requestDataName(MAIN),\n groupby: details\n }\n },\n encode: {\n update: {\n width: { field: { group: 'width' } },\n height: { field: { group: 'height' } }\n }\n },\n marks: pathMarks\n }\n ];\n }\n else {\n return pathMarks;\n }\n}\nexport function getSort(model) {\n const { encoding, stack, mark, markDef, config } = model;\n const order = encoding.order;\n if ((!isArray(order) && isValueDef(order) && isNullOrFalse(order.value)) ||\n ((!order && isNullOrFalse(markDef.order)) || isNullOrFalse(getMarkConfig('order', markDef, config)))) {\n return undefined;\n }\n else if ((isArray(order) || isFieldDef(order)) && !stack) {\n // Sort by the order field if it is specified and the field is not stacked. (For stacked field, order specify stack order.)\n return sortParams(order, { expr: 'datum' });\n }\n else if (isPathMark(mark)) {\n // For both line and area, we sort values based on dimension by default\n const dimensionChannelDef = encoding[markDef.orient === 'horizontal' ? 'y' : 'x'];\n if (isFieldDef(dimensionChannelDef)) {\n const s = dimensionChannelDef.sort;\n const sortField = isSortField(s)\n ? vgField({\n // FIXME: this op might not already exist?\n // FIXME: what if dimensionChannel (x or y) contains custom domain?\n aggregate: isAggregate(model.encoding) ? s.op : undefined,\n field: s.field\n }, { expr: 'datum' })\n : vgField(dimensionChannelDef, {\n // For stack with imputation, we only have bin_mid\n binSuffix: model.stack && model.stack.impute ? 'mid' : undefined,\n expr: 'datum'\n });\n return {\n field: sortField,\n order: 'descending'\n };\n }\n return undefined;\n }\n return undefined;\n}\nfunction getMarkGroups(model, opt = { fromPrefix: '' }) {\n const mark = model.mark;\n const clip = getFirstDefined(model.markDef.clip, scaleClip(model), projectionClip(model));\n const style = getStyles(model.markDef);\n const key = model.encoding.key;\n const sort = getSort(model);\n const postEncodingTransform = markCompiler[mark].postEncodingTransform\n ? markCompiler[mark].postEncodingTransform(model)\n : null;\n return [\n Object.assign({ name: model.getName('marks'), type: markCompiler[mark].vgMark }, (clip ? { clip: true } : {}), (style ? { style } : {}), (key ? { key: { field: key.field } } : {}), (sort ? { sort } : {}), { from: { data: opt.fromPrefix + model.requestDataName(MAIN) }, encode: {\n update: markCompiler[mark].encodeEntry(model)\n } }, (postEncodingTransform\n ? {\n transform: postEncodingTransform\n }\n : {}))\n ];\n}\n/**\n * Returns list of path grouping fields\n * that the model's spec contains.\n */\nexport function pathGroupingFields(mark, encoding) {\n return keys(encoding).reduce((details, channel) => {\n switch (channel) {\n // x, y, x2, y2, lat, long, lat1, long2, order, tooltip, href, cursor should not cause lines to group\n case 'x':\n case 'y':\n case 'order':\n case 'href':\n case 'x2':\n case 'y2':\n // falls through\n case 'latitude':\n case 'longitude':\n case 'latitude2':\n case 'longitude2':\n // TODO: case 'cursor':\n // text, shape, shouldn't be a part of line/trail/area [falls through]\n case 'text':\n case 'shape':\n // falls through\n // tooltip fields should not be added to group by [falls through]\n case 'tooltip':\n return details;\n case 'detail':\n case 'key': {\n const channelDef = encoding[channel];\n if (isArray(channelDef) || isFieldDef(channelDef)) {\n (isArray(channelDef) ? channelDef : [channelDef]).forEach(fieldDef => {\n if (!fieldDef.aggregate) {\n details.push(vgField(fieldDef, {}));\n }\n });\n }\n return details;\n }\n case 'size':\n if (mark === 'trail') {\n // For trail, size should not group trail lines.\n return details;\n }\n // For line, it should group lines.\n // falls through\n case 'color':\n case 'fill':\n case 'stroke':\n case 'opacity':\n case 'fillOpacity':\n case 'strokeOpacity':\n case 'strokeWidth': {\n // TODO strokeDashOffset:\n // falls through\n const fieldDef = getTypedFieldDef(encoding[channel]);\n if (fieldDef && !fieldDef.aggregate) {\n details.push(vgField(fieldDef, {}));\n }\n return details;\n }\n default:\n throw new Error(`Bug: Channel ${channel} unimplemented for line mark`);\n }\n }, []);\n}\n/**\n * If scales are bound to interval selections, we want to automatically clip\n * marks to account for panning/zooming interactions. We identify bound scales\n * by the domainRaw property, which gets added during scale parsing.\n */\nfunction scaleClip(model) {\n const xScale = model.getScaleComponent('x');\n const yScale = model.getScaleComponent('y');\n return (xScale && xScale.get('domainRaw')) || (yScale && yScale.get('domainRaw')) ? true : undefined;\n}\n/**\n * If we use a custom projection with auto-fitting to the geodata extent,\n * we need to clip to ensure the chart size doesn't explode.\n */\nfunction projectionClip(model) {\n const projection = model.component.projection;\n return projection && !projection.isFit ? true : undefined;\n}\n//# sourceMappingURL=mark.js.map","import * as mixins from './mixins';\nexport const area = {\n vgMark: 'area',\n encodeEntry: (model) => {\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'include' }), mixins.pointPosition('x', model, 'zeroOrMin'), mixins.pointPosition('y', model, 'zeroOrMin'), mixins.pointPosition2(model, 'zeroOrMin', model.markDef.orient === 'horizontal' ? 'x2' : 'y2'), mixins.defined(model));\n }\n};\n//# sourceMappingURL=area.js.map","import { isFieldDef, vgField } from '../../channeldef';\nimport { GEOJSON } from '../../type';\nimport * as mixins from './mixins';\nexport const geoshape = {\n vgMark: 'shape',\n encodeEntry: (model) => {\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }));\n },\n postEncodingTransform: (model) => {\n const { encoding } = model;\n const shapeDef = encoding.shape;\n const transform = Object.assign({ type: 'geoshape', projection: model.projectionName() }, (shapeDef && isFieldDef(shapeDef) && shapeDef.type === GEOJSON\n ? { field: vgField(shapeDef, { expr: 'datum' }) }\n : {}));\n return [transform];\n }\n};\n//# sourceMappingURL=geoshape.js.map","import * as mixins from './mixins';\nimport * as ref from './valueref';\nexport const line = {\n vgMark: 'line',\n encodeEntry: (model) => {\n const { width, height } = model;\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width)), mixins.pointPosition('y', model, ref.mid(height)), mixins.nonPosition('size', model, {\n vgChannel: 'strokeWidth' // VL's line size is strokeWidth\n }), mixins.defined(model));\n }\n};\nexport const trail = {\n vgMark: 'trail',\n encodeEntry: (model) => {\n const { width, height } = model;\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'include', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width)), mixins.pointPosition('y', model, ref.mid(height)), mixins.nonPosition('size', model), mixins.defined(model));\n }\n};\n//# sourceMappingURL=line.js.map","import * as mixins from './mixins';\nimport * as ref from './valueref';\nexport const rule = {\n vgMark: 'rule',\n encodeEntry: (model) => {\n const { markDef, width, height } = model;\n const orient = markDef.orient;\n if (!model.encoding.x && !model.encoding.y && !model.encoding.latitude && !model.encoding.longitude) {\n // Show nothing if we have none of x, y, lat, and long.\n return {};\n }\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), mixins.pointPosition('x', model, orient === 'horizontal' ? 'zeroOrMin' : ref.mid(width)), mixins.pointPosition('y', model, orient === 'vertical' ? 'zeroOrMin' : ref.mid(height)), (orient !== 'vertical' ? mixins.pointPosition2(model, 'zeroOrMax', 'x2') : {}), (orient !== 'horizontal' ? mixins.pointPosition2(model, 'zeroOrMax', 'y2') : {}), mixins.nonPosition('size', model, {\n vgChannel: 'strokeWidth' // VL's rule size is strokeWidth\n }));\n }\n};\n//# sourceMappingURL=rule.js.map","import { getMarkConfig } from '../common';\nimport * as mixins from './mixins';\nimport * as ref from './valueref';\nexport const text = {\n vgMark: 'text',\n encodeEntry: (model) => {\n const { config, encoding, width, height } = model;\n return Object.assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width)), mixins.pointPosition('y', model, ref.mid(height)), mixins.text(model), mixins.nonPosition('size', model, {\n vgChannel: 'fontSize' // VL's text size is fontSize\n }), mixins.valueIfDefined('align', align(model.markDef, encoding, config)), mixins.valueIfDefined('baseline', baseline(model.markDef, encoding, config)));\n }\n};\nfunction align(markDef, encoding, config) {\n const a = markDef.align || getMarkConfig('align', markDef, config);\n if (a === undefined) {\n return 'center';\n }\n // If there is a config, Vega-parser will process this already.\n return undefined;\n}\nfunction baseline(markDef, encoding, config) {\n const b = markDef.baseline || getMarkConfig('baseline', markDef, config);\n if (b === undefined) {\n return 'middle';\n }\n // If there is a config, Vega-parser will process this already.\n return undefined;\n}\n//# sourceMappingURL=text.js.map","import { isFieldDef } from '../../channeldef';\nimport { isImputeSequence } from '../../transform';\nimport { duplicate, hash } from '../../util';\nimport { pathGroupingFields } from '../mark/mark';\nimport { DataFlowNode } from './dataflow';\nexport class ImputeNode extends DataFlowNode {\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n }\n clone() {\n return new ImputeNode(null, duplicate(this.transform));\n }\n producedFields() {\n return new Set([this.transform.impute]);\n }\n processSequence(keyvals) {\n const { start = 0, stop, step } = keyvals;\n const result = [start, stop, ...(step ? [step] : [])].join(',');\n return { signal: `sequence(${result})` };\n }\n static makeFromTransform(parent, imputeTransform) {\n return new ImputeNode(parent, imputeTransform);\n }\n static makeFromEncoding(parent, model) {\n const encoding = model.encoding;\n const xDef = encoding.x;\n const yDef = encoding.y;\n if (isFieldDef(xDef) && isFieldDef(yDef)) {\n const imputedChannel = xDef.impute ? xDef : yDef.impute ? yDef : undefined;\n if (imputedChannel === undefined) {\n return undefined;\n }\n const keyChannel = xDef.impute ? yDef : yDef.impute ? xDef : undefined;\n const { method, value, frame, keyvals } = imputedChannel.impute;\n const groupbyFields = pathGroupingFields(model.mark, encoding);\n return new ImputeNode(parent, Object.assign({ impute: imputedChannel.field, key: keyChannel.field }, (method ? { method } : {}), (value !== undefined ? { value } : {}), (frame ? { frame } : {}), (keyvals !== undefined ? { keyvals } : {}), (groupbyFields.length ? { groupby: groupbyFields } : {})));\n }\n return null;\n }\n hash() {\n return `Impute ${hash(this.transform)}`;\n }\n assemble() {\n const { impute, key, keyvals, method, groupby, value, frame = [null, null] } = this.transform;\n const initialImpute = Object.assign({ type: 'impute', field: impute, key }, (keyvals ? { keyvals: isImputeSequence(keyvals) ? this.processSequence(keyvals) : keyvals } : {}), { method: 'value' }, (groupby ? { groupby } : {}), { value: null });\n let setImputedField;\n if (method && method !== 'value') {\n const deriveNewField = Object.assign({ type: 'window', as: [`imputed_${impute}_value`], ops: [method], fields: [impute], frame, ignorePeers: false }, (groupby ? { groupby } : {}));\n const replaceOriginal = {\n type: 'formula',\n expr: `datum.${impute} === null ? datum.imputed_${impute}_value : datum.${impute}`,\n as: impute\n };\n setImputedField = [deriveNewField, replaceOriginal];\n }\n else {\n const replaceWithValue = {\n type: 'formula',\n expr: `datum.${impute} === null ? ${value} : datum.${impute}`,\n as: impute\n };\n setImputedField = [replaceWithValue];\n }\n return [initialImpute, ...setImputedField];\n }\n}\n//# sourceMappingURL=impute.js.map","import { Split } from '../split';\n/**\n * Class to track interesting properties (see https://15721.courses.cs.cmu.edu/spring2016/papers/graefe-ieee1995.pdf)\n * about how fields have been parsed or whether they have been derived in a transform. We use this to not parse the\n * same field again (or differently).\n */\nexport class AncestorParse extends Split {\n constructor(explicit = {}, implicit = {}, parseNothing = false) {\n super(explicit, implicit);\n this.explicit = explicit;\n this.implicit = implicit;\n this.parseNothing = parseNothing;\n }\n clone() {\n const clone = super.clone();\n clone.parseNothing = this.parseNothing;\n return clone;\n }\n}\n//# sourceMappingURL=index.js.map","import { isString } from 'vega-util';\nimport * as log from '../../log';\nimport { duplicate, hash } from '../../util';\nimport { DataFlowNode, OutputNode } from './dataflow';\nimport { findSource } from './parse';\nimport { SourceNode } from './source';\nexport class LookupNode extends DataFlowNode {\n constructor(parent, transform, secondary) {\n super(parent);\n this.transform = transform;\n this.secondary = secondary;\n }\n clone() {\n return new LookupNode(null, duplicate(this.transform), this.secondary);\n }\n static make(parent, model, transform, counter) {\n const sources = model.component.data.sources;\n let fromSource = findSource(transform.from.data, sources);\n if (!fromSource) {\n fromSource = new SourceNode(transform.from.data);\n sources.push(fromSource);\n }\n const fromOutputName = model.getName(`lookup_${counter}`);\n const fromOutputNode = new OutputNode(fromSource, fromOutputName, 'lookup', model.component.data.outputNodeRefCounts);\n model.component.data.outputNodes[fromOutputName] = fromOutputNode;\n return new LookupNode(parent, transform, fromOutputNode.getSource());\n }\n producedFields() {\n return new Set(this.transform.from.fields || (this.transform.as instanceof Array ? this.transform.as : [this.transform.as]));\n }\n hash() {\n return `Lookup ${hash({ transform: this.transform, secondary: this.secondary })}`;\n }\n assemble() {\n let foreign;\n if (this.transform.from.fields) {\n // lookup a few fields and add create a flat output\n foreign = Object.assign({ values: this.transform.from.fields }, (this.transform.as ? { as: this.transform.as instanceof Array ? this.transform.as : [this.transform.as] } : {}));\n }\n else {\n // lookup full record and nest it\n let asName = this.transform.as;\n if (!isString(asName)) {\n log.warn(log.message.NO_FIELDS_NEEDS_AS);\n asName = '_lookup';\n }\n foreign = {\n as: [asName]\n };\n }\n return Object.assign({ type: 'lookup', from: this.secondary, key: this.transform.from.key, fields: [this.transform.lookup] }, foreign, (this.transform.default ? { default: this.transform.default } : {}));\n }\n}\n//# sourceMappingURL=lookup.js.map","import { duplicate, hash } from '../../util';\nimport { DataFlowNode } from './dataflow';\n/**\n * A class for the sample transform nodes\n */\nexport class SampleTransformNode extends DataFlowNode {\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n }\n clone() {\n return new SampleTransformNode(null, duplicate(this.transform));\n }\n hash() {\n return `SampleTransform ${hash(this.transform)}`;\n }\n assemble() {\n return {\n type: 'sample',\n size: this.transform.sample\n };\n }\n}\n//# sourceMappingURL=sample.js.map","import { DataFlowNode } from './dataflow';\nexport class SequenceNode extends DataFlowNode {\n constructor(parent, params) {\n super(parent);\n this.params = params;\n }\n clone() {\n return new SequenceNode(null, this.params);\n }\n assemble() {\n return Object.assign({ type: 'sequence' }, this.params);\n }\n}\n//# sourceMappingURL=sequence.js.map","import { isUrlData } from '../../data';\nimport { AggregateNode } from './aggregate';\nimport { BinNode } from './bin';\nimport { CalculateNode } from './calculate';\nimport { OutputNode } from './dataflow';\nimport { FacetNode } from './facet';\nimport { FilterNode } from './filter';\nimport { FilterInvalidNode } from './filterinvalid';\nimport { FlattenTransformNode } from './flatten';\nimport { FoldTransformNode } from './fold';\nimport { ParseNode } from './formatparse';\nimport { GeoJSONNode } from './geojson';\nimport { GeoPointNode } from './geopoint';\nimport { GraticuleNode } from './graticule';\nimport { IdentifierNode } from './identifier';\nimport { ImputeNode } from './impute';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nimport { LookupNode } from './lookup';\nimport { SampleTransformNode } from './sample';\nimport { SequenceNode } from './sequence';\nimport { SourceNode } from './source';\nimport { StackNode } from './stack';\nimport { TimeUnitNode } from './timeunit';\nimport { WindowTransformNode } from './window';\nfunction makeWalkTree(data) {\n // to name datasources\n let datasetIndex = 0;\n /**\n * Recursively walk down the tree.\n */\n function walkTree(node, dataSource) {\n if (node instanceof SourceNode) {\n // If the source is a named data source or a data source with values, we need\n // to put it in a different data source. Otherwise, Vega may override the data.\n if (!node.isGenerator && !isUrlData(node.data)) {\n data.push(dataSource);\n const newData = {\n name: null,\n source: dataSource.name,\n transform: []\n };\n dataSource = newData;\n }\n }\n if (node instanceof ParseNode) {\n if (node.parent instanceof SourceNode && !dataSource.source) {\n // If node's parent is a root source and the data source does not refer to another data source, use normal format parse\n dataSource.format = Object.assign({}, (dataSource.format || {}), { parse: node.assembleFormatParse() });\n // add calculates for all nested fields\n dataSource.transform.push(...node.assembleTransforms(true));\n }\n else {\n // Otherwise use Vega expression to parse\n dataSource.transform.push(...node.assembleTransforms());\n }\n }\n if (node instanceof FacetNode) {\n if (!dataSource.name) {\n dataSource.name = `data_${datasetIndex++}`;\n }\n if (!dataSource.source || dataSource.transform.length > 0) {\n data.push(dataSource);\n node.data = dataSource.name;\n }\n else {\n node.data = dataSource.source;\n }\n node.assemble().forEach(d => data.push(d));\n // break here because the rest of the tree has to be taken care of by the facet.\n return;\n }\n if (node instanceof GraticuleNode ||\n node instanceof SequenceNode ||\n node instanceof FilterInvalidNode ||\n node instanceof FilterNode ||\n node instanceof CalculateNode ||\n node instanceof GeoPointNode ||\n node instanceof GeoJSONNode ||\n node instanceof AggregateNode ||\n node instanceof LookupNode ||\n node instanceof WindowTransformNode ||\n node instanceof JoinAggregateTransformNode ||\n node instanceof FoldTransformNode ||\n node instanceof FlattenTransformNode ||\n node instanceof IdentifierNode ||\n node instanceof SampleTransformNode) {\n dataSource.transform.push(node.assemble());\n }\n if (node instanceof BinNode ||\n node instanceof TimeUnitNode ||\n node instanceof ImputeNode ||\n node instanceof StackNode) {\n dataSource.transform = dataSource.transform.concat(node.assemble());\n }\n if (node instanceof OutputNode) {\n if (dataSource.source && dataSource.transform.length === 0) {\n node.setSource(dataSource.source);\n }\n else if (node.parent instanceof OutputNode) {\n // Note that an output node may be required but we still do not assemble a\n // separate data source for it.\n node.setSource(dataSource.name);\n }\n else {\n if (!dataSource.name) {\n dataSource.name = `data_${datasetIndex++}`;\n }\n // Here we set the name of the datasource we generated. From now on\n // other assemblers can use it.\n node.setSource(dataSource.name);\n // if this node has more than one child, we will add a datasource automatically\n if (node.numChildren() === 1) {\n data.push(dataSource);\n const newData = {\n name: null,\n source: dataSource.name,\n transform: []\n };\n dataSource = newData;\n }\n }\n }\n switch (node.numChildren()) {\n case 0:\n // done\n if (node instanceof OutputNode && (!dataSource.source || dataSource.transform.length > 0)) {\n // do not push empty datasources that are simply references\n data.push(dataSource);\n }\n break;\n case 1:\n walkTree(node.children[0], dataSource);\n break;\n default: {\n if (!dataSource.name) {\n dataSource.name = `data_${datasetIndex++}`;\n }\n let source = dataSource.name;\n if (!dataSource.source || dataSource.transform.length > 0) {\n data.push(dataSource);\n }\n else {\n source = dataSource.source;\n }\n node.children.forEach(child => {\n const newData = {\n name: null,\n source: source,\n transform: []\n };\n walkTree(child, newData);\n });\n break;\n }\n }\n }\n return walkTree;\n}\n/**\n * Assemble data sources that are derived from faceted data.\n */\nexport function assembleFacetData(root) {\n const data = [];\n const walkTree = makeWalkTree(data);\n root.children.forEach(child => walkTree(child, {\n source: root.name,\n name: null,\n transform: []\n }));\n return data;\n}\n/**\n * Create Vega Data array from a given compiled model and append all of them to the given array\n *\n * @param model\n * @param data array\n * @return modified data array\n */\nexport function assembleRootData(dataComponent, datasets) {\n const data = [];\n // dataComponent.sources.forEach(debug);\n // draw(dataComponent.sources);\n const walkTree = makeWalkTree(data);\n let sourceIndex = 0;\n dataComponent.sources.forEach(root => {\n // assign a name if the source does not have a name yet\n if (!root.hasName()) {\n root.dataName = `source_${sourceIndex++}`;\n }\n const newData = root.assemble();\n walkTree(root, newData);\n });\n // remove empty transform arrays for cleaner output\n data.forEach(d => {\n if (d.transform.length === 0) {\n delete d.transform;\n }\n });\n // move sources without transforms (the ones that are potentially used in lookups) to the beginning\n let whereTo = 0;\n for (const [i, d] of data.entries()) {\n if ((d.transform || []).length === 0 && !d.source) {\n data.splice(whereTo++, 0, data.splice(i, 1)[0]);\n }\n }\n // now fix the from references in lookup transforms\n for (const d of data) {\n for (const t of d.transform || []) {\n if (t.type === 'lookup') {\n t.from = dataComponent.outputNodes[t.from].getSource();\n }\n }\n }\n // inline values for datasets that are in the datastore\n for (const d of data) {\n if (d.name in datasets) {\n d.values = datasets[d.name];\n }\n }\n return data;\n}\n//# sourceMappingURL=assemble.js.map","import { FACET_CHANNELS } from '../../channel';\nimport { title as fieldDefTitle } from '../../channeldef';\nimport { contains } from '../../util';\nimport { assembleAxis } from '../axis/assemble';\nimport { parseGuideResolve } from '../resolve';\nimport { getHeaderProperty } from './common';\nexport function getHeaderType(orient) {\n if (orient === 'top' || orient === 'left') {\n return 'header';\n }\n return 'footer';\n}\nexport function parseFacetHeaders(model) {\n for (const channel of FACET_CHANNELS) {\n parseFacetHeader(model, channel);\n }\n mergeChildAxis(model, 'x');\n mergeChildAxis(model, 'y');\n}\nfunction parseFacetHeader(model, channel) {\n if (model.channelHasField(channel)) {\n const fieldDef = model.facet[channel];\n const titleConfig = getHeaderProperty('title', null, model.config, channel);\n let title = fieldDefTitle(fieldDef, model.config, {\n allowDisabling: true,\n includeDefault: titleConfig === undefined || !!titleConfig\n });\n if (model.child.component.layoutHeaders[channel].title) {\n // merge title with child to produce \"Title / Subtitle / Sub-subtitle\"\n title += ' / ' + model.child.component.layoutHeaders[channel].title;\n model.child.component.layoutHeaders[channel].title = null;\n }\n const labelOrient = getHeaderProperty('labelOrient', fieldDef, model.config, channel);\n const headerType = contains(['bottom', 'right'], labelOrient) ? 'footer' : 'header';\n model.component.layoutHeaders[channel] = {\n title,\n facetFieldDef: fieldDef,\n [headerType]: channel === 'facet' ? [] : [makeHeaderComponent(model, channel, true)]\n };\n }\n}\nfunction makeHeaderComponent(model, channel, labels) {\n const sizeType = channel === 'row' ? 'height' : 'width';\n return {\n labels,\n sizeSignal: model.child.component.layoutSize.get(sizeType) ? model.child.getSizeSignalRef(sizeType) : undefined,\n axes: []\n };\n}\nfunction mergeChildAxis(model, channel) {\n const { child } = model;\n if (child.component.axes[channel]) {\n const { layoutHeaders, resolve } = model.component;\n resolve.axis[channel] = parseGuideResolve(resolve, channel);\n if (resolve.axis[channel] === 'shared') {\n // For shared axis, move the axes to facet's header or footer\n const headerChannel = channel === 'x' ? 'column' : 'row';\n const layoutHeader = layoutHeaders[headerChannel];\n for (const axisComponent of child.component.axes[channel]) {\n const headerType = getHeaderType(axisComponent.get('orient'));\n layoutHeader[headerType] = layoutHeader[headerType] || [makeHeaderComponent(model, headerChannel, false)];\n // FIXME: assemble shouldn't be called here, but we do it this way so we only extract the main part of the axes\n const mainAxis = assembleAxis(axisComponent, 'main', model.config, { header: true });\n // LayoutHeader no longer keep track of property precedence, thus let's combine.\n layoutHeader[headerType][0].axes.push(mainAxis);\n axisComponent.mainExtracted = true;\n }\n }\n else {\n // Otherwise do nothing for independent axes\n }\n }\n}\n//# sourceMappingURL=parse.js.map","import { defaultScaleConfig, hasDiscreteDomain } from '../../scale';\nimport { isVgRangeStep } from '../../vega.schema';\nimport { mergeValuesWithExplicit } from '../split';\nexport function parseLayerLayoutSize(model) {\n parseChildrenLayoutSize(model);\n const layoutSizeCmpt = model.component.layoutSize;\n layoutSizeCmpt.setWithExplicit('width', parseNonUnitLayoutSizeForChannel(model, 'width'));\n layoutSizeCmpt.setWithExplicit('height', parseNonUnitLayoutSizeForChannel(model, 'height'));\n}\nexport const parseRepeatLayoutSize = parseLayerLayoutSize;\nconst SIZE_TYPE_TO_MERGE = {\n vconcat: 'width',\n hconcat: 'height'\n};\nexport function parseConcatLayoutSize(model) {\n parseChildrenLayoutSize(model);\n const layoutSizeCmpt = model.component.layoutSize;\n const sizeTypeToMerge = SIZE_TYPE_TO_MERGE[model.concatType];\n if (sizeTypeToMerge) {\n layoutSizeCmpt.setWithExplicit(sizeTypeToMerge, parseNonUnitLayoutSizeForChannel(model, sizeTypeToMerge));\n }\n}\nexport function parseChildrenLayoutSize(model) {\n for (const child of model.children) {\n child.parseLayoutSize();\n }\n}\nfunction parseNonUnitLayoutSizeForChannel(model, sizeType) {\n const channel = sizeType === 'width' ? 'x' : 'y';\n const resolve = model.component.resolve;\n let mergedSize;\n // Try to merge layout size\n for (const child of model.children) {\n const childSize = child.component.layoutSize.getWithExplicit(sizeType);\n const scaleResolve = resolve.scale[channel];\n if (scaleResolve === 'independent' && childSize.value === 'range-step') {\n // Do not merge independent scales with range-step as their size depends\n // on the scale domains, which can be different between scales.\n mergedSize = undefined;\n break;\n }\n if (mergedSize) {\n if (scaleResolve === 'independent' && mergedSize.value !== childSize.value) {\n // For independent scale, only merge if all the sizes are the same.\n // If the values are different, abandon the merge!\n mergedSize = undefined;\n break;\n }\n mergedSize = mergeValuesWithExplicit(mergedSize, childSize, sizeType, '');\n }\n else {\n mergedSize = childSize;\n }\n }\n if (mergedSize) {\n // If merged, rename size and set size of all children.\n for (const child of model.children) {\n model.renameSignal(child.getName(sizeType), model.getName(sizeType));\n child.component.layoutSize.set(sizeType, 'merged', false);\n }\n return mergedSize;\n }\n else {\n // Otherwise, there is no merged size.\n return {\n explicit: false,\n value: undefined\n };\n }\n}\nexport function parseUnitLayoutSize(model) {\n const layoutSizeComponent = model.component.layoutSize;\n if (!layoutSizeComponent.explicit.width) {\n const width = defaultUnitSize(model, 'width');\n layoutSizeComponent.set('width', width, false);\n }\n if (!layoutSizeComponent.explicit.height) {\n const height = defaultUnitSize(model, 'height');\n layoutSizeComponent.set('height', height, false);\n }\n}\nfunction defaultUnitSize(model, sizeType) {\n const channel = sizeType === 'width' ? 'x' : 'y';\n const config = model.config;\n const scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n const scaleType = scaleComponent.get('type');\n const range = scaleComponent.get('range');\n if (hasDiscreteDomain(scaleType) && isVgRangeStep(range)) {\n // For discrete domain with range.step, use dynamic width/height\n return 'range-step';\n }\n else {\n return config.view[sizeType];\n }\n }\n else if (model.hasProjection) {\n return config.view[sizeType];\n }\n else {\n // No scale - set default size\n if (sizeType === 'width' && model.mark === 'text') {\n // width for text mark without x-field is a bit wider than typical range step\n return config.scale.textXRangeStep;\n }\n // Set width/height equal to rangeStep config or if rangeStep is null, use value from default scale config.\n return config.scale.rangeStep || defaultScaleConfig.rangeStep;\n }\n}\n//# sourceMappingURL=parse.js.map","import * as tslib_1 from \"tslib\";\nimport { isArray } from 'vega-util';\nimport { hasConditionalFieldDef, isConditionalDef, isFieldDef, isRepeatRef, isSortableFieldDef } from '../channeldef';\nimport * as log from '../log';\nimport { isSortField } from '../sort';\nimport { isFacetMapping } from '../spec/facet';\nexport function replaceRepeaterInFacet(facet, repeater) {\n if (isFacetMapping(facet)) {\n return replaceRepeater(facet, repeater);\n }\n return replaceRepeaterInFieldDef(facet, repeater);\n}\nexport function replaceRepeaterInEncoding(encoding, repeater) {\n return replaceRepeater(encoding, repeater);\n}\n/**\n * Replaces repeated value and returns if the repeated value is valid.\n */\nfunction replaceRepeat(o, repeater) {\n if (isRepeatRef(o.field)) {\n if (o.field.repeat in repeater) {\n // any needed to calm down ts compiler\n return Object.assign({}, o, { field: repeater[o.field.repeat] });\n }\n else {\n log.warn(log.message.noSuchRepeatedValue(o.field.repeat));\n return undefined;\n }\n }\n return o;\n}\n/**\n * Replace repeater values in a field def with the concrete field name.\n */\nfunction replaceRepeaterInFieldDef(fieldDef, repeater) {\n fieldDef = replaceRepeat(fieldDef, repeater);\n if (fieldDef === undefined) {\n // the field def should be ignored\n return undefined;\n }\n else if (fieldDef === null) {\n return null;\n }\n if (isSortableFieldDef(fieldDef) && isSortField(fieldDef.sort)) {\n const sort = replaceRepeat(fieldDef.sort, repeater);\n fieldDef = Object.assign({}, fieldDef, (sort ? { sort } : {}));\n }\n return fieldDef;\n}\nfunction replaceRepeaterInChannelDef(channelDef, repeater) {\n if (isFieldDef(channelDef)) {\n const fd = replaceRepeaterInFieldDef(channelDef, repeater);\n if (fd) {\n return fd;\n }\n else if (isConditionalDef(channelDef)) {\n return { condition: channelDef.condition };\n }\n }\n else {\n if (hasConditionalFieldDef(channelDef)) {\n const fd = replaceRepeaterInFieldDef(channelDef.condition, repeater);\n if (fd) {\n return Object.assign({}, channelDef, { condition: fd });\n }\n else {\n const { condition } = channelDef, channelDefWithoutCondition = tslib_1.__rest(channelDef, [\"condition\"]);\n return channelDefWithoutCondition;\n }\n }\n return channelDef;\n }\n return undefined;\n}\nfunction replaceRepeater(mapping, repeater) {\n const out = {};\n for (const channel in mapping) {\n if (mapping.hasOwnProperty(channel)) {\n const channelDef = mapping[channel];\n if (isArray(channelDef)) {\n // array cannot have condition\n out[channel] = channelDef.map(cd => replaceRepeaterInChannelDef(cd, repeater)).filter(cd => cd);\n }\n else {\n const cd = replaceRepeaterInChannelDef(channelDef, repeater);\n if (cd !== undefined) {\n out[channel] = cd;\n }\n }\n }\n }\n return out;\n}\n//# sourceMappingURL=repeater.js.map","import { isArray } from 'vega-util';\nimport { isBinning } from '../bin';\nimport { COLUMN, FACET_CHANNELS, ROW } from '../channel';\nimport { normalize, vgField } from '../channeldef';\nimport { reduce } from '../encoding';\nimport * as log from '../log';\nimport { hasDiscreteDomain } from '../scale';\nimport { DEFAULT_SORT_OP, isSortField } from '../sort';\nimport { isFacetMapping } from '../spec/facet';\nimport { contains, flatten } from '../util';\nimport { isVgRangeStep } from '../vega.schema';\nimport { buildModel } from './buildmodel';\nimport { assembleFacetData } from './data/assemble';\nimport { sortArrayIndexField } from './data/calculate';\nimport { parseData } from './data/parse';\nimport { assembleLabelTitle } from './header/assemble';\nimport { getHeaderChannel, getHeaderProperty } from './header/common';\nimport { HEADER_CHANNELS, HEADER_TYPES } from './header/component';\nimport { parseFacetHeaders } from './header/parse';\nimport { parseChildrenLayoutSize } from './layoutsize/parse';\nimport { ModelWithField } from './model';\nimport { replaceRepeaterInFacet } from './repeater';\nimport { assembleDomain, getFieldFromDomain } from './scale/domain';\nimport { assembleFacetSignals } from './selection/assemble';\nexport function facetSortFieldName(fieldDef, sort, opt) {\n return vgField(sort, Object.assign({ suffix: `by_${vgField(fieldDef)}` }, (opt || {})));\n}\nexport class FacetModel extends ModelWithField {\n constructor(spec, parent, parentGivenName, repeater, config) {\n super(spec, 'facet', parent, parentGivenName, config, repeater, spec.resolve);\n this.child = buildModel(spec.spec, this, this.getName('child'), undefined, repeater, config, false);\n this.children = [this.child];\n const facet = replaceRepeaterInFacet(spec.facet, repeater);\n this.facet = this.initFacet(facet);\n }\n initFacet(facet) {\n // clone to prevent side effect to the original spec\n if (!isFacetMapping(facet)) {\n return { facet: normalize(facet, 'facet') };\n }\n return reduce(facet, (normalizedFacet, fieldDef, channel) => {\n if (!contains([ROW, COLUMN], channel)) {\n // Drop unsupported channel\n log.warn(log.message.incompatibleChannel(channel, 'facet'));\n return normalizedFacet;\n }\n if (fieldDef.field === undefined) {\n log.warn(log.message.emptyFieldDef(fieldDef, channel));\n return normalizedFacet;\n }\n // Convert type to full, lowercase type, or augment the fieldDef with a default type if missing.\n normalizedFacet[channel] = normalize(fieldDef, channel);\n return normalizedFacet;\n }, {});\n }\n channelHasField(channel) {\n return !!this.facet[channel];\n }\n fieldDef(channel) {\n return this.facet[channel];\n }\n parseData() {\n this.component.data = parseData(this);\n this.child.parseData();\n }\n parseLayoutSize() {\n parseChildrenLayoutSize(this);\n }\n parseSelections() {\n // As a facet has a single child, the selection components are the same.\n // The child maintains its selections to assemble signals, which remain\n // within its unit.\n this.child.parseSelections();\n this.component.selection = this.child.component.selection;\n }\n parseMarkGroup() {\n this.child.parseMarkGroup();\n }\n parseAxesAndHeaders() {\n this.child.parseAxesAndHeaders();\n parseFacetHeaders(this);\n }\n assembleSelectionTopLevelSignals(signals) {\n return this.child.assembleSelectionTopLevelSignals(signals);\n }\n assembleSignals() {\n this.child.assembleSignals();\n return [];\n }\n assembleSelectionData(data) {\n return this.child.assembleSelectionData(data);\n }\n getHeaderLayoutMixins() {\n const layoutMixins = {};\n for (const channel of FACET_CHANNELS) {\n for (const headerType of HEADER_TYPES) {\n const layoutHeaderComponent = this.component.layoutHeaders[channel];\n const headerComponent = layoutHeaderComponent[headerType];\n const { facetFieldDef } = layoutHeaderComponent;\n if (facetFieldDef) {\n const titleOrient = getHeaderProperty('titleOrient', facetFieldDef, this.config, channel);\n if (contains(['right', 'bottom'], titleOrient)) {\n const headerChannel = getHeaderChannel(channel, titleOrient);\n layoutMixins.titleAnchor = layoutMixins.titleAnchor || {};\n layoutMixins.titleAnchor[headerChannel] = 'end';\n }\n }\n if (headerComponent && headerComponent[0]) {\n // set header/footerBand\n const sizeType = channel === 'row' ? 'height' : 'width';\n const bandType = headerType === 'header' ? 'headerBand' : 'footerBand';\n if (channel !== 'facet' && !this.child.component.layoutSize.get(sizeType)) {\n // If facet child does not have size signal, then apply headerBand\n layoutMixins[bandType] = layoutMixins[bandType] || {};\n layoutMixins[bandType][channel] = 0.5;\n }\n if (layoutHeaderComponent.title) {\n layoutMixins.offset = layoutMixins.offset || {};\n layoutMixins.offset[channel === 'row' ? 'rowTitle' : 'columnTitle'] = 10;\n }\n }\n }\n }\n return layoutMixins;\n }\n assembleDefaultLayout() {\n const { column, row } = this.facet;\n const columns = column ? this.columnDistinctSignal() : row ? 1 : undefined;\n let align = 'all';\n // Do not align the cells if the scale corresponding to the direction is indepent.\n // We always align when we facet into both row and column.\n if (!row && this.component.resolve.scale.x === 'independent') {\n align = 'none';\n }\n else if (!column && this.component.resolve.scale.y === 'independent') {\n align = 'none';\n }\n return Object.assign({}, this.getHeaderLayoutMixins(), (columns ? { columns } : {}), { bounds: 'full', align });\n }\n assembleLayoutSignals() {\n // FIXME(https://github.com/vega/vega-lite/issues/1193): this can be incorrect if we have independent scales.\n return this.child.assembleLayoutSignals();\n }\n columnDistinctSignal() {\n if (this.parent && this.parent instanceof FacetModel) {\n // For nested facet, we will add columns to group mark instead\n // See discussion in https://github.com/vega/vega/issues/952\n // and https://github.com/vega/vega-view/releases/tag/v1.2.6\n return undefined;\n }\n else {\n // In facetNode.assemble(), the name is always this.getName('column') + '_layout'.\n const facetLayoutDataName = this.getName('column_domain');\n return { signal: `length(data('${facetLayoutDataName}'))` };\n }\n }\n assembleGroup(signals) {\n if (this.parent && this.parent instanceof FacetModel) {\n // Provide number of columns for layout.\n // See discussion in https://github.com/vega/vega/issues/952\n // and https://github.com/vega/vega-view/releases/tag/v1.2.6\n return Object.assign({}, (this.channelHasField('column')\n ? {\n encode: {\n update: {\n // TODO(https://github.com/vega/vega-lite/issues/2759):\n // Correct the signal for facet of concat of facet_column\n columns: { field: vgField(this.facet.column, { prefix: 'distinct' }) }\n }\n }\n }\n : {}), super.assembleGroup(signals));\n }\n return super.assembleGroup(signals);\n }\n /**\n * Aggregate cardinality for calculating size\n */\n getCardinalityAggregateForChild() {\n const fields = [];\n const ops = [];\n const as = [];\n if (this.child instanceof FacetModel) {\n if (this.child.channelHasField('column')) {\n const field = vgField(this.child.facet.column);\n fields.push(field);\n ops.push('distinct');\n as.push(`distinct_${field}`);\n }\n }\n else {\n for (const channel of ['x', 'y']) {\n const childScaleComponent = this.child.component.scales[channel];\n if (childScaleComponent && !childScaleComponent.merged) {\n const type = childScaleComponent.get('type');\n const range = childScaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n const domain = assembleDomain(this.child, channel);\n const field = getFieldFromDomain(domain);\n if (field) {\n fields.push(field);\n ops.push('distinct');\n as.push(`distinct_${field}`);\n }\n else {\n log.warn('Unknown field for ${channel}. Cannot calculate view size.');\n }\n }\n }\n }\n }\n return { fields, ops, as };\n }\n assembleFacet() {\n const { name, data } = this.component.data.facetRoot;\n const { row, column } = this.facet;\n const { fields, ops, as } = this.getCardinalityAggregateForChild();\n const groupby = [];\n for (const channel of FACET_CHANNELS) {\n const fieldDef = this.facet[channel];\n if (fieldDef) {\n groupby.push(vgField(fieldDef));\n const { bin, sort } = fieldDef;\n if (isBinning(bin)) {\n groupby.push(vgField(fieldDef, { binSuffix: 'end' }));\n }\n if (isSortField(sort)) {\n const { field, op = DEFAULT_SORT_OP } = sort;\n const outputName = facetSortFieldName(fieldDef, sort);\n if (row && column) {\n // For crossed facet, use pre-calculate field as it requires a different groupby\n // For each calculated field, apply max and assign them to the same name as\n // all values of the same group should be the same anyway.\n fields.push(outputName);\n ops.push('max');\n as.push(outputName);\n }\n else {\n fields.push(field);\n ops.push(op);\n as.push(outputName);\n }\n }\n else if (isArray(sort)) {\n const outputName = sortArrayIndexField(fieldDef, channel);\n fields.push(outputName);\n ops.push('max');\n as.push(outputName);\n }\n }\n }\n const cross = !!row && !!column;\n return Object.assign({ name,\n data,\n groupby }, (cross || fields.length\n ? {\n aggregate: Object.assign({}, (cross ? { cross } : {}), (fields.length ? { fields, ops, as } : {}))\n }\n : {}));\n }\n facetSortFields(channel) {\n const { facet } = this;\n const fieldDef = facet[channel];\n if (fieldDef) {\n if (isSortField(fieldDef.sort)) {\n return [facetSortFieldName(fieldDef, fieldDef.sort, { expr: 'datum' })];\n }\n else if (isArray(fieldDef.sort)) {\n return [sortArrayIndexField(fieldDef, channel, { expr: 'datum' })];\n }\n return [vgField(fieldDef, { expr: 'datum' })];\n }\n return [];\n }\n facetSortOrder(channel) {\n const { facet } = this;\n const fieldDef = facet[channel];\n if (fieldDef) {\n const { sort } = fieldDef;\n const order = (isSortField(sort) ? sort.order : !isArray(sort) && sort) || 'ascending';\n return [order];\n }\n return [];\n }\n assembleLabelTitle() {\n const { facet, config } = this;\n if (facet.facet) {\n // Facet always uses title to display labels\n return assembleLabelTitle(facet.facet, 'facet', config);\n }\n const ORTHOGONAL_ORIENT = {\n row: ['top', 'bottom'],\n column: ['left', 'right']\n };\n for (const channel of HEADER_CHANNELS) {\n if (facet[channel]) {\n const labelOrient = getHeaderProperty('labelOrient', facet[channel], config, channel);\n if (contains(ORTHOGONAL_ORIENT[channel], labelOrient)) {\n // Row/Column with orthogonal labelOrient must use title to display labels\n return assembleLabelTitle(facet[channel], channel, config);\n }\n }\n }\n return undefined;\n }\n assembleMarks() {\n const { child } = this;\n // If we facet by two dimensions, we need to add a cross operator to the aggregation\n // so that we create all groups\n const facetRoot = this.component.data.facetRoot;\n const data = assembleFacetData(facetRoot);\n const encodeEntry = child.assembleGroupEncodeEntry(false);\n const title = this.assembleLabelTitle() || child.assembleTitle();\n const style = child.assembleGroupStyle();\n const markGroup = Object.assign({ name: this.getName('cell'), type: 'group' }, (title ? { title } : {}), (style ? { style } : {}), { from: {\n facet: this.assembleFacet()\n }, \n // TODO: move this to after data\n sort: {\n field: flatten(FACET_CHANNELS.map(c => this.facetSortFields(c))),\n order: flatten(FACET_CHANNELS.map(c => this.facetSortOrder(c)))\n } }, (data.length > 0 ? { data: data } : {}), (encodeEntry ? { encode: { update: encodeEntry } } : {}), child.assembleGroup(assembleFacetSignals(this, [])));\n return [markGroup];\n }\n getMapping() {\n return this.facet;\n }\n}\n//# sourceMappingURL=facet.js.map","import { isGenerator, isGraticuleGenerator, isInlineData, isNamedData, isSequenceGenerator, isUrlData, MAIN, RAW } from '../../data';\nimport * as log from '../../log';\nimport { isAggregate, isBin, isCalculate, isFilter, isFlatten, isFold, isImpute, isJoinAggregate, isLookup, isSample, isStack, isTimeUnit, isWindow } from '../../transform';\nimport { deepEqual, mergeDeep } from '../../util';\nimport { isFacetModel, isLayerModel, isUnitModel } from '../model';\nimport { requiresSelectionId } from '../selection';\nimport { AggregateNode } from './aggregate';\nimport { BinNode } from './bin';\nimport { CalculateNode } from './calculate';\nimport { OutputNode } from './dataflow';\nimport { FacetNode } from './facet';\nimport { FilterNode } from './filter';\nimport { FilterInvalidNode } from './filterinvalid';\nimport { FlattenTransformNode } from './flatten';\nimport { FoldTransformNode } from './fold';\nimport { ParseNode } from './formatparse';\nimport { GeoJSONNode } from './geojson';\nimport { GeoPointNode } from './geopoint';\nimport { GraticuleNode } from './graticule';\nimport { IdentifierNode } from './identifier';\nimport { ImputeNode } from './impute';\nimport { AncestorParse } from './index';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nimport { makeJoinAggregateFromFacet } from './joinaggregatefacet';\nimport { LookupNode } from './lookup';\nimport { SampleTransformNode } from './sample';\nimport { SequenceNode } from './sequence';\nimport { SourceNode } from './source';\nimport { StackNode } from './stack';\nimport { TimeUnitNode } from './timeunit';\nimport { WindowTransformNode } from './window';\nexport function findSource(data, sources) {\n for (const other of sources) {\n const otherData = other.data;\n // if both datasets have a name defined, we cannot merge\n if (data.name && other.hasName() && data.name !== other.dataName) {\n continue;\n }\n // feature and mesh are mutually exclusive\n if (data['format'] && data['format'].mesh && otherData.format && otherData.format.feature) {\n continue;\n }\n if (isInlineData(data) && isInlineData(otherData)) {\n if (deepEqual(data.values, otherData.values)) {\n return other;\n }\n }\n else if (isUrlData(data) && isUrlData(otherData)) {\n if (data.url === otherData.url) {\n return other;\n }\n }\n else if (isNamedData(data)) {\n if (data.name === other.dataName) {\n return other;\n }\n }\n }\n return null;\n}\nfunction parseRoot(model, sources) {\n if (model.data || !model.parent) {\n // if the model defines a data source or is the root, create a source node\n const existingSource = findSource(model.data, sources);\n if (existingSource) {\n if (!isGenerator(model.data)) {\n existingSource.data.format = mergeDeep({}, model.data.format, existingSource.data.format);\n }\n // if the new source has a name but the existing one does not, we can set it\n if (!existingSource.hasName() && model.data.name) {\n existingSource.dataName = model.data.name;\n }\n return existingSource;\n }\n else {\n const source = new SourceNode(model.data);\n sources.push(source);\n return source;\n }\n }\n else {\n // If we don't have a source defined (overriding parent's data), use the parent's facet root or main.\n return model.parent.component.data.facetRoot\n ? model.parent.component.data.facetRoot\n : model.parent.component.data.main;\n }\n}\n/**\n * Parses a transform array into a chain of connected dataflow nodes.\n */\nexport function parseTransformArray(head, model, ancestorParse) {\n let lookupCounter = 0;\n for (const t of model.transforms) {\n let derivedType = undefined;\n let transformNode;\n if (isCalculate(t)) {\n transformNode = head = new CalculateNode(head, t);\n derivedType = 'derived';\n }\n else if (isFilter(t)) {\n transformNode = head = ParseNode.makeImplicitFromFilterTransform(head, t, ancestorParse) || head;\n head = new FilterNode(head, model, t.filter);\n }\n else if (isBin(t)) {\n transformNode = head = BinNode.makeFromTransform(head, t, model);\n derivedType = 'number';\n }\n else if (isTimeUnit(t)) {\n transformNode = head = TimeUnitNode.makeFromTransform(head, t);\n derivedType = 'date';\n // Create parse node because the input to time unit is always date.\n const parsedAs = ancestorParse.getWithExplicit(t.field);\n if (parsedAs.value === undefined) {\n head = new ParseNode(head, { [t.field]: derivedType });\n ancestorParse.set(t.field, derivedType, false);\n }\n }\n else if (isAggregate(t)) {\n transformNode = head = AggregateNode.makeFromTransform(head, t);\n derivedType = 'number';\n if (requiresSelectionId(model)) {\n head = new IdentifierNode(head);\n }\n }\n else if (isLookup(t)) {\n transformNode = head = LookupNode.make(head, model, t, lookupCounter++);\n derivedType = 'derived';\n }\n else if (isWindow(t)) {\n transformNode = head = new WindowTransformNode(head, t);\n derivedType = 'number';\n }\n else if (isJoinAggregate(t)) {\n transformNode = head = new JoinAggregateTransformNode(head, t);\n derivedType = 'number';\n }\n else if (isStack(t)) {\n transformNode = head = StackNode.makeFromTransform(head, t);\n derivedType = 'derived';\n }\n else if (isFold(t)) {\n transformNode = head = new FoldTransformNode(head, t);\n derivedType = 'derived';\n }\n else if (isFlatten(t)) {\n transformNode = head = new FlattenTransformNode(head, t);\n derivedType = 'derived';\n }\n else if (isSample(t)) {\n head = new SampleTransformNode(head, t);\n }\n else if (isImpute(t)) {\n transformNode = head = ImputeNode.makeFromTransform(head, t);\n derivedType = 'derived';\n }\n else {\n log.warn(log.message.invalidTransformIgnored(t));\n continue;\n }\n if (transformNode && derivedType !== undefined) {\n for (const field of transformNode.producedFields()) {\n ancestorParse.set(field, derivedType, false);\n }\n }\n }\n return head;\n}\n/*\nDescription of the dataflow (http://asciiflow.com/):\n +--------+\n | Source |\n +---+----+\n |\n v\n FormatParse\n (explicit)\n |\n v\n Transforms\n(Filter, Calculate, Binning, TimeUnit, Aggregate, Window, ...)\n |\n v\n FormatParse\n (implicit)\n |\n v\n Binning (in `encoding`)\n |\n v\n Timeunit (in `encoding`)\n |\n v\nFormula From Sort Array\n |\n v\n +--+--+\n | Raw |\n +-----+\n |\n v\n Aggregate (in `encoding`)\n |\n v\n Stack (in `encoding`)\n |\n v\n Invalid Filter\n |\n v\n +----------+\n | Main |\n +----------+\n |\n v\n +-------+\n | Facet |----> \"column\", \"column-layout\", and \"row\"\n +-------+\n |\n v\n ...Child data...\n*/\nexport function parseData(model) {\n let head = parseRoot(model, model.component.data.sources);\n const { outputNodes, outputNodeRefCounts } = model.component.data;\n const ancestorParse = model.parent ? model.parent.component.data.ancestorParse.clone() : new AncestorParse();\n const data = model.data;\n if (isGenerator(data)) {\n // insert generator transform\n if (isSequenceGenerator(data)) {\n head = new SequenceNode(head, data.sequence);\n }\n else if (isGraticuleGenerator(data)) {\n head = new GraticuleNode(head, data.graticule);\n }\n // no parsing necessary for generator\n ancestorParse.parseNothing = true;\n }\n else if (data && data.format && data.format.parse === null) {\n // format.parse: null means disable parsing\n ancestorParse.parseNothing = true;\n }\n head = ParseNode.makeExplicit(head, model, ancestorParse) || head;\n // Default discrete selections require an identifier transform to\n // uniquely identify data points as the _id field is volatile. Add\n // this transform at the head of our pipeline such that the identifier\n // field is available for all subsequent datasets. Additional identifier\n // transforms will be necessary when new tuples are constructed\n // (e.g., post-aggregation).\n if (requiresSelectionId(model) &&\n // only add identifier to unit/layer models that do not have layer parents to avoid redundant identifier transforms\n ((isUnitModel(model) || isLayerModel(model)) && (!model.parent || !isLayerModel(model.parent)))) {\n head = new IdentifierNode(head);\n }\n // HACK: This is equivalent for merging bin extent for union scale.\n // FIXME(https://github.com/vega/vega-lite/issues/2270): Correctly merge extent / bin node for shared bin scale\n const parentIsLayer = model.parent && isLayerModel(model.parent);\n if (isUnitModel(model) || isFacetModel(model)) {\n if (parentIsLayer) {\n head = BinNode.makeFromEncoding(head, model) || head;\n }\n }\n if (model.transforms.length > 0) {\n head = parseTransformArray(head, model, ancestorParse);\n }\n head = ParseNode.makeImplicitFromEncoding(head, model, ancestorParse) || head;\n if (isUnitModel(model)) {\n head = GeoJSONNode.parseAll(head, model);\n head = GeoPointNode.parseAll(head, model);\n }\n if (isUnitModel(model) || isFacetModel(model)) {\n if (!parentIsLayer) {\n head = BinNode.makeFromEncoding(head, model) || head;\n }\n head = TimeUnitNode.makeFromEncoding(head, model) || head;\n head = CalculateNode.parseAllForSortIndex(head, model);\n }\n // add an output node pre aggregation\n const rawName = model.getName(RAW);\n const raw = new OutputNode(head, rawName, RAW, outputNodeRefCounts);\n outputNodes[rawName] = raw;\n head = raw;\n if (isUnitModel(model)) {\n const agg = AggregateNode.makeFromEncoding(head, model);\n if (agg) {\n head = agg;\n if (requiresSelectionId(model)) {\n head = new IdentifierNode(head);\n }\n }\n head = ImputeNode.makeFromEncoding(head, model) || head;\n head = StackNode.makeFromEncoding(head, model) || head;\n }\n if (isUnitModel(model)) {\n head = FilterInvalidNode.make(head, model) || head;\n }\n // output node for marks\n const mainName = model.getName(MAIN);\n const main = new OutputNode(head, mainName, MAIN, outputNodeRefCounts);\n outputNodes[mainName] = main;\n head = main;\n // add facet marker\n let facetRoot = null;\n if (isFacetModel(model)) {\n const facetName = model.getName('facet');\n // Derive new sort index field for facet's sort array\n head = CalculateNode.parseAllForSortIndex(head, model);\n // Derive new aggregate for facet's sort field\n // augment data source with new fields for crossed facet\n head = makeJoinAggregateFromFacet(head, model.facet) || head;\n facetRoot = new FacetNode(head, model, facetName, main.getSource());\n outputNodes[facetName] = facetRoot;\n head = facetRoot;\n }\n return Object.assign({}, model.component.data, { outputNodes,\n outputNodeRefCounts,\n raw,\n main,\n facetRoot,\n ancestorParse });\n}\n//# sourceMappingURL=parse.js.map","import { vgField } from '../../channeldef';\nimport { DEFAULT_SORT_OP, isSortField } from '../../sort';\nimport { facetSortFieldName } from '../facet';\nimport { JoinAggregateTransformNode } from './joinaggregate';\nexport function makeJoinAggregateFromFacet(parent, facet) {\n const { row, column } = facet;\n if (row && column) {\n let newParent = null;\n // only need to make one for crossed facet\n for (const fieldDef of [row, column]) {\n if (isSortField(fieldDef.sort)) {\n const { field, op = DEFAULT_SORT_OP } = fieldDef.sort;\n parent = newParent = new JoinAggregateTransformNode(parent, {\n joinaggregate: [\n {\n op,\n field,\n as: facetSortFieldName(fieldDef, fieldDef.sort, { forAs: true })\n }\n ],\n groupby: [vgField(fieldDef)]\n });\n }\n }\n return newParent;\n }\n return null;\n}\n//# sourceMappingURL=joinaggregatefacet.js.map","import { keys } from '../util';\nimport { parseData } from './data/parse';\nimport { assembleLayoutSignals } from './layoutsize/assemble';\nimport { Model } from './model';\nexport class BaseConcatModel extends Model {\n constructor(spec, specType, parent, parentGivenName, config, repeater, resolve) {\n super(spec, specType, parent, parentGivenName, config, repeater, resolve);\n }\n parseData() {\n this.component.data = parseData(this);\n this.children.forEach(child => {\n child.parseData();\n });\n }\n parseSelections() {\n // Merge selections up the hierarchy so that they may be referenced\n // across unit specs. Persist their definitions within each child\n // to assemble signals which remain within output Vega unit groups.\n this.component.selection = {};\n for (const child of this.children) {\n child.parseSelections();\n keys(child.component.selection).forEach(key => {\n this.component.selection[key] = child.component.selection[key];\n });\n }\n }\n parseMarkGroup() {\n for (const child of this.children) {\n child.parseMarkGroup();\n }\n }\n parseAxesAndHeaders() {\n for (const child of this.children) {\n child.parseAxesAndHeaders();\n }\n // TODO(#2415): support shared axes\n }\n assembleSelectionTopLevelSignals(signals) {\n return this.children.reduce((sg, child) => child.assembleSelectionTopLevelSignals(sg), signals);\n }\n assembleSignals() {\n this.children.forEach(child => child.assembleSignals());\n return [];\n }\n assembleLayoutSignals() {\n return this.children.reduce((signals, child) => {\n return [...signals, ...child.assembleLayoutSignals()];\n }, assembleLayoutSignals(this));\n }\n assembleSelectionData(data) {\n return this.children.reduce((db, child) => child.assembleSelectionData(db), data);\n }\n assembleMarks() {\n // only children have marks\n return this.children.map(child => {\n const title = child.assembleTitle();\n const style = child.assembleGroupStyle();\n const encodeEntry = child.assembleGroupEncodeEntry(false);\n return Object.assign({ type: 'group', name: child.getName('group') }, (title ? { title } : {}), (style ? { style } : {}), (encodeEntry ? { encode: { update: encodeEntry } } : {}), child.assembleGroup());\n });\n }\n}\n//# sourceMappingURL=baseconcat.js.map","import * as log from '../log';\nimport { isHConcatSpec, isVConcatSpec } from '../spec';\nimport { BaseConcatModel } from './baseconcat';\nimport { buildModel } from './buildmodel';\nimport { parseConcatLayoutSize } from './layoutsize/parse';\nexport class ConcatModel extends BaseConcatModel {\n constructor(spec, parent, parentGivenName, repeater, config) {\n super(spec, 'concat', parent, parentGivenName, config, repeater, spec.resolve);\n if (spec.resolve && spec.resolve.axis && (spec.resolve.axis.x === 'shared' || spec.resolve.axis.y === 'shared')) {\n log.warn(log.message.CONCAT_CANNOT_SHARE_AXIS);\n }\n this.concatType = isVConcatSpec(spec) ? 'vconcat' : isHConcatSpec(spec) ? 'hconcat' : 'concat';\n this.children = this.getChildren(spec).map((child, i) => {\n return buildModel(child, this, this.getName('concat_' + i), undefined, repeater, config, false);\n });\n }\n getChildren(spec) {\n if (isVConcatSpec(spec)) {\n return spec.vconcat;\n }\n else if (isHConcatSpec(spec)) {\n return spec.hconcat;\n }\n return spec.concat;\n }\n parseLayoutSize() {\n parseConcatLayoutSize(this);\n }\n parseAxisGroup() {\n return null;\n }\n assembleDefaultLayout() {\n return Object.assign({}, (this.concatType === 'vconcat' ? { columns: 1 } : {}), { bounds: 'full', \n // Use align each so it can work with multiple plots with different size\n align: 'each' });\n }\n}\n//# sourceMappingURL=concat.js.map","import { duplicate } from '../../util';\nimport { Split } from '../split';\nfunction isFalseOrNull(v) {\n return v === false || v === null;\n}\nexport class AxisComponent extends Split {\n constructor(explicit = {}, implicit = {}, mainExtracted = false) {\n super();\n this.explicit = explicit;\n this.implicit = implicit;\n this.mainExtracted = mainExtracted;\n }\n clone() {\n return new AxisComponent(duplicate(this.explicit), duplicate(this.implicit), this.mainExtracted);\n }\n hasAxisPart(part) {\n // FIXME(https://github.com/vega/vega-lite/issues/2552) this method can be wrong if users use a Vega theme.\n if (part === 'axis') {\n // always has the axis container part\n return true;\n }\n if (part === 'grid' || part === 'title') {\n return !!this.get(part);\n }\n // Other parts are enabled by default, so they should not be false or null.\n return !isFalseOrNull(this.get(part));\n }\n}\n//# sourceMappingURL=component.js.map","import { AXIS_PARTS, isAxisProperty, VG_AXIS_PROPERTIES } from '../../axis';\nimport { isBinned } from '../../bin';\nimport { POSITION_SCALE_CHANNELS, X, Y } from '../../channel';\nimport { isTimeFormatFieldDef, toFieldDefBase } from '../../channeldef';\nimport { contains, getFirstDefined, keys, normalizeAngle } from '../../util';\nimport { mergeTitle, mergeTitleComponent, mergeTitleFieldDefs, numberFormat } from '../common';\nimport { guideEncodeEntry } from '../guide';\nimport { parseGuideResolve } from '../resolve';\nimport { defaultTieBreaker, mergeValuesWithExplicit } from '../split';\nimport { AxisComponent } from './component';\nimport { getAxisConfig } from './config';\nimport * as encode from './encode';\nimport * as properties from './properties';\nexport function parseUnitAxes(model) {\n return POSITION_SCALE_CHANNELS.reduce((axis, channel) => {\n if (model.component.scales[channel] && model.axis(channel)) {\n axis[channel] = [parseAxis(channel, model)];\n }\n return axis;\n }, {});\n}\nconst OPPOSITE_ORIENT = {\n bottom: 'top',\n top: 'bottom',\n left: 'right',\n right: 'left'\n};\nexport function parseLayerAxes(model) {\n const { axes, resolve } = model.component;\n const axisCount = { top: 0, bottom: 0, right: 0, left: 0 };\n for (const child of model.children) {\n child.parseAxesAndHeaders();\n for (const channel of keys(child.component.axes)) {\n resolve.axis[channel] = parseGuideResolve(model.component.resolve, channel);\n if (resolve.axis[channel] === 'shared') {\n // If the resolve says shared (and has not been overridden)\n // We will try to merge and see if there is a conflict\n axes[channel] = mergeAxisComponents(axes[channel], child.component.axes[channel]);\n if (!axes[channel]) {\n // If merge returns nothing, there is a conflict so we cannot make the axis shared.\n // Thus, mark axis as independent and remove the axis component.\n resolve.axis[channel] = 'independent';\n delete axes[channel];\n }\n }\n }\n }\n // Move axes to layer's axis component and merge shared axes\n for (const channel of [X, Y]) {\n for (const child of model.children) {\n if (!child.component.axes[channel]) {\n // skip if the child does not have a particular axis\n continue;\n }\n if (resolve.axis[channel] === 'independent') {\n // If axes are independent, concat the axisComponent array.\n axes[channel] = (axes[channel] || []).concat(child.component.axes[channel]);\n // Automatically adjust orient\n for (const axisComponent of child.component.axes[channel]) {\n const { value: orient, explicit } = axisComponent.getWithExplicit('orient');\n if (axisCount[orient] > 0 && !explicit) {\n // Change axis orient if the number do not match\n const oppositeOrient = OPPOSITE_ORIENT[orient];\n if (axisCount[orient] > axisCount[oppositeOrient]) {\n axisComponent.set('orient', oppositeOrient, false);\n }\n }\n axisCount[orient]++;\n // TODO(https://github.com/vega/vega-lite/issues/2634): automatically add extra offset?\n }\n }\n // After merging, make sure to remove axes from child\n delete child.component.axes[channel];\n }\n // Suppress grid lines for dual axis charts (https://github.com/vega/vega-lite/issues/4676)\n if (resolve.axis[channel] === 'independent' && axes[channel] && axes[channel].length > 1) {\n for (const axisCmpt of axes[channel]) {\n if (!!axisCmpt.get('grid') && !axisCmpt.explicit.grid) {\n axisCmpt.implicit.grid = false;\n }\n }\n }\n }\n}\nfunction mergeAxisComponents(mergedAxisCmpts, childAxisCmpts) {\n if (mergedAxisCmpts) {\n // FIXME: this is a bit wrong once we support multiple axes\n if (mergedAxisCmpts.length !== childAxisCmpts.length) {\n return undefined; // Cannot merge axis component with different number of axes.\n }\n const length = mergedAxisCmpts.length;\n for (let i = 0; i < length; i++) {\n const merged = mergedAxisCmpts[i];\n const child = childAxisCmpts[i];\n if (!!merged !== !!child) {\n return undefined;\n }\n else if (merged && child) {\n const mergedOrient = merged.getWithExplicit('orient');\n const childOrient = child.getWithExplicit('orient');\n if (mergedOrient.explicit && childOrient.explicit && mergedOrient.value !== childOrient.value) {\n // TODO: throw warning if resolve is explicit (We don't have info about explicit/implicit resolve yet.)\n // Cannot merge due to inconsistent orient\n return undefined;\n }\n else {\n mergedAxisCmpts[i] = mergeAxisComponent(merged, child);\n }\n }\n }\n }\n else {\n // For first one, return a copy of the child\n return childAxisCmpts.map(axisComponent => axisComponent.clone());\n }\n return mergedAxisCmpts;\n}\nfunction mergeAxisComponent(merged, child) {\n for (const prop of VG_AXIS_PROPERTIES) {\n const mergedValueWithExplicit = mergeValuesWithExplicit(merged.getWithExplicit(prop), child.getWithExplicit(prop), prop, 'axis', \n // Tie breaker function\n (v1, v2) => {\n switch (prop) {\n case 'title':\n return mergeTitleComponent(v1, v2);\n case 'gridScale':\n return {\n explicit: v1.explicit,\n value: getFirstDefined(v1.value, v2.value)\n };\n }\n return defaultTieBreaker(v1, v2, prop, 'axis');\n });\n merged.setWithExplicit(prop, mergedValueWithExplicit);\n }\n return merged;\n}\nfunction getFieldDefTitle(model, channel) {\n const channel2 = channel === 'x' ? 'x2' : 'y2';\n const fieldDef = model.fieldDef(channel);\n const fieldDef2 = model.fieldDef(channel2);\n const title1 = fieldDef ? fieldDef.title : undefined;\n const title2 = fieldDef2 ? fieldDef2.title : undefined;\n if (title1 && title2) {\n return mergeTitle(title1, title2);\n }\n else if (title1) {\n return title1;\n }\n else if (title2) {\n return title2;\n }\n else if (title1 !== undefined) {\n // falsy value to disable config\n return title1;\n }\n else if (title2 !== undefined) {\n // falsy value to disable config\n return title2;\n }\n return undefined;\n}\nfunction isExplicit(value, property, axis, model, channel) {\n switch (property) {\n case 'titleAngle':\n case 'labelAngle':\n return value === normalizeAngle(axis[property]);\n case 'values':\n return !!axis.values;\n // specified axis.values is already respected, but may get transformed.\n case 'encode':\n // both VL axis.encoding and axis.labelAngle affect VG axis.encode\n return !!axis.encoding || !!axis.labelAngle;\n case 'title':\n // title can be explicit if fieldDef.title is set\n if (value === getFieldDefTitle(model, channel)) {\n return true;\n }\n }\n // Otherwise, things are explicit if the returned value matches the specified property\n return value === axis[property];\n}\nfunction parseAxis(channel, model) {\n const axis = model.axis(channel);\n const axisComponent = new AxisComponent();\n // 1.2. Add properties\n VG_AXIS_PROPERTIES.forEach(property => {\n const value = getProperty(property, axis, channel, model);\n if (value !== undefined) {\n const explicit = isExplicit(value, property, axis, model, channel);\n const configValue = getAxisConfig(property, model.config, channel, axisComponent.get('orient'), model.getScaleComponent(channel).get('type'));\n // only set property if it is explicitly set or has no config value (otherwise we will accidentally override config)\n if (explicit || configValue === undefined) {\n // Do not apply implicit rule if there is a config value\n axisComponent.set(property, value, explicit);\n }\n else if (contains(['grid', 'orient'], property) && configValue) {\n // - Grid is an exception because we need to set grid = true to generate another grid axis\n // - Orient is not an axis config in Vega, so we need to set too.\n axisComponent.set(property, configValue, false);\n }\n }\n });\n // 2) Add guide encode definition groups\n const axisEncoding = axis.encoding || {};\n const axisEncode = AXIS_PARTS.reduce((e, part) => {\n if (!axisComponent.hasAxisPart(part)) {\n // No need to create encode for a disabled part.\n return e;\n }\n const axisEncodingPart = guideEncodeEntry(axisEncoding[part] || {}, model);\n const value = part === 'labels' ? encode.labels(model, channel, axisEncodingPart) : axisEncodingPart;\n if (value !== undefined && keys(value).length > 0) {\n e[part] = { update: value };\n }\n return e;\n }, {});\n // FIXME: By having encode as one property, we won't have fine grained encode merging.\n if (keys(axisEncode).length > 0) {\n axisComponent.set('encode', axisEncode, !!axis.encoding || axis.labelAngle !== undefined);\n }\n return axisComponent;\n}\nfunction getProperty(property, specifiedAxis, channel, model) {\n const fieldDef = model.fieldDef(channel);\n // Some properties depend on labelAngle so we have to declare it here.\n // Also, we don't use `getFirstDefined` for labelAngle\n // as we want to normalize specified value to be within [0,360)\n const labelAngle = properties.labelAngle(model, specifiedAxis, channel, fieldDef);\n const orient = getFirstDefined(specifiedAxis.orient, properties.orient(channel));\n switch (property) {\n case 'scale':\n return model.scaleName(channel);\n case 'gridScale':\n return properties.gridScale(model, channel);\n case 'format':\n // We don't include temporal field here as we apply format in encode block\n if (isTimeFormatFieldDef(fieldDef)) {\n return undefined;\n }\n return numberFormat(fieldDef, specifiedAxis.format, model.config);\n case 'formatType':\n // Same as format, We don't include temporal field here as we apply format in encode block\n if (isTimeFormatFieldDef(fieldDef)) {\n return undefined;\n }\n return specifiedAxis.formatType;\n case 'grid': {\n if (isBinned(model.fieldDef(channel).bin)) {\n return false;\n }\n else {\n const scaleType = model.getScaleComponent(channel).get('type');\n return getFirstDefined(specifiedAxis.grid, properties.defaultGrid(scaleType, fieldDef));\n }\n }\n case 'labelAlign':\n return getFirstDefined(specifiedAxis.labelAlign, properties.defaultLabelAlign(labelAngle, orient));\n case 'labelAngle':\n return labelAngle;\n case 'labelBaseline':\n return getFirstDefined(specifiedAxis.labelBaseline, properties.defaultLabelBaseline(labelAngle, orient));\n case 'labelFlush':\n return getFirstDefined(specifiedAxis.labelFlush, properties.defaultLabelFlush(fieldDef, channel));\n case 'labelOverlap': {\n const scaleType = model.getScaleComponent(channel).get('type');\n return getFirstDefined(specifiedAxis.labelOverlap, properties.defaultLabelOverlap(fieldDef, scaleType));\n }\n case 'orient':\n return orient;\n case 'tickCount': {\n const scaleType = model.getScaleComponent(channel).get('type');\n const sizeType = channel === 'x' ? 'width' : channel === 'y' ? 'height' : undefined;\n const size = sizeType ? model.getSizeSignalRef(sizeType) : undefined;\n return getFirstDefined(specifiedAxis.tickCount, properties.defaultTickCount({ fieldDef, scaleType, size }));\n }\n case 'title': {\n const channel2 = channel === 'x' ? 'x2' : 'y2';\n const fieldDef2 = model.fieldDef(channel2);\n // Keep undefined so we use default if title is unspecified.\n // For other falsy value, keep them so we will hide the title.\n return getFirstDefined(specifiedAxis.title, getFieldDefTitle(model, channel), // If title not specified, store base parts of fieldDef (and fieldDef2 if exists)\n mergeTitleFieldDefs([toFieldDefBase(fieldDef)], fieldDef2 ? [toFieldDefBase(fieldDef2)] : []));\n }\n case 'values':\n return properties.values(specifiedAxis, model, fieldDef);\n }\n // Otherwise, return specified property.\n return isAxisProperty(property) ? specifiedAxis[property] : undefined;\n}\n//# sourceMappingURL=parse.js.map","import { isTimeFormatFieldDef } from '../../channeldef';\nimport { ScaleType } from '../../scale';\nimport { keys } from '../../util';\nimport { timeFormatExpression } from '../common';\nexport function labels(model, channel, specifiedLabelsSpec) {\n const fieldDef = model.fieldDef(channel) ||\n (channel === 'x' ? model.fieldDef('x2') : channel === 'y' ? model.fieldDef('y2') : undefined);\n const axis = model.axis(channel);\n const config = model.config;\n let labelsSpec = {};\n // We use a label encoding instead of setting the `format` property because Vega does not let us determine how the format should be interpreted.\n if (isTimeFormatFieldDef(fieldDef)) {\n const isUTCScale = model.getScaleComponent(channel).get('type') === ScaleType.UTC;\n const expr = timeFormatExpression('datum.value', fieldDef.timeUnit, axis.format, config.axis.shortTimeLabels, null, isUTCScale);\n if (expr) {\n labelsSpec.text = { signal: expr };\n }\n }\n labelsSpec = Object.assign({}, labelsSpec, specifiedLabelsSpec);\n return keys(labelsSpec).length === 0 ? undefined : labelsSpec;\n}\n//# sourceMappingURL=encode.js.map","import { isBinned, isBinning } from '../../bin';\nimport { isContinuous, isFieldDef } from '../../channeldef';\nimport { isAggregate } from '../../encoding';\nimport * as log from '../../log';\nimport { AREA, BAR, CIRCLE, isMarkDef, LINE, POINT, RECT, RULE, SQUARE, TEXT, TICK } from '../../mark';\nimport { QUANTITATIVE, TEMPORAL } from '../../type';\nimport { contains, getFirstDefined } from '../../util';\nimport { getMarkConfig } from '../common';\nexport function normalizeMarkDef(mark, encoding, config) {\n const markDef = isMarkDef(mark) ? Object.assign({}, mark) : { type: mark };\n // set orient, which can be overridden by rules as sometimes the specified orient is invalid.\n const specifiedOrient = markDef.orient || getMarkConfig('orient', markDef, config);\n markDef.orient = orient(markDef.type, encoding, specifiedOrient);\n if (specifiedOrient !== undefined && specifiedOrient !== markDef.orient) {\n log.warn(log.message.orientOverridden(markDef.orient, specifiedOrient));\n }\n // set opacity and filled if not specified in mark config\n const specifiedOpacity = getFirstDefined(markDef.opacity, getMarkConfig('opacity', markDef, config));\n if (specifiedOpacity === undefined) {\n markDef.opacity = opacity(markDef.type, encoding);\n }\n const specifiedFilled = markDef.filled;\n if (specifiedFilled === undefined) {\n markDef.filled = filled(markDef, config);\n }\n // set cursor, which should be pointer if href channel is present unless otherwise specified\n const specifiedCursor = markDef.cursor || getMarkConfig('cursor', markDef, config);\n if (specifiedCursor === undefined) {\n markDef.cursor = cursor(markDef, encoding, config);\n }\n return markDef;\n}\nfunction cursor(markDef, encoding, config) {\n if (encoding.href || markDef.href || getMarkConfig('href', markDef, config)) {\n return 'pointer';\n }\n return markDef.cursor;\n}\nfunction opacity(mark, encoding) {\n if (contains([POINT, TICK, CIRCLE, SQUARE], mark)) {\n // point-based marks\n if (!isAggregate(encoding)) {\n return 0.7;\n }\n }\n return undefined;\n}\nfunction filled(markDef, config) {\n const filledConfig = getMarkConfig('filled', markDef, config);\n const mark = markDef.type;\n return getFirstDefined(filledConfig, mark !== POINT && mark !== LINE && mark !== RULE);\n}\nfunction orient(mark, encoding, specifiedOrient) {\n switch (mark) {\n case POINT:\n case CIRCLE:\n case SQUARE:\n case TEXT:\n case RECT:\n // orient is meaningless for these marks.\n return undefined;\n }\n const { x, y, x2, y2 } = encoding;\n switch (mark) {\n case BAR:\n if (isFieldDef(x) && isBinned(x.bin)) {\n return 'vertical';\n }\n if (isFieldDef(y) && isBinned(y.bin)) {\n return 'horizontal';\n }\n if (y2 || x2) {\n // Ranged bar does not always have clear orientation, so we allow overriding\n if (specifiedOrient) {\n return specifiedOrient;\n }\n // If y is range and x is non-range, non-bin Q, y is likely a prebinned field\n if (!x2 && isFieldDef(x) && x.type === QUANTITATIVE && !isBinning(x.bin)) {\n return 'horizontal';\n }\n // If x is range and y is non-range, non-bin Q, x is likely a prebinned field\n if (!y2 && isFieldDef(y) && y.type === QUANTITATIVE && !isBinning(y.bin)) {\n return 'vertical';\n }\n }\n // falls through\n case RULE:\n // return undefined for line segment rule and bar with both axis ranged\n if (x2 && y2) {\n return undefined;\n }\n // falls through\n case AREA:\n // If there are range for both x and y, y (vertical) has higher precedence.\n if (y2) {\n if (isFieldDef(y) && isBinned(y.bin)) {\n return 'horizontal';\n }\n else {\n return 'vertical';\n }\n }\n else if (x2) {\n if (isFieldDef(x) && isBinned(x.bin)) {\n return 'vertical';\n }\n else {\n return 'horizontal';\n }\n }\n else if (mark === RULE) {\n if (encoding.x && !encoding.y) {\n return 'vertical';\n }\n else if (encoding.y && !encoding.x) {\n return 'horizontal';\n }\n }\n // falls through\n case LINE:\n case TICK: {\n // Tick is opposite to bar, line, area and never have ranged mark.\n const xIsContinuous = isFieldDef(encoding.x) && isContinuous(encoding.x);\n const yIsContinuous = isFieldDef(encoding.y) && isContinuous(encoding.y);\n if (xIsContinuous && !yIsContinuous) {\n return mark !== 'tick' ? 'horizontal' : 'vertical';\n }\n else if (!xIsContinuous && yIsContinuous) {\n return mark !== 'tick' ? 'vertical' : 'horizontal';\n }\n else if (xIsContinuous && yIsContinuous) {\n const xDef = encoding.x; // we can cast here since they are surely fieldDef\n const yDef = encoding.y;\n const xIsTemporal = xDef.type === TEMPORAL;\n const yIsTemporal = yDef.type === TEMPORAL;\n // temporal without timeUnit is considered continuous, but better serves as dimension\n if (xIsTemporal && !yIsTemporal) {\n return mark !== 'tick' ? 'vertical' : 'horizontal';\n }\n else if (!xIsTemporal && yIsTemporal) {\n return mark !== 'tick' ? 'horizontal' : 'vertical';\n }\n if (!xDef.aggregate && yDef.aggregate) {\n return mark !== 'tick' ? 'vertical' : 'horizontal';\n }\n else if (xDef.aggregate && !yDef.aggregate) {\n return mark !== 'tick' ? 'horizontal' : 'vertical';\n }\n if (specifiedOrient) {\n // When ambiguous, use user specified one.\n return specifiedOrient;\n }\n return 'vertical';\n }\n else {\n // Discrete x Discrete case\n if (specifiedOrient) {\n // When ambiguous, use user specified one.\n return specifiedOrient;\n }\n return undefined;\n }\n }\n }\n return 'vertical';\n}\n//# sourceMappingURL=init.js.map","import { GEOPOSITION_CHANNELS, NONPOSITION_SCALE_CHANNELS, SCALE_CHANNELS, supportLegend, X, Y } from '../channel';\nimport { getTypedFieldDef, hasConditionalFieldDef, isFieldDef } from '../channeldef';\nimport * as vlEncoding from '../encoding';\nimport { normalizeEncoding } from '../encoding';\nimport { GEOSHAPE, isMarkDef } from '../mark';\nimport { stack } from '../stack';\nimport { assembleAxisSignals } from './axis/assemble';\nimport { parseUnitAxes } from './axis/parse';\nimport { parseData } from './data/parse';\nimport { assembleLayoutSignals } from './layoutsize/assemble';\nimport { parseUnitLayoutSize } from './layoutsize/parse';\nimport { normalizeMarkDef } from './mark/init';\nimport { parseMarkGroups } from './mark/mark';\nimport { isLayerModel, ModelWithField } from './model';\nimport { replaceRepeaterInEncoding } from './repeater';\nimport { assembleTopLevelSignals, assembleUnitSelectionData, assembleUnitSelectionMarks, assembleUnitSelectionSignals } from './selection/assemble';\nimport { parseUnitSelection } from './selection/parse';\n/**\n * Internal model of Vega-Lite specification for the compiler.\n */\nexport class UnitModel extends ModelWithField {\n constructor(spec, parent, parentGivenName, parentGivenSize = {}, repeater, config, fit) {\n super(spec, 'unit', parent, parentGivenName, config, repeater, undefined, spec.view);\n this.fit = fit;\n this.specifiedScales = {};\n this.specifiedAxes = {};\n this.specifiedLegends = {};\n this.specifiedProjection = {};\n this.selection = {};\n this.children = [];\n this.initSize(Object.assign({}, parentGivenSize, (spec.width ? { width: spec.width } : {}), (spec.height ? { height: spec.height } : {})));\n const mark = isMarkDef(spec.mark) ? spec.mark.type : spec.mark;\n const encoding = (this.encoding = normalizeEncoding(replaceRepeaterInEncoding(spec.encoding || {}, repeater), mark));\n this.markDef = normalizeMarkDef(spec.mark, encoding, config);\n // calculate stack properties\n this.stack = stack(mark, encoding, this.config.stack);\n this.specifiedScales = this.initScales(mark, encoding);\n this.specifiedAxes = this.initAxes(encoding);\n this.specifiedLegends = this.initLegend(encoding);\n this.specifiedProjection = spec.projection;\n // Selections will be initialized upon parse.\n this.selection = spec.selection;\n }\n get hasProjection() {\n const { encoding } = this;\n const isGeoShapeMark = this.mark === GEOSHAPE;\n const hasGeoPosition = encoding && GEOPOSITION_CHANNELS.some(channel => isFieldDef(encoding[channel]));\n return isGeoShapeMark || hasGeoPosition;\n }\n /**\n * Return specified Vega-lite scale domain for a particular channel\n * @param channel\n */\n scaleDomain(channel) {\n const scale = this.specifiedScales[channel];\n return scale ? scale.domain : undefined;\n }\n axis(channel) {\n return this.specifiedAxes[channel];\n }\n legend(channel) {\n return this.specifiedLegends[channel];\n }\n initScales(mark, encoding) {\n return SCALE_CHANNELS.reduce((scales, channel) => {\n let fieldDef;\n let specifiedScale;\n const channelDef = encoding[channel];\n if (isFieldDef(channelDef)) {\n fieldDef = channelDef;\n specifiedScale = channelDef.scale;\n }\n else if (hasConditionalFieldDef(channelDef)) {\n fieldDef = channelDef.condition;\n specifiedScale = channelDef.condition['scale'];\n }\n if (fieldDef) {\n scales[channel] = specifiedScale || {};\n }\n return scales;\n }, {});\n }\n initAxes(encoding) {\n return [X, Y].reduce((_axis, channel) => {\n // Position Axis\n // TODO: handle ConditionFieldDef\n const channelDef = encoding[channel];\n if (isFieldDef(channelDef) ||\n (channel === X && isFieldDef(encoding.x2)) ||\n (channel === Y && isFieldDef(encoding.y2))) {\n const axisSpec = isFieldDef(channelDef) ? channelDef.axis : null;\n if (axisSpec !== null) {\n _axis[channel] = Object.assign({}, axisSpec);\n }\n }\n return _axis;\n }, {});\n }\n initLegend(encoding) {\n return NONPOSITION_SCALE_CHANNELS.reduce((_legend, channel) => {\n const channelDef = encoding[channel];\n if (channelDef) {\n const legend = isFieldDef(channelDef)\n ? channelDef.legend\n : hasConditionalFieldDef(channelDef)\n ? channelDef.condition['legend']\n : null;\n if (legend !== null && legend !== false && supportLegend(channel)) {\n _legend[channel] = Object.assign({}, legend);\n }\n }\n return _legend;\n }, {});\n }\n parseData() {\n this.component.data = parseData(this);\n }\n parseLayoutSize() {\n parseUnitLayoutSize(this);\n }\n parseSelections() {\n this.component.selection = parseUnitSelection(this, this.selection);\n }\n parseMarkGroup() {\n this.component.mark = parseMarkGroups(this);\n }\n parseAxesAndHeaders() {\n this.component.axes = parseUnitAxes(this);\n }\n assembleSelectionTopLevelSignals(signals) {\n return assembleTopLevelSignals(this, signals);\n }\n assembleSignals() {\n return [...assembleAxisSignals(this), ...assembleUnitSelectionSignals(this, [])];\n }\n assembleSelectionData(data) {\n return assembleUnitSelectionData(this, data);\n }\n assembleLayout() {\n return null;\n }\n assembleLayoutSignals() {\n return assembleLayoutSignals(this);\n }\n assembleMarks() {\n let marks = this.component.mark || [];\n // If this unit is part of a layer, selections should augment\n // all in concert rather than each unit individually. This\n // ensures correct interleaving of clipping and brushed marks.\n if (!this.parent || !isLayerModel(this.parent)) {\n marks = assembleUnitSelectionMarks(this, marks);\n }\n return marks.map(this.correctDataNames);\n }\n getMapping() {\n return this.encoding;\n }\n get mark() {\n return this.markDef.type;\n }\n channelHasField(channel) {\n return vlEncoding.channelHasField(this.encoding, channel);\n }\n fieldDef(channel) {\n const channelDef = this.encoding[channel];\n return getTypedFieldDef(channelDef);\n }\n}\n//# sourceMappingURL=unit.js.map","import * as tslib_1 from \"tslib\";\nimport { selector as parseSelector } from 'vega-event-selector';\nimport { isString } from 'vega-util';\nimport { duplicate, varName } from '../../util';\nimport { forEachTransform } from './transforms/transforms';\nexport function parseUnitSelection(model, selDefs) {\n const selCmpts = {};\n const selectionConfig = model.config.selection;\n if (selDefs) {\n selDefs = duplicate(selDefs); // duplicate to avoid side effects to original spec\n }\n for (let name in selDefs) {\n if (!selDefs.hasOwnProperty(name)) {\n continue;\n }\n const selDef = selDefs[name];\n const _a = selectionConfig[selDef.type], { fields, encodings } = _a, cfg = tslib_1.__rest(_a, [\"fields\", \"encodings\"]); // Project transform applies its defaults.\n // Set default values from config if a property hasn't been specified,\n // or if it is true. E.g., \"translate\": true should use the default\n // event handlers for translate. However, true may be a valid value for\n // a property (e.g., \"nearest\": true).\n for (const key in cfg) {\n // A selection should contain either `encodings` or `fields`, only use\n // default values for these two values if neither of them is specified.\n if ((key === 'encodings' && selDef.fields) || (key === 'fields' && selDef.encodings)) {\n continue;\n }\n if (key === 'mark') {\n selDef[key] = Object.assign({}, cfg[key], selDef[key]);\n }\n if (selDef[key] === undefined || selDef[key] === true) {\n selDef[key] = cfg[key] || selDef[key];\n }\n }\n name = varName(name);\n const selCmpt = (selCmpts[name] = Object.assign({}, selDef, { name: name, events: isString(selDef.on) ? parseSelector(selDef.on, 'scope') : selDef.on }));\n forEachTransform(selCmpt, txCompiler => {\n if (txCompiler.parse) {\n txCompiler.parse(model, selDef, selCmpt);\n }\n });\n }\n return selCmpts;\n}\n//# sourceMappingURL=parse.js.map","import * as log from '../log';\nimport { isLayerSpec, isUnitSpec } from '../spec';\nimport { flatten, keys } from '../util';\nimport { assembleAxisSignals } from './axis/assemble';\nimport { parseLayerAxes } from './axis/parse';\nimport { parseData } from './data/parse';\nimport { assembleLayoutSignals } from './layoutsize/assemble';\nimport { parseLayerLayoutSize } from './layoutsize/parse';\nimport { assembleLegends } from './legend/assemble';\nimport { Model } from './model';\nimport { assembleLayerSelectionMarks } from './selection/assemble';\nimport { UnitModel } from './unit';\nexport class LayerModel extends Model {\n constructor(spec, parent, parentGivenName, parentGivenSize, repeater, config, fit) {\n super(spec, 'layer', parent, parentGivenName, config, repeater, spec.resolve, spec.view);\n const layoutSize = Object.assign({}, parentGivenSize, (spec.width ? { width: spec.width } : {}), (spec.height ? { height: spec.height } : {}));\n this.initSize(layoutSize);\n this.children = spec.layer.map((layer, i) => {\n if (isLayerSpec(layer)) {\n return new LayerModel(layer, this, this.getName('layer_' + i), layoutSize, repeater, config, fit);\n }\n if (isUnitSpec(layer)) {\n return new UnitModel(layer, this, this.getName('layer_' + i), layoutSize, repeater, config, fit);\n }\n throw new Error(log.message.INVALID_SPEC);\n });\n }\n parseData() {\n this.component.data = parseData(this);\n for (const child of this.children) {\n child.parseData();\n }\n }\n parseLayoutSize() {\n parseLayerLayoutSize(this);\n }\n parseSelections() {\n // Merge selections up the hierarchy so that they may be referenced\n // across unit specs. Persist their definitions within each child\n // to assemble signals which remain within output Vega unit groups.\n this.component.selection = {};\n for (const child of this.children) {\n child.parseSelections();\n keys(child.component.selection).forEach(key => {\n this.component.selection[key] = child.component.selection[key];\n });\n }\n }\n parseMarkGroup() {\n for (const child of this.children) {\n child.parseMarkGroup();\n }\n }\n parseAxesAndHeaders() {\n parseLayerAxes(this);\n }\n assembleSelectionTopLevelSignals(signals) {\n return this.children.reduce((sg, child) => child.assembleSelectionTopLevelSignals(sg), signals);\n }\n // TODO: Support same named selections across children.\n assembleSignals() {\n return this.children.reduce((signals, child) => {\n return signals.concat(child.assembleSignals());\n }, assembleAxisSignals(this));\n }\n assembleLayoutSignals() {\n return this.children.reduce((signals, child) => {\n return signals.concat(child.assembleLayoutSignals());\n }, assembleLayoutSignals(this));\n }\n assembleSelectionData(data) {\n return this.children.reduce((db, child) => child.assembleSelectionData(db), data);\n }\n assembleTitle() {\n let title = super.assembleTitle();\n if (title) {\n return title;\n }\n // If title does not provide layer, look into children\n for (const child of this.children) {\n title = child.assembleTitle();\n if (title) {\n return title;\n }\n }\n return undefined;\n }\n assembleLayout() {\n return null;\n }\n assembleMarks() {\n return assembleLayerSelectionMarks(this, flatten(this.children.map(child => {\n return child.assembleMarks();\n })));\n }\n assembleLegends() {\n return this.children.reduce((legends, child) => {\n return legends.concat(child.assembleLegends());\n }, assembleLegends(this));\n }\n}\n//# sourceMappingURL=layer.js.map","import { isArray } from 'vega-util';\nimport * as log from '../log';\nimport { BaseConcatModel } from './baseconcat';\nimport { buildModel } from './buildmodel';\nimport { parseRepeatLayoutSize } from './layoutsize/parse';\nexport class RepeatModel extends BaseConcatModel {\n constructor(spec, parent, parentGivenName, repeatValues, config) {\n super(spec, 'repeat', parent, parentGivenName, config, repeatValues, spec.resolve);\n if (spec.resolve && spec.resolve.axis && (spec.resolve.axis.x === 'shared' || spec.resolve.axis.y === 'shared')) {\n log.warn(log.message.REPEAT_CANNOT_SHARE_AXIS);\n }\n this.repeat = spec.repeat;\n this.children = this._initChildren(spec, this.repeat, repeatValues, config);\n }\n _initChildren(spec, repeat, repeater, config) {\n const children = [];\n const row = (!isArray(repeat) && repeat.row) || [repeater ? repeater.row : null];\n const column = (!isArray(repeat) && repeat.column) || [repeater ? repeater.column : null];\n const repeatValues = (isArray(repeat) && repeat) || [repeater ? repeater.repeat : null];\n // cross product\n for (const repeatValue of repeatValues) {\n for (const rowValue of row) {\n for (const columnValue of column) {\n const name = (repeatValue ? `__repeat_repeat_${repeatValue}` : '') +\n (rowValue ? `__repeat_row_${rowValue}` : '') +\n (columnValue ? `__repeat_column_${columnValue}` : '');\n const childRepeat = {\n repeat: repeatValue,\n row: rowValue,\n column: columnValue\n };\n children.push(buildModel(spec.spec, this, this.getName('child' + name), undefined, childRepeat, config, false));\n }\n }\n }\n return children;\n }\n parseLayoutSize() {\n parseRepeatLayoutSize(this);\n }\n assembleDefaultLayout() {\n const { repeat } = this;\n const columns = isArray(repeat) ? undefined : repeat.column ? repeat.column.length : 1;\n return Object.assign({}, (columns ? { columns } : {}), { bounds: 'full', align: 'all' });\n }\n}\n//# sourceMappingURL=repeat.js.map","import * as log from '../log';\nimport { isAnyConcatSpec, isFacetSpec, isLayerSpec, isRepeatSpec, isUnitSpec } from '../spec';\nimport { ConcatModel } from './concat';\nimport { FacetModel } from './facet';\nimport { LayerModel } from './layer';\nimport { RepeatModel } from './repeat';\nimport { UnitModel } from './unit';\nexport function buildModel(spec, parent, parentGivenName, unitSize, repeater, config, fit) {\n if (isFacetSpec(spec)) {\n return new FacetModel(spec, parent, parentGivenName, repeater, config);\n }\n if (isLayerSpec(spec)) {\n return new LayerModel(spec, parent, parentGivenName, unitSize, repeater, config, fit);\n }\n if (isUnitSpec(spec)) {\n return new UnitModel(spec, parent, parentGivenName, unitSize, repeater, config, fit);\n }\n if (isRepeatSpec(spec)) {\n return new RepeatModel(spec, parent, parentGivenName, repeater, config);\n }\n if (isAnyConcatSpec(spec)) {\n return new ConcatModel(spec, parent, parentGivenName, repeater, config);\n }\n throw new Error(log.message.INVALID_SPEC);\n}\n//# sourceMappingURL=buildmodel.js.map","import * as vlFieldDef from '../channeldef';\nimport { initConfig, stripAndRedirectConfig } from '../config';\nimport * as log from '../log';\nimport { normalize } from '../normalize/index';\nimport { isLayerSpec, isUnitSpec } from '../spec';\nimport { extractTopLevelProperties, normalizeAutoSize } from '../spec/toplevel';\nimport { keys, mergeDeep } from '../util';\nimport { buildModel } from './buildmodel';\nimport { assembleRootData } from './data/assemble';\n// import {draw} from './data/debug';\nimport { optimizeDataflow } from './data/optimize';\n/**\n * Vega-Lite's main function, for compiling Vega-lite spec into Vega spec.\n *\n * At a high-level, we make the following transformations in different phases:\n *\n * Input spec\n * |\n * | (Normalization)\n * v\n * Normalized Spec (Row/Column channels in single-view specs becomes faceted specs, composite marks becomes layered specs.)\n * |\n * | (Build Model)\n * v\n * A model tree of the spec\n * |\n * | (Parse)\n * v\n * A model tree with parsed components (intermediate structure of visualization primitives in a format that can be easily merged)\n * |\n * | (Optimize)\n * v\n * A model tree with parsed components with the data component optimized\n * |\n * | (Assemble)\n * v\n * Vega spec\n */\nexport function compile(inputSpec, opt = {}) {\n // 0. Augment opt with default opts\n if (opt.logger) {\n // set the singleton logger to the provided logger\n log.set(opt.logger);\n }\n if (opt.fieldTitle) {\n // set the singleton field title formatter\n vlFieldDef.setTitleFormatter(opt.fieldTitle);\n }\n try {\n // 1. Initialize config by deep merging default config with the config provided via option and the input spec.\n const config = initConfig(mergeDeep({}, opt.config, inputSpec.config));\n // 2. Normalize: Convert input spec -> normalized spec\n // - Decompose all extended unit specs into composition of unit spec. For example, a box plot get expanded into multiple layers of bars, ticks, and rules. The shorthand row/column channel is also expanded to a facet spec.\n const spec = normalize(inputSpec, config);\n // - Normalize autosize to be a autosize properties object.\n const autosize = normalizeAutoSize(inputSpec.autosize, config.autosize, isLayerSpec(spec) || isUnitSpec(spec));\n // 3. Build Model: normalized spec -> Model (a tree structure)\n // This phases instantiates the models with default config by doing a top-down traversal. This allows us to pass properties that child models derive from their parents via their constructors.\n // See the abstract `Model` class and its children (UnitModel, LayerModel, FacetModel, RepeatModel, ConcatModel) for different types of models.\n const model = buildModel(spec, null, '', undefined, undefined, config, autosize.type === 'fit');\n // 4 Parse: Model --> Model with components\n // Note that components = intermediate representations that are equivalent to Vega specs.\n // We need these intermediate representation because we need to merge many visualization \"components\" like projections, scales, axes, and legends.\n // We will later convert these components into actual Vega specs in the assemble phase.\n // In this phase, we do a bottom-up traversal over the whole tree to\n // parse for each type of components once (e.g., data, layout, mark, scale).\n // By doing bottom-up traversal, we start parsing components of unit specs and\n // then merge child components of parent composite specs.\n //\n // Please see inside model.parse() for order of different components parsed.\n model.parse();\n // draw(model.component.data.sources);\n // 5. Optimize the dataflow. This will modify the data component of the model.\n optimizeDataflow(model.component.data, model);\n // 6. Assemble: convert model components --> Vega Spec.\n return assembleTopLevelModel(model, getTopLevelProperties(inputSpec, config, autosize), inputSpec.datasets, inputSpec.usermeta);\n }\n finally {\n // Reset the singleton logger if a logger is provided\n if (opt.logger) {\n log.reset();\n }\n // Reset the singleton field title formatter if provided\n if (opt.fieldTitle) {\n vlFieldDef.resetTitleFormatter();\n }\n }\n}\nfunction getTopLevelProperties(topLevelSpec, config, autosize) {\n return Object.assign({ autosize: keys(autosize).length === 1 && autosize.type ? autosize.type : autosize }, extractTopLevelProperties(config), extractTopLevelProperties(topLevelSpec));\n}\n/*\n * Assemble the top-level model.\n *\n * Note: this couldn't be `model.assemble()` since the top-level model\n * needs some special treatment to generate top-level properties.\n */\nfunction assembleTopLevelModel(model, topLevelProperties, datasets = {}, usermeta) {\n // Config with Vega-Lite only config removed.\n const vgConfig = model.config ? stripAndRedirectConfig(model.config) : undefined;\n const data = [].concat(model.assembleSelectionData([]), \n // only assemble data in the root\n assembleRootData(model.component.data, datasets));\n const projections = model.assembleProjections();\n const title = model.assembleTitle();\n const style = model.assembleGroupStyle();\n const encodeEntry = model.assembleGroupEncodeEntry(true);\n let layoutSignals = model.assembleLayoutSignals();\n // move width and height signals with values to top level\n layoutSignals = layoutSignals.filter(signal => {\n if ((signal.name === 'width' || signal.name === 'height') && signal.value !== undefined) {\n topLevelProperties[signal.name] = +signal.value;\n return false;\n }\n return true;\n });\n const output = Object.assign({ $schema: 'https://vega.github.io/schema/vega/v5.json' }, (model.description ? { description: model.description } : {}), topLevelProperties, (title ? { title } : {}), (style ? { style } : {}), (encodeEntry ? { encode: { update: encodeEntry } } : {}), { data }, (projections.length > 0 ? { projections: projections } : {}), model.assembleGroup([...layoutSignals, ...model.assembleSelectionTopLevelSignals([])]), (vgConfig ? { config: vgConfig } : {}), (usermeta ? { usermeta } : {}));\n return {\n spec: output\n // TODO: add warning / errors here\n };\n}\n//# sourceMappingURL=compile.js.map","import { extractTransformsFromEncoding } from './encoding';\nimport { SpecMapper } from './spec/map';\nclass TransformExtractMapper extends SpecMapper {\n mapUnit(spec, { config }) {\n if (spec.encoding) {\n const { encoding: oldEncoding, transform: oldTransforms } = spec;\n const { bins, timeUnits, aggregate, groupby, encoding } = extractTransformsFromEncoding(oldEncoding, config);\n const transform = [\n ...(oldTransforms ? oldTransforms : []),\n ...bins,\n ...timeUnits,\n ...(!aggregate.length ? [] : [{ aggregate, groupby }])\n ];\n return Object.assign({}, spec, (transform.length > 0 ? { transform } : {}), { encoding });\n }\n else {\n return spec;\n }\n }\n}\nconst extractor = new TransformExtractMapper();\n/**\n * Modifies spec extracting transformations from encoding and moving them to the transforms array\n */\nexport function extractTransforms(spec, config) {\n return extractor.map(spec, { config });\n}\n//# sourceMappingURL=transformextract.js.map","import pkg from '../package.json';\nimport { normalize } from './normalize';\nconst version = pkg.version;\nexport { compile } from './compile/compile';\nexport { extractTransforms } from './transformextract';\nexport { normalize, version };\n//# sourceMappingURL=index.js.map","const markColor = '#4572a7';\nconst excelTheme = {\n background: '#fff',\n arc: { fill: markColor },\n area: { fill: markColor },\n line: { stroke: markColor, strokeWidth: 2 },\n path: { stroke: markColor },\n rect: { fill: markColor },\n shape: { stroke: markColor },\n symbol: { fill: markColor, strokeWidth: 1.5, size: 50 },\n axis: {\n bandPosition: 0.5,\n grid: true,\n gridColor: '#000000',\n gridOpacity: 1,\n gridWidth: 0.5,\n labelPadding: 10,\n tickSize: 5,\n tickWidth: 0.5,\n },\n axisBand: {\n grid: false,\n tickExtra: true,\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 50,\n symbolType: 'square',\n },\n range: {\n category: [\n '#4572a7',\n '#aa4643',\n '#8aa453',\n '#71598e',\n '#4598ae',\n '#d98445',\n '#94aace',\n '#d09393',\n '#b9cc98',\n '#a99cbc',\n ],\n },\n};\nexport default excelTheme;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtZXhjZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGhlbWUtZXhjZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBRTVCLE1BQU0sVUFBVSxHQUFXO0lBQ3pCLFVBQVUsRUFBRSxNQUFNO0lBRWxCLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDeEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN6QixJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUU7SUFDM0MsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTtJQUMzQixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3pCLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7SUFDNUIsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7SUFFdkQsSUFBSSxFQUFFO1FBQ0osWUFBWSxFQUFFLEdBQUc7UUFDakIsSUFBSSxFQUFFLElBQUk7UUFDVixTQUFTLEVBQUUsU0FBUztRQUNwQixXQUFXLEVBQUUsQ0FBQztRQUNkLFNBQVMsRUFBRSxHQUFHO1FBQ2QsWUFBWSxFQUFFLEVBQUU7UUFDaEIsUUFBUSxFQUFFLENBQUM7UUFDWCxTQUFTLEVBQUUsR0FBRztLQUNmO0lBRUQsUUFBUSxFQUFFO1FBQ1IsSUFBSSxFQUFFLEtBQUs7UUFDWCxTQUFTLEVBQUUsSUFBSTtLQUNoQjtJQUVELE1BQU0sRUFBRTtRQUNOLGFBQWEsRUFBRSxRQUFRO1FBQ3ZCLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLFVBQVUsRUFBRSxFQUFFO1FBQ2QsVUFBVSxFQUFFLFFBQVE7S0FDckI7SUFFRCxLQUFLLEVBQUU7UUFDTCxRQUFRLEVBQUU7WUFDUixTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1Y7S0FDRjtDQUNGLENBQUM7QUFFRixlQUFlLFVBQVUsQ0FBQyJ9","const markColor = '#000';\nconst ggplot2Theme = {\n group: {\n fill: '#e5e5e5',\n },\n arc: { fill: markColor },\n area: { fill: markColor },\n line: { stroke: markColor },\n path: { stroke: markColor },\n rect: { fill: markColor },\n shape: { stroke: markColor },\n symbol: { fill: markColor, size: 40 },\n axis: {\n domain: false,\n grid: true,\n gridColor: '#FFFFFF',\n gridOpacity: 1,\n labelColor: '#7F7F7F',\n labelPadding: 4,\n tickColor: '#7F7F7F',\n tickSize: 5.67,\n titleFontSize: 16,\n titleFontWeight: 'normal',\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 40,\n },\n range: {\n category: [\n '#000000',\n '#7F7F7F',\n '#1A1A1A',\n '#999999',\n '#333333',\n '#B0B0B0',\n '#4D4D4D',\n '#C9C9C9',\n '#666666',\n '#DCDCDC',\n ],\n },\n};\nexport default ggplot2Theme;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtZ2dwbG90Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aGVtZS1nZ3Bsb3QyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUV6QixNQUFNLFlBQVksR0FBVztJQUMzQixLQUFLLEVBQUU7UUFDTCxJQUFJLEVBQUUsU0FBUztLQUNoQjtJQUVELEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDeEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN6QixJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0lBQzNCLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7SUFDM0IsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN6QixLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0lBQzVCLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtJQUVyQyxJQUFJLEVBQUU7UUFDSixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxJQUFJO1FBQ1YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsV0FBVyxFQUFFLENBQUM7UUFDZCxVQUFVLEVBQUUsU0FBUztRQUNyQixZQUFZLEVBQUUsQ0FBQztRQUNmLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsYUFBYSxFQUFFLEVBQUU7UUFDakIsZUFBZSxFQUFFLFFBQVE7S0FDMUI7SUFFRCxNQUFNLEVBQUU7UUFDTixhQUFhLEVBQUUsUUFBUTtRQUN2QixhQUFhLEVBQUUsRUFBRTtRQUNqQixVQUFVLEVBQUUsRUFBRTtLQUNmO0lBRUQsS0FBSyxFQUFFO1FBQ0wsUUFBUSxFQUFFO1lBQ1IsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztTQUNWO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsZUFBZSxZQUFZLENBQUMifQ==","const markColor = '#ab5787';\nconst axisColor = '#979797';\nconst quartzTheme = {\n background: '#f9f9f9',\n arc: { fill: markColor },\n area: { fill: markColor },\n line: { stroke: markColor },\n path: { stroke: markColor },\n rect: { fill: markColor },\n shape: { stroke: markColor },\n symbol: { fill: markColor, size: 30 },\n axis: {\n domainColor: axisColor,\n domainWidth: 0.5,\n gridWidth: 0.2,\n labelColor: axisColor,\n tickColor: axisColor,\n tickWidth: 0.2,\n titleColor: axisColor,\n },\n axisBand: {\n grid: false,\n },\n axisX: {\n grid: true,\n tickSize: 10,\n },\n axisY: {\n domain: false,\n grid: true,\n tickSize: 0,\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square',\n },\n range: {\n category: [\n '#ab5787',\n '#51b2e5',\n '#703c5c',\n '#168dd9',\n '#d190b6',\n '#00609f',\n '#d365ba',\n '#154866',\n '#666666',\n '#c4c4c4',\n ],\n },\n};\nexport default quartzTheme;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtcXVhcnR6LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RoZW1lLXF1YXJ0ei50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDNUIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBRTVCLE1BQU0sV0FBVyxHQUFXO0lBQzFCLFVBQVUsRUFBRSxTQUFTO0lBRXJCLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDeEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN6QixJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0lBQzNCLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7SUFDM0IsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN6QixLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0lBQzVCLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtJQUVyQyxJQUFJLEVBQUU7UUFDSixXQUFXLEVBQUUsU0FBUztRQUN0QixXQUFXLEVBQUUsR0FBRztRQUNoQixTQUFTLEVBQUUsR0FBRztRQUNkLFVBQVUsRUFBRSxTQUFTO1FBQ3JCLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFNBQVMsRUFBRSxHQUFHO1FBQ2QsVUFBVSxFQUFFLFNBQVM7S0FDdEI7SUFFRCxRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsS0FBSztLQUNaO0lBRUQsS0FBSyxFQUFFO1FBQ0wsSUFBSSxFQUFFLElBQUk7UUFDVixRQUFRLEVBQUUsRUFBRTtLQUNiO0lBRUQsS0FBSyxFQUFFO1FBQ0wsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsSUFBSTtRQUNWLFFBQVEsRUFBRSxDQUFDO0tBQ1o7SUFFRCxNQUFNLEVBQUU7UUFDTixhQUFhLEVBQUUsRUFBRTtRQUNqQixPQUFPLEVBQUUsQ0FBQztRQUNWLFVBQVUsRUFBRSxFQUFFO1FBQ2QsVUFBVSxFQUFFLFFBQVE7S0FDckI7SUFFRCxLQUFLLEVBQUU7UUFDTCxRQUFRLEVBQUU7WUFDUixTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1Y7S0FDRjtDQUNGLENBQUM7QUFFRixlQUFlLFdBQVcsQ0FBQyJ9","const markColor = '#3e5c69';\nconst voxTheme = {\n background: '#fff',\n arc: { fill: markColor },\n area: { fill: markColor },\n line: { stroke: markColor },\n path: { stroke: markColor },\n rect: { fill: markColor },\n shape: { stroke: markColor },\n symbol: { fill: markColor },\n axis: {\n domainWidth: 0.5,\n grid: true,\n labelPadding: 2,\n tickSize: 5,\n tickWidth: 0.5,\n titleFontWeight: 'normal',\n },\n axisBand: {\n grid: false,\n },\n axisX: {\n gridWidth: 0.2,\n },\n axisY: {\n gridDash: [3],\n gridWidth: 0.4,\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolType: 'square',\n },\n range: {\n category: [\n '#3e5c69',\n '#6793a6',\n '#182429',\n '#0570b0',\n '#3690c0',\n '#74a9cf',\n '#a6bddb',\n '#e2ddf2',\n ],\n },\n};\nexport default voxTheme;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtdm94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RoZW1lLXZveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFFNUIsTUFBTSxRQUFRLEdBQVc7SUFDdkIsVUFBVSxFQUFFLE1BQU07SUFFbEIsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN4QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3pCLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7SUFDM0IsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTtJQUMzQixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3pCLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7SUFDNUIsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUUzQixJQUFJLEVBQUU7UUFDSixXQUFXLEVBQUUsR0FBRztRQUNoQixJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxDQUFDO1FBQ2YsUUFBUSxFQUFFLENBQUM7UUFDWCxTQUFTLEVBQUUsR0FBRztRQUNkLGVBQWUsRUFBRSxRQUFRO0tBQzFCO0lBRUQsUUFBUSxFQUFFO1FBQ1IsSUFBSSxFQUFFLEtBQUs7S0FDWjtJQUVELEtBQUssRUFBRTtRQUNMLFNBQVMsRUFBRSxHQUFHO0tBQ2Y7SUFFRCxLQUFLLEVBQUU7UUFDTCxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDYixTQUFTLEVBQUUsR0FBRztLQUNmO0lBRUQsTUFBTSxFQUFFO1FBQ04sYUFBYSxFQUFFLEVBQUU7UUFDakIsT0FBTyxFQUFFLENBQUM7UUFDVixVQUFVLEVBQUUsUUFBUTtLQUNyQjtJQUVELEtBQUssRUFBRTtRQUNMLFFBQVEsRUFBRTtZQUNSLFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1Y7S0FDRjtDQUNGLENBQUM7QUFFRixlQUFlLFFBQVEsQ0FBQyJ9","const lightColor = '#fff';\nconst medColor = '#888';\nconst darkTheme = {\n background: '#333',\n title: { color: lightColor },\n style: {\n 'guide-label': {\n fill: lightColor,\n },\n 'guide-title': {\n fill: lightColor,\n },\n },\n axis: {\n domainColor: lightColor,\n gridColor: medColor,\n tickColor: lightColor,\n },\n};\nexport default darkTheme;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtZGFyay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aGVtZS1kYXJrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUMxQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUM7QUFFeEIsTUFBTSxTQUFTLEdBQVc7SUFDeEIsVUFBVSxFQUFFLE1BQU07SUFFbEIsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtJQUU1QixLQUFLLEVBQUU7UUFDTCxhQUFhLEVBQUU7WUFDYixJQUFJLEVBQUUsVUFBVTtTQUNqQjtRQUNELGFBQWEsRUFBRTtZQUNiLElBQUksRUFBRSxVQUFVO1NBQ2pCO0tBQ0Y7SUFFRCxJQUFJLEVBQUU7UUFDSixXQUFXLEVBQUUsVUFBVTtRQUN2QixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsVUFBVTtLQUN0QjtDQUNGLENBQUM7QUFFRixlQUFlLFNBQVMsQ0FBQyJ9","const markColor = '#30a2da';\nconst axisColor = '#cbcbcb';\nconst guideLabelColor = '#999';\nconst guideTitleColor = '#333';\nconst backgroundColor = '#f0f0f0';\nconst blackTitle = '#333';\nconst fiveThirtyEightTheme = {\n arc: { fill: markColor },\n area: { fill: markColor },\n axisBand: {\n grid: false,\n },\n axisBottom: {\n domain: false,\n domainColor: blackTitle,\n domainWidth: 3,\n grid: true,\n gridColor: axisColor,\n gridWidth: 1,\n labelColor: guideLabelColor,\n labelFontSize: 10,\n labelPadding: 4,\n tickColor: axisColor,\n tickSize: 10,\n titleFontSize: 14,\n titlePadding: 10,\n },\n axisLeft: {\n domainColor: axisColor,\n domainWidth: 1,\n grid: true,\n gridColor: axisColor,\n gridWidth: 1,\n labelColor: guideLabelColor,\n labelFontSize: 10,\n labelPadding: 4,\n tickColor: axisColor,\n tickSize: 10,\n ticks: true,\n titleFontSize: 14,\n titlePadding: 10,\n },\n axisRight: {\n domainColor: blackTitle,\n domainWidth: 1,\n grid: true,\n gridColor: axisColor,\n gridWidth: 1,\n labelColor: guideLabelColor,\n labelFontSize: 10,\n labelPadding: 4,\n tickColor: axisColor,\n tickSize: 10,\n ticks: true,\n titleFontSize: 14,\n titlePadding: 10,\n },\n axisTop: {\n domain: false,\n domainColor: blackTitle,\n domainWidth: 3,\n grid: true,\n gridColor: axisColor,\n gridWidth: 1,\n labelColor: guideLabelColor,\n labelFontSize: 10,\n labelPadding: 4,\n tickColor: axisColor,\n tickSize: 10,\n titleFontSize: 14,\n titlePadding: 10,\n },\n background: backgroundColor,\n group: {\n fill: backgroundColor,\n },\n legend: {\n labelColor: blackTitle,\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square',\n titleColor: blackTitle,\n titleFontSize: 14,\n titlePadding: 10,\n },\n line: {\n stroke: markColor,\n strokeWidth: 2,\n },\n path: { stroke: markColor, strokeWidth: 0.5 },\n rect: { fill: markColor },\n range: {\n category: [\n '#30a2da',\n '#fc4f30',\n '#e5ae38',\n '#6d904f',\n '#8b8b8b',\n '#b96db8',\n '#ff9e27',\n '#56cc60',\n '#52d2ca',\n '#52689e',\n '#545454',\n '#9fe4f8',\n ],\n diverging: [\n '#cc0020',\n '#e77866',\n '#f6e7e1',\n '#d6e8ed',\n '#91bfd9',\n '#1d78b5',\n ],\n heatmap: ['#d6e8ed', '#cee0e5', '#91bfd9', '#549cc6', '#1d78b5'],\n },\n symbol: {\n filled: true,\n shape: 'circle',\n },\n shape: { stroke: markColor },\n style: {\n bar: {\n binSpacing: 2,\n fill: markColor,\n stroke: null,\n },\n },\n title: {\n anchor: 'start',\n fontSize: 24,\n fontWeight: 600,\n offset: 20,\n },\n};\nexport default fiveThirtyEightTheme;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtZml2ZXRoaXJ0eWVpZ2h0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RoZW1lLWZpdmV0aGlydHllaWdodC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDNUIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQzVCLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQztBQUMvQixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFDL0IsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ2xDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUUxQixNQUFNLG9CQUFvQixHQUFXO0lBQ25DLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDeEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUV6QixRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsS0FBSztLQUNaO0lBRUQsVUFBVSxFQUFFO1FBQ1YsTUFBTSxFQUFFLEtBQUs7UUFDYixXQUFXLEVBQUUsVUFBVTtRQUN2QixXQUFXLEVBQUUsQ0FBQztRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsU0FBUyxFQUFFLENBQUM7UUFDWixVQUFVLEVBQUUsZUFBZTtRQUMzQixhQUFhLEVBQUUsRUFBRTtRQUNqQixZQUFZLEVBQUUsQ0FBQztRQUNmLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFFBQVEsRUFBRSxFQUFFO1FBQ1osYUFBYSxFQUFFLEVBQUU7UUFDakIsWUFBWSxFQUFFLEVBQUU7S0FDakI7SUFFRCxRQUFRLEVBQUU7UUFDUixXQUFXLEVBQUUsU0FBUztRQUN0QixXQUFXLEVBQUUsQ0FBQztRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsU0FBUyxFQUFFLENBQUM7UUFDWixVQUFVLEVBQUUsZUFBZTtRQUMzQixhQUFhLEVB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","const headlineFontSize = 22;\nconst headlineFontWeight = 'normal';\nconst labelFont = 'Benton Gothic, sans';\nconst labelFontSize = 11.5;\nconst labelFontWeight = 'normal';\nconst markColor = '#82c6df';\nconst markHighlight = '#006d8f';\nconst markDemocrat = '#5789b8';\nconst markRepublican = '#d94f54';\nconst titleFont = 'Benton Gothic Bold, sans';\nconst titleFontWeight = 'normal';\nconst titleFontSize = 13;\nconst colorSchemes = {\n 'category-6': [\n '#ec8431',\n '#829eb1',\n '#c89d29',\n '#3580b1',\n '#adc839',\n '#ab7fb4',\n ],\n 'fire-7': [\n '#fbf2c7',\n '#f9e39c',\n '#f8d36e',\n '#f4bb6a',\n '#e68a4f',\n '#d15a40',\n '#ab4232',\n ],\n 'fireandice-6': [\n '#e68a4f',\n '#f4bb6a',\n '#f9e39c',\n '#dadfe2',\n '#a6b7c6',\n '#849eae',\n ],\n 'ice-7': [\n '#edefee',\n '#dadfe2',\n '#c4ccd2',\n '#a6b7c6',\n '#849eae',\n '#607785',\n '#47525d',\n ],\n};\nconst latimesTheme = {\n background: '#ffffff',\n title: {\n anchor: 'start',\n font: titleFont,\n fontColor: '#000000',\n fontSize: headlineFontSize,\n fontWeight: headlineFontWeight,\n },\n arc: { fill: markColor },\n area: { fill: markColor },\n line: { stroke: markColor, strokeWidth: 2 },\n path: { stroke: markColor },\n rect: { fill: markColor },\n shape: { stroke: markColor },\n symbol: { fill: markColor, size: 30 },\n axis: {\n labelFont,\n labelFontSize,\n labelFontWeight,\n titleFont,\n titleFontSize,\n titleFontWeight,\n },\n axisX: {\n labelAngle: 0,\n labelPadding: 4,\n tickSize: 3,\n },\n axisY: {\n labelBaseline: 'middle',\n maxExtent: 45,\n minExtent: 45,\n tickSize: 2,\n titleAlign: 'left',\n titleAngle: 0,\n titleX: -45,\n titleY: -11,\n },\n legend: {\n labelFont,\n labelFontSize,\n symbolType: 'square',\n titleFont,\n titleFontSize,\n titleFontWeight,\n },\n range: {\n category: colorSchemes['category-6'],\n diverging: colorSchemes['fireandice-6'],\n heatmap: colorSchemes['fire-7'],\n ordinal: colorSchemes['fire-7'],\n ramp: colorSchemes['fire-7'],\n },\n};\nexport default latimesTheme;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtbGF0aW1lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aGVtZS1sYXRpbWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBQzVCLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDO0FBQ3BDLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUFDO0FBQ3hDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQztBQUMzQixNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUM7QUFDakMsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQzVCLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUNoQyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUM7QUFDL0IsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDO0FBQ2pDLE1BQU0sU0FBUyxHQUFHLDBCQUEwQixDQUFDO0FBQzdDLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQztBQUNqQyxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDekIsTUFBTSxZQUFZLEdBQUc7SUFDbkIsWUFBWSxFQUFFO1FBQ1osU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxRQUFRLEVBQUU7UUFDUixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxjQUFjLEVBQUU7UUFDZCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVjtJQUNELE9BQU8sRUFBRTtRQUNQLFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVjtDQUNGLENBQUM7QUFFRixNQUFNLFlBQVksR0FBVztJQUMzQixVQUFVLEVBQUUsU0FBUztJQUVyQixLQUFLLEVBQUU7UUFDTCxNQUFNLEVBQUUsT0FBTztRQUNmLElBQUksRUFBRSxTQUFTO1FBQ2YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixVQUFVLEVBQUUsa0JBQWtCO0tBQy9CO0lBRUQsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN4QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3pCLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRTtJQUMzQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0lBQzNCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDekIsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTtJQUM1QixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7SUFFckMsSUFBSSxFQUFFO1FBQ0osU0FBUztRQUNULGFBQWE7UUFDYixlQUFlO1FBQ2YsU0FBUztRQUNULGFBQWE7UUFDYixlQUFlO0tBQ2hCO0lBRUQsS0FBSyxFQUFFO1FBQ0wsVUFBVSxFQUFFLENBQUM7UUFDYixZQUFZLEVBQUUsQ0FBQztRQUNmLFFBQVEsRUFBRSxDQUFDO0tBQ1o7SUFFRCxLQUFLLEVBQUU7UUFDTCxhQUFhLEVBQUUsUUFBUTtRQUN2QixTQUFTLEVBQUUsRUFBRTtRQUNiLFNBQVMsRUFBRSxFQUFFO1FBQ2IsUUFBUSxFQUFFLENBQUM7UUFDWCxVQUFVLEVBQUUsTUFBTTtRQUNsQixVQUFVLEVBQUUsQ0FBQztRQUNiLE1BQU0sRUFBRSxDQUFDLEVBQUU7UUFDWCxNQUFNLEVBQUUsQ0FBQyxFQUFFO0tBQ1o7SUFFRCxNQUFNLEVBQUU7UUFDTixTQUFTO1FBQ1QsYUFBYTtRQUNiLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFNBQVM7UUFDVCxhQUFhO1FBQ2IsZUFBZTtLQUNoQjtJQUVELEtBQUssRUFBRTtRQUNMLFFBQVEsRUFBRSxZQUFZLENBQUMsWUFBWSxDQUFDO1FBQ3BDLFNBQVMsRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQy9CLE9BQU8sRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDO0tBQzdCO0NBQ0YsQ0FBQztBQUVGLGVBQWUsWUFBWSxDQUFDIn0=","// generated with build-style.sh\nexport default `#vg-tooltip-element {\n visibility: hidden;\n padding: 8px;\n position: fixed;\n z-index: 1000;\n font-family: sans-serif;\n font-size: 11px;\n border-radius: 3px;\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);\n /* The default theme is the light theme. */\n background-color: rgba(255, 255, 255, 0.95);\n border: 1px solid #d9d9d9;\n color: black; }\n #vg-tooltip-element.visible {\n visibility: visible; }\n #vg-tooltip-element h2 {\n margin-top: 0;\n margin-bottom: 10px;\n font-size: 13px; }\n #vg-tooltip-element table {\n border-spacing: 0; }\n #vg-tooltip-element table tr {\n border: none; }\n #vg-tooltip-element table tr td {\n overflow: hidden;\n text-overflow: ellipsis;\n padding-top: 2px;\n padding-bottom: 2px; }\n #vg-tooltip-element table tr td.key {\n color: #808080;\n max-width: 150px;\n text-align: right;\n padding-right: 4px; }\n #vg-tooltip-element table tr td.value {\n display: block;\n max-width: 300px;\n max-height: 7em;\n text-align: left; }\n #vg-tooltip-element.dark-theme {\n background-color: rgba(32, 32, 32, 0.9);\n border: 1px solid #f5f5f5;\n color: white; }\n #vg-tooltip-element.dark-theme td.key {\n color: #bfbfbf; }\n`;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3R5bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0NBQWdDO0FBQ2hDLGVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNENkLENBQUEifQ==","import defaultStyle from './style';\nconst EL_ID = 'vg-tooltip-element';\nexport const DEFAULT_OPTIONS = {\n /**\n * X offset.\n */\n offsetX: 10,\n /**\n * Y offset.\n */\n offsetY: 10,\n /**\n * ID of the tooltip element.\n */\n id: EL_ID,\n /**\n * ID of the tooltip CSS style.\n */\n styleId: 'vega-tooltip-style',\n /**\n * The name of the theme. You can use the CSS class called [THEME]-theme to style the tooltips.\n *\n * There are two predefined themes: \"light\" (default) and \"dark\".\n */\n theme: 'light',\n /**\n * Do not use the default styles provided by Vega Tooltip. If you enable this option, you need to use your own styles. It is not necessary to disable the default style when using a custom theme.\n */\n disableDefaultStyle: false,\n /**\n * HTML sanitizer function that removes dangerous HTML to prevent XSS.\n *\n * This should be a function from string to string. You may replace it with a formatter such as a markdown formatter.\n */\n sanitize: escapeHTML,\n /**\n * The maximum recursion depth when printing objects in the tooltip.\n */\n maxDepth: 2\n};\n/**\n * Escape special HTML characters.\n *\n * @param value A value to convert to string and HTML-escape.\n */\nexport function escapeHTML(value) {\n return String(value)\n .replace(/&/g, '&')\n .replace(/</g, '<');\n}\nexport function createDefaultStyle(id) {\n // Just in case this id comes from a user, ensure these is no security issues\n if (!/^[A-Za-z]+[-:.\\w]*$/.test(id)) {\n throw new Error('Invalid HTML ID');\n }\n return defaultStyle.toString().replace(EL_ID, id);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVmYXVsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLE1BQU0sU0FBUyxDQUFDO0FBRW5DLE1BQU0sS0FBSyxHQUFHLG9CQUFvQixDQUFDO0FBRW5DLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3Qjs7T0FFRztJQUNILE9BQU8sRUFBRSxFQUFFO0lBRVg7O09BRUc7SUFDSCxPQUFPLEVBQUUsRUFBRTtJQUVYOztPQUVHO0lBQ0gsRUFBRSxFQUFFLEtBQUs7SUFFVDs7T0FFRztJQUNILE9BQU8sRUFBRSxvQkFBb0I7SUFFN0I7Ozs7T0FJRztJQUNILEtBQUssRUFBRSxPQUFPO0lBRWQ7O09BRUc7SUFDSCxtQkFBbUIsRUFBRSxLQUFLO0lBRTFCOzs7O09BSUc7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7T0FFRztJQUNILFFBQVEsRUFBRSxDQUFDO0NBQ1osQ0FBQztBQUlGOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQVU7SUFDbkMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ2pCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1NBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxFQUFVO0lBQzNDLDZFQUE2RTtJQUM3RSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztLQUNwQztJQUVELE9BQU8sWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEQsQ0FBQyJ9","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { isArray, isObject, isString } from 'vega-util';\n/**\n * Format the value to be shown in the toolip.\n *\n * @param value The value to show in the tooltip.\n * @param valueToHtml Function to convert a single cell value to an HTML string\n */\nexport function formatValue(value, valueToHtml, maxDepth) {\n if (isArray(value)) {\n return `[${value.map(v => valueToHtml(isString(v) ? v : stringify(v, maxDepth))).join(', ')}]`;\n }\n if (isObject(value)) {\n let content = '';\n const _a = value, { title } = _a, rest = __rest(_a, [\"title\"]);\n if (title) {\n content += `<h2>${valueToHtml(title)}</h2>`;\n }\n const keys = Object.keys(rest);\n if (keys.length > 0) {\n content += '<table>';\n for (const key of keys) {\n let val = rest[key];\n if (isObject(val)) {\n val = stringify(val, maxDepth);\n }\n content += `<tr><td class=\"key\">${valueToHtml(key)}:</td><td class=\"value\">${valueToHtml(val)}</td></tr>`;\n }\n content += `</table>`;\n }\n return content || '{}'; // show empty object if there are no properties\n }\n return valueToHtml(value);\n}\nexport function replacer(maxDepth) {\n const stack = [];\n return function (key, value) {\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n const pos = stack.indexOf(this) + 1;\n stack.length = pos;\n if (stack.length > maxDepth) {\n return '[Object]';\n }\n if (stack.indexOf(value) >= 0) {\n return '[Circular]';\n }\n stack.push(value);\n return value;\n };\n}\n/**\n * Stringify any JS object to valid JSON\n */\nexport function stringify(obj, maxDepth) {\n return JSON.stringify(obj, replacer(maxDepth));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0VmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZm9ybWF0VmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFVLEVBQUUsV0FBbUMsRUFBRSxRQUFnQjtJQUMzRixJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNsQixPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7S0FDaEc7SUFFRCxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNuQixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFFakIsTUFBTSxVQUFpQyxFQUFqQyxFQUFFLEtBQUssT0FBMEIsRUFBeEIsNEJBQXdCLENBQUM7UUFFeEMsSUFBSSxLQUFLLEVBQUU7WUFDVCxPQUFPLElBQUksT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztTQUM3QztRQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQixPQUFPLElBQUksU0FBUyxDQUFDO1lBQ3JCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO2dCQUN0QixJQUFJLEdBQUcsR0FBSSxJQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzdCLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNqQixHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztpQkFDaEM7Z0JBRUQsT0FBTyxJQUFJLHVCQUF1QixXQUFXLENBQUMsR0FBRyxDQUFDLDJCQUEyQixXQUFXLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQzthQUMzRztZQUNELE9BQU8sSUFBSSxVQUFVLENBQUM7U0FDdkI7UUFFRCxPQUFPLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQywrQ0FBK0M7S0FDeEU7SUFFRCxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxRQUFnQjtJQUN2QyxNQUFNLEtBQUssR0FBVSxFQUFFLENBQUM7SUFFeEIsT0FBTyxVQUFvQixHQUFXLEVBQUUsS0FBVTtRQUNoRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQy9DLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNuQixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsUUFBUSxFQUFFO1lBQzNCLE9BQU8sVUFBVSxDQUFDO1NBQ25CO1FBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM3QixPQUFPLFlBQVksQ0FBQztTQUNyQjtRQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQVEsRUFBRSxRQUFnQjtJQUNsRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUMifQ==","import { createDefaultStyle, DEFAULT_OPTIONS } from './defaults';\nimport { formatValue } from './formatValue';\nimport { calculatePosition } from './position';\n/**\n * The tooltip handler class.\n */\nexport class Handler {\n /**\n * Create the tooltip handler and initialize the element and style.\n *\n * @param options Tooltip Options\n */\n constructor(options) {\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n const elementId = this.options.id;\n // bind this to call\n this.call = this.tooltip_handler.bind(this);\n // prepend a default stylesheet for tooltips to the head\n if (!this.options.disableDefaultStyle && !document.getElementById(this.options.styleId)) {\n const style = document.createElement('style');\n style.setAttribute('id', this.options.styleId);\n style.innerHTML = createDefaultStyle(elementId);\n const head = document.head;\n if (head.childNodes.length > 0) {\n head.insertBefore(style, head.childNodes[0]);\n }\n else {\n head.appendChild(style);\n }\n }\n // append a div element that we use as a tooltip unless it already exists\n this.el = document.getElementById(elementId);\n if (!this.el) {\n this.el = document.createElement('div');\n this.el.setAttribute('id', elementId);\n this.el.classList.add('vg-tooltip');\n document.body.appendChild(this.el);\n }\n }\n /**\n * The tooltip handler function.\n */\n tooltip_handler(handler, event, item, value) {\n // console.log(handler, event, item, value);\n // hide tooltip for null, undefined, or empty string values\n if (value == null || value === '') {\n this.el.classList.remove('visible', `${this.options.theme}-theme`);\n return;\n }\n // set the tooltip content\n this.el.innerHTML = formatValue(value, this.options.sanitize, this.options.maxDepth);\n // make the tooltip visible\n this.el.classList.add('visible', `${this.options.theme}-theme`);\n const { x, y } = calculatePosition(event, this.el.getBoundingClientRect(), this.options.offsetX, this.options.offsetY);\n this.el.setAttribute('style', `top: ${y}px; left: ${x}px`);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9IYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQVcsTUFBTSxZQUFZLENBQUM7QUFDMUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxNQUFNLE9BQU8sT0FBTztJQWdCbEI7Ozs7T0FJRztJQUNILFlBQVksT0FBMEI7UUFDcEMsSUFBSSxDQUFDLE9BQU8scUJBQVEsZUFBZSxFQUFLLE9BQU8sQ0FBRSxDQUFDO1FBQ2xELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBRWxDLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLHdEQUF3RDtRQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN2RixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0MsS0FBSyxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUVoRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6QjtTQUNGO1FBRUQseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNaLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRXBDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWUsQ0FBQyxPQUFZLEVBQUUsS0FBaUIsRUFBRSxJQUFTLEVBQUUsS0FBVTtRQUM1RSw0Q0FBNEM7UUFFNUMsMkRBQTJEO1FBQzNELElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUM7WUFDbkUsT0FBTztTQUNSO1FBRUQsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVyRiwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUVoRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLGlCQUFpQixDQUNoQyxLQUFLLEVBQ0wsSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxFQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ3JCLENBQUM7UUFFRixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0YifQ==","/**\n * Position the tooltip\n *\n * @param event The mouse event.\n * @param tooltipBox\n * @param offsetX Horizontal offset.\n * @param offsetY Vertical offset.\n */\nexport function calculatePosition(event, tooltipBox, offsetX, offsetY) {\n let x = event.clientX + offsetX;\n if (x + tooltipBox.width > window.innerWidth) {\n x = +event.clientX - offsetX - tooltipBox.width;\n }\n let y = event.clientY + offsetY;\n if (y + tooltipBox.height > window.innerHeight) {\n y = +event.clientY - offsetY - tooltipBox.height;\n }\n return { x, y };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcG9zaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsS0FBaUIsRUFDakIsVUFBNkMsRUFDN0MsT0FBZSxFQUNmLE9BQWU7SUFFZixJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNoQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDNUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztLQUNqRDtJQUVELElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ2hDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRTtRQUM5QyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0tBQ2xEO0lBRUQsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNsQixDQUFDIn0=","import { Handler } from './Handler';\nexport * from './defaults';\nexport * from './formatValue';\nexport * from './position';\nexport * from './Handler';\n/**\n * Create a tooltip handler and register it with the provided view.\n *\n * @param view The Vega view.\n * @param opt Tooltip options.\n */\nexport default function (view, opt) {\n const handler = new Handler(opt);\n view.tooltip(handler.call).run();\n return handler;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFdBQVcsQ0FBQztBQUUxQjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxPQUFPLFdBQVUsSUFBVSxFQUFFLEdBQXNCO0lBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWpDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRWpDLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMifQ==","/**\n * Open editor url in a new window, and pass a message.\n */\nexport default function (window, url, data) {\n const editor = window.open(url);\n const wait = 10000;\n const step = 250;\n // eslint-disable-next-line no-bitwise\n let count = ~~(wait / step);\n function listen(evt) {\n if (evt.source === editor) {\n count = 0;\n window.removeEventListener('message', listen, false);\n }\n }\n window.addEventListener('message', listen, false);\n // send message\n // periodically resend until ack received or timeout\n function send() {\n if (count <= 0) {\n return;\n }\n editor.postMessage(data, '*');\n setTimeout(send, step);\n count -= 1;\n }\n setTimeout(send, step);\n}\n//# sourceMappingURL=post.js.map","// generated with build-style.sh\nexport default `.vega-embed {\n position: relative;\n display: inline-block;\n padding-right: 38px; }\n .vega-embed details:not([open]) > :not(summary) {\n display: none !important; }\n .vega-embed summary {\n list-style: none;\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n padding: 6px;\n z-index: 1000;\n background: white;\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\n color: #1b1e23;\n border: 1px solid #aaa;\n border-radius: 999px;\n opacity: 0.2;\n transition: opacity 0.4s ease-in;\n outline: none;\n cursor: pointer; }\n .vega-embed summary::-webkit-details-marker {\n display: none; }\n .vega-embed details[open] summary {\n opacity: 0.7; }\n .vega-embed:hover summary,\n .vega-embed:focus summary {\n opacity: 1 !important;\n transition: opacity 0.2s ease; }\n .vega-embed .vega-actions {\n position: absolute;\n top: 35px;\n right: -9px;\n display: flex;\n flex-direction: column;\n padding-bottom: 8px;\n padding-top: 8px;\n border-radius: 4px;\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\n border: 1px solid #d9d9d9;\n background: white;\n animation-duration: 0.15s;\n animation-name: scale-in;\n animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5); }\n .vega-embed .vega-actions a {\n padding: 8px 16px;\n font-family: sans-serif;\n font-size: 14px;\n font-weight: 600;\n white-space: nowrap;\n color: #434a56;\n text-decoration: none; }\n .vega-embed .vega-actions a:hover {\n background-color: #f7f7f9;\n color: black; }\n .vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\n content: \"\";\n display: inline-block;\n position: absolute; }\n .vega-embed .vega-actions::before {\n left: auto;\n right: 14px;\n top: -16px;\n border: 8px solid #0000;\n border-bottom-color: #d9d9d9; }\n .vega-embed .vega-actions::after {\n left: auto;\n right: 15px;\n top: -14px;\n border: 7px solid #0000;\n border-bottom-color: #fff; }\n\n.vega-embed-wrapper {\n max-width: 100%;\n overflow: scroll;\n padding-right: 14px; }\n\n@keyframes scale-in {\n from {\n opacity: 0;\n transform: scale(0.6); }\n to {\n opacity: 1;\n transform: scale(1); } }\n`;\n//# sourceMappingURL=style.js.map","import { isArray } from 'vega';\n/* eslint-disable */\nfunction deepMerge_(dest, src) {\n if (typeof src !== 'object' || src === null) {\n return dest;\n }\n for (const p in src) {\n if (!src.hasOwnProperty(p)) {\n continue;\n }\n if (src[p] === undefined) {\n continue;\n }\n if (typeof src[p] !== 'object' || isArray(src[p]) || src[p] === null) {\n dest[p] = src[p];\n }\n else if (typeof dest[p] !== 'object' || dest[p] === null) {\n dest[p] = mergeDeep(isArray(src[p].constructor) ? [] : {}, src[p]);\n }\n else {\n mergeDeep(dest[p], src[p]);\n }\n }\n return dest;\n}\n/* eslint-enable */\nexport function mergeDeep(dest, ...src) {\n for (const s of src) {\n // eslint-disable-next-line no-param-reassign\n dest = deepMerge_(dest, s);\n }\n return dest;\n}\n// polyfill for IE\nif (!String.prototype.startsWith) {\n // eslint-disable-next-line no-extend-native,func-names\n String.prototype.startsWith = function (search, pos) {\n return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n };\n}\nexport function isURL(s) {\n return s.startsWith('http://') || s.startsWith('https://') || s.startsWith('//');\n}\n//# sourceMappingURL=util.js.map","import * as tslib_1 from \"tslib\";\nimport * as d3 from 'd3-selection';\nimport stringify from 'json-stringify-pretty-compact';\nimport { satisfies } from 'semver';\nimport * as vegaImport from 'vega';\nimport * as vlImport from 'vega-lite';\nimport schemaParser from 'vega-schema-url-parser';\nimport * as themes from 'vega-themes';\nimport { Handler } from 'vega-tooltip';\nimport post from './post';\nimport embedStyle from './style';\nimport { mergeDeep } from './util';\nexport const vega = vegaImport;\nexport const vl = vlImport;\nconst I18N = {\n CLICK_TO_VIEW_ACTIONS: 'Click to view actions',\n COMPILED_ACTION: 'View Compiled Vega',\n EDITOR_ACTION: 'Open in Vega Editor',\n PNG_ACTION: 'Save as PNG',\n SOURCE_ACTION: 'View Source',\n SVG_ACTION: 'Save as SVG'\n};\nconst NAMES = {\n vega: 'Vega',\n 'vega-lite': 'Vega-Lite'\n};\nconst VERSION = {\n vega: vega.version,\n 'vega-lite': vl ? vl.version : 'not available'\n};\nconst PREPROCESSOR = {\n vega: vgjson => vgjson,\n 'vega-lite': (vljson, config) => vl.compile(vljson, { config: config }).spec\n};\nconst SVG_CIRCLES = `\n<svg viewBox=\"0 0 16 16\" fill=\"currentColor\" stroke=\"none\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\">\n <circle r=\"2\" cy=\"8\" cx=\"2\"></circle>\n <circle r=\"2\" cy=\"8\" cx=\"8\"></circle>\n <circle r=\"2\" cy=\"8\" cx=\"14\"></circle>\n</svg>`;\nfunction isTooltipHandler(h) {\n return typeof h === 'function';\n}\nfunction viewSource(source, sourceHeader, sourceFooter, mode) {\n const header = `<html><head>${sourceHeader}</head><body><pre><code class=\"json\">`;\n const footer = `</code></pre>${sourceFooter}</body></html>`;\n const win = window.open('');\n win.document.write(header + source + footer);\n win.document.title = `${NAMES[mode]} JSON Source`;\n}\n/**\n * Try to guess the type of spec.\n *\n * @param spec Vega or Vega-Lite spec.\n */\nexport function guessMode(spec, providedMode) {\n // Decide mode\n if (spec.$schema) {\n const parsed = schemaParser(spec.$schema);\n if (providedMode && providedMode !== parsed.library) {\n console.warn(`The given visualization spec is written in ${NAMES[parsed.library]}, but mode argument sets ${NAMES[providedMode] || providedMode}.`);\n }\n const mode = parsed.library;\n if (!satisfies(VERSION[mode], `^${parsed.version.slice(1)}`)) {\n console.warn(`The input spec uses ${NAMES[mode]} ${parsed.version}, but the current version of ${NAMES[mode]} is v${VERSION[mode]}.`);\n }\n return mode;\n }\n // try to guess from the provided spec\n if ('mark' in spec ||\n 'encoding' in spec ||\n 'layer' in spec ||\n 'hconcat' in spec ||\n 'vconcat' in spec ||\n 'facet' in spec ||\n 'repeat' in spec) {\n return 'vega-lite';\n }\n if ('marks' in spec || 'signals' in spec || 'scales' in spec || 'axes' in spec) {\n return 'vega';\n }\n return providedMode || 'vega';\n}\nfunction isLoader(o) {\n return !!(o && 'load' in o);\n}\n/**\n * Embed a Vega visualization component in a web page. This function returns a promise.\n *\n * @param el DOM element in which to place component (DOM node or CSS selector).\n * @param spec String : A URL string from which to load the Vega specification.\n * Object : The Vega/Vega-Lite specification as a parsed JSON object.\n * @param opt A JavaScript object containing options for embedding.\n */\nexport default function embed(el, spec, opt = {}) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const loader = isLoader(opt.loader) ? opt.loader : vega.loader(opt.loader);\n // Load the visualization specification.\n if (vega.isString(spec)) {\n const data = yield loader.load(spec);\n return embed(el, JSON.parse(data), opt);\n }\n // eslint-disable-next-line no-param-reassign, dot-notation\n opt = mergeDeep(opt, spec.usermeta && spec.usermeta['embedOptions']);\n const patch = opt.patch || opt.onBeforeParse;\n const actions = opt.actions === true || opt.actions === false\n ? opt.actions\n : mergeDeep({}, { export: { svg: true, png: true }, source: true, compiled: true, editor: true }, opt.actions || {});\n const i18n = Object.assign({}, I18N, opt.i18n);\n const renderer = opt.renderer || 'canvas';\n const logLevel = opt.logLevel || vega.Warn;\n const downloadFileName = opt.downloadFileName || 'visualization';\n // Load Vega theme/configuration.\n let config = opt.config || {};\n if (vega.isString(config)) {\n const data = yield loader.load(config);\n return embed(el, spec, Object.assign({}, opt, { config: JSON.parse(data) }));\n }\n if (opt.defaultStyle !== false) {\n // Add a default stylesheet to the head of the document.\n const ID = 'vega-embed-style';\n if (!document.getElementById(ID)) {\n const style = document.createElement('style');\n style.id = ID;\n style.innerText =\n opt.defaultStyle === undefined || opt.defaultStyle === true ? (embedStyle || '').toString() : opt.defaultStyle;\n document.head.appendChild(style);\n }\n }\n if (opt.theme) {\n config = mergeDeep({}, themes[opt.theme], config);\n }\n const mode = guessMode(spec, opt.mode);\n let vgSpec = PREPROCESSOR[mode](spec, config);\n if (mode === 'vega-lite') {\n if (vgSpec.$schema) {\n const parsed = schemaParser(vgSpec.$schema);\n if (!satisfies(VERSION.vega, `^${parsed.version.slice(1)}`)) {\n console.warn(`The compiled spec uses Vega ${parsed.version}, but current version is v${VERSION.vega}.`);\n }\n }\n }\n // ensure container div has class 'vega-embed'\n const div = d3\n .select(el) // d3.select supports elements and strings\n .classed('vega-embed', true)\n .html(''); // clear container\n if (patch) {\n if (patch instanceof Function) {\n vgSpec = patch(vgSpec);\n }\n else if (vega.isString(patch)) {\n const patchString = yield loader.load(patch);\n vgSpec = mergeDeep(vgSpec, JSON.parse(patchString));\n }\n else {\n vgSpec = mergeDeep(vgSpec, patch);\n }\n }\n // Do not apply the config to Vega when we have already applied it to Vega-Lite.\n // This call may throw an Error if parsing fails.\n const runtime = vega.parse(vgSpec, mode === 'vega-lite' ? {} : config);\n const view = new vega.View(runtime, {\n loader,\n logLevel,\n renderer\n });\n if (opt.tooltip !== false) {\n let handler;\n if (isTooltipHandler(opt.tooltip)) {\n handler = opt.tooltip;\n }\n else {\n // user provided boolean true or tooltip options\n handler = new Handler(opt.tooltip === true ? {} : opt.tooltip).call;\n }\n view.tooltip(handler);\n }\n let { hover } = opt;\n // Enable hover for Vega by default.\n if (hover === undefined) {\n hover = mode !== 'vega-lite';\n }\n if (hover) {\n const { hoverSet, updateSet } = (typeof hover === 'boolean' ? {} : hover);\n view.hover(hoverSet, updateSet);\n }\n if (opt) {\n if (opt.width) {\n view.width(opt.width);\n }\n if (opt.height) {\n view.height(opt.height);\n }\n if (opt.padding) {\n view.padding(opt.padding);\n }\n }\n yield view.initialize(el).runAsync();\n if (actions !== false) {\n let wrapper = div;\n if (opt.defaultStyle !== false) {\n const details = div.append('details').attr('title', i18n.CLICK_TO_VIEW_ACTIONS);\n wrapper = details;\n const summary = details.insert('summary');\n summary.html(SVG_CIRCLES);\n const dn = details.node();\n document.addEventListener('click', evt => {\n if (!dn.contains(evt.target)) {\n dn.removeAttribute('open');\n }\n });\n }\n const ctrl = wrapper.insert('div').attr('class', 'vega-actions');\n // add 'Export' action\n if (actions === true || actions.export !== false) {\n for (const ext of ['svg', 'png']) {\n if (actions === true || actions.export === true || actions.export[ext]) {\n const i18nExportAction = i18n[`${ext.toUpperCase()}_ACTION`];\n ctrl\n .append('a')\n .text(i18nExportAction)\n .attr('href', '#')\n .attr('target', '_blank')\n .attr('download', `${downloadFileName}.${ext}`)\n // eslint-disable-next-line func-names\n .on('mousedown', function () {\n view\n .toImageURL(ext, opt.scaleFactor)\n .then(url => {\n this.href = url;\n })\n .catch(error => {\n throw error;\n });\n d3.event.preventDefault();\n });\n }\n }\n }\n // add 'View Source' action\n if (actions === true || actions.source !== false) {\n ctrl\n .append('a')\n .text(i18n.SOURCE_ACTION)\n .attr('href', '#')\n .on('mousedown', () => {\n viewSource(stringify(spec), opt.sourceHeader || '', opt.sourceFooter || '', mode);\n d3.event.preventDefault();\n });\n }\n // add 'View Compiled' action\n if (mode === 'vega-lite' && (actions === true || actions.compiled !== false)) {\n ctrl\n .append('a')\n .text(i18n.COMPILED_ACTION)\n .attr('href', '#')\n .on('mousedown', () => {\n viewSource(stringify(vgSpec), opt.sourceHeader || '', opt.sourceFooter || '', 'vega');\n d3.event.preventDefault();\n });\n }\n // add 'Open in Vega Editor' action\n if (actions === true || actions.editor !== false) {\n const editorUrl = opt.editorUrl || 'https://vega.github.io/editor/';\n ctrl\n .append('a')\n .text(i18n.EDITOR_ACTION)\n .attr('href', '#')\n .on('mousedown', () => {\n post(window, editorUrl, {\n config: config,\n mode,\n renderer,\n spec: stringify(spec)\n });\n d3.event.preventDefault();\n });\n }\n }\n return { view, spec, vgSpec };\n });\n}\n//# sourceMappingURL=embed.js.map","var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a)\n , arrB = isArray(b)\n , i\n , length\n , key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length)\n return false;\n\n for (i = length; i-- !== 0;)\n if (!hasProp.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n return a!==a && b!==b;\n};\n","import vegaEmbed, { Mode, EmbedOptions } from \"vega-embed\";\nimport { Spec, View } from \"vega\";\nimport { TopLevelSpec } from \"vega-lite\";\n\nexport { default as vegaEmbed } from \"vega-embed\";\n\nfunction javascriptIndex(selector: string, outputs: any) {\n // Return the index in the output array of the JS repr of this viz\n for (let i = 0; i < outputs.length; i++) {\n const item = outputs[i];\n if (\n item.metadata &&\n item.metadata[\"jupyter-vega\"] === selector &&\n item.data[\"application/javascript\"] !== undefined\n ) {\n return i;\n }\n }\n return -1;\n}\n\nfunction imageIndex(selector: string, outputs: any) {\n // Return the index in the output array of the PNG repr of this viz\n for (let i = 0; i < outputs.length; i++) {\n const item = outputs[i];\n if (\n item.metadata &&\n item.metadata[\"jupyter-vega\"] === selector &&\n item.data[\"image/png\"] !== undefined\n ) {\n return i;\n }\n }\n return -1;\n}\n\nfunction showError(el: HTMLElement, error: Error) {\n el.innerHTML = `<div class=\"error\">\n <p>Javascript Error: ${error.message}</p>\n <p>This usually means there's a typo in your chart specification.\n See the JavaScript console for the full traceback.</p>\n </div>`;\n\n throw error;\n}\n\nexport function render(\n selector: string,\n spec: Spec | TopLevelSpec,\n type: Mode,\n opt: EmbedOptions,\n output_area: any\n) {\n // Find the indices of this visualizations JS and PNG\n // representation.\n const imgIndex = imageIndex(selector, output_area.outputs);\n const jsIndex = javascriptIndex(selector, output_area.outputs);\n\n // If we have already rendered a static image, don't render\n // the JS version or append a new PNG version\n if (imgIndex > -1 && jsIndex > -1 && imgIndex === jsIndex + 1) {\n return;\n }\n\n // Never been rendered, so render JS and append the PNG to the\n // outputs for the cell\n const el = document.getElementById(selector.substring(1));\n vegaEmbed(el, spec, {\n loader: { http: { credentials: \"same-origin\" } },\n ...opt,\n mode: type\n })\n .then(result => {\n result.view\n .toImageURL(\"png\")\n .then(imageData => {\n if (output_area !== undefined) {\n const output = {\n data: {\n \"image/png\": imageData.split(\",\")[1]\n },\n metadata: { \"jupyter-vega\": selector },\n output_type: \"display_data\"\n };\n // This appends the PNG output, but doesn't render it this time\n // as the JS version will be rendered already.\n output_area.outputs.push(output);\n }\n })\n .catch(error => showError(el, error));\n })\n .catch(error => showError(el, error));\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n for (var i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n"],"sourceRoot":""}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vega-2.3.0/vega/static/widget.js new/vega-2.4.0/vega/static/widget.js
--- old/vega-2.3.0/vega/static/widget.js 1970-01-01 01:00:00.000000000 +0100
+++ new/vega-2.4.0/vega/static/widget.js 2019-07-04 11:09:56.000000000 +0200
@@ -0,0 +1,2 @@
+define(["nbextensions/jupyter-vega/index","@jupyter-widgets/base"],function(e,t){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__assign||function(){return(i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},u=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function u(e){try{a(r.next(e))}catch(e){i(e)}}function c(e){try{a(r.throw(e))}catch(e){i(e)}}function a(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(u,c)}a((r=r.apply(e,t||[])).next())})},c=this&&this.__generator||function(e,t){var n,r,o,i,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;u;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,r=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){u=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){u.label=i[1];break}if(6===i[0]&&u.label<o[1]){u.label=o[1],o=i;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(i);break}o[2]&&u.ops.pop(),u.trys.pop();continue}i=t.call(e,u)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}};Object.defineProperty(t,"__esModule",{value:!0});var a=n(1);var l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.render=function(){var e=this;this.viewElement=document.createElement("div"),this.el.appendChild(this.viewElement),this.errorElement=document.createElement("div"),this.errorElement.style.color="red",this.el.appendChild(this.errorElement);var t=function(){e.view&&(e.view.finalize(),e.view=null);var t=JSON.parse(e.model.get("_spec_source")),n=JSON.parse(e.model.get("_opt_source"));null!=t&&a.vegaEmbed(e.viewElement,t,i({loader:{http:{credentials:"same-origin"}}},n)).then(function(t){e.view=t.view,e.send({type:"display"})}).catch(function(e){return console.error(e)})},n=function(t){return u(e,void 0,void 0,function(){var e,n,r;return c(this,function(o){switch(o.label){case 0:if(null==this.view)throw new Error("Internal error: no view attached to widget");return e=new Function("datum","return ("+(t.remove||"false")+")"),n=t.insert||[],r=this.view.changeset().insert(n).remove(e),[4,this.view.change(t.key,r).runAsync()];case 1:return o.sent(),[2]}})})};this.model.on("change:_spec_source",t),this.model.on("change:_opt_source",t),this.model.on("msg:custom",function(t){var r=function(e){return"update"!=e.type?null:e}(t);null!=r&&function(t){return u(e,void 0,void 0,function(){var e,r,o;return c(this,function(i){switch(i.label){case 0:e=0,r=t.updates,i.label=1;case 1:return e<r.length?(o=r[e],[4,n(o)]):[3,4];case 2:i.sent(),i.label=3;case 3:return e++,[3,1];case 4:return[2]}})})}(r).catch(function(t){e.errorElement.textContent=""+t,console.error(t)})}),t()},t}(n(2).DOMWidgetView);t.VegaWidget=l},function(t,n){t.exports=e},function(e,n){e.exports=t}])});
+//# sourceMappingURL=widget.js.map
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vega-2.3.0/vega/static/widget.js.map new/vega-2.4.0/vega/static/widget.js.map
--- old/vega-2.3.0/vega/static/widget.js.map 1970-01-01 01:00:00.000000000 +0100
+++ new/vega-2.4.0/vega/static/widget.js.map 2019-07-04 11:09:56.000000000 +0200
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/widget.ts","webpack:///external \"nbextensions/jupyter-vega/index\"","webpack:///external \"@jupyter-widgets/base\""],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","index_1","VegaWidget","_super","__extends","render","_this","this","viewElement","document","createElement","el","appendChild","errorElement","style","color","reembed","view","finalize","spec","JSON","parse","model","opt","vegaEmbed","__assign","loader","http","credentials","then","res","send","type","catch","err","console","error","applyUpdate","update","__awaiter","Error","filter","Function","remove","newValues","insert","changeSet","changeset","change","runAsync","_a","sent","on","ev","message","checkWidgetUpdate","updates","_i","length","_b","applyUpdates","textContent","DOMWidgetView","__WEBPACK_EXTERNAL_MODULE__1__","__WEBPACK_EXTERNAL_MODULE__2__"],"mappings":"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","file":"widget.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import { vegaEmbed } from \"./index\";\n\nimport { DOMWidgetView } from \"@jupyter-widgets/base\";\n\ninterface WidgetUpdate {\n key: string;\n remove?: string;\n insert?: any[];\n}\n\ninterface WidgetUpdateMessage {\n type: \"update\";\n updates: WidgetUpdate[];\n}\n\n// validate the ev object and cast it to the correct type\nfunction checkWidgetUpdate(ev: any): WidgetUpdateMessage | null {\n if (ev.type != \"update\") {\n return null;\n }\n\n // TODO: Fully validate ev and give a easy to understand error message if it is ill-formed\n return ev as WidgetUpdateMessage;\n}\n\nexport class VegaWidget extends DOMWidgetView {\n view: any;\n viewElement: any;\n errorElement: any;\n\n render() {\n this.viewElement = document.createElement(\"div\");\n this.el.appendChild(this.viewElement);\n\n this.errorElement = document.createElement(\"div\");\n this.errorElement.style.color = \"red\";\n this.el.appendChild(this.errorElement);\n\n const reembed = () => {\n if (this.view) {\n this.view.finalize();\n this.view = null;\n }\n const spec = JSON.parse(this.model.get(\"_spec_source\"));\n const opt = JSON.parse(this.model.get(\"_opt_source\"));\n\n if (spec == null) {\n return;\n }\n\n vegaEmbed(this.viewElement, spec, {\n loader: { http: { credentials: \"same-origin\" } },\n ...opt\n })\n .then((res: any) => {\n this.view = res.view;\n this.send({ type: \"display\" });\n })\n .catch((err: Error) => console.error(err));\n };\n\n const applyUpdate = async (update: WidgetUpdate) => {\n if (this.view == null) {\n throw new Error(\"Internal error: no view attached to widget\");\n }\n\n const filter = new Function(\n \"datum\",\n \"return (\" + (update.remove || \"false\") + \")\"\n );\n const newValues = update.insert || [];\n const changeSet = this.view\n .changeset()\n .insert(newValues)\n .remove(filter);\n\n await this.view.change(update.key, changeSet).runAsync();\n };\n\n const applyUpdates = async (message: WidgetUpdateMessage) => {\n for (const update of message.updates) {\n await applyUpdate(update);\n }\n };\n\n this.model.on(\"change:_spec_source\", reembed);\n this.model.on(\"change:_opt_source\", reembed);\n this.model.on(\"msg:custom\", (ev: any) => {\n const message = checkWidgetUpdate(ev);\n if (message == null) {\n return;\n }\n\n applyUpdates(message).catch((err: Error) => {\n this.errorElement.textContent = \"\" + err;\n console.error(err);\n });\n });\n\n // initial rendering\n reembed();\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;"],"sourceRoot":""}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vega-2.3.0/vega/widget.py new/vega-2.4.0/vega/widget.py
--- old/vega-2.3.0/vega/widget.py 2019-06-11 19:29:53.000000000 +0200
+++ new/vega-2.4.0/vega/widget.py 2019-07-03 02:02:38.000000000 +0200
@@ -63,7 +63,7 @@
# display state is reflected by the `_displayed` attribute.
_view_name = Unicode('VegaWidget').tag(sync=True)
- _view_module = Unicode('nbextensions/jupyter-vega/index').tag(sync=True)
+ _view_module = Unicode('nbextensions/jupyter-vega/widget').tag(sync=True)
_view_module_version = Unicode('0.1.0').tag(sync=True)
_spec_source = Unicode('null').tag(sync=True)
_opt_source = Unicode('null').tag(sync=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vega-2.3.0/vega.egg-info/PKG-INFO new/vega-2.4.0/vega.egg-info/PKG-INFO
--- old/vega-2.3.0/vega.egg-info/PKG-INFO 2019-06-11 19:33:30.000000000 +0200
+++ new/vega-2.4.0/vega.egg-info/PKG-INFO 2019-07-04 11:13:46.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: vega
-Version: 2.3.0
+Version: 2.4.0
Summary: IPyVega: An IPython/Jupyter widget for Vega 5 and Vega-Lite 3
Home-page: http://github.com/vega/ipyvega
Author: Dominik Moritz
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vega-2.3.0/vega.egg-info/SOURCES.txt new/vega-2.4.0/vega.egg-info/SOURCES.txt
--- old/vega-2.3.0/vega.egg-info/SOURCES.txt 2019-06-11 19:33:30.000000000 +0200
+++ new/vega-2.4.0/vega.egg-info/SOURCES.txt 2019-07-04 11:13:46.000000000 +0200
@@ -22,6 +22,8 @@
vega/static/index.js
vega/static/index.js.map
vega/static/vega.js
+vega/static/widget.js
+vega/static/widget.js.map
vega/tests/__init__.py
vega/tests/test_outputs.py
vega/tests/test_utils.py
\ No newline at end of file
1
0
Hello community,
here is the log from the commit of package jupyter-rise for openSUSE:Factory checked in at 2019-07-29 17:30:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/jupyter-rise (Old)
and /work/SRC/openSUSE:Factory/.jupyter-rise.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "jupyter-rise"
Mon Jul 29 17:30:32 2019 rev:2 rq:719432 version:5.5.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/jupyter-rise/jupyter-rise.changes 2019-05-22 10:57:41.270922452 +0200
+++ /work/SRC/openSUSE:Factory/.jupyter-rise.new.4126/jupyter-rise.changes 2019-07-29 17:30:37.150208308 +0200
@@ -1,0 +2,6 @@
+Sat Jul 27 23:22:02 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Update to 5.5.1
+ * protect calls to remove_shortcut()
+
+-------------------------------------------------------------------
Old:
----
rise-5.5.0-py2.py3-none-any.whl
New:
----
rise-5.5.1-py2.py3-none-any.whl
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ jupyter-rise.spec ++++++
--- /var/tmp/diff_new_pack.hUX8c2/_old 2019-07-29 17:30:40.634207019 +0200
+++ /var/tmp/diff_new_pack.hUX8c2/_new 2019-07-29 17:30:40.642207016 +0200
@@ -17,7 +17,7 @@
Name: jupyter-rise
-Version: 5.5.0
+Version: 5.5.1
Release: 0
Summary: Jupyter Slideshow Extension
License: BSD-3-Clause AND MIT
1
0
Hello community,
here is the log from the commit of package openafs for openSUSE:Factory checked in at 2019-07-29 17:30:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openafs (Old)
and /work/SRC/openSUSE:Factory/.openafs.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openafs"
Mon Jul 29 17:30:29 2019 rev:12 rq:719428 version:1.8.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/openafs/openafs.changes 2019-05-03 22:47:16.391885831 +0200
+++ /work/SRC/openSUSE:Factory/.openafs.new.4126/openafs.changes 2019-07-29 17:30:29.854211009 +0200
@@ -1,0 +2,5 @@
+Sun Jul 28 18:34:40 UTC 2019 - Christof Hanke <christof.hanke(a)mpcdf.mpg.de>
+
+- disable compilation with LTO, does not work yet.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openafs.spec ++++++
--- /var/tmp/diff_new_pack.1URWcf/_old 2019-07-29 17:30:30.830210648 +0200
+++ /var/tmp/diff_new_pack.1URWcf/_new 2019-07-29 17:30:30.830210648 +0200
@@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via https://bugs.opensuse.org/
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# needssslcertforbuild
@@ -21,6 +21,7 @@
%if ! %{defined _fillupdir}
%define _fillupdir /var/adm/fillup-templates
%endif
+%define _lto_cflags %{nil}
#
# TUNABLES
1
0