From 8d9406d5fc126dfcdd9c0ea5b2e350b56616d115 Mon Sep 17 00:00:00 2001 From: JackDandy Date: Tue, 6 Mar 2018 01:18:08 +0000 Subject: [PATCH] Add choose to delete watched episodes from a list of played media at Kodi, Emby, and/or Plex. Add episode watched state system that integrates with Kodi, Plex, and/or Emby, instructions at Shows/History/Layout/"Watched". Add installable SickGear Kodi repository containing addon "SickGear Watched State Updater". Change add Emby setting for watched state scheduler at Config/Notifications/Emby/"Update watched interval". Change add Plex setting for watched state scheduler at Config/Notifications/Plex/"Update watched interval". Add API cmd=sg.updatewatchedstate, instructions for use are linked to in layout "Watched" at /history. Change history page table filter input values are saved across page refreshes. Change history page table filter inputs, accept values like "dvd or web" to only display both. Change history page table filter inputs, press 'ESC' key inside a filter input to reset it. Add provider activity stats to Shows/History/Layout/ drop down. Change move provider failures table from Manage/Media Search to Shows/History/Layout/Provider fails. Change sort provider failures by most recent failure, and with paused providers at the top. Change remove table form non-testing version 20007, that was reassigned. --- CHANGES.md | 16 +- gui/slick/css/style.css | 68 +- .../default/config_notifications.tmpl | 68 +- .../default/config_postProcessing.tmpl | 12 +- gui/slick/interfaces/default/history.tmpl | 563 +++++++++-- .../default/manage_episodeStatuses.tmpl | 39 +- .../default/manage_manageSearches.tmpl | 77 -- gui/slick/interfaces/default/repo_index.tmpl | 19 + .../interfaces/default/repo_kodi_addon.tmpl | 27 + .../interfaces/default/repo_kodi_addons.tmpl | 5 + gui/slick/js/confirmations.js | 102 +- gui/slick/js/history.js | 236 +++++ gui/slick/js/manageSearches.js | 33 - .../js/plot.ly/numeric/1.2.6/numeric.min.js | 3 + gui/slick/js/plot.ly/plotly-latest.min.js | 7 + lib/plex/__init__.py | 1 + lib/plex/plex.py | 423 +++++++++ readme.md | 103 +- sickbeard/__init__.py | 59 +- sickbeard/auto_post_processer.py | 19 +- sickbeard/classes.py | 46 + .../clients/kodi/repository.sickgear/icon.png | Bin 0 -> 58898 bytes .../_devenv.py | 22 + .../addon.xml | 35 + .../changelog.txt | 2 + .../fanart.jpg | Bin 0 -> 318720 bytes .../icon.png | Bin 0 -> 29247 bytes .../resources/icon-black-sm.png | Bin 0 -> 2337 bytes .../resources/icon-black.png | Bin 0 -> 13690 bytes .../resources/icon-green-sm.png | Bin 0 -> 2339 bytes .../resources/icon-green.png | Bin 0 -> 13861 bytes .../resources/icon-red-sm.png | Bin 0 -> 2258 bytes .../resources/icon-red.png | Bin 0 -> 34768 bytes .../resources/language/English/strings.xml | 18 + .../resources/settings.xml | 21 + .../service.py | 361 +++++++ sickbeard/common.py | 13 - sickbeard/config.py | 152 +-- sickbeard/databases/mainDB.py | 295 ++++-- sickbeard/db.py | 66 +- sickbeard/notifiers/emby.py | 7 +- sickbeard/providers/generic.py | 7 +- sickbeard/scheduler.py | 90 +- sickbeard/search_propers.py | 6 +- sickbeard/subtitles.py | 42 +- sickbeard/watchedstate.py | 60 ++ sickbeard/watchedstate_queue.py | 83 ++ sickbeard/webapi.py | 56 +- sickbeard/webserve.py | 878 ++++++++++++++++-- sickbeard/webserveInit.py | 4 + 50 files changed, 3491 insertions(+), 653 deletions(-) create mode 100644 gui/slick/interfaces/default/repo_index.tmpl create mode 100644 gui/slick/interfaces/default/repo_kodi_addon.tmpl create mode 100644 gui/slick/interfaces/default/repo_kodi_addons.tmpl create mode 100644 gui/slick/js/history.js create mode 100644 gui/slick/js/plot.ly/numeric/1.2.6/numeric.min.js create mode 100644 gui/slick/js/plot.ly/plotly-latest.min.js create mode 100644 lib/plex/__init__.py create mode 100644 lib/plex/plex.py create mode 100644 sickbeard/clients/kodi/repository.sickgear/icon.png create mode 100644 sickbeard/clients/kodi/service.sickgear.watchedstate.updater/_devenv.py create mode 100644 sickbeard/clients/kodi/service.sickgear.watchedstate.updater/addon.xml create mode 100644 sickbeard/clients/kodi/service.sickgear.watchedstate.updater/changelog.txt create mode 100644 sickbeard/clients/kodi/service.sickgear.watchedstate.updater/fanart.jpg create mode 100644 sickbeard/clients/kodi/service.sickgear.watchedstate.updater/icon.png create mode 100644 sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/icon-black-sm.png create mode 100644 sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/icon-black.png create mode 100644 sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/icon-green-sm.png create mode 100644 sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/icon-green.png create mode 100644 sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/icon-red-sm.png create mode 100644 sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/icon-red.png create mode 100644 sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/language/English/strings.xml create mode 100644 sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/settings.xml create mode 100644 sickbeard/clients/kodi/service.sickgear.watchedstate.updater/service.py create mode 100644 sickbeard/watchedstate.py create mode 100644 sickbeard/watchedstate_queue.py diff --git a/CHANGES.md b/CHANGES.md index 6ab8cbfb..586523ce 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,19 @@ ### 0.15.0 (2018-xx-xx xx:xx:xx UTC) +* Add choice to delete watched episodes from a list of played media at Kodi, Emby, and/or Plex, + instructions at Shows/History/Layout/"Watched" +* Add installable SickGear Kodi repository containing addon "SickGear Watched State Updater" +* Change add Emby setting for watched state scheduler at Config/Notifications/Emby/"Update watched interval" +* Change add Plex setting for watched state scheduler at Config/Notifications/Plex/"Update watched interval" +* Add API cmd=sg.updatewatchedstate, instructions for use are linked to in layout "Watched" at /history +* Change history page table filter input values are saved across page refreshes +* Change history page table filter inputs, accept values like "dvd or web" to only display both +* Change history page table filter inputs, press 'ESC' key inside a filter input to reset it +* Add provider activity stats to Shows/History/Layout/ drop down +* Change move provider failures table from Manage/Media Search to Shows/History/Layout/Provider fails +* Change sort provider failures by most recent failure, and with paused providers at the top +* Add SickGear-NZBGet dedicated post processing script, see.. \autoProcessTV\SickGear-NG\INSTALL.txt +* Add non standard multi episode name parsing e.g. S01E02and03 and 1x02and03and04 * Change overhaul and add API functions * Change API version... start with 10 * Change set application response header to 'SickGear' + add API version @@ -90,8 +104,6 @@ * Add X-Filename response header to getbanner, getposter * Add X-Fanartname response header for sg.show.getfanart * Change remove some non-release group stuff from newnab results -* Add SickGear-NZBGet dedicated post processing script, see.. \autoProcessTV\SickGear-NG\INSTALL.txt -* Add non standard multi episode name parsing e.g. S01E02and03 and 1x02and03and04 [develop changelog] diff --git a/gui/slick/css/style.css b/gui/slick/css/style.css index c79f54e9..d9043dde 100644 --- a/gui/slick/css/style.css +++ b/gui/slick/css/style.css @@ -653,22 +653,32 @@ inc_bottom.tmpl display:inline } +#history-table thead th .icon-glyph, .footer .icon-glyph{ opacity:0.4;filter:alpha(opacity=40); float:none; display:inline-block; - margin:0 0 -1px 2px; - height:12px; + margin:0 0 -2px 4px; + height:13px; width:14px } +#history-table thead th .icon-glyph:hover, +#history-table tfoot th .icon-glyph:hover, +.footer .icon-glyph:hover{ + opacity:0.6;filter:alpha(opacity=60) +} +#history-table thead th .icon-glyph:hover, .footer .icon-glyph:hover{ - opacity:0.6;filter:alpha(opacity=60); cursor:pointer } +#history-table thead th .icon-glyph.age, +#history-table thead th .icon-glyph.date:hover, .footer .icon-glyph.timeleft, .footer .icon-glyph.time:hover{ background-position:-49px -25px } +#history-table thead th .icon-glyph.date, +#history-table thead th .icon-glyph.age:hover, .footer .icon-glyph.time, .footer .icon-glyph.timeleft:hover{ background-position:-193px -121px @@ -2605,40 +2615,51 @@ h2.day.add-apace, h2.network.add-space{ /* ======================================================================= history.tmpl ========================================================================== */ +.strike-deleted{ + text-decoration:line-through +} -#historyTable td, -#historyTable td.provider span{ +.red-bg{ + background-color:#992828 +} + +.green-bg{ + background-color:#3f993f +} + +#history-table td, +#history-table td.provider span{ text-align:center } -#historyTable td.provider span{ +#history-table td.provider span{ padding:0 2px } -#historyTable td.provider > img{ +#history-table td.provider > img{ margin-right:3px } -#historyTable td.provider span.fail img{ +#history-table td.provider span.fail img{ opacity:0.5; filter:alpha(opacity=50) } -#historyTable td img, -#historyTable td span{ +#history-table td img, +#history-table td span{ vertical-align:middle } -#historyTable td span.article{ +#history-table td span.article{ vertical-align:initial } -#historyTable td img.help, -#historyTable td span.help{ +#history-table td img.help, +#history-table td span.help{ cursor:help } -#historyTable td.tvShow{ +#history-table td.tvShow{ text-align:left } @@ -3256,15 +3277,18 @@ input.get_less_eps{ #media-search .section{ padding-bottom:10px } -#media-search .btn{ +#media-search .btn, +#provider-failures .btn{ margin:0 6px 0 0; min-width:70px } #media-search .btn.shows-more, -#media-search .btn.shows-less{ +#media-search .btn.shows-less, +#provider-failures .btn.shows-more, +#provider-failures .btn.shows-less{ margin:6px 6px 6px 0; } -#media-search .btn.provider-retry{ +#provider-failures .btn.provider-retry{ margin:6px 0 6px 4px; } .tablesorter.provider-failures{width:auto;clear:both;margin-bottom:10px} @@ -3356,6 +3380,16 @@ input.get_less_eps{ Global ========================================================================== */ +.contrast-text, +a.contrast-text:focus, +a.contrast-text:active, +a.contrast-text:visited{ + color:#ddd +} +a.contrast-text:hover{ + color:#999 +} + span.path{ padding:3px; margin-left:3px diff --git a/gui/slick/interfaces/default/config_notifications.tmpl b/gui/slick/interfaces/default/config_notifications.tmpl index bfaec904..a22e2285 100644 --- a/gui/slick/interfaces/default/config_notifications.tmpl +++ b/gui/slick/interfaces/default/config_notifications.tmpl @@ -4,6 +4,8 @@ #from lib.libtrakt import TraktAPI #from sickbeard.helpers import anon_url, starify #from sickbeard.notifiers import NotifierFactory +<% def sg_var(varname, default=False): return getattr(sickbeard, varname, default) %>#slurp# +<% def sg_str(varname, default=''): return getattr(sickbeard, varname, default) %>#slurp# ## #set global $title = 'Config - Notifications' #set global $header = 'Notifications' @@ -91,6 +93,21 @@ + #set $selected = ' selected="selected" class="selected"' +
+ +
-
-
- -
+#set $selected = ' selected="selected" class="selected"' +
+ +
+
+ +
-
-
Click below to test Plex server(s)
- - -
 
-
+
+
Click below to test Plex server(s)
+ + +
 
diff --git a/gui/slick/interfaces/default/config_postProcessing.tmpl b/gui/slick/interfaces/default/config_postProcessing.tmpl index d04f5e72..b0ed1099 100644 --- a/gui/slick/interfaces/default/config_postProcessing.tmpl +++ b/gui/slick/interfaces/default/config_postProcessing.tmpl @@ -114,7 +114,7 @@ Extra scripts - [Toggle Key] + [Toggle Key]

scripts are called after built-in post processing.  note: use | to separate additional extra scripts @@ -332,7 +332,7 @@ - [Toggle Key] + [Toggle Key]

@@ -552,7 +552,7 @@ - [Toggle Key] + [Toggle Key] @@ -750,7 +750,7 @@ - [Toggle Key] + [Toggle Key] @@ -953,7 +953,7 @@ - [Toggle Key] + [Toggle Key] @@ -1264,4 +1264,4 @@ //--> -#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_bottom.tmpl') \ No newline at end of file +#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_bottom.tmpl') diff --git a/gui/slick/interfaces/default/history.tmpl b/gui/slick/interfaces/default/history.tmpl index a78f262c..0bf2f467 100644 --- a/gui/slick/interfaces/default/history.tmpl +++ b/gui/slick/interfaces/default/history.tmpl @@ -1,64 +1,41 @@ #import datetime #import re - +## #import sickbeard -#from sickbeard import history, providers, sbdatetime +#from sickbeard import history, providers, sbdatetime, WEB_PORT #from sickbeard.common import Quality, statusStrings, SNATCHED_ANY, SNATCHED_PROPER, DOWNLOADED, SUBTITLED, ARCHIVED, FAILED +#from sickbeard.helpers import human #from sickbeard.providers import generic <% def sg_var(varname, default=False): return getattr(sickbeard, varname, default) %>#slurp# <% def sg_str(varname, default=''): return getattr(sickbeard, varname, default) %>#slurp# ## -#set global $title = 'History' -#set global $header = 'History' +#set $layout = $sg_str('HISTORY_LAYOUT', 'detailed') +#set $layout_name = 'watched' in $layout and 'Watched' or 'stats' in $layout and 'Activity Hits' or 'provider_failures'in $layout and 'Provider Failures' or 'Activity' +#set sg_port = str($getVar('sbHttpPort', WEB_PORT)) +#set global $title = 'History : %s' % $layout_name +#set global $header = 'History : %s' % $layout_name #set global $sbPath = '..' #set global $topmenu = 'home' -#set $layout = $sg_str('HISTORY_LAYOUT', 'detailed') ## #import os.path #include $os.path.join($sg_str('PROG_DIR'), 'gui/slick/interfaces/default/inc_top.tmpl') +## +#set $checked = ' checked="checked"' - + + @@ -63,7 +64,7 @@
-

$ep_count episode#echo ('s', '')[1 == $ep_count]# marked $common.statusStrings[$whichStatus].lower() in ${len($sorted_show_ids)} show#echo ('s', '')[1 == len($sorted_show_ids)]#

+

$ep_count episode#echo ('s', '')[1 == $ep_count]# marked $statusStrings[$whichStatus].lower() in ${len($sorted_show_ids)} show#echo ('s', '')[1 == len($sorted_show_ids)]#

@@ -71,16 +72,16 @@ Set checked shows/episodes to - #if $common.DOWNLOADED != $whichStatus: + #if $DOWNLOADED != $whichStatus: Override checked status to #end if diff --git a/gui/slick/interfaces/default/manage_manageSearches.tmpl b/gui/slick/interfaces/default/manage_manageSearches.tmpl index 636467c9..59f66289 100644 --- a/gui/slick/interfaces/default/manage_manageSearches.tmpl +++ b/gui/slick/interfaces/default/manage_manageSearches.tmpl @@ -63,83 +63,6 @@ -
-

Provider Failures:

-#if not $provider_fails -

No current failures. Failure stats display here when appropriate.

-#else -

Some providers can be often down over periods, SickGear will back off then retry connecting at a later time

- #for $prov in $provider_fail_stats - #if $len($prov['fails']) - - -
- $prov['name'] - #if $prov['active'] - #if $prov['next_try'] - #set nt = $str($prov['next_try']).split('.', 2) - ... is blocked until $sbdatetime.sbdatetime.sbftime($sbdatetime.sbdatetime.now() + $prov['next_try'], markup=True) (in $nt[0]) - #end if - #else - ... is not enabled - #end if -
- - - - - - - - - #if $prov['has_limit'] - - #end if - - - - #set $day = [] - #for $fail in $prov['fails'] - #set $child = True - #if $fail['date'] not in $day - #set $day += [$fail['date']] - #set $child = False - #end if - #slurp# - - #if $fail['multirow'] - #if not $child - - #else - - #end if - #else - - #end if - #set $blank = '-' - #set $title=None - #if $fail['http']['count'] - #set $title=$fail['http']['code'] - #end if - - - - - #if $prov['has_limit'] - - #end if - - #end for - -
period of 1hrserver/timeoutnetworkno dataotherhit limit
$sbdatetime.sbdatetime.sbfdate($fail['date_time'])$sbdatetime.sbdatetime.sbftime($fail['date_time'], markup=True)$sbdatetime.sbdatetime.sbfdatetime($fail['date_time'], markup=True)#if $fail['http']['count']#$fail['http']['count']#else#$blank#end if# / #echo $fail['timeout'].get('count', 0) or $blank##echo ($fail['connection'].get('count', 0) + $fail['connection_timeout'].get('count', 0)) or $blank##echo $fail['nodata'].get('count', 0) or $blank##echo $fail['other'].get('count', 0) or $blank##echo $fail.get('limit', {}).get('count', 0) or $blank#
- - #end if - #end for -#end if -
- - -

Search Queues:

diff --git a/gui/slick/interfaces/default/repo_index.tmpl b/gui/slick/interfaces/default/repo_index.tmpl new file mode 100644 index 00000000..2d517cc9 --- /dev/null +++ b/gui/slick/interfaces/default/repo_index.tmpl @@ -0,0 +1,19 @@ + + + + +

Index of $basepath

+ + + + +#for $file in $filelist + + + +#end for + +
+ Tornado Server for SickGear + + diff --git a/gui/slick/interfaces/default/repo_kodi_addon.tmpl b/gui/slick/interfaces/default/repo_kodi_addon.tmpl new file mode 100644 index 00000000..1ffde5e0 --- /dev/null +++ b/gui/slick/interfaces/default/repo_kodi_addon.tmpl @@ -0,0 +1,27 @@ +## +#from sickbeard import WEB_PORT, WEB_ROOT, ENABLE_HTTPS +#set sg_host = $getVar('sbHost', 'localhost') +#set sg_port = str($getVar('sbHttpPort', WEB_PORT)) +#set sg_root = $getVar('sbRoot', WEB_ROOT) +#set sg_use_https = $getVar('sbHttpsEnabled', ENABLE_HTTPS) +## +#set $base_url = 'http%s://%s:%s%s' % (('', 's')[any([sg_use_https])], $sg_host, $sg_port, $sg_root) +## + + + + $base_url/kodi/addons.xml + $base_url/kodi/addons.xml.md5 + $base_url/kodi + false + + + Install Add-ons for SickGear + Download and install add-ons from a repository at a running SickGear instance.[CR][CR]Contains:[CR]* Watchedstate updater service + + all + https://github.com/SickGear/SickGear + true + + diff --git a/gui/slick/interfaces/default/repo_kodi_addons.tmpl b/gui/slick/interfaces/default/repo_kodi_addons.tmpl new file mode 100644 index 00000000..e69fb081 --- /dev/null +++ b/gui/slick/interfaces/default/repo_kodi_addons.tmpl @@ -0,0 +1,5 @@ + + +$watchedstate_updater_addon_xml +$repo_xml + diff --git a/gui/slick/js/confirmations.js b/gui/slick/js/confirmations.js index 6ce7a10a..75744599 100644 --- a/gui/slick/js/confirmations.js +++ b/gui/slick/js/confirmations.js @@ -68,12 +68,12 @@ $(document).ready(function () { var showname = document.getElementById('showtitle').getAttribute('data-showname'); $.confirm({ 'title' : 'Remove Show', - 'message' : 'Are you sure you want to remove ' + showname + ' from the database ?

Check to delete files as well. IRREVERSIBLE', + 'message' : 'Are you sure you want to remove ' + showname + ' from the database ?

Check to delete files as well. IRREVERSIBLE', 'buttons' : { 'Yes' : { 'class' : 'green', 'action': function(){ - location.href = target + (document.getElementById('deleteFiles').checked ? '&full=1' : ''); + location.href = target + (document.getElementById('delete-files').checked ? '&full=1' : ''); // If checkbox is ticked, remove show and delete files. Else just remove show. } }, @@ -85,6 +85,98 @@ $(document).ready(function () { }); }); + $('#del-watched').bind('click', function(e) { + e.preventDefault(); + + var dedupe = [], delArr = [], mFiles = 0; + $('.del-check').each(function() { + if (!0 === this.checked) { + var pathFile = $(this).closest('tr').attr('data-file'), + thisId = $(this).attr('id'); + + if (-1 === jQuery.inArray(pathFile, dedupe)) { + dedupe.push(pathFile); + mFiles += 1 - $(this).closest('tr').find('.tvShow .strike-deleted').length; + } + + delArr.push(thisId.replace('del-', '')); + + /** @namespace $.SickGear.history.isCompact */ + if ($.SickGear.history.isCompact) { + // then select all related episode checkboxes + var tvepId = $(this).closest('tr').attr('data-tvep-id'); + $('tr[data-tvep-id="' + tvepId + '"] input.del-check:not("#' + thisId + '")') + .each(function(){ + delArr.push($(this).attr('id').replace('del-', '')); + }); + } + } + }); + if (0 === delArr.length) + return !1; + + /** @namespace $.SickGear.history.isTrashit */ + /** @namespace $.SickGear.history.lastDeleteFiles */ + /** @namespace $.SickGear.history.lastDeleteRecords */ + var action = $.SickGear.history.isTrashit ? 'Trash' : 'Delete', + btns = { + 'Yes' : { + 'class' : 'green', + 'action': function(){ + var deleteFiles = !!$('#delete-files:checked').length, + deleteRecords = !!$('#delete-records:checked').length, + checked = ' checked="checked"'; + $.SickGear.history.lastDeleteFiles = deleteFiles ? checked : ''; + $.SickGear.history.lastDeleteRecords = deleteRecords ? checked : ''; + $.post($.SickGear.Root + '/history/watched', + { + tvew_id: delArr.join('|'), + files: (deleteFiles ? '1' : ''), + records: (deleteRecords ? '1' : '') + }, + function(data){ + var result = $.parseJSON(data); + result.success && window.location.reload(true); + /* using window.location as the following is + sluggish when deleting 20 of 100 records + */ + /* + result.success && $.each(result.success, function(){ + var tr = $('#del-' + this).closest('tr'); + var t = tr.closest('table'); + tr.addClass('delete-me').fadeToggle('fast', 'linear').promise().done( + function(){ + $('.delete-me').html(''); + t.trigger('update'); + $.SickGear.sumChecked(); + }); + });*/ + }); + } + } + }; + + // btn pre-created here in order to use a custom btn text as named key to object + btns['No' + (0 < mFiles ? ', abort ' + ($.SickGear.history.isTrashit ? 'trash' : 'permanent delete') : '')] = {'class' : 'red'}; + $.confirm({ + 'title' : (action + (0 < mFiles ? ' media' : ' records') + + '("Send to trash" options)'), + 'message' : (0 < mFiles + ? '' + + '' + action + ' ' + mFiles + '' + + ' media file' + (1===mFiles?'':'s') + ' from disk' + : '' + ) + + '' + + '' + + 'Remove ' + + delArr.length + ' history record' + (1===delArr.length?'':'s') + + '' + + 'Are you sure ?', + 'buttons' : btns + }); + }); + $('a.clearhistory').bind('click',function(e) { e.preventDefault(); var target = $( this ).attr('href'); @@ -105,7 +197,7 @@ $(document).ready(function () { } }); }); - + $('a.trimhistory').bind('click',function(e) { e.preventDefault(); var target = $( this ).attr('href'); @@ -126,5 +218,5 @@ $(document).ready(function () { } }); }); - -}); \ No newline at end of file + +}); diff --git a/gui/slick/js/history.js b/gui/slick/js/history.js new file mode 100644 index 00000000..1ae8ae97 --- /dev/null +++ b/gui/slick/js/history.js @@ -0,0 +1,236 @@ +/** @namespace $.SickGear.Root */ +/** @namespace $.SickGear.history.isCompact */ +/** @namespace $.SickGear.history.isTrashit */ +/** @namespace $.SickGear.history.useSubtitles */ +/** @namespace $.SickGear.history.layoutName */ +/* + 2017 Jason Mulligan + @version 3.5.11 +*/ +!function(i){function e(i){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[],d=0,r=void 0,a=void 0,s=void 0,f=void 0,u=void 0,l=void 0,v=void 0,B=void 0,c=void 0,p=void 0,y=void 0,m=void 0,x=void 0,g=void 0;if(isNaN(i))throw new Error("Invalid arguments");return s=!0===e.bits,y=!0===e.unix,a=e.base||2,p=void 0!==e.round?e.round:y?1:2,m=void 0!==e.spacer?e.spacer:y?"":" ",g=e.symbols||e.suffixes||{},x=2===a?e.standard||"jedec":"jedec",c=e.output||"string",u=!0===e.fullform,l=e.fullforms instanceof Array?e.fullforms:[],r=void 0!==e.exponent?e.exponent:-1,B=Number(i),v=B<0,f=a>2?1e3:1024,v&&(B=-B),(-1===r||isNaN(r))&&(r=Math.floor(Math.log(B)/Math.log(f)))<0&&(r=0),r>8&&(r=8),0===B?(n[0]=0,n[1]=y?"":t[x][s?"bits":"bytes"][r]):(d=B/(2===a?Math.pow(2,10*r):Math.pow(1e3,r)),s&&(d*=8)>=f&&r<8&&(d/=f,r++),n[0]=Number(d.toFixed(r>0?p:0)),n[1]=10===a&&1===r?s?"kb":"kB":t[x][s?"bits":"bytes"][r],y&&(n[1]="jedec"===x?n[1].charAt(0):r>0?n[1].replace(/B$/,""):n[1],o.test(n[1])&&(n[0]=Math.floor(n[0]),n[1]=""))),v&&(n[0]=-n[0]),n[1]=g[n[1]]||n[1],"array"===c?n:"exponent"===c?r:"object"===c?{value:n[0],suffix:n[1],symbol:n[1]}:(u&&(n[1]=l[r]?l[r]:b[x][r]+(s?"bit":"byte")+(1===n[0]?"":"s")),n.join(m))}var o=/^(b|B)$/,t={iec:{bits:["b","Kib","Mib","Gib","Tib","Pib","Eib","Zib","Yib"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},b={iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]};e.partial=function(i){return function(o){return e(o,i)}},"undefined"!=typeof exports?module.exports=e:"function"==typeof define&&define.amd?define(function(){return e}):i.filesize=e}("undefined"!=typeof window?window:global); + +function rowCount(){ + var output$ = $('#row-count'); + if(!output$.length) + return; + + var tbody$ = $('#tbody'), + nRows = tbody$.find('tr').length, + compacted = tbody$.find('tr.hide').length, + compactedFiltered = tbody$.find('tr.filtered.hide').length, + filtered = tbody$.find('tr.filtered').length; + output$.text((filtered + ? nRows - (filtered + compacted - compactedFiltered) + ' / ' + nRows + ' filtered' + : nRows) + (1 === nRows ? ' row' : ' rows')); +} + +$(document).ready(function() { + + var extraction = {0: function(node) { + var dataSort = $(node).find('div[data-sort]').attr('data-sort') + || $(node).find('span[data-sort]').attr('data-sort'); + return !dataSort ? dataSort : dataSort.toLowerCase();}}, + tbody$ = $('#tbody'), + headers = {}, + layoutName = '' + $.SickGear.history.layoutName; + + if ('detailed' === layoutName) { + + jQuery.extend(extraction, { + 4: function (node) { + return $(node).find('span').text().toLowerCase(); + } + }); + + jQuery.extend(headers, {4: {sorter: 'quality'}}); + + } else if ('compact' === layoutName) { + + jQuery.extend(extraction, { + 1: function (node) { + return $(node).find('span[data-sort]').attr('data-sort').toLowerCase(); + }, + 2: function (node) { + return $(node).attr('provider').toLowerCase(); + }, + 5: function (node) { + return $(node).attr('quality').toLowerCase(); + } + }); + + var disable = {sorter: !1}, qualSort = {sorter: 'quality'}; + jQuery.extend(headers, $.SickGear.history.useSubtitles ? {4: disable, 5: qualSort} : {3: disable, 4: qualSort}); + + } else if (-1 !== layoutName.indexOf('watched')) { + + jQuery.extend(extraction, { + 3: function(node) { + return $(node).find('span[data-sort]').attr('data-sort'); + }, + 5: function(node) { + return $(node).find('span[data-sort]').attr('data-sort'); + }, + 6: function (node) { + return $(node).find('input:checked').length; + } + }); + + jQuery.extend(headers, {4: {sorter: 'quality'}}); + + rowCount(); + } else if (-1 !== layoutName.indexOf('compact_stats')) { + jQuery.extend(extraction, { + 3: function (node) { + return $(node).find('div[data-sort]').attr('data-sort'); + } + }); + + } + + var isWatched = -1 !== $('select[name="HistoryLayout"]').val().indexOf('watched'), + options = { + widgets: ['zebra', 'filter'], + widgetOptions : { + filter_hideEmpty: !0, filter_matchType : {'input': 'match', 'select': 'match'}, + filter_resetOnEsc: !0, filter_saveFilters: !0, filter_searchDelay: 300 + }, + sortList: isWatched ? [[1, 1], [0, 1]] : [0, 1], + textExtraction: extraction, + headers: headers}, + stateLayoutDate = function(table$, glyph$){table$.toggleClass('event-age');glyph$.toggleClass('age date');}; + + if(isWatched){ + jQuery.extend(options, { + selectorSort: '.tablesorter-header-inside', + headerTemplate: '
{content}{icon}
', + onRenderTemplate: function(index, template){ + if(0 === index){ + template = '' + + template; + } + return template; + }, + onRenderHeader: function(){ + var table$ = $('#history-table'), glyph$ = $('#watched-date'); + if($.tablesorter.storage(table$, 'isLayoutAge')){ + stateLayoutDate(table$, glyph$); + } + $(this).find('#watched-date').on('click', function(){ + stateLayoutDate(table$, glyph$); + $.tablesorter.storage(table$, 'isLayoutAge', table$.hasClass('event-age')); + return !1; + }); + } + }); + } + + $('#history-table').tablesorter(options).bind('filterEnd', function(){ + rowCount(); + }); + + $('#limit').change(function(){ + window.location.href = $.SickGear.Root + '/history/?limit=' + $(this).val() + }); + + $('#show-watched-help').click(function () { + $('#watched-help').fadeToggle('fast', 'linear'); + $.get($.SickGear.Root + '/history/toggle_help'); + }); + + var addQTip = (function(){ + $(this).css('cursor', 'help'); + $(this).qtip({ + show: {solo:true}, + position: {viewport:$(window), my:'left center', adjust:{y: -10, x: 2}}, + style: {tip: {corner:true, method:'polygon'}, classes:'qtip-dark qtip-rounded qtip-shadow'} + }); + }); + $('.add-qtip').each(addQTip); + + $.SickGear.sumChecked = (function(){ + var dedupe = [], sum = 0, output; + + $('.del-check:checked').each(function(){ + if ($(this).closest('tr').find('.tvShow .strike-deleted').length) + return; + var pathFile = $(this).closest('tr').attr('data-file'); + if (-1 === jQuery.inArray(pathFile, dedupe)) { + dedupe.push(pathFile); + output = $(this).closest('td').prev('td.size').find('span[data-sort]').attr('data-sort'); + sum = sum + parseInt(output, 10); + } + }); + $('#del-watched').attr('disabled', !dedupe.length && !$('#tbody').find('tr').find('.tvShow .strike-deleted').length); + + output = filesize(sum, {symbols: {B: 'Bytes'}}); + $('#sum-size').text(/\s(MB)$/.test(output) ? filesize(sum, {round:1}) + : /^1\sB/.test(output) ? output.replace('Bytes', 'Byte') : output); + }); + $.SickGear.sumChecked(); + + var className='.del-check', lastCheck = null, check, found; + tbody$.on('click', className, function(ev){ + if(!lastCheck || !ev.shiftKey){ + lastCheck = this; + } else { + check = this; found = 0; + $('#tbody').find('> tr:visible').find(className).each(function(){ + if (2 === found) + return !1; + if (1 === found) + this.checked = lastCheck.checked; + found += (1 && (this === check || this === lastCheck)); + }); + } + $(this).closest('table').trigger('update'); + $.SickGear.sumChecked(); + }); + + $('.shows-less').click(function(){ + var table$ = $(this).nextAll('table:first'); + table$ = table$.length ? table$ : $(this).parent().nextAll('table:first'); + table$.hide(); + $(this).hide(); + $(this).prevAll('input:first').show(); + }); + $('.shows-more').click(function(){ + var table$ = $(this).nextAll('table:first'); + table$ = table$.length ? table$ : $(this).parent().nextAll('table:first'); + table$.show(); + $(this).hide(); + $(this).nextAll('input:first').show(); + }); + + $('.provider-retry').click(function () { + $(this).addClass('disabled'); + var match = $(this).attr('id').match(/^(.+)-btn-retry$/); + $.ajax({ + url: $.SickGear.Root + '/manage/manageSearches/retryProvider?provider=' + match[1], + type: 'GET', + complete: function () { + window.location.reload(true); + } + }); + }); + + $('.provider-failures').tablesorter({widgets : ['zebra'], + headers : { 0:{sorter:!1}, 1:{sorter:!1}, 2:{sorter:!1}, 3:{sorter:!1}, 4:{sorter:!1}, 5:{sorter:!1} } + }); + + $('.provider-fail-parent-toggle').click(function(){ + $(this).closest('tr').nextUntil('tr:not(.tablesorter-childRow)').find('td').toggle(); + return !1; + }); + + // Make table cell focusable + // http://css-tricks.com/simple-css-row-column-highlighting/ + var focus$ = $('.focus-highlight'); + if (focus$.length){ + focus$.find('td, th') + .attr('tabindex', '1') + // add touch device support + .on('touchstart', function(){ + $(this).focus(); + }); + } +}); diff --git a/gui/slick/js/manageSearches.js b/gui/slick/js/manageSearches.js index e0ae9f71..1d563c82 100644 --- a/gui/slick/js/manageSearches.js +++ b/gui/slick/js/manageSearches.js @@ -34,37 +34,4 @@ $(function(){ $(this).hide(); $(this).nextAll('input:first').show(); }); - $('.provider-retry').click(function () { - $(this).addClass('disabled'); - var match = $(this).attr('id').match(/^(.+)-btn-retry$/); - $.ajax({ - url: sbRoot + '/manage/manageSearches/retryProvider?provider=' + match[1], - type: 'GET', - complete: function () { - window.location.reload(true); - } - }); - }); - - $('.provider-failures').tablesorter({widgets : ['zebra'], - headers : { 0:{sorter:!1}, 1:{sorter:!1}, 2:{sorter:!1}, 3:{sorter:!1}, 4:{sorter:!1}, 5:{sorter:!1} } - }); - - $('.provider-fail-parent-toggle').click(function(){ - $(this).closest('tr').nextUntil('tr:not(.tablesorter-childRow)').find('td').toggle(); - return !1; - }); - - // Make table cell focusable - // http://css-tricks.com/simple-css-row-column-highlighting/ - var focus$ = $('.focus-highlight'); - if (focus$.length){ - focus$.find('td, th') - .attr('tabindex', '1') - // add touch device support - .on('touchstart', function(){ - $(this).focus(); - }); - } - }); diff --git a/gui/slick/js/plot.ly/numeric/1.2.6/numeric.min.js b/gui/slick/js/plot.ly/numeric/1.2.6/numeric.min.js new file mode 100644 index 00000000..b61b2d3e --- /dev/null +++ b/gui/slick/js/plot.ly/numeric/1.2.6/numeric.min.js @@ -0,0 +1,3 @@ +"use strict";var numeric=typeof exports=="undefined"?function(){}:exports;typeof global!="undefined"&&(global.numeric=numeric),numeric.version="1.2.6",numeric.bench=function(t,n){var r,i,s,o;typeof n=="undefined"&&(n=15),s=.5,r=new Date;for(;;){s*=2;for(o=s;o>3;o-=4)t(),t(),t(),t();while(o>0)t(),o--;i=new Date;if(i-r>n)break}for(o=s;o>3;o-=4)t(),t(),t(),t();while(o>0)t(),o--;return i=new Date,1e3*(3*s-1)/(i-r)},numeric._myIndexOf=function(t){var n=this.length,r;for(r=0;rnumeric.largeArray)return r.push("...Large Array..."),!0;var f=!1;r.push("[");for(t=0;t0&&(r.push(","),f&&r.push("\n ")),f=i(e[t]);return r.push("]"),!0}r.push("{");var f=!1;for(t in e)e.hasOwnProperty(t)&&(f&&r.push(",\n"),f=!0,r.push(t),r.push(": \n"),i(e[t]));return r.push("}"),!0}var r=[];return i(t),r.join("")},numeric.parseDate=function(t){function n(e){if(typeof e=="string")return Date.parse(e.replace(/-/g,"/"));if(e instanceof Array){var t=[],r;for(r=0;r0){s[f]=[];for(r=0;r>2,u=((r&3)<<4)+(i>>4),a=((i&15)<<2)+(s>>6),f=s&63,n+1>=t?a=f=64:n+2>=t&&(f=64),c+=l.charAt(o)+l.charAt(u)+l.charAt(a)+l.charAt(f);return c}function r(e,t,n){typeof t=="undefined"&&(t=0),typeof n=="undefined"&&(n=e.length);var r=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],i=-1,s=0,o=e.length,u;for(u=t;u>>8^r[s];return i^-1}var i=t[0].length,s=t[0][0].length,o,u,a,f,l,c,h,p,d,v,m,g=[137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,s>>24&255,s>>16&255,s>>8&255,s&255,i>>24&255,i>>16&255,i>>8&255,i&255,8,2,0,0,0,-1,-2,-3,-4,-5,-6,-7,-8,73,68,65,84,8,29];m=r(g,12,29),g[29]=m>>24&255,g[30]=m>>16&255,g[31]=m>>8&255,g[32]=m&255,o=1,u=0;for(p=0;p>8&255,g.push(c),g.push(h),g.push(~c&255),g.push(~h&255),p===0&&g.push(0);for(d=0;d255?c=255:c<0?c=0:c=Math.round(c),o=(o+c)%65521,u=(u+o)%65521,g.push(c);g.push(0)}return v=(u<<16)+o,g.push(v>>24&255),g.push(v>>16&255),g.push(v>>8&255),g.push(v&255),l=g.length-41,g[33]=l>>24&255,g[34]=l>>16&255,g[35]=l>>8&255,g[36]=l&255,m=r(g,37),g.push(m>>24&255),g.push(m>>16&255),g.push(m>>8&255),g.push(m&255),g.push(0),g.push(0),g.push(0),g.push(0),g.push(73),g.push(69),g.push(78),g.push(68),g.push(174),g.push(66),g.push(96),g.push(130),"data:image/png;base64,"+n(g)},numeric._dim=function(t){var n=[];while(typeof t=="object")n.push(t.length),t=t[0];return n},numeric.dim=function(t){var n,r;if(typeof t=="object")return n=t[0],typeof n=="object"?(r=n[0],typeof r=="object"?numeric._dim(t):[t.length,n.length]):[t.length];return[]},numeric.mapreduce=function(t,n){return Function("x","accum","_s","_k",'if(typeof accum === "undefined") accum = '+n+";\n"+'if(typeof x === "number") { var xi = x; '+t+"; return accum; }\n"+'if(typeof _s === "undefined") _s = numeric.dim(x);\n'+'if(typeof _k === "undefined") _k = 0;\n'+"var _n = _s[_k];\n"+"var i,xi;\n"+"if(_k < _s.length-1) {\n"+" for(i=_n-1;i>=0;i--) {\n"+" accum = arguments.callee(x[i],accum,_s,_k+1);\n"+" }"+" return accum;\n"+"}\n"+"for(i=_n-1;i>=1;i-=2) { \n"+" xi = x[i];\n"+" "+t+";\n"+" xi = x[i-1];\n"+" "+t+";\n"+"}\n"+"if(i === 0) {\n"+" xi = x[i];\n"+" "+t+"\n"+"}\n"+"return accum;")},numeric.mapreduce2=function(t,n){return Function("x","var n = x.length;\nvar i,xi;\n"+n+";\n"+"for(i=n-1;i!==-1;--i) { \n"+" xi = x[i];\n"+" "+t+";\n"+"}\n"+"return accum;")},numeric.same=function same(e,t){var n,r;if(e instanceof Array&&t instanceof Array){r=e.length;if(r!==t.length)return!1;for(n=0;n=0;o-=2)s[o+1]=n,s[o]=n;return o===-1&&(s[0]=n),s}for(o=i-1;o>=0;o--)s[o]=numeric.rep(t,n,r+1);return s},numeric.dotMMsmall=function(t,n){var r,i,s,o,u,a,f,l,c,h,p,d,v,m;o=t.length,u=n.length,a=n[0].length,f=Array(o);for(r=o-1;r>=0;r--){l=Array(a),c=t[r];for(s=a-1;s>=0;s--){h=c[u-1]*n[u-1][s];for(i=u-2;i>=1;i-=2)p=i-1,h+=c[i]*n[i][s]+c[p]*n[p][s];i===0&&(h+=c[0]*n[0][s]),l[s]=h}f[r]=l}return f},numeric._getCol=function(t,n,r){var i=t.length,s;for(s=i-1;s>0;--s)r[s]=t[s][n],--s,r[s]=t[s][n];s===0&&(r[0]=t[0][n])},numeric.dotMMbig=function(t,n){var r=numeric._getCol,i=n.length,s=Array(i),o=t.length,u=n[0].length,a=new Array(o),f,l=numeric.dotVV,c,h,p,d;--i,--o;for(c=o;c!==-1;--c)a[c]=Array(u);--u;for(c=u;c!==-1;--c){r(n,c,s);for(h=o;h!==-1;--h)d=0,f=t[h],a[h][c]=l(f,s)}return a},numeric.dotMV=function(t,n){var r=t.length,i=n.length,s,o=Array(r),u=numeric.dotVV;for(s=r-1;s>=0;s--)o[s]=u(t[s],n);return o},numeric.dotVM=function(t,n){var r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E;o=t.length,u=n[0].length,f=Array(u);for(s=u-1;s>=0;s--){h=t[o-1]*n[o-1][s];for(i=o-2;i>=1;i-=2)p=i-1,h+=t[i]*n[i][s]+t[p]*n[p][s];i===0&&(h+=t[0]*n[0][s]),f[s]=h}return f},numeric.dotVV=function(t,n){var r,i=t.length,s,o=t[i-1]*n[i-1];for(r=i-2;r>=1;r-=2)s=r-1,o+=t[r]*n[r]+t[s]*n[s];return r===0&&(o+=t[0]*n[0]),o},numeric.dot=function(t,n){var r=numeric.dim;switch(r(t).length*1e3+r(n).length){case 2002:return n.length<10?numeric.dotMMsmall(t,n):numeric.dotMMbig(t,n);case 2001:return numeric.dotMV(t,n);case 1002:return numeric.dotVM(t,n);case 1001:return numeric.dotVV(t,n);case 1e3:return numeric.mulVS(t,n);case 1:return numeric.mulSV(t,n);case 0:return t*n;default:throw new Error("numeric.dot only works on vectors and matrices")}},numeric.diag=function(t){var n,r,i,s=t.length,o=Array(s),u;for(n=s-1;n>=0;n--){u=Array(s),r=n+2;for(i=s-1;i>=r;i-=2)u[i]=0,u[i-1]=0;i>n&&(u[i]=0),u[n]=t[n];for(i=n-1;i>=1;i-=2)u[i]=0,u[i-1]=0;i===0&&(u[0]=0),o[n]=u}return o},numeric.getDiag=function(e){var t=Math.min(e.length,e[0].length),n,r=Array(t);for(n=t-1;n>=1;--n)r[n]=e[n][n],--n,r[n]=e[n][n];return n===0&&(r[0]=e[0][0]),r},numeric.identity=function(t){return numeric.diag(numeric.rep([t],1))},numeric.pointwise=function(t,n,r){typeof r=="undefined"&&(r="");var i=[],s,o=/\[i\]$/,u,a="",f=!1;for(s=0;s=0;i--) ret[i] = arguments.callee("+t.join(",")+",_s,_k+1);\n"+" return ret;\n"+"}\n"+r+"\n"+"for(i=_n-1;i!==-1;--i) {\n"+" "+n+"\n"+"}\n"+"return ret;",Function.apply(null,i)},numeric.pointwise2=function(t,n,r){typeof r=="undefined"&&(r="");var i=[],s,o=/\[i\]$/,u,a="",f=!1;for(s=0;s=0;s--)_biforeach(typeof e=="object"?e[s]:e,typeof t=="object"?t[s]:t,n,r+1,i)},numeric._biforeach2=function _biforeach2(e,t,n,r,i){if(r===n.length-1)return i(e,t);var s,o=n[r],u=Array(o);for(s=o-1;s>=0;--s)u[s]=_biforeach2(typeof e=="object"?e[s]:e,typeof t=="object"?t[s]:t,n,r+1,i);return u},numeric._foreach=function _foreach(e,t,n,r){if(n===t.length-1){r(e);return}var i,s=t[n];for(i=s-1;i>=0;i--)_foreach(e[i],t,n+1,r)},numeric._foreach2=function _foreach2(e,t,n,r){if(n===t.length-1)return r(e);var i,s=t[n],o=Array(s);for(i=s-1;i>=0;i--)o[i]=_foreach2(e[i],t,n+1,r);return o},numeric.ops2={add:"+",sub:"-",mul:"*",div:"/",mod:"%",and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">=",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"},numeric.opseq={addeq:"+=",subeq:"-=",muleq:"*=",diveq:"/=",modeq:"%=",lshifteq:"<<=",rshifteq:">>=",rrshifteq:">>>=",bandeq:"&=",boreq:"|=",bxoreq:"^="},numeric.mathfuns=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan","isNaN","isFinite"],numeric.mathfuns2=["atan2","pow","max","min"],numeric.ops1={neg:"-",not:"!",bnot:"~",clone:""},numeric.mapreducers={any:["if(xi) return true;","var accum = false;"],all:["if(!xi) return false;","var accum = true;"],sum:["accum += xi;","var accum = 0;"],prod:["accum *= xi;","var accum = 1;"],norm2Squared:["accum += xi*xi;","var accum = 0;"],norminf:["accum = max(accum,abs(xi));","var accum = 0, max = Math.max, abs = Math.abs;"],norm1:["accum += abs(xi)","var accum = 0, abs = Math.abs;"],sup:["accum = max(accum,xi);","var accum = -Infinity, max = Math.max;"],inf:["accum = min(accum,xi);","var accum = Infinity, min = Math.min;"]},function(){var e,t;for(e=0;em&&(v=h,m=d);a=o[v],o[v]=o[p],o[p]=a,c=f[v],f[v]=f[p],f[p]=c,t=a[p];for(d=p;d!==s;++d)a[d]/=t;for(d=s-1;d!==-1;--d)c[d]/=t;for(h=i-1;h!==-1;--h)if(h!==p){u=o[h],l=f[h],t=u[p];for(d=p+1;d!==s;++d)u[d]-=a[d]*t;for(d=s-1;d>0;--d)l[d]-=c[d]*t,--d,l[d]-=c[d]*t;d===0&&(l[0]-=c[0]*t)}}return f},numeric.det=function(t){var n=numeric.dim(t);if(n.length!==2||n[0]!==n[1])throw new Error("numeric: det() only works on square matrices");var r=n[0],i=1,s,o,u,a=numeric.clone(t),f,l,c,h,p,d,v;for(o=0;oMath.abs(a[u][o])&&(u=s);u!==o&&(h=a[u],a[u]=a[o],a[o]=h,i*=-1),f=a[o];for(s=o+1;s=1;n-=2){a=t[n],u=t[n-1];for(r=s-1;r>=1;--r)f=o[r],f[n]=a[r],f[n-1]=u[r],--r,f=o[r],f[n]=a[r],f[n-1]=u[r];r===0&&(f=o[0],f[n]=a[0],f[n-1]=u[0])}if(n===0){u=t[0];for(r=s-1;r>=1;--r)o[r][0]=u[r],--r,o[r][0]=u[r];r===0&&(o[0][0]=u[0])}return o},numeric.negtranspose=function(t){var n,r,i=t.length,s=t[0].length,o=Array(s),u,a,f;for(r=0;r=1;n-=2){a=t[n],u=t[n-1];for(r=s-1;r>=1;--r)f=o[r],f[n]=-a[r],f[n-1]=-u[r],--r,f=o[r],f[n]=-a[r],f[n-1]=-u[r];r===0&&(f=o[0],f[n]=-a[0],f[n-1]=-u[0])}if(n===0){u=t[0];for(r=s-1;r>=1;--r)o[r][0]=-u[r],--r,o[r][0]=-u[r];r===0&&(o[0][0]=-u[0])}return o},numeric._random=function _random(e,t){var n,r=e[t],i=Array(r),s;if(t===e.length-1){s=Math.random;for(n=r-1;n>=1;n-=2)i[n]=s(),i[n-1]=s();return n===0&&(i[0]=s()),i}for(n=r-1;n>=0;n--)i[n]=_random(e,t+1);return i},numeric.random=function(t){return numeric._random(t,0)},numeric.norm2=function(t){return Math.sqrt(numeric.norm2Squared(t))},numeric.linspace=function(t,n,r){typeof r=="undefined"&&(r=Math.max(Math.round(n-t)+1,1));if(r<2)return r===1?[t]:[];var i,s=Array(r);r--;for(i=r;i>=0;i--)s[i]=(i*n+(r-i)*t)/r;return s},numeric.getBlock=function(t,n,r){function s(e,t){var o,u=n[t],a=r[t]-u,f=Array(a);if(t===i.length-1){for(o=a;o>=0;o--)f[o]=e[o+u];return f}for(o=a;o>=0;o--)f[o]=s(e[o+u],t+1);return f}var i=numeric.dim(t);return s(t,0)},numeric.setBlock=function(t,n,r,i){function o(e,t,i){var u,a=n[i],f=r[i]-a;if(i===s.length-1)for(u=f;u>=0;u--)e[u+a]=t[u];for(u=f;u>=0;u--)o(e[u+a],t[u],i+1)}var s=numeric.dim(t);return o(t,i,0),t},numeric.getRange=function(t,n,r){var i=n.length,s=r.length,o,u,a=Array(i),f,l;for(o=i-1;o!==-1;--o){a[o]=Array(s),f=a[o],l=t[n[o]];for(u=s-1;u!==-1;--u)f[u]=l[r[u]]}return a},numeric.blockMatrix=function(t){var n=numeric.dim(t);if(n.length<4)return numeric.blockMatrix([t]);var r=n[0],i=n[1],s,o,u,a,f;s=0,o=0;for(u=0;u=0;f--){a=Array(o),c=t[f];for(l=o-1;l>=3;--l)a[l]=c*n[l],--l,a[l]=c*n[l],--l,a[l]=c*n[l],--l,a[l]=c*n[l];while(l>=0)a[l]=c*n[l],--l;u[f]=a}return u},numeric.T=function(t,n){this.x=t,this.y=n},numeric.t=function(t,n){return new numeric.T(t,n)},numeric.Tbinop=function(t,n,r,i,s){var o=numeric.indexOf;if(typeof s!="string"){var u;s="";for(u in numeric)numeric.hasOwnProperty(u)&&(t.indexOf(u)>=0||n.indexOf(u)>=0||r.indexOf(u)>=0||i.indexOf(u)>=0)&&u.length>1&&(s+="var "+u+" = numeric."+u+";\n")}return Function(["y"],"var x = this;\nif(!(y instanceof numeric.T)) { y = new numeric.T(y); }\n"+s+"\n"+"if(x.y) {"+" if(y.y) {"+" return new numeric.T("+i+");\n"+" }\n"+" return new numeric.T("+r+");\n"+"}\n"+"if(y.y) {\n"+" return new numeric.T("+n+");\n"+"}\n"+"return new numeric.T("+t+");\n")},numeric.T.prototype.add=numeric.Tbinop("add(x.x,y.x)","add(x.x,y.x),y.y","add(x.x,y.x),x.y","add(x.x,y.x),add(x.y,y.y)"),numeric.T.prototype.sub=numeric.Tbinop("sub(x.x,y.x)","sub(x.x,y.x),neg(y.y)","sub(x.x,y.x),x.y","sub(x.x,y.x),sub(x.y,y.y)"),numeric.T.prototype.mul=numeric.Tbinop("mul(x.x,y.x)","mul(x.x,y.x),mul(x.x,y.y)","mul(x.x,y.x),mul(x.y,y.x)","sub(mul(x.x,y.x),mul(x.y,y.y)),add(mul(x.x,y.y),mul(x.y,y.x))"),numeric.T.prototype.reciprocal=function(){var t=numeric.mul,n=numeric.div;if(this.y){var r=numeric.add(t(this.x,this.x),t(this.y,this.y));return new numeric.T(n(this.x,r),n(numeric.neg(this.y),r))}return new T(n(1,this.x))},numeric.T.prototype.div=function div(e){e instanceof numeric.T||(e=new numeric.T(e));if(e.y)return this.mul(e.reciprocal());var div=numeric.div;return this.y?new numeric.T(div(this.x,e.x),div(this.y,e.x)):new numeric.T(div(this.x,e.x))},numeric.T.prototype.dot=numeric.Tbinop("dot(x.x,y.x)","dot(x.x,y.x),dot(x.x,y.y)","dot(x.x,y.x),dot(x.y,y.x)","sub(dot(x.x,y.x),dot(x.y,y.y)),add(dot(x.x,y.y),dot(x.y,y.x))"),numeric.T.prototype.transpose=function(){var t=numeric.transpose,n=this.x,r=this.y;return r?new numeric.T(t(n),t(r)):new numeric.T(t(n))},numeric.T.prototype.transjugate=function(){var t=numeric.transpose,n=this.x,r=this.y;return r?new numeric.T(t(n),numeric.negtranspose(r)):new numeric.T(t(n))},numeric.Tunop=function(t,n,r){return typeof r!="string"&&(r=""),Function("var x = this;\n"+r+"\n"+"if(x.y) {"+" "+n+";\n"+"}\n"+t+";\n")},numeric.T.prototype.exp=numeric.Tunop("return new numeric.T(ex)","return new numeric.T(mul(cos(x.y),ex),mul(sin(x.y),ex))","var ex = numeric.exp(x.x), cos = numeric.cos, sin = numeric.sin, mul = numeric.mul;"),numeric.T.prototype.conj=numeric.Tunop("return new numeric.T(x.x);","return new numeric.T(x.x,numeric.neg(x.y));"),numeric.T.prototype.neg=numeric.Tunop("return new numeric.T(neg(x.x));","return new numeric.T(neg(x.x),neg(x.y));","var neg = numeric.neg;"),numeric.T.prototype.sin=numeric.Tunop("return new numeric.T(numeric.sin(x.x))","return x.exp().sub(x.neg().exp()).div(new numeric.T(0,2));"),numeric.T.prototype.cos=numeric.Tunop("return new numeric.T(numeric.cos(x.x))","return x.exp().add(x.neg().exp()).div(2);"),numeric.T.prototype.abs=numeric.Tunop("return new numeric.T(numeric.abs(x.x));","return new numeric.T(numeric.sqrt(numeric.add(mul(x.x,x.x),mul(x.y,x.y))));","var mul = numeric.mul;"),numeric.T.prototype.log=numeric.Tunop("return new numeric.T(numeric.log(x.x));","var theta = new numeric.T(numeric.atan2(x.y,x.x)), r = x.abs();\nreturn new numeric.T(numeric.log(r.x),theta.x);"),numeric.T.prototype.norm2=numeric.Tunop("return numeric.norm2(x.x);","var f = numeric.norm2Squared;\nreturn Math.sqrt(f(x.x)+f(x.y));"),numeric.T.prototype.inv=function(){var t=this;if(typeof t.y=="undefined")return new numeric.T(numeric.inv(t.x));var n=t.x.length,r,i,s,o=numeric.identity(n),u=numeric.rep([n,n],0),a=numeric.clone(t.x),f=numeric.clone(t.y),l,c,h,p,d,v,m,g,r,i,s,y,b,w,E,S,x,T;for(r=0;ry&&(s=i,y=b);s!==r&&(T=a[r],a[r]=a[s],a[s]=T,T=f[r],f[r]=f[s],f[s]=T,T=o[r],o[r]=o[s],o[s]=T,T=u[r],u[r]=u[s],u[s]=T),l=a[r],c=f[r],d=o[r],v=u[r],w=l[r],E=c[r];for(i=r+1;i0;r--){d=o[r],v=u[r];for(i=r-1;i>=0;i--){m=o[i],g=u[i],w=a[i][r],E=f[i][r];for(s=n-1;s>=0;s--)S=d[s],x=v[s],m[s]-=w*S-E*x,g[s]-=w*x+E*S}}return new numeric.T(o,u)},numeric.T.prototype.get=function(t){var n=this.x,r=this.y,i=0,s,o=t.length;if(r){while(i=0?1:-1,i=r*numeric.norm2(t);n[0]+=i;var s=numeric.norm2(n);if(s===0)throw new Error("eig: internal error");return numeric.div(n,s)},numeric.toUpperHessenberg=function(t){var n=numeric.dim(t);if(n.length!==2||n[0]!==n[1])throw new Error("numeric: toUpperHessenberg() only works on square matrices");var r=n[0],i,s,o,u,a,f=numeric.clone(t),l,c,h,p,d=numeric.identity(r),v;for(s=0;s0){a=numeric.house(u),l=numeric.getBlock(f,[s+1,s],[r-1,r-1]),c=numeric.tensor(a,numeric.dot(a,l));for(i=s+1;i=4*c){var k,L;k=.5*(h+Math.sqrt(h*h-4*c)),L=.5*(h-Math.sqrt(h*h-4*c)),p=numeric.add(numeric.sub(numeric.dot(p,p),numeric.mul(p,k+L)),numeric.diag(numeric.rep([3],k*L)))}else p=numeric.add(numeric.sub(numeric.dot(p,p),numeric.mul(p,h)),numeric.diag(numeric.rep([3],c)));s=[p[0][0],p[1][0],p[2][0]],o=numeric.house(s),g=[e[0],e[1],e[2]],y=numeric.tensor(o,numeric.dot(o,g));for(w=0;w<3;w++){m=e[w],b=y[w];for(S=0;S=0?(w<0?x=-0.5*(w-A(S)):x=-0.5*(w+A(S)),k=(m-x)*(m-x)+g*g,L=y*y+(b-x)*(b-x),k>L?(k=A(k),N=(m-x)/k,C=g/k):(L=A(L),N=y/L,C=(b-x)/L),p=new s([[C,-N],[N,C]]),h.setRows(u,v,p.dot(h.getRows(u,v)))):(x=-0.5*w,T=.5*A(-S),k=(m-x)*(m-x)+g*g,L=y*y+(b-x)*(b-x),k>L?(k=A(k+T*T),N=(m-x)/k,C=g/k,x=0,T/=k):(L=A(L+T*T),N=y/L,C=(b-x)/L,x=T/L,T=0),p=new s([[C,-N],[N,C]],[[x, +T],[T,-x]]),h.setRows(u,v,p.dot(h.getRows(u,v))))}}var O=h.dot(t).dot(h.transjugate()),o=t.length,M=numeric.T.identity(o);for(v=0;v0)for(a=v-1;a>=0;a--){var _=O.get([a,a]),D=O.get([v,v]);if(!numeric.neq(_.x,D.x)&&!numeric.neq(_.y,D.y)){M.setRow(v,M.getRow(a));continue}x=O.getRow(a).getBlock([a],[v-1]),T=M.getRow(v).getBlock([a],[v-1]),M.set([v,a],O.get([a,v]).neg().sub(x.dot(T)).div(_.sub(D)))}for(v=0;v=u.length)u[u.length]=0;i[o]!==0&&u[o]++}}var r=u.length,a=Array(r+1);a[0]=0;for(s=0;s=d){s[f]=h[u];if(u===0)return;++f,--u,p=l[u],d=c[u]}else a=o[r[p]],i[a]===0?(i[a]=1,l[u]=p,++u,h[u]=a,p=n[a],c[u]=d=n[a+1]):++p},numeric.ccsLPSolve=function(t,n,r,i,s,o,u){var a=t[0],f=t[1],l=t[2],c=a.length-1,h=0,p=n[0],d=n[1],v=n[2],m,g,y,b,w,E,S,x,T,N,C,k;g=p[s],y=p[s+1],i.length=0;for(m=g;mb&&(w=m,b=E)}C(h[d])=v){s[l]=o[p[a]];if(a===0)return;++l,--a,d=c[a],v=h[a]}else f=r[d],i[f]===0?(i[f]=1,c[a]=d,++a,p[a]=f,f=o[f],d=n[f],h[a]=v=n[f+1]):++d}},numeric.ccsLPSolve0=function(t,n,r,i,s,o,u,a){var f=t[0],l=t[1],c=t[2],h=f.length-1,p=0,d=n[0],v=n[1],m=n[2],g,y,b,w,E,S,x,T,N,C,k,L;y=d[s],b=d[s+1],i.length=0;for(g=y;gb&&(w=m,b=E)}C(h[k[d]])t[n]&&(t[n]=e.length);var r;for(r in e)e.hasOwnProperty(r)&&dim(e[r],t,n+1);return t},numeric.sclone=function clone(e,t,n){typeof t=="undefined"&&(t=0),typeof n=="undefined"&&(n=numeric.sdim(e).length);var r,i=Array(e.length);if(t===n-1){for(r in e)e.hasOwnProperty(r)&&(i[r]=e[r]);return i}for(r in e)e.hasOwnProperty(r)&&(i[r]=clone(e[r],t+1,n));return i},numeric.sdiag=function(t){var n=t.length,r,i=Array(n),s,o,u;for(r=n-1;r>=1;r-=2)s=r-1,i[r]=[],i[r][r]=t[r],i[s]=[],i[s][s]=t[s];return r===0&&(i[0]=[],i[0][0]=t[r]),i},numeric.sidentity=function(t){return numeric.sdiag(numeric.rep([t],1))},numeric.stranspose=function(t){var n=[],r=t.length,i,s,o;for(i in t){if(!t.hasOwnProperty(i))continue;o=t[i];for(s in o){if(!o.hasOwnProperty(s))continue;typeof n[s]!="object"&&(n[s]=[]),n[s][i]=o[s]}}return n},numeric.sLUP=function(t,n){throw new Error("The function numeric.sLUP had a bug in it and has been removed. Please use the new numeric.ccsLUP function instead.")},numeric.sdotMM=function(t,n){var r=t.length,i=n.length,s=numeric.stranspose(n),o=s.length,u,a,f,l,c,h,p=Array(r),d;for(f=r-1;f>=0;f--){d=[],u=t[f];for(c=o-1;c>=0;c--){h=0,a=s[c];for(l in u){if(!u.hasOwnProperty(l))continue;l in a&&(h+=u[l]*a[l])}h&&(d[c]=h)}p[f]=d}return p},numeric.sdotMV=function(t,n){var r=t.length,i,s,o,u=Array(r),a;for(s=r-1;s>=0;s--){i=t[s],a=0;for(o in i){if(!i.hasOwnProperty(o))continue;n[o]&&(a+=i[o]*n[o])}a&&(u[s]=a)}return u},numeric.sdotVM=function(t,n){var r,i,s,o,u=[],a;for(r in t){if(!t.hasOwnProperty(r))continue;s=n[r],o=t[r];for(i in s){if(!s.hasOwnProperty(i))continue;u[i]||(u[i]=0),u[i]+=o*s[i]}}return u},numeric.sdotVV=function(t,n){var r,i=0;for(r in t)t[r]&&n[r]&&(i+=t[r]*n[r]);return i},numeric.sdot=function(t,n){var r=numeric.sdim(t).length,i=numeric.sdim(n).length,s=r*1e3+i;switch(s){case 0:return t*n;case 1001:return numeric.sdotVV(t,n);case 2001:return numeric.sdotMV(t,n);case 1002:return numeric.sdotVM(t,n);case 2002:return numeric.sdotMM(t,n);default:throw new Error("numeric.sdot not implemented for tensors of order "+r+" and "+i)}},numeric.sscatter=function(t){var n=t[0].length,r,i,s,o=t.length,u=[],a;for(i=n-1;i>=0;--i){if(!t[o-1][i])continue;a=u;for(s=0;s=0;--i)t[i]=[];for(i=r;i>=0;--i)t[i].push(n[i]);t[r+1].push(s)}}else gather(s,t,n)}return n.length>r&&n.pop(),t},numeric.cLU=function(t){var n=t[0],r=t[1],i=t[2],s=n.length,o=0,u,a,f,l,c,h;for(u=0;uo&&(o=n[u]);o++;var p=Array(o),d=Array(o),v=numeric.rep([o],Infinity),m=numeric.rep([o],-Infinity),g,y,b;for(f=0;fm[u]&&(m[u]=a);for(u=0;um[u+1]&&(m[u+1]=m[u]);for(u=o-1;u>=1;u--)v[u]=0;v--){while(l[g]>v)s[v]-=c[g]*s[l[g]],g--;s[v]/=c[g],g--}return s},numeric.cgrid=function(t,n){typeof t=="number"&&(t=[t,t]);var r=numeric.rep(t,-1),i,s,o;if(typeof n!="function")switch(n){case"L":n=function(e,n){return e>=t[0]/2||nf&&(f=i[u]);f++,r=numeric.rep([f],0);for(u=0;u1)o=u((i+s)/2),n[o]<=t?i=o:s=o;return this._at(t,i)}var r=t.length,c,h=Array(r);for(c=r-1;c!==-1;--c)h[c]=this.at(t[c]);return h},numeric.Spline.prototype.diff=function(){var t=this.x,n=this.yl,r=this.yr,i=this.kl,s=this.kr,o=n.length,u,a,f,l=i,c=s,h=Array(o),p=Array(o),d=numeric.add,v=numeric.mul,m=numeric.div,g=numeric.sub;for(u=o-1;u!==-1;--u)a=t[u+1]-t[u],f=g(r[u+1],n[u]),h[u]=m(d(v(f,6),v(i[u],-4*a),v(s[u+1],-2*a)),a*a),p[u+1]=m(d(v(f,-6),v(i[u],2*a),v(s[u+1],4*a)),a*a);return new numeric.Spline(t,l,c,h,p)},numeric.Spline.prototype.roots=function(){function t(e){return e*e}function n(e,t,n,r,i){var s=n*2-(t-e),o=-r*2+(t-e),u=(i+1)*.5,a=u*(1-u);return(1-u)*e+u*t+s*a*(1-u)+o*a*u}var r=[],i=this.x,s=this.yl,o=this.yr,u=this.kl,a=this.kr;typeof s[0]=="number"&&(s=[s],o=[o],u=[u],a=[a]);var f=s.length,l=i.length-1,c,h,p,d,v,m,g,y,b,w,r=Array(f),E,S,x,T,N,C,k,L,A,O,M,_,D,P,H,B,j,F=Math.sqrt;for(c=0;c!==f;++c){g=s[c],y=o[c],b=u[c],w=a[c],E=[];for(h=0;h!==l;h++){h>0&&y[h]*g[h]<0&&E.push(i[h]),A=i[h+1]-i[h],O=i[h],T=g[h],N=y[h+1],S=b[h]/A,x=w[h+1]/A,L=t(S-x+3*(T-N))+12*x*T,C=x+3*T+2*S-3*N,k=3*(x+S+2*(T-N)),L<=0?(_=C/k,_>i[h]&&_i[h]&&_i[h]&&D0){H=B,_=D;continue}var I=0;for(;;){j=(_*B-D*H)/(_-D);if(j<=H||j>=B)break;P=this._at(j,h);if(P*D>0)B=j,D=P,I===-1&&(_*=.5),I=-1;else{if(!(P*_>0))break;H=j,_=P,I===1&&(D*=.5),I=1}}E.push(j),H=M[p+1],_=this._at(H,h)}D===0&&E.push(B)}r[c]=E}return typeof this.yl[0]=="number"?r[0]:r},numeric.spline=function(t,n,r,i){var s=t.length,o=[],u=[],a=[],f,l=numeric.sub,c=numeric.mul,h=numeric.add;for(f=s-2;f>=0;f--)u[f]=t[f+1]-t[f],a[f]=l(n[f+1],n[f]);if(typeof r=="string"||typeof i=="string")r=i="periodic";var p=[[],[],[]];switch(typeof r){case"undefined":o[0]=c(3/(u[0]*u[0]),a[0]),p[0].push(0,0),p[1].push(0,1),p[2].push(2/u[0],1/u[0]);break;case"string":o[0]=h(c(3/(u[s-2]*u[s-2]),a[s-2]),c(3/(u[0]*u[0]),a[0])),p[0].push(0,0,0),p[1].push(s-2,0,1),p[2].push(1/u[s-2],2/u[s-2]+2/u[0],1/u[0]);break;default:o[0]=r,p[0].push(0),p[1].push(0),p[2].push(1)}for(f=1;f20)throw new Error("Numerical gradient fails");u[o]=n[o]+N,a=t(u),u[o]=n[o]-N,f=t(u),u[o]=n[o];if(isNaN(a)||isNaN(f)){N/=16;continue}l[o]=(a-f)/(2*N),y=n[o]-N,b=n[o],w=n[o]+N,S=(a-i)/N,x=(i-f)/N,T=s(m(l[o]),m(i),m(a),m(f),m(y),m(b),m(w),1e-8),p=g(s(m(S-l[o]),m(x-l[o]),m(S-x))/T,N/T);if(!(p>v))break;N/=16}}return l},numeric.uncmin=function(t,n,r,i,s,o,u){var a=numeric.gradient;typeof u=="undefined"&&(u={}),typeof r=="undefined"&&(r=1e-8),typeof i=="undefined"&&(i=function(e){return a(t,e)}),typeof s=="undefined"&&(s=1e3),n=numeric.clone(n);var f=n.length,l=t(n),c,h;if(isNaN(l))throw new Error("uncmin: f(x0) is a NaN!");var p=Math.max,d=numeric.norm2;r=p(r,numeric.epsilon);var v,m,g,y=u.Hinv||numeric.identity(f),b=numeric.dot,w=numeric.inv,E=numeric.sub,S=numeric.add,x=numeric.tensor,T=numeric.div,N=numeric.mul,C=numeric.all,k=numeric.isFinite,L=numeric.neg,A=0,O,M,_,D,P,H,B,j,F,I,q,R,U="";m=i(n);while(A=.1*F*h||isNaN(c)){F*=.5,++A;continue}break}if(F*I1)i=s(.5*(n+r)),a[i]<=t?n=i:r=i;return this._at(t,n)},numeric.dopri=function(t,n,r,i,s,o,u){typeof s=="undefined"&&(s=1e-6),typeof o=="undefined"&&(o=1e3);var a=[t],f=[r],l=[i(t,r)],c,h,p,d,v,m,g=[],y=.2,b=[.075,.225],w=[44/45,-56/15,32/9],E=[19372/6561,-25360/2187,64448/6561,-212/729],S=[9017/3168,-355/33,46732/5247,49/176,-5103/18656],x=[35/384,0,500/1113,125/192,-2187/6784,11/84],T=[.10013431883002395,0,.3918321794184259,-0.02982460176594817,.05893268337240795,-0.04497888809104361,.023904308236133973],N=[.2,.3,.8,8/9,1,1],C=[-71/57600,0,71/16695,-71/1920,17253/339200,-22/525,.025],k=0,L,A,O=(n-t)/10,M=0,_=numeric.add,D=numeric.mul,P,H,B=Math.max,j=Math.min,F=Math.abs,I=numeric.norminf,q=Math.pow,R=numeric.any,U=numeric.lt,z=numeric.and,W=numeric.sub,X,V,$,J=new numeric.Dopri(a,f,l,g,-1,"");typeof u=="function"&&(X=u(t,r));while(tn&&(O=n-t),c=i(t+N[0]*O,_(r,D(y*O,l[k]))),h=i(t+N[1]*O,_(_(r,D(b[0]*O,l[k])),D(b[1]*O,c))),p=i(t+N[2]*O,_(_(_(r,D(w[0]*O,l[k])),D(w[1]*O,c)),D(w[2]*O,h))),d=i(t+N[3]*O,_(_(_(_(r,D(E[0]*O,l[k])),D(E[1]*O,c)),D(E[2]*O,h)),D(E[3]*O,p))),v=i(t+N[4]*O,_(_(_(_(_(r,D(S[0]*O,l[k])),D(S[1]*O,c)),D(S[2]*O,h)),D(S[3]*O,p)),D(S[4]*O,d))),P=_(_(_(_(_(r,D(l[k],O*x[0])),D(h,O*x[2])),D(p,O*x[3])),D(d,O*x[4])),D(v,O*x[5])),m=i(t+O,P),L=_(_(_(_(_(D(l[k],O*C[0]),D(h,O*C[2])),D(p,O*C[3])),D(d,O*C[4])),D(v,O*C[5])),D(m,O*C[6])),typeof L=="number"?H=F(L):H=I(L);if(H>s){O=.2*O*q(s/H,.25);if(t+O===t){J.msg="Step size became too small";break}continue}g[k]=_(_(_(_(_(_(r,D(l[k],O*T[0])),D(h,O*T[2])),D(p,O*T[3])),D(d,O*T[4])),D(v,O*T[5])),D(m,O*T[6])),++k,a[k]=t+O,f[k]=P,l[k]=m;if(typeof u=="function"){var K,Q=t,G=t+.5*O,Y;V=u(G,g[k-1]),$=z(U(X,0),U(0,V)),R($)||(Q=G,G=t+O,X=V,V=u(G,P),$=z(U(X,0),U(0,V)));if(R($)){var Z,et,tt,nt,rt=0,it=1,st=1;for(;;){if(typeof X=="number")Y=(st*V*Q-it*X*G)/(st*V-it*X);else{Y=G;for(A=X.length-1;A!==-1;--A)X[A]<0&&V[A]>0&&(Y=j(Y,(st*V[A]*Q-it*X[A]*G)/(st*V[A]-it*X[A])))}if(Y<=Q||Y>=G)break;K=J._at(Y,k-1),nt=u(Y,K),tt=z(U(X,0),U(0,nt)),R(tt)?(G=Y,V=nt,$=tt,st=1,rt===-1?it*=.5:it=1,rt=-1):(Q=Y,X=nt,it=1,rt===1?st*=.5:st=1,rt=1)}return P=J._at(.5*(t+Y),k-1),J.f[k]=i(Y,K),J.x[k]=Y,J.y[k]=K,J.ymid[k-1]=P,J.events=$,J.iterations=M,J}}t+=O,r=P,X=V,O=j(.8*O*q(s/H,.25),4*O)}return J.iterations=M,J},numeric.LU=function(e,t){t=t||!1;var n=Math.abs,r,i,s,o,u,a,f,l,c,h=e.length,p=h-1,d=new Array(h);t||(e=numeric.clone(e));for(s=0;s=0;--r){l=s[r];for(i=r+1;iK)E=K;W=d(t,l(E,B)),I=h(J,j);for(X=v-1;X!==-1;--X)I[X][X]+=1;$=q(I,p(W,E),!0);var Q=p(R,h(n,$)),G=1;for(X=m-1;X!==-1;--X)Q[X]<0&&(G=D(G,-0.999*Q[X]));g=c(o,l($,G)),R=c(r,h(n,g));if(!P(H(R,0)))return{solution:o,message:"",iterations:U};o=g;if(E=0?y=!1:y=!0;if(y)return{solution:g,message:"Unbounded",iterations:U}}return{solution:o,message:"maximum iteration count exceeded",iterations:U}},numeric._solveLP=function(t,n,r,i,s){var o=t.length,u=r.length,a,f=numeric.sum,l=numeric.log,c=numeric.mul,h=numeric.sub,p=numeric.dot,d=numeric.div,v=numeric.add,m=numeric.rep([o],0).concat([1]),g=numeric.rep([u,1],-1),y=numeric.blockMatrix([[n,g]]),b=r,a=numeric.rep([o],0).concat(Math.max(0,numeric.sup(numeric.neg(r)))+1),w=numeric.__solveLP(m,y,b,i,s,a,!1),E=numeric.clone(w.solution);E.length=o;var S=numeric.inf(h(r,p(n,E)));if(S<0)return{solution:NaN,message:"Infeasible",iterations:w.iterations};var x=numeric.__solveLP(t,n,r,i,s-w.iterations,E,!0);return x.iterations+=w.iterations,x},numeric.solveLP=function(t,n,r,i,s,o,u){typeof u=="undefined"&&(u=1e3),typeof o=="undefined"&&(o=numeric.epsilon);if(typeof i=="undefined")return numeric._solveLP(t,n,r,o,u);var a=i.length,f=i[0].length,l=n.length,c=numeric.echelonize(i),h=numeric.rep([f],0),p=c.P,d=[],v;for(v=p.length-1;v!==-1;--v)h[p[v]]=1;for(v=f-1;v!==-1;--v)h[v]===0&&d.push(v);var m=numeric.getRange,g=numeric.linspace(0,a-1),y=numeric.linspace(0,l-1),b=m(i,g,d),w=m(n,y,p),E=m(n,y,d),S=numeric.dot,x=numeric.sub,T=S(w,c.I),N=x(E,S(T,b)),C=x(r,S(T,s)),k=Array(p.length),L=Array(d.length);for(v=p.length-1;v!==-1;--v)k[v]=t[p[v]];for(v=d.length-1;v!==-1;--v)L[v]=t[d[v]];var A=x(L,S(k,S(c.I,b))),O=numeric._solveLP(A,N,C,o,u),M=O.solution;if(M!==M)return O;var _=S(c.I,x(s,S(b,M))),D=Array(t.length);for(v=p.length-1;v!==-1;--v)D[p[v]]=_[v];for(v=d.length-1;v!==-1;--v)D[d[v]]=M[v];return{solution:D,message:O.message,iterations:O.iterations}},numeric.MPStoLP=function(t){function y(e){throw new Error("MPStoLP: "+e+"\nLine "+s+": "+t[s]+"\nCurrent state: "+r[n]+"\n")}t instanceof String&&t.split("\n");var n=0,r=["Initial state","NAME","ROWS","COLUMNS","RHS","BOUNDS","ENDATA"],i=t.length,s,o,u,a=0,f={},l=[],c=0,h={},p=0,d,v=[],m=[],g=[];for(s=0;s=s)t/=2,u/=2,a>>>=1;return(t+a)/u},c},o=t.pow(n,r),i=t.pow(2,i),s=i*2,f(t.random(),e)}([],numeric.seedrandom,256,6,52),function(e){function t(e){if(typeof e!="object")return e;var n=[],r,i=e.length;for(r=0;rp)g[E]=P;else{g[E]=-Math.abs(P);if(P>0){for(w=1;w<=o;w+=1)f[w][b]=-f[w][b];l[b]=-l[b]}}}for(b=1;b<=v;b+=1)g[L+d[b]]=0;O=0,D=0;for(b=1;b<=h;b+=1)g[L+b]=1;b-=1){P=g[b],E=k+b*(b+3)/2,S=E-b;for(w=b+1;w<=v;w+=1)P-=g[E]*g[C+w],E+=w;P/=g[S],g[C+b]=P;if(d[b]p)g[L+O]=P;else{g[L+O]=-Math.abs(P);if(P>0){for(w=1;w<=o;w+=1)f[w][O]=-f[w][O];l[O]=-l[O]}}return 700}v+=1,d[v]=O,E=k+(v-1)*v/2+1;for(b=1;b<=v-1;b+=1)g[E]=g[b],E+=1;if(v===o)g[E]=g[o];else{for(b=o;b>=v+1;b-=1){if(g[b]===0)break;j=Math.max(Math.abs(g[b-1]),Math.abs(g[b])),F=Math.min(Math.abs(g[b-1]),Math.abs(g[b])),g[b-1]>=0?D=Math.abs(j*Math.sqrt(1+F*F/(j*j))):D=-Math.abs(j*Math.sqrt(1+F*F/(j*j))),j=g[b-1]/D,F=g[b]/D;if(j===1)break;if(j===0){g[b-1]=F*D;for(w=1;w<=o;w+=1)D=e[w][b-1],e[w][b-1]=e[w][b],e[w][b]=D}else{g[b-1]=D,I=F/(1+j);for(w=1;w<=o;w+=1)D=j*e[w][b-1]+F*e[w][b],e[w][b]=I*(e[w][b-1]+D)-e[w][b],e[w][b-1]=D}}g[E]=g[v]}return 0}function J(){E=k+T*(T+1)/2+1,S=E+T;if(g[S]===0)return 798;j=Math.max(Math.abs(g[S-1]),Math.abs(g[S])),F=Math.min(Math.abs(g[S-1]),Math.abs(g[S])),g[S-1]>=0?D=Math.abs(j*Math.sqrt(1+F*F/(j*j))):D=-Math.abs(j*Math.sqrt(1+F*F/(j*j))),j=g[S-1]/D,F=g[S]/D;if(j===1)return 798;if(j===0){for(b=T+1;b<=v;b+=1)D=g[S-1],g[S-1]=g[S],g[S]=D,S+=b;for(b=1;b<=o;b+=1)D=e[b][T],e[b][T]=e[b][T+1],e[b][T+1]=D}else{I=F/(1+j);for(b=T+1;b<=v;b+=1)D=j*g[S-1]+F*g[S],g[S]=I*(g[S-1]+D)-g[S],g[S-1]=D,S+=b;for(b=1;b<=o;b+=1)D=j*e[b][T]+F*e[b][T+1],e[b][T+1]=I*(e[b][T]+D)-e[b][T+1],e[b][T]=D}return 0}function K(){S=E-T;for(b=1;b<=T;b+=1)g[S]=g[E],E+=1,S+=1;return g[A+T]=g[A+T+1],d[T]=d[T+1],T+=1,Tt?e*Math.sqrt(1+t*t/e/e):t==0?e:t*Math.sqrt(1+e*e/t/t)}var n,r=numeric.epsilon,i=1e-64/r,s=50,o=0,u=0,a=0,f=0,l=0,c=numeric.clone(t),h=c.length,p=c[0].length;if(h=0&&(b=-b),w=y*b-T,c[u][u]=y-b;for(a=l;a=0&&(b=-b),w=y*b-T,c[u][u+1]=y-b;for(a=l;aE&&(E=S)}for(u=p-1;u!=-1;u+=-1){if(b!=0){w=b*c[u][u+1];for(a=l;a=s-1)throw"Error: no convergence.";E=v[l],S=v[f-1],b=d[f-1],w=d[f],y=((S-x)*(S+x)+(b-w)*(b+w))/(2*w*S),b=g(y,1),y<0?y=((E-x)*(E+x)+w*(S/(y-b)-w))/E:y=((E-x)*(E+x)+w*(S/(y+b)-w))/E,o=1,T=1;for(u=l+1;u=0;a--)if(v[a]Math.abs(e))c.rotate(o,0,0,-t*i*Math.PI*p.rotateSpeed/window.innerWidth);else{var s=p.zoomSpeed*a*e/window.innerHeight*(o-c.lastT())/100;c.pan(o,0,0,f*(Math.exp(s)-1))}},!0),p};var n=t("right-now"),i=t("3d-view"),a=t("mouse-change"),o=t("mouse-wheel"),s=t("mouse-event-offset"),l=t("has-passive-events")},{"3d-view":40,"has-passive-events":256,"mouse-change":424,"mouse-event-offset":425,"mouse-wheel":427,"right-now":489}],40:[function(t,e,r){"use strict";e.exports=function(t){var e=(t=t||{}).eye||[0,0,1],r=t.center||[0,0,0],s=t.up||[0,1,0],l=t.distanceLimits||[0,1/0],c=t.mode||"turntable",u=n(),f=i(),h=a();return u.setDistanceLimits(l[0],l[1]),u.lookAt(0,e,r,s),f.setDistanceLimits(l[0],l[1]),f.lookAt(0,e,r,s),h.setDistanceLimits(l[0],l[1]),h.lookAt(0,e,r,s),new o({turntable:u,orbit:f,matrix:h},c)};var n=t("turntable-camera-controller"),i=t("orbit-camera-controller"),a=t("matrix-camera-controller");function o(t,e){this._controllerNames=Object.keys(t),this._controllerList=this._controllerNames.map(function(e){return t[e]}),this._mode=e,this._active=t[e],this._active||(this._mode="turntable",this._active=t.turntable),this.modes=this._controllerNames,this.computedMatrix=this._active.computedMatrix,this.computedEye=this._active.computedEye,this.computedUp=this._active.computedUp,this.computedCenter=this._active.computedCenter,this.computedRadius=this._active.computedRadius}var s=o.prototype;[["flush",1],["idle",1],["lookAt",4],["rotate",4],["pan",4],["translate",4],["setMatrix",2],["setDistanceLimits",2],["setDistance",2]].forEach(function(t){for(var e=t[0],r=[],n=0;n0;--t)d(c*=.99),p(),h(c),p();function h(t){function r(t){return u(t.source)*t.value}i.forEach(function(n){n.forEach(function(n){if(n.targetLinks.length){var i=e.sum(n.targetLinks,r)/e.sum(n.targetLinks,f);n.y+=(i-u(n))*t}})})}function d(t){function r(t){return u(t.target)*t.value}i.slice().reverse().forEach(function(n){n.forEach(function(n){if(n.sourceLinks.length){var i=e.sum(n.sourceLinks,r)/e.sum(n.sourceLinks,f);n.y+=(i-u(n))*t}})})}function p(){i.forEach(function(t){var e,r,n,i=0,s=t.length;for(t.sort(m),n=0;n0&&(e.y+=r),i=e.y+e.dy+a;if((r=i-a-o[1])>0)for(i=e.y-=r,n=s-2;n>=0;--n)e=t[n],(r=e.y+e.dy+a-i)>0&&(e.y-=r),i=e.y})}function m(t,e){return t.y-e.y}}(n),c(),t},t.relayout=function(){return c(),t},t.link=function(){var t=.5;function e(e){var r=e.source.x+e.source.dx,i=e.target.x,a=n.interpolateNumber(r,i),o=a(t),s=a(1-t),l=e.source.y+e.sy,c=l+e.dy,u=e.target.y+e.ty,f=u+e.dy;return"M"+r+","+l+"C"+o+","+l+" "+s+","+u+" "+i+","+u+"L"+i+","+f+"C"+s+","+f+" "+o+","+c+" "+r+","+c+"Z"}return e.curvature=function(r){return arguments.length?(t=+r,e):t},e},t},Object.defineProperty(t,"__esModule",{value:!0})},"object"==typeof r&&void 0!==e?i(r,t("d3-array"),t("d3-collection"),t("d3-interpolate")):i(n.d3=n.d3||{},n.d3,n.d3,n.d3)},{"d3-array":120,"d3-collection":121,"d3-interpolate":125}],42:[function(t,e,r){"use strict";var n="undefined"==typeof WeakMap?t("weak-map"):WeakMap,i=t("gl-buffer"),a=t("gl-vao"),o=new n;e.exports=function(t){var e=o.get(t),r=e&&(e._triangleBuffer.handle||e._triangleBuffer.buffer);if(!r||!t.isBuffer(r)){var n=i(t,new Float32Array([-1,-1,-1,4,4,-1]));(e=a(t,[{buffer:n,type:t.FLOAT,size:2}]))._triangleBuffer=n,o.set(t,e)}e.bind(),t.drawArrays(t.TRIANGLES,0,3),e.unbind()}},{"gl-buffer":165,"gl-vao":237,"weak-map":553}],43:[function(t,e,r){e.exports=function(t){var e=0,r=0,n=0,i=0;return t.map(function(t){var a=(t=t.slice())[0],o=a.toUpperCase();if(a!=o)switch(t[0]=o,a){case"a":t[6]+=n,t[7]+=i;break;case"v":t[1]+=i;break;case"h":t[1]+=n;break;default:for(var s=1;si&&(i=t[o]),t[o]=0;c--)if(u[c]!==f[c])return!1;for(c=u.length-1;c>=0;c--)if(l=u[c],!y(t[l],e[l],r,n))return!1;return!0}(t,e,r,o))}return r?t===e:t==e}function b(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function x(t,e){if(!t||!e)return!1;if("[object RegExp]"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&!0===e.call({},t)}function _(t,e,r,n){var i;if("function"!=typeof e)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(n=r,r=null),i=function(t){var e;try{t()}catch(t){e=t}return e}(e),n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),t&&!i&&v(i,r,"Missing expected exception"+n);var o="string"==typeof n,s=!t&&a.isError(i),l=!t&&i&&!r;if((s&&o&&x(i,r)||l)&&v(i,r,"Got unwanted exception"+n),t&&i&&r&&!x(i,r)||!t&&i)throw i}f.AssertionError=function(t){var e;this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=p(m((e=this).actual),128)+" "+e.operator+" "+p(m(e.expected),128),this.generatedMessage=!0);var r=t.stackStartFunction||v;if(Error.captureStackTrace)Error.captureStackTrace(this,r);else{var n=new Error;if(n.stack){var i=n.stack,a=d(r),o=i.indexOf("\n"+a);if(o>=0){var s=i.indexOf("\n",o+1);i=i.substring(s+1)}this.stack=i}}},a.inherits(f.AssertionError,Error),f.fail=v,f.ok=g,f.equal=function(t,e,r){t!=e&&v(t,e,r,"==",f.equal)},f.notEqual=function(t,e,r){t==e&&v(t,e,r,"!=",f.notEqual)},f.deepEqual=function(t,e,r){y(t,e,!1)||v(t,e,r,"deepEqual",f.deepEqual)},f.deepStrictEqual=function(t,e,r){y(t,e,!0)||v(t,e,r,"deepStrictEqual",f.deepStrictEqual)},f.notDeepEqual=function(t,e,r){y(t,e,!1)&&v(t,e,r,"notDeepEqual",f.notDeepEqual)},f.notDeepStrictEqual=function t(e,r,n){y(e,r,!0)&&v(e,r,n,"notDeepStrictEqual",t)},f.strictEqual=function(t,e,r){t!==e&&v(t,e,r,"===",f.strictEqual)},f.notStrictEqual=function(t,e,r){t===e&&v(t,e,r,"!==",f.notStrictEqual)},f.throws=function(t,e,r){_(!0,t,e,r)},f.doesNotThrow=function(t,e,r){_(!1,t,e,r)},f.ifError=function(t){if(t)throw t};var w=Object.keys||function(t){var e=[];for(var r in t)o.call(t,r)&&e.push(r);return e}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"util/":543}],52:[function(t,e,r){e.exports=function(t){return atob(t)}},{}],53:[function(t,e,r){"use strict";e.exports=function(t,e){for(var r=e.length,a=new Array(r+1),o=0;o0?u=u.ushln(c):c<0&&(f=f.ushln(-c));return s(u,f)}},{"./div":56,"./is-rat":58,"./lib/is-bn":62,"./lib/num-to-bn":63,"./lib/rationalize":64,"./lib/str-to-bn":65}],58:[function(t,e,r){"use strict";var n=t("./lib/is-bn");e.exports=function(t){return Array.isArray(t)&&2===t.length&&n(t[0])&&n(t[1])}},{"./lib/is-bn":62}],59:[function(t,e,r){"use strict";var n=t("bn.js");e.exports=function(t){return t.cmp(new n(0))}},{"bn.js":73}],60:[function(t,e,r){"use strict";var n=t("./bn-sign");e.exports=function(t){var e=t.length,r=t.words,i=0;if(1===e)i=r[0];else if(2===e)i=r[0]+67108864*r[1];else for(var a=0;a20)return 52;return r+32}},{"bit-twiddle":71,"double-bits":131}],62:[function(t,e,r){"use strict";t("bn.js");e.exports=function(t){return t&&"object"==typeof t&&Boolean(t.words)}},{"bn.js":73}],63:[function(t,e,r){"use strict";var n=t("bn.js"),i=t("double-bits");e.exports=function(t){var e=i.exponent(t);return e<52?new n(t):new n(t*Math.pow(2,52-e)).ushln(e-52)}},{"bn.js":73,"double-bits":131}],64:[function(t,e,r){"use strict";var n=t("./num-to-bn"),i=t("./bn-sign");e.exports=function(t,e){var r=i(t),a=i(e);if(0===r)return[n(0),n(1)];if(0===a)return[n(0),n(0)];a<0&&(t=t.neg(),e=e.neg());var o=t.gcd(e);if(o.cmpn(1))return[t.div(o),e.div(o)];return[t,e]}},{"./bn-sign":59,"./num-to-bn":63}],65:[function(t,e,r){"use strict";var n=t("bn.js");e.exports=function(t){return new n(t)}},{"bn.js":73}],66:[function(t,e,r){"use strict";var n=t("./lib/rationalize");e.exports=function(t,e){return n(t[0].mul(e[0]),t[1].mul(e[1]))}},{"./lib/rationalize":64}],67:[function(t,e,r){"use strict";var n=t("./lib/bn-sign");e.exports=function(t){return n(t[0])*n(t[1])}},{"./lib/bn-sign":59}],68:[function(t,e,r){"use strict";var n=t("./lib/rationalize");e.exports=function(t,e){return n(t[0].mul(e[1]).sub(t[1].mul(e[0])),t[1].mul(e[1]))}},{"./lib/rationalize":64}],69:[function(t,e,r){"use strict";var n=t("./lib/bn-to-num"),i=t("./lib/ctz");e.exports=function(t){var e=t[0],r=t[1];if(0===e.cmpn(0))return 0;var a=e.abs().divmod(r.abs()),o=a.div,s=n(o),l=a.mod,c=e.negative!==r.negative?-1:1;if(0===l.cmpn(0))return c*s;if(s){var u=i(s)+4,f=n(l.ushln(u).divRound(r));return c*(s+f*Math.pow(2,-u))}var h=r.bitLength()-l.bitLength()+53,f=n(l.ushln(h).divRound(r));return h<1023?c*f*Math.pow(2,-h):(f*=Math.pow(2,-1023),c*f*Math.pow(2,1023-h))}},{"./lib/bn-to-num":60,"./lib/ctz":61}],70:[function(t,e,r){"use strict";function n(t,e,r,n,i,a){var o=["function ",t,"(a,l,h,",n.join(","),"){",a?"":"var i=",r?"l-1":"h+1",";while(l<=h){var m=(l+h)>>>1,x=a",i?".get(m)":"[m]"];return a?e.indexOf("c")<0?o.push(";if(x===y){return m}else if(x<=y){"):o.push(";var p=c(x,y);if(p===0){return m}else if(p<=0){"):o.push(";if(",e,"){i=m;"),r?o.push("l=m+1}else{h=m-1}"):o.push("h=m-1}else{l=m+1}"),o.push("}"),a?o.push("return -1};"):o.push("return i};"),o.join("")}function i(t,e,r,i){return new Function([n("A","x"+t+"y",e,["y"],!1,i),n("B","x"+t+"y",e,["y"],!0,i),n("P","c(x,y)"+t+"0",e,["y","c"],!1,i),n("Q","c(x,y)"+t+"0",e,["y","c"],!0,i),"function dispatchBsearch",r,"(a,y,c,l,h){if(a.shape){if(typeof(c)==='function'){return Q(a,(l===undefined)?0:l|0,(h===undefined)?a.shape[0]-1:h|0,y,c)}else{return B(a,(c===undefined)?0:c|0,(l===undefined)?a.shape[0]-1:l|0,y)}}else{if(typeof(c)==='function'){return P(a,(l===undefined)?0:l|0,(h===undefined)?a.length-1:h|0,y,c)}else{return A(a,(c===undefined)?0:c|0,(l===undefined)?a.length-1:l|0,y)}}}return dispatchBsearch",r].join(""))()}e.exports={ge:i(">=",!1,"GE"),gt:i(">",!1,"GT"),lt:i("<",!0,"LT"),le:i("<=",!0,"LE"),eq:i("-",!0,"EQ",!0)}},{}],71:[function(t,e,r){"use strict";"use restrict";function n(t){var e=32;return(t&=-t)&&e--,65535&t&&(e-=16),16711935&t&&(e-=8),252645135&t&&(e-=4),858993459&t&&(e-=2),1431655765&t&&(e-=1),e}r.INT_BITS=32,r.INT_MAX=2147483647,r.INT_MIN=-1<<31,r.sign=function(t){return(t>0)-(t<0)},r.abs=function(t){var e=t>>31;return(t^e)-e},r.min=function(t,e){return e^(t^e)&-(t65535)<<4,e|=r=((t>>>=e)>255)<<3,e|=r=((t>>>=r)>15)<<2,(e|=r=((t>>>=r)>3)<<1)|(t>>>=r)>>1},r.log10=function(t){return t>=1e9?9:t>=1e8?8:t>=1e7?7:t>=1e6?6:t>=1e5?5:t>=1e4?4:t>=1e3?3:t>=100?2:t>=10?1:0},r.popCount=function(t){return 16843009*((t=(858993459&(t-=t>>>1&1431655765))+(t>>>2&858993459))+(t>>>4)&252645135)>>>24},r.countTrailingZeros=n,r.nextPow2=function(t){return t+=0===t,--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)+1},r.prevPow2=function(t){return t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)-(t>>>1)},r.parity=function(t){return t^=t>>>16,t^=t>>>8,t^=t>>>4,27030>>>(t&=15)&1};var i=new Array(256);!function(t){for(var e=0;e<256;++e){var r=e,n=e,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=1&r,--i;t[e]=n<>>8&255]<<16|i[t>>>16&255]<<8|i[t>>>24&255]},r.interleave2=function(t,e){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t&=65535)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e&=65535)|e<<8))|e<<4))|e<<2))|e<<1))<<1},r.deinterleave2=function(t,e){return(t=65535&((t=16711935&((t=252645135&((t=858993459&((t=t>>>e&1431655765)|t>>>1))|t>>>2))|t>>>4))|t>>>16))<<16>>16},r.interleave3=function(t,e,r){return t=1227133513&((t=3272356035&((t=251719695&((t=4278190335&((t&=1023)|t<<16))|t<<8))|t<<4))|t<<2),(t|=(e=1227133513&((e=3272356035&((e=251719695&((e=4278190335&((e&=1023)|e<<16))|e<<8))|e<<4))|e<<2))<<1)|(r=1227133513&((r=3272356035&((r=251719695&((r=4278190335&((r&=1023)|r<<16))|r<<8))|r<<4))|r<<2))<<2},r.deinterleave3=function(t,e){return(t=1023&((t=4278190335&((t=251719695&((t=3272356035&((t=t>>>e&1227133513)|t>>>2))|t>>>4))|t>>>8))|t>>>16))<<22>>22},r.nextCombination=function(t){var e=t|t-1;return e+1|(~e&-~e)-1>>>n(t)+1}},{}],72:[function(t,e,r){"use strict";var n=t("clamp");e.exports=function(t,e){e||(e={});var r,o,s,l,c,u,f,h,d,p,m,v=null==e.cutoff?.25:e.cutoff,g=null==e.radius?8:e.radius,y=e.channel||0;if(ArrayBuffer.isView(t)||Array.isArray(t)){if(!e.width||!e.height)throw Error("For raw data width and height should be provided by options");r=e.width,o=e.height,l=t,u=e.stride?e.stride:Math.floor(t.length/r/o)}else window.HTMLCanvasElement&&t instanceof window.HTMLCanvasElement?(f=(h=t).getContext("2d"),r=h.width,o=h.height,d=f.getImageData(0,0,r,o),l=d.data,u=4):window.CanvasRenderingContext2D&&t instanceof window.CanvasRenderingContext2D?(h=t.canvas,f=t,r=h.width,o=h.height,d=f.getImageData(0,0,r,o),l=d.data,u=4):window.ImageData&&t instanceof window.ImageData&&(d=t,r=t.width,o=t.height,l=d.data,u=4);if(s=Math.max(r,o),window.Uint8ClampedArray&&l instanceof window.Uint8ClampedArray||window.Uint8Array&&l instanceof window.Uint8Array)for(c=l,l=Array(r*o),p=0,m=c.length;p=49&&o<=54?o-49+10:o>=17&&o<=22?o-17+10:15&o}return n}function l(t,e,r,n){for(var i=0,a=Math.min(t.length,r),o=e;o=49?s-49+10:s>=17?s-17+10:s}return i}a.isBN=function(t){return t instanceof a||null!==t&&"object"==typeof t&&t.constructor.wordSize===a.wordSize&&Array.isArray(t.words)},a.max=function(t,e){return t.cmp(e)>0?t:e},a.min=function(t,e){return t.cmp(e)<0?t:e},a.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36);var i=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},a.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},a.prototype._initArray=function(t,e,r){if(n("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)o=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(i=0,a=0;i>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=s(t,r,r+6),this.words[n]|=i<>>26-a&4194303,(a+=24)>=26&&(a-=26,n++);r+6!==e&&(i=s(t,e,r+6),this.words[n]|=i<>>26-a&4194303),this.strip()},a.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var a=t.length-r,o=a%n,s=Math.min(a,a-o)+r,c=0,u=r;u1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],u=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function h(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],a=0|e.words[0],o=i*a,s=67108863&o,l=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,f=67108863&l,h=Math.min(c,e.length-1),d=Math.max(0,c-t.length+1);d<=h;d++){var p=c-d|0;u+=(o=(i=0|t.words[p])*(a=0|e.words[d])+f)/67108864|0,f=67108863&o}r.words[c]=0|f,l=0|u}return 0!==l?r.words[c]=0|l:r.length--,r.strip()}a.prototype.toString=function(t,e){var r;if(t=t||10,e=0|e||1,16===t||"hex"===t){r="";for(var i=0,a=0,o=0;o>>24-i&16777215)||o!==this.length-1?c[6-l.length]+l+r:l+r,(i+=2)>=26&&(i-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var h=u[t],d=f[t];r="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(d).toString(t);r=(p=p.idivn(d)).isZero()?m+r:c[h-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(t,e){return n(void 0!==o),this.toArrayLike(o,t,e)},a.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},a.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),a=r||Math.max(1,i);n(i<=a,"byte array longer than desired length"),n(a>0,"Requested array length <= 0"),this.strip();var o,s,l="le"===e,c=new t(a),u=this.clone();if(l){for(s=0;!u.isZero();s++)o=u.andln(255),u.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},a.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},a.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},a.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},a.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},a.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},a.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},a.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},a.prototype.inotn=function(t){n("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},a.prototype.notn=function(t){return this.clone().inotn(t)},a.prototype.setn=function(t,e){n("number"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,a=0;a>>26;for(;0!==i&&a>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;at.length?this.clone().iadd(t):t.clone().iadd(this)},a.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=t):(r=t,n=this);for(var a=0,o=0;o>26,this.words[o]=67108863&e;for(;0!==a&&o>26,this.words[o]=67108863&e;if(0===a&&o>>13,d=0|o[1],p=8191&d,m=d>>>13,v=0|o[2],g=8191&v,y=v>>>13,b=0|o[3],x=8191&b,_=b>>>13,w=0|o[4],M=8191&w,k=w>>>13,A=0|o[5],T=8191&A,E=A>>>13,S=0|o[6],L=8191&S,C=S>>>13,P=0|o[7],z=8191&P,O=P>>>13,D=0|o[8],I=8191&D,R=D>>>13,N=0|o[9],F=8191&N,j=N>>>13,B=0|s[0],U=8191&B,V=B>>>13,q=0|s[1],H=8191&q,G=q>>>13,Y=0|s[2],W=8191&Y,X=Y>>>13,Z=0|s[3],J=8191&Z,K=Z>>>13,Q=0|s[4],$=8191&Q,tt=Q>>>13,et=0|s[5],rt=8191&et,nt=et>>>13,it=0|s[6],at=8191&it,ot=it>>>13,st=0|s[7],lt=8191&st,ct=st>>>13,ut=0|s[8],ft=8191&ut,ht=ut>>>13,dt=0|s[9],pt=8191&dt,mt=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var vt=(c+(n=Math.imul(f,U))|0)+((8191&(i=(i=Math.imul(f,V))+Math.imul(h,U)|0))<<13)|0;c=((a=Math.imul(h,V))+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,U),i=(i=Math.imul(p,V))+Math.imul(m,U)|0,a=Math.imul(m,V);var gt=(c+(n=n+Math.imul(f,H)|0)|0)+((8191&(i=(i=i+Math.imul(f,G)|0)+Math.imul(h,H)|0))<<13)|0;c=((a=a+Math.imul(h,G)|0)+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(g,U),i=(i=Math.imul(g,V))+Math.imul(y,U)|0,a=Math.imul(y,V),n=n+Math.imul(p,H)|0,i=(i=i+Math.imul(p,G)|0)+Math.imul(m,H)|0,a=a+Math.imul(m,G)|0;var yt=(c+(n=n+Math.imul(f,W)|0)|0)+((8191&(i=(i=i+Math.imul(f,X)|0)+Math.imul(h,W)|0))<<13)|0;c=((a=a+Math.imul(h,X)|0)+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(x,U),i=(i=Math.imul(x,V))+Math.imul(_,U)|0,a=Math.imul(_,V),n=n+Math.imul(g,H)|0,i=(i=i+Math.imul(g,G)|0)+Math.imul(y,H)|0,a=a+Math.imul(y,G)|0,n=n+Math.imul(p,W)|0,i=(i=i+Math.imul(p,X)|0)+Math.imul(m,W)|0,a=a+Math.imul(m,X)|0;var bt=(c+(n=n+Math.imul(f,J)|0)|0)+((8191&(i=(i=i+Math.imul(f,K)|0)+Math.imul(h,J)|0))<<13)|0;c=((a=a+Math.imul(h,K)|0)+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(M,U),i=(i=Math.imul(M,V))+Math.imul(k,U)|0,a=Math.imul(k,V),n=n+Math.imul(x,H)|0,i=(i=i+Math.imul(x,G)|0)+Math.imul(_,H)|0,a=a+Math.imul(_,G)|0,n=n+Math.imul(g,W)|0,i=(i=i+Math.imul(g,X)|0)+Math.imul(y,W)|0,a=a+Math.imul(y,X)|0,n=n+Math.imul(p,J)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,K)|0;var xt=(c+(n=n+Math.imul(f,$)|0)|0)+((8191&(i=(i=i+Math.imul(f,tt)|0)+Math.imul(h,$)|0))<<13)|0;c=((a=a+Math.imul(h,tt)|0)+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(T,U),i=(i=Math.imul(T,V))+Math.imul(E,U)|0,a=Math.imul(E,V),n=n+Math.imul(M,H)|0,i=(i=i+Math.imul(M,G)|0)+Math.imul(k,H)|0,a=a+Math.imul(k,G)|0,n=n+Math.imul(x,W)|0,i=(i=i+Math.imul(x,X)|0)+Math.imul(_,W)|0,a=a+Math.imul(_,X)|0,n=n+Math.imul(g,J)|0,i=(i=i+Math.imul(g,K)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,K)|0,n=n+Math.imul(p,$)|0,i=(i=i+Math.imul(p,tt)|0)+Math.imul(m,$)|0,a=a+Math.imul(m,tt)|0;var _t=(c+(n=n+Math.imul(f,rt)|0)|0)+((8191&(i=(i=i+Math.imul(f,nt)|0)+Math.imul(h,rt)|0))<<13)|0;c=((a=a+Math.imul(h,nt)|0)+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(L,U),i=(i=Math.imul(L,V))+Math.imul(C,U)|0,a=Math.imul(C,V),n=n+Math.imul(T,H)|0,i=(i=i+Math.imul(T,G)|0)+Math.imul(E,H)|0,a=a+Math.imul(E,G)|0,n=n+Math.imul(M,W)|0,i=(i=i+Math.imul(M,X)|0)+Math.imul(k,W)|0,a=a+Math.imul(k,X)|0,n=n+Math.imul(x,J)|0,i=(i=i+Math.imul(x,K)|0)+Math.imul(_,J)|0,a=a+Math.imul(_,K)|0,n=n+Math.imul(g,$)|0,i=(i=i+Math.imul(g,tt)|0)+Math.imul(y,$)|0,a=a+Math.imul(y,tt)|0,n=n+Math.imul(p,rt)|0,i=(i=i+Math.imul(p,nt)|0)+Math.imul(m,rt)|0,a=a+Math.imul(m,nt)|0;var wt=(c+(n=n+Math.imul(f,at)|0)|0)+((8191&(i=(i=i+Math.imul(f,ot)|0)+Math.imul(h,at)|0))<<13)|0;c=((a=a+Math.imul(h,ot)|0)+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(z,U),i=(i=Math.imul(z,V))+Math.imul(O,U)|0,a=Math.imul(O,V),n=n+Math.imul(L,H)|0,i=(i=i+Math.imul(L,G)|0)+Math.imul(C,H)|0,a=a+Math.imul(C,G)|0,n=n+Math.imul(T,W)|0,i=(i=i+Math.imul(T,X)|0)+Math.imul(E,W)|0,a=a+Math.imul(E,X)|0,n=n+Math.imul(M,J)|0,i=(i=i+Math.imul(M,K)|0)+Math.imul(k,J)|0,a=a+Math.imul(k,K)|0,n=n+Math.imul(x,$)|0,i=(i=i+Math.imul(x,tt)|0)+Math.imul(_,$)|0,a=a+Math.imul(_,tt)|0,n=n+Math.imul(g,rt)|0,i=(i=i+Math.imul(g,nt)|0)+Math.imul(y,rt)|0,a=a+Math.imul(y,nt)|0,n=n+Math.imul(p,at)|0,i=(i=i+Math.imul(p,ot)|0)+Math.imul(m,at)|0,a=a+Math.imul(m,ot)|0;var Mt=(c+(n=n+Math.imul(f,lt)|0)|0)+((8191&(i=(i=i+Math.imul(f,ct)|0)+Math.imul(h,lt)|0))<<13)|0;c=((a=a+Math.imul(h,ct)|0)+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(I,U),i=(i=Math.imul(I,V))+Math.imul(R,U)|0,a=Math.imul(R,V),n=n+Math.imul(z,H)|0,i=(i=i+Math.imul(z,G)|0)+Math.imul(O,H)|0,a=a+Math.imul(O,G)|0,n=n+Math.imul(L,W)|0,i=(i=i+Math.imul(L,X)|0)+Math.imul(C,W)|0,a=a+Math.imul(C,X)|0,n=n+Math.imul(T,J)|0,i=(i=i+Math.imul(T,K)|0)+Math.imul(E,J)|0,a=a+Math.imul(E,K)|0,n=n+Math.imul(M,$)|0,i=(i=i+Math.imul(M,tt)|0)+Math.imul(k,$)|0,a=a+Math.imul(k,tt)|0,n=n+Math.imul(x,rt)|0,i=(i=i+Math.imul(x,nt)|0)+Math.imul(_,rt)|0,a=a+Math.imul(_,nt)|0,n=n+Math.imul(g,at)|0,i=(i=i+Math.imul(g,ot)|0)+Math.imul(y,at)|0,a=a+Math.imul(y,ot)|0,n=n+Math.imul(p,lt)|0,i=(i=i+Math.imul(p,ct)|0)+Math.imul(m,lt)|0,a=a+Math.imul(m,ct)|0;var kt=(c+(n=n+Math.imul(f,ft)|0)|0)+((8191&(i=(i=i+Math.imul(f,ht)|0)+Math.imul(h,ft)|0))<<13)|0;c=((a=a+Math.imul(h,ht)|0)+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(F,U),i=(i=Math.imul(F,V))+Math.imul(j,U)|0,a=Math.imul(j,V),n=n+Math.imul(I,H)|0,i=(i=i+Math.imul(I,G)|0)+Math.imul(R,H)|0,a=a+Math.imul(R,G)|0,n=n+Math.imul(z,W)|0,i=(i=i+Math.imul(z,X)|0)+Math.imul(O,W)|0,a=a+Math.imul(O,X)|0,n=n+Math.imul(L,J)|0,i=(i=i+Math.imul(L,K)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,K)|0,n=n+Math.imul(T,$)|0,i=(i=i+Math.imul(T,tt)|0)+Math.imul(E,$)|0,a=a+Math.imul(E,tt)|0,n=n+Math.imul(M,rt)|0,i=(i=i+Math.imul(M,nt)|0)+Math.imul(k,rt)|0,a=a+Math.imul(k,nt)|0,n=n+Math.imul(x,at)|0,i=(i=i+Math.imul(x,ot)|0)+Math.imul(_,at)|0,a=a+Math.imul(_,ot)|0,n=n+Math.imul(g,lt)|0,i=(i=i+Math.imul(g,ct)|0)+Math.imul(y,lt)|0,a=a+Math.imul(y,ct)|0,n=n+Math.imul(p,ft)|0,i=(i=i+Math.imul(p,ht)|0)+Math.imul(m,ft)|0,a=a+Math.imul(m,ht)|0;var At=(c+(n=n+Math.imul(f,pt)|0)|0)+((8191&(i=(i=i+Math.imul(f,mt)|0)+Math.imul(h,pt)|0))<<13)|0;c=((a=a+Math.imul(h,mt)|0)+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(F,H),i=(i=Math.imul(F,G))+Math.imul(j,H)|0,a=Math.imul(j,G),n=n+Math.imul(I,W)|0,i=(i=i+Math.imul(I,X)|0)+Math.imul(R,W)|0,a=a+Math.imul(R,X)|0,n=n+Math.imul(z,J)|0,i=(i=i+Math.imul(z,K)|0)+Math.imul(O,J)|0,a=a+Math.imul(O,K)|0,n=n+Math.imul(L,$)|0,i=(i=i+Math.imul(L,tt)|0)+Math.imul(C,$)|0,a=a+Math.imul(C,tt)|0,n=n+Math.imul(T,rt)|0,i=(i=i+Math.imul(T,nt)|0)+Math.imul(E,rt)|0,a=a+Math.imul(E,nt)|0,n=n+Math.imul(M,at)|0,i=(i=i+Math.imul(M,ot)|0)+Math.imul(k,at)|0,a=a+Math.imul(k,ot)|0,n=n+Math.imul(x,lt)|0,i=(i=i+Math.imul(x,ct)|0)+Math.imul(_,lt)|0,a=a+Math.imul(_,ct)|0,n=n+Math.imul(g,ft)|0,i=(i=i+Math.imul(g,ht)|0)+Math.imul(y,ft)|0,a=a+Math.imul(y,ht)|0;var Tt=(c+(n=n+Math.imul(p,pt)|0)|0)+((8191&(i=(i=i+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;c=((a=a+Math.imul(m,mt)|0)+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(F,W),i=(i=Math.imul(F,X))+Math.imul(j,W)|0,a=Math.imul(j,X),n=n+Math.imul(I,J)|0,i=(i=i+Math.imul(I,K)|0)+Math.imul(R,J)|0,a=a+Math.imul(R,K)|0,n=n+Math.imul(z,$)|0,i=(i=i+Math.imul(z,tt)|0)+Math.imul(O,$)|0,a=a+Math.imul(O,tt)|0,n=n+Math.imul(L,rt)|0,i=(i=i+Math.imul(L,nt)|0)+Math.imul(C,rt)|0,a=a+Math.imul(C,nt)|0,n=n+Math.imul(T,at)|0,i=(i=i+Math.imul(T,ot)|0)+Math.imul(E,at)|0,a=a+Math.imul(E,ot)|0,n=n+Math.imul(M,lt)|0,i=(i=i+Math.imul(M,ct)|0)+Math.imul(k,lt)|0,a=a+Math.imul(k,ct)|0,n=n+Math.imul(x,ft)|0,i=(i=i+Math.imul(x,ht)|0)+Math.imul(_,ft)|0,a=a+Math.imul(_,ht)|0;var Et=(c+(n=n+Math.imul(g,pt)|0)|0)+((8191&(i=(i=i+Math.imul(g,mt)|0)+Math.imul(y,pt)|0))<<13)|0;c=((a=a+Math.imul(y,mt)|0)+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(F,J),i=(i=Math.imul(F,K))+Math.imul(j,J)|0,a=Math.imul(j,K),n=n+Math.imul(I,$)|0,i=(i=i+Math.imul(I,tt)|0)+Math.imul(R,$)|0,a=a+Math.imul(R,tt)|0,n=n+Math.imul(z,rt)|0,i=(i=i+Math.imul(z,nt)|0)+Math.imul(O,rt)|0,a=a+Math.imul(O,nt)|0,n=n+Math.imul(L,at)|0,i=(i=i+Math.imul(L,ot)|0)+Math.imul(C,at)|0,a=a+Math.imul(C,ot)|0,n=n+Math.imul(T,lt)|0,i=(i=i+Math.imul(T,ct)|0)+Math.imul(E,lt)|0,a=a+Math.imul(E,ct)|0,n=n+Math.imul(M,ft)|0,i=(i=i+Math.imul(M,ht)|0)+Math.imul(k,ft)|0,a=a+Math.imul(k,ht)|0;var St=(c+(n=n+Math.imul(x,pt)|0)|0)+((8191&(i=(i=i+Math.imul(x,mt)|0)+Math.imul(_,pt)|0))<<13)|0;c=((a=a+Math.imul(_,mt)|0)+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(F,$),i=(i=Math.imul(F,tt))+Math.imul(j,$)|0,a=Math.imul(j,tt),n=n+Math.imul(I,rt)|0,i=(i=i+Math.imul(I,nt)|0)+Math.imul(R,rt)|0,a=a+Math.imul(R,nt)|0,n=n+Math.imul(z,at)|0,i=(i=i+Math.imul(z,ot)|0)+Math.imul(O,at)|0,a=a+Math.imul(O,ot)|0,n=n+Math.imul(L,lt)|0,i=(i=i+Math.imul(L,ct)|0)+Math.imul(C,lt)|0,a=a+Math.imul(C,ct)|0,n=n+Math.imul(T,ft)|0,i=(i=i+Math.imul(T,ht)|0)+Math.imul(E,ft)|0,a=a+Math.imul(E,ht)|0;var Lt=(c+(n=n+Math.imul(M,pt)|0)|0)+((8191&(i=(i=i+Math.imul(M,mt)|0)+Math.imul(k,pt)|0))<<13)|0;c=((a=a+Math.imul(k,mt)|0)+(i>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,n=Math.imul(F,rt),i=(i=Math.imul(F,nt))+Math.imul(j,rt)|0,a=Math.imul(j,nt),n=n+Math.imul(I,at)|0,i=(i=i+Math.imul(I,ot)|0)+Math.imul(R,at)|0,a=a+Math.imul(R,ot)|0,n=n+Math.imul(z,lt)|0,i=(i=i+Math.imul(z,ct)|0)+Math.imul(O,lt)|0,a=a+Math.imul(O,ct)|0,n=n+Math.imul(L,ft)|0,i=(i=i+Math.imul(L,ht)|0)+Math.imul(C,ft)|0,a=a+Math.imul(C,ht)|0;var Ct=(c+(n=n+Math.imul(T,pt)|0)|0)+((8191&(i=(i=i+Math.imul(T,mt)|0)+Math.imul(E,pt)|0))<<13)|0;c=((a=a+Math.imul(E,mt)|0)+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,n=Math.imul(F,at),i=(i=Math.imul(F,ot))+Math.imul(j,at)|0,a=Math.imul(j,ot),n=n+Math.imul(I,lt)|0,i=(i=i+Math.imul(I,ct)|0)+Math.imul(R,lt)|0,a=a+Math.imul(R,ct)|0,n=n+Math.imul(z,ft)|0,i=(i=i+Math.imul(z,ht)|0)+Math.imul(O,ft)|0,a=a+Math.imul(O,ht)|0;var Pt=(c+(n=n+Math.imul(L,pt)|0)|0)+((8191&(i=(i=i+Math.imul(L,mt)|0)+Math.imul(C,pt)|0))<<13)|0;c=((a=a+Math.imul(C,mt)|0)+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(F,lt),i=(i=Math.imul(F,ct))+Math.imul(j,lt)|0,a=Math.imul(j,ct),n=n+Math.imul(I,ft)|0,i=(i=i+Math.imul(I,ht)|0)+Math.imul(R,ft)|0,a=a+Math.imul(R,ht)|0;var zt=(c+(n=n+Math.imul(z,pt)|0)|0)+((8191&(i=(i=i+Math.imul(z,mt)|0)+Math.imul(O,pt)|0))<<13)|0;c=((a=a+Math.imul(O,mt)|0)+(i>>>13)|0)+(zt>>>26)|0,zt&=67108863,n=Math.imul(F,ft),i=(i=Math.imul(F,ht))+Math.imul(j,ft)|0,a=Math.imul(j,ht);var Ot=(c+(n=n+Math.imul(I,pt)|0)|0)+((8191&(i=(i=i+Math.imul(I,mt)|0)+Math.imul(R,pt)|0))<<13)|0;c=((a=a+Math.imul(R,mt)|0)+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863;var Dt=(c+(n=Math.imul(F,pt))|0)+((8191&(i=(i=Math.imul(F,mt))+Math.imul(j,pt)|0))<<13)|0;return c=((a=Math.imul(j,mt))+(i>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l[0]=vt,l[1]=gt,l[2]=yt,l[3]=bt,l[4]=xt,l[5]=_t,l[6]=wt,l[7]=Mt,l[8]=kt,l[9]=At,l[10]=Tt,l[11]=Et,l[12]=St,l[13]=Lt,l[14]=Ct,l[15]=Pt,l[16]=zt,l[17]=Ot,l[18]=Dt,0!==c&&(l[19]=c,r.length++),r};function p(t,e,r){return(new m).mulp(t,e,r)}function m(t,e){this.x=t,this.y=e}Math.imul||(d=h),a.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?d(this,t,e):r<63?h(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,n=o,o=i}return 0!==n?r.words[a]=n:r.length--,r.strip()}(this,t,e):p(this,t,e)},m.prototype.makeRBT=function(t){for(var e=new Array(t),r=a.prototype._countBits(t)-1,n=0;n>=1;return n},m.prototype.permute=function(t,e,r,n,i,a){for(var o=0;o>>=1)i++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*e;o>=26,e+=i/67108864|0,e+=a>>>26,this.words[r]=67108863&a}return 0!==e&&(this.words[r]=e,this.length++),this},a.prototype.muln=function(t){return this.clone().imuln(t)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}(t);if(0===e.length)return new a(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(e=0;e>>26-r}o&&(this.words[e]=o,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0),i=e?(e-e%26)/26:0;var a=t%26,o=Math.min((t-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==u||c>=i);c--){var f=0|this.words[c];this.words[c]=u<<26-a|f>>>a,u=f&s}return l&&0!==u&&(l.words[l.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},a.prototype.shln=function(t){return this.clone().ishln(t)},a.prototype.ushln=function(t){return this.clone().iushln(t)},a.prototype.shrn=function(t){return this.clone().ishrn(t)},a.prototype.ushrn=function(t){return this.clone().iushrn(t)},a.prototype.testn=function(t){n("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},a.prototype.isubn=function(t){if(n("number"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(l/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===s)return this.strip();for(n(-1===s),s=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(t,e){var r=(this.length,t.length),n=this.clone(),i=t,o=0|i.words[i.length-1];0!==(r=26-this._countBits(o))&&(i=i.ushln(r),n.iushln(r),o=0|i.words[i.length-1]);var s,l=n.length-i.length;if("mod"!==e){(s=new a(null)).length=l+1,s.words=new Array(s.length);for(var c=0;c=0;f--){var h=67108864*(0|n.words[i.length+f])+(0|n.words[i.length+f-1]);for(h=Math.min(h/o|0,67108863),n._ishlnsubmul(i,h,f);0!==n.negative;)h--,n.negative=0,n._ishlnsubmul(i,1,f),n.isZero()||(n.negative^=1);s&&(s.words[f]=h)}return s&&s.strip(),n.strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},a.prototype.divmod=function(t,e,r){return n(!t.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),"mod"!==e&&(i=s.div.neg()),"div"!==e&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(t)),{div:i,mod:o}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),"mod"!==e&&(i=s.div.neg()),{div:i,mod:s.mod}):0!=(this.negative&t.negative)?(s=this.neg().divmod(t.neg(),e),"div"!==e&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(t)),{div:s.div,mod:o}):t.length>this.length||this.cmp(t)<0?{div:new a(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new a(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new a(this.modn(t.words[0]))}:this._wordDiv(t,e);var i,o,s},a.prototype.div=function(t){return this.divmod(t,"div",!1).div},a.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},a.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},a.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),a=r.cmp(n);return a<0||1===i&&0===a?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},a.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},a.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},a.prototype.divn=function(t){return this.clone().idivn(t)},a.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new a(1),o=new a(0),s=new a(0),l=new a(1),c=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++c;for(var u=r.clone(),f=e.clone();!e.isZero();){for(var h=0,d=1;0==(e.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(e.iushrn(h);h-- >0;)(i.isOdd()||o.isOdd())&&(i.iadd(u),o.isub(f)),i.iushrn(1),o.iushrn(1);for(var p=0,m=1;0==(r.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(s.isOdd()||l.isOdd())&&(s.iadd(u),l.isub(f)),s.iushrn(1),l.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(s),o.isub(l)):(r.isub(e),s.isub(i),l.isub(o))}return{a:s,b:l,gcd:r.iushln(c)}},a.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i,o=new a(1),s=new a(0),l=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,u=1;0==(e.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(e.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(l),o.iushrn(1);for(var f=0,h=1;0==(r.words[0]&h)&&f<26;++f,h<<=1);if(f>0)for(r.iushrn(f);f-- >0;)s.isOdd()&&s.iadd(l),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),o.isub(s)):(r.isub(e),s.isub(o))}return(i=0===e.cmpn(1)?o:s).cmpn(0)<0&&i.iadd(t),i},a.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var a=e;e=r,r=a}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},a.prototype.invm=function(t){return this.egcd(t).a.umod(t)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(t){return this.words[0]&t},a.prototype.bincn=function(t){n("number"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];e=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},a.prototype.gtn=function(t){return 1===this.cmpn(t)},a.prototype.gt=function(t){return 1===this.cmp(t)},a.prototype.gten=function(t){return this.cmpn(t)>=0},a.prototype.gte=function(t){return this.cmp(t)>=0},a.prototype.ltn=function(t){return-1===this.cmpn(t)},a.prototype.lt=function(t){return-1===this.cmp(t)},a.prototype.lten=function(t){return this.cmpn(t)<=0},a.prototype.lte=function(t){return this.cmp(t)<=0},a.prototype.eqn=function(t){return 0===this.cmpn(t)},a.prototype.eq=function(t){return 0===this.cmp(t)},a.red=function(t){return new w(t)},a.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},a.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(t){return this.red=t,this},a.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},a.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},a.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},a.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},a.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},a.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},a.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},a.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},a.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var v={k256:null,p224:null,p192:null,p25519:null};function g(t,e){this.name=t,this.p=new a(e,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function y(){g.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){g.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function x(){g.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function _(){g.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function w(t){if("string"==typeof t){var e=a._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function M(t){w.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}g.prototype._tmp=function(){var t=new a(null);return t.words=new Array(Math.ceil(this.n/13)),t},g.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},g.prototype.split=function(t,e){t.iushrn(this.n,0,e)},g.prototype.imulK=function(t){return t.imul(this.k)},i(y,g),y.prototype.split=function(t,e){for(var r=Math.min(t.length,9),n=0;n>>22,i=a}i>>>=22,t.words[n-10]=i,0===i&&t.length>10?t.length-=10:t.length-=9},y.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},a._prime=function(t){if(v[t])return v[t];var e;if("k256"===t)e=new y;else if("p224"===t)e=new b;else if("p192"===t)e=new x;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new _}return v[t]=e,e},w.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},w.prototype._verify2=function(t,e){n(0==(t.negative|e.negative),"red works only with positives"),n(t.red&&t.red===e.red,"red works only with red numbers")},w.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},w.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},w.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},w.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},w.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},w.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},w.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},w.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},w.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},w.prototype.isqr=function(t){return this.imul(t,t.clone())},w.prototype.sqr=function(t){return this.mul(t,t)},w.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2==1),3===e){var r=this.m.add(new a(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),o=0;!i.isZero()&&0===i.andln(1);)o++,i.iushrn(1);n(!i.isZero());var s=new a(1).toRed(this),l=s.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new a(2*u*u).toRed(this);0!==this.pow(u,c).cmp(l);)u.redIAdd(l);for(var f=this.pow(u,i),h=this.pow(t,i.addn(1).iushrn(1)),d=this.pow(t,i),p=o;0!==d.cmp(s);){for(var m=d,v=0;0!==m.cmp(s);v++)m=m.redSqr();n(v=0;n--){for(var c=e.words[n],u=l-1;u>=0;u--){var f=c>>u&1;i!==r[0]&&(i=this.sqr(i)),0!==f||0!==o?(o<<=1,o|=f,(4===++s||0===n&&0===u)&&(i=this.mul(i,r[o]),s=0,o=0)):s=0}l=26}return i},w.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},w.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},a.mont=function(t){return new M(t)},i(M,w),M.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},M.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},M.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},M.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new a(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},M.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(void 0===e||e,this)},{buffer:82}],74:[function(t,e,r){"use strict";e.exports=function(t){var e,r,n,i=t.length,a=0;for(e=0;e>>1;if(!(u<=0)){var f,h=i.mallocDouble(2*u*s),d=i.mallocInt32(s);if((s=l(t,u,h,d))>0){if(1===u&&n)a.init(s),f=a.sweepComplete(u,r,0,s,h,d,0,s,h,d);else{var p=i.mallocDouble(2*u*c),m=i.mallocInt32(c);(c=l(e,u,p,m))>0&&(a.init(s+c),f=1===u?a.sweepBipartite(u,r,0,s,h,d,0,c,p,m):o(u,r,n,s,h,d,c,p,m),i.free(p),i.free(m))}i.free(h),i.free(d)}return f}}}function u(t,e){n.push([t,e])}},{"./lib/intersect":77,"./lib/sweep":81,"typedarray-pool":534}],76:[function(t,e,r){"use strict";var n="d",i="ax",a="vv",o="fp",s="es",l="rs",c="re",u="rb",f="ri",h="rp",d="bs",p="be",m="bb",v="bi",g="bp",y="rv",b="Q",x=[n,i,a,l,c,u,f,d,p,m,v];function _(t){var e="bruteForce"+(t?"Full":"Partial"),r=[],_=x.slice();t||_.splice(3,0,o);var w=["function "+e+"("+_.join()+"){"];function M(e,o){var _=function(t,e,r){var o="bruteForce"+(t?"Red":"Blue")+(e?"Flip":"")+(r?"Full":""),_=["function ",o,"(",x.join(),"){","var ",s,"=2*",n,";"],w="for(var i="+l+","+h+"="+s+"*"+l+";i<"+c+";++i,"+h+"+="+s+"){var x0="+u+"["+i+"+"+h+"],x1="+u+"["+i+"+"+h+"+"+n+"],xi="+f+"[i];",M="for(var j="+d+","+g+"="+s+"*"+d+";j<"+p+";++j,"+g+"+="+s+"){var y0="+m+"["+i+"+"+g+"],"+(r?"y1="+m+"["+i+"+"+g+"+"+n+"],":"")+"yi="+v+"[j];";return t?_.push(w,b,":",M):_.push(M,b,":",w),r?_.push("if(y1"+p+"-"+d+"){"),t?(M(!0,!1),w.push("}else{"),M(!1,!1)):(w.push("if("+o+"){"),M(!0,!0),w.push("}else{"),M(!0,!1),w.push("}}else{if("+o+"){"),M(!1,!0),w.push("}else{"),M(!1,!1),w.push("}")),w.push("}}return "+e);var k=r.join("")+w.join("");return new Function(k)()}r.partial=_(!1),r.full=_(!0)},{}],77:[function(t,e,r){"use strict";e.exports=function(t,e,r,a,u,E,S,L,C){!function(t,e){var r=8*i.log2(e+1)*(t+1)|0,a=i.nextPow2(x*r);w.length0;){var D=(z-=1)*x,I=w[D],R=w[D+1],N=w[D+2],F=w[D+3],j=w[D+4],B=w[D+5],U=z*_,V=M[U],q=M[U+1],H=1&B,G=!!(16&B),Y=u,W=E,X=L,Z=C;if(H&&(Y=L,W=C,X=u,Z=E),!(2&B&&(N=v(t,I,R,N,Y,W,q),R>=N)||4&B&&(R=g(t,I,R,N,Y,W,V))>=N)){var J=N-R,K=j-F;if(G){if(t*J*(J+K)=p0)&&!(p1>=hi)",["p0","p1"]),m=u("lo===p0",["p0"]),v=u("lo>>1,h=2*t,d=f,p=s[h*f+e];for(;c=b?(d=y,p=b):g>=_?(d=v,p=g):(d=x,p=_):b>=_?(d=y,p=b):_>=g?(d=v,p=g):(d=x,p=_);for(var w=h*(u-1),M=h*d,k=0;kr&&i[f+e]>c;--u,f-=o){for(var h=f,d=f+o,p=0;p=0&&i.push("lo=e[k+n]");t.indexOf("hi")>=0&&i.push("hi=e[k+o]");return r.push(n.replace("_",i.join()).replace("$",t)),Function.apply(void 0,r)};var n="for(var j=2*a,k=j*c,l=k,m=c,n=b,o=a+b,p=c;d>p;++p,k+=j){var _;if($)if(m===p)m+=1,l+=j;else{for(var s=0;j>s;++s){var t=e[k+s];e[k+s]=e[l],e[l++]=t}var u=f[p];f[p]=f[m],f[m++]=u}}return m"},{}],80:[function(t,e,r){"use strict";e.exports=function(t,e){e<=4*n?i(0,e-1,t):function t(e,r,f){var h=(r-e+1)/6|0,d=e+h,p=r-h,m=e+r>>1,v=m-h,g=m+h,y=d,b=v,x=m,_=g,w=p,M=e+1,k=r-1,A=0;c(y,b,f)&&(A=y,y=b,b=A);c(_,w,f)&&(A=_,_=w,w=A);c(y,x,f)&&(A=y,y=x,x=A);c(b,x,f)&&(A=b,b=x,x=A);c(y,_,f)&&(A=y,y=_,_=A);c(x,_,f)&&(A=x,x=_,_=A);c(b,w,f)&&(A=b,b=w,w=A);c(b,x,f)&&(A=b,b=x,x=A);c(_,w,f)&&(A=_,_=w,w=A);var T=f[2*b];var E=f[2*b+1];var S=f[2*_];var L=f[2*_+1];var C=2*y;var P=2*x;var z=2*w;var O=2*d;var D=2*m;var I=2*p;for(var R=0;R<2;++R){var N=f[C+R],F=f[P+R],j=f[z+R];f[O+R]=N,f[D+R]=F,f[I+R]=j}o(v,e,f);o(g,r,f);for(var B=M;B<=k;++B)if(u(B,T,E,f))B!==M&&a(B,M,f),++M;else if(!u(B,S,L,f))for(;;){if(u(k,S,L,f)){u(k,T,E,f)?(s(B,M,k,f),++M,--k):(a(B,k,f),--k);break}if(--kt;){var c=r[l-2],u=r[l-1];if(cr[e+1])}function u(t,e,r,n){var i=n[t*=2];return i>>1;a(d,E);for(var S=0,L=0,M=0;M=o)p(c,u,L--,C=C-o|0);else if(C>=0)p(s,l,S--,C);else if(C<=-o){C=-C-o|0;for(var P=0;P>>1;a(d,S);for(var L=0,C=0,P=0,k=0;k>1==d[2*k+3]>>1&&(O=2,k+=1),z<0){for(var D=-(z>>1)-1,I=0;I>1)-1;0===O?p(s,l,L--,D):1===O?p(c,u,C--,D):2===O&&p(f,h,P--,D)}}},scanBipartite:function(t,e,r,n,i,c,u,f,h,v,g,y){var b=0,x=2*t,_=e,w=e+t,M=1,k=1;n?k=o:M=o;for(var A=i;A>>1;a(d,L);for(var C=0,A=0;A=o?(z=!n,T-=o):(z=!!n,T-=1),z)m(s,l,C++,T);else{var O=y[T],D=x*T,I=g[D+e+1],R=g[D+e+1+t];t:for(var N=0;N>>1;a(d,M);for(var k=0,b=0;b=o)s[k++]=x-o;else{var T=p[x-=1],E=v*x,S=h[E+e+1],L=h[E+e+1+t];t:for(var C=0;C=0;--C)if(s[C]===x){for(var D=C+1;Da)throw new RangeError("Invalid typed array length");var e=new Uint8Array(t);return e.__proto__=s.prototype,e}function s(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return u(t)}return l(t,e,r)}function l(t,e,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return B(t)?function(t,e,r){if(e<0||t.byteLength=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return 0|t}function d(t,e){if(s.isBuffer(t))return t.length;if(U(t)||B(t))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return N(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return F(t).length;default:if(n)return N(t).length;e=(""+e).toLowerCase(),n=!0}}function p(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function m(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),V(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=s.from(e,n)),s.isBuffer(e))return 0===e.length?-1:v(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):v(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function v(t,e,r,n,i){var a,o=1,s=t.length,l=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;o=2,s/=2,l/=2,r/=2}function c(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var u=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var f=!0,h=0;hi&&(n=i):n=i;var a=e.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(e,t.length-r),t,r,n)}function M(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function k(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(u=c);break;case 2:128==(192&(a=t[i+1]))&&(l=(31&c)<<6|63&a)>127&&(u=l);break;case 3:a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&(l=(15&c)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&c)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,f=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=f}return function(t){var e=t.length;if(e<=A)return String.fromCharCode.apply(String,t);var r="",n=0;for(;nthis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return S(this,e,r);case"utf8":case"utf-8":return k(this,e,r);case"ascii":return T(this,e,r);case"latin1":case"binary":return E(this,e,r);case"base64":return M(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!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="",e=r.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,e).match(/.{2}/g).join(" "),this.length>e&&(t+=" ... ")),""},s.prototype.compare=function(t,e,r,n,i){if(!s.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(e>>>=0,r>>>=0,n>>>=0,i>>>=0,this===t)return 0;for(var a=i-n,o=r-e,l=Math.min(a,o),c=this.slice(n,i),u=t.slice(e,r),f=0;f>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var a=!1;;)switch(n){case"hex":return g(this,t,e,r);case"utf8":case"utf-8":return y(this,t,e,r);case"ascii":return b(this,t,e,r);case"latin1":case"binary":return x(this,t,e,r);case"base64":return _(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return w(this,t,e,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var A=4096;function T(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i="",a=e;ar)throw new RangeError("Trying to access beyond buffer length")}function P(t,e,r,n,i,a){if(!s.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function z(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function O(t,e,r,n,a){return e=+e,r>>>=0,a||z(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function D(t,e,r,n,a){return e=+e,r>>>=0,a||z(t,0,r,8),i.write(t,e,r,n,52,8),r+8}s.prototype.slice=function(t,e){var r=this.length;t=~~t,e=void 0===e?r:~~e,t<0?(t+=r)<0&&(t=0):t>r&&(t=r),e<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||C(t,e,this.length);for(var n=this[t],i=1,a=0;++a>>=0,e>>>=0,r||C(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},s.prototype.readUInt8=function(t,e){return t>>>=0,e||C(t,1,this.length),this[t]},s.prototype.readUInt16LE=function(t,e){return t>>>=0,e||C(t,2,this.length),this[t]|this[t+1]<<8},s.prototype.readUInt16BE=function(t,e){return t>>>=0,e||C(t,2,this.length),this[t]<<8|this[t+1]},s.prototype.readUInt32LE=function(t,e){return t>>>=0,e||C(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 t>>>=0,e||C(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},s.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||C(t,e,this.length);for(var n=this[t],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*e)),n},s.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||C(t,e,this.length);for(var n=e,i=1,a=this[t+--n];n>0&&(i*=256);)a+=this[t+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*e)),a},s.prototype.readInt8=function(t,e){return t>>>=0,e||C(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},s.prototype.readInt16LE=function(t,e){t>>>=0,e||C(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt16BE=function(t,e){t>>>=0,e||C(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt32LE=function(t,e){return t>>>=0,e||C(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 t>>>=0,e||C(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 t>>>=0,e||C(t,4,this.length),i.read(this,t,!0,23,4)},s.prototype.readFloatBE=function(t,e){return t>>>=0,e||C(t,4,this.length),i.read(this,t,!1,23,4)},s.prototype.readDoubleLE=function(t,e){return t>>>=0,e||C(t,8,this.length),i.read(this,t,!0,52,8)},s.prototype.readDoubleBE=function(t,e){return t>>>=0,e||C(t,8,this.length),i.read(this,t,!1,52,8)},s.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||P(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[e]=255&t;++a>>=0,r>>>=0,n)||P(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+r},s.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,1,255,0),this[e]=255&t,e+1},s.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},s.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},s.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},s.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},s.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);P(this,t,e,r,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a>0)-s&255;return e+r},s.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);P(this,t,e,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+r},s.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},s.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},s.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},s.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},s.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},s.prototype.writeFloatLE=function(t,e,r){return O(this,t,e,!0,r)},s.prototype.writeFloatBE=function(t,e,r){return O(this,t,e,!1,r)},s.prototype.writeDoubleLE=function(t,e,r){return D(this,t,e,!0,r)},s.prototype.writeDoubleBE=function(t,e,r){return D(this,t,e,!1,r)},s.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(a<1e3)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(a=e;a55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function F(t){return n.toByteArray(function(t){if((t=t.trim().replace(I,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function j(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function B(t){return t instanceof ArrayBuffer||null!=t&&null!=t.constructor&&"ArrayBuffer"===t.constructor.name&&"number"==typeof t.byteLength}function U(t){return"function"==typeof ArrayBuffer.isView&&ArrayBuffer.isView(t)}function V(t){return t!=t}},{"base64-js":84,ieee754:257}],84:[function(t,e,r){"use strict";r.byteLength=function(t){return 3*t.length/4-c(t)},r.toByteArray=function(t){var e,r,n,o,s,l=t.length;o=c(t),s=new a(3*l/4-o),r=o>0?l-4:l;var u=0;for(e=0;e>16&255,s[u++]=n>>8&255,s[u++]=255&n;2===o?(n=i[t.charCodeAt(e)]<<2|i[t.charCodeAt(e+1)]>>4,s[u++]=255&n):1===o&&(n=i[t.charCodeAt(e)]<<10|i[t.charCodeAt(e+1)]<<4|i[t.charCodeAt(e+2)]>>2,s[u++]=n>>8&255,s[u++]=255&n);return s},r.fromByteArray=function(t){for(var e,r=t.length,i=r%3,a="",o=[],s=0,l=r-i;sl?l:s+16383));1===i?(e=t[r-1],a+=n[e>>2],a+=n[e<<4&63],a+="=="):2===i&&(e=(t[r-2]<<8)+t[r-1],a+=n[e>>10],a+=n[e>>4&63],a+=n[e<<2&63],a+="=");return o.push(a),o.join("")};for(var n=[],i=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=o.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function u(t,e,r){for(var i,a,o=[],s=e;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},{}],85:[function(t,e,r){"use strict";var n=t("./lib/monotone"),i=t("./lib/triangulation"),a=t("./lib/delaunay"),o=t("./lib/filter");function s(t){return[Math.min(t[0],t[1]),Math.max(t[0],t[1])]}function l(t,e){return t[0]-e[0]||t[1]-e[1]}function c(t,e,r){return e in t?t[e]:r}e.exports=function(t,e,r){Array.isArray(e)?(r=r||{},e=e||[]):(r=e||{},e=[]);var u=!!c(r,"delaunay",!0),f=!!c(r,"interior",!0),h=!!c(r,"exterior",!0),d=!!c(r,"infinity",!1);if(!f&&!h||0===t.length)return[];var p=n(t,e);if(u||f!==h||d){for(var m=i(t.length,function(t){return t.map(s).sort(l)}(e)),v=0;v0;){for(var u=r.pop(),s=r.pop(),f=-1,h=-1,l=o[s],p=1;p=0||(e.flip(s,u),i(t,e,r,f,s,h),i(t,e,r,s,h,f),i(t,e,r,h,u,f),i(t,e,r,u,f,h)))}}},{"binary-search-bounds":90,"robust-in-sphere":493}],87:[function(t,e,r){"use strict";var n,i=t("binary-search-bounds");function a(t,e,r,n,i,a,o){this.cells=t,this.neighbor=e,this.flags=n,this.constraint=r,this.active=i,this.next=a,this.boundary=o}function o(t,e){return t[0]-e[0]||t[1]-e[1]||t[2]-e[2]}e.exports=function(t,e,r){var n=function(t,e){for(var r=t.cells(),n=r.length,i=0;i0||l.length>0;){for(;s.length>0;){var d=s.pop();if(c[d]!==-i){c[d]=i;u[d];for(var p=0;p<3;++p){var m=h[3*d+p];m>=0&&0===c[m]&&(f[3*d+p]?l.push(m):(s.push(m),c[m]=i))}}}var v=l;l=s,s=v,l.length=0,i=-i}var g=function(t,e,r){for(var n=0,i=0;i1&&i(r[h[d-2]],r[h[d-1]],a)>0;)t.push([h[d-1],h[d-2],o]),d-=1;h.length=d,h.push(o);var p=u.upperIds;for(d=p.length;d>1&&i(r[p[d-2]],r[p[d-1]],a)<0;)t.push([p[d-2],p[d-1],o]),d-=1;p.length=d,p.push(o)}}function d(t,e){var r;return(r=t.a[0]g[0]&&i.push(new c(g,v,s,f),new c(v,g,o,f))}i.sort(u);for(var y=i[0].a[0]-(1+Math.abs(i[0].a[0]))*Math.pow(2,-52),b=[new l([y,1],[y,0],-1,[],[],[],[])],x=[],f=0,_=i.length;f<_;++f){var w=i[f],M=w.type;M===a?h(x,b,t,w.a,w.idx):M===s?p(b,t,w):m(b,t,w)}return x}},{"binary-search-bounds":90,"robust-orientation":495}],89:[function(t,e,r){"use strict";var n=t("binary-search-bounds");function i(t,e){this.stars=t,this.edges=e}e.exports=function(t,e){for(var r=new Array(t),n=0;n=0}}(),a.removeTriangle=function(t,e,r){var n=this.stars;o(n[t],e,r),o(n[e],r,t),o(n[r],t,e)},a.addTriangle=function(t,e,r){var n=this.stars;n[t].push(e,r),n[e].push(r,t),n[r].push(t,e)},a.opposite=function(t,e){for(var r=this.stars[e],n=1,i=r.length;n>>1,x=a[m]"];return i?e.indexOf("c")<0?a.push(";if(x===y){return m}else if(x<=y){"):a.push(";var p=c(x,y);if(p===0){return m}else if(p<=0){"):a.push(";if(",e,"){i=m;"),r?a.push("l=m+1}else{h=m-1}"):a.push("h=m-1}else{l=m+1}"),a.push("}"),i?a.push("return -1};"):a.push("return i};"),a.join("")}function i(t,e,r,i){return new Function([n("A","x"+t+"y",e,["y"],i),n("P","c(x,y)"+t+"0",e,["y","c"],i),"function dispatchBsearch",r,"(a,y,c,l,h){if(typeof(c)==='function'){return P(a,(l===void 0)?0:l|0,(h===void 0)?a.length-1:h|0,y,c)}else{return A(a,(c===void 0)?0:c|0,(l===void 0)?a.length-1:l|0,y)}}return dispatchBsearch",r].join(""))()}e.exports={ge:i(">=",!1,"GE"),gt:i(">",!1,"GT"),lt:i("<",!0,"LT"),le:i("<=",!0,"LE"),eq:i("-",!0,"EQ",!0)}},{}],91:[function(t,e,r){"use strict";e.exports=function(t){for(var e=1,r=1;rr?r:t:te?e:t}},{}],95:[function(t,e,r){"use strict";e.exports=function(t,e,r){var n;if(r){n=e;for(var i=new Array(e.length),a=0;ae[2]?1:0)}function g(t,e,r){if(0!==t.length){if(e)for(var n=0;n=0;--a){var b=e[u=(E=n[a])[0]],x=b[0],_=b[1],w=t[x],M=t[_];if((w[0]-M[0]||w[1]-M[1])<0){var k=x;x=_,_=k}b[0]=x;var A,T=b[1]=E[1];for(i&&(A=b[2]);a>0&&n[a-1][0]===u;){var E,S=(E=n[--a])[1];i?e.push([T,S,A]):e.push([T,S]),T=S}i?e.push([T,_,A]):e.push([T,_])}return h}(t,e,h,v,r));return g(e,y,r),!!y||(h.length>0||v.length>0)}},{"./lib/rat-seg-intersect":96,"big-rat":57,"big-rat/cmp":55,"big-rat/to-float":69,"box-intersect":75,nextafter:440,"rat-vec":477,"robust-segment-intersect":498,"union-find":535}],96:[function(t,e,r){"use strict";e.exports=function(t,e,r,n){var a=s(e,t),f=s(n,r),h=u(a,f);if(0===o(h))return null;var d=s(t,r),p=u(f,d),m=i(p,h),v=c(a,m);return l(t,v)};var n=t("big-rat/mul"),i=t("big-rat/div"),a=t("big-rat/sub"),o=t("big-rat/sign"),s=t("rat-vec/sub"),l=t("rat-vec/add"),c=t("rat-vec/muls");function u(t,e){return a(n(t[0],e[1]),n(t[1],e[0]))}},{"big-rat/div":56,"big-rat/mul":66,"big-rat/sign":67,"big-rat/sub":68,"rat-vec/add":476,"rat-vec/muls":478,"rat-vec/sub":479}],97:[function(t,e,r){"use strict";var n=t("clamp");function i(t,e){null==e&&(e=!0);var r=t[0],i=t[1],a=t[2],o=t[3];return null==o&&(o=e?1:255),e&&(r*=255,i*=255,a*=255,o*=255),16777216*(r=255&n(r,0,255))+((i=255&n(i,0,255))<<16)+((a=255&n(a,0,255))<<8)+(o=255&n(o,0,255))}e.exports=i,e.exports.to=i,e.exports.from=function(t,e){var r=(t=+t)>>>24,n=(16711680&t)>>>16,i=(65280&t)>>>8,a=255&t;return!1===e?[r,n,i,a]:[r/255,n/255,i/255,a/255]}},{clamp:94}],98:[function(t,e,r){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],99:[function(t,e,r){"use strict";var n=t("color-rgba"),i=t("clamp"),a=t("dtype");e.exports=function(t,e){"float"!==e&&e||(e="array"),"uint"===e&&(e="uint8"),"uint_clamped"===e&&(e="uint8_clamped");var r=a(e),o=new r(4);if(t instanceof r)return Array.isArray(t)?t.slice():(o.set(t),o);var s="uint8"!==e&&"uint8_clamped"!==e;return t instanceof Uint8Array||t instanceof Uint8ClampedArray?(o[0]=t[0],o[1]=t[1],o[2]=t[2],o[3]=null!=t[3]?t[3]:255,s&&(o[0]/=255,o[1]/=255,o[2]/=255,o[3]/=255),o):(t.length&&"string"!=typeof t||((t=n(t))[0]/=255,t[1]/=255,t[2]/=255),s?(o[0]=t[0],o[1]=t[1],o[2]=t[2],o[3]=null!=t[3]?t[3]:1):(o[0]=i(Math.round(255*t[0]),0,255),o[1]=i(Math.round(255*t[1]),0,255),o[2]=i(Math.round(255*t[2]),0,255),o[3]=null==t[3]?255:i(Math.floor(255*t[3]),0,255)),o)}},{clamp:94,"color-rgba":101,dtype:133}],100:[function(t,e,r){(function(r){"use strict";var n=t("color-name"),i=t("is-plain-obj"),a=t("defined");e.exports=function(t){var e,s,l=[],c=1;if("string"==typeof t)if(n[t])l=n[t].slice(),s="rgb";else if("transparent"===t)c=0,s="rgb",l=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(t)){var u=t.slice(1),f=u.length,h=f<=4;c=1,h?(l=[parseInt(u[0]+u[0],16),parseInt(u[1]+u[1],16),parseInt(u[2]+u[2],16)],4===f&&(c=parseInt(u[3]+u[3],16)/255)):(l=[parseInt(u[0]+u[1],16),parseInt(u[2]+u[3],16),parseInt(u[4]+u[5],16)],8===f&&(c=parseInt(u[6]+u[7],16)/255)),l[0]||(l[0]=0),l[1]||(l[1]=0),l[2]||(l[2]=0),s="rgb"}else if(e=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(t)){var d=e[1],u=d.replace(/a$/,"");s=u;var f="cmyk"===u?4:"gray"===u?1:3;l=e[2].trim().split(/\s*,\s*/).map(function(t,e){if(/%$/.test(t))return e===f?parseFloat(t)/100:"rgb"===u?255*parseFloat(t)/100:parseFloat(t);if("h"===u[e]){if(/deg$/.test(t))return parseFloat(t);if(void 0!==o[t])return o[t]}return parseFloat(t)}),d===u&&l.push(1),c=void 0===l[f]?1:l[f],l=l.slice(0,f)}else t.length>10&&/[0-9](?:\s|\/)/.test(t)&&(l=t.match(/([0-9]+)/g).map(function(t){return parseFloat(t)}),s=t.match(/([a-z])/gi).join("").toLowerCase());else if("number"==typeof t)s="rgb",l=[t>>>16,(65280&t)>>>8,255&t];else if(i(t)){var p=a(t.r,t.red,t.R,null);null!==p?(s="rgb",l=[p,a(t.g,t.green,t.G),a(t.b,t.blue,t.B)]):(s="hsl",l=[a(t.h,t.hue,t.H),a(t.s,t.saturation,t.S),a(t.l,t.lightness,t.L,t.b,t.brightness)]),c=a(t.a,t.alpha,t.opacity,1),null!=t.opacity&&(c/=100)}else(Array.isArray(t)||r.ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(t))&&(l=[t[0],t[1],t[2]],s="rgb",c=4===t.length?t[3]:1);return{space:s,values:l,alpha:c}};var o={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"color-name":98,defined:129,"is-plain-obj":266}],101:[function(t,e,r){"use strict";var n=t("color-parse"),i=t("color-space/hsl"),a=t("clamp");e.exports=function(t){var e;if("string"!=typeof t)throw Error("Argument should be a string");var r=n(t);return r.space?((e=Array(3))[0]=a(r.values[0],0,255),e[1]=a(r.values[1],0,255),e[2]=a(r.values[2],0,255),"h"===r.space[0]&&(e=i.rgb(e)),e.push(a(r.alpha,0,1)),e):[]}},{clamp:94,"color-parse":100,"color-space/hsl":102}],102:[function(t,e,r){"use strict";var n=t("./rgb");e.exports={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(t){var e,r,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[a=255*l,a,a];e=2*l-(r=l<.5?l*(1+s):l+s-l*s),i=[0,0,0];for(var c=0;c<3;c++)(n=o+1/3*-(c-1))<0?n++:n>1&&n--,a=6*n<1?e+6*(r-e)*n:2*n<1?r:3*n<2?e+(r-e)*(2/3-n)*6:e,i[c]=255*a;return i}},n.hsl=function(t){var e,r,n=t[0]/255,i=t[1]/255,a=t[2]/255,o=Math.min(n,i,a),s=Math.max(n,i,a),l=s-o;return s===o?e=0:n===s?e=(i-a)/l:i===s?e=2+(a-n)/l:a===s&&(e=4+(n-i)/l),(e=Math.min(60*e,360))<0&&(e+=360),r=(o+s)/2,[e,100*(s===o?0:r<=.5?l/(s+o):l/(2-s-o)),100*r]}},{"./rgb":103}],103:[function(t,e,r){"use strict";e.exports={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]}},{}],104:[function(t,e,r){e.exports={jet:[{index:0,rgb:[0,0,131]},{index:.125,rgb:[0,60,170]},{index:.375,rgb:[5,255,255]},{index:.625,rgb:[255,255,0]},{index:.875,rgb:[250,0,0]},{index:1,rgb:[128,0,0]}],hsv:[{index:0,rgb:[255,0,0]},{index:.169,rgb:[253,255,2]},{index:.173,rgb:[247,255,2]},{index:.337,rgb:[0,252,4]},{index:.341,rgb:[0,252,10]},{index:.506,rgb:[1,249,255]},{index:.671,rgb:[2,0,253]},{index:.675,rgb:[8,0,253]},{index:.839,rgb:[255,0,251]},{index:.843,rgb:[255,0,245]},{index:1,rgb:[255,0,6]}],hot:[{index:0,rgb:[0,0,0]},{index:.3,rgb:[230,0,0]},{index:.6,rgb:[255,210,0]},{index:1,rgb:[255,255,255]}],cool:[{index:0,rgb:[0,255,255]},{index:1,rgb:[255,0,255]}],spring:[{index:0,rgb:[255,0,255]},{index:1,rgb:[255,255,0]}],summer:[{index:0,rgb:[0,128,102]},{index:1,rgb:[255,255,102]}],autumn:[{index:0,rgb:[255,0,0]},{index:1,rgb:[255,255,0]}],winter:[{index:0,rgb:[0,0,255]},{index:1,rgb:[0,255,128]}],bone:[{index:0,rgb:[0,0,0]},{index:.376,rgb:[84,84,116]},{index:.753,rgb:[169,200,200]},{index:1,rgb:[255,255,255]}],copper:[{index:0,rgb:[0,0,0]},{index:.804,rgb:[255,160,102]},{index:1,rgb:[255,199,127]}],greys:[{index:0,rgb:[0,0,0]},{index:1,rgb:[255,255,255]}],yignbu:[{index:0,rgb:[8,29,88]},{index:.125,rgb:[37,52,148]},{index:.25,rgb:[34,94,168]},{index:.375,rgb:[29,145,192]},{index:.5,rgb:[65,182,196]},{index:.625,rgb:[127,205,187]},{index:.75,rgb:[199,233,180]},{index:.875,rgb:[237,248,217]},{index:1,rgb:[255,255,217]}],greens:[{index:0,rgb:[0,68,27]},{index:.125,rgb:[0,109,44]},{index:.25,rgb:[35,139,69]},{index:.375,rgb:[65,171,93]},{index:.5,rgb:[116,196,118]},{index:.625,rgb:[161,217,155]},{index:.75,rgb:[199,233,192]},{index:.875,rgb:[229,245,224]},{index:1,rgb:[247,252,245]}],yiorrd:[{index:0,rgb:[128,0,38]},{index:.125,rgb:[189,0,38]},{index:.25,rgb:[227,26,28]},{index:.375,rgb:[252,78,42]},{index:.5,rgb:[253,141,60]},{index:.625,rgb:[254,178,76]},{index:.75,rgb:[254,217,118]},{index:.875,rgb:[255,237,160]},{index:1,rgb:[255,255,204]}],bluered:[{index:0,rgb:[0,0,255]},{index:1,rgb:[255,0,0]}],rdbu:[{index:0,rgb:[5,10,172]},{index:.35,rgb:[106,137,247]},{index:.5,rgb:[190,190,190]},{index:.6,rgb:[220,170,132]},{index:.7,rgb:[230,145,90]},{index:1,rgb:[178,10,28]}],picnic:[{index:0,rgb:[0,0,255]},{index:.1,rgb:[51,153,255]},{index:.2,rgb:[102,204,255]},{index:.3,rgb:[153,204,255]},{index:.4,rgb:[204,204,255]},{index:.5,rgb:[255,255,255]},{index:.6,rgb:[255,204,255]},{index:.7,rgb:[255,153,255]},{index:.8,rgb:[255,102,204]},{index:.9,rgb:[255,102,102]},{index:1,rgb:[255,0,0]}],rainbow:[{index:0,rgb:[150,0,90]},{index:.125,rgb:[0,0,200]},{index:.25,rgb:[0,25,255]},{index:.375,rgb:[0,152,255]},{index:.5,rgb:[44,255,150]},{index:.625,rgb:[151,255,0]},{index:.75,rgb:[255,234,0]},{index:.875,rgb:[255,111,0]},{index:1,rgb:[255,0,0]}],portland:[{index:0,rgb:[12,51,131]},{index:.25,rgb:[10,136,186]},{index:.5,rgb:[242,211,56]},{index:.75,rgb:[242,143,56]},{index:1,rgb:[217,30,30]}],blackbody:[{index:0,rgb:[0,0,0]},{index:.2,rgb:[230,0,0]},{index:.4,rgb:[230,210,0]},{index:.7,rgb:[255,255,255]},{index:1,rgb:[160,200,255]}],earth:[{index:0,rgb:[0,0,130]},{index:.1,rgb:[0,180,180]},{index:.2,rgb:[40,210,40]},{index:.4,rgb:[230,230,50]},{index:.6,rgb:[120,70,20]},{index:1,rgb:[255,255,255]}],electric:[{index:0,rgb:[0,0,0]},{index:.15,rgb:[30,0,100]},{index:.4,rgb:[120,0,100]},{index:.6,rgb:[160,90,0]},{index:.8,rgb:[230,200,0]},{index:1,rgb:[255,250,220]}],alpha:[{index:0,rgb:[255,255,255,0]},{index:1,rgb:[255,255,255,1]}],viridis:[{index:0,rgb:[68,1,84]},{index:.13,rgb:[71,44,122]},{index:.25,rgb:[59,81,139]},{index:.38,rgb:[44,113,142]},{index:.5,rgb:[33,144,141]},{index:.63,rgb:[39,173,129]},{index:.75,rgb:[92,200,99]},{index:.88,rgb:[170,220,50]},{index:1,rgb:[253,231,37]}],inferno:[{index:0,rgb:[0,0,4]},{index:.13,rgb:[31,12,72]},{index:.25,rgb:[85,15,109]},{index:.38,rgb:[136,34,106]},{index:.5,rgb:[186,54,85]},{index:.63,rgb:[227,89,51]},{index:.75,rgb:[249,140,10]},{index:.88,rgb:[249,201,50]},{index:1,rgb:[252,255,164]}],magma:[{index:0,rgb:[0,0,4]},{index:.13,rgb:[28,16,68]},{index:.25,rgb:[79,18,123]},{index:.38,rgb:[129,37,129]},{index:.5,rgb:[181,54,122]},{index:.63,rgb:[229,80,100]},{index:.75,rgb:[251,135,97]},{index:.88,rgb:[254,194,135]},{index:1,rgb:[252,253,191]}],plasma:[{index:0,rgb:[13,8,135]},{index:.13,rgb:[75,3,161]},{index:.25,rgb:[125,3,168]},{index:.38,rgb:[168,34,150]},{index:.5,rgb:[203,70,121]},{index:.63,rgb:[229,107,93]},{index:.75,rgb:[248,148,65]},{index:.88,rgb:[253,195,40]},{index:1,rgb:[240,249,33]}],warm:[{index:0,rgb:[125,0,179]},{index:.13,rgb:[172,0,187]},{index:.25,rgb:[219,0,170]},{index:.38,rgb:[255,0,130]},{index:.5,rgb:[255,63,74]},{index:.63,rgb:[255,123,0]},{index:.75,rgb:[234,176,0]},{index:.88,rgb:[190,228,0]},{index:1,rgb:[147,255,0]}],cool:[{index:0,rgb:[125,0,179]},{index:.13,rgb:[116,0,218]},{index:.25,rgb:[98,74,237]},{index:.38,rgb:[68,146,231]},{index:.5,rgb:[0,204,197]},{index:.63,rgb:[0,247,146]},{index:.75,rgb:[0,255,88]},{index:.88,rgb:[40,255,8]},{index:1,rgb:[147,255,0]}],"rainbow-soft":[{index:0,rgb:[125,0,179]},{index:.1,rgb:[199,0,180]},{index:.2,rgb:[255,0,121]},{index:.3,rgb:[255,108,0]},{index:.4,rgb:[222,194,0]},{index:.5,rgb:[150,255,0]},{index:.6,rgb:[0,255,55]},{index:.7,rgb:[0,246,150]},{index:.8,rgb:[50,167,222]},{index:.9,rgb:[103,51,235]},{index:1,rgb:[124,0,186]}],bathymetry:[{index:0,rgb:[40,26,44]},{index:.13,rgb:[59,49,90]},{index:.25,rgb:[64,76,139]},{index:.38,rgb:[63,110,151]},{index:.5,rgb:[72,142,158]},{index:.63,rgb:[85,174,163]},{index:.75,rgb:[120,206,163]},{index:.88,rgb:[187,230,172]},{index:1,rgb:[253,254,204]}],cdom:[{index:0,rgb:[47,15,62]},{index:.13,rgb:[87,23,86]},{index:.25,rgb:[130,28,99]},{index:.38,rgb:[171,41,96]},{index:.5,rgb:[206,67,86]},{index:.63,rgb:[230,106,84]},{index:.75,rgb:[242,149,103]},{index:.88,rgb:[249,193,135]},{index:1,rgb:[254,237,176]}],chlorophyll:[{index:0,rgb:[18,36,20]},{index:.13,rgb:[25,63,41]},{index:.25,rgb:[24,91,59]},{index:.38,rgb:[13,119,72]},{index:.5,rgb:[18,148,80]},{index:.63,rgb:[80,173,89]},{index:.75,rgb:[132,196,122]},{index:.88,rgb:[175,221,162]},{index:1,rgb:[215,249,208]}],density:[{index:0,rgb:[54,14,36]},{index:.13,rgb:[89,23,80]},{index:.25,rgb:[110,45,132]},{index:.38,rgb:[120,77,178]},{index:.5,rgb:[120,113,213]},{index:.63,rgb:[115,151,228]},{index:.75,rgb:[134,185,227]},{index:.88,rgb:[177,214,227]},{index:1,rgb:[230,241,241]}],"freesurface-blue":[{index:0,rgb:[30,4,110]},{index:.13,rgb:[47,14,176]},{index:.25,rgb:[41,45,236]},{index:.38,rgb:[25,99,212]},{index:.5,rgb:[68,131,200]},{index:.63,rgb:[114,156,197]},{index:.75,rgb:[157,181,203]},{index:.88,rgb:[200,208,216]},{index:1,rgb:[241,237,236]}],"freesurface-red":[{index:0,rgb:[60,9,18]},{index:.13,rgb:[100,17,27]},{index:.25,rgb:[142,20,29]},{index:.38,rgb:[177,43,27]},{index:.5,rgb:[192,87,63]},{index:.63,rgb:[205,125,105]},{index:.75,rgb:[216,162,148]},{index:.88,rgb:[227,199,193]},{index:1,rgb:[241,237,236]}],oxygen:[{index:0,rgb:[64,5,5]},{index:.13,rgb:[106,6,15]},{index:.25,rgb:[144,26,7]},{index:.38,rgb:[168,64,3]},{index:.5,rgb:[188,100,4]},{index:.63,rgb:[206,136,11]},{index:.75,rgb:[220,174,25]},{index:.88,rgb:[231,215,44]},{index:1,rgb:[248,254,105]}],par:[{index:0,rgb:[51,20,24]},{index:.13,rgb:[90,32,35]},{index:.25,rgb:[129,44,34]},{index:.38,rgb:[159,68,25]},{index:.5,rgb:[182,99,19]},{index:.63,rgb:[199,134,22]},{index:.75,rgb:[212,171,35]},{index:.88,rgb:[221,210,54]},{index:1,rgb:[225,253,75]}],phase:[{index:0,rgb:[145,105,18]},{index:.13,rgb:[184,71,38]},{index:.25,rgb:[186,58,115]},{index:.38,rgb:[160,71,185]},{index:.5,rgb:[110,97,218]},{index:.63,rgb:[50,123,164]},{index:.75,rgb:[31,131,110]},{index:.88,rgb:[77,129,34]},{index:1,rgb:[145,105,18]}],salinity:[{index:0,rgb:[42,24,108]},{index:.13,rgb:[33,50,162]},{index:.25,rgb:[15,90,145]},{index:.38,rgb:[40,118,137]},{index:.5,rgb:[59,146,135]},{index:.63,rgb:[79,175,126]},{index:.75,rgb:[120,203,104]},{index:.88,rgb:[193,221,100]},{index:1,rgb:[253,239,154]}],temperature:[{index:0,rgb:[4,35,51]},{index:.13,rgb:[23,51,122]},{index:.25,rgb:[85,59,157]},{index:.38,rgb:[129,79,143]},{index:.5,rgb:[175,95,130]},{index:.63,rgb:[222,112,101]},{index:.75,rgb:[249,146,66]},{index:.88,rgb:[249,196,65]},{index:1,rgb:[232,250,91]}],turbidity:[{index:0,rgb:[34,31,27]},{index:.13,rgb:[65,50,41]},{index:.25,rgb:[98,69,52]},{index:.38,rgb:[131,89,57]},{index:.5,rgb:[161,112,59]},{index:.63,rgb:[185,140,66]},{index:.75,rgb:[202,174,88]},{index:.88,rgb:[216,209,126]},{index:1,rgb:[233,246,171]}],"velocity-blue":[{index:0,rgb:[17,32,64]},{index:.13,rgb:[35,52,116]},{index:.25,rgb:[29,81,156]},{index:.38,rgb:[31,113,162]},{index:.5,rgb:[50,144,169]},{index:.63,rgb:[87,173,176]},{index:.75,rgb:[149,196,189]},{index:.88,rgb:[203,221,211]},{index:1,rgb:[254,251,230]}],"velocity-green":[{index:0,rgb:[23,35,19]},{index:.13,rgb:[24,64,38]},{index:.25,rgb:[11,95,45]},{index:.38,rgb:[39,123,35]},{index:.5,rgb:[95,146,12]},{index:.63,rgb:[152,165,18]},{index:.75,rgb:[201,186,69]},{index:.88,rgb:[233,216,137]},{index:1,rgb:[255,253,205]}],cubehelix:[{index:0,rgb:[0,0,0]},{index:.07,rgb:[22,5,59]},{index:.13,rgb:[60,4,105]},{index:.2,rgb:[109,1,135]},{index:.27,rgb:[161,0,147]},{index:.33,rgb:[210,2,142]},{index:.4,rgb:[251,11,123]},{index:.47,rgb:[255,29,97]},{index:.53,rgb:[255,54,69]},{index:.6,rgb:[255,85,46]},{index:.67,rgb:[255,120,34]},{index:.73,rgb:[255,157,37]},{index:.8,rgb:[241,191,57]},{index:.87,rgb:[224,220,93]},{index:.93,rgb:[218,241,142]},{index:1,rgb:[227,253,198]}]}},{}],105:[function(t,e,r){"use strict";var n=t("./colorScale"),i=t("lerp");function a(t){return[t[0]/255,t[1]/255,t[2]/255,t[3]]}function o(t){for(var e,r="#",n=0;n<3;++n)r+=("00"+(e=(e=t[n]).toString(16))).substr(e.length);return r}function s(t){return"rgba("+t.join(",")+")"}e.exports=function(t){var e,r,l,c,u,f,h,d,p,m;t||(t={});d=(t.nshades||72)-1,h=t.format||"hex",(f=t.colormap)||(f="jet");if("string"==typeof f){if(f=f.toLowerCase(),!n[f])throw Error(f+" not a supported colorscale");u=n[f]}else{if(!Array.isArray(f))throw Error("unsupported colormap option",f);u=f.slice()}if(u.length>d)throw new Error(f+" map requires nshades to be at least size "+u.length);p=Array.isArray(t.alpha)?2!==t.alpha.length?[1,1]:t.alpha.slice():"number"==typeof t.alpha?[t.alpha,t.alpha]:[1,1];e=u.map(function(t){return Math.round(t.index*d)}),p[0]=Math.min(Math.max(p[0],0),1),p[1]=Math.min(Math.max(p[1],0),1);var v=u.map(function(t,e){var r=u[e].index,n=u[e].rgb.slice();return 4===n.length&&n[3]>=0&&n[3]<=1?n:(n[3]=p[0]+(p[1]-p[0])*r,n)}),g=[];for(m=0;m0?-1:l(t,e,a)?-1:1:0===s?c>0?1:l(t,e,r)?1:-1:i(c-s)}var h=n(t,e,r);if(h>0)return o>0&&n(t,e,a)>0?1:-1;if(h<0)return o>0||n(t,e,a)>0?1:-1;var d=n(t,e,a);return d>0?1:l(t,e,r)?1:-1};var n=t("robust-orientation"),i=t("signum"),a=t("two-sum"),o=t("robust-product"),s=t("robust-sum");function l(t,e,r){var n=a(t[0],-e[0]),i=a(t[1],-e[1]),l=a(r[0],-e[0]),c=a(r[1],-e[1]),u=s(o(n,l),o(i,c));return u[u.length-1]>=0}},{"robust-orientation":495,"robust-product":496,"robust-sum":500,signum:502,"two-sum":533}],107:[function(t,e,r){e.exports=function(t,e){var r=t.length,a=t.length-e.length;if(a)return a;switch(r){case 0:return 0;case 1:return t[0]-e[0];case 2:return t[0]+t[1]-e[0]-e[1]||n(t[0],t[1])-n(e[0],e[1]);case 3:var o=t[0]+t[1],s=e[0]+e[1];if(a=o+t[2]-(s+e[2]))return a;var l=n(t[0],t[1]),c=n(e[0],e[1]);return n(l,t[2])-n(c,e[2])||n(l+t[2],o)-n(c+e[2],s);case 4:var u=t[0],f=t[1],h=t[2],d=t[3],p=e[0],m=e[1],v=e[2],g=e[3];return u+f+h+d-(p+m+v+g)||n(u,f,h,d)-n(p,m,v,g,p)||n(u+f,u+h,u+d,f+h,f+d,h+d)-n(p+m,p+v,p+g,m+v,m+g,v+g)||n(u+f+h,u+f+d,u+h+d,f+h+d)-n(p+m+v,p+m+g,p+v+g,m+v+g);default:for(var y=t.slice().sort(i),b=e.slice().sort(i),x=0;xt[r][0]&&(r=n);return er?[[r],[e]]:[[e]]}},{}],111:[function(t,e,r){"use strict";e.exports=function(t){var e=n(t),r=e.length;if(r<=2)return[];for(var i=new Array(r),a=e[r-1],o=0;o=e[l]&&(s+=1);a[o]=s}}return t}(o,r)}};var n=t("incremental-convex-hull"),i=t("affine-hull")},{"affine-hull":45,"incremental-convex-hull":258}],113:[function(t,e,r){e.exports={AFG:"afghan",ALA:"\\b\\wland",ALB:"albania",DZA:"algeria",ASM:"^(?=.*americ).*samoa",AND:"andorra",AGO:"angola",AIA:"anguill?a",ATA:"antarctica",ATG:"antigua",ARG:"argentin",ARM:"armenia",ABW:"^(?!.*bonaire).*\\baruba",AUS:"australia",AUT:"^(?!.*hungary).*austria|\\baustri.*\\bemp",AZE:"azerbaijan",BHS:"bahamas",BHR:"bahrain",BGD:"bangladesh|^(?=.*east).*paki?stan",BRB:"barbados",BLR:"belarus|byelo",BEL:"^(?!.*luxem).*belgium",BLZ:"belize|^(?=.*british).*honduras",BEN:"benin|dahome",BMU:"bermuda",BTN:"bhutan",BOL:"bolivia",BES:"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\bbes.?islands",BIH:"herzegovina|bosnia",BWA:"botswana|bechuana",BVT:"bouvet",BRA:"brazil",IOT:"british.?indian.?ocean",BRN:"brunei",BGR:"bulgaria",BFA:"burkina|\\bfaso|upper.?volta",BDI:"burundi",CPV:"verde",KHM:"cambodia|kampuchea|khmer",CMR:"cameroon",CAN:"canada",CYM:"cayman",CAF:"\\bcentral.african.republic",TCD:"\\bchad",CHL:"\\bchile",CHN:"^(?!.*\\bmac)(?!.*\\bhong)(?!.*\\btai)(?!.*\\brep).*china|^(?=.*peo)(?=.*rep).*china",CXR:"christmas",CCK:"\\bcocos|keeling",COL:"colombia",COM:"comoro",COG:"^(?!.*\\bdem)(?!.*\\bd[\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\bcongo",COK:"\\bcook",CRI:"costa.?rica",CIV:"ivoire|ivory",HRV:"croatia",CUB:"\\bcuba",CUW:"^(?!.*bonaire).*\\bcura(c|\xe7)ao",CYP:"cyprus",CSK:"czechoslovakia",CZE:"^(?=.*rep).*czech|czechia|bohemia",COD:"\\bdem.*congo|congo.*\\bdem|congo.*\\bd[\\.]?r|\\bd[\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc",DNK:"denmark",DJI:"djibouti",DMA:"dominica(?!n)",DOM:"dominican.rep",ECU:"ecuador",EGY:"egypt",SLV:"el.?salvador",GNQ:"guine.*eq|eq.*guine|^(?=.*span).*guinea",ERI:"eritrea",EST:"estonia",ETH:"ethiopia|abyssinia",FLK:"falkland|malvinas",FRO:"faroe|faeroe",FJI:"fiji",FIN:"finland",FRA:"^(?!.*\\bdep)(?!.*martinique).*france|french.?republic|\\bgaul",GUF:"^(?=.*french).*guiana",PYF:"french.?polynesia|tahiti",ATF:"french.?southern",GAB:"gabon",GMB:"gambia",GEO:"^(?!.*south).*georgia",DDR:"german.?democratic.?republic|democratic.?republic.*germany|east.germany",DEU:"^(?!.*east).*germany|^(?=.*\\bfed.*\\brep).*german",GHA:"ghana|gold.?coast",GIB:"gibraltar",GRC:"greece|hellenic|hellas",GRL:"greenland",GRD:"grenada",GLP:"guadeloupe",GUM:"\\bguam",GTM:"guatemala",GGY:"guernsey",GIN:"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea",GNB:"bissau|^(?=.*portu).*guinea",GUY:"guyana|british.?guiana",HTI:"haiti",HMD:"heard.*mcdonald",VAT:"holy.?see|vatican|papal.?st",HND:"^(?!.*brit).*honduras",HKG:"hong.?kong",HUN:"^(?!.*austr).*hungary",ISL:"iceland",IND:"india(?!.*ocea)",IDN:"indonesia",IRN:"\\biran|persia",IRQ:"\\biraq|mesopotamia",IRL:"(^ireland)|(^republic.*ireland)",IMN:"^(?=.*isle).*\\bman",ISR:"israel",ITA:"italy",JAM:"jamaica",JPN:"japan",JEY:"jersey",JOR:"jordan",KAZ:"kazak",KEN:"kenya|british.?east.?africa|east.?africa.?prot",KIR:"kiribati",PRK:"^(?=.*democrat|people|north|d.*p.*.r).*\\bkorea|dprk|korea.*(d.*p.*r)",KWT:"kuwait",KGZ:"kyrgyz|kirghiz",LAO:"\\blaos?\\b",LVA:"latvia",LBN:"lebanon",LSO:"lesotho|basuto",LBR:"liberia",LBY:"libya",LIE:"liechtenstein",LTU:"lithuania",LUX:"^(?!.*belg).*luxem",MAC:"maca(o|u)",MDG:"madagascar|malagasy",MWI:"malawi|nyasa",MYS:"malaysia",MDV:"maldive",MLI:"\\bmali\\b",MLT:"\\bmalta",MHL:"marshall",MTQ:"martinique",MRT:"mauritania",MUS:"mauritius",MYT:"\\bmayotte",MEX:"\\bmexic",FSM:"fed.*micronesia|micronesia.*fed",MCO:"monaco",MNG:"mongolia",MNE:"^(?!.*serbia).*montenegro",MSR:"montserrat",MAR:"morocco|\\bmaroc",MOZ:"mozambique",MMR:"myanmar|burma",NAM:"namibia",NRU:"nauru",NPL:"nepal",NLD:"^(?!.*\\bant)(?!.*\\bcarib).*netherlands",ANT:"^(?=.*\\bant).*(nether|dutch)",NCL:"new.?caledonia",NZL:"new.?zealand",NIC:"nicaragua",NER:"\\bniger(?!ia)",NGA:"nigeria",NIU:"niue",NFK:"norfolk",MNP:"mariana",NOR:"norway",OMN:"\\boman|trucial",PAK:"^(?!.*east).*paki?stan",PLW:"palau",PSE:"palestin|\\bgaza|west.?bank",PAN:"panama",PNG:"papua|new.?guinea",PRY:"paraguay",PER:"peru",PHL:"philippines",PCN:"pitcairn",POL:"poland",PRT:"portugal",PRI:"puerto.?rico",QAT:"qatar",KOR:"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\bkorea(?!.*d.*p.*r)",MDA:"moldov|b(a|e)ssarabia",REU:"r(e|\xe9)union",ROU:"r(o|u|ou)mania",RUS:"\\brussia|soviet.?union|u\\.?s\\.?s\\.?r|socialist.?republics",RWA:"rwanda",BLM:"barth(e|\xe9)lemy",SHN:"helena",KNA:"kitts|\\bnevis",LCA:"\\blucia",MAF:"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)",SPM:"miquelon",VCT:"vincent",WSM:"^(?!.*amer).*samoa",SMR:"san.?marino",STP:"\\bs(a|\xe3)o.?tom(e|\xe9)",SAU:"\\bsa\\w*.?arabia",SEN:"senegal",SRB:"^(?!.*monte).*serbia",SYC:"seychell",SLE:"sierra",SGP:"singapore",SXM:"^(?!.*martin)(?!.*saba).*maarten",SVK:"^(?!.*cze).*slovak",SVN:"slovenia",SLB:"solomon",SOM:"somali",ZAF:"south.africa|s\\\\..?africa",SGS:"south.?georgia|sandwich",SSD:"\\bs\\w*.?sudan",ESP:"spain",LKA:"sri.?lanka|ceylon",SDN:"^(?!.*\\bs(?!u)).*sudan",SUR:"surinam|dutch.?guiana",SJM:"svalbard",SWZ:"swaziland",SWE:"sweden",CHE:"switz|swiss",SYR:"syria",TWN:"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china",TJK:"tajik",THA:"thailand|\\bsiam",MKD:"macedonia|fyrom",TLS:"^(?=.*leste).*timor|^(?=.*east).*timor",TGO:"togo",TKL:"tokelau",TON:"tonga",TTO:"trinidad|tobago",TUN:"tunisia",TUR:"turkey",TKM:"turkmen",TCA:"turks",TUV:"tuvalu",UGA:"uganda",UKR:"ukrain",ARE:"emirates|^u\\.?a\\.?e\\.?$|united.?arab.?em",GBR:"united.?kingdom|britain|^u\\.?k\\.?$",TZA:"tanzania",USA:"united.?states\\b(?!.*islands)|\\bu\\.?s\\.?a\\.?\\b|^\\s*u\\.?s\\.?\\b(?!.*islands)",UMI:"minor.?outlying.?is",URY:"uruguay",UZB:"uzbek",VUT:"vanuatu|new.?hebrides",VEN:"venezuela",VNM:"^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam",VGB:"^(?=.*\\bu\\.?\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin",VIR:"^(?=.*\\bu\\.?\\s?s).*virgin|^(?=.*states).*virgin",WLF:"futuna|wallis",ESH:"western.sahara",YEM:"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\bp\\.?d\\.?r).*yemen",YMD:"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\bp\\.?d\\.?r).*yemen",YUG:"yugoslavia",ZMB:"zambia|northern.?rhodesia",EAZ:"zanzibar",ZWE:"zimbabwe|^(?!.*northern).*rhodesia"}},{}],114:[function(t,e,r){var n={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function i(t){return(t=Math.round(t))<0?0:t>255?255:t}function a(t){return t<0?0:t>1?1:t}function o(t){return"%"===t[t.length-1]?i(parseFloat(t)/100*255):i(parseInt(t))}function s(t){return"%"===t[t.length-1]?a(parseFloat(t)/100):a(parseFloat(t))}function l(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{r.parseCSSColor=function(t){var e,r=t.replace(/ /g,"").toLowerCase();if(r in n)return n[r].slice();if("#"===r[0])return 4===r.length?(e=parseInt(r.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===r.length&&(e=parseInt(r.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var a=r.indexOf("("),c=r.indexOf(")");if(-1!==a&&c+1===r.length){var u=r.substr(0,a),f=r.substr(a+1,c-(a+1)).split(","),h=1;switch(u){case"rgba":if(4!==f.length)return null;h=s(f.pop());case"rgb":return 3!==f.length?null:[o(f[0]),o(f[1]),o(f[2]),h];case"hsla":if(4!==f.length)return null;h=s(f.pop());case"hsl":if(3!==f.length)return null;var d=(parseFloat(f[0])%360+360)%360/360,p=s(f[1]),m=s(f[2]),v=m<=.5?m*(p+1):m+p-m*p,g=2*m-v;return[i(255*l(g,v,d+1/3)),i(255*l(g,v,d)),i(255*l(g,v,d-1/3)),h];default:return null}}return null}}catch(t){}},{}],115:[function(t,e,r){"use strict";e.exports=function(t,e,r,n,i,a){var o=i-1,s=i*i,l=o*o,c=(1+2*i)*l,u=i*l,f=s*(3-2*i),h=s*o;if(t.length){a||(a=new Array(t.length));for(var d=t.length-1;d>=0;--d)a[d]=c*t[d]+u*e[d]+f*r[d]+h*n[d];return a}return c*t+u*e+f*r+h*n},e.exports.derivative=function(t,e,r,n,i,a){var o=6*i*i-6*i,s=3*i*i-4*i+1,l=-6*i*i+6*i,c=3*i*i-2*i;if(t.length){a||(a=new Array(t.length));for(var u=t.length-1;u>=0;--u)a[u]=o*t[u]+s*e[u]+l*r[u]+c*n[u];return a}return o*t+s*e+l*r[u]+c*n}},{}],116:[function(t,e,r){"use strict";var n=t("./lib/thunk.js");e.exports=function(t){var e=new function(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.arrayBlockIndices=[],this.scalarArgs=[],this.offsetArgs=[],this.offsetArgIndex=[],this.indexArgs=[],this.shapeArgs=[],this.funcName="",this.pre=null,this.body=null,this.post=null,this.debug=!1};e.pre=t.pre,e.body=t.body,e.post=t.post;var r=t.args.slice(0);e.argTypes=r;for(var i=0;i0)throw new Error("cwise: pre() block may not reference array args");if(i0)throw new Error("cwise: post() block may not reference array args")}else if("scalar"===a)e.scalarArgs.push(i),e.shimArgs.push("scalar"+i);else if("index"===a){if(e.indexArgs.push(i),i0)throw new Error("cwise: pre() block may not reference array index");if(i0)throw new Error("cwise: post() block may not reference array index")}else if("shape"===a){if(e.shapeArgs.push(i),ir.length)throw new Error("cwise: Too many arguments in pre() block");if(e.body.args.length>r.length)throw new Error("cwise: Too many arguments in body() block");if(e.post.args.length>r.length)throw new Error("cwise: Too many arguments in post() block");return e.debug=!!t.printCode||!!t.debug,e.funcName=t.funcName||"cwise",e.blockSize=t.blockSize||64,n(e)}},{"./lib/thunk.js":118}],117:[function(t,e,r){"use strict";var n=t("uniq");function i(t,e,r){var n,i,a=t.length,o=e.arrayArgs.length,s=e.indexArgs.length>0,l=[],c=[],u=0,f=0;for(n=0;n0&&l.push("var "+c.join(",")),n=a-1;n>=0;--n)u=t[n],l.push(["for(i",n,"=0;i",n,"0&&l.push(["index[",f,"]-=s",f].join("")),l.push(["++index[",u,"]"].join(""))),l.push("}")}return l.join("\n")}function a(t,e,r){for(var n=t.body,i=[],a=[],o=0;o0&&y.push("shape=SS.slice(0)"),t.indexArgs.length>0){var b=new Array(r);for(l=0;l0&&g.push("var "+y.join(",")),l=0;l3&&g.push(a(t.pre,t,s));var M=a(t.body,t,s),k=function(t){for(var e=0,r=t[0].length;e0,c=[],u=0;u0;){"].join("")),c.push(["if(j",u,"<",s,"){"].join("")),c.push(["s",e[u],"=j",u].join("")),c.push(["j",u,"=0"].join("")),c.push(["}else{s",e[u],"=",s].join("")),c.push(["j",u,"-=",s,"}"].join("")),l&&c.push(["index[",e[u],"]=j",u].join(""));for(u=0;u3&&g.push(a(t.post,t,s)),t.debug&&console.log("-----Generated cwise routine for ",e,":\n"+g.join("\n")+"\n----------");var A=[t.funcName||"unnamed","_cwise_loop_",o[0].join("s"),"m",k,function(t){for(var e=new Array(t.length),r=!0,n=0;n0&&(r=r&&e[n]===e[n-1])}return r?e[0]:e.join("")}(s)].join("");return new Function(["function ",A,"(",v.join(","),"){",g.join("\n"),"} return ",A].join(""))()}},{uniq:536}],118:[function(t,e,r){"use strict";var n=t("./compile.js");e.exports=function(t){var e=["'use strict'","var CACHED={}"],r=[],i=t.funcName+"_cwise_thunk";e.push(["return function ",i,"(",t.shimArgs.join(","),"){"].join(""));for(var a=[],o=[],s=[["array",t.arrayArgs[0],".shape.slice(",Math.max(0,t.arrayBlockIndices[0]),t.arrayBlockIndices[0]<0?","+t.arrayBlockIndices[0]+")":")"].join("")],l=[],c=[],u=0;u0&&(l.push("array"+t.arrayArgs[0]+".shape.length===array"+f+".shape.length+"+(Math.abs(t.arrayBlockIndices[0])-Math.abs(t.arrayBlockIndices[u]))),c.push("array"+t.arrayArgs[0]+".shape[shapeIndex+"+Math.max(0,t.arrayBlockIndices[0])+"]===array"+f+".shape[shapeIndex+"+Math.max(0,t.arrayBlockIndices[u])+"]"))}for(t.arrayArgs.length>1&&(e.push("if (!("+l.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same dimensionality!')"),e.push("for(var shapeIndex=array"+t.arrayArgs[0]+".shape.length-"+Math.abs(t.arrayBlockIndices[0])+"; shapeIndex--\x3e0;) {"),e.push("if (!("+c.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same shape!')"),e.push("}")),u=0;ue?1:t>=e?0:NaN},r=function(t){var r;return 1===t.length&&(r=t,t=function(t,n){return e(r(t),n)}),{left:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)<0?n=a+1:i=a}return n},right:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)>0?i=a:n=a+1}return n}}};var n=r(e),i=n.right,a=n.left;function o(t,e){return[t,e]}var s=function(t){return null===t?NaN:+t},l=function(t,e){var r,n,i=t.length,a=0,o=-1,l=0,c=0;if(null==e)for(;++o1)return c/(a-1)},c=function(t,e){var r=l(t,e);return r?Math.sqrt(r):r},u=function(t,e){var r,n,i,a=t.length,o=-1;if(null==e){for(;++o=r)for(n=i=r;++or&&(n=r),i=r)for(n=i=r;++or&&(n=r),i=0?(a>=g?10:a>=y?5:a>=b?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=g?10:a>=y?5:a>=b?2:1)}function _(t,e,r){var n=Math.abs(e-t)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(n)/Math.LN10)),a=n/i;return a>=g?i*=10:a>=y?i*=5:a>=b&&(i*=2),e=1)return+r(t[n-1],n-1,t);var n,i=(n-1)*e,a=Math.floor(i),o=+r(t[a],a,t);return o+(+r(t[a+1],a+1,t)-o)*(i-a)}},k=function(t,e){var r,n,i=t.length,a=-1;if(null==e){for(;++a=r)for(n=r;++ar&&(n=r)}else for(;++a=r)for(n=r;++ar&&(n=r);return n},A=function(t){if(!(i=t.length))return[];for(var e=-1,r=k(t,T),n=new Array(r);++et?1:e>=t?0:NaN},t.deviation=c,t.extent=u,t.histogram=function(){var t=m,e=u,r=w;function n(n){var a,o,s=n.length,l=new Array(s);for(a=0;af;)h.pop(),--d;var p,m=new Array(d+1);for(a=0;a<=d;++a)(p=m[a]=[]).x0=a>0?h[a-1]:u,p.x1=a=r)for(n=r;++an&&(n=r)}else for(;++a=r)for(n=r;++an&&(n=r);return n},t.mean=function(t,e){var r,n=t.length,i=n,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(n=t[i]).length;--e>=0;)r[--o]=n[e];return r},t.min=k,t.pairs=function(t,e){null==e&&(e=o);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r0)return[t];if((n=e0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s=l.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var s,c,f,h=-1,d=n.length,p=l[i++],m=r(),v=a();++hl.length)return r;var i,a=c[n-1];return null!=e&&n>=l.length?i=r.entries():(i=[],r.each(function(e,r){i.push({key:r,values:t(e,n)})})),null!=a?i.sort(function(t,e){return a(t.key,e.key)}):i}(u(t,0,a,o),0)},key:function(t){return l.push(t),s},sortKeys:function(t){return c[l.length-1]=t,s},sortValues:function(e){return t=e,s},rollup:function(t){return e=t,s}}},t.set=c,t.map=r,t.keys=function(t){var e=[];for(var r in t)e.push(r);return e},t.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},t.entries=function(t){var e=[];for(var r in t)e.push({key:r,value:t[r]});return e},Object.defineProperty(t,"__esModule",{value:!0})}("object"==typeof r&&void 0!==e?r:n.d3=n.d3||{})},{}],122:[function(t,e,r){var n;n=this,function(t){"use strict";var e=function(t,e,r){t.prototype=e.prototype=r,r.constructor=t};function r(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function n(){}var i="\\s*([+-]?\\d+)\\s*",a="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",o="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",s=/^#([0-9a-f]{3})$/,l=/^#([0-9a-f]{6})$/,c=new RegExp("^rgb\\("+[i,i,i]+"\\)$"),u=new RegExp("^rgb\\("+[o,o,o]+"\\)$"),f=new RegExp("^rgba\\("+[i,i,i,a]+"\\)$"),h=new RegExp("^rgba\\("+[o,o,o,a]+"\\)$"),d=new RegExp("^hsl\\("+[a,o,o]+"\\)$"),p=new RegExp("^hsla\\("+[a,o,o,a]+"\\)$"),m={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 v(t){var e;return t=(t+"").trim().toLowerCase(),(e=s.exec(t))?new _((e=parseInt(e[1],16))>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):(e=l.exec(t))?g(parseInt(e[1],16)):(e=c.exec(t))?new _(e[1],e[2],e[3],1):(e=u.exec(t))?new _(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=f.exec(t))?y(e[1],e[2],e[3],e[4]):(e=h.exec(t))?y(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=d.exec(t))?w(e[1],e[2]/100,e[3]/100,1):(e=p.exec(t))?w(e[1],e[2]/100,e[3]/100,e[4]):m.hasOwnProperty(t)?g(m[t]):"transparent"===t?new _(NaN,NaN,NaN,0):null}function g(t){return new _(t>>16&255,t>>8&255,255&t,1)}function y(t,e,r,n){return n<=0&&(t=e=r=NaN),new _(t,e,r,n)}function b(t){return t instanceof n||(t=v(t)),t?new _((t=t.rgb()).r,t.g,t.b,t.opacity):new _}function x(t,e,r,n){return 1===arguments.length?b(t):new _(t,e,r,null==n?1:n)}function _(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function w(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new k(t,e,r,n)}function M(t,e,r,i){return 1===arguments.length?function(t){if(t instanceof k)return new k(t.h,t.s,t.l,t.opacity);if(t instanceof n||(t=v(t)),!t)return new k;if(t instanceof k)return t;var e=(t=t.rgb()).r/255,r=t.g/255,i=t.b/255,a=Math.min(e,r,i),o=Math.max(e,r,i),s=NaN,l=o-a,c=(o+a)/2;return l?(s=e===o?(r-i)/l+6*(r0&&c<1?0:s,new k(s,l,c,t.opacity)}(t):new k(t,e,r,null==i?1:i)}function k(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function A(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}e(n,v,{displayable:function(){return this.rgb().displayable()},toString:function(){return this.rgb()+""}}),e(_,x,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new _(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new _(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},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+")")}})),e(k,M,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new k(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new k(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,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new _(A(t>=240?t-240:t+120,i,n),A(t,i,n),A(t<120?t+240:t-120,i,n),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 T=Math.PI/180,E=180/Math.PI,S=.95047,L=1,C=1.08883,P=4/29,z=6/29,O=3*z*z,D=z*z*z;function I(t){if(t instanceof N)return new N(t.l,t.a,t.b,t.opacity);if(t instanceof q){var e=t.h*T;return new N(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}t instanceof _||(t=b(t));var r=U(t.r),n=U(t.g),i=U(t.b),a=F((.4124564*r+.3575761*n+.1804375*i)/S),o=F((.2126729*r+.7151522*n+.072175*i)/L);return new N(116*o-16,500*(a-o),200*(o-F((.0193339*r+.119192*n+.9503041*i)/C)),t.opacity)}function R(t,e,r,n){return 1===arguments.length?I(t):new N(t,e,r,null==n?1:n)}function N(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function F(t){return t>D?Math.pow(t,1/3):t/O+P}function j(t){return t>z?t*t*t:O*(t-P)}function B(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function U(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function V(t,e,r,n){return 1===arguments.length?function(t){if(t instanceof q)return new q(t.h,t.c,t.l,t.opacity);t instanceof N||(t=I(t));var e=Math.atan2(t.b,t.a)*E;return new q(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}(t):new q(t,e,r,null==n?1:n)}function q(t,e,r,n){this.h=+t,this.c=+e,this.l=+r,this.opacity=+n}e(N,R,r(n,{brighter:function(t){return new N(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new N(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,r=isNaN(this.b)?t:t-this.b/200;return t=L*j(t),new _(B(3.2404542*(e=S*j(e))-1.5371385*t-.4985314*(r=C*j(r))),B(-.969266*e+1.8760108*t+.041556*r),B(.0556434*e-.2040259*t+1.0572252*r),this.opacity)}})),e(q,V,r(n,{brighter:function(t){return new q(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new q(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return I(this).rgb()}}));var H=-.14861,G=1.78277,Y=-.29227,W=-.90649,X=1.97294,Z=X*W,J=X*G,K=G*Y-W*H;function Q(t,e,r,n){return 1===arguments.length?function(t){if(t instanceof $)return new $(t.h,t.s,t.l,t.opacity);t instanceof _||(t=b(t));var e=t.r/255,r=t.g/255,n=t.b/255,i=(K*n+Z*e-J*r)/(K+Z-J),a=n-i,o=(X*(r-i)-Y*a)/W,s=Math.sqrt(o*o+a*a)/(X*i*(1-i)),l=s?Math.atan2(o,a)*E-120:NaN;return new $(l<0?l+360:l,s,i,t.opacity)}(t):new $(t,e,r,null==n?1:n)}function $(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}e($,Q,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new $(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new $(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*T,e=+this.l,r=isNaN(this.s)?0:this.s*e*(1-e),n=Math.cos(t),i=Math.sin(t);return new _(255*(e+r*(H*n+G*i)),255*(e+r*(Y*n+W*i)),255*(e+r*(X*n)),this.opacity)}})),t.color=v,t.rgb=x,t.hsl=M,t.lab=R,t.hcl=V,t.cubehelix=Q,Object.defineProperty(t,"__esModule",{value:!0})}("object"==typeof r&&void 0!==e?r:n.d3=n.d3||{})},{}],123:[function(t,e,r){var n;n=this,function(t){"use strict";var e={value:function(){}};function r(){for(var t,e=0,r=arguments.length,i={};e=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})),l=-1,c=s.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++l0)for(var r,n,i=new Array(r),a=0;ah+c||nd+c||au.index){var f=h-s.x-s.vx,v=d-s.y-s.vy,g=f*f+v*v;gt.r&&(t.r=t[e].r)}function h(){if(r){var e,i,a=r.length;for(n=new Array(a),e=0;e=c)){(t.data!==r||t.next)&&(0===f&&(p+=(f=o())*f),0===h&&(p+=(h=o())*h),p1?(null==r?u.remove(t):u.set(t,y(r)),e):u.get(t)},find:function(e,r,n){var i,a,o,s,l,c=0,u=t.length;for(null==n?n=1/0:n*=n,c=0;c1?(h.on(t,r),e):h.on(t)}}},t.forceX=function(t){var e,r,n,i=a(.1);function o(t){for(var i,a=0,o=e.length;a=1?(n=1,e-1):Math.floor(n*e),a=t[i],o=t[i+1],s=i>0?t[i-1]:2*a-o,l=i180||r<-180?r-360*Math.round(r/360):r):a(isNaN(t)?e:t)}function l(t){return 1==(t=+t)?c:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}(e,r,t):a(isNaN(e)?r:e)}}function c(t,e){var r=e-t;return r?o(t,r):a(isNaN(t)?e:t)}var u=function t(r){var n=l(r);function i(t,r){var i=n((t=e.rgb(t)).r,(r=e.rgb(r)).r),a=n(t.g,r.g),o=n(t.b,r.b),s=c(t.opacity,r.opacity);return function(e){return t.r=i(e),t.g=a(e),t.b=o(e),t.opacity=s(e),t+""}}return i.gamma=t,i}(1);function f(t){return function(r){var n,i,a=r.length,o=new Array(a),s=new Array(a),l=new Array(a);for(n=0;na&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:v(r,n)})),a=b.lastIndex;return a180?e+=360:e-t>180&&(t+=360),a.push({i:r.push(i(r)+"rotate(",null,n)-2,x:v(t,e)})):e&&r.push(i(r)+"rotate("+e+n)}(a.rotate,o.rotate,s,l),function(t,e,r,a){t!==e?a.push({i:r.push(i(r)+"skewX(",null,n)-2,x:v(t,e)}):e&&r.push(i(r)+"skewX("+e+n)}(a.skewX,o.skewX,s,l),function(t,e,r,n,a,o){if(t!==r||e!==n){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:v(t,r)},{i:s-2,x:v(e,n)})}else 1===r&&1===n||a.push(i(a)+"scale("+r+","+n+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,l),a=o=null,function(t){for(var e,r=-1,n=l.length;++r=(a=(m+g)/2))?m=a:g=a,(u=r>=(o=(v+y)/2))?v=o:y=o,i=d,!(d=d[f=u<<1|c]))return i[f]=p,t;if(s=+t._x.call(null,d.data),l=+t._y.call(null,d.data),e===s&&r===l)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>=(a=(m+g)/2))?m=a:g=a,(u=r>=(o=(v+y)/2))?v=o:y=o}while((f=u<<1|c)==(h=(l>=o)<<1|s>=a));return i[h]=d,i[f]=p,t}var r=function(t,e,r,n,i){this.node=t,this.x0=e,this.y0=r,this.x1=n,this.y1=i};function n(t){return t[0]}function i(t){return t[1]}function a(t,e,r){var a=new o(null==e?n:e,null==r?i:r,NaN,NaN,NaN,NaN);return null==t?a:a.addAll(t)}function o(t,e,r,n,i,a){this._x=t,this._y=e,this._x0=r,this._y0=n,this._x1=i,this._y1=a,this._root=void 0}function s(t){for(var e={data:t.data},r=e;t=t.next;)r=r.next={data:t.data};return e}var l=a.prototype=o.prototype;l.copy=function(){var t,e,r=new o(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root;if(!n)return r;if(!n.length)return r._root=s(n),r;for(t=[{source:n,target:r._root=new Array(4)}];n=t.pop();)for(var i=0;i<4;++i)(e=n.source[i])&&(e.length?t.push({source:e,target:n.target[i]=new Array(4)}):n.target[i]=s(e));return r},l.add=function(t){var r=+this._x.call(null,t),n=+this._y.call(null,t);return e(this.cover(r,n),r,n,t)},l.addAll=function(t){var r,n,i,a,o=t.length,s=new Array(o),l=new Array(o),c=1/0,u=1/0,f=-1/0,h=-1/0;for(n=0;nf&&(f=i),ah&&(h=a));for(ft||t>i||n>e||e>a))return this;var o,s,l=i-r,c=this._root;switch(s=(e<(n+a)/2)<<1|t<(r+i)/2){case 0:do{(o=new Array(4))[s]=c,c=o}while(a=n+(l*=2),t>(i=r+l)||e>a);break;case 1:do{(o=new Array(4))[s]=c,c=o}while(a=n+(l*=2),(r=i-l)>t||e>a);break;case 2:do{(o=new Array(4))[s]=c,c=o}while(n=a-(l*=2),t>(i=r+l)||n>e);break;case 3:do{(o=new Array(4))[s]=c,c=o}while(n=a-(l*=2),(r=i-l)>t||n>e)}this._root&&this._root.length&&(this._root=c)}return this._x0=r,this._y0=n,this._x1=i,this._y1=a,this},l.data=function(){var t=[];return this.visit(function(e){if(!e.length)do{t.push(e.data)}while(e=e.next)}),t},l.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]]},l.find=function(t,e,n){var i,a,o,s,l,c,u,f=this._x0,h=this._y0,d=this._x1,p=this._y1,m=[],v=this._root;for(v&&m.push(new r(v,f,h,d,p)),null==n?n=1/0:(f=t-n,h=e-n,d=t+n,p=e+n,n*=n);c=m.pop();)if(!(!(v=c.node)||(a=c.x0)>d||(o=c.y0)>p||(s=c.x1)=y)<<1|t>=g)&&(c=m[m.length-1],m[m.length-1]=m[m.length-1-u],m[m.length-1-u]=c)}else{var b=t-+this._x.call(null,v.data),x=e-+this._y.call(null,v.data),_=b*b+x*x;if(_=(s=(p+v)/2))?p=s:v=s,(u=o>=(l=(m+g)/2))?m=l:g=l,e=d,!(d=d[f=u<<1|c]))return this;if(!d.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(r=e,h=f)}for(;d.data!==t;)if(n=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,n?(i?n.next=i:delete n.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&&(r?r[h]=d:this._root=d),this):(this._root=i,this)},l.removeAll=function(t){for(var e=0,r=t.length;e=0&&r._call.call(null,t),r=r._next;--n}function g(){l=(s=u.now())+c,n=i=0;try{v()}finally{n=0,function(){var t,n,i=e,a=1/0;for(;i;)i._call?(a>i._time&&(a=i._time),t=i,i=i._next):(n=i._next,i._next=null,i=t?t._next=n:e=n);r=t,b(a)}(),l=0}}function y(){var t=u.now(),e=t-s;e>o&&(c-=e,s=t)}function b(t){n||(i&&(i=clearTimeout(i)),t-l>24?(t<1/0&&(i=setTimeout(g,t-u.now()-c)),a&&(a=clearInterval(a))):(a||(s=u.now(),a=setInterval(y,o)),n=1,f(g)))}p.prototype=m.prototype={constructor:p,restart:function(t,n,i){if("function"!=typeof t)throw new TypeError("callback is not a function");i=(null==i?h():+i)+(null==n?0:+n),this._next||r===this||(r?r._next=this:e=this,r=this),this._call=t,this._time=i,b()},stop:function(){this._call&&(this._call=null,this._time=1/0,b())}};t.now=h,t.timer=m,t.timerFlush=v,t.timeout=function(t,e,r){var n=new p;return e=null==e?0:+e,n.restart(function(r){n.stop(),t(r+e)},e,r),n},t.interval=function(t,e,r){var n=new p,i=e;return null==e?(n.restart(t,e,r),n):(e=+e,r=null==r?h():+r,n.restart(function a(o){o+=i,n.restart(a,i+=e,r),t(o)},e,r),n)},Object.defineProperty(t,"__esModule",{value:!0})}("object"==typeof r&&void 0!==e?r:n.d3=n.d3||{})},{}],128:[function(t,e,r){!function(){var t={version:"3.5.17"},r=[].slice,n=function(t){return r.call(t)},i=this.document;function a(t){return t&&(t.ownerDocument||t.document||t).documentElement}function o(t){return t&&(t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView)}if(i)try{n(i.documentElement.childNodes)[0].nodeType}catch(t){n=function(t){for(var e=t.length,r=new Array(e);e--;)r[e]=t[e];return r}}if(Date.now||(Date.now=function(){return+new Date}),i)try{i.createElement("DIV").style.setProperty("opacity",0,"")}catch(t){var s=this.Element.prototype,l=s.setAttribute,c=s.setAttributeNS,u=this.CSSStyleDeclaration.prototype,f=u.setProperty;s.setAttribute=function(t,e){l.call(this,t,e+"")},s.setAttributeNS=function(t,e,r){c.call(this,t,e,r+"")},u.setProperty=function(t,e,r){f.call(this,t,e+"",r)}}function h(t,e){return te?1:t>=e?0:NaN}function d(t){return null===t?NaN:+t}function p(t){return!isNaN(t)}function m(t){return{left:function(e,r,n,i){for(arguments.length<3&&(n=0),arguments.length<4&&(i=e.length);n>>1;t(e[a],r)<0?n=a+1:i=a}return n},right:function(e,r,n,i){for(arguments.length<3&&(n=0),arguments.length<4&&(i=e.length);n>>1;t(e[a],r)>0?i=a:n=a+1}return n}}}t.ascending=h,t.descending=function(t,e){return et?1:e>=t?0:NaN},t.min=function(t,e){var r,n,i=-1,a=t.length;if(1===arguments.length){for(;++i=n){r=n;break}for(;++in&&(r=n)}else{for(;++i=n){r=n;break}for(;++in&&(r=n)}return r},t.max=function(t,e){var r,n,i=-1,a=t.length;if(1===arguments.length){for(;++i=n){r=n;break}for(;++ir&&(r=n)}else{for(;++i=n){r=n;break}for(;++ir&&(r=n)}return r},t.extent=function(t,e){var r,n,i,a=-1,o=t.length;if(1===arguments.length){for(;++a=n){r=i=n;break}for(;++an&&(r=n),i=n){r=i=n;break}for(;++an&&(r=n),i1)return o/(l-1)},t.deviation=function(){var e=t.variance.apply(this,arguments);return e?Math.sqrt(e):e};var v=m(h);function g(t){return t.length}t.bisectLeft=v.left,t.bisect=t.bisectRight=v.right,t.bisector=function(t){return m(1===t.length?function(e,r){return h(t(e),r)}:t)},t.shuffle=function(t,e,r){(a=arguments.length)<3&&(r=t.length,a<2&&(e=0));for(var n,i,a=r-e;a;)i=Math.random()*a--|0,n=t[a+e],t[a+e]=t[i+e],t[i+e]=n;return t},t.permute=function(t,e){for(var r=e.length,n=new Array(r);r--;)n[r]=t[e[r]];return n},t.pairs=function(t){for(var e=0,r=t.length-1,n=t[0],i=new Array(r<0?0:r);e=0;)for(e=(n=t[i]).length;--e>=0;)r[--o]=n[e];return r};var y=Math.abs;function b(t,e){for(var r in e)Object.defineProperty(t.prototype,r,{value:e[r],enumerable:!1})}function x(){this._=Object.create(null)}t.range=function(t,e,r){if(arguments.length<3&&(r=1,arguments.length<2&&(e=t,t=0)),(e-t)/r==1/0)throw new Error("infinite range");var n,i=[],a=function(t){var e=1;for(;t*e%1;)e*=10;return e}(y(r)),o=-1;if(t*=a,e*=a,(r*=a)<0)for(;(n=t+r*++o)>e;)i.push(n/a);else for(;(n=t+r*++o)=i.length)return r?r.call(n,a):e?a.sort(e):a;for(var l,c,u,f,h=-1,d=a.length,p=i[s++],m=new x;++h=i.length)return e;var n=[],o=a[r++];return e.forEach(function(e,i){n.push({key:e,values:t(i,r)})}),o?n.sort(function(t,e){return o(t.key,e.key)}):n}(o(t.map,e,0),0)},n.key=function(t){return i.push(t),n},n.sortKeys=function(t){return a[i.length-1]=t,n},n.sortValues=function(t){return e=t,n},n.rollup=function(t){return r=t,n},n},t.set=function(t){var e=new C;if(t)for(var r=0,n=t.length;r=0&&(n=t.slice(r+1),t=t.slice(0,r)),t)return arguments.length<2?this[t].on(n):this[t].on(n,e);if(2===arguments.length){if(null==e)for(t in this)this.hasOwnProperty(t)&&this[t].on(n,null);return this}},t.event=null,t.requote=function(t){return t.replace(U,"\\$&")};var U=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,V={}.__proto__?function(t,e){t.__proto__=e}:function(t,e){for(var r in e)t[r]=e[r]};function q(t){return V(t,W),t}var H=function(t,e){return e.querySelector(t)},G=function(t,e){return e.querySelectorAll(t)},Y=function(t,e){var r=t.matches||t[O(t,"matchesSelector")];return(Y=function(t,e){return r.call(t,e)})(t,e)};"function"==typeof Sizzle&&(H=function(t,e){return Sizzle(t,e)[0]||null},G=Sizzle,Y=Sizzle.matchesSelector),t.selection=function(){return t.select(i.documentElement)};var W=t.selection.prototype=[];function X(t){return"function"==typeof t?t:function(){return H(t,this)}}function Z(t){return"function"==typeof t?t:function(){return G(t,this)}}W.select=function(t){var e,r,n,i,a=[];t=X(t);for(var o=-1,s=this.length;++o=0&&"xmlns"!==(r=t.slice(0,e))&&(t=t.slice(e+1)),K.hasOwnProperty(r)?{space:K[r],local:t}:t}},W.attr=function(e,r){if(arguments.length<2){if("string"==typeof e){var n=this.node();return(e=t.ns.qualify(e)).local?n.getAttributeNS(e.space,e.local):n.getAttribute(e)}for(r in e)this.each(Q(r,e[r]));return this}return this.each(Q(e,r))},W.classed=function(t,e){if(arguments.length<2){if("string"==typeof t){var r=this.node(),n=(t=et(t)).length,i=-1;if(e=r.classList){for(;++i=0;)(r=n[i])&&(a&&a!==r.nextSibling&&a.parentNode.insertBefore(r,a),a=r);return this},W.sort=function(t){t=function(t){arguments.length||(t=h);return function(e,r){return e&&r?t(e.__data__,r.__data__):!e-!r}}.apply(this,arguments);for(var e=-1,r=this.length;++e0&&(e=e.slice(0,o));var l=pt.get(e);function c(){var t=this[a];t&&(this.removeEventListener(e,t,t.$),delete this[a])}return l&&(e=l,s=vt),o?r?function(){var t=s(r,n(arguments));c.call(this),this.addEventListener(e,this[a]=t,t.$=i),t._=r}:c:r?I:function(){var r,n=new RegExp("^__on([^.]+)"+t.requote(e)+"$");for(var i in this)if(r=i.match(n)){var a=this[i];this.removeEventListener(r[1],a,a.$),delete this[i]}}}t.selection.enter=ft,t.selection.enter.prototype=ht,ht.append=W.append,ht.empty=W.empty,ht.node=W.node,ht.call=W.call,ht.size=W.size,ht.select=function(t){for(var e,r,n,i,a,o=[],s=-1,l=this.length;++s=n&&(n=e+1);!(o=s[n])&&++n0?1:t<0?-1:0}function zt(t,e,r){return(e[0]-t[0])*(r[1]-t[1])-(e[1]-t[1])*(r[0]-t[0])}function Ot(t){return t>1?0:t<-1?At:Math.acos(t)}function Dt(t){return t>1?St:t<-1?-St:Math.asin(t)}function It(t){return((t=Math.exp(t))+1/t)/2}function Rt(t){return(t=Math.sin(t/2))*t}var Nt=Math.SQRT2;t.interpolateZoom=function(t,e){var r,n,i=t[0],a=t[1],o=t[2],s=e[0],l=e[1],c=e[2],u=s-i,f=l-a,h=u*u+f*f;if(h0&&(e=e.transition().duration(m)),e.call(w.event)}function E(){c&&c.domain(l.range().map(function(t){return(t-h.x)/h.k}).map(l.invert)),f&&f.domain(u.range().map(function(t){return(t-h.y)/h.k}).map(u.invert))}function S(t){v++||t({type:"zoomstart"})}function L(t){E(),t({type:"zoom",scale:h.k,translate:[h.x,h.y]})}function C(t){--v||(t({type:"zoomend"}),r=null)}function P(){var e=this,r=_.of(e,arguments),n=0,i=t.select(o(e)).on(y,function(){n=1,A(t.mouse(e),a),L(r)}).on(b,function(){i.on(y,null).on(b,null),s(n),C(r)}),a=M(t.mouse(e)),s=bt(e);ss.call(e),S(r)}function z(){var e,r=this,n=_.of(r,arguments),i={},a=0,o=".zoom-"+t.event.changedTouches[0].identifier,l="touchmove"+o,c="touchend"+o,u=[],f=t.select(r),d=bt(r);function p(){var n=t.touches(r);return e=h.k,n.forEach(function(t){t.identifier in i&&(i[t.identifier]=M(t))}),n}function m(){var e=t.event.target;t.select(e).on(l,v).on(c,y),u.push(e);for(var n=t.event.changedTouches,o=0,f=n.length;o1){g=d[0];var b=d[1],x=g[0]-b[0],_=g[1]-b[1];a=x*x+_*_}}function v(){var o,l,c,u,f=t.touches(r);ss.call(r);for(var h=0,d=f.length;h360?t-=360:t<0&&(t+=360),t<60?n+(i-n)*t/60:t<180?i:t<240?n+(i-n)*(240-t)/60:n}(t))}return t=isNaN(t)?0:(t%=360)<0?t+360:t,e=isNaN(e)?0:e<0?0:e>1?1:e,n=2*(r=r<0?0:r>1?1:r)-(i=r<=.5?r*(1+e):r+e-r*e),new ae(a(t+120),a(t),a(t-120))}function Gt(e,r,n){return this instanceof Gt?(this.h=+e,this.c=+r,void(this.l=+n)):arguments.length<2?e instanceof Gt?new Gt(e.h,e.c,e.l):ee(e instanceof Xt?e.l:(e=he((e=t.rgb(e)).r,e.g,e.b)).l,e.a,e.b):new Gt(e,r,n)}qt.brighter=function(t){return t=Math.pow(.7,arguments.length?t:1),new Vt(this.h,this.s,this.l/t)},qt.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new Vt(this.h,this.s,t*this.l)},qt.rgb=function(){return Ht(this.h,this.s,this.l)},t.hcl=Gt;var Yt=Gt.prototype=new Ut;function Wt(t,e,r){return isNaN(t)&&(t=0),isNaN(e)&&(e=0),new Xt(r,Math.cos(t*=Lt)*e,Math.sin(t)*e)}function Xt(t,e,r){return this instanceof Xt?(this.l=+t,this.a=+e,void(this.b=+r)):arguments.length<2?t instanceof Xt?new Xt(t.l,t.a,t.b):t instanceof Gt?Wt(t.h,t.c,t.l):he((t=ae(t)).r,t.g,t.b):new Xt(t,e,r)}Yt.brighter=function(t){return new Gt(this.h,this.c,Math.min(100,this.l+Zt*(arguments.length?t:1)))},Yt.darker=function(t){return new Gt(this.h,this.c,Math.max(0,this.l-Zt*(arguments.length?t:1)))},Yt.rgb=function(){return Wt(this.h,this.c,this.l).rgb()},t.lab=Xt;var Zt=18,Jt=.95047,Kt=1,Qt=1.08883,$t=Xt.prototype=new Ut;function te(t,e,r){var n=(t+16)/116,i=n+e/500,a=n-r/200;return new ae(ie(3.2404542*(i=re(i)*Jt)-1.5371385*(n=re(n)*Kt)-.4985314*(a=re(a)*Qt)),ie(-.969266*i+1.8760108*n+.041556*a),ie(.0556434*i-.2040259*n+1.0572252*a))}function ee(t,e,r){return t>0?new Gt(Math.atan2(r,e)*Ct,Math.sqrt(e*e+r*r),t):new Gt(NaN,NaN,t)}function re(t){return t>.206893034?t*t*t:(t-4/29)/7.787037}function ne(t){return t>.008856?Math.pow(t,1/3):7.787037*t+4/29}function ie(t){return Math.round(255*(t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055))}function ae(t,e,r){return this instanceof ae?(this.r=~~t,this.g=~~e,void(this.b=~~r)):arguments.length<2?t instanceof ae?new ae(t.r,t.g,t.b):ue(""+t,ae,Ht):new ae(t,e,r)}function oe(t){return new ae(t>>16,t>>8&255,255&t)}function se(t){return oe(t)+""}$t.brighter=function(t){return new Xt(Math.min(100,this.l+Zt*(arguments.length?t:1)),this.a,this.b)},$t.darker=function(t){return new Xt(Math.max(0,this.l-Zt*(arguments.length?t:1)),this.a,this.b)},$t.rgb=function(){return te(this.l,this.a,this.b)},t.rgb=ae;var le=ae.prototype=new Ut;function ce(t){return t<16?"0"+Math.max(0,t).toString(16):Math.min(255,t).toString(16)}function ue(t,e,r){var n,i,a,o=0,s=0,l=0;if(n=/([a-z]+)\((.*)\)/.exec(t=t.toLowerCase()))switch(i=n[2].split(","),n[1]){case"hsl":return r(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return e(pe(i[0]),pe(i[1]),pe(i[2]))}return(a=me.get(t))?e(a.r,a.g,a.b):(null==t||"#"!==t.charAt(0)||isNaN(a=parseInt(t.slice(1),16))||(4===t.length?(o=(3840&a)>>4,o|=o>>4,s=240&a,s|=s>>4,l=15&a,l|=l<<4):7===t.length&&(o=(16711680&a)>>16,s=(65280&a)>>8,l=255&a)),e(o,s,l))}function fe(t,e,r){var n,i,a=Math.min(t/=255,e/=255,r/=255),o=Math.max(t,e,r),s=o-a,l=(o+a)/2;return s?(i=l<.5?s/(o+a):s/(2-o-a),n=t==o?(e-r)/s+(e0&&l<1?0:n),new Vt(n,i,l)}function he(t,e,r){var n=ne((.4124564*(t=de(t))+.3575761*(e=de(e))+.1804375*(r=de(r)))/Jt),i=ne((.2126729*t+.7151522*e+.072175*r)/Kt);return Xt(116*i-16,500*(n-i),200*(i-ne((.0193339*t+.119192*e+.9503041*r)/Qt)))}function de(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function pe(t){var e=parseFloat(t);return"%"===t.charAt(t.length-1)?Math.round(2.55*e):e}le.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);var e=this.r,r=this.g,n=this.b,i=30;return e||r||n?(e&&e=200&&e<300||304===e){try{t=i.call(o,c)}catch(t){return void s.error.call(o,t)}s.load.call(o,t)}else s.error.call(o,c)}return!this.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(e)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=f:c.onreadystatechange=function(){c.readyState>3&&f()},c.onprogress=function(e){var r=t.event;t.event=e;try{s.progress.call(o,c)}finally{t.event=r}},o.header=function(t,e){return t=(t+"").toLowerCase(),arguments.length<2?l[t]:(null==e?delete l[t]:l[t]=e+"",o)},o.mimeType=function(t){return arguments.length?(r=null==t?null:t+"",o):r},o.responseType=function(t){return arguments.length?(u=t,o):u},o.response=function(t){return i=t,o},["get","post"].forEach(function(t){o[t]=function(){return o.send.apply(o,[t].concat(n(arguments)))}}),o.send=function(t,n,i){if(2===arguments.length&&"function"==typeof n&&(i=n,n=null),c.open(t,e,!0),null==r||"accept"in l||(l.accept=r+",*/*"),c.setRequestHeader)for(var a in l)c.setRequestHeader(a,l[a]);return null!=r&&c.overrideMimeType&&c.overrideMimeType(r),null!=u&&(c.responseType=u),null!=i&&o.on("error",i).on("load",function(t){i(null,t)}),s.beforesend.call(o,c),c.send(null==n?null:n),o},o.abort=function(){return c.abort(),o},t.rebind(o,s,"on"),null==a?o:o.get(function(t){return 1===t.length?function(e,r){t(null==e?r:null)}:t}(a))}me.forEach(function(t,e){me.set(t,oe(e))}),t.functor=ve,t.xhr=ge(P),t.dsv=function(t,e){var r=new RegExp('["'+t+"\n]"),n=t.charCodeAt(0);function i(t,r,n){arguments.length<3&&(n=r,r=null);var i=ye(t,e,null==r?a:o(r),n);return i.row=function(t){return arguments.length?i.response(null==(r=t)?a:o(t)):r},i}function a(t){return i.parse(t.responseText)}function o(t){return function(e){return i.parse(e.responseText,t)}}function s(e){return e.map(l).join(t)}function l(t){return r.test(t)?'"'+t.replace(/\"/g,'""')+'"':t}return i.parse=function(t,e){var r;return i.parseRows(t,function(t,n){if(r)return r(t,n-1);var i=new Function("d","return {"+t.map(function(t,e){return JSON.stringify(t)+": d["+e+"]"}).join(",")+"}");r=e?function(t,r){return e(i(t),r)}:i})},i.parseRows=function(t,e){var r,i,a={},o={},s=[],l=t.length,c=0,u=0;function f(){if(c>=l)return o;if(i)return i=!1,a;var e=c;if(34===t.charCodeAt(e)){for(var r=e;r++24?(isFinite(e)&&(clearTimeout(we),we=setTimeout(Ae,e)),_e=0):(_e=1,Me(Ae))}function Te(){for(var t=Date.now(),e=be;e;)t>=e.t&&e.c(t-e.t)&&(e.c=null),e=e.n;return t}function Ee(){for(var t,e=be,r=1/0;e;)e.c?(e.t8?function(t){return t/r}:function(t){return t*r},symbol:t}});t.formatPrefix=function(e,r){var n=0;return(e=+e)&&(e<0&&(e*=-1),r&&(e=t.round(e,Se(e,r))),n=1+Math.floor(1e-12+Math.log(e)/Math.LN10),n=Math.max(-24,Math.min(24,3*Math.floor((n-1)/3)))),Le[8+n/3]};var Ce=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,Pe=t.map({b:function(t){return t.toString(2)},c:function(t){return String.fromCharCode(t)},o:function(t){return t.toString(8)},x:function(t){return t.toString(16)},X:function(t){return t.toString(16).toUpperCase()},g:function(t,e){return t.toPrecision(e)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},r:function(e,r){return(e=t.round(e,Se(e,r))).toFixed(Math.max(0,Math.min(20,Se(e*(1+1e-15),r))))}});function ze(t){return t+""}var Oe=t.time={},De=Date;function Ie(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}Ie.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){Re.setUTCDate.apply(this._,arguments)},setDay:function(){Re.setUTCDay.apply(this._,arguments)},setFullYear:function(){Re.setUTCFullYear.apply(this._,arguments)},setHours:function(){Re.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){Re.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){Re.setUTCMinutes.apply(this._,arguments)},setMonth:function(){Re.setUTCMonth.apply(this._,arguments)},setSeconds:function(){Re.setUTCSeconds.apply(this._,arguments)},setTime:function(){Re.setTime.apply(this._,arguments)}};var Re=Date.prototype;function Ne(t,e,r){function n(e){var r=t(e),n=a(r,1);return e-r1)for(;o68?1900:2e3),r+i[0].length):-1}function Je(t,e,r){return/^[+-]\d{4}$/.test(e=e.slice(r,r+5))?(t.Z=-e,r+5):-1}function Ke(t,e,r){Be.lastIndex=0;var n=Be.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function Qe(t,e,r){Be.lastIndex=0;var n=Be.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function $e(t,e,r){Be.lastIndex=0;var n=Be.exec(e.slice(r,r+3));return n?(t.j=+n[0],r+n[0].length):-1}function tr(t,e,r){Be.lastIndex=0;var n=Be.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function er(t,e,r){Be.lastIndex=0;var n=Be.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function rr(t,e,r){Be.lastIndex=0;var n=Be.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function nr(t,e,r){Be.lastIndex=0;var n=Be.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function ir(t){var e=t.getTimezoneOffset(),r=e>0?"-":"+",n=y(e)/60|0,i=y(e)%60;return r+Ve(n,"0",2)+Ve(i,"0",2)}function ar(t,e,r){Ue.lastIndex=0;var n=Ue.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function or(t){for(var e=t.length,r=-1;++r0&&s>0&&(l+s+1>e&&(s=Math.max(1,e-l)),a.push(t.substring(r-=s,r+s)),!((l+=s+1)>e));)s=i[o=(o+1)%i.length];return a.reverse().join(n)}:P;return function(e){var n=Ce.exec(e),i=n[1]||" ",s=n[2]||">",l=n[3]||"-",c=n[4]||"",u=n[5],f=+n[6],h=n[7],d=n[8],p=n[9],m=1,v="",g="",y=!1,b=!0;switch(d&&(d=+d.substring(1)),(u||"0"===i&&"="===s)&&(u=i="0",s="="),p){case"n":h=!0,p="g";break;case"%":m=100,g="%",p="f";break;case"p":m=100,g="%",p="r";break;case"b":case"o":case"x":case"X":"#"===c&&(v="0"+p.toLowerCase());case"c":b=!1;case"d":y=!0,d=0;break;case"s":m=-1,p="r"}"$"===c&&(v=a[0],g=a[1]),"r"!=p||d||(p="g"),null!=d&&("g"==p?d=Math.max(1,Math.min(21,d)):"e"!=p&&"f"!=p||(d=Math.max(0,Math.min(20,d)))),p=Pe.get(p)||ze;var x=u&&h;return function(e){var n=g;if(y&&e%1)return"";var a=e<0||0===e&&1/e<0?(e=-e,"-"):"-"===l?"":l;if(m<0){var c=t.formatPrefix(e,d);e=c.scale(e),n=c.symbol+g}else e*=m;var _,w,M=(e=p(e,d)).lastIndexOf(".");if(M<0){var k=b?e.lastIndexOf("e"):-1;k<0?(_=e,w=""):(_=e.substring(0,k),w=e.substring(k))}else _=e.substring(0,M),w=r+e.substring(M+1);!u&&h&&(_=o(_,1/0));var A=v.length+_.length+w.length+(x?0:a.length),T=A"===s?T+a+e:"^"===s?T.substring(0,A>>=1)+a+e+T.substring(A):a+(x?e:T+e))+n}}}(e),timeFormat:function(e){var r=e.dateTime,n=e.date,i=e.time,a=e.periods,o=e.days,s=e.shortDays,l=e.months,c=e.shortMonths;function u(t){var e=t.length;function r(r){for(var n,i,a,o=[],s=-1,l=0;++s=c)return-1;if(37===(i=e.charCodeAt(s++))){if(o=e.charAt(s++),!(a=w[o in je?e.charAt(s++):o])||(n=a(t,r,n))<0)return-1}else if(i!=r.charCodeAt(n++))return-1}return n}u.utc=function(t){var e=u(t);function r(t){try{var r=new(De=Ie);return r._=t,e(r)}finally{De=Date}}return r.parse=function(t){try{De=Ie;var r=e.parse(t);return r&&r._}finally{De=Date}},r.toString=e.toString,r},u.multi=u.utc.multi=or;var h=t.map(),d=qe(o),p=He(o),m=qe(s),v=He(s),g=qe(l),y=He(l),b=qe(c),x=He(c);a.forEach(function(t,e){h.set(t.toLowerCase(),e)});var _={a:function(t){return s[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return l[t.getMonth()]},c:u(r),d:function(t,e){return Ve(t.getDate(),e,2)},e:function(t,e){return Ve(t.getDate(),e,2)},H:function(t,e){return Ve(t.getHours(),e,2)},I:function(t,e){return Ve(t.getHours()%12||12,e,2)},j:function(t,e){return Ve(1+Oe.dayOfYear(t),e,3)},L:function(t,e){return Ve(t.getMilliseconds(),e,3)},m:function(t,e){return Ve(t.getMonth()+1,e,2)},M:function(t,e){return Ve(t.getMinutes(),e,2)},p:function(t){return a[+(t.getHours()>=12)]},S:function(t,e){return Ve(t.getSeconds(),e,2)},U:function(t,e){return Ve(Oe.sundayOfYear(t),e,2)},w:function(t){return t.getDay()},W:function(t,e){return Ve(Oe.mondayOfYear(t),e,2)},x:u(n),X:u(i),y:function(t,e){return Ve(t.getFullYear()%100,e,2)},Y:function(t,e){return Ve(t.getFullYear()%1e4,e,4)},Z:ir,"%":function(){return"%"}},w={a:function(t,e,r){m.lastIndex=0;var n=m.exec(e.slice(r));return n?(t.w=v.get(n[0].toLowerCase()),r+n[0].length):-1},A:function(t,e,r){d.lastIndex=0;var n=d.exec(e.slice(r));return n?(t.w=p.get(n[0].toLowerCase()),r+n[0].length):-1},b:function(t,e,r){b.lastIndex=0;var n=b.exec(e.slice(r));return n?(t.m=x.get(n[0].toLowerCase()),r+n[0].length):-1},B:function(t,e,r){g.lastIndex=0;var n=g.exec(e.slice(r));return n?(t.m=y.get(n[0].toLowerCase()),r+n[0].length):-1},c:function(t,e,r){return f(t,_.c.toString(),e,r)},d:Qe,e:Qe,H:tr,I:tr,j:$e,L:nr,m:Ke,M:er,p:function(t,e,r){var n=h.get(e.slice(r,r+=2).toLowerCase());return null==n?-1:(t.p=n,r)},S:rr,U:Ye,w:Ge,W:We,x:function(t,e,r){return f(t,_.x.toString(),e,r)},X:function(t,e,r){return f(t,_.X.toString(),e,r)},y:Ze,Y:Xe,Z:Je,"%":ar};return u}(e)}};var sr=t.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function lr(){}t.format=sr.numberFormat,t.geo={},lr.prototype={s:0,t:0,add:function(t){ur(t,this.t,cr),ur(cr.s,this.s,this),this.s?this.t+=cr.t:this.s=cr.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var cr=new lr;function ur(t,e,r){var n=r.s=t+e,i=n-t,a=n-i;r.t=t-a+(e-i)}function fr(t,e){t&&dr.hasOwnProperty(t.type)&&dr[t.type](t,e)}t.geo.stream=function(t,e){t&&hr.hasOwnProperty(t.type)?hr[t.type](t,e):fr(t,e)};var hr={Feature:function(t,e){fr(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n=0?1:-1,s=o*a,l=Math.cos(e),c=Math.sin(e),u=i*c,f=n*l+u*Math.cos(s),h=u*o*Math.sin(s);Sr.add(Math.atan2(h,f)),r=t,n=l,i=c}Lr.point=function(o,s){Lr.point=a,r=(t=o)*Lt,n=Math.cos(s=(e=s)*Lt/2+At/4),i=Math.sin(s)},Lr.lineEnd=function(){a(t,e)}}function Pr(t){var e=t[0],r=t[1],n=Math.cos(r);return[n*Math.cos(e),n*Math.sin(e),Math.sin(r)]}function zr(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Or(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 Dr(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Ir(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function Rr(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}function Nr(t){return[Math.atan2(t[1],t[0]),Dt(t[2])]}function Fr(t,e){return y(t[0]-e[0])Mt?i=90:c<-Mt&&(r=-90),f[0]=e,f[1]=n}};function d(t,a){u.push(f=[e=t,n=t]),ai&&(i=a)}function p(t,o){var s=Pr([t*Lt,o*Lt]);if(l){var c=Or(l,s),u=Or([c[1],-c[0],0],c);Rr(u),u=Nr(u);var f=t-a,h=f>0?1:-1,p=u[0]*Ct*h,m=y(f)>180;if(m^(h*ai&&(i=v);else if(m^(h*a<(p=(p+360)%360-180)&&pi&&(i=o);m?t_(e,n)&&(n=t):_(t,n)>_(e,n)&&(e=t):n>=e?(tn&&(n=t)):t>a?_(e,t)>_(e,n)&&(n=t):_(t,n)>_(e,n)&&(e=t)}else d(t,o);l=s,a=t}function m(){h.point=p}function v(){f[0]=e,f[1]=n,h.point=d,l=null}function g(t,e){if(l){var r=t-a;c+=y(r)>180?r+(r>0?360:-360):r}else o=t,s=e;Lr.point(t,e),p(t,e)}function b(){Lr.lineStart()}function x(){g(o,s),Lr.lineEnd(),y(c)>Mt&&(e=-(n=180)),f[0]=e,f[1]=n,l=null}function _(t,e){return(e-=t)<0?e+360:e}function w(t,e){return t[0]-e[0]}function M(t,e){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:t_(m[0],m[1])&&(m[1]=d[1]),_(d[0],m[1])>_(m[0],m[1])&&(m[0]=d[0])):s.push(m=d);for(var l,c,d,p=-1/0,m=(o=0,s[c=s.length-1]);o<=c;m=d,++o)d=s[o],(l=_(m[1],d[0]))>p&&(p=l,e=d[0],n=m[1])}return u=f=null,e===1/0||r===1/0?[[NaN,NaN],[NaN,NaN]]:[[e,r],[n,i]]}}(),t.geo.centroid=function(e){gr=yr=br=xr=_r=wr=Mr=kr=Ar=Tr=Er=0,t.geo.stream(e,jr);var r=Ar,n=Tr,i=Er,a=r*r+n*n+i*i;return a=0;--s)i.point((f=u[s])[0],f[1]);else n(d.x,d.p.x,-1,i);d=d.p}u=(d=d.o).z,p=!p}while(!d.v);i.lineEnd()}}}function Xr(t){if(e=t.length){for(var e,r,n=0,i=t[0];++n=0?1:-1,M=w*_,k=M>At,A=p*b;if(Sr.add(Math.atan2(A*w*Math.sin(M),m*x+A*Math.cos(M))),a+=k?_+w*Tt:_,k^h>=r^g>=r){var T=Or(Pr(f),Pr(t));Rr(T);var E=Or(i,T);Rr(E);var S=(k^_>=0?-1:1)*Dt(E[2]);(n>S||n===S&&(T[0]||T[1]))&&(o+=k^_>=0?1:-1)}if(!v++)break;h=g,p=b,m=x,f=t}}return(a<-Mt||a0){for(b||(o.polygonStart(),b=!0),o.lineStart();++a1&&2&e&&r.push(r.pop().concat(r.shift())),s.push(r.filter(Kr))}return u}}function Kr(t){return t.length>1}function Qr(){var t,e=[];return{lineStart:function(){e.push(t=[])},point:function(e,r){t.push([e,r])},lineEnd:I,buffer:function(){var r=e;return e=[],t=null,r},rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))}}}function $r(t,e){return((t=t.x)[0]<0?t[1]-St-Mt:St-t[1])-((e=e.x)[0]<0?e[1]-St-Mt:St-e[1])}var tn=Jr(Yr,function(t){var e,r=NaN,n=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var s=a>0?At:-At,l=y(a-r);y(l-At)0?St:-St),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(s,n),t.point(a,n),e=0):i!==s&&l>=At&&(y(r-i)Mt?Math.atan((Math.sin(e)*(a=Math.cos(n))*Math.sin(r)-Math.sin(n)*(i=Math.cos(e))*Math.sin(t))/(i*a*o)):(e+n)/2}(r,n,a,o),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(s,n),e=0),t.point(r=a,n=o),i=s},lineEnd:function(){t.lineEnd(),r=n=NaN},clean:function(){return 2-e}}},function(t,e,r,n){var i;if(null==t)i=r*St,n.point(-At,i),n.point(0,i),n.point(At,i),n.point(At,0),n.point(At,-i),n.point(0,-i),n.point(-At,-i),n.point(-At,0),n.point(-At,i);else if(y(t[0]-e[0])>Mt){var a=t[0]0)){if(a/=h,h<0){if(a0){if(a>f)return;a>u&&(u=a)}if(a=r-l,h||!(a<0)){if(a/=h,h<0){if(a>f)return;a>u&&(u=a)}else if(h>0){if(a0)){if(a/=d,d<0){if(a0){if(a>f)return;a>u&&(u=a)}if(a=n-c,d||!(a<0)){if(a/=d,d<0){if(a>f)return;a>u&&(u=a)}else if(d>0){if(a0&&(i.a={x:l+u*h,y:c+u*d}),f<1&&(i.b={x:l+f*h,y:c+f*d}),i}}}}}}var rn=1e9;function nn(e,r,n,i){return function(l){var c,u,f,h,d,p,m,v,g,y,b,x=l,_=Qr(),w=en(e,r,n,i),M={point:T,lineStart:function(){M.point=E,u&&u.push(f=[]);y=!0,g=!1,m=v=NaN},lineEnd:function(){c&&(E(h,d),p&&g&&_.rejoin(),c.push(_.buffer()));M.point=T,g&&l.lineEnd()},polygonStart:function(){l=_,c=[],u=[],b=!0},polygonEnd:function(){l=x,c=t.merge(c);var r=function(t){for(var e=0,r=u.length,n=t[1],i=0;in&&zt(c,a,t)>0&&++e:a[1]<=n&&zt(c,a,t)<0&&--e,c=a;return 0!==e}([e,i]),n=b&&r,a=c.length;(n||a)&&(l.polygonStart(),n&&(l.lineStart(),k(null,null,1,l),l.lineEnd()),a&&Wr(c,o,r,k,l),l.polygonEnd()),c=u=f=null}};function k(t,o,l,c){var u=0,f=0;if(null==t||(u=a(t,l))!==(f=a(o,l))||s(t,o)<0^l>0)do{c.point(0===u||3===u?e:n,u>1?i:r)}while((u=(u+l+4)%4)!==f);else c.point(o[0],o[1])}function A(t,a){return e<=t&&t<=n&&r<=a&&a<=i}function T(t,e){A(t,e)&&l.point(t,e)}function E(t,e){var r=A(t=Math.max(-rn,Math.min(rn,t)),e=Math.max(-rn,Math.min(rn,e)));if(u&&f.push([t,e]),y)h=t,d=e,p=r,y=!1,r&&(l.lineStart(),l.point(t,e));else if(r&&g)l.point(t,e);else{var n={a:{x:m,y:v},b:{x:t,y:e}};w(n)?(g||(l.lineStart(),l.point(n.a.x,n.a.y)),l.point(n.b.x,n.b.y),r||l.lineEnd(),b=!1):r&&(l.lineStart(),l.point(t,e),b=!1)}m=t,v=e,g=r}return M};function a(t,i){return y(t[0]-e)0?0:3:y(t[0]-n)0?2:1:y(t[1]-r)0?1:0:i>0?3:2}function o(t,e){return s(t.x,e.x)}function s(t,e){var r=a(t,1),n=a(e,1);return r!==n?r-n:0===r?e[1]-t[1]:1===r?t[0]-e[0]:2===r?t[1]-e[1]:e[0]-t[0]}}function an(t){var e=0,r=At/3,n=En(t),i=n(e,r);return i.parallels=function(t){return arguments.length?n(e=t[0]*At/180,r=t[1]*At/180):[e/At*180,r/At*180]},i}function on(t,e){var r=Math.sin(t),n=(r+Math.sin(e))/2,i=1+r*(2*n-r),a=Math.sqrt(i)/n;function o(t,e){var r=Math.sqrt(i-2*n*Math.sin(e))/n;return[r*Math.sin(t*=n),a-r*Math.cos(t)]}return o.invert=function(t,e){var r=a-e;return[Math.atan2(t,r)/n,Dt((i-(t*t+r*r)*n*n)/(2*n))]},o}t.geo.clipExtent=function(){var t,e,r,n,i,a,o={stream:function(t){return i&&(i.valid=!1),(i=a(t)).valid=!0,i},extent:function(s){return arguments.length?(a=nn(t=+s[0][0],e=+s[0][1],r=+s[1][0],n=+s[1][1]),i&&(i.valid=!1,i=null),o):[[t,e],[r,n]]}};return o.extent([[0,0],[960,500]])},(t.geo.conicEqualArea=function(){return an(on)}).raw=on,t.geo.albers=function(){return t.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},t.geo.albersUsa=function(){var e,r,n,i,a=t.geo.albers(),o=t.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),s=t.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(t,r){e=[t,r]}};function c(t){var a=t[0],o=t[1];return e=null,r(a,o),e||(n(a,o),e)||i(a,o),e}return c.invert=function(t){var e=a.scale(),r=a.translate(),n=(t[0]-r[0])/e,i=(t[1]-r[1])/e;return(i>=.12&&i<.234&&n>=-.425&&n<-.214?o:i>=.166&&i<.234&&n>=-.214&&n<-.115?s:a).invert(t)},c.stream=function(t){var e=a.stream(t),r=o.stream(t),n=s.stream(t);return{point:function(t,i){e.point(t,i),r.point(t,i),n.point(t,i)},sphere:function(){e.sphere(),r.sphere(),n.sphere()},lineStart:function(){e.lineStart(),r.lineStart(),n.lineStart()},lineEnd:function(){e.lineEnd(),r.lineEnd(),n.lineEnd()},polygonStart:function(){e.polygonStart(),r.polygonStart(),n.polygonStart()},polygonEnd:function(){e.polygonEnd(),r.polygonEnd(),n.polygonEnd()}}},c.precision=function(t){return arguments.length?(a.precision(t),o.precision(t),s.precision(t),c):a.precision()},c.scale=function(t){return arguments.length?(a.scale(t),o.scale(.35*t),s.scale(t),c.translate(a.translate())):a.scale()},c.translate=function(t){if(!arguments.length)return a.translate();var e=a.scale(),u=+t[0],f=+t[1];return r=a.translate(t).clipExtent([[u-.455*e,f-.238*e],[u+.455*e,f+.238*e]]).stream(l).point,n=o.translate([u-.307*e,f+.201*e]).clipExtent([[u-.425*e+Mt,f+.12*e+Mt],[u-.214*e-Mt,f+.234*e-Mt]]).stream(l).point,i=s.translate([u-.205*e,f+.212*e]).clipExtent([[u-.214*e+Mt,f+.166*e+Mt],[u-.115*e-Mt,f+.234*e-Mt]]).stream(l).point,c},c.scale(1070)};var sn,ln,cn,un,fn,hn,dn={point:I,lineStart:I,lineEnd:I,polygonStart:function(){ln=0,dn.lineStart=pn},polygonEnd:function(){dn.lineStart=dn.lineEnd=dn.point=I,sn+=y(ln/2)}};function pn(){var t,e,r,n;function i(t,e){ln+=n*t-r*e,r=t,n=e}dn.point=function(a,o){dn.point=i,t=r=a,e=n=o},dn.lineEnd=function(){i(t,e)}}var mn={point:function(t,e){tfn&&(fn=t);ehn&&(hn=e)},lineStart:I,lineEnd:I,polygonStart:I,polygonEnd:I};function vn(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}var gn,yn={point:bn,lineStart:xn,lineEnd:_n,polygonStart:function(){yn.lineStart=wn},polygonEnd:function(){yn.point=bn,yn.lineStart=xn,yn.lineEnd=_n}};function bn(t,e){br+=t,xr+=e,++_r}function xn(){var t,e;function r(r,n){var i=r-t,a=n-e,o=Math.sqrt(i*i+a*a);wr+=o*(t+r)/2,Mr+=o*(e+n)/2,kr+=o,bn(t=r,e=n)}yn.point=function(n,i){yn.point=r,bn(t=n,e=i)}}function _n(){yn.point=bn}function wn(){var t,e,r,n;function i(t,e){var i=t-r,a=e-n,o=Math.sqrt(i*i+a*a);wr+=o*(r+t)/2,Mr+=o*(n+e)/2,kr+=o,Ar+=(o=n*t-r*e)*(r+t),Tr+=o*(n+e),Er+=3*o,bn(r=t,n=e)}yn.point=function(a,o){yn.point=i,bn(t=r=a,e=n=o)},yn.lineEnd=function(){i(t,e)}}function Mn(t){var e=.5,r=Math.cos(30*Lt),n=16;function i(e){return(n?function(e){var r,i,o,s,l,c,u,f,h,d,p,m,v={point:g,lineStart:y,lineEnd:x,polygonStart:function(){e.polygonStart(),v.lineStart=_},polygonEnd:function(){e.polygonEnd(),v.lineStart=y}};function g(r,n){r=t(r,n),e.point(r[0],r[1])}function y(){f=NaN,v.point=b,e.lineStart()}function b(r,i){var o=Pr([r,i]),s=t(r,i);a(f,h,u,d,p,m,f=s[0],h=s[1],u=r,d=o[0],p=o[1],m=o[2],n,e),e.point(f,h)}function x(){v.point=g,e.lineEnd()}function _(){y(),v.point=w,v.lineEnd=M}function w(t,e){b(r=t,e),i=f,o=h,s=d,l=p,c=m,v.point=b}function M(){a(f,h,u,d,p,m,i,o,r,s,l,c,n,e),v.lineEnd=x,x()}return v}:function(e){return An(e,function(r,n){r=t(r,n),e.point(r[0],r[1])})})(e)}function a(n,i,o,s,l,c,u,f,h,d,p,m,v,g){var b=u-n,x=f-i,_=b*b+x*x;if(_>4*e&&v--){var w=s+d,M=l+p,k=c+m,A=Math.sqrt(w*w+M*M+k*k),T=Math.asin(k/=A),E=y(y(k)-1)e||y((b*P+x*z)/_-.5)>.3||s*d+l*p+c*m0&&16,i):Math.sqrt(e)},i}function kn(t){this.stream=t}function An(t,e){return{point:e,sphere:function(){t.sphere()},lineStart:function(){t.lineStart()},lineEnd:function(){t.lineEnd()},polygonStart:function(){t.polygonStart()},polygonEnd:function(){t.polygonEnd()}}}function Tn(t){return En(function(){return t})()}function En(e){var r,n,i,a,o,s,l=Mn(function(t,e){return[(t=r(t,e))[0]*c+a,o-t[1]*c]}),c=150,u=480,f=250,h=0,d=0,p=0,m=0,v=0,g=tn,b=P,x=null,_=null;function w(t){return[(t=i(t[0]*Lt,t[1]*Lt))[0]*c+a,o-t[1]*c]}function M(t){return(t=i.invert((t[0]-a)/c,(o-t[1])/c))&&[t[0]*Ct,t[1]*Ct]}function k(){i=Gr(n=Pn(p,m,v),r);var t=r(h,d);return a=u-t[0]*c,o=f+t[1]*c,A()}function A(){return s&&(s.valid=!1,s=null),w}return w.stream=function(t){return s&&(s.valid=!1),(s=Sn(g(n,l(b(t))))).valid=!0,s},w.clipAngle=function(t){return arguments.length?(g=null==t?(x=t,tn):function(t){var e=Math.cos(t),r=e>0,n=y(e)>Mt;return Jr(i,function(t){var e,s,l,c,u;return{lineStart:function(){c=l=!1,u=1},point:function(f,h){var d,p=[f,h],m=i(f,h),v=r?m?0:o(f,h):m?o(f+(f<0?At:-At),h):0;if(!e&&(c=l=m)&&t.lineStart(),m!==l&&(d=a(e,p),(Fr(e,d)||Fr(p,d))&&(p[0]+=Mt,p[1]+=Mt,m=i(p[0],p[1]))),m!==l)u=0,m?(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(n&&e&&r^m){var g;v&s||!(g=a(p,e,!0))||(u=0,r?(t.lineStart(),t.point(g[0][0],g[0][1]),t.point(g[1][0],g[1][1]),t.lineEnd()):(t.point(g[1][0],g[1][1]),t.lineEnd(),t.lineStart(),t.point(g[0][0],g[0][1])))}!m||e&&Fr(e,p)||t.point(p[0],p[1]),e=p,l=m,s=v},lineEnd:function(){l&&t.lineEnd(),e=null},clean:function(){return u|(c&&l)<<1}}},In(t,6*Lt),r?[0,-t]:[-At,t-At]);function i(t,r){return Math.cos(t)*Math.cos(r)>e}function a(t,r,n){var i=[1,0,0],a=Or(Pr(t),Pr(r)),o=zr(a,a),s=a[0],l=o-s*s;if(!l)return!n&&t;var c=e*o/l,u=-e*s/l,f=Or(i,a),h=Ir(i,c);Dr(h,Ir(a,u));var d=f,p=zr(h,d),m=zr(d,d),v=p*p-m*(zr(h,h)-1);if(!(v<0)){var g=Math.sqrt(v),b=Ir(d,(-p-g)/m);if(Dr(b,h),b=Nr(b),!n)return b;var x,_=t[0],w=r[0],M=t[1],k=r[1];w<_&&(x=_,_=w,w=x);var A=w-_,T=y(A-At)0^b[1]<(y(b[0]-_)At^(_<=b[0]&&b[0]<=w)){var E=Ir(d,(-p+g)/m);return Dr(E,h),[b,Nr(E)]}}}function o(e,n){var i=r?t:At-t,a=0;return e<-i?a|=1:e>i&&(a|=2),n<-i?a|=4:n>i&&(a|=8),a}}((x=+t)*Lt),A()):x},w.clipExtent=function(t){return arguments.length?(_=t,b=t?nn(t[0][0],t[0][1],t[1][0],t[1][1]):P,A()):_},w.scale=function(t){return arguments.length?(c=+t,k()):c},w.translate=function(t){return arguments.length?(u=+t[0],f=+t[1],k()):[u,f]},w.center=function(t){return arguments.length?(h=t[0]%360*Lt,d=t[1]%360*Lt,k()):[h*Ct,d*Ct]},w.rotate=function(t){return arguments.length?(p=t[0]%360*Lt,m=t[1]%360*Lt,v=t.length>2?t[2]%360*Lt:0,k()):[p*Ct,m*Ct,v*Ct]},t.rebind(w,l,"precision"),function(){return r=e.apply(this,arguments),w.invert=r.invert&&M,k()}}function Sn(t){return An(t,function(e,r){t.point(e*Lt,r*Lt)})}function Ln(t,e){return[t,e]}function Cn(t,e){return[t>At?t-Tt:t<-At?t+Tt:t,e]}function Pn(t,e,r){return t?e||r?Gr(On(t),Dn(e,r)):On(t):e||r?Dn(e,r):Cn}function zn(t){return function(e,r){return[(e+=t)>At?e-Tt:e<-At?e+Tt:e,r]}}function On(t){var e=zn(t);return e.invert=zn(-t),e}function Dn(t,e){var r=Math.cos(t),n=Math.sin(t),i=Math.cos(e),a=Math.sin(e);function o(t,e){var o=Math.cos(e),s=Math.cos(t)*o,l=Math.sin(t)*o,c=Math.sin(e),u=c*r+s*n;return[Math.atan2(l*i-u*a,s*r-c*n),Dt(u*i+l*a)]}return o.invert=function(t,e){var o=Math.cos(e),s=Math.cos(t)*o,l=Math.sin(t)*o,c=Math.sin(e),u=c*i-l*a;return[Math.atan2(l*i+c*a,s*r+u*n),Dt(u*r-s*n)]},o}function In(t,e){var r=Math.cos(t),n=Math.sin(t);return function(i,a,o,s){var l=o*e;null!=i?(i=Rn(r,i),a=Rn(r,a),(o>0?ia)&&(i+=o*Tt)):(i=t+o*Tt,a=t-.5*l);for(var c,u=i;o>0?u>a:u2?t[2]*Lt:0),e.invert=function(e){return(e=t.invert(e[0]*Lt,e[1]*Lt))[0]*=Ct,e[1]*=Ct,e},e},Cn.invert=Ln,t.geo.circle=function(){var t,e,r=[0,0],n=6;function i(){var t="function"==typeof r?r.apply(this,arguments):r,n=Pn(-t[0]*Lt,-t[1]*Lt,0).invert,i=[];return e(null,null,1,{point:function(t,e){i.push(t=n(t,e)),t[0]*=Ct,t[1]*=Ct}}),{type:"Polygon",coordinates:[i]}}return i.origin=function(t){return arguments.length?(r=t,i):r},i.angle=function(r){return arguments.length?(e=In((t=+r)*Lt,n*Lt),i):t},i.precision=function(r){return arguments.length?(e=In(t*Lt,(n=+r)*Lt),i):n},i.angle(90)},t.geo.distance=function(t,e){var r,n=(e[0]-t[0])*Lt,i=t[1]*Lt,a=e[1]*Lt,o=Math.sin(n),s=Math.cos(n),l=Math.sin(i),c=Math.cos(i),u=Math.sin(a),f=Math.cos(a);return Math.atan2(Math.sqrt((r=f*o)*r+(r=c*u-l*f*s)*r),l*u+c*f*s)},t.geo.graticule=function(){var e,r,n,i,a,o,s,l,c,u,f,h,d=10,p=d,m=90,v=360,g=2.5;function b(){return{type:"MultiLineString",coordinates:x()}}function x(){return t.range(Math.ceil(i/m)*m,n,m).map(f).concat(t.range(Math.ceil(l/v)*v,s,v).map(h)).concat(t.range(Math.ceil(r/d)*d,e,d).filter(function(t){return y(t%m)>Mt}).map(c)).concat(t.range(Math.ceil(o/p)*p,a,p).filter(function(t){return y(t%v)>Mt}).map(u))}return b.lines=function(){return x().map(function(t){return{type:"LineString",coordinates:t}})},b.outline=function(){return{type:"Polygon",coordinates:[f(i).concat(h(s).slice(1),f(n).reverse().slice(1),h(l).reverse().slice(1))]}},b.extent=function(t){return arguments.length?b.majorExtent(t).minorExtent(t):b.minorExtent()},b.majorExtent=function(t){return arguments.length?(i=+t[0][0],n=+t[1][0],l=+t[0][1],s=+t[1][1],i>n&&(t=i,i=n,n=t),l>s&&(t=l,l=s,s=t),b.precision(g)):[[i,l],[n,s]]},b.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],o=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),o>a&&(t=o,o=a,a=t),b.precision(g)):[[r,o],[e,a]]},b.step=function(t){return arguments.length?b.majorStep(t).minorStep(t):b.minorStep()},b.majorStep=function(t){return arguments.length?(m=+t[0],v=+t[1],b):[m,v]},b.minorStep=function(t){return arguments.length?(d=+t[0],p=+t[1],b):[d,p]},b.precision=function(t){return arguments.length?(g=+t,c=Nn(o,a,90),u=Fn(r,e,g),f=Nn(l,s,90),h=Fn(i,n,g),b):g},b.majorExtent([[-180,-90+Mt],[180,90-Mt]]).minorExtent([[-180,-80-Mt],[180,80+Mt]])},t.geo.greatArc=function(){var e,r,n=jn,i=Bn;function a(){return{type:"LineString",coordinates:[e||n.apply(this,arguments),r||i.apply(this,arguments)]}}return a.distance=function(){return t.geo.distance(e||n.apply(this,arguments),r||i.apply(this,arguments))},a.source=function(t){return arguments.length?(n=t,e="function"==typeof t?null:t,a):n},a.target=function(t){return arguments.length?(i=t,r="function"==typeof t?null:t,a):i},a.precision=function(){return arguments.length?a:0},a},t.geo.interpolate=function(t,e){return r=t[0]*Lt,n=t[1]*Lt,i=e[0]*Lt,a=e[1]*Lt,o=Math.cos(n),s=Math.sin(n),l=Math.cos(a),c=Math.sin(a),u=o*Math.cos(r),f=o*Math.sin(r),h=l*Math.cos(i),d=l*Math.sin(i),p=2*Math.asin(Math.sqrt(Rt(a-n)+o*l*Rt(i-r))),m=1/Math.sin(p),(v=p?function(t){var e=Math.sin(t*=p)*m,r=Math.sin(p-t)*m,n=r*u+e*h,i=r*f+e*d,a=r*s+e*c;return[Math.atan2(i,n)*Ct,Math.atan2(a,Math.sqrt(n*n+i*i))*Ct]}:function(){return[r*Ct,n*Ct]}).distance=p,v;var r,n,i,a,o,s,l,c,u,f,h,d,p,m,v},t.geo.length=function(e){return gn=0,t.geo.stream(e,Un),gn};var Un={sphere:I,point:I,lineStart:function(){var t,e,r;function n(n,i){var a=Math.sin(i*=Lt),o=Math.cos(i),s=y((n*=Lt)-t),l=Math.cos(s);gn+=Math.atan2(Math.sqrt((s=o*Math.sin(s))*s+(s=r*a-e*o*l)*s),e*a+r*o*l),t=n,e=a,r=o}Un.point=function(i,a){t=i*Lt,e=Math.sin(a*=Lt),r=Math.cos(a),Un.point=n},Un.lineEnd=function(){Un.point=Un.lineEnd=I}},lineEnd:I,polygonStart:I,polygonEnd:I};function Vn(t,e){function r(e,r){var n=Math.cos(e),i=Math.cos(r),a=t(n*i);return[a*i*Math.sin(e),a*Math.sin(r)]}return r.invert=function(t,r){var n=Math.sqrt(t*t+r*r),i=e(n),a=Math.sin(i),o=Math.cos(i);return[Math.atan2(t*a,n*o),Math.asin(n&&r*a/n)]},r}var qn=Vn(function(t){return Math.sqrt(2/(1+t))},function(t){return 2*Math.asin(t/2)});(t.geo.azimuthalEqualArea=function(){return Tn(qn)}).raw=qn;var Hn=Vn(function(t){var e=Math.acos(t);return e&&e/Math.sin(e)},P);function Gn(t,e){var r=Math.cos(t),n=function(t){return Math.tan(At/4+t/2)},i=t===e?Math.sin(t):Math.log(r/Math.cos(e))/Math.log(n(e)/n(t)),a=r*Math.pow(n(t),i)/i;if(!i)return Xn;function o(t,e){a>0?e<-St+Mt&&(e=-St+Mt):e>St-Mt&&(e=St-Mt);var r=a/Math.pow(n(e),i);return[r*Math.sin(i*t),a-r*Math.cos(i*t)]}return o.invert=function(t,e){var r=a-e,n=Pt(i)*Math.sqrt(t*t+r*r);return[Math.atan2(t,r)/i,2*Math.atan(Math.pow(a/n,1/i))-St]},o}function Yn(t,e){var r=Math.cos(t),n=t===e?Math.sin(t):(r-Math.cos(e))/(e-t),i=r/n+t;if(y(n)1&&zt(t[r[n-2]],t[r[n-1]],t[i])<=0;)--n;r[n++]=i}return r.slice(0,n)}function ri(t,e){return t[0]-e[0]||t[1]-e[1]}(t.geo.stereographic=function(){return Tn(Kn)}).raw=Kn,Qn.invert=function(t,e){return[-e,2*Math.atan(Math.exp(t))-St]},(t.geo.transverseMercator=function(){var t=Zn(Qn),e=t.center,r=t.rotate;return t.center=function(t){return t?e([-t[1],t[0]]):[(t=e())[1],-t[0]]},t.rotate=function(t){return t?r([t[0],t[1],t.length>2?t[2]+90:90]):[(t=r())[0],t[1],t[2]-90]},r([0,0,90])}).raw=Qn,t.geom={},t.geom.hull=function(t){var e=$n,r=ti;if(arguments.length)return n(t);function n(t){if(t.length<3)return[];var n,i=ve(e),a=ve(r),o=t.length,s=[],l=[];for(n=0;n=0;--n)d.push(t[s[c[n]][2]]);for(n=+f;nMt)s=s.L;else{if(!((i=a-bi(s,o))>Mt)){n>-Mt?(e=s.P,r=s):i>-Mt?(e=s,r=s.N):e=r=s;break}if(!s.R){e=s;break}s=s.R}var l=pi(t);if(ci.insert(e,l),e||r){if(e===r)return Mi(e),r=pi(e.site),ci.insert(l,r),l.edge=r.edge=Ti(e.site,l.site),wi(e),void wi(r);if(r){Mi(e),Mi(r);var c=e.site,u=c.x,f=c.y,h=t.x-u,d=t.y-f,p=r.site,m=p.x-u,v=p.y-f,g=2*(h*v-d*m),y=h*h+d*d,b=m*m+v*v,x={x:(v*y-d*b)/g+u,y:(h*b-m*y)/g+f};Ei(r.edge,c,p,x),l.edge=Ti(c,t,null,x),r.edge=Ti(t,p,null,x),wi(e),wi(r)}else l.edge=Ti(e.site,l.site)}}function yi(t,e){var r=t.site,n=r.x,i=r.y,a=i-e;if(!a)return n;var o=t.P;if(!o)return-1/0;var s=(r=o.site).x,l=r.y,c=l-e;if(!c)return s;var u=s-n,f=1/a-1/c,h=u/c;return f?(-h+Math.sqrt(h*h-2*f*(u*u/(-2*c)-l+c/2+i-a/2)))/f+n:(n+s)/2}function bi(t,e){var r=t.N;if(r)return yi(r,e);var n=t.site;return n.y===e?n.x:1/0}function xi(t){this.site=t,this.edges=[]}function _i(t,e){return e.angle-t.angle}function wi(t){var e=t.P,r=t.N;if(e&&r){var n=e.site,i=t.site,a=r.site;if(n!==a){var o=i.x,s=i.y,l=n.x-o,c=n.y-s,u=a.x-o,f=2*(l*(v=a.y-s)-c*u);if(!(f>=-kt)){var h=l*l+c*c,d=u*u+v*v,p=(v*h-c*d)/f,m=(l*d-u*h)/f,v=m+s,g=di.pop()||new function(){Ci(this),this.x=this.y=this.arc=this.site=this.cy=null};g.arc=t,g.site=i,g.x=p+o,g.y=v+Math.sqrt(p*p+m*m),g.cy=v,t.circle=g;for(var y=null,b=fi._;b;)if(g.y=s)return;if(h>p){if(a){if(a.y>=c)return}else a={x:v,y:l};r={x:v,y:c}}else{if(a){if(a.y1)if(h>p){if(a){if(a.y>=c)return}else a={x:(l-i)/n,y:l};r={x:(c-i)/n,y:c}}else{if(a){if(a.y=s)return}else a={x:o,y:n*o+i};r={x:s,y:n*s+i}}else{if(a){if(a.xMt||y(i-r)>Mt)&&(s.splice(o,0,new Si((g=a.site,b=u,x=y(n-f)Mt?{x:f,y:y(e-f)Mt?{x:y(r-p)Mt?{x:h,y:y(e-h)Mt?{x:y(r-d)=r&&c.x<=i&&c.y>=n&&c.y<=o?[[r,o],[i,o],[i,n],[r,n]]:[]).point=t[s]}),e}function s(t){return t.map(function(t,e){return{x:Math.round(n(t,e)/Mt)*Mt,y:Math.round(i(t,e)/Mt)*Mt,i:e}})}return o.links=function(t){return Di(s(t)).edges.filter(function(t){return t.l&&t.r}).map(function(e){return{source:t[e.l.i],target:t[e.r.i]}})},o.triangles=function(t){var e=[];return Di(s(t)).cells.forEach(function(r,n){for(var i,a,o,s,l=r.site,c=r.edges.sort(_i),u=-1,f=c.length,h=c[f-1].edge,d=h.l===l?h.r:h.l;++ua&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:Ui(r,n)})),a=Hi.lastIndex;return am&&(m=l.x),l.y>v&&(v=l.y),c.push(l.x),u.push(l.y);else for(f=0;fm&&(m=x),_>v&&(v=_),c.push(x),u.push(_)}var w=m-d,M=v-p;function k(t,e,r,n,i,a,o,s){if(!isNaN(r)&&!isNaN(n))if(t.leaf){var l=t.x,c=t.y;if(null!=l)if(y(l-r)+y(c-n)<.01)A(t,e,r,n,i,a,o,s);else{var u=t.point;t.x=t.y=t.point=null,A(t,u,l,c,i,a,o,s),A(t,e,r,n,i,a,o,s)}else t.x=r,t.y=n,t.point=e}else A(t,e,r,n,i,a,o,s)}function A(t,e,r,n,i,a,o,s){var l=.5*(i+o),c=.5*(a+s),u=r>=l,f=n>=c,h=f<<1|u;t.leaf=!1,t=t.nodes[h]||(t.nodes[h]={leaf:!0,nodes:[],point:null,x:null,y:null,add:function(t){k(T,t,+g(t,++f),+b(t,f),d,p,m,v)}}),u?i=l:o=l,f?a=c:s=c,k(t,e,r,n,i,a,o,s)}w>M?v=p+w:m=d+M;var T={leaf:!0,nodes:[],point:null,x:null,y:null,add:function(t){k(T,t,+g(t,++f),+b(t,f),d,p,m,v)}};if(T.visit=function(t){!function t(e,r,n,i,a,o){if(!e(r,n,i,a,o)){var s=.5*(n+a),l=.5*(i+o),c=r.nodes;c[0]&&t(e,c[0],n,i,s,l),c[1]&&t(e,c[1],s,i,a,l),c[2]&&t(e,c[2],n,l,s,o),c[3]&&t(e,c[3],s,l,a,o)}}(t,T,d,p,m,v)},T.find=function(t){return function(t,e,r,n,i,a,o){var s,l=1/0;return function t(c,u,f,h,d){if(!(u>a||f>o||h=_)<<1|e>=x,M=w+4;w=0&&!(n=t.interpolators[i](e,r)););return n}function Yi(t,e){var r,n=[],i=[],a=t.length,o=e.length,s=Math.min(t.length,e.length);for(r=0;r=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}function ea(t){return 1-Math.cos(t*St)}function ra(t){return Math.pow(2,10*(t-1))}function na(t){return 1-Math.sqrt(1-t*t)}function ia(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}function aa(t,e){return e-=t,function(r){return Math.round(t+e*r)}}function oa(t){var e,r,n,i=[t.a,t.b],a=[t.c,t.d],o=la(i),s=sa(i,a),l=la(((e=a)[0]+=(n=-s)*(r=i)[0],e[1]+=n*r[1],e))||0;i[0]*a[1]=0?t.slice(0,n):t,a=n>=0?t.slice(n+1):"in";return i=Xi.get(i)||Wi,a=Zi.get(a)||P,e=a(i.apply(null,r.call(arguments,1))),function(t){return t<=0?0:t>=1?1:e(t)}},t.interpolateHcl=function(e,r){e=t.hcl(e),r=t.hcl(r);var n=e.h,i=e.c,a=e.l,o=r.h-n,s=r.c-i,l=r.l-a;isNaN(s)&&(s=0,i=isNaN(i)?r.c:i);isNaN(o)?(o=0,n=isNaN(n)?r.h:n):o>180?o-=360:o<-180&&(o+=360);return function(t){return Wt(n+o*t,i+s*t,a+l*t)+""}},t.interpolateHsl=function(e,r){e=t.hsl(e),r=t.hsl(r);var n=e.h,i=e.s,a=e.l,o=r.h-n,s=r.s-i,l=r.l-a;isNaN(s)&&(s=0,i=isNaN(i)?r.s:i);isNaN(o)?(o=0,n=isNaN(n)?r.h:n):o>180?o-=360:o<-180&&(o+=360);return function(t){return Ht(n+o*t,i+s*t,a+l*t)+""}},t.interpolateLab=function(e,r){e=t.lab(e),r=t.lab(r);var n=e.l,i=e.a,a=e.b,o=r.l-n,s=r.a-i,l=r.b-a;return function(t){return te(n+o*t,i+s*t,a+l*t)+""}},t.interpolateRound=aa,t.transform=function(e){var r=i.createElementNS(t.ns.prefix.svg,"g");return(t.transform=function(t){if(null!=t){r.setAttribute("transform",t);var e=r.transform.baseVal.consolidate()}return new oa(e?e.matrix:ca)})(e)},oa.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var ca={a:1,b:0,c:0,d:1,e:0,f:0};function ua(t){return t.length?t.pop()+",":""}function fa(e,r){var n=[],i=[];return e=t.transform(e),r=t.transform(r),function(t,e,r,n){if(t[0]!==e[0]||t[1]!==e[1]){var i=r.push("translate(",null,",",null,")");n.push({i:i-4,x:Ui(t[0],e[0])},{i:i-2,x:Ui(t[1],e[1])})}else(e[0]||e[1])&&r.push("translate("+e+")")}(e.translate,r.translate,n,i),function(t,e,r,n){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),n.push({i:r.push(ua(r)+"rotate(",null,")")-2,x:Ui(t,e)})):e&&r.push(ua(r)+"rotate("+e+")")}(e.rotate,r.rotate,n,i),function(t,e,r,n){t!==e?n.push({i:r.push(ua(r)+"skewX(",null,")")-2,x:Ui(t,e)}):e&&r.push(ua(r)+"skewX("+e+")")}(e.skew,r.skew,n,i),function(t,e,r,n){if(t[0]!==e[0]||t[1]!==e[1]){var i=r.push(ua(r)+"scale(",null,",",null,")");n.push({i:i-4,x:Ui(t[0],e[0])},{i:i-2,x:Ui(t[1],e[1])})}else 1===e[0]&&1===e[1]||r.push(ua(r)+"scale("+e+")")}(e.scale,r.scale,n,i),e=r=null,function(t){for(var e,r=-1,a=i.length;++r0?n=t:(e.c=null,e.t=NaN,e=null,l.end({type:"end",alpha:n=0})):t>0&&(l.start({type:"start",alpha:n=t}),e=ke(s.tick)),s):n},s.start=function(){var t,e,r,n=g.length,l=y.length,u=c[0],p=c[1];for(t=0;t=0;)r.push(i[n])}function Aa(t,e){for(var r=[t],n=[];null!=(t=r.pop());)if(n.push(t),(a=t.children)&&(i=a.length))for(var i,a,o=-1;++o=0;)o.push(u=c[l]),u.parent=a,u.depth=a.depth+1;r&&(a.value=0),a.children=c}else r&&(a.value=+r.call(n,a,a.depth)||0),delete a.children;return Aa(i,function(e){var n,i;t&&(n=e.children)&&n.sort(t),r&&(i=e.parent)&&(i.value+=e.value)}),s}return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(ka(t,function(t){t.children&&(t.value=0)}),Aa(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},t.layout.partition=function(){var e=t.layout.hierarchy(),r=[1,1];function n(t,n){var i=e.call(this,t,n);return function t(e,r,n,i){var a=e.children;if(e.x=r,e.y=e.depth*i,e.dx=n,e.dy=i,a&&(o=a.length)){var o,s,l,c=-1;for(n=e.value?n/e.value:0;++cs&&(s=n),o.push(n)}for(r=0;ri&&(n=r,i=e);return n}function ja(t){return t.reduce(Ba,0)}function Ba(t,e){return t+e[1]}function Ua(t,e){return Va(t,Math.ceil(Math.log(e.length)/Math.LN2+1))}function Va(t,e){for(var r=-1,n=+t[0],i=(t[1]-n)/e,a=[];++r<=e;)a[r]=i*r+n;return a}function qa(e){return[t.min(e),t.max(e)]}function Ha(t,e){return t.value-e.value}function Ga(t,e){var r=t._pack_next;t._pack_next=e,e._pack_prev=t,e._pack_next=r,r._pack_prev=e}function Ya(t,e){t._pack_next=e,e._pack_prev=t}function Wa(t,e){var r=e.x-t.x,n=e.y-t.y,i=t.r+e.r;return.999*i*i>r*r+n*n}function Xa(t){if((e=t.children)&&(l=e.length)){var e,r,n,i,a,o,s,l,c=1/0,u=-1/0,f=1/0,h=-1/0;if(e.forEach(Za),(r=e[0]).x=-r.r,r.y=0,b(r),l>1&&((n=e[1]).x=n.r,n.y=0,b(n),l>2))for(Ka(r,n,i=e[2]),b(i),Ga(r,i),r._pack_prev=i,Ga(i,n),n=r._pack_next,a=3;a0)for(o=-1;++o=f[0]&&l<=f[1]&&((s=c[t.bisect(h,l,1,p)-1]).y+=m,s.push(a[o]));return c}return a.value=function(t){return arguments.length?(r=t,a):r},a.range=function(t){return arguments.length?(n=ve(t),a):n},a.bins=function(t){return arguments.length?(i="number"==typeof t?function(e){return Va(e,t)}:ve(t),a):i},a.frequency=function(t){return arguments.length?(e=!!t,a):e},a},t.layout.pack=function(){var e,r=t.layout.hierarchy().sort(Ha),n=0,i=[1,1];function a(t,a){var o=r.call(this,t,a),s=o[0],l=i[0],c=i[1],u=null==e?Math.sqrt:"function"==typeof e?e:function(){return e};if(s.x=s.y=0,Aa(s,function(t){t.r=+u(t.value)}),Aa(s,Xa),n){var f=n*(e?1:Math.max(2*s.r/l,2*s.r/c))/2;Aa(s,function(t){t.r+=f}),Aa(s,Xa),Aa(s,function(t){t.r-=f})}return function t(e,r,n,i){var a=e.children;e.x=r+=i*e.x;e.y=n+=i*e.y;e.r*=i;if(a)for(var o=-1,s=a.length;++od.x&&(d=t),t.depth>p.depth&&(p=t)});var m=r(h,d)/2-h.x,v=n[0]/(d.x+r(d,h)/2+m),g=n[1]/(p.depth||1);ka(u,function(t){t.x=(t.x+m)*v,t.y=t.depth*g})}return c}function o(t){var e=t.children,n=t.parent.children,i=t.i?n[t.i-1]:null;if(e.length){!function(t){var e,r=0,n=0,i=t.children,a=i.length;for(;--a>=0;)(e=i[a]).z+=r,e.m+=r,r+=e.s+(n+=e.c)}(t);var a=(e[0].z+e[e.length-1].z)/2;i?(t.z=i.z+r(t._,i._),t.m=t.z-a):t.z=a}else i&&(t.z=i.z+r(t._,i._));t.parent.A=function(t,e,n){if(e){for(var i,a=t,o=t,s=e,l=a.parent.children[0],c=a.m,u=o.m,f=s.m,h=l.m;s=to(s),a=$a(a),s&&a;)l=$a(l),(o=to(o)).a=t,(i=s.z+f-a.z-c+r(s._,a._))>0&&(eo(ro(s,t,n),t,i),c+=i,u+=i),f+=s.m,c+=a.m,h+=l.m,u+=o.m;s&&!to(o)&&(o.t=s,o.m+=f-u),a&&!$a(l)&&(l.t=a,l.m+=c-h,n=t)}return n}(t,i,t.parent.A||n[0])}function s(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function l(t){t.x*=n[0],t.y=t.depth*n[1]}return a.separation=function(t){return arguments.length?(r=t,a):r},a.size=function(t){return arguments.length?(i=null==(n=t)?l:null,a):i?null:n},a.nodeSize=function(t){return arguments.length?(i=null==(n=t)?null:l,a):i?n:null},Ma(a,e)},t.layout.cluster=function(){var e=t.layout.hierarchy().sort(null).value(null),r=Qa,n=[1,1],i=!1;function a(a,o){var s,l=e.call(this,a,o),c=l[0],u=0;Aa(c,function(e){var n=e.children;n&&n.length?(e.x=function(t){return t.reduce(function(t,e){return t+e.x},0)/t.length}(n),e.y=function(e){return 1+t.max(e,function(t){return t.y})}(n)):(e.x=s?u+=r(e,s):0,e.y=0,s=e)});var f=function t(e){var r=e.children;return r&&r.length?t(r[0]):e}(c),h=function t(e){var r,n=e.children;return n&&(r=n.length)?t(n[r-1]):e}(c),d=f.x-r(f,h)/2,p=h.x+r(h,f)/2;return Aa(c,i?function(t){t.x=(t.x-c.x)*n[0],t.y=(c.y-t.y)*n[1]}:function(t){t.x=(t.x-d)/(p-d)*n[0],t.y=(1-(c.y?t.y/c.y:1))*n[1]}),l}return a.separation=function(t){return arguments.length?(r=t,a):r},a.size=function(t){return arguments.length?(i=null==(n=t),a):i?null:n},a.nodeSize=function(t){return arguments.length?(i=null!=(n=t),a):i?n:null},Ma(a,e)},t.layout.treemap=function(){var e,r=t.layout.hierarchy(),n=Math.round,i=[1,1],a=null,o=no,s=!1,l="squarify",c=.5*(1+Math.sqrt(5));function u(t,e){for(var r,n,i=-1,a=t.length;++i0;)s.push(r=c[i-1]),s.area+=r.area,"squarify"!==l||(n=d(s,m))<=h?(c.pop(),h=n):(s.area-=s.pop().area,p(s,m,a,!1),m=Math.min(a.dx,a.dy),s.length=s.area=0,h=1/0);s.length&&(p(s,m,a,!0),s.length=s.area=0),e.forEach(f)}}function h(t){var e=t.children;if(e&&e.length){var r,n=o(t),i=e.slice(),a=[];for(u(i,n.dx*n.dy/t.value),a.area=0;r=i.pop();)a.push(r),a.area+=r.area,null!=r.z&&(p(a,r.z?n.dx:n.dy,n,!i.length),a.length=a.area=0);e.forEach(h)}}function d(t,e){for(var r,n=t.area,i=0,a=1/0,o=-1,s=t.length;++oi&&(i=r));return e*=e,(n*=n)?Math.max(e*i*c/n,n/(e*a*c)):1/0}function p(t,e,r,i){var a,o=-1,s=t.length,l=r.x,c=r.y,u=e?n(t.area/e):0;if(e==r.dx){for((i||u>r.dy)&&(u=r.dy);++or.dx)&&(u=r.dx);++o1);return t+e*r*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var e=t.random.normal.apply(t,arguments);return function(){return Math.exp(e())}},bates:function(e){var r=t.random.irwinHall(e);return function(){return r()/e}},irwinHall:function(t){return function(){for(var e=0,r=0;r2?fo:so,s=i?da:ha;return a=t(e,r,s,n),o=t(r,e,s,Gi),l}function l(t){return a(t)}l.invert=function(t){return o(t)};l.domain=function(t){return arguments.length?(e=t.map(Number),s()):e};l.range=function(t){return arguments.length?(r=t,s()):r};l.rangeRound=function(t){return l.range(t).interpolate(aa)};l.clamp=function(t){return arguments.length?(i=t,s()):i};l.interpolate=function(t){return arguments.length?(n=t,s()):n};l.ticks=function(t){return vo(e,t)};l.tickFormat=function(t,r){return go(e,t,r)};l.nice=function(t){return po(e,t),s()};l.copy=function(){return t(e,r,n,i)};return s()}([0,1],[0,1],Gi,!1)};var yo={s:1,g:1,p:1,r:1,e:1};function bo(t){return-Math.floor(Math.log(t)/Math.LN10+.01)}t.scale.log=function(){return function e(r,n,i,a){function o(t){return(i?Math.log(t<0?0:t):-Math.log(t>0?0:-t))/Math.log(n)}function s(t){return i?Math.pow(n,t):-Math.pow(n,-t)}function l(t){return r(o(t))}l.invert=function(t){return s(r.invert(t))};l.domain=function(t){return arguments.length?(i=t[0]>=0,r.domain((a=t.map(Number)).map(o)),l):a};l.base=function(t){return arguments.length?(n=+t,r.domain(a.map(o)),l):n};l.nice=function(){var t=lo(a.map(o),i?Math:_o);return r.domain(t),a=t.map(s),l};l.ticks=function(){var t=ao(a),e=[],r=t[0],l=t[1],c=Math.floor(o(r)),u=Math.ceil(o(l)),f=n%1?2:n;if(isFinite(u-c)){if(i){for(;c0;h--)e.push(s(c)*h);for(c=0;e[c]l;u--);e=e.slice(c,u)}return e};l.tickFormat=function(e,r){if(!arguments.length)return xo;arguments.length<2?r=xo:"function"!=typeof r&&(r=t.format(r));var i=Math.max(1,n*e/l.ticks().length);return function(t){var e=t/s(Math.round(o(t)));return e*n0?i[t-1]:r[0],tf?0:1;if(c=Et)return l(c,d)+(s?l(s,1-d):"")+"Z";var p,m,v,g,y,b,x,_,w,M,k,A,T=0,E=0,S=[];if((g=(+o.apply(this,arguments)||0)/2)&&(v=n===So?Math.sqrt(s*s+c*c):+n.apply(this,arguments),d||(E*=-1),c&&(E=Dt(v/c*Math.sin(g))),s&&(T=Dt(v/s*Math.sin(g)))),c){y=c*Math.cos(u+E),b=c*Math.sin(u+E),x=c*Math.cos(f-E),_=c*Math.sin(f-E);var L=Math.abs(f-u-2*E)<=At?0:1;if(E&&Do(y,b,x,_)===d^L){var C=(u+f)/2;y=c*Math.cos(C),b=c*Math.sin(C),x=_=null}}else y=b=0;if(s){w=s*Math.cos(f-T),M=s*Math.sin(f-T),k=s*Math.cos(u+T),A=s*Math.sin(u+T);var P=Math.abs(u-f+2*T)<=At?0:1;if(T&&Do(w,M,k,A)===1-d^P){var z=(u+f)/2;w=s*Math.cos(z),M=s*Math.sin(z),k=A=null}}else w=M=0;if(h>Mt&&(p=Math.min(Math.abs(c-s)/2,+r.apply(this,arguments)))>.001){m=s0?0:1}function Io(t,e,r,n,i){var a=t[0]-e[0],o=t[1]-e[1],s=(i?n:-n)/Math.sqrt(a*a+o*o),l=s*o,c=-s*a,u=t[0]+l,f=t[1]+c,h=e[0]+l,d=e[1]+c,p=(u+h)/2,m=(f+d)/2,v=h-u,g=d-f,y=v*v+g*g,b=r-n,x=u*d-h*f,_=(g<0?-1:1)*Math.sqrt(Math.max(0,b*b*y-x*x)),w=(x*g-v*_)/y,M=(-x*v-g*_)/y,k=(x*g+v*_)/y,A=(-x*v+g*_)/y,T=w-p,E=M-m,S=k-p,L=A-m;return T*T+E*E>S*S+L*L&&(w=k,M=A),[[w-l,M-c],[w*r/b,M*r/b]]}function Ro(t){var e=$n,r=ti,n=Yr,i=Fo,a=i.key,o=.7;function s(a){var s,l=[],c=[],u=-1,f=a.length,h=ve(e),d=ve(r);function p(){l.push("M",i(t(c),o))}for(;++u1&&i.push("H",n[0]);return i.join("")},"step-before":Bo,"step-after":Uo,basis:Ho,"basis-open":function(t){if(t.length<4)return Fo(t);var e,r=[],n=-1,i=t.length,a=[0],o=[0];for(;++n<3;)e=t[n],a.push(e[0]),o.push(e[1]);r.push(Go(Xo,a)+","+Go(Xo,o)),--n;for(;++n9&&(i=3*e/Math.sqrt(i),o[s]=i*r,o[s+1]=i*n));s=-1;for(;++s<=l;)i=(t[Math.min(l,s+1)][0]-t[Math.max(0,s-1)][0])/(6*(1+o[s]*o[s])),a.push([i||0,o[s]*i||0]);return a}(t))}});function Fo(t){return t.length>1?t.join("L"):t+"Z"}function jo(t){return t.join("L")+"Z"}function Bo(t){for(var e=0,r=t.length,n=t[0],i=[n[0],",",n[1]];++e1){s=e[1],a=t[l],l++,n+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(a[0]-s[0])+","+(a[1]-s[1])+","+a[0]+","+a[1];for(var c=2;cAt)+",1 "+e}function l(t,e,r,n){return"Q 0,0 "+n}return a.radius=function(t){return arguments.length?(r=ve(t),a):r},a.source=function(e){return arguments.length?(t=ve(e),a):t},a.target=function(t){return arguments.length?(e=ve(t),a):e},a.startAngle=function(t){return arguments.length?(n=ve(t),a):n},a.endAngle=function(t){return arguments.length?(i=ve(t),a):i},a},t.svg.diagonal=function(){var t=jn,e=Bn,r=ts;function n(n,i){var a=t.call(this,n,i),o=e.call(this,n,i),s=(a.y+o.y)/2,l=[a,{x:a.x,y:s},{x:o.x,y:s},o];return"M"+(l=l.map(r))[0]+"C"+l[1]+" "+l[2]+" "+l[3]}return n.source=function(e){return arguments.length?(t=ve(e),n):t},n.target=function(t){return arguments.length?(e=ve(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},t.svg.diagonal.radial=function(){var e=t.svg.diagonal(),r=ts,n=e.projection;return e.projection=function(t){return arguments.length?n(function(t){return function(){var e=t.apply(this,arguments),r=e[0],n=e[1]-St;return[r*Math.cos(n),r*Math.sin(n)]}}(r=t)):r},e},t.svg.symbol=function(){var t=rs,e=es;function r(r,n){return(is.get(t.call(this,r,n))||ns)(e.call(this,r,n))}return r.type=function(e){return arguments.length?(t=ve(e),r):t},r.size=function(t){return arguments.length?(e=ve(t),r):e},r};var is=t.map({circle:ns,cross:function(t){var e=Math.sqrt(t/5)/2;return"M"+-3*e+","+-e+"H"+-e+"V"+-3*e+"H"+e+"V"+-e+"H"+3*e+"V"+e+"H"+e+"V"+3*e+"H"+-e+"V"+e+"H"+-3*e+"Z"},diamond:function(t){var e=Math.sqrt(t/(2*os)),r=e*os;return"M0,"+-e+"L"+r+",0 0,"+e+" "+-r+",0Z"},square:function(t){var e=Math.sqrt(t)/2;return"M"+-e+","+-e+"L"+e+","+-e+" "+e+","+e+" "+-e+","+e+"Z"},"triangle-down":function(t){var e=Math.sqrt(t/as),r=e*as/2;return"M0,"+r+"L"+e+","+-r+" "+-e+","+-r+"Z"},"triangle-up":function(t){var e=Math.sqrt(t/as),r=e*as/2;return"M0,"+-r+"L"+e+","+r+" "+-e+","+r+"Z"}});t.svg.symbolTypes=is.keys();var as=Math.sqrt(3),os=Math.tan(30*Lt);W.transition=function(t){for(var e,r,n=us||++ds,i=vs(t),a=[],o=fs||{time:Date.now(),ease:ta,delay:0,duration:250},s=-1,l=this.length;++s0;)c[--h].call(t,o);if(a>=1)return f.event&&f.event.end.call(t,t.__data__,e),--u.count?delete u[n]:delete t[r],1}f||(a=i.time,o=ke(function(t){var e=f.delay;if(o.t=e+a,e<=t)return h(t-e);o.c=h},0,a),f=u[n]={tween:new x,time:a,timer:o,delay:i.delay,duration:i.duration,ease:i.ease,index:e},i=null,++u.count)}hs.call=W.call,hs.empty=W.empty,hs.node=W.node,hs.size=W.size,t.transition=function(e,r){return e&&e.transition?us?e.transition(r):e:t.selection().transition(e)},t.transition.prototype=hs,hs.select=function(t){var e,r,n,i=this.id,a=this.namespace,o=[];t=X(t);for(var s=-1,l=this.length;++srect,.s>rect").attr("width",s[1]-s[0])}function m(t){t.select(".extent").attr("y",l[0]),t.selectAll(".extent,.e>rect,.w>rect").attr("height",l[1]-l[0])}function v(){var f,v,g=this,y=t.select(t.event.target),b=n.of(g,arguments),x=t.select(g),_=y.datum(),w=!/^(n|s)$/.test(_)&&i,M=!/^(e|w)$/.test(_)&&a,k=y.classed("extent"),A=bt(g),T=t.mouse(g),E=t.select(o(g)).on("keydown.brush",function(){32==t.event.keyCode&&(k||(f=null,T[0]-=s[1],T[1]-=l[1],k=2),F())}).on("keyup.brush",function(){32==t.event.keyCode&&2==k&&(T[0]+=s[1],T[1]+=l[1],k=0,F())});if(t.event.changedTouches?E.on("touchmove.brush",C).on("touchend.brush",z):E.on("mousemove.brush",C).on("mouseup.brush",z),x.interrupt().selectAll("*").interrupt(),k)T[0]=s[0]-T[0],T[1]=l[0]-T[1];else if(_){var S=+/w$/.test(_),L=+/^n/.test(_);v=[s[1-S]-T[0],l[1-L]-T[1]],T[0]=s[S],T[1]=l[L]}else t.event.altKey&&(f=T.slice());function C(){var e=t.mouse(g),r=!1;v&&(e[0]+=v[0],e[1]+=v[1]),k||(t.event.altKey?(f||(f=[(s[0]+s[1])/2,(l[0]+l[1])/2]),T[0]=s[+(e[0]1?{floor:function(e){for(;s(e=t.floor(e));)e=Ls(e-1);return e},ceil:function(e){for(;s(e=t.ceil(e));)e=Ls(+e+1);return e}}:t))},i.ticks=function(t,e){var r=ao(i.domain()),n=null==t?a(r,10):"number"==typeof t?a(r,t):!t.range&&[{range:t},e];return n&&(t=n[0],e=n[1]),t.range(r[0],Ls(+r[1]+1),e<1?1:e)},i.tickFormat=function(){return n},i.copy=function(){return Ss(e.copy(),r,n)},ho(i,e)}function Ls(t){return new Date(t)}ks.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Es:Ts,Es.parse=function(t){var e=new Date(t);return isNaN(e)?null:e},Es.toString=Ts.toString,Oe.second=Ne(function(t){return new De(1e3*Math.floor(t/1e3))},function(t,e){t.setTime(t.getTime()+1e3*Math.floor(e))},function(t){return t.getSeconds()}),Oe.seconds=Oe.second.range,Oe.seconds.utc=Oe.second.utc.range,Oe.minute=Ne(function(t){return new De(6e4*Math.floor(t/6e4))},function(t,e){t.setTime(t.getTime()+6e4*Math.floor(e))},function(t){return t.getMinutes()}),Oe.minutes=Oe.minute.range,Oe.minutes.utc=Oe.minute.utc.range,Oe.hour=Ne(function(t){var e=t.getTimezoneOffset()/60;return new De(36e5*(Math.floor(t/36e5-e)+e))},function(t,e){t.setTime(t.getTime()+36e5*Math.floor(e))},function(t){return t.getHours()}),Oe.hours=Oe.hour.range,Oe.hours.utc=Oe.hour.utc.range,Oe.month=Ne(function(t){return(t=Oe.day(t)).setDate(1),t},function(t,e){t.setMonth(t.getMonth()+e)},function(t){return t.getMonth()}),Oe.months=Oe.month.range,Oe.months.utc=Oe.month.utc.range;var Cs=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Ps=[[Oe.second,1],[Oe.second,5],[Oe.second,15],[Oe.second,30],[Oe.minute,1],[Oe.minute,5],[Oe.minute,15],[Oe.minute,30],[Oe.hour,1],[Oe.hour,3],[Oe.hour,6],[Oe.hour,12],[Oe.day,1],[Oe.day,2],[Oe.week,1],[Oe.month,1],[Oe.month,3],[Oe.year,1]],zs=ks.multi([[".%L",function(t){return t.getMilliseconds()}],[":%S",function(t){return t.getSeconds()}],["%I:%M",function(t){return t.getMinutes()}],["%I %p",function(t){return t.getHours()}],["%a %d",function(t){return t.getDay()&&1!=t.getDate()}],["%b %d",function(t){return 1!=t.getDate()}],["%B",function(t){return t.getMonth()}],["%Y",Yr]]),Os={range:function(e,r,n){return t.range(Math.ceil(e/n)*n,+r,n).map(Ls)},floor:P,ceil:P};Ps.year=Oe.year,Oe.scale=function(){return Ss(t.scale.linear(),Ps,zs)};var Ds=Ps.map(function(t){return[t[0].utc,t[1]]}),Is=As.multi([[".%L",function(t){return t.getUTCMilliseconds()}],[":%S",function(t){return t.getUTCSeconds()}],["%I:%M",function(t){return t.getUTCMinutes()}],["%I %p",function(t){return t.getUTCHours()}],["%a %d",function(t){return t.getUTCDay()&&1!=t.getUTCDate()}],["%b %d",function(t){return 1!=t.getUTCDate()}],["%B",function(t){return t.getUTCMonth()}],["%Y",Yr]]);function Rs(t){return JSON.parse(t.responseText)}function Ns(t){var e=i.createRange();return e.selectNode(i.body),e.createContextualFragment(t.responseText)}Ds.year=Oe.year.utc,Oe.scale.utc=function(){return Ss(t.scale.linear(),Ds,Is)},t.text=ge(function(t){return t.responseText}),t.json=function(t,e){return ye(t,"application/json",Rs,e)},t.html=function(t,e){return ye(t,"text/html",Ns,e)},t.xml=ge(function(t){return t.responseXML}),"object"==typeof e&&e.exports?e.exports=t:this.d3=t}()},{}],129:[function(t,e,r){e.exports=function(){for(var t=0;t=2)return!1;t[r]=n}return!0}):_.filter(function(t){for(var e=0;e<=s;++e){var r=g[t[e]];if(r<0)return!1;t[e]=r}return!0});if(1&s)for(var u=0;u<_.length;++u){var x=_[u],h=x[0];x[0]=x[1],x[1]=h}return _}},{"incremental-convex-hull":258,uniq:536}],131:[function(t,e,r){(function(t){var r=!1;if("undefined"!=typeof Float64Array){var n=new Float64Array(1),i=new Uint32Array(n.buffer);if(n[0]=1,r=!0,1072693248===i[1]){e.exports=function(t){return n[0]=t,[i[0],i[1]]},e.exports.pack=function(t,e){return i[0]=t,i[1]=e,n[0]},e.exports.lo=function(t){return n[0]=t,i[0]},e.exports.hi=function(t){return n[0]=t,i[1]}}else if(1072693248===i[0]){e.exports=function(t){return n[0]=t,[i[1],i[0]]},e.exports.pack=function(t,e){return i[1]=t,i[0]=e,n[0]},e.exports.lo=function(t){return n[0]=t,i[1]},e.exports.hi=function(t){return n[0]=t,i[0]}}else r=!1}if(!r){var a=new t(8);e.exports=function(t){return a.writeDoubleLE(t,0,!0),[a.readUInt32LE(0,!0),a.readUInt32LE(4,!0)]},e.exports.pack=function(t,e){return a.writeUInt32LE(t,0,!0),a.writeUInt32LE(e,4,!0),a.readDoubleLE(0,!0)},e.exports.lo=function(t){return a.writeDoubleLE(t,0,!0),a.readUInt32LE(0,!0)},e.exports.hi=function(t){return a.writeDoubleLE(t,0,!0),a.readUInt32LE(4,!0)}}e.exports.sign=function(t){return e.exports.hi(t)>>>31},e.exports.exponent=function(t){return(e.exports.hi(t)<<1>>>21)-1023},e.exports.fraction=function(t){var r=e.exports.lo(t),n=e.exports.hi(t),i=1048575&n;return 2146435072&n&&(i+=1<<20),[r,i]},e.exports.denormalized=function(t){return!(2146435072&e.exports.hi(t))}}).call(this,t("buffer").Buffer)},{buffer:83}],132:[function(t,e,r){var n=t("abs-svg-path"),i=t("normalize-svg-path"),a={M:"moveTo",C:"bezierCurveTo"};e.exports=function(t,e){t.beginPath(),i(n(e)).forEach(function(e){var r=e[0],n=e.slice(1);t[a[r]].apply(t,n)}),t.closePath()}},{"abs-svg-path":43,"normalize-svg-path":441}],133:[function(t,e,r){e.exports=function(t){switch(t){case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"uint8":return Uint8Array;case"uint16":return Uint16Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;case"array":return Array;case"uint8_clamped":return Uint8ClampedArray}}},{}],134:[function(t,e,r){"use strict";e.exports=function(t,e){switch(void 0===e&&(e=0),typeof t){case"number":if(t>0)return function(t,e){var r,n;for(r=new Array(t),n=0;n80*r){n=l=t[0],s=c=t[1];for(var x=r;xl&&(l=u),d>c&&(c=d);m=0!==(m=Math.max(l-n,c-s))?1/m:0}return o(y,b,r,n,s,m),b}function i(t,e,r,n,i){var a,o;if(i===A(t,e,r,n)>0)for(a=e;a=e;a-=n)o=w(a,t[a],t[a+1],o);return o&&y(o,o.next)&&(M(o),o=o.next),o}function a(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!y(n,n.next)&&0!==g(n.prev,n,n.next))n=n.next;else{if(M(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function o(t,e,r,n,i,f,h){if(t){!h&&f&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=d(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,f);for(var p,m,v=t;t.prev!==t.next;)if(p=t.prev,m=t.next,f?l(t,n,i,f):s(t))e.push(p.i/r),e.push(t.i/r),e.push(m.i/r),M(t),t=m.next,v=m.next;else if((t=m)===v){h?1===h?o(t=c(t,e,r),e,r,n,i,f,2):2===h&&u(t,e,r,n,i,f):o(a(t),e,r,n,i,f,1);break}}}function s(t){var e=t.prev,r=t,n=t.next;if(g(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(m(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&g(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function l(t,e,r,n){var i=t.prev,a=t,o=t.next;if(g(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=d(s,l,e,r,n),h=d(c,u,e,r,n),p=t.prevZ,v=t.nextZ;p&&p.z>=f&&v&&v.z<=h;){if(p!==t.prev&&p!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&g(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,v!==t.prev&&v!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,v.x,v.y)&&g(v.prev,v,v.next)>=0)return!1;v=v.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&g(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;v&&v.z<=h;){if(v!==t.prev&&v!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,v.x,v.y)&&g(v.prev,v,v.next)>=0)return!1;v=v.nextZ}return!0}function c(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!y(i,a)&&b(i,n,n.next,a)&&x(i,a)&&x(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),M(n),M(n.next),n=t=a),n=n.next}while(n!==t);return n}function u(t,e,r,n,i,s){var l=t;do{for(var c=l.next.next;c!==l.prev;){if(l.i!==c.i&&v(l,c)){var u=_(l,c);return l=a(l,l.next),u=a(u,u.next),o(l,e,r,n,i,s),void o(u,e,r,n,i,s)}c=c.next}l=l.next}while(l!==t)}function f(t,e){return t.x-e.x}function h(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=u&&i!==n.x&&m(ar.x)&&x(n,t)&&(r=n,h=l),n=n.next;return r}(t,e)){var r=_(e,t);a(r,r.next)}}function d(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function p(t){var e=t,r=t;do{e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function v(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&b(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&x(t,e)&&x(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)}function g(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function y(t,e){return t.x===e.x&&t.y===e.y}function b(t,e,r,n){return!!(y(t,e)&&y(r,n)||y(t,n)&&y(r,e))||g(t,e,r)>0!=g(t,e,n)>0&&g(r,n,t)>0!=g(r,n,e)>0}function x(t,e){return g(t.prev,t,t.next)<0?g(t,e,t.next)>=0&&g(t,t.prev,e)>=0:g(t,e,t.prev)<0||g(t,t.next,e)<0}function _(t,e){var r=new k(t.i,t.x,t.y),n=new k(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function w(t,e,r,n){var i=new k(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function M(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function k(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function A(t,e,r,n){for(var i=0,a=e,o=r-n;a0&&(n+=t[i-1].length,r.holes.push(n))}return r}},{}],136:[function(t,e,r){"use strict";e.exports=function(t,e){var r=t.length;if("number"!=typeof e){e=0;for(var i=0;i0&&this._events[t].length>r&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace()),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(t,e){if(!i(e))throw TypeError("listener must be a function");var r=!1;function n(){this.removeListener(t,n),r||(r=!0,e.apply(this,arguments))}return n.listener=e,this.on(t,n),this},n.prototype.removeListener=function(t,e){var r,n,o,s;if(!i(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(o=(r=this._events[t]).length,n=-1,r===e||i(r.listener)&&r.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(a(r)){for(s=o;s-- >0;)if(r[s]===e||r[s].listener&&r[s].listener===e){n=s;break}if(n<0)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(n,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},n.prototype.removeAllListeners=function(t){var e,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(i(r=this._events[t]))this.removeListener(t,r);else if(r)for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){return this._events&&this._events[t]?i(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(i(e))return 1;if(e)return e.length}return 0},n.listenerCount=function(t,e){return t.listenerCount(e)}},{}],139:[function(t,e,r){"use strict";e.exports=function(t,e,r){var n=e||0,i=r||1;return[[t[12]+t[0],t[13]+t[1],t[14]+t[2],t[15]+t[3]],[t[12]-t[0],t[13]-t[1],t[14]-t[2],t[15]-t[3]],[t[12]+t[4],t[13]+t[5],t[14]+t[6],t[15]+t[7]],[t[12]-t[4],t[13]-t[5],t[14]-t[6],t[15]-t[7]],[n*t[12]+t[8],n*t[13]+t[9],n*t[14]+t[10],n*t[15]+t[11]],[i*t[12]-t[8],i*t[13]-t[9],i*t[14]-t[10],i*t[15]-t[11]]]}},{}],140:[function(t,e,r){"use strict";e.exports=function(t){var e=typeof t;if("string"===e){var r=t;if(0===(t=+t)&&function(t){for(var e,r=t.length,n=0;n13)&&32!==e&&133!==e&&160!==e&&5760!==e&&6158!==e&&(e<8192||e>8205)&&8232!==e&&8233!==e&&8239!==e&&8287!==e&&8288!==e&&12288!==e&&65279!==e)return!1;return!0}(r))return!1}else if("number"!==e)return!1;return t-t<1}},{}],141:[function(t,e,r){"use strict";e.exports=function(t){return new Function("f","var p = (f && f.properties || {}); return "+i(t))};var n=["Unknown","Point","LineString","Polygon"];function i(t){if(!t)return"true";var e=t[0];return t.length<=1?"any"===e?"false":"true":"("+("=="===e?o(t[1],t[2],"===",!1):"!="===e?o(t[1],t[2],"!==",!1):"<"===e||">"===e||"<="===e||">="===e?o(t[1],t[2],e,!0):"any"===e?s(t.slice(1),"||"):"all"===e?s(t.slice(1),"&&"):"none"===e?u(s(t.slice(1),"||")):"in"===e?l(t[1],t.slice(2)):"!in"===e?u(l(t[1],t.slice(2))):"has"===e?c(t[1]):"!has"===e?u(c([t[1]])):"true")+")"}function a(t){return"$type"===t?"f.type":"$id"===t?"f.id":"p["+JSON.stringify(t)+"]"}function o(t,e,r,i){var o=a(t),s="$type"===t?n.indexOf(e):JSON.stringify(e);return(i?"typeof "+o+"=== typeof "+s+"&&":"")+o+r+s}function s(t,e){return t.map(i).join(e)}function l(t,e){"$type"===t&&(e=e.map(function(t){return n.indexOf(t)}));var r=JSON.stringify(e.sort(f)),i=a(t);return e.length<=200?r+".indexOf("+i+") !== -1":"function(v, a, i, j) {while (i <= j) { var m = (i + j) >> 1; if (a[m] === v) return true; if (a[m] > v) j = m - 1; else i = m + 1;}return false; }("+i+", "+r+",0,"+(e.length-1)+")"}function c(t){return JSON.stringify(t)+" in p"}function u(t){return"!("+t+")"}function f(t,e){return te?1:0}},{}],142:[function(t,e,r){"use strict";e.exports=function(t,e,r){switch(arguments.length){case 0:return new o([0],[0],0);case 1:if("number"==typeof t){var n=l(t);return new o(n,n,0)}return new o(t,l(t.length),0);case 2:if("number"==typeof e){var n=l(t.length);return new o(t,n,+e)}r=0;case 3:if(t.length!==e.length)throw new Error("state and velocity lengths must match");return new o(t,e,r)}};var n=t("cubic-hermite"),i=t("binary-search-bounds");function a(t,e,r){return Math.min(e,Math.max(t,r))}function o(t,e,r){this.dimension=t.length,this.bounds=[new Array(this.dimension),new Array(this.dimension)];for(var n=0;n=r-1){h=l.length-1;var p=t-e[r-1];for(d=0;d=r-1)for(var u=s.length-1,f=(e[r-1],0);f=0;--r)if(t[--e])return!1;return!0},s.jump=function(t){var e=this.lastT(),r=this.dimension;if(!(t0;--f)n.push(a(l[f-1],c[f-1],arguments[f])),i.push(0)}},s.push=function(t){var e=this.lastT(),r=this.dimension;if(!(t1e-6?1/s:0;this._time.push(t);for(var h=r;h>0;--h){var d=a(c[h-1],u[h-1],arguments[h]);n.push(d),i.push((d-n[o++])*f)}}},s.set=function(t){var e=this.dimension;if(!(t0;--l)r.push(a(o[l-1],s[l-1],arguments[l])),n.push(0)}},s.move=function(t){var e=this.lastT(),r=this.dimension;if(!(t<=e||arguments.length!==r+1)){var n=this._state,i=this._velocity,o=n.length-this.dimension,s=this.bounds,l=s[0],c=s[1],u=t-e,f=u>1e-6?1/u:0;this._time.push(t);for(var h=r;h>0;--h){var d=arguments[h];n.push(a(l[h-1],c[h-1],n[o++]+d)),i.push(d*f)}}},s.idle=function(t){var e=this.lastT();if(!(t=0;--f)n.push(a(l[f],c[f],n[o]+u*i[o])),i.push(0),o+=1}}},{"binary-search-bounds":70,"cubic-hermite":115}],143:[function(t,e,r){var n=t("dtype");e.exports=function(t,e,r){if(!t)throw new TypeError("must specify data as first parameter");if(r=0|+(r||0),Array.isArray(t)&&Array.isArray(t[0])){var i=t[0].length,a=t.length*i;e&&"string"!=typeof e||(e=new(n(e||"float32"))(a+r));var o=e.length-r;if(a!==o)throw new Error("source length "+a+" ("+i+"x"+t.length+") does not match destination length "+o);for(var s=0,l=r;s=0;--d){o=u[d];f[d]<=0?u[d]=new a(o._color,o.key,o.value,u[d+1],o.right,o._count+1):u[d]=new a(o._color,o.key,o.value,o.left,u[d+1],o._count+1)}for(d=u.length-1;d>1;--d){var p=u[d-1];o=u[d];if(p._color===i||o._color===i)break;var m=u[d-2];if(m.left===p)if(p.left===o){if(!(v=m.right)||v._color!==n){if(m._color=n,m.left=p.right,p._color=i,p.right=m,u[d-2]=p,u[d-1]=o,l(m),l(p),d>=3)(g=u[d-3]).left===m?g.left=p:g.right=p;break}p._color=i,m.right=s(i,v),m._color=n,d-=1}else{if(!(v=m.right)||v._color!==n){if(p.right=o.left,m._color=n,m.left=o.right,o._color=i,o.left=p,o.right=m,u[d-2]=o,u[d-1]=p,l(m),l(p),l(o),d>=3)(g=u[d-3]).left===m?g.left=o:g.right=o;break}p._color=i,m.right=s(i,v),m._color=n,d-=1}else if(p.right===o){if(!(v=m.left)||v._color!==n){if(m._color=n,m.right=p.left,p._color=i,p.left=m,u[d-2]=p,u[d-1]=o,l(m),l(p),d>=3)(g=u[d-3]).right===m?g.right=p:g.left=p;break}p._color=i,m.left=s(i,v),m._color=n,d-=1}else{var v;if(!(v=m.left)||v._color!==n){var g;if(p.left=o.right,m._color=n,m.right=o.left,o._color=i,o.right=p,o.left=m,u[d-2]=o,u[d-1]=p,l(m),l(p),l(o),d>=3)(g=u[d-3]).right===m?g.right=o:g.left=o;break}p._color=i,m.left=s(i,v),m._color=n,d-=1}}return u[0]._color=i,new c(r,u[0])},u.forEach=function(t,e,r){if(this.root)switch(arguments.length){case 1:return function t(e,r){var n;if(r.left&&(n=t(e,r.left)))return n;return(n=e(r.key,r.value))||(r.right?t(e,r.right):void 0)}(t,this.root);case 2:return function t(e,r,n,i){if(r(e,i.key)<=0){var a;if(i.left&&(a=t(e,r,n,i.left)))return a;if(a=n(i.key,i.value))return a}if(i.right)return t(e,r,n,i.right)}(e,this._compare,t,this.root);case 3:if(this._compare(e,r)>=0)return;return function t(e,r,n,i,a){var o,s=n(e,a.key),l=n(r,a.key);if(s<=0){if(a.left&&(o=t(e,r,n,i,a.left)))return o;if(l>0&&(o=i(a.key,a.value)))return o}if(l>0&&a.right)return t(e,r,n,i,a.right)}(e,r,this._compare,t,this.root)}},Object.defineProperty(u,"begin",{get:function(){for(var t=[],e=this.root;e;)t.push(e),e=e.left;return new f(this,t)}}),Object.defineProperty(u,"end",{get:function(){for(var t=[],e=this.root;e;)t.push(e),e=e.right;return new f(this,t)}}),u.at=function(t){if(t<0)return new f(this,[]);for(var e=this.root,r=[];;){if(r.push(e),e.left){if(t=e.right._count)break;e=e.right}return new f(this,[])},u.ge=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a<=0&&(i=n.length),r=a<=0?r.left:r.right}return n.length=i,new f(this,n)},u.gt=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a<0&&(i=n.length),r=a<0?r.left:r.right}return n.length=i,new f(this,n)},u.lt=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a>0&&(i=n.length),r=a<=0?r.left:r.right}return n.length=i,new f(this,n)},u.le=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a>=0&&(i=n.length),r=a<0?r.left:r.right}return n.length=i,new f(this,n)},u.find=function(t){for(var e=this._compare,r=this.root,n=[];r;){var i=e(t,r.key);if(n.push(r),0===i)return new f(this,n);r=i<=0?r.left:r.right}return new f(this,[])},u.remove=function(t){var e=this.find(t);return e?e.remove():this},u.get=function(t){for(var e=this._compare,r=this.root;r;){var n=e(t,r.key);if(0===n)return r.value;r=n<=0?r.left:r.right}};var h=f.prototype;function d(t,e){t.key=e.key,t.value=e.value,t.left=e.left,t.right=e.right,t._color=e._color,t._count=e._count}function p(t,e){return te?1:0}Object.defineProperty(h,"valid",{get:function(){return this._stack.length>0}}),Object.defineProperty(h,"node",{get:function(){return this._stack.length>0?this._stack[this._stack.length-1]:null},enumerable:!0}),h.clone=function(){return new f(this.tree,this._stack.slice())},h.remove=function(){var t=this._stack;if(0===t.length)return this.tree;var e=new Array(t.length),r=t[t.length-1];e[e.length-1]=new a(r._color,r.key,r.value,r.left,r.right,r._count);for(var u=t.length-2;u>=0;--u){(r=t[u]).left===t[u+1]?e[u]=new a(r._color,r.key,r.value,e[u+1],r.right,r._count):e[u]=new a(r._color,r.key,r.value,r.left,e[u+1],r._count)}if((r=e[e.length-1]).left&&r.right){var f=e.length;for(r=r.left;r.right;)e.push(r),r=r.right;var h=e[f-1];e.push(new a(r._color,h.key,h.value,r.left,r.right,r._count)),e[f-1].key=r.key,e[f-1].value=r.value;for(u=e.length-2;u>=f;--u)r=e[u],e[u]=new a(r._color,r.key,r.value,r.left,e[u+1],r._count);e[f-1].left=e[f]}if((r=e[e.length-1])._color===n){var p=e[e.length-2];p.left===r?p.left=null:p.right===r&&(p.right=null),e.pop();for(u=0;u=0;--u){if(e=t[u],0===u)return void(e._color=i);if((r=t[u-1]).left===e){if((a=r.right).right&&a.right._color===n)return c=(a=r.right=o(a)).right=o(a.right),r.right=a.left,a.left=r,a.right=c,a._color=r._color,e._color=i,r._color=i,c._color=i,l(r),l(a),u>1&&((f=t[u-2]).left===r?f.left=a:f.right=a),void(t[u-1]=a);if(a.left&&a.left._color===n)return c=(a=r.right=o(a)).left=o(a.left),r.right=c.left,a.left=c.right,c.left=r,c.right=a,c._color=r._color,r._color=i,a._color=i,e._color=i,l(r),l(a),l(c),u>1&&((f=t[u-2]).left===r?f.left=c:f.right=c),void(t[u-1]=c);if(a._color===i){if(r._color===n)return r._color=i,void(r.right=s(n,a));r.right=s(n,a);continue}a=o(a),r.right=a.left,a.left=r,a._color=r._color,r._color=n,l(r),l(a),u>1&&((f=t[u-2]).left===r?f.left=a:f.right=a),t[u-1]=a,t[u]=r,u+11&&((f=t[u-2]).right===r?f.right=a:f.left=a),void(t[u-1]=a);if(a.right&&a.right._color===n)return c=(a=r.left=o(a)).right=o(a.right),r.left=c.right,a.right=c.left,c.right=r,c.left=a,c._color=r._color,r._color=i,a._color=i,e._color=i,l(r),l(a),l(c),u>1&&((f=t[u-2]).right===r?f.right=c:f.left=c),void(t[u-1]=c);if(a._color===i){if(r._color===n)return r._color=i,void(r.left=s(n,a));r.left=s(n,a);continue}var f;a=o(a),r.left=a.right,a.right=r,a._color=r._color,r._color=n,l(r),l(a),u>1&&((f=t[u-2]).right===r?f.right=a:f.left=a),t[u-1]=a,t[u]=r,u+10)return this._stack[this._stack.length-1].key},enumerable:!0}),Object.defineProperty(h,"value",{get:function(){if(this._stack.length>0)return this._stack[this._stack.length-1].value},enumerable:!0}),Object.defineProperty(h,"index",{get:function(){var t=0,e=this._stack;if(0===e.length){var r=this.tree.root;return r?r._count:0}e[e.length-1].left&&(t=e[e.length-1].left._count);for(var n=e.length-2;n>=0;--n)e[n+1]===e[n].right&&(++t,e[n].left&&(t+=e[n].left._count));return t},enumerable:!0}),h.next=function(){var t=this._stack;if(0!==t.length){var e=t[t.length-1];if(e.right)for(e=e.right;e;)t.push(e),e=e.left;else for(t.pop();t.length>0&&t[t.length-1].right===e;)e=t[t.length-1],t.pop()}},Object.defineProperty(h,"hasNext",{get:function(){var t=this._stack;if(0===t.length)return!1;if(t[t.length-1].right)return!0;for(var e=t.length-1;e>0;--e)if(t[e-1].left===t[e])return!0;return!1}}),h.update=function(t){var e=this._stack;if(0===e.length)throw new Error("Can't update empty node!");var r=new Array(e.length),n=e[e.length-1];r[r.length-1]=new a(n._color,n.key,t,n.left,n.right,n._count);for(var i=e.length-2;i>=0;--i)(n=e[i]).left===e[i+1]?r[i]=new a(n._color,n.key,n.value,r[i+1],n.right,n._count):r[i]=new a(n._color,n.key,n.value,n.left,r[i+1],n._count);return new c(this.tree._compare,r[0])},h.prev=function(){var t=this._stack;if(0!==t.length){var e=t[t.length-1];if(e.left)for(e=e.left;e;)t.push(e),e=e.right;else for(t.pop();t.length>0&&t[t.length-1].left===e;)e=t[t.length-1],t.pop()}},Object.defineProperty(h,"hasPrev",{get:function(){var t=this._stack;if(0===t.length)return!1;if(t[t.length-1].left)return!0;for(var e=t.length-1;e>0;--e)if(t[e-1].right===t[e])return!0;return!1}})},{}],145:[function(t,e,r){var n=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7],i=607/128,a=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];function o(t){if(t<0)return Number("0/0");for(var e=a[0],r=a.length-1;r>0;--r)e+=a[r]/(t+r);var n=t+i+.5;return.5*Math.log(2*Math.PI)+(t+.5)*Math.log(n)-n+Math.log(e)-Math.log(t)}e.exports=function t(e){if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*t(1-e));if(e>100)return Math.exp(o(e));e-=1;for(var r=n[0],i=1;i<9;i++)r+=n[i]/(e+i);var a=e+7+.5;return Math.sqrt(2*Math.PI)*Math.pow(a,e+.5)*Math.exp(-a)*r},e.exports.log=o},{}],146:[function(t,e,r){var n=t("wgs84");function i(t){var e=0;if(t&&t.length>0){e+=Math.abs(a(t[0]));for(var r=1;r2){for(var r,i,a=0;a=0}(t)===e?t:t.reverse()}e.exports=function t(e,r){switch(e&&e.type||null){case"FeatureCollection":return e.features=e.features.map(i(t,r)),e;case"Feature":return e.geometry=t(e.geometry,r),e;case"Polygon":case"MultiPolygon":return function(t,e){"Polygon"===t.type?t.coordinates=a(t.coordinates,e):"MultiPolygon"===t.type&&(t.coordinates=t.coordinates.map(i(a,e)));return t}(e,r);default:return e}}},{"geojson-area":146}],148:[function(t,e,r){"use strict";e.exports=function(t,e,r,o,s,l,c,u){if(o/=e,c>=(r/=e)&&u<=o)return t;if(c>o||u=r&&p<=o)f.push(m);else if(!(d>o||p=e&&s<=r&&i.push(o)}return i}function a(t,e,r,n,i,a){for(var s=[],l=0;lr?(x.push(i(c,p,e),i(c,p,r)),a||(x=o(s,x,v,g,y))):d>=e&&x.push(i(c,p,e)):h>r?dr&&(x.push(i(c,p,r)),a||(x=o(s,x,v,g,y))));(h=(c=m[b-1])[n])>=e&&h<=r&&x.push(c),f=x[x.length-1],a&&f&&(x[0][0]!==f[0]||x[0][1]!==f[1])&&x.push(x[0]),o(s,x,v,g,y)}return s}function o(t,e,r,n,i){return e.length&&(e.area=r,e.dist=n,void 0!==i&&(e.outer=i),t.push(e)),[]}},{"./feature":150}],149:[function(t,e,r){"use strict";e.exports=function(t,e){var r=[];if("FeatureCollection"===t.type)for(var n=0;n1?1:n,0]}},{"./feature":150,"./simplify":152}],150:[function(t,e,r){"use strict";function n(t,e,r){for(var n,i=0;i1)return!1;var o=a.geometry[0].length;if(5!==o)return!1;for(var s=0;s1&&console.time("creation"),b=this.tiles[y]=s(t,g,r,n,x,e===p.maxZoom),this.tileCoords.push({z:e,x:r,y:n}),m)){m>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",e,r,n,b.numFeatures,b.numPoints,b.numSimplified),console.timeEnd("creation"));var _="z"+e;this.stats[_]=(this.stats[_]||0)+1,this.total++}if(b.source=t,i){if(e===p.maxZoom||e===i)continue;var w=1<1&&console.time("clipping");var M,k,A,T,E,S,L=.5*p.buffer/p.extent,C=.5-L,P=.5+L,z=1+L;M=k=A=T=null,E=a(t,g,r-L,r+P,0,u,b.min[0],b.max[0]),S=a(t,g,r+C,r+z,0,u,b.min[0],b.max[0]),E&&(M=a(E,g,n-L,n+P,1,f,b.min[1],b.max[1]),k=a(E,g,n+C,n+z,1,f,b.min[1],b.max[1])),S&&(A=a(S,g,n-L,n+P,1,f,b.min[1],b.max[1]),T=a(S,g,n+C,n+z,1,f,b.min[1],b.max[1])),m>1&&console.timeEnd("clipping"),t.length&&(d.push(M||[],e+1,2*r,2*n),d.push(k||[],e+1,2*r,2*n+1),d.push(A||[],e+1,2*r+1,2*n),d.push(T||[],e+1,2*r+1,2*n+1))}else i&&(v=e)}return v},l.prototype.getTile=function(t,e,r){var n=this.options,a=n.extent,o=n.debug,s=1<1&&console.log("drilling down to z%d-%d-%d",t,e,r);for(var u,f=t,d=e,p=r;!u&&f>0;)f--,d=Math.floor(d/2),p=Math.floor(p/2),u=this.tiles[c(f,d,p)];if(!u||!u.source)return null;if(o>1&&console.log("found parent tile z%d-%d-%d",f,d,p),h(u,a,n.buffer))return i.tile(u,a);o>1&&console.time("drilling down");var m=this.splitTile(u.source,f,d,p,t,e,r);if(o>1&&console.timeEnd("drilling down"),null!==m){var v=1<1?(n=a,i=o):f>0&&(n+=c*f,i+=u*f)}return(c=s-n)*c+(u=l-i)*u}e.exports=function(t,e){var r,i,a,o,s=e*e,l=0,c=t.length-1,u=[];t[l][2]=1,t[c][2]=1;for(;c;){for(i=0,r=l+1;ri&&(o=r,i=a);i>s?(t[o][2]=i,u.push(l),u.push(o),l=o):(c=u.pop(),l=u.pop())}}},{}],153:[function(t,e,r){"use strict";function n(t,e,r,n){var a,o,s,l,c=e.geometry,u=e.type,f=[],h=r*r;if(1===u)for(a=0;ah)&&(d.push(l),t.numSimplified++),t.numPoints++;3===u&&i(d,s.outer),f.push(d)}else t.numPoints+=s.length;if(f.length){var p={geometry:f,type:u,tags:e.tags||null};null!==e.id&&(p.id=e.id),t.features.push(p)}}function i(t,e){(function(t){for(var e,r,n=0,i=0,a=t.length,o=a-1;is.max[0]&&(s.max[0]=u[0]),u[1]>s.max[1]&&(s.max[1]=u[1])}return s}},{}],154:[function(t,e,r){"use strict";function n(t,e,r,n,i){return[Math.round(e*(t[0]*r-n)),Math.round(e*(t[1]*r-i))]}r.tile=function(t,e){if(t.transformed)return t;var r,i,a,o=t.z2,s=t.x,l=t.y;for(r=0;r0?(d[u]=-1,p[u]=0):(d[u]=0,p[u]=1)}}var m=[0,0,0],v={model:l,view:l,projection:l};f.isOpaque=function(){return!0},f.isTransparent=function(){return!1},f.drawTransparent=function(t){};var g=[0,0,0],y=[0,0,0],b=[0,0,0];f.draw=function(t){t=t||v;for(var e=this.gl,r=t.model||l,n=t.view||l,i=t.projection||l,a=this.bounds,s=o(r,n,i,a),u=s.cubeEdges,f=s.axis,h=n[12],x=n[13],_=n[14],w=n[15],M=this.pixelRatio*(i[3]*h+i[7]*x+i[11]*_+i[15]*w)/e.drawingBufferHeight,k=0;k<3;++k)this.lastCubeProps.cubeEdges[k]=u[k],this.lastCubeProps.axis[k]=f[k];var A=d;for(k=0;k<3;++k)p(d[k],k,this.bounds,u,f);e=this.gl;var T=m;for(k=0;k<3;++k)this.backgroundEnable[k]?T[k]=f[k]:T[k]=0;this._background.draw(r,n,i,a,T,this.backgroundColor),this._lines.bind(r,n,i,this);for(k=0;k<3;++k){var E=[0,0,0];f[k]>0?E[k]=a[1][k]:E[k]=a[0][k];for(var S=0;S<2;++S){var L=(k+1+S)%3,C=(k+1+(1^S))%3;this.gridEnable[L]&&this._lines.drawGrid(L,C,this.bounds,E,this.gridColor[L],this.gridWidth[L]*this.pixelRatio)}for(S=0;S<2;++S){L=(k+1+S)%3,C=(k+1+(1^S))%3;this.zeroEnable[C]&&a[0][C]<=0&&a[1][C]>=0&&this._lines.drawZero(L,C,this.bounds,E,this.zeroLineColor[C],this.zeroLineWidth[C]*this.pixelRatio)}}for(k=0;k<3;++k){this.lineEnable[k]&&this._lines.drawAxisLine(k,this.bounds,A[k].primalOffset,this.lineColor[k],this.lineWidth[k]*this.pixelRatio),this.lineMirror[k]&&this._lines.drawAxisLine(k,this.bounds,A[k].mirrorOffset,this.lineColor[k],this.lineWidth[k]*this.pixelRatio);var P=c(g,A[k].primalMinor),z=c(y,A[k].mirrorMinor),O=this.lineTickLength;for(S=0;S<3;++S){var D=M/r[5*S];P[S]*=O[S]*D,z[S]*=O[S]*D}this.lineTickEnable[k]&&this._lines.drawAxisTicks(k,A[k].primalOffset,P,this.lineTickColor[k],this.lineTickWidth[k]*this.pixelRatio),this.lineTickMirror[k]&&this._lines.drawAxisTicks(k,A[k].mirrorOffset,z,this.lineTickColor[k],this.lineTickWidth[k]*this.pixelRatio)}this._lines.unbind(),this._text.bind(r,n,i,this.pixelRatio);for(k=0;k<3;++k){var I=A[k].primalMinor,R=c(b,A[k].primalOffset);for(S=0;S<3;++S)this.lineTickEnable[k]&&(R[S]+=M*I[S]*Math.max(this.lineTickLength[S],0)/r[5*S]);if(this.tickEnable[k]){for(S=0;S<3;++S)R[S]+=M*I[S]*this.tickPad[S]/r[5*S];this._text.drawTicks(k,this.tickSize[k],this.tickAngle[k],R,this.tickColor[k])}if(this.labelEnable[k]){for(S=0;S<3;++S)R[S]+=M*I[S]*this.labelPad[S]/r[5*S];R[k]+=.5*(a[0][k]+a[1][k]),this._text.drawLabel(k,this.labelSize[k],this.labelAngle[k],R,this.labelColor[k])}}this._text.unbind()},f.dispose=function(){this._text.dispose(),this._lines.dispose(),this._background.dispose(),this._lines=null,this._text=null,this._background=null,this.gl=null}},{"./lib/background.js":158,"./lib/cube.js":159,"./lib/lines.js":160,"./lib/text.js":162,"./lib/ticks.js":163}],158:[function(t,e,r){"use strict";e.exports=function(t){for(var e=[],r=[],s=0,l=0;l<3;++l)for(var c=(l+1)%3,u=(l+2)%3,f=[0,0,0],h=[0,0,0],d=-1;d<=1;d+=2){r.push(s,s+2,s+1,s+1,s+2,s+3),f[l]=d,h[l]=d;for(var p=-1;p<=1;p+=2){f[c]=p;for(var m=-1;m<=1;m+=2)f[u]=m,e.push(f[0],f[1],f[2],h[0],h[1],h[2]),s+=1}var v=c;c=u,u=v}var g=n(t,new Float32Array(e)),y=n(t,new Uint16Array(r),t.ELEMENT_ARRAY_BUFFER),b=i(t,[{buffer:g,type:t.FLOAT,size:3,offset:0,stride:24},{buffer:g,type:t.FLOAT,size:3,offset:12,stride:24}],y),x=a(t);return x.attributes.position.location=0,x.attributes.normal.location=1,new o(t,g,b,x)};var n=t("gl-buffer"),i=t("gl-vao"),a=t("./shaders").bg;function o(t,e,r,n){this.gl=t,this.buffer=e,this.vao=r,this.shader=n}var s=o.prototype;s.draw=function(t,e,r,n,i,a){for(var o=!1,s=0;s<3;++s)o=o||i[s];if(o){var l=this.gl;l.enable(l.POLYGON_OFFSET_FILL),l.polygonOffset(1,2),this.shader.bind(),this.shader.uniforms={model:t,view:e,projection:r,bounds:n,enable:i,colors:a},this.vao.bind(),this.vao.draw(this.gl.TRIANGLES,36),this.vao.unbind(),l.disable(l.POLYGON_OFFSET_FILL)}},s.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()}},{"./shaders":161,"gl-buffer":165,"gl-vao":237}],159:[function(t,e,r){"use strict";e.exports=function(t,e,r,a){i(s,e,t),i(s,r,s);for(var d=0,y=0;y<2;++y){u[2]=a[y][2];for(var b=0;b<2;++b){u[1]=a[b][1];for(var x=0;x<2;++x)u[0]=a[x][0],h(l[d],u,s),d+=1}}for(var _=-1,y=0;y<8;++y){for(var w=l[y][3],M=0;M<3;++M)c[y][M]=l[y][M]/w;w<0&&(_<0?_=y:c[y][2]E&&(_|=1<E&&(_|=1<c[y][1]&&(I=y));for(var R=-1,y=0;y<3;++y){var N=I^1<c[F][0]&&(F=N)}}var j=m;j[0]=j[1]=j[2]=0,j[n.log2(R^I)]=I&R,j[n.log2(I^F)]=I&F;var B=7^F;B===_||B===D?(B=7^R,j[n.log2(F^B)]=B&F):j[n.log2(R^B)]=B&R;for(var U=v,V=_,k=0;k<3;++k)U[k]=V&1< 0.0) {\n vec3 nPosition = mix(bounds[0], bounds[1], 0.5 * (position + 1.0));\n gl_Position = projection * view * model * vec4(nPosition, 1.0);\n } else {\n gl_Position = vec4(0,0,0,0);\n }\n colorChannel = abs(normal);\n}"]),u=n(["precision mediump float;\n#define GLSLIFY 1\n\nuniform vec4 colors[3];\n\nvarying vec3 colorChannel;\n\nvoid main() {\n gl_FragColor = colorChannel.x * colors[0] + \n colorChannel.y * colors[1] +\n colorChannel.z * colors[2];\n}"]);r.bg=function(t){return i(t,c,u,null,[{name:"position",type:"vec3"},{name:"normal",type:"vec3"}])}},{"gl-shader":220,glslify:253}],162:[function(t,e,r){(function(r){"use strict";e.exports=function(t,e,r,a,s,l){var u=n(t),f=i(t,[{buffer:u,size:3}]),h=o(t);h.attributes.position.location=0;var d=new c(t,h,u,f);return d.update(e,r,a,s,l),d};var n=t("gl-buffer"),i=t("gl-vao"),a=t("vectorize-text"),o=t("./shaders").text,s=window||r.global||{},l=s.__TEXT_CACHE||{};s.__TEXT_CACHE={};function c(t,e,r,n){this.gl=t,this.shader=e,this.buffer=r,this.vao=n,this.tickOffset=this.tickCount=this.labelOffset=this.labelCount=null}var u=c.prototype,f=[0,0];u.bind=function(t,e,r,n){this.vao.bind(),this.shader.bind();var i=this.shader.uniforms;i.model=t,i.view=e,i.projection=r,i.pixelScale=n,f[0]=this.gl.drawingBufferWidth,f[1]=this.gl.drawingBufferHeight,this.shader.uniforms.resolution=f},u.unbind=function(){this.vao.unbind()},u.update=function(t,e,r,n,i){this.gl;var o=[];function s(t,e,r,n){var i=l[r];i||(i=l[r]={});var s=i[e];s||(s=i[e]=function(t,e){try{return a(t,e)}catch(t){return console.warn("error vectorizing text:",t),{cells:[],positions:[]}}}(e,{triangles:!0,font:r,textAlign:"center",textBaseline:"middle"}));for(var c=(n||12)/12,u=s.positions,f=s.cells,h=0,d=f.length;h=0;--m){var v=u[p[m]];o.push(c*v[0],-c*v[1],t)}}for(var c=[0,0,0],u=[0,0,0],f=[0,0,0],h=[0,0,0],d=0;d<3;++d){f[d]=o.length/3|0,s(.5*(t[0][d]+t[1][d]),e[d],r),h[d]=(o.length/3|0)-f[d],c[d]=o.length/3|0;for(var p=0;p=0&&(i=r.length-n-1);var a=Math.pow(10,i),o=Math.round(t*e*a),s=o+"";if(s.indexOf("e")>=0)return s;var l=o/a,c=o%a;o<0?(l=0|-Math.ceil(l),c=0|-c):(l=0|Math.floor(l),c|=0);var u=""+l;if(o<0&&(u="-"+u),i){for(var f=""+c;f.length=t[0][i];--o)a.push({x:o*e[i],text:n(e[i],o)});r.push(a)}return r},r.equal=function(t,e){for(var r=0;r<3;++r){if(t[r].length!==e[r].length)return!1;for(var n=0;nr)throw new Error("gl-buffer: If resizing buffer, must not specify offset");return t.bufferSubData(e,a,i),r}function u(t,e){for(var r=n.malloc(t.length,e),i=t.length,a=0;a=0;--n){if(e[n]!==r)return!1;r*=t[n]}return!0}(t.shape,t.stride))0===t.offset&&t.data.length===t.shape[0]?this.length=c(this.gl,this.type,this.length,this.usage,t.data,e):this.length=c(this.gl,this.type,this.length,this.usage,t.data.subarray(t.offset,t.shape[0]),e);else{var s=n.malloc(t.size,r),l=a(s,t.shape);i.assign(l,t),this.length=c(this.gl,this.type,this.length,this.usage,e<0?s:s.subarray(0,t.size),e),n.free(s)}}else if(Array.isArray(t)){var f;f=this.type===this.gl.ELEMENT_ARRAY_BUFFER?u(t,"uint16"):u(t,"float32"),this.length=c(this.gl,this.type,this.length,this.usage,e<0?f:f.subarray(0,t.length),e),n.free(f)}else if("object"==typeof t&&"number"==typeof t.length)this.length=c(this.gl,this.type,this.length,this.usage,t,e);else{if("number"!=typeof t&&void 0!==t)throw new Error("gl-buffer: Invalid data type");if(e>=0)throw new Error("gl-buffer: Cannot specify offset when resizing buffer");(t|=0)<=0&&(t=1),this.gl.bufferData(this.type,0|t,this.usage),this.length=t}},e.exports=function(t,e,r,n){if(r=r||t.ARRAY_BUFFER,n=n||t.DYNAMIC_DRAW,r!==t.ARRAY_BUFFER&&r!==t.ELEMENT_ARRAY_BUFFER)throw new Error("gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER");if(n!==t.DYNAMIC_DRAW&&n!==t.STATIC_DRAW&&n!==t.STREAM_DRAW)throw new Error("gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW");var i=new s(t,r,t.createBuffer(),0,n);return i.update(e),i}},{ndarray:439,"ndarray-ops":433,"typedarray-pool":534}],166:[function(t,e,r){e.exports={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34000:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"}},{}],167:[function(t,e,r){var n=t("./1.0/numbers");e.exports=function(t){return n[t]}},{"./1.0/numbers":166}],168:[function(t,e,r){"use strict";e.exports=function(t){var e=t.gl,r=n(e),o=i(e,[{buffer:r,type:e.FLOAT,size:3,offset:0,stride:40},{buffer:r,type:e.FLOAT,size:4,offset:12,stride:40},{buffer:r,type:e.FLOAT,size:3,offset:28,stride:40}]),l=a(e);l.attributes.position.location=0,l.attributes.color.location=1,l.attributes.offset.location=2;var c=new s(e,r,o,l);return c.update(t),c};var n=t("gl-buffer"),i=t("gl-vao"),a=t("./shaders/index"),o=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function s(t,e,r,n){this.gl=t,this.shader=n,this.buffer=e,this.vao=r,this.pixelRatio=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lineWidth=[1,1,1],this.capSize=[10,10,10],this.lineCount=[0,0,0],this.lineOffset=[0,0,0],this.opacity=1}var l=s.prototype;function c(t,e){for(var r=0;r<3;++r)t[0][r]=Math.min(t[0][r],e[r]),t[1][r]=Math.max(t[1][r],e[r])}l.isOpaque=function(){return this.opacity>=1},l.isTransparent=function(){return this.opacity<1},l.drawTransparent=l.draw=function(t){var e=this.gl,r=this.shader.uniforms;this.shader.bind();var n=r.view=t.view||o,i=r.projection=t.projection||o;r.model=t.model||o,r.clipBounds=this.clipBounds,r.opacity=this.opacity;var a=n[12],s=n[13],l=n[14],c=n[15],u=this.pixelRatio*(i[3]*a+i[7]*s+i[11]*l+i[15]*c)/e.drawingBufferHeight;this.vao.bind();for(var f=0;f<3;++f)e.lineWidth(this.lineWidth[f]),r.capSize=this.capSize[f]*u,this.lineCount[f]&&e.drawArrays(e.LINES,this.lineOffset[f],this.lineCount[f]);this.vao.unbind()};var u=function(){for(var t=new Array(3),e=0;e<3;++e){for(var r=[],n=1;n<=2;++n)for(var i=-1;i<=1;i+=2){var a=[0,0,0];a[(n+e)%3]=i,r.push(a)}t[e]=r}return t}();function f(t,e,r,n){for(var i=u[n],a=0;a0)(m=u.slice())[s]+=d[1][s],i.push(u[0],u[1],u[2],p[0],p[1],p[2],p[3],0,0,0,m[0],m[1],m[2],p[0],p[1],p[2],p[3],0,0,0),c(this.bounds,m),o+=2+f(i,m,p,s)}}this.lineCount[s]=o-this.lineOffset[s]}this.buffer.update(i)}},l.dispose=function(){this.shader.dispose(),this.buffer.dispose(),this.vao.dispose()}},{"./shaders/index":170,"gl-buffer":165,"gl-vao":237}],169:[function(t,e,r){e.exports=function(t){"string"==typeof t&&(t=[t]);for(var e=[].slice.call(arguments,1),r=[],n=0;nu||r<0||r>u)throw new Error("gl-fbo: Parameters are too large for FBO");var f=1;if("color"in(n=n||{})){if((f=Math.max(0|n.color,0))<0)throw new Error("gl-fbo: Must specify a nonnegative number of colors");if(f>1){if(!c)throw new Error("gl-fbo: Multiple draw buffer extension not supported");if(f>t.getParameter(c.MAX_COLOR_ATTACHMENTS_WEBGL))throw new Error("gl-fbo: Context does not support "+f+" draw buffers")}}var h=t.UNSIGNED_BYTE,d=t.getExtension("OES_texture_float");if(n.float&&f>0){if(!d)throw new Error("gl-fbo: Context does not support floating point textures");h=t.FLOAT}else n.preferFloat&&f>0&&d&&(h=t.FLOAT);var m=!0;"depth"in n&&(m=!!n.depth);var v=!1;"stencil"in n&&(v=!!n.stencil);return new p(t,e,r,h,f,m,v,c)};var i,a,o,s,l=null;function c(t){return[t.getParameter(t.FRAMEBUFFER_BINDING),t.getParameter(t.RENDERBUFFER_BINDING),t.getParameter(t.TEXTURE_BINDING_2D)]}function u(t,e){t.bindFramebuffer(t.FRAMEBUFFER,e[0]),t.bindRenderbuffer(t.RENDERBUFFER,e[1]),t.bindTexture(t.TEXTURE_2D,e[2])}function f(t){switch(t){case i:throw new Error("gl-fbo: Framebuffer unsupported");case a:throw new Error("gl-fbo: Framebuffer incomplete attachment");case o:throw new Error("gl-fbo: Framebuffer incomplete dimensions");case s:throw new Error("gl-fbo: Framebuffer incomplete missing attachment");default:throw new Error("gl-fbo: Framebuffer failed for unspecified reason")}}function h(t,e,r,i,a,o){if(!i)return null;var s=n(t,e,r,a,i);return s.magFilter=t.NEAREST,s.minFilter=t.NEAREST,s.mipSamples=1,s.bind(),t.framebufferTexture2D(t.FRAMEBUFFER,o,t.TEXTURE_2D,s.handle,0),s}function d(t,e,r,n,i){var a=t.createRenderbuffer();return t.bindRenderbuffer(t.RENDERBUFFER,a),t.renderbufferStorage(t.RENDERBUFFER,n,e,r),t.framebufferRenderbuffer(t.FRAMEBUFFER,i,t.RENDERBUFFER,a),a}function p(t,e,r,n,i,a,o,s){this.gl=t,this._shape=[0|e,0|r],this._destroyed=!1,this._ext=s,this.color=new Array(i);for(var p=0;p1&&s.drawBuffersWEBGL(l[o]);var y=r.getExtension("WEBGL_depth_texture");y?p?t.depth=h(r,i,a,y.UNSIGNED_INT_24_8_WEBGL,r.DEPTH_STENCIL,r.DEPTH_STENCIL_ATTACHMENT):m&&(t.depth=h(r,i,a,r.UNSIGNED_SHORT,r.DEPTH_COMPONENT,r.DEPTH_ATTACHMENT)):m&&p?t._depth_rb=d(r,i,a,r.DEPTH_STENCIL,r.DEPTH_STENCIL_ATTACHMENT):m?t._depth_rb=d(r,i,a,r.DEPTH_COMPONENT16,r.DEPTH_ATTACHMENT):p&&(t._depth_rb=d(r,i,a,r.STENCIL_INDEX,r.STENCIL_ATTACHMENT));var b=r.checkFramebufferStatus(r.FRAMEBUFFER);if(b!==r.FRAMEBUFFER_COMPLETE){for(t._destroyed=!0,r.bindFramebuffer(r.FRAMEBUFFER,null),r.deleteFramebuffer(t.handle),t.handle=null,t.depth&&(t.depth.dispose(),t.depth=null),t._depth_rb&&(r.deleteRenderbuffer(t._depth_rb),t._depth_rb=null),g=0;gi||r<0||r>i)throw new Error("gl-fbo: Can't resize FBO, invalid dimensions");t._shape[0]=e,t._shape[1]=r;for(var a=c(n),o=0;o>8*d&255;this.pickOffset=r,i.bind();var p=i.uniforms;p.viewTransform=t,p.pickOffset=e,p.shape=this.shape;var m=i.attributes;return this.positionBuffer.bind(),m.position.pointer(),this.weightBuffer.bind(),m.weight.pointer(s.UNSIGNED_BYTE,!1),this.idBuffer.bind(),m.pickId.pointer(s.UNSIGNED_BYTE,!1),s.drawArrays(s.TRIANGLES,0,o),r+this.shape[0]*this.shape[1]}}}(),f.pick=function(t,e,r){var n=this.pickOffset,i=this.shape[0]*this.shape[1];if(r=n+i)return null;var a=r-n,o=this.xData,s=this.yData;return{object:this,pointId:a,dataCoord:[o[a%this.shape[0]],s[a/this.shape[0]|0]]}},f.update=function(t){var e=(t=t||{}).shape||[0,0],r=t.x||i(e[0]),o=t.y||i(e[1]),s=t.z||new Float32Array(e[0]*e[1]);this.xData=r,this.yData=o;var l=t.colorLevels||[0],c=t.colorValues||[0,0,0,1],u=l.length,f=this.bounds,d=f[0]=r[0],p=f[1]=o[0],m=1/((f[2]=r[r.length-1])-d),v=1/((f[3]=o[o.length-1])-p),g=e[0],y=e[1];this.shape=[g,y];var b=(g-1)*(y-1)*(h.length>>>1);this.numVertices=b;for(var x=a.mallocUint8(4*b),_=a.mallocFloat32(2*b),w=a.mallocUint8(2*b),M=a.mallocUint32(b),k=0,A=0;A FLOAT_MAX) {\n return vec4(127.0, 128.0, 0.0, 0.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(255.0, 128.0, 0.0, 0.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n //Compute exponent and mantissa\n highp float e = floor(log2(av));\n highp float m = av * pow(2.0, -e) - 1.0;\n \n //Unpack mantissa\n c[1] = floor(128.0 * m);\n m -= c[1] / 128.0;\n c[2] = floor(32768.0 * m);\n m -= c[2] / 32768.0;\n c[3] = floor(8388608.0 * m);\n \n //Unpack exponent\n highp float ebias = e + 127.0;\n c[0] = floor(ebias / 2.0);\n ebias -= c[0] * 2.0;\n c[1] += floor(ebias) * 128.0; \n\n //Unpack sign bit\n c[0] += 128.0 * step(0.0, -v);\n\n //Scale back to range\n return c / 255.0;\n}\n\nuniform float pickId;\nuniform vec3 clipBounds[2];\n\nvarying vec3 worldPosition;\nvarying float pixelArcLength;\nvarying vec4 fragColor;\n\nvoid main() {\n if(any(lessThan(worldPosition, clipBounds[0])) || any(greaterThan(worldPosition, clipBounds[1]))) {\n discard;\n }\n gl_FragColor = vec4(pickId/255.0, encode_float_1540259130(pixelArcLength).xyz);\n}"]),l=[{name:"position",type:"vec3"},{name:"nextPosition",type:"vec3"},{name:"arcLength",type:"float"},{name:"lineWidth",type:"float"},{name:"color",type:"vec4"}];r.createShader=function(t){return i(t,a,o,null,l)},r.createPickShader=function(t){return i(t,a,s,null,l)}},{"gl-shader":220,glslify:253}],177:[function(t,e,r){"use strict";e.exports=function(t){var e=t.gl||t.scene&&t.scene.gl,r=u(e);r.attributes.position.location=0,r.attributes.nextPosition.location=1,r.attributes.arcLength.location=2,r.attributes.lineWidth.location=3,r.attributes.color.location=4;var o=f(e);o.attributes.position.location=0,o.attributes.nextPosition.location=1,o.attributes.arcLength.location=2,o.attributes.lineWidth.location=3,o.attributes.color.location=4;for(var s=n(e),c=i(e,[{buffer:s,size:3,offset:0,stride:48},{buffer:s,size:3,offset:12,stride:48},{buffer:s,size:1,offset:24,stride:48},{buffer:s,size:1,offset:28,stride:48},{buffer:s,size:4,offset:32,stride:48}]),h=l(new Array(1024),[256,1,4]),d=0;d<1024;++d)h.data[d]=255;var p=a(e,h);p.wrap=e.REPEAT;var m=new v(e,r,o,s,c,p);return m.update(t),m};var n=t("gl-buffer"),i=t("gl-vao"),a=t("gl-texture2d"),o=t("glsl-read-float"),s=t("binary-search-bounds"),l=t("ndarray"),c=t("./lib/shaders"),u=c.createShader,f=c.createPickShader,h=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function d(t,e){for(var r=0,n=0;n<3;++n){var i=t[n]-e[n];r+=i*i}return Math.sqrt(r)}function p(t){for(var e=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],r=0;r<3;++r)e[0][r]=Math.max(t[0][r],e[0][r]),e[1][r]=Math.min(t[1][r],e[1][r]);return e}function m(t,e,r,n){this.arcLength=t,this.position=e,this.index=r,this.dataCoordinate=n}function v(t,e,r,n,i,a){this.gl=t,this.shader=e,this.pickShader=r,this.buffer=n,this.vao=i,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.points=[],this.arcLength=[],this.vertexCount=0,this.bounds=[[0,0,0],[0,0,0]],this.pickId=0,this.lineWidth=1,this.texture=a,this.dashScale=1,this.opacity=1,this.dirty=!0,this.pixelRatio=1}var g=v.prototype;g.isTransparent=function(){return this.opacity<1},g.isOpaque=function(){return this.opacity>=1},g.pickSlots=1,g.setPickBase=function(t){this.pickId=t},g.drawTransparent=g.draw=function(t){var e=this.gl,r=this.shader,n=this.vao;r.bind(),r.uniforms={model:t.model||h,view:t.view||h,projection:t.projection||h,clipBounds:p(this.clipBounds),dashTexture:this.texture.bind(),dashScale:this.dashScale/this.arcLength[this.arcLength.length-1],opacity:this.opacity,screenShape:[e.drawingBufferWidth,e.drawingBufferHeight],pixelRatio:this.pixelRatio},n.bind(),n.draw(e.TRIANGLE_STRIP,this.vertexCount),n.unbind()},g.drawPick=function(t){var e=this.gl,r=this.pickShader,n=this.vao;r.bind(),r.uniforms={model:t.model||h,view:t.view||h,projection:t.projection||h,pickId:this.pickId,clipBounds:p(this.clipBounds),screenShape:[e.drawingBufferWidth,e.drawingBufferHeight],pixelRatio:this.pixelRatio},n.bind(),n.draw(e.TRIANGLE_STRIP,this.vertexCount),n.unbind()},g.update=function(t){var e,r;this.dirty=!0;var n=!!t.connectGaps;"dashScale"in t&&(this.dashScale=t.dashScale),"opacity"in t&&(this.opacity=+t.opacity);var i=t.position||t.positions;if(i){var a=t.color||t.colors||[0,0,0,1],o=t.lineWidth||1,c=[],u=[],f=[],h=0,p=0,m=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],v=!1;t:for(e=1;e0){for(var w=0;w<24;++w)c.push(c[c.length-12]);p+=2,v=!0}continue t}m[0][r]=Math.min(m[0][r],x[r],_[r]),m[1][r]=Math.max(m[1][r],x[r],_[r])}Array.isArray(a[0])?(g=a[e-1],y=a[e]):g=y=a,3===g.length&&(g=[g[0],g[1],g[2],1]),3===y.length&&(y=[y[0],y[1],y[2],1]),b=Array.isArray(o)?o[e-1]:o;var M=h;if(h+=d(x,_),v){for(r=0;r<2;++r)c.push(x[0],x[1],x[2],_[0],_[1],_[2],M,b,g[0],g[1],g[2],g[3]);p+=2,v=!1}c.push(x[0],x[1],x[2],_[0],_[1],_[2],M,b,g[0],g[1],g[2],g[3],x[0],x[1],x[2],_[0],_[1],_[2],M,-b,g[0],g[1],g[2],g[3],_[0],_[1],_[2],x[0],x[1],x[2],h,-b,y[0],y[1],y[2],y[3],_[0],_[1],_[2],x[0],x[1],x[2],h,b,y[0],y[1],y[2],y[3]),p+=4}if(this.buffer.update(c),u.push(h),f.push(i[i.length-1].slice()),this.bounds=m,this.vertexCount=p,this.points=f,this.arcLength=u,"dashes"in t){var k=t.dashes.slice();for(k.unshift(0),e=1;e1?0:i<-1?Math.PI:Math.acos(i)},e.str=function(t){return"vec3("+t[0]+", "+t[1]+", "+t[2]+")"},e.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]},e.equals=function(t,e){var r=t[0],i=t[1],a=t[2],o=e[0],s=e[1],l=e[2];return Math.abs(r-o)<=n.EPSILON*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(i-s)<=n.EPSILON*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(a-l)<=n.EPSILON*Math.max(1,Math.abs(a),Math.abs(l))};var n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}(r(0));function i(){var t=new n.ARRAY_TYPE(3);return t[0]=0,t[1]=0,t[2]=0,t}function a(t){var e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)}function o(t,e,r){var i=new n.ARRAY_TYPE(3);return i[0]=t,i[1]=e,i[2]=r,i}function s(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function l(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function c(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}function u(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(r*r+n*n+i*i)}function f(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return r*r+n*n+i*i}function h(t){var e=t[0],r=t[1],n=t[2];return e*e+r*r+n*n}function d(t,e){var r=e[0],n=e[1],i=e[2],a=r*r+n*n+i*i;return a>0&&(a=1/Math.sqrt(a),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a),t}function p(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}var m;e.sub=s,e.mul=l,e.div=c,e.dist=u,e.sqrDist=f,e.len=a,e.sqrLen=h,e.forEach=(m=i(),function(t,e,r,n,i,a){var o=void 0,s=void 0;for(e||(e=3),r||(r=0),s=n?Math.min(n*e+r,t.length):t.length,o=r;o0&&(o=1/Math.sqrt(o),t[0]=r*o,t[1]=n*o,t[2]=i*o,t[3]=a*o),t}var p;e.sub=a,e.mul=o,e.div=s,e.dist=c,e.sqrDist=u,e.len=f,e.sqrLen=h,e.forEach=(p=i(),function(t,e,r,n,i,a){var o=void 0,s=void 0;for(e||(e=4),r||(r=0),s=n?Math.min(n*e+r,t.length):t.length,o=r;o0?(n=2*Math.sqrt(r+1),t[3]=.25*n,t[0]=(e[6]-e[9])/n,t[1]=(e[8]-e[2])/n,t[2]=(e[1]-e[4])/n):e[0]>e[5]&e[0]>e[10]?(n=2*Math.sqrt(1+e[0]-e[5]-e[10]),t[3]=(e[6]-e[9])/n,t[0]=.25*n,t[1]=(e[1]+e[4])/n,t[2]=(e[8]+e[2])/n):e[5]>e[10]?(n=2*Math.sqrt(1+e[5]-e[0]-e[10]),t[3]=(e[8]-e[2])/n,t[0]=(e[1]+e[4])/n,t[1]=.25*n,t[2]=(e[6]+e[9])/n):(n=2*Math.sqrt(1+e[10]-e[0]-e[5]),t[3]=(e[1]-e[4])/n,t[0]=(e[8]+e[2])/n,t[1]=(e[6]+e[9])/n,t[2]=.25*n);return t},e.fromRotationTranslationScale=function(t,e,r,n){var i=e[0],a=e[1],o=e[2],s=e[3],l=i+i,c=a+a,u=o+o,f=i*l,h=i*c,d=i*u,p=a*c,m=a*u,v=o*u,g=s*l,y=s*c,b=s*u,x=n[0],_=n[1],w=n[2];return t[0]=(1-(p+v))*x,t[1]=(h+b)*x,t[2]=(d-y)*x,t[3]=0,t[4]=(h-b)*_,t[5]=(1-(f+v))*_,t[6]=(m+g)*_,t[7]=0,t[8]=(d+y)*w,t[9]=(m-g)*w,t[10]=(1-(f+p))*w,t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t},e.fromRotationTranslationScaleOrigin=function(t,e,r,n,i){var a=e[0],o=e[1],s=e[2],l=e[3],c=a+a,u=o+o,f=s+s,h=a*c,d=a*u,p=a*f,m=o*u,v=o*f,g=s*f,y=l*c,b=l*u,x=l*f,_=n[0],w=n[1],M=n[2],k=i[0],A=i[1],T=i[2];return t[0]=(1-(m+g))*_,t[1]=(d+x)*_,t[2]=(p-b)*_,t[3]=0,t[4]=(d-x)*w,t[5]=(1-(h+g))*w,t[6]=(v+y)*w,t[7]=0,t[8]=(p+b)*M,t[9]=(v-y)*M,t[10]=(1-(h+m))*M,t[11]=0,t[12]=r[0]+k-(t[0]*k+t[4]*A+t[8]*T),t[13]=r[1]+A-(t[1]*k+t[5]*A+t[9]*T),t[14]=r[2]+T-(t[2]*k+t[6]*A+t[10]*T),t[15]=1,t},e.fromQuat=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r+r,s=n+n,l=i+i,c=r*o,u=n*o,f=n*s,h=i*o,d=i*s,p=i*l,m=a*o,v=a*s,g=a*l;return t[0]=1-f-p,t[1]=u+g,t[2]=h-v,t[3]=0,t[4]=u-g,t[5]=1-c-p,t[6]=d+m,t[7]=0,t[8]=h+v,t[9]=d-m,t[10]=1-c-f,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.frustum=function(t,e,r,n,i,a,o){var s=1/(r-e),l=1/(i-n),c=1/(a-o);return t[0]=2*a*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*a*l,t[6]=0,t[7]=0,t[8]=(r+e)*s,t[9]=(i+n)*l,t[10]=(o+a)*c,t[11]=-1,t[12]=0,t[13]=0,t[14]=o*a*2*c,t[15]=0,t},e.perspective=function(t,e,r,n,i){var a=1/Math.tan(e/2),o=1/(n-i);return t[0]=a/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(i+n)*o,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*i*n*o,t[15]=0,t},e.perspectiveFromFieldOfView=function(t,e,r,n){var i=Math.tan(e.upDegrees*Math.PI/180),a=Math.tan(e.downDegrees*Math.PI/180),o=Math.tan(e.leftDegrees*Math.PI/180),s=Math.tan(e.rightDegrees*Math.PI/180),l=2/(o+s),c=2/(i+a);return t[0]=l,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=c,t[6]=0,t[7]=0,t[8]=-(o-s)*l*.5,t[9]=(i-a)*c*.5,t[10]=n/(r-n),t[11]=-1,t[12]=0,t[13]=0,t[14]=n*r/(r-n),t[15]=0,t},e.ortho=function(t,e,r,n,i,a,o){var s=1/(e-r),l=1/(n-i),c=1/(a-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*c,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*l,t[14]=(o+a)*c,t[15]=1,t},e.lookAt=function(t,e,r,i){var a=void 0,o=void 0,s=void 0,l=void 0,c=void 0,u=void 0,f=void 0,h=void 0,d=void 0,p=void 0,m=e[0],v=e[1],g=e[2],y=i[0],b=i[1],x=i[2],_=r[0],w=r[1],M=r[2];if(Math.abs(m-_)0&&(d=1/Math.sqrt(d),u*=d,f*=d,h*=d);var p=l*h-c*f,m=c*u-s*h,v=s*f-l*u;return t[0]=p,t[1]=m,t[2]=v,t[3]=0,t[4]=f*v-h*m,t[5]=h*p-u*v,t[6]=u*m-f*p,t[7]=0,t[8]=u,t[9]=f,t[10]=h,t[11]=0,t[12]=i,t[13]=a,t[14]=o,t[15]=1,t},e.str=function(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"},e.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2)+Math.pow(t[9],2)+Math.pow(t[10],2)+Math.pow(t[11],2)+Math.pow(t[12],2)+Math.pow(t[13],2)+Math.pow(t[14],2)+Math.pow(t[15],2))},e.add=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t[4]=e[4]+r[4],t[5]=e[5]+r[5],t[6]=e[6]+r[6],t[7]=e[7]+r[7],t[8]=e[8]+r[8],t[9]=e[9]+r[9],t[10]=e[10]+r[10],t[11]=e[11]+r[11],t[12]=e[12]+r[12],t[13]=e[13]+r[13],t[14]=e[14]+r[14],t[15]=e[15]+r[15],t},e.subtract=a,e.multiplyScalar=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7]*r,t[8]=e[8]*r,t[9]=e[9]*r,t[10]=e[10]*r,t[11]=e[11]*r,t[12]=e[12]*r,t[13]=e[13]*r,t[14]=e[14]*r,t[15]=e[15]*r,t},e.multiplyScalarAndAdd=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t[4]=e[4]+r[4]*n,t[5]=e[5]+r[5]*n,t[6]=e[6]+r[6]*n,t[7]=e[7]+r[7]*n,t[8]=e[8]+r[8]*n,t[9]=e[9]+r[9]*n,t[10]=e[10]+r[10]*n,t[11]=e[11]+r[11]*n,t[12]=e[12]+r[12]*n,t[13]=e[13]+r[13]*n,t[14]=e[14]+r[14]*n,t[15]=e[15]+r[15]*n,t},e.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]},e.equals=function(t,e){var r=t[0],i=t[1],a=t[2],o=t[3],s=t[4],l=t[5],c=t[6],u=t[7],f=t[8],h=t[9],d=t[10],p=t[11],m=t[12],v=t[13],g=t[14],y=t[15],b=e[0],x=e[1],_=e[2],w=e[3],M=e[4],k=e[5],A=e[6],T=e[7],E=e[8],S=e[9],L=e[10],C=e[11],P=e[12],z=e[13],O=e[14],D=e[15];return Math.abs(r-b)<=n.EPSILON*Math.max(1,Math.abs(r),Math.abs(b))&&Math.abs(i-x)<=n.EPSILON*Math.max(1,Math.abs(i),Math.abs(x))&&Math.abs(a-_)<=n.EPSILON*Math.max(1,Math.abs(a),Math.abs(_))&&Math.abs(o-w)<=n.EPSILON*Math.max(1,Math.abs(o),Math.abs(w))&&Math.abs(s-M)<=n.EPSILON*Math.max(1,Math.abs(s),Math.abs(M))&&Math.abs(l-k)<=n.EPSILON*Math.max(1,Math.abs(l),Math.abs(k))&&Math.abs(c-A)<=n.EPSILON*Math.max(1,Math.abs(c),Math.abs(A))&&Math.abs(u-T)<=n.EPSILON*Math.max(1,Math.abs(u),Math.abs(T))&&Math.abs(f-E)<=n.EPSILON*Math.max(1,Math.abs(f),Math.abs(E))&&Math.abs(h-S)<=n.EPSILON*Math.max(1,Math.abs(h),Math.abs(S))&&Math.abs(d-L)<=n.EPSILON*Math.max(1,Math.abs(d),Math.abs(L))&&Math.abs(p-C)<=n.EPSILON*Math.max(1,Math.abs(p),Math.abs(C))&&Math.abs(m-P)<=n.EPSILON*Math.max(1,Math.abs(m),Math.abs(P))&&Math.abs(v-z)<=n.EPSILON*Math.max(1,Math.abs(v),Math.abs(z))&&Math.abs(g-O)<=n.EPSILON*Math.max(1,Math.abs(g),Math.abs(O))&&Math.abs(y-D)<=n.EPSILON*Math.max(1,Math.abs(y),Math.abs(D))};var n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}(r(0));function i(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],f=e[8],h=e[9],d=e[10],p=e[11],m=e[12],v=e[13],g=e[14],y=e[15],b=r[0],x=r[1],_=r[2],w=r[3];return t[0]=b*n+x*s+_*f+w*m,t[1]=b*i+x*l+_*h+w*v,t[2]=b*a+x*c+_*d+w*g,t[3]=b*o+x*u+_*p+w*y,b=r[4],x=r[5],_=r[6],w=r[7],t[4]=b*n+x*s+_*f+w*m,t[5]=b*i+x*l+_*h+w*v,t[6]=b*a+x*c+_*d+w*g,t[7]=b*o+x*u+_*p+w*y,b=r[8],x=r[9],_=r[10],w=r[11],t[8]=b*n+x*s+_*f+w*m,t[9]=b*i+x*l+_*h+w*v,t[10]=b*a+x*c+_*d+w*g,t[11]=b*o+x*u+_*p+w*y,b=r[12],x=r[13],_=r[14],w=r[15],t[12]=b*n+x*s+_*f+w*m,t[13]=b*i+x*l+_*h+w*v,t[14]=b*a+x*c+_*d+w*g,t[15]=b*o+x*u+_*p+w*y,t}function a(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t[4]=e[4]-r[4],t[5]=e[5]-r[5],t[6]=e[6]-r[6],t[7]=e[7]-r[7],t[8]=e[8]-r[8],t[9]=e[9]-r[9],t[10]=e[10]-r[10],t[11]=e[11]-r[11],t[12]=e[12]-r[12],t[13]=e[13]-r[13],t[14]=e[14]-r[14],t[15]=e[15]-r[15],t}e.mul=i,e.sub=a},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.setAxes=e.sqlerp=e.rotationTo=e.equals=e.exactEquals=e.normalize=e.sqrLen=e.squaredLength=e.len=e.length=e.lerp=e.dot=e.scale=e.mul=e.add=e.set=e.copy=e.fromValues=e.clone=void 0,e.create=l,e.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},e.setAxisAngle=c,e.getAxisAngle=function(t,e){var r=2*Math.acos(e[3]),n=Math.sin(r/2);0!=n?(t[0]=e[0]/n,t[1]=e[1]/n,t[2]=e[2]/n):(t[0]=1,t[1]=0,t[2]=0);return r},e.multiply=u,e.rotateX=function(t,e,r){r*=.5;var n=e[0],i=e[1],a=e[2],o=e[3],s=Math.sin(r),l=Math.cos(r);return t[0]=n*l+o*s,t[1]=i*l+a*s,t[2]=a*l-i*s,t[3]=o*l-n*s,t},e.rotateY=function(t,e,r){r*=.5;var n=e[0],i=e[1],a=e[2],o=e[3],s=Math.sin(r),l=Math.cos(r);return t[0]=n*l-a*s,t[1]=i*l+o*s,t[2]=a*l+n*s,t[3]=o*l-i*s,t},e.rotateZ=function(t,e,r){r*=.5;var n=e[0],i=e[1],a=e[2],o=e[3],s=Math.sin(r),l=Math.cos(r);return t[0]=n*l+i*s,t[1]=i*l-n*s,t[2]=a*l+o*s,t[3]=o*l-a*s,t},e.calculateW=function(t,e){var r=e[0],n=e[1],i=e[2];return t[0]=r,t[1]=n,t[2]=i,t[3]=Math.sqrt(Math.abs(1-r*r-n*n-i*i)),t},e.slerp=f,e.invert=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r*r+n*n+i*i+a*a,s=o?1/o:0;return t[0]=-r*s,t[1]=-n*s,t[2]=-i*s,t[3]=a*s,t},e.conjugate=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t},e.fromMat3=h,e.fromEuler=function(t,e,r,n){var i=.5*Math.PI/180;e*=i,r*=i,n*=i;var a=Math.sin(e),o=Math.cos(e),s=Math.sin(r),l=Math.cos(r),c=Math.sin(n),u=Math.cos(n);return t[0]=a*l*u-o*s*c,t[1]=o*s*u+a*l*c,t[2]=o*l*c-a*s*u,t[3]=o*l*u+a*s*c,t},e.str=function(t){return"quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"};var n=s(r(0)),i=s(r(1)),a=s(r(2)),o=s(r(3));function s(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function l(){var t=new n.ARRAY_TYPE(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function c(t,e,r){r*=.5;var n=Math.sin(r);return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=Math.cos(r),t}function u(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=r[0],l=r[1],c=r[2],u=r[3];return t[0]=n*u+o*s+i*c-a*l,t[1]=i*u+o*l+a*s-n*c,t[2]=a*u+o*c+n*l-i*s,t[3]=o*u-n*s-i*l-a*c,t}function f(t,e,r,n){var i=e[0],a=e[1],o=e[2],s=e[3],l=r[0],c=r[1],u=r[2],f=r[3],h=void 0,d=void 0,p=void 0,m=void 0,v=void 0;return(d=i*l+a*c+o*u+s*f)<0&&(d=-d,l=-l,c=-c,u=-u,f=-f),1-d>1e-6?(h=Math.acos(d),p=Math.sin(h),m=Math.sin((1-n)*h)/p,v=Math.sin(n*h)/p):(m=1-n,v=n),t[0]=m*i+v*l,t[1]=m*a+v*c,t[2]=m*o+v*u,t[3]=m*s+v*f,t}function h(t,e){var r=e[0]+e[4]+e[8],n=void 0;if(r>0)n=Math.sqrt(r+1),t[3]=.5*n,n=.5/n,t[0]=(e[5]-e[7])*n,t[1]=(e[6]-e[2])*n,t[2]=(e[1]-e[3])*n;else{var i=0;e[4]>e[0]&&(i=1),e[8]>e[3*i+i]&&(i=2);var a=(i+1)%3,o=(i+2)%3;n=Math.sqrt(e[3*i+i]-e[3*a+a]-e[3*o+o]+1),t[i]=.5*n,n=.5/n,t[3]=(e[3*a+o]-e[3*o+a])*n,t[a]=(e[3*a+i]+e[3*i+a])*n,t[o]=(e[3*o+i]+e[3*i+o])*n}return t}e.clone=o.clone,e.fromValues=o.fromValues,e.copy=o.copy,e.set=o.set,e.add=o.add,e.mul=u,e.scale=o.scale,e.dot=o.dot,e.lerp=o.lerp;var d,p,m,v,g,y,b=e.length=o.length,x=(e.len=b,e.squaredLength=o.squaredLength),_=(e.sqrLen=x,e.normalize=o.normalize);e.exactEquals=o.exactEquals,e.equals=o.equals,e.rotationTo=(d=a.create(),p=a.fromValues(1,0,0),m=a.fromValues(0,1,0),function(t,e,r){var n=a.dot(e,r);return n<-.999999?(a.cross(d,p,e),a.len(d)<1e-6&&a.cross(d,m,e),a.normalize(d,d),c(t,d,Math.PI),t):n>.999999?(t[0]=0,t[1]=0,t[2]=0,t[3]=1,t):(a.cross(d,e,r),t[0]=d[0],t[1]=d[1],t[2]=d[2],t[3]=1+n,_(t,t))}),e.sqlerp=(v=l(),g=l(),function(t,e,r,n,i,a){return f(v,e,i,a),f(g,r,n,a),f(t,v,g,2*a*(1-a)),t}),e.setAxes=(y=i.create(),function(t,e,r,n){return y[0]=r[0],y[3]=r[1],y[6]=r[2],y[1]=n[0],y[4]=n[1],y[7]=n[2],y[2]=-e[0],y[5]=-e[1],y[8]=-e[2],_(t,h(t,y))})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.forEach=e.sqrLen=e.sqrDist=e.dist=e.div=e.mul=e.sub=e.len=void 0,e.create=i,e.clone=function(t){var e=new n.ARRAY_TYPE(2);return e[0]=t[0],e[1]=t[1],e},e.fromValues=function(t,e){var r=new n.ARRAY_TYPE(2);return r[0]=t,r[1]=e,r},e.copy=function(t,e){return t[0]=e[0],t[1]=e[1],t},e.set=function(t,e,r){return t[0]=e,t[1]=r,t},e.add=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t},e.subtract=a,e.multiply=o,e.divide=s,e.ceil=function(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t},e.floor=function(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t},e.min=function(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t},e.max=function(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t},e.round=function(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t},e.scale=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t},e.scaleAndAdd=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t},e.distance=l,e.squaredDistance=c,e.length=u,e.squaredLength=f,e.negate=function(t,e){return t[0]=-e[0],t[1]=-e[1],t},e.inverse=function(t,e){return t[0]=1/e[0],t[1]=1/e[1],t},e.normalize=function(t,e){var r=e[0],n=e[1],i=r*r+n*n;i>0&&(i=1/Math.sqrt(i),t[0]=e[0]*i,t[1]=e[1]*i);return t},e.dot=function(t,e){return t[0]*e[0]+t[1]*e[1]},e.cross=function(t,e,r){var n=e[0]*r[1]-e[1]*r[0];return t[0]=t[1]=0,t[2]=n,t},e.lerp=function(t,e,r,n){var i=e[0],a=e[1];return t[0]=i+n*(r[0]-i),t[1]=a+n*(r[1]-a),t},e.random=function(t,e){e=e||1;var r=2*n.RANDOM()*Math.PI;return t[0]=Math.cos(r)*e,t[1]=Math.sin(r)*e,t},e.transformMat2=function(t,e,r){var n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i,t[1]=r[1]*n+r[3]*i,t},e.transformMat2d=function(t,e,r){var n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i+r[4],t[1]=r[1]*n+r[3]*i+r[5],t},e.transformMat3=function(t,e,r){var n=e[0],i=e[1];return t[0]=r[0]*n+r[3]*i+r[6],t[1]=r[1]*n+r[4]*i+r[7],t},e.transformMat4=function(t,e,r){var n=e[0],i=e[1];return t[0]=r[0]*n+r[4]*i+r[12],t[1]=r[1]*n+r[5]*i+r[13],t},e.str=function(t){return"vec2("+t[0]+", "+t[1]+")"},e.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]},e.equals=function(t,e){var r=t[0],i=t[1],a=e[0],o=e[1];return Math.abs(r-a)<=n.EPSILON*Math.max(1,Math.abs(r),Math.abs(a))&&Math.abs(i-o)<=n.EPSILON*Math.max(1,Math.abs(i),Math.abs(o))};var n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}(r(0));function i(){var t=new n.ARRAY_TYPE(2);return t[0]=0,t[1]=0,t}function a(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t}function o(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t}function s(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t}function l(t,e){var r=e[0]-t[0],n=e[1]-t[1];return Math.sqrt(r*r+n*n)}function c(t,e){var r=e[0]-t[0],n=e[1]-t[1];return r*r+n*n}function u(t){var e=t[0],r=t[1];return Math.sqrt(e*e+r*r)}function f(t){var e=t[0],r=t[1];return e*e+r*r}var h;e.len=u,e.sub=a,e.mul=o,e.div=s,e.dist=l,e.sqrDist=c,e.sqrLen=f,e.forEach=(h=i(),function(t,e,r,n,i,a){var o=void 0,s=void 0;for(e||(e=2),r||(r=0),s=n?Math.min(n*e+r,t.length):t.length,o=r;o1.0001)return null;v+=m[u]}if(Math.abs(v-1)>.001)return null;return[f,function(t,e){for(var r=[0,0,0],n=0;n 0.25) {\n discard;\n }\n gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;\n}"]),u=n(["precision mediump float;\n#define GLSLIFY 1\n\nattribute vec3 position;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n gl_Position = projection * view * model * vec4(position, 1.0);\n f_id = id;\n f_position = position;\n}"]),f=n(["precision mediump float;\n#define GLSLIFY 1\n\nuniform vec3 clipBounds[2];\nuniform float pickId;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n if(any(lessThan(f_position, clipBounds[0])) || \n any(greaterThan(f_position, clipBounds[1]))) {\n discard;\n }\n gl_FragColor = vec4(pickId, f_id.xyz);\n}"]),h=n(["precision mediump float;\n#define GLSLIFY 1\n\nattribute vec3 position;\nattribute float pointSize;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\nuniform vec3 clipBounds[2];\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n if(any(lessThan(position, clipBounds[0])) || \n any(greaterThan(position, clipBounds[1]))) {\n gl_Position = vec4(0,0,0,0);\n } else {\n gl_Position = projection * view * model * vec4(position, 1.0);\n gl_PointSize = pointSize;\n }\n f_id = id;\n f_position = position;\n}"]),d=n(["precision mediump float;\n#define GLSLIFY 1\n\nattribute vec3 position;\n\nuniform mat4 model, view, projection;\n\nvoid main() {\n gl_Position = projection * view * model * vec4(position, 1.0);\n}"]),p=n(["precision mediump float;\n#define GLSLIFY 1\n\nuniform vec3 contourColor;\n\nvoid main() {\n gl_FragColor = vec4(contourColor,1);\n}\n"]);r.meshShader={vertex:i,fragment:a,attributes:[{name:"position",type:"vec3"},{name:"normal",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},r.wireShader={vertex:o,fragment:s,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},r.pointShader={vertex:l,fragment:c,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"pointSize",type:"float"}]},r.pickShader={vertex:u,fragment:f,attributes:[{name:"position",type:"vec3"},{name:"id",type:"vec4"}]},r.pointPickShader={vertex:h,fragment:f,attributes:[{name:"position",type:"vec3"},{name:"pointSize",type:"float"},{name:"id",type:"vec4"}]},r.contourShader={vertex:d,fragment:p,attributes:[{name:"position",type:"vec3"}]}},{glslify:253}],201:[function(t,e,r){"use strict";var n=t("gl-shader"),i=t("gl-buffer"),a=t("gl-vao"),o=t("gl-texture2d"),s=t("normals"),l=t("gl-mat4/multiply"),c=t("gl-mat4/invert"),u=t("ndarray"),f=t("colormap"),h=t("simplicial-complex-contour"),d=t("typedarray-pool"),p=t("./lib/shaders"),m=t("./lib/closest-point"),v=p.meshShader,g=p.wireShader,y=p.pointShader,b=p.pickShader,x=p.pointPickShader,_=p.contourShader,w=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function M(t,e,r,n,i,a,o,s,l,c,u,f,h,d,p,m,v,g,y,b,x,_,M,k,A,T,E){this.gl=t,this.cells=[],this.positions=[],this.intensity=[],this.texture=e,this.dirty=!0,this.triShader=r,this.lineShader=n,this.pointShader=i,this.pickShader=a,this.pointPickShader=o,this.contourShader=s,this.trianglePositions=l,this.triangleColors=u,this.triangleNormals=h,this.triangleUVs=f,this.triangleIds=c,this.triangleVAO=d,this.triangleCount=0,this.lineWidth=1,this.edgePositions=p,this.edgeColors=v,this.edgeUVs=g,this.edgeIds=m,this.edgeVAO=y,this.edgeCount=0,this.pointPositions=b,this.pointColors=_,this.pointUVs=M,this.pointSizes=k,this.pointIds=x,this.pointVAO=A,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=T,this.contourVAO=E,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!0,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this._model=w,this._view=w,this._projection=w,this._resolution=[1,1]}var k=M.prototype;function A(t){var e=n(t,y.vertex,y.fragment);return e.attributes.position.location=0,e.attributes.color.location=2,e.attributes.uv.location=3,e.attributes.pointSize.location=4,e}function T(t){var e=n(t,b.vertex,b.fragment);return e.attributes.position.location=0,e.attributes.id.location=1,e}function E(t){var e=n(t,x.vertex,x.fragment);return e.attributes.position.location=0,e.attributes.id.location=1,e.attributes.pointSize.location=4,e}function S(t){var e=n(t,_.vertex,_.fragment);return e.attributes.position.location=0,e}k.isOpaque=function(){return this.opacity>=1},k.isTransparent=function(){return this.opacity<1},k.pickSlots=1,k.setPickBase=function(t){this.pickId=t},k.highlight=function(t){if(t&&this.contourEnable){for(var e=h(this.cells,this.intensity,t.intensity),r=e.cells,n=e.vertexIds,i=e.vertexWeights,a=r.length,o=d.mallocFloat32(6*a),s=0,l=0;l0&&((f=this.triShader).bind(),f.uniforms=s,this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind());this.edgeCount>0&&this.lineWidth>0&&((f=this.lineShader).bind(),f.uniforms=s,this.edgeVAO.bind(),e.lineWidth(this.lineWidth),e.drawArrays(e.LINES,0,2*this.edgeCount),this.edgeVAO.unbind());this.pointCount>0&&((f=this.pointShader).bind(),f.uniforms=s,this.pointVAO.bind(),e.drawArrays(e.POINTS,0,this.pointCount),this.pointVAO.unbind());this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0&&((f=this.contourShader).bind(),f.uniforms=s,this.contourVAO.bind(),e.drawArrays(e.LINES,0,this.contourCount),this.contourVAO.unbind())},k.drawPick=function(t){t=t||{};for(var e=this.gl,r=t.model||w,n=t.view||w,i=t.projection||w,a=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],o=0;o<3;++o)a[0][o]=Math.max(a[0][o],this.clipBounds[0][o]),a[1][o]=Math.min(a[1][o],this.clipBounds[1][o]);this._model=[].slice.call(r),this._view=[].slice.call(n),this._projection=[].slice.call(i),this._resolution=[e.drawingBufferWidth,e.drawingBufferHeight];var s,l={model:r,view:n,projection:i,clipBounds:a,pickId:this.pickId/255};((s=this.pickShader).bind(),s.uniforms=l,this.triangleCount>0&&(this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),e.lineWidth(this.lineWidth),e.drawArrays(e.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()),this.pointCount>0)&&((s=this.pointPickShader).bind(),s.uniforms=l,this.pointVAO.bind(),e.drawArrays(e.POINTS,0,this.pointCount),this.pointVAO.unbind())},k.pick=function(t){if(!t)return null;if(t.id!==this.pickId)return null;for(var e=t.value[0]+256*t.value[1]+65536*t.value[2],r=this.cells[e],n=this.positions,i=new Array(r.length),a=0;ai[k]&&(r.uniforms.dataAxis=c,r.uniforms.screenOffset=u,r.uniforms.color=v[t],r.uniforms.angle=g[t],a.drawArrays(a.TRIANGLES,i[k],i[A]-i[k]))),y[t]&&M&&(u[1^t]-=T*d*b[t],r.uniforms.dataAxis=f,r.uniforms.screenOffset=u,r.uniforms.color=x[t],r.uniforms.angle=_[t],a.drawArrays(a.TRIANGLES,w,M)),u[1^t]=T*s[2+(1^t)]-1,p[t+2]&&(u[1^t]+=T*d*m[t+2],ki[k]&&(r.uniforms.dataAxis=c,r.uniforms.screenOffset=u,r.uniforms.color=v[t+2],r.uniforms.angle=g[t+2],a.drawArrays(a.TRIANGLES,i[k],i[A]-i[k]))),y[t+2]&&M&&(u[1^t]+=T*d*b[t+2],r.uniforms.dataAxis=f,r.uniforms.screenOffset=u,r.uniforms.color=x[t+2],r.uniforms.angle=_[t+2],a.drawArrays(a.TRIANGLES,w,M))}),m.drawTitle=function(){var t=[0,0],e=[0,0];return function(){var r=this.plot,n=this.shader,i=r.gl,a=r.screenBox,o=r.titleCenter,s=r.titleAngle,l=r.titleColor,c=r.pixelRatio;if(this.titleCount){for(var u=0;u<2;++u)e[u]=2*(o[u]*c-a[u])/(a[2+u]-a[u])-1;n.bind(),n.uniforms.dataAxis=t,n.uniforms.screenOffset=e,n.uniforms.angle=s,n.uniforms.color=l,i.drawArrays(i.TRIANGLES,this.titleOffset,this.titleCount)}}}(),m.bind=(h=[0,0],d=[0,0],p=[0,0],function(){var t=this.plot,e=this.shader,r=t._tickBounds,n=t.dataBox,i=t.screenBox,a=t.viewBox;e.bind();for(var o=0;o<2;++o){var s=r[o],l=r[o+2]-s,c=.5*(n[o+2]+n[o]),u=n[o+2]-n[o],f=a[o],m=a[o+2]-f,v=i[o],g=i[o+2]-v;d[o]=2*l/u*m/g,h[o]=2*(s-c)/u*m/g}p[1]=2*t.pixelRatio/(i[3]-i[1]),p[0]=p[1]*(i[3]-i[1])/(i[2]-i[0]),e.uniforms.dataScale=d,e.uniforms.dataShift=h,e.uniforms.textScale=p,this.vbo.bind(),e.attributes.textCoordinate.pointer()}),m.update=function(t){var e,r,n,i,o,s=[],l=t.ticks,c=t.bounds;for(o=0;o<2;++o){var u=[Math.floor(s.length/3)],f=[-1/0],h=l[o];for(e=0;e=0){var m=e[p]-n[p]*(e[p+2]-e[p])/(n[p+2]-n[p]);0===p?o.drawLine(m,e[1],m,e[3],d[p],h[p]):o.drawLine(e[0],m,e[2],m,d[p],h[p])}}for(p=0;p=0;--t)this.objects[t].dispose();this.objects.length=0;for(t=this.overlays.length-1;t>=0;--t)this.overlays[t].dispose();this.overlays.length=0,this.gl=null},c.addObject=function(t){this.objects.indexOf(t)<0&&(this.objects.push(t),this.setDirty())},c.removeObject=function(t){for(var e=this.objects,r=0;r0&&0===L[e-1];)L.pop(),C.pop().dispose()}window.addEventListener("resize",j),N.update=function(t){e||(t=t||{},P=!0,z=!0)},N.add=function(t){e||(t.axes=k,E.push(t),S.push(-1),P=!0,z=!0,B())},N.remove=function(t){if(!e){var r=E.indexOf(t);r<0||(E.splice(r,1),S.pop(),P=!0,z=!0,B())}},N.dispose=function(){if(!e&&(e=!0,window.removeEventListener("resize",j),r.removeEventListener("webglcontextlost",q),N.mouseListener.enabled=!1,!N.contextLost)){k.dispose(),T.dispose();for(var t=0;tb.distance)continue;for(var u=0;u0){r=Math.round(Math.pow(10,e));return Math.ceil(t/r)*r}return Math.ceil(t)}function m(t){return"boolean"!=typeof t||t}},{"./lib/shader":209,"3d-view-controls":39,"a-big-triangle":42,"gl-axes3d":157,"gl-axes3d/properties":164,"gl-fbo":171,"gl-mat4/perspective":189,"gl-select-static":219,"gl-spikes3d":229,"is-mobile":265,"mouse-change":424}],211:[function(t,e,r){var n=t("glslify");r.pointVertex=n(["precision mediump float;\n#define GLSLIFY 1\n\nattribute vec2 position;\n\nuniform mat3 matrix;\nuniform float pointSize;\nuniform float pointCloud;\n\nhighp float rand(vec2 co) {\n highp float a = 12.9898;\n highp float b = 78.233;\n highp float c = 43758.5453;\n highp float d = dot(co.xy, vec2(a, b));\n highp float e = mod(d, 3.14);\n return fract(sin(e) * c);\n}\n\nvoid main() {\n vec3 hgPosition = matrix * vec3(position, 1);\n gl_Position = vec4(hgPosition.xy, 0, hgPosition.z);\n // if we don't jitter the point size a bit, overall point cloud\n // saturation 'jumps' on zooming, which is disturbing and confusing\n gl_PointSize = pointSize * ((19.5 + rand(position)) / 20.0);\n if(pointCloud != 0.0) { // pointCloud is truthy\n // get the same square surface as circle would be\n gl_PointSize *= 0.886;\n }\n}"]),r.pointFragment=n(["precision mediump float;\n#define GLSLIFY 1\n\nuniform vec4 color, borderColor;\nuniform float centerFraction;\nuniform float pointCloud;\n\nvoid main() {\n float radius;\n vec4 baseColor;\n if(pointCloud != 0.0) { // pointCloud is truthy\n if(centerFraction == 1.0) {\n gl_FragColor = color;\n } else {\n gl_FragColor = mix(borderColor, color, centerFraction);\n }\n } else {\n radius = length(2.0 * gl_PointCoord.xy - 1.0);\n if(radius > 1.0) {\n discard;\n }\n baseColor = mix(borderColor, color, step(radius, centerFraction));\n gl_FragColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\n }\n}\n"]),r.pickVertex=n(["precision mediump float;\n#define GLSLIFY 1\n\nattribute vec2 position;\nattribute vec4 pickId;\n\nuniform mat3 matrix;\nuniform float pointSize;\nuniform vec4 pickOffset;\n\nvarying vec4 fragId;\n\nvoid main() {\n vec3 hgPosition = matrix * vec3(position, 1);\n gl_Position = vec4(hgPosition.xy, 0, hgPosition.z);\n gl_PointSize = pointSize;\n\n vec4 id = pickId + pickOffset;\n id.y += floor(id.x / 256.0);\n id.x -= floor(id.x / 256.0) * 256.0;\n\n id.z += floor(id.y / 256.0);\n id.y -= floor(id.y / 256.0) * 256.0;\n\n id.w += floor(id.z / 256.0);\n id.z -= floor(id.z / 256.0) * 256.0;\n\n fragId = id;\n}\n"]),r.pickFragment=n(["precision mediump float;\n#define GLSLIFY 1\n\nvarying vec4 fragId;\n\nvoid main() {\n float radius = length(2.0 * gl_PointCoord.xy - 1.0);\n if(radius > 1.0) {\n discard;\n }\n gl_FragColor = fragId / 255.0;\n}\n"])},{glslify:253}],212:[function(t,e,r){"use strict";var n=t("gl-shader"),i=t("gl-buffer"),a=t("typedarray-pool"),o=t("./lib/shader");function s(t,e,r,n,i){this.plot=t,this.offsetBuffer=e,this.pickBuffer=r,this.shader=n,this.pickShader=i,this.sizeMin=.5,this.sizeMinCap=2,this.sizeMax=20,this.areaRatio=1,this.pointCount=0,this.color=[1,0,0,1],this.borderColor=[0,0,0,1],this.blend=!1,this.pickOffset=0,this.points=null}e.exports=function(t,e){var r=t.gl,a=i(r),l=i(r),c=n(r,o.pointVertex,o.pointFragment),u=n(r,o.pickVertex,o.pickFragment),f=new s(t,a,l,c,u);return f.update(e),t.addObject(f),f};var l,c,u=s.prototype;u.dispose=function(){this.shader.dispose(),this.pickShader.dispose(),this.offsetBuffer.dispose(),this.pickBuffer.dispose(),this.plot.removeObject(this)},u.update=function(t){var e;function r(e,r){return e in t?t[e]:r}t=t||{},this.sizeMin=r("sizeMin",.5),this.sizeMax=r("sizeMax",20),this.color=r("color",[1,0,0,1]).slice(),this.areaRatio=r("areaRatio",1),this.borderColor=r("borderColor",[0,0,0,1]).slice(),this.blend=r("blend",!1);var n=t.positions.length>>>1,i=t.positions instanceof Float32Array,o=t.idToIndex instanceof Int32Array&&t.idToIndex.length>=n,s=t.positions,l=i?s:a.mallocFloat32(s.length),c=o?t.idToIndex:a.mallocInt32(n);if(i||l.set(s),!o)for(l.set(s),e=0;e>>1;for(r=0;r=e[0]&&a<=e[2]&&o>=e[1]&&o<=e[3]&&n++}return n}(this.points,i),u=this.plot.pickPixelRatio*Math.max(Math.min(this.sizeMinCap,this.sizeMin),Math.min(this.sizeMax,this.sizeMax/Math.pow(s,.33333)));l[0]=2/a,l[4]=2/o,l[6]=-2*i[0]/a-1,l[7]=-2*i[1]/o-1,this.offsetBuffer.bind(),r.bind(),r.attributes.position.pointer(),r.uniforms.matrix=l,r.uniforms.color=this.color,r.uniforms.borderColor=this.borderColor,r.uniforms.pointCloud=u<5,r.uniforms.pointSize=u,r.uniforms.centerFraction=Math.min(1,Math.max(0,Math.sqrt(1-this.areaRatio))),e&&(c[0]=255&t,c[1]=t>>8&255,c[2]=t>>16&255,c[3]=t>>24&255,this.pickBuffer.bind(),r.attributes.pickId.pointer(n.UNSIGNED_BYTE),r.uniforms.pickOffset=c,this.pickOffset=t);var f=n.getParameter(n.BLEND),h=n.getParameter(n.DITHER);return f&&!this.blend&&n.disable(n.BLEND),h&&n.disable(n.DITHER),n.drawArrays(n.POINTS,0,this.pointCount),f&&!this.blend&&n.enable(n.BLEND),h&&n.enable(n.DITHER),t+this.pointCount}),u.draw=u.unifiedDraw,u.drawPick=u.unifiedDraw,u.pick=function(t,e,r){var n=this.pickOffset,i=this.pointCount;if(r=n+i)return null;var a=r-n,o=this.points;return{object:this,pointId:a,dataCoord:[o[2*a],o[2*a+1]]}}},{"./lib/shader":211,"gl-buffer":165,"gl-shader":220,"typedarray-pool":534}],213:[function(t,e,r){e.exports=function(t,e,r,n){var i,a,o,s,l,c=e[0],u=e[1],f=e[2],h=e[3],d=r[0],p=r[1],m=r[2],v=r[3];(a=c*d+u*p+f*m+h*v)<0&&(a=-a,d=-d,p=-p,m=-m,v=-v);1-a>1e-6?(i=Math.acos(a),o=Math.sin(i),s=Math.sin((1-n)*i)/o,l=Math.sin(n*i)/o):(s=1-n,l=n);return t[0]=s*c+l*d,t[1]=s*u+l*p,t[2]=s*f+l*m,t[3]=s*h+l*v,t}},{}],214:[function(t,e,r){"use strict";var n=t("vectorize-text");e.exports=function(t,e){var r=i[e];r||(r=i[e]={});if(t in r)return r[t];for(var a=n(t,{textAlign:"center",textBaseline:"middle",lineHeight:1,font:e}),o=n(t,{triangles:!0,textAlign:"center",textBaseline:"middle",lineHeight:1,font:e}),s=[[1/0,1/0],[-1/0,-1/0]],l=0;l=1)return!0;for(var t=0;t<3;++t)if(this.axesProject[t]&&this.projectOpacity[t]>=1)return!0;return!1};var p=[0,0],m=[0,0,0],v=[0,0,0],g=[0,0,0,1],y=[0,0,0,1],b=c.slice(),x=[0,0,0],_=[[0,0,0],[0,0,0]];function w(t){return t[0]=t[1]=t[2]=0,t}function M(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=1,t}function k(t,e,r,n){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[r]=n,t}function A(t,e,r,n,i){var a,s=e.axesProject,l=e.gl,u=t.uniforms,h=r.model||c,d=r.view||c,A=r.projection||c,T=e.axesBounds,E=function(t){for(var e=_,r=0;r<2;++r)for(var n=0;n<3;++n)e[r][n]=Math.max(Math.min(t[r][n],1e8),-1e8);return e}(e.clipBounds);a=e.axes&&e.axes.lastCubeProps?e.axes.lastCubeProps.axis:[1,1,1],p[0]=2/l.drawingBufferWidth,p[1]=2/l.drawingBufferHeight,t.bind(),u.view=d,u.projection=A,u.screenSize=p,u.highlightId=e.highlightId,u.highlightScale=e.highlightScale,u.clipBounds=E,u.pickGroup=e.pickId/255,u.pixelRatio=e.pixelRatio;for(var S=0;S<3;++S)if(s[S]&&e.projectOpacity[S]<1===n){u.scale=e.projectScale[S],u.opacity=e.projectOpacity[S];for(var L=b,C=0;C<16;++C)L[C]=0;for(C=0;C<4;++C)L[5*C]=1;L[5*S]=0,a[S]<0?L[12+S]=T[0][S]:L[12+S]=T[1][S],o(L,h,L),u.model=L;var P=(S+1)%3,z=(S+2)%3,O=w(m),D=w(v);O[P]=1,D[z]=1;var I=f(0,0,0,M(g,O)),R=f(0,0,0,M(y,D));if(Math.abs(I[1])>Math.abs(R[1])){var N=I;I=R,R=N,N=O,O=D,D=N;var F=P;P=z,z=F}I[0]<0&&(O[P]=-1),R[1]>0&&(D[z]=-1);var j=0,B=0;for(C=0;C<4;++C)j+=Math.pow(h[4*P+C],2),B+=Math.pow(h[4*z+C],2);O[P]/=Math.sqrt(j),D[z]/=Math.sqrt(B),u.axes[0]=O,u.axes[1]=D,u.fragClipBounds[0]=k(x,E[0],S,-1e8),u.fragClipBounds[1]=k(x,E[1],S,1e8),e.vao.draw(l.TRIANGLES,e.vertexCount),e.lineWidth>0&&(l.lineWidth(e.lineWidth),e.vao.draw(l.LINES,e.lineVertexCount,e.vertexCount))}}var T=[[-1e8,-1e8,-1e8],[1e8,1e8,1e8]];function E(t,e,r,n,i,a){var o=r.gl;if(r.vao.bind(),i===r.opacity<1||a){t.bind();var s=t.uniforms;s.model=n.model||c,s.view=n.view||c,s.projection=n.projection||c,p[0]=2/o.drawingBufferWidth,p[1]=2/o.drawingBufferHeight,s.screenSize=p,s.highlightId=r.highlightId,s.highlightScale=r.highlightScale,s.fragClipBounds=T,s.clipBounds=r.axes.bounds,s.opacity=r.opacity,s.pickGroup=r.pickId/255,s.pixelRatio=r.pixelRatio,r.vao.draw(o.TRIANGLES,r.vertexCount),r.lineWidth>0&&(o.lineWidth(r.lineWidth),r.vao.draw(o.LINES,r.lineVertexCount,r.vertexCount))}A(e,r,n,i),r.vao.unbind()}d.draw=function(t){E(this.useOrtho?this.orthoShader:this.shader,this.projectShader,this,t,!1,!1)},d.drawTransparent=function(t){E(this.useOrtho?this.orthoShader:this.shader,this.projectShader,this,t,!0,!1)},d.drawPick=function(t){E(this.useOrtho?this.pickOrthoShader:this.pickPerspectiveShader,this.pickProjectShader,this,t,!1,!0)},d.pick=function(t){if(!t)return null;if(t.id!==this.pickId)return null;var e=t.value[2]+(t.value[1]<<8)+(t.value[0]<<16);if(e>=this.pointCount||e<0)return null;var r=this.points[e],n=this._selectResult;n.index=e;for(var i=0;i<3;++i)n.position[i]=n.dataCoordinate[i]=r[i];return n},d.highlight=function(t){if(t){var e=t.index,r=255&e,n=e>>8&255,i=e>>16&255;this.highlightId=[r/255,n/255,i/255,0]}else this.highlightId=[1,1,1,1]},d.update=function(t){if("perspective"in(t=t||{})&&(this.useOrtho=!t.perspective),"orthographic"in t&&(this.useOrtho=!!t.orthographic),"lineWidth"in t&&(this.lineWidth=t.lineWidth),"project"in t)if(Array.isArray(t.project))this.axesProject=t.project;else{var e=!!t.project;this.axesProject=[e,e,e]}if("projectScale"in t)if(Array.isArray(t.projectScale))this.projectScale=t.projectScale.slice();else{var r=+t.projectScale;this.projectScale=[r,r,r]}if("projectOpacity"in t)if(Array.isArray(t.projectOpacity))this.projectOpacity=t.projectOpacity.slice();else{r=+t.projectOpacity;this.projectOpacity=[r,r,r]}"opacity"in t&&(this.opacity=t.opacity),this.dirty=!0;var n=t.position;if(n){var i=t.font||"normal",o=t.alignment||[0,0],s=[1/0,1/0,1/0],c=[-1/0,-1/0,-1/0],u=t.glyph,f=t.color,h=t.size,d=t.angle,p=t.lineColor,m=0,v=0,g=0,y=n.length;t:for(var b=0;b0&&(C[0]=-o[0]*(1+k[0][0]));var q=w.cells,H=w.positions;for(_=0;_0){var g=r*u;o.drawBox(f-g,h-g,d+g,h+g,a),o.drawBox(f-g,p-g,d+g,p+g,a),o.drawBox(f-g,h-g,f+g,p+g,a),o.drawBox(d-g,h-g,d+g,p+g,a)}}}},s.update=function(t){t=t||{},this.innerFill=!!t.innerFill,this.outerFill=!!t.outerFill,this.innerColor=(t.innerColor||[0,0,0,.5]).slice(),this.outerColor=(t.outerColor||[0,0,0,.5]).slice(),this.borderColor=(t.borderColor||[0,0,0,1]).slice(),this.borderWidth=t.borderWidth||0,this.selectBox=(t.selectBox||this.selectBox).slice()},s.dispose=function(){this.boxBuffer.dispose(),this.boxShader.dispose(),this.plot.removeOverlay(this)}},{"./lib/shaders":217,"gl-buffer":165,"gl-shader":220}],219:[function(t,e,r){"use strict";e.exports=function(t,e){var r=n(t,e),a=i.mallocUint8(e[0]*e[1]*4);return new l(t,r,a)};var n=t("gl-fbo"),i=t("typedarray-pool"),a=t("ndarray"),o=t("bit-twiddle").nextPow2,s=t("cwise/lib/wrapper")({args:["array",{offset:[0,0,1],array:0},{offset:[0,0,2],array:0},{offset:[0,0,3],array:0},"scalar","scalar","index"],pre:{body:"{this_closestD2=1e8,this_closestX=-1,this_closestY=-1}",args:[],thisVars:["this_closestD2","this_closestX","this_closestY"],localVars:[]},body:{body:"{if(_inline_46_arg0_<255||_inline_46_arg1_<255||_inline_46_arg2_<255||_inline_46_arg3_<255){var _inline_46_l=_inline_46_arg4_-_inline_46_arg6_[0],_inline_46_a=_inline_46_arg5_-_inline_46_arg6_[1],_inline_46_f=_inline_46_l*_inline_46_l+_inline_46_a*_inline_46_a;_inline_46_fthis.buffer.length){i.free(this.buffer);for(var n=this.buffer=i.mallocUint8(o(r*e*4)),a=0;ar)for(t=r;te)for(t=e;t=0){for(var M=0|w.type.charAt(w.type.length-1),k=new Array(M),A=0;A=0;)T+=1;_[y]=T}var E=new Array(r.length);function S(){h.program=o.program(d,h._vref,h._fref,x,_);for(var t=0;t=0){var p=h.charCodeAt(h.length-1)-48;if(p<2||p>4)throw new n("","Invalid data type for attribute "+f+": "+h);o(t,e,d[0],i,p,a,f)}else{if(!(h.indexOf("mat")>=0))throw new n("","Unknown data type for attribute "+f+": "+h);var p=h.charCodeAt(h.length-1)-48;if(p<2||p>4)throw new n("","Invalid data type for attribute "+f+": "+h);s(t,e,d,i,p,a,f)}}}return a};var n=t("./GLError");function i(t,e,r,n,i,a){this._gl=t,this._wrapper=e,this._index=r,this._locations=n,this._dimension=i,this._constFunc=a}var a=i.prototype;function o(t,e,r,n,a,o,s){for(var l=["gl","v"],c=[],u=0;u4)throw new i("","Invalid uniform dimension type for matrix "+name+": "+r);return"gl.uniformMatrix"+a+"fv(locations["+e+"],false,obj"+t+")"}throw new i("","Unknown uniform data type for "+name+": "+r)}var a=r.charCodeAt(r.length-1)-48;if(a<2||a>4)throw new i("","Invalid data type");switch(r.charAt(0)){case"b":case"i":return"gl.uniform"+a+"iv(locations["+e+"],obj"+t+")";case"v":return"gl.uniform"+a+"fv(locations["+e+"],obj"+t+")";default:throw new i("","Unrecognized data type for vector "+name+": "+r)}}}function c(e){for(var n=["return function updateProperty(obj){"],i=function t(e,r){if("object"!=typeof r)return[[e,r]];var n=[];for(var i in r){var a=r[i],o=e;parseInt(i)+""===i?o+="["+i+"]":o+="."+i,"object"==typeof a?n.push.apply(n,t(o,a)):n.push([o,a])}return n}("",e),a=0;a4)throw new i("","Invalid data type");return"b"===t.charAt(0)?o(r,!1):o(r,0)}if(0===t.indexOf("mat")&&4===t.length){var r=t.charCodeAt(t.length-1)-48;if(r<2||r>4)throw new i("","Invalid uniform dimension type for matrix "+name+": "+t);return o(r*r,0)}throw new i("","Unknown uniform data type for "+name+": "+t)}}(r[u].type);var d}function f(t){var e;if(Array.isArray(t)){e=new Array(t.length);for(var r=0;r1){l[0]in o||(o[l[0]]=[]),o=o[l[0]];for(var c=1;c1)for(var l=0;l 0.0 ||\n any(lessThan(worldCoordinate, clipBounds[0])) || any(greaterThan(worldCoordinate, clipBounds[1]))) {\n discard;\n }\n\n vec3 N = normalize(surfaceNormal);\n vec3 V = normalize(eyeDirection);\n vec3 L = normalize(lightDirection);\n\n if(gl_FrontFacing) {\n N = -N;\n }\n\n float specular = max(beckmannSpecular(L, V, N, roughness), 0.);\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\n\n //decide how to interpolate color \u2014 in vertex or in fragment\n vec4 surfaceColor = step(vertexColor, .5) * texture2D(colormap, vec2(value, value)) + step(.5, vertexColor) * vColor;\n\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\n\n gl_FragColor = mix(litColor, contourColor, contourTint) * opacity;\n}\n"]),s=i(["precision mediump float;\n#define GLSLIFY 1\n\nattribute vec4 uv;\nattribute float f;\n\nuniform mat3 permutation;\nuniform mat4 model, view, projection;\nuniform float height, zOffset;\nuniform sampler2D colormap;\n\nvarying float value, kill;\nvarying vec3 worldCoordinate;\nvarying vec2 planeCoordinate;\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\nvarying vec4 vColor;\n\nvoid main() {\n vec3 dataCoordinate = permutation * vec3(uv.xy, height);\n vec4 worldPosition = model * vec4(dataCoordinate, 1.0);\n\n vec4 clipPosition = projection * view * worldPosition;\n clipPosition.z = clipPosition.z + zOffset;\n\n gl_Position = clipPosition;\n value = f;\n kill = -1.0;\n worldCoordinate = dataCoordinate;\n planeCoordinate = uv.zw;\n\n vColor = texture2D(colormap, vec2(value, value));\n\n //Don't do lighting for contours\n surfaceNormal = vec3(1,0,0);\n eyeDirection = vec3(0,1,0);\n lightDirection = vec3(0,0,1);\n}\n"]),l=i(["precision mediump float;\n#define GLSLIFY 1\n\nuniform vec2 shape;\nuniform vec3 clipBounds[2];\nuniform float pickId;\n\nvarying float value, kill;\nvarying vec3 worldCoordinate;\nvarying vec2 planeCoordinate;\nvarying vec3 surfaceNormal;\n\nvec2 splitFloat(float v) {\n float vh = 255.0 * v;\n float upper = floor(vh);\n float lower = fract(vh);\n return vec2(upper / 255.0, floor(lower * 16.0) / 16.0);\n}\n\nvoid main() {\n if(kill > 0.0 ||\n any(lessThan(worldCoordinate, clipBounds[0])) || any(greaterThan(worldCoordinate, clipBounds[1]))) {\n discard;\n }\n vec2 ux = splitFloat(planeCoordinate.x / shape.x);\n vec2 uy = splitFloat(planeCoordinate.y / shape.y);\n gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0));\n}\n"]);r.createShader=function(t){var e=n(t,a,o,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e.attributes.normal.location=2,e},r.createPickShader=function(t){var e=n(t,a,l,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e.attributes.normal.location=2,e},r.createContourShader=function(t){var e=n(t,s,o,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e},r.createPickContourShader=function(t){var e=n(t,s,l,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e}},{"gl-shader":220,glslify:231}],231:[function(t,e,r){arguments[4][169][0].apply(r,arguments)},{dup:169}],232:[function(t,e,r){"use strict";e.exports=function(t){var e=t.gl,r=y(e),n=x(e),s=b(e),l=_(e),c=i(e),u=a(e,[{buffer:c,size:4,stride:w,offset:0},{buffer:c,size:3,stride:w,offset:16},{buffer:c,size:3,stride:w,offset:28}]),f=i(e),h=a(e,[{buffer:f,size:4,stride:20,offset:0},{buffer:f,size:1,stride:20,offset:16}]),d=i(e),p=a(e,[{buffer:d,size:2,type:e.FLOAT}]),m=o(e,1,T,e.RGBA,e.UNSIGNED_BYTE);m.minFilter=e.LINEAR,m.magFilter=e.LINEAR;var v=new E(e,[0,0],[[0,0,0],[0,0,0]],r,n,c,u,m,s,l,f,h,d,p),g={levels:[[],[],[]]};for(var M in t)g[M]=t[M];return g.colormap=g.colormap||"jet",v.update(g),v};var n=t("bit-twiddle"),i=t("gl-buffer"),a=t("gl-vao"),o=t("gl-texture2d"),s=t("typedarray-pool"),l=t("colormap"),c=t("ndarray-ops"),u=t("ndarray-pack"),f=t("ndarray"),h=t("surface-nets"),d=t("gl-mat4/multiply"),p=t("gl-mat4/invert"),m=t("binary-search-bounds"),v=t("ndarray-gradient"),g=t("./lib/shaders"),y=g.createShader,b=g.createContourShader,x=g.createPickShader,_=g.createPickContourShader,w=40,M=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],k=[[0,0],[0,1],[1,0],[1,1],[1,0],[0,1]],A=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];!function(){for(var t=0;t<3;++t){var e=A[t],r=(t+2)%3;e[(t+1)%3+0]=1,e[r+3]=1,e[t+6]=1}}();var T=256;function E(t,e,r,n,i,a,o,l,c,u,h,d,p,m){this.gl=t,this.shape=e,this.bounds=r,this.intensityBounds=[],this._shader=n,this._pickShader=i,this._coordinateBuffer=a,this._vao=o,this._colorMap=l,this._contourShader=c,this._contourPickShader=u,this._contourBuffer=h,this._contourVAO=d,this._contourOffsets=[[],[],[]],this._contourCounts=[[],[],[]],this._vertexCount=0,this._pickResult=new function(t,e,r,n,i){this.position=t,this.index=e,this.uv=r,this.level=n,this.dataCoordinate=i}([0,0,0],[0,0],[0,0],[0,0,0],[0,0,0]),this._dynamicBuffer=p,this._dynamicVAO=m,this._dynamicOffsets=[0,0,0],this._dynamicCounts=[0,0,0],this.contourWidth=[1,1,1],this.contourLevels=[[1],[1],[1]],this.contourTint=[0,0,0],this.contourColor=[[.5,.5,.5,1],[.5,.5,.5,1],[.5,.5,.5,1]],this.showContour=!0,this.showSurface=!0,this.enableHighlight=[!0,!0,!0],this.highlightColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.highlightTint=[1,1,1],this.highlightLevel=[-1,-1,-1],this.enableDynamic=[!0,!0,!0],this.dynamicLevel=[NaN,NaN,NaN],this.dynamicColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.dynamicTint=[1,1,1],this.dynamicWidth=[1,1,1],this.axesBounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.surfaceProject=[!1,!1,!1],this.contourProject=[[!1,!1,!1],[!1,!1,!1],[!1,!1,!1]],this.colorBounds=[!1,!1],this._field=[f(s.mallocFloat(1024),[0,0]),f(s.mallocFloat(1024),[0,0]),f(s.mallocFloat(1024),[0,0])],this.pickId=1,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.snapToData=!1,this.opacity=1,this.lightPosition=[10,1e4,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.vertexColor=0,this.dirty=!0}var S=E.prototype;S.isTransparent=function(){return this.opacity<1},S.isOpaque=function(){if(this.opacity>=1)return!0;for(var t=0;t<3;++t)if(this._contourCounts[t].length>0||this._dynamicCounts[t]>0)return!0;return!1},S.pickSlots=1,S.setPickBase=function(t){this.pickId=t};var L=[0,0,0],C={showSurface:!1,showContour:!1,projections:[M.slice(),M.slice(),M.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]};function P(t,e){var r,n,i,a=e.axes&&e.axes.lastCubeProps.axis||L,o=e.showSurface,s=e.showContour;for(r=0;r<3;++r)for(o=o||e.surfaceProject[r],n=0;n<3;++n)s=s||e.contourProject[r][n];for(r=0;r<3;++r){var l=C.projections[r];for(n=0;n<16;++n)l[n]=0;for(n=0;n<4;++n)l[5*n]=1;l[5*r]=0,l[12+r]=e.axesBounds[+(a[r]>0)][r],d(l,t.model,l);var c=C.clipBounds[r];for(i=0;i<2;++i)for(n=0;n<3;++n)c[i][n]=t.clipBounds[i][n];c[0][r]=-1e8,c[1][r]=1e8}return C.showSurface=o,C.showContour=s,C}var z={model:M,view:M,projection:M,inverseModel:M.slice(),lowerBound:[0,0,0],upperBound:[0,0,0],colorMap:0,clipBounds:[[0,0,0],[0,0,0]],height:0,contourTint:0,contourColor:[0,0,0,1],permutation:[1,0,0,0,1,0,0,0,1],zOffset:-1e-4,kambient:1,kdiffuse:1,kspecular:1,lightPosition:[1e3,1e3,1e3],eyePosition:[0,0,0],roughness:1,fresnel:1,opacity:1,vertexColor:0},O=M.slice(),D=[1,0,0,0,1,0,0,0,1];function I(t,e){t=t||{};var r=this.gl;r.disable(r.CULL_FACE),this._colorMap.bind(0);var n=z;n.model=t.model||M,n.view=t.view||M,n.projection=t.projection||M,n.lowerBound=[this.bounds[0][0],this.bounds[0][1],this.colorBounds[0]||this.bounds[0][2]],n.upperBound=[this.bounds[1][0],this.bounds[1][1],this.colorBounds[1]||this.bounds[1][2]],n.contourColor=this.contourColor[0],n.inverseModel=p(n.inverseModel,n.model);for(var i=0;i<2;++i)for(var a=n.clipBounds[i],o=0;o<3;++o)a[o]=Math.min(Math.max(this.clipBounds[i][o],-1e8),1e8);n.kambient=this.ambientLight,n.kdiffuse=this.diffuseLight,n.kspecular=this.specularLight,n.roughness=this.roughness,n.fresnel=this.fresnel,n.opacity=this.opacity,n.height=0,n.permutation=D,n.vertexColor=this.vertexColor;var s=O;for(d(s,n.view,n.model),d(s,n.projection,s),p(s,s),i=0;i<3;++i)n.eyePosition[i]=s[12+i]/s[15];var l=s[15];for(i=0;i<3;++i)l+=this.lightPosition[i]*s[4*i+3];for(i=0;i<3;++i){var c=s[12+i];for(o=0;o<3;++o)c+=s[4*o+i]*this.lightPosition[o];n.lightPosition[i]=c/l}var u=P(n,this);if(u.showSurface&&e===this.opacity<1){for(this._shader.bind(),this._shader.uniforms=n,this._vao.bind(),this.showSurface&&this._vertexCount&&this._vao.draw(r.TRIANGLES,this._vertexCount),i=0;i<3;++i)this.surfaceProject[i]&&this.vertexCount&&(this._shader.uniforms.model=u.projections[i],this._shader.uniforms.clipBounds=u.clipBounds[i],this._vao.draw(r.TRIANGLES,this._vertexCount));this._vao.unbind()}if(u.showContour&&!e){var f=this._contourShader;n.kambient=1,n.kdiffuse=0,n.kspecular=0,n.opacity=1,f.bind(),f.uniforms=n;var h=this._contourVAO;for(h.bind(),i=0;i<3;++i)for(f.uniforms.permutation=A[i],r.lineWidth(this.contourWidth[i]),o=0;o>4)/16)/255,i=Math.floor(n),a=n-i,o=e[1]*(t.value[1]+(15&t.value[2])/16)/255,s=Math.floor(o),l=o-s;i+=1,s+=1;var c=r.position;c[0]=c[1]=c[2]=0;for(var u=0;u<2;++u)for(var f=u?a:1-a,h=0;h<2;++h)for(var d=i+u,p=s+h,v=f*(h?l:1-l),g=0;g<3;++g)c[g]+=this._field[g].get(d,p)*v;for(var y=this._pickResult.level,b=0;b<3;++b)if(y[b]=m.le(this.contourLevels[b],c[b]),y[b]<0)this.contourLevels[b].length>0&&(y[b]=0);else if(y[b]Math.abs(_-c[b])&&(y[b]+=1)}for(r.index[0]=a<.5?i:i+1,r.index[1]=l<.5?s:s+1,r.uv[0]=n/e[0],r.uv[1]=o/e[1],g=0;g<3;++g)r.dataCoordinate[g]=this._field[g].get(r.index[0],r.index[1]);return r},S.update=function(t){t=t||{},this.dirty=!0,"contourWidth"in t&&(this.contourWidth=F(t.contourWidth,Number)),"showContour"in t&&(this.showContour=F(t.showContour,Boolean)),"showSurface"in t&&(this.showSurface=!!t.showSurface),"contourTint"in t&&(this.contourTint=F(t.contourTint,Boolean)),"contourColor"in t&&(this.contourColor=B(t.contourColor)),"contourProject"in t&&(this.contourProject=F(t.contourProject,function(t){return F(t,Boolean)})),"surfaceProject"in t&&(this.surfaceProject=t.surfaceProject),"dynamicColor"in t&&(this.dynamicColor=B(t.dynamicColor)),"dynamicTint"in t&&(this.dynamicTint=F(t.dynamicTint,Number)),"dynamicWidth"in t&&(this.dynamicWidth=F(t.dynamicWidth,Number)),"opacity"in t&&(this.opacity=t.opacity),"colorBounds"in t&&(this.colorBounds=t.colorBounds),"vertexColor"in t&&(this.vertexColor=t.vertexColor?1:0);var e=t.field||t.coords&&t.coords[2]||null,r=!1;if(e||(e=this._field[2].shape[0]||this._field[2].shape[2]?this._field[2].lo(1,1).hi(this._field[2].shape[0]-2,this._field[2].shape[1]-2):this._field[2].hi(0,0)),"field"in t||"coords"in t){var i=(e.shape[0]+2)*(e.shape[1]+2);i>this._field[2].data.length&&(s.freeFloat(this._field[2].data),this._field[2].data=s.mallocFloat(n.nextPow2(i))),this._field[2]=f(this._field[2].data,[e.shape[0]+2,e.shape[1]+2]),N(this._field[2],e),this.shape=e.shape.slice();for(var a=this.shape,o=0;o<2;++o)this._field[2].size>this._field[o].data.length&&(s.freeFloat(this._field[o].data),this._field[o].data=s.mallocFloat(this._field[2].size)),this._field[o]=f(this._field[o].data,[a[0]+2,a[1]+2]);if(t.coords){var d=t.coords;if(!Array.isArray(d)||3!==d.length)throw new Error("gl-surface: invalid coordinates for x/y");for(o=0;o<2;++o){var p=d[o];for(x=0;x<2;++x)if(p.shape[x]!==a[x])throw new Error("gl-surface: coords have incorrect shape");N(this._field[o],p)}}else if(t.ticks){var m=t.ticks;if(!Array.isArray(m)||2!==m.length)throw new Error("gl-surface: invalid ticks");for(o=0;o<2;++o){var g=m[o];if((Array.isArray(g)||g.length)&&(g=f(g)),g.shape[0]!==a[o])throw new Error("gl-surface: invalid tick length");var y=f(g.data,a);y.stride[o]=g.stride[0],y.stride[1^o]=0,N(this._field[o],y)}}else{for(o=0;o<2;++o){var b=[0,0];b[o]=1,this._field[o]=f(this._field[o].data,[a[0]+2,a[1]+2],b,0)}this._field[0].set(0,0,0);for(var x=0;x0){for(var Mt=0;Mt<5;++Mt)nt.pop();Y-=1}continue t}nt.push(st[0],st[1],ut[0],ut[1],st[2]),Y+=1}}ot.push(Y)}this._contourOffsets[it]=at,this._contourCounts[it]=ot}var kt=s.mallocFloat(nt.length);for(o=0;os||o[1]<0||o[1]>s)throw new Error("gl-texture2d: Invalid texture size");var l=p(o,e.stride.slice()),c=0;"float32"===r?c=t.FLOAT:"float64"===r?(c=t.FLOAT,l=!1,r="float32"):"uint8"===r?c=t.UNSIGNED_BYTE:(c=t.UNSIGNED_BYTE,l=!1,r="uint8");var f,d,v=0;if(2===o.length)v=t.LUMINANCE,o=[o[0],o[1],1],e=n(e.data,o,[e.stride[0],e.stride[1],1],e.offset);else{if(3!==o.length)throw new Error("gl-texture2d: Invalid shape for texture");if(1===o[2])v=t.ALPHA;else if(2===o[2])v=t.LUMINANCE_ALPHA;else if(3===o[2])v=t.RGB;else{if(4!==o[2])throw new Error("gl-texture2d: Invalid shape for pixel coords");v=t.RGBA}}c!==t.FLOAT||t.getExtension("OES_texture_float")||(c=t.UNSIGNED_BYTE,l=!1);var g=e.size;if(l)f=0===e.offset&&e.data.length===g?e.data:e.data.subarray(e.offset,e.offset+g);else{var y=[o[2],o[2]*o[0],1];d=a.malloc(g,r);var b=n(d,o,y,0);"float32"!==r&&"float64"!==r||c!==t.UNSIGNED_BYTE?i.assign(b,e):u(b,e),f=d.subarray(0,g)}var x=m(t);t.texImage2D(t.TEXTURE_2D,0,v,o[0],o[1],0,v,c,f),l||a.free(d);return new h(t,x,o[0],o[1],v,c)}(t,e)}throw new Error("gl-texture2d: Invalid arguments for texture2d constructor")};var o=null,s=null,l=null;function c(t){return"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLVideoElement&&t instanceof HTMLVideoElement||"undefined"!=typeof ImageData&&t instanceof ImageData}var u=function(t,e){i.muls(t,e,255)};function f(t,e,r){var n=t.gl,i=n.getParameter(n.MAX_TEXTURE_SIZE);if(e<0||e>i||r<0||r>i)throw new Error("gl-texture2d: Invalid texture size");return t._shape=[e,r],t.bind(),n.texImage2D(n.TEXTURE_2D,0,t.format,e,r,0,t.format,t.type,null),t._mipLevels=[0],t}function h(t,e,r,n,i,a){this.gl=t,this.handle=e,this.format=i,this.type=a,this._shape=[r,n],this._mipLevels=[0],this._magFilter=t.NEAREST,this._minFilter=t.NEAREST,this._wrapS=t.CLAMP_TO_EDGE,this._wrapT=t.CLAMP_TO_EDGE,this._anisoSamples=1;var o=this,s=[this._wrapS,this._wrapT];Object.defineProperties(s,[{get:function(){return o._wrapS},set:function(t){return o.wrapS=t}},{get:function(){return o._wrapT},set:function(t){return o.wrapT=t}}]),this._wrapVector=s;var l=[this._shape[0],this._shape[1]];Object.defineProperties(l,[{get:function(){return o._shape[0]},set:function(t){return o.width=t}},{get:function(){return o._shape[1]},set:function(t){return o.height=t}}]),this._shapeVector=l}var d=h.prototype;function p(t,e){return 3===t.length?1===e[2]&&e[1]===t[0]*t[2]&&e[0]===t[2]:1===e[0]&&e[1]===t[0]}function m(t){var e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e}function v(t,e,r,n,i){var a=t.getParameter(t.MAX_TEXTURE_SIZE);if(e<0||e>a||r<0||r>a)throw new Error("gl-texture2d: Invalid texture shape");if(i===t.FLOAT&&!t.getExtension("OES_texture_float"))throw new Error("gl-texture2d: Floating point textures not supported on this platform");var o=m(t);return t.texImage2D(t.TEXTURE_2D,0,n,e,r,0,n,i,null),new h(t,o,e,r,n,i)}Object.defineProperties(d,{minFilter:{get:function(){return this._minFilter},set:function(t){this.bind();var e=this.gl;if(this.type===e.FLOAT&&o.indexOf(t)>=0&&(e.getExtension("OES_texture_float_linear")||(t=e.NEAREST)),s.indexOf(t)<0)throw new Error("gl-texture2d: Unknown filter mode "+t);return e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,t),this._minFilter=t}},magFilter:{get:function(){return this._magFilter},set:function(t){this.bind();var e=this.gl;if(this.type===e.FLOAT&&o.indexOf(t)>=0&&(e.getExtension("OES_texture_float_linear")||(t=e.NEAREST)),s.indexOf(t)<0)throw new Error("gl-texture2d: Unknown filter mode "+t);return e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,t),this._magFilter=t}},mipSamples:{get:function(){return this._anisoSamples},set:function(t){var e=this._anisoSamples;if(this._anisoSamples=0|Math.max(t,1),e!==this._anisoSamples){var r=this.gl.getExtension("EXT_texture_filter_anisotropic");r&&this.gl.texParameterf(this.gl.TEXTURE_2D,r.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}},wrapS:{get:function(){return this._wrapS},set:function(t){if(this.bind(),l.indexOf(t)<0)throw new Error("gl-texture2d: Unknown wrap mode "+t);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,t),this._wrapS=t}},wrapT:{get:function(){return this._wrapT},set:function(t){if(this.bind(),l.indexOf(t)<0)throw new Error("gl-texture2d: Unknown wrap mode "+t);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,t),this._wrapT=t}},wrap:{get:function(){return this._wrapVector},set:function(t){if(Array.isArray(t)||(t=[t,t]),2!==t.length)throw new Error("gl-texture2d: Must specify wrap mode for rows and columns");for(var e=0;e<2;++e)if(l.indexOf(t[e])<0)throw new Error("gl-texture2d: Unknown wrap mode "+t);this._wrapS=t[0],this._wrapT=t[1];var r=this.gl;return this.bind(),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,this._wrapS),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,this._wrapT),t}},shape:{get:function(){return this._shapeVector},set:function(t){if(Array.isArray(t)){if(2!==t.length)throw new Error("gl-texture2d: Invalid texture shape")}else t=[0|t,0|t];return f(this,0|t[0],0|t[1]),[0|t[0],0|t[1]]}},width:{get:function(){return this._shape[0]},set:function(t){return f(this,t|=0,this._shape[1]),t}},height:{get:function(){return this._shape[1]},set:function(t){return t|=0,f(this,this._shape[0],t),t}}}),d.bind=function(t){var e=this.gl;return void 0!==t&&e.activeTexture(e.TEXTURE0+(0|t)),e.bindTexture(e.TEXTURE_2D,this.handle),void 0!==t?0|t:e.getParameter(e.ACTIVE_TEXTURE)-e.TEXTURE0},d.dispose=function(){this.gl.deleteTexture(this.handle)},d.generateMipmap=function(){this.bind(),this.gl.generateMipmap(this.gl.TEXTURE_2D);for(var t=Math.min(this._shape[0],this._shape[1]),e=0;t>0;++e,t>>>=1)this._mipLevels.indexOf(e)<0&&this._mipLevels.push(e)},d.setPixels=function(t,e,r,o){var s=this.gl;this.bind(),Array.isArray(e)?(o=r,r=0|e[1],e=0|e[0]):(e=e||0,r=r||0),o=o||0;var l=c(t)?t:t.raw;if(l){this._mipLevels.indexOf(o)<0?(s.texImage2D(s.TEXTURE_2D,0,this.format,this.format,this.type,l),this._mipLevels.push(o)):s.texSubImage2D(s.TEXTURE_2D,o,e,r,this.format,this.type,l)}else{if(!(t.shape&&t.stride&&t.data))throw new Error("gl-texture2d: Unsupported data type");if(t.shape.length<2||e+t.shape[1]>this._shape[1]>>>o||r+t.shape[0]>this._shape[0]>>>o||e<0||r<0)throw new Error("gl-texture2d: Texture dimensions are out of bounds");!function(t,e,r,o,s,l,c,f){var h=f.dtype,d=f.shape.slice();if(d.length<2||d.length>3)throw new Error("gl-texture2d: Invalid ndarray, must be 2d or 3d");var m=0,v=0,g=p(d,f.stride.slice());"float32"===h?m=t.FLOAT:"float64"===h?(m=t.FLOAT,g=!1,h="float32"):"uint8"===h?m=t.UNSIGNED_BYTE:(m=t.UNSIGNED_BYTE,g=!1,h="uint8");if(2===d.length)v=t.LUMINANCE,d=[d[0],d[1],1],f=n(f.data,d,[f.stride[0],f.stride[1],1],f.offset);else{if(3!==d.length)throw new Error("gl-texture2d: Invalid shape for texture");if(1===d[2])v=t.ALPHA;else if(2===d[2])v=t.LUMINANCE_ALPHA;else if(3===d[2])v=t.RGB;else{if(4!==d[2])throw new Error("gl-texture2d: Invalid shape for pixel coords");v=t.RGBA}d[2]}v!==t.LUMINANCE&&v!==t.ALPHA||s!==t.LUMINANCE&&s!==t.ALPHA||(v=s);if(v!==s)throw new Error("gl-texture2d: Incompatible texture format for setPixels");var y=f.size,b=c.indexOf(o)<0;b&&c.push(o);if(m===l&&g)0===f.offset&&f.data.length===y?b?t.texImage2D(t.TEXTURE_2D,o,s,d[0],d[1],0,s,l,f.data):t.texSubImage2D(t.TEXTURE_2D,o,e,r,d[0],d[1],s,l,f.data):b?t.texImage2D(t.TEXTURE_2D,o,s,d[0],d[1],0,s,l,f.data.subarray(f.offset,f.offset+y)):t.texSubImage2D(t.TEXTURE_2D,o,e,r,d[0],d[1],s,l,f.data.subarray(f.offset,f.offset+y));else{var x;x=l===t.FLOAT?a.mallocFloat32(y):a.mallocUint8(y);var _=n(x,d,[d[2],d[2]*d[0],1]);m===t.FLOAT&&l===t.UNSIGNED_BYTE?u(_,f):i.assign(_,f),b?t.texImage2D(t.TEXTURE_2D,o,s,d[0],d[1],0,s,l,x.subarray(0,y)):t.texSubImage2D(t.TEXTURE_2D,o,e,r,d[0],d[1],s,l,x.subarray(0,y)),l===t.FLOAT?a.freeFloat32(x):a.freeUint8(x)}}(s,e,r,o,this.format,this.type,this._mipLevels,t)}}},{ndarray:439,"ndarray-ops":433,"typedarray-pool":534}],234:[function(t,e,r){"use strict";e.exports=function(t,e,r){e?e.bind():t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null);var n=0|t.getParameter(t.MAX_VERTEX_ATTRIBS);if(r){if(r.length>n)throw new Error("gl-vao: Too many vertex attributes");for(var i=0;i0&&(a=1/Math.sqrt(a),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a);return t}},{}],243:[function(t,e,r){e.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}},{}],244:[function(t,e,r){e.exports=function(t,e,r,a){return n[0]=a,n[1]=r,n[2]=e,n[3]=t,i[0]};var n=new Uint8Array(4),i=new Float32Array(n.buffer)},{}],245:[function(t,e,r){var n=t("glsl-tokenizer"),i=t("atob-lite");e.exports=function(t){for(var e=Array.isArray(t)?t:n(t),r=0;r0)continue;r=t.slice(0,1).join("")}return N(r),P+=r.length,(E=E.slice(r.length)).length}}function H(){return/[^a-fA-F0-9]/.test(e)?(N(E.join("")),T=l,k):(E.push(e),r=e,k+1)}function G(){return"."===e?(E.push(e),T=m,r=e,k+1):/[eE]/.test(e)?(E.push(e),T=m,r=e,k+1):"x"===e&&1===E.length&&"0"===E[0]?(T=_,E.push(e),r=e,k+1):/[^\d]/.test(e)?(N(E.join("")),T=l,k):(E.push(e),r=e,k+1)}function Y(){return"f"===e&&(E.push(e),r=e,k+=1),/[eE]/.test(e)?(E.push(e),r=e,k+1):"-"===e&&/[eE]/.test(r)?(E.push(e),r=e,k+1):/[^\d]/.test(e)?(N(E.join("")),T=l,k):(E.push(e),r=e,k+1)}function W(){if(/[^\d\w_]/.test(e)){var t=E.join("");return T=R.indexOf(t)>-1?y:I.indexOf(t)>-1?g:v,N(E.join("")),T=l,k}return E.push(e),r=e,k+1}};var n=t("./lib/literals"),i=t("./lib/operators"),a=t("./lib/builtins"),o=t("./lib/literals-300es"),s=t("./lib/builtins-300es"),l=999,c=9999,u=0,f=1,h=2,d=3,p=4,m=5,v=6,g=7,y=8,b=9,x=10,_=11,w=["block-comment","line-comment","preprocessor","operator","integer","float","ident","builtin","keyword","whitespace","eof","integer"]},{"./lib/builtins":248,"./lib/builtins-300es":247,"./lib/literals":250,"./lib/literals-300es":249,"./lib/operators":251}],247:[function(t,e,r){var n=t("./builtins");n=n.slice().filter(function(t){return!/^(gl\_|texture)/.test(t)}),e.exports=n.concat(["gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","trunc","round","roundEven","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","outerProduct","transpose","determinant","inverse","texture","textureSize","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset"])},{"./builtins":248}],248:[function(t,e,r){e.exports=["abs","acos","all","any","asin","atan","ceil","clamp","cos","cross","dFdx","dFdy","degrees","distance","dot","equal","exp","exp2","faceforward","floor","fract","gl_BackColor","gl_BackLightModelProduct","gl_BackLightProduct","gl_BackMaterial","gl_BackSecondaryColor","gl_ClipPlane","gl_ClipVertex","gl_Color","gl_DepthRange","gl_DepthRangeParameters","gl_EyePlaneQ","gl_EyePlaneR","gl_EyePlaneS","gl_EyePlaneT","gl_Fog","gl_FogCoord","gl_FogFragCoord","gl_FogParameters","gl_FragColor","gl_FragCoord","gl_FragData","gl_FragDepth","gl_FragDepthEXT","gl_FrontColor","gl_FrontFacing","gl_FrontLightModelProduct","gl_FrontLightProduct","gl_FrontMaterial","gl_FrontSecondaryColor","gl_LightModel","gl_LightModelParameters","gl_LightModelProducts","gl_LightProducts","gl_LightSource","gl_LightSourceParameters","gl_MaterialParameters","gl_MaxClipPlanes","gl_MaxCombinedTextureImageUnits","gl_MaxDrawBuffers","gl_MaxFragmentUniformComponents","gl_MaxLights","gl_MaxTextureCoords","gl_MaxTextureImageUnits","gl_MaxTextureUnits","gl_MaxVaryingFloats","gl_MaxVertexAttribs","gl_MaxVertexTextureImageUnits","gl_MaxVertexUniformComponents","gl_ModelViewMatrix","gl_ModelViewMatrixInverse","gl_ModelViewMatrixInverseTranspose","gl_ModelViewMatrixTranspose","gl_ModelViewProjectionMatrix","gl_ModelViewProjectionMatrixInverse","gl_ModelViewProjectionMatrixInverseTranspose","gl_ModelViewProjectionMatrixTranspose","gl_MultiTexCoord0","gl_MultiTexCoord1","gl_MultiTexCoord2","gl_MultiTexCoord3","gl_MultiTexCoord4","gl_MultiTexCoord5","gl_MultiTexCoord6","gl_MultiTexCoord7","gl_Normal","gl_NormalMatrix","gl_NormalScale","gl_ObjectPlaneQ","gl_ObjectPlaneR","gl_ObjectPlaneS","gl_ObjectPlaneT","gl_Point","gl_PointCoord","gl_PointParameters","gl_PointSize","gl_Position","gl_ProjectionMatrix","gl_ProjectionMatrixInverse","gl_ProjectionMatrixInverseTranspose","gl_ProjectionMatrixTranspose","gl_SecondaryColor","gl_TexCoord","gl_TextureEnvColor","gl_TextureMatrix","gl_TextureMatrixInverse","gl_TextureMatrixInverseTranspose","gl_TextureMatrixTranspose","gl_Vertex","greaterThan","greaterThanEqual","inversesqrt","length","lessThan","lessThanEqual","log","log2","matrixCompMult","max","min","mix","mod","normalize","not","notEqual","pow","radians","reflect","refract","sign","sin","smoothstep","sqrt","step","tan","texture2D","texture2DLod","texture2DProj","texture2DProjLod","textureCube","textureCubeLod","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT"]},{}],249:[function(t,e,r){var n=t("./literals");e.exports=n.slice().concat(["layout","centroid","smooth","case","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","uint","uvec2","uvec3","uvec4","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","coherent","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","image1DShadow","image2DShadow","image1DArrayShadow","image2DArrayShadow","imageBuffer","iimageBuffer","uimageBuffer","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray"])},{"./literals":250}],250:[function(t,e,r){e.exports=["precision","highp","mediump","lowp","attribute","const","uniform","varying","break","continue","do","for","while","if","else","in","out","inout","float","int","void","bool","true","false","discard","return","mat2","mat3","mat4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","sampler1D","sampler2D","sampler3D","samplerCube","sampler1DShadow","sampler2DShadow","struct","asm","class","union","enum","typedef","template","this","packed","goto","switch","default","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler2DRect","sampler3DRect","sampler2DRectShadow","sizeof","cast","namespace","using"]},{}],251:[function(t,e,r){e.exports=["<<=",">>=","++","--","<<",">>","<=",">=","==","!=","&&","||","+=","-=","*=","/=","%=","&=","^^","^=","|=","(",")","[","]",".","!","~","*","/","%","+","-","<",">","&","^","|","?",":","=",",",";","{","}"]},{}],252:[function(t,e,r){var n=t("./index");e.exports=function(t,e){var r=n(e),i=[];return i=(i=i.concat(r(t))).concat(r(null))}},{"./index":246}],253:[function(t,e,r){arguments[4][169][0].apply(r,arguments)},{dup:169}],254:[function(t,e,r){"use strict";e.exports=i;var n=3;function i(t,e,r){var i=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;var a=new Int32Array(this.arrayBuffer);t=a[0],e=a[1],r=a[2],this.d=e+2*r;for(var o=0;o=c[h+0]&&n>=c[h+1]?(o[f]=!0,a.push(l[f])):o[f]=!1}}},i.prototype._forEachCell=function(t,e,r,n,i,a,o){for(var s=this._convertToCellCoord(t),l=this._convertToCellCoord(e),c=this._convertToCellCoord(r),u=this._convertToCellCoord(n),f=s;f<=c;f++)for(var h=l;h<=u;h++){var d=this.d*h+f;if(i.call(this,t,e,r,n,d,a,o))return}},i.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},i.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=n+this.cells.length+1+1,r=0,i=0;i>1,u=-7,f=r?i-1:0,h=r?-1:1,d=t[e+f];for(f+=h,a=d&(1<<-u)-1,d>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,n),a-=c}return(d?-1:1)*o*Math.pow(2,a-n)},r.write=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:a-1,p=n?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+d]=255&s,d+=p,s/=256,i-=8);for(o=o<0;t[r+d]=255&o,d+=p,o/=256,c-=8);t[r+d-p]|=128*m}},{}],258:[function(t,e,r){"use strict";e.exports=function(t,e){var r=t.length;if(0===r)throw new Error("Must have at least d+1 points");var i=t[0].length;if(r<=i)throw new Error("Must input at least d+1 points");var o=t.slice(0,i+1),s=n.apply(void 0,o);if(0===s)throw new Error("Input not in general position");for(var l=new Array(i+1),u=0;u<=i;++u)l[u]=u;s<0&&(l[0]=1,l[1]=0);for(var f=new a(l,new Array(i+1),!1),h=f.adjacent,d=new Array(i+2),u=0;u<=i;++u){for(var p=l.slice(),m=0;m<=i;++m)m===u&&(p[m]=-1);var v=p[0];p[0]=p[1],p[1]=v;var g=new a(p,new Array(i+1),!0);h[u]=g,d[u]=g}d[i+1]=f;for(var u=0;u<=i;++u)for(var p=h[u].vertices,y=h[u].adjacent,m=0;m<=i;++m){var b=p[m];if(b<0)y[m]=f;else for(var x=0;x<=i;++x)h[x].vertices.indexOf(b)<0&&(y[m]=h[x])}for(var _=new c(i,o,d),w=!!e,u=i+1;u0&&e.push(","),e.push("tuple[",r,"]");e.push(")}return orient");var i=new Function("test",e.join("")),a=n[t+1];return a||(a=n),i(a)}(t)),this.orient=a}var u=c.prototype;u.handleBoundaryDegeneracy=function(t,e){var r=this.dimension,n=this.vertices.length-1,i=this.tuple,a=this.vertices,o=[t];for(t.lastVisited=-n;o.length>0;){(t=o.pop()).vertices;for(var s=t.adjacent,l=0;l<=r;++l){var c=s[l];if(c.boundary&&!(c.lastVisited<=-n)){for(var u=c.vertices,f=0;f<=r;++f){var h=u[f];i[f]=h<0?e:a[h]}var d=this.orient();if(d>0)return c;c.lastVisited=-n,0===d&&o.push(c)}}}return null},u.walk=function(t,e){var r=this.vertices.length-1,n=this.dimension,i=this.vertices,a=this.tuple,o=e?this.interior.length*Math.random()|0:this.interior.length-1,s=this.interior[o];t:for(;!s.boundary;){for(var l=s.vertices,c=s.adjacent,u=0;u<=n;++u)a[u]=i[l[u]];s.lastVisited=r;for(u=0;u<=n;++u){var f=c[u];if(!(f.lastVisited>=r)){var h=a[u];a[u]=t;var d=this.orient();if(a[u]=h,d<0){s=f;continue t}f.boundary?f.lastVisited=-r:f.lastVisited=r}}return}return s},u.addPeaks=function(t,e){var r=this.vertices.length-1,n=this.dimension,i=this.vertices,l=this.tuple,c=this.interior,u=this.simplices,f=[e];e.lastVisited=r,e.vertices[e.vertices.indexOf(-1)]=r,e.boundary=!1,c.push(e);for(var h=[];f.length>0;){var d=(e=f.pop()).vertices,p=e.adjacent,m=d.indexOf(r);if(!(m<0))for(var v=0;v<=n;++v)if(v!==m){var g=p[v];if(g.boundary&&!(g.lastVisited>=r)){var y=g.vertices;if(g.lastVisited!==-r){for(var b=0,x=0;x<=n;++x)y[x]<0?(b=x,l[x]=t):l[x]=i[y[x]];if(this.orient()>0){y[b]=r,g.boundary=!1,c.push(g),f.push(g),g.lastVisited=r;continue}g.lastVisited=-r}var _=g.adjacent,w=d.slice(),M=p.slice(),k=new a(w,M,!0);u.push(k);var A=_.indexOf(e);if(!(A<0)){_[A]=k,M[m]=g,w[v]=-1,M[v]=e,p[v]=k,k.flip();for(x=0;x<=n;++x){var T=w[x];if(!(T<0||T===r)){for(var E=new Array(n-1),S=0,L=0;L<=n;++L){var C=w[L];C<0||L===x||(E[S++]=C)}h.push(new o(E,k,x))}}}}}}h.sort(s);for(v=0;v+1=0?o[l++]=s[u]:c=1&u;if(c===(1&t)){var f=o[0];o[0]=o[1],o[1]=f}e.push(o)}}return e}},{"robust-orientation":495,"simplicial-complex":506}],259:[function(t,e,r){"use strict";var n=t("binary-search-bounds"),i=0,a=1;function o(t,e,r,n,i){this.mid=t,this.left=e,this.right=r,this.leftPoints=n,this.rightPoints=i,this.count=(e?e.count:0)+(r?r.count:0)+n.length}e.exports=function(t){if(!t||0===t.length)return new b(null);return new b(y(t))};var s=o.prototype;function l(t,e){t.mid=e.mid,t.left=e.left,t.right=e.right,t.leftPoints=e.leftPoints,t.rightPoints=e.rightPoints,t.count=e.count}function c(t,e){var r=y(e);t.mid=r.mid,t.left=r.left,t.right=r.right,t.leftPoints=r.leftPoints,t.rightPoints=r.rightPoints,t.count=r.count}function u(t,e){var r=t.intervals([]);r.push(e),c(t,r)}function f(t,e){var r=t.intervals([]),n=r.indexOf(e);return n<0?i:(r.splice(n,1),c(t,r),a)}function h(t,e,r){for(var n=0;n=0&&t[n][1]>=e;--n){var i=r(t[n]);if(i)return i}}function p(t,e){for(var r=0;r>1],i=[],a=[],s=[];for(r=0;r3*(e+1)?u(this,t):this.left.insert(t):this.left=y([t]);else if(t[0]>this.mid)this.right?4*(this.right.count+1)>3*(e+1)?u(this,t):this.right.insert(t):this.right=y([t]);else{var r=n.ge(this.leftPoints,t,v),i=n.ge(this.rightPoints,t,g);this.leftPoints.splice(r,0,t),this.rightPoints.splice(i,0,t)}},s.remove=function(t){var e=this.count-this.leftPoints;if(t[1]3*(e-1)?f(this,t):2===(c=this.left.remove(t))?(this.left=null,this.count-=1,a):(c===a&&(this.count-=1),c):i}else{if(!(t[0]>this.mid)){if(1===this.count)return this.leftPoints[0]===t?2:i;if(1===this.leftPoints.length&&this.leftPoints[0]===t){if(this.left&&this.right){for(var r=this,o=this.left;o.right;)r=o,o=o.right;if(r===this)o.right=this.right;else{var s=this.left;c=this.right;r.count-=o.count,r.right=o.left,o.left=s,o.right=c}l(this,o),this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length}else this.left?l(this,this.left):l(this,this.right);return a}for(s=n.ge(this.leftPoints,t,v);s3*(e-1)?f(this,t):2===(c=this.right.remove(t))?(this.right=null,this.count-=1,a):(c===a&&(this.count-=1),c):i;var c}},s.queryPoint=function(t,e){if(tthis.mid){var r;if(this.right)if(r=this.right.queryPoint(t,e))return r;return d(this.rightPoints,t,e)}return p(this.leftPoints,e)},s.queryInterval=function(t,e,r){var n;if(tthis.mid&&this.right&&(n=this.right.queryInterval(t,e,r)))return n;return ethis.mid?d(this.rightPoints,t,r):p(this.leftPoints,r)};var x=b.prototype;x.insert=function(t){this.root?this.root.insert(t):this.root=new o(t[0],null,null,[t],[t])},x.remove=function(t){if(this.root){var e=this.root.remove(t);return 2===e&&(this.root=null),e!==i}return!1},x.queryPoint=function(t,e){if(this.root)return this.root.queryPoint(t,e)},x.queryInterval=function(t,e,r){if(t<=e&&this.root)return this.root.queryInterval(t,e,r)},Object.defineProperty(x,"count",{get:function(){return this.root?this.root.count:0}}),Object.defineProperty(x,"intervals",{get:function(){return this.root?this.root.intervals([]):[]}})},{"binary-search-bounds":70}],260:[function(t,e,r){"use strict";e.exports=function(t,e){e=e||new Array(t.length);for(var r=0;r4))}},{}],268:[function(t,e,r){"use strict";var n=t("./sort"),i=t("./range"),a=t("./within");function o(t,e,r,i,a){e=e||s,r=r||l,a=a||Array,this.nodeSize=i||64,this.points=t,this.ids=new a(t.length),this.coords=new a(2*t.length);for(var o=0;o=r&&s<=i&&l>=n&&l<=a&&u.push(t[p]);else{var m=Math.floor((d+h)/2);s=e[2*m],l=e[2*m+1],s>=r&&s<=i&&l>=n&&l<=a&&u.push(t[m]);var v=(f+1)%2;(0===f?r<=s:n<=l)&&(c.push(d),c.push(m-1),c.push(v)),(0===f?i>=s:a>=l)&&(c.push(m+1),c.push(h),c.push(v))}}return u}},{}],270:[function(t,e,r){"use strict";function n(t,e,r,n){i(t,r,n),i(e,2*r,2*n),i(e,2*r+1,2*n+1)}function i(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}e.exports=function t(e,r,i,a,o,s){if(o-a<=i)return;var l=Math.floor((a+o)/2);!function t(e,r,i,a,o,s){for(;o>a;){if(o-a>600){var l=o-a+1,c=i-a+1,u=Math.log(l),f=.5*Math.exp(2*u/3),h=.5*Math.sqrt(u*f*(l-f)/l)*(c-l/2<0?-1:1),d=Math.max(a,Math.floor(i-c*f/l+h)),p=Math.min(o,Math.floor(i+(l-c)*f/l+h));t(e,r,i,d,p,s)}var m=r[2*i+s],v=a,g=o;for(n(e,r,a,i),r[2*o+s]>m&&n(e,r,a,o);vm;)g--}r[2*a+s]===m?n(e,r,a,g):n(e,r,++g,o),g<=i&&(a=g+1),i<=g&&(o=g-1)}}(e,r,l,a,o,s%2);t(e,r,i,a,l-1,s+1);t(e,r,i,l+1,o,s+1)}},{}],271:[function(t,e,r){"use strict";function n(t,e,r,n){var i=t-r,a=e-n;return i*i+a*a}e.exports=function(t,e,r,i,a,o){var s=[0,t.length-1,0],l=[],c=a*a;for(;s.length;){var u=s.pop(),f=s.pop(),h=s.pop();if(f-h<=o)for(var d=h;d<=f;d++)n(e[2*d],e[2*d+1],r,i)<=c&&l.push(t[d]);else{var p=Math.floor((h+f)/2),m=e[2*p],v=e[2*p+1];n(m,v,r,i)<=c&&l.push(t[p]);var g=(u+1)%2;(0===u?r-a<=m:i-a<=v)&&(s.push(h),s.push(p-1),s.push(g)),(0===u?r+a>=m:i+a>=v)&&(s.push(p+1),s.push(f),s.push(g))}}return l}},{}],272:[function(t,e,r){"use strict";function n(t,e){if(!(this instanceof n))return new n(t,e);this.nodeSize=e||64,this.coords=t.slice();var r=Math.floor(t.length/2);this.ids=Array(r);for(var i=0;ii;){if(o-i>600){var l=o-i+1,c=n-i+1,u=Math.log(l),f=.5*Math.exp(2*u/3),h=.5*Math.sqrt(u*f*(l-f)/l)*(c-l/2<0?-1:1),d=Math.max(i,Math.floor(n-c*f/l+h)),p=Math.min(o,Math.floor(n+(l-c)*f/l+h));t(e,r,n,d,p,s)}var m=r[2*n+s],v=i,g=o;for(a(e,r,i,n),r[2*o+s]>m&&a(e,r,i,o);vm;)g--}r[2*i+s]===m?a(e,r,i,g):a(e,r,++g,o),g<=n&&(i=g+1),n<=g&&(o=g-1)}}(e,r,l,i,o,s%2);t(e,r,n,i,l-1,s+1);t(e,r,n,l+1,o,s+1)}(this.ids,this.coords,this.nodeSize,0,this.ids.length-1,0)}function i(t,e,r,n){var i=t-r,a=e-n;return i*i+a*a}function a(t,e,r,n){o(t,r,n),o(e,2*r,2*n),o(e,2*r+1,2*n+1)}function o(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}e.exports=n,n.prototype.range=function(t,e,r,n){for(var i,a,o=this.ids,s=this.coords,l=this.nodeSize,c=[0,o.length-1,0],u=[];c.length;){var f=c.pop(),h=c.pop(),d=c.pop();if(h-d<=l)for(var p=d;p<=h;p++)i=s[2*p],a=s[2*p+1],i>=t&&i<=r&&a>=e&&a<=n&&u.push(o[p]);else{var m=Math.floor((d+h)/2);i=s[2*m],a=s[2*m+1],i>=t&&i<=r&&a>=e&&a<=n&&u.push(o[m]);var v=(f+1)%2;(0===f?t<=i:e<=a)&&(c.push(d),c.push(m-1),c.push(v)),(0===f?r>=i:n>=a)&&(c.push(m+1),c.push(h),c.push(v))}}return u},n.prototype.within=function(t,e,r){for(var n=this.ids,a=this.coords,o=this.nodeSize,s=[0,n.length-1,0],l=[],c=r*r;s.length;){var u=s.pop(),f=s.pop(),h=s.pop();if(f-h<=o)for(var d=h;d<=f;d++)i(a[2*d],a[2*d+1],t,e)<=c&&l.push(n[d]);else{var p=Math.floor((h+f)/2),m=a[2*p],v=a[2*p+1];i(m,v,t,e)<=c&&l.push(n[p]);var g=(u+1)%2;(0===u?t-r<=m:e-r<=v)&&(s.push(h),s.push(p-1),s.push(g)),(0===u?t+r>=m:e+r>=v)&&(s.push(p+1),s.push(f),s.push(g))}}return l}},{}],273:[function(t,e,r){e.exports=function(t,e,r){return t*(1-r)+e*r}},{}],274:[function(t,e,r){"use strict";function n(t,e){var r;if(c(t)){var l,u=t.stops&&"object"==typeof t.stops[0][0],f=u||void 0!==t.property,h=u||!f,d=t.type||e||"exponential";if("exponential"===d)l=o;else if("interval"===d)l=a;else if("categorical"===d)l=i;else{if("identity"!==d)throw new Error('Unknown function type "'+d+'"');l=s}if(u){for(var p={},m=[],v=0;v=t.stops.length||e<=t.stops[n][0]);)n++;return 0===n?t.stops[n][1]:n===t.stops.length?t.stops[n-1][1]:function t(e,r,n,i,a,o){return"function"==typeof a?function(){var s=a.apply(void 0,arguments),l=o.apply(void 0,arguments);return t(e,r,n,i,s,l)}:a.length?function(t,e,r,n,i,a){for(var o=[],s=0;s -1 and 1 => 1\n // In the texture normal, x is 0 if the normal points straight up/down and 1 if it's a round cap\n // y is 1 if the normal points up, and -1 if it points down\n mediump vec2 normal = mod(a_pos, 2.0);\n normal.y = sign(normal.y - 0.5);\n v_normal = normal;\n\n float inset = u_gapwidth + (u_gapwidth > 0.0 ? u_antialiasing : 0.0);\n float outset = u_gapwidth + u_linewidth * (u_gapwidth > 0.0 ? 2.0 : 1.0) + u_antialiasing;\n\n // Scale the extrusion vector down to a normal and then up by the line width\n // of this vertex.\n mediump vec2 dist = outset * a_extrude * scale;\n\n // Calculate the offset when drawing a line that is to the side of the actual line.\n // We do this by creating a vector that points towards the extrude, but rotate\n // it when we're drawing round end points (a_direction = -1 or 1) since their\n // extrude vector points in another direction.\n mediump float u = 0.5 * a_direction;\n mediump float t = 1.0 - abs(u);\n mediump vec2 offset = u_offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\n\n // Remove the texture normal bit of the position before scaling it with the\n // model/view matrix.\n gl_Position = u_matrix * vec4(floor(a_pos * 0.5) + (offset + dist) / u_ratio, 0.0, 1.0);\n\n // position of y on the screen\n float y = gl_Position.y / gl_Position.w;\n\n // how much features are squished in the y direction by the tilt\n float squish_scale = length(a_extrude) / length(u_antialiasingmatrix * a_extrude);\n\n // how much features are squished in all directions by the perspectiveness\n float perspective_scale = 1.0 / (1.0 - min(y * u_extra, 0.9));\n\n v_linewidth = vec2(outset, inset);\n v_gamma_scale = perspective_scale * squish_scale;\n}\n"},linepattern:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform float u_blur;\n\nuniform vec2 u_pattern_size_a;\nuniform vec2 u_pattern_size_b;\nuniform vec2 u_pattern_tl_a;\nuniform vec2 u_pattern_br_a;\nuniform vec2 u_pattern_tl_b;\nuniform vec2 u_pattern_br_b;\nuniform float u_fade;\nuniform float u_opacity;\n\nuniform sampler2D u_image;\n\nvarying vec2 v_normal;\nvarying vec2 v_linewidth;\nvarying float v_linesofar;\nvarying float v_gamma_scale;\n\nvoid main() {\n // Calculate the distance of the pixel from the line in pixels.\n float dist = length(v_normal) * v_linewidth.s;\n\n // Calculate the antialiasing fade factor. This is either when fading in\n // the line in case of an offset line (v_linewidth.t) or when fading out\n // (v_linewidth.s)\n float blur = u_blur * v_gamma_scale;\n float alpha = clamp(min(dist - (v_linewidth.t - blur), v_linewidth.s - dist) / blur, 0.0, 1.0);\n\n float x_a = mod(v_linesofar / u_pattern_size_a.x, 1.0);\n float x_b = mod(v_linesofar / u_pattern_size_b.x, 1.0);\n float y_a = 0.5 + (v_normal.y * v_linewidth.s / u_pattern_size_a.y);\n float y_b = 0.5 + (v_normal.y * v_linewidth.s / u_pattern_size_b.y);\n vec2 pos_a = mix(u_pattern_tl_a, u_pattern_br_a, vec2(x_a, y_a));\n vec2 pos_b = mix(u_pattern_tl_b, u_pattern_br_b, vec2(x_b, y_b));\n\n vec4 color = mix(texture2D(u_image, pos_a), texture2D(u_image, pos_b), u_fade);\n\n alpha *= u_opacity;\n\n gl_FragColor = color * alpha;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\n// floor(127 / 2) == 63.0\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\n// there are also \"special\" normals that have a bigger length (of up to 126 in\n// this case).\n// #define scale 63.0\n#define scale 0.015873016\n\n// We scale the distance before adding it to the buffers so that we can store\n// long distances for long segments. Use this value to unscale the distance.\n#define LINE_DISTANCE_SCALE 2.0\n\nattribute vec2 a_pos;\nattribute vec4 a_data;\n\nuniform mat4 u_matrix;\nuniform mediump float u_ratio;\nuniform mediump float u_linewidth;\nuniform mediump float u_gapwidth;\nuniform mediump float u_antialiasing;\nuniform mediump float u_extra;\nuniform mat2 u_antialiasingmatrix;\nuniform mediump float u_offset;\n\nvarying vec2 v_normal;\nvarying vec2 v_linewidth;\nvarying float v_linesofar;\nvarying float v_gamma_scale;\n\nvoid main() {\n vec2 a_extrude = a_data.xy - 128.0;\n float a_direction = mod(a_data.z, 4.0) - 1.0;\n float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;\n\n // We store the texture normals in the most insignificant bit\n // transform y so that 0 => -1 and 1 => 1\n // In the texture normal, x is 0 if the normal points straight up/down and 1 if it's a round cap\n // y is 1 if the normal points up, and -1 if it points down\n mediump vec2 normal = mod(a_pos, 2.0);\n normal.y = sign(normal.y - 0.5);\n v_normal = normal;\n\n float inset = u_gapwidth + (u_gapwidth > 0.0 ? u_antialiasing : 0.0);\n float outset = u_gapwidth + u_linewidth * (u_gapwidth > 0.0 ? 2.0 : 1.0) + u_antialiasing;\n\n // Scale the extrusion vector down to a normal and then up by the line width\n // of this vertex.\n mediump vec2 dist = outset * a_extrude * scale;\n\n // Calculate the offset when drawing a line that is to the side of the actual line.\n // We do this by creating a vector that points towards the extrude, but rotate\n // it when we're drawing round end points (a_direction = -1 or 1) since their\n // extrude vector points in another direction.\n mediump float u = 0.5 * a_direction;\n mediump float t = 1.0 - abs(u);\n mediump vec2 offset = u_offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\n\n // Remove the texture normal bit of the position before scaling it with the\n // model/view matrix.\n gl_Position = u_matrix * vec4(floor(a_pos * 0.5) + (offset + dist) / u_ratio, 0.0, 1.0);\n v_linesofar = a_linesofar;\n\n // position of y on the screen\n float y = gl_Position.y / gl_Position.w;\n\n // how much features are squished in the y direction by the tilt\n float squish_scale = length(a_extrude) / length(u_antialiasingmatrix * a_extrude);\n\n // how much features are squished in all directions by the perspectiveness\n float perspective_scale = 1.0 / (1.0 - min(y * u_extra, 0.9));\n\n v_linewidth = vec2(outset, inset);\n v_gamma_scale = perspective_scale * squish_scale;\n}\n"},linesdfpattern:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform lowp vec4 u_color;\nuniform lowp float u_opacity;\n\nuniform float u_blur;\nuniform sampler2D u_image;\nuniform float u_sdfgamma;\nuniform float u_mix;\n\nvarying vec2 v_normal;\nvarying vec2 v_linewidth;\nvarying vec2 v_tex_a;\nvarying vec2 v_tex_b;\nvarying float v_gamma_scale;\n\nvoid main() {\n // Calculate the distance of the pixel from the line in pixels.\n float dist = length(v_normal) * v_linewidth.s;\n\n // Calculate the antialiasing fade factor. This is either when fading in\n // the line in case of an offset line (v_linewidth.t) or when fading out\n // (v_linewidth.s)\n float blur = u_blur * v_gamma_scale;\n float alpha = clamp(min(dist - (v_linewidth.t - blur), v_linewidth.s - dist) / blur, 0.0, 1.0);\n\n float sdfdist_a = texture2D(u_image, v_tex_a).a;\n float sdfdist_b = texture2D(u_image, v_tex_b).a;\n float sdfdist = mix(sdfdist_a, sdfdist_b, u_mix);\n alpha *= smoothstep(0.5 - u_sdfgamma, 0.5 + u_sdfgamma, sdfdist);\n\n gl_FragColor = u_color * (alpha * u_opacity);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\n// floor(127 / 2) == 63.0\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\n// there are also \"special\" normals that have a bigger length (of up to 126 in\n// this case).\n// #define scale 63.0\n#define scale 0.015873016\n\n// We scale the distance before adding it to the buffers so that we can store\n// long distances for long segments. Use this value to unscale the distance.\n#define LINE_DISTANCE_SCALE 2.0\n\nattribute vec2 a_pos;\nattribute vec4 a_data;\n\nuniform mat4 u_matrix;\nuniform mediump float u_ratio;\nuniform mediump float u_linewidth;\nuniform mediump float u_gapwidth;\nuniform mediump float u_antialiasing;\nuniform vec2 u_patternscale_a;\nuniform float u_tex_y_a;\nuniform vec2 u_patternscale_b;\nuniform float u_tex_y_b;\nuniform float u_extra;\nuniform mat2 u_antialiasingmatrix;\nuniform mediump float u_offset;\n\nvarying vec2 v_normal;\nvarying vec2 v_linewidth;\nvarying vec2 v_tex_a;\nvarying vec2 v_tex_b;\nvarying float v_gamma_scale;\n\nvoid main() {\n vec2 a_extrude = a_data.xy - 128.0;\n float a_direction = mod(a_data.z, 4.0) - 1.0;\n float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;\n\n // We store the texture normals in the most insignificant bit\n // transform y so that 0 => -1 and 1 => 1\n // In the texture normal, x is 0 if the normal points straight up/down and 1 if it's a round cap\n // y is 1 if the normal points up, and -1 if it points down\n mediump vec2 normal = mod(a_pos, 2.0);\n normal.y = sign(normal.y - 0.5);\n v_normal = normal;\n\n float inset = u_gapwidth + (u_gapwidth > 0.0 ? u_antialiasing : 0.0);\n float outset = u_gapwidth + u_linewidth * (u_gapwidth > 0.0 ? 2.0 : 1.0) + u_antialiasing;\n\n // Scale the extrusion vector down to a normal and then up by the line width\n // of this vertex.\n mediump vec2 dist = outset * a_extrude * scale;\n\n // Calculate the offset when drawing a line that is to the side of the actual line.\n // We do this by creating a vector that points towards the extrude, but rotate\n // it when we're drawing round end points (a_direction = -1 or 1) since their\n // extrude vector points in another direction.\n mediump float u = 0.5 * a_direction;\n mediump float t = 1.0 - abs(u);\n mediump vec2 offset = u_offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\n\n // Remove the texture normal bit of the position before scaling it with the\n // model/view matrix.\n gl_Position = u_matrix * vec4(floor(a_pos * 0.5) + (offset + dist) / u_ratio, 0.0, 1.0);\n\n v_tex_a = vec2(a_linesofar * u_patternscale_a.x, normal.y * u_patternscale_a.y + u_tex_y_a);\n v_tex_b = vec2(a_linesofar * u_patternscale_b.x, normal.y * u_patternscale_b.y + u_tex_y_b);\n\n // position of y on the screen\n float y = gl_Position.y / gl_Position.w;\n\n // how much features are squished in the y direction by the tilt\n float squish_scale = length(a_extrude) / length(u_antialiasingmatrix * a_extrude);\n\n // how much features are squished in all directions by the perspectiveness\n float perspective_scale = 1.0 / (1.0 - min(y * u_extra, 0.9));\n\n v_linewidth = vec2(outset, inset);\n v_gamma_scale = perspective_scale * squish_scale;\n}\n"},outline:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\n#pragma mapbox: define lowp vec4 outline_color\n#pragma mapbox: define lowp float opacity\n\nvarying vec2 v_pos;\n\nvoid main() {\n #pragma mapbox: initialize lowp vec4 outline_color\n #pragma mapbox: initialize lowp float opacity\n\n float dist = length(v_pos - gl_FragCoord.xy);\n float alpha = smoothstep(1.0, 0.0, dist);\n gl_FragColor = outline_color * (alpha * opacity);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nattribute vec2 a_pos;\n\nuniform mat4 u_matrix;\nuniform vec2 u_world;\n\nvarying vec2 v_pos;\n\n#pragma mapbox: define lowp vec4 outline_color\n#pragma mapbox: define lowp float opacity\n\nvoid main() {\n #pragma mapbox: initialize lowp vec4 outline_color\n #pragma mapbox: initialize lowp float opacity\n\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;\n}\n"},outlinepattern:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform float u_opacity;\nuniform vec2 u_pattern_tl_a;\nuniform vec2 u_pattern_br_a;\nuniform vec2 u_pattern_tl_b;\nuniform vec2 u_pattern_br_b;\nuniform float u_mix;\n\nuniform sampler2D u_image;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\nvarying vec2 v_pos;\n\nvoid main() {\n vec2 imagecoord = mod(v_pos_a, 1.0);\n vec2 pos = mix(u_pattern_tl_a, u_pattern_br_a, imagecoord);\n vec4 color1 = texture2D(u_image, pos);\n\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\n vec2 pos2 = mix(u_pattern_tl_b, u_pattern_br_b, imagecoord_b);\n vec4 color2 = texture2D(u_image, pos2);\n\n // find distance to outline for alpha interpolation\n\n float dist = length(v_pos - gl_FragCoord.xy);\n float alpha = smoothstep(1.0, 0.0, dist);\n \n\n gl_FragColor = mix(color1, color2, u_mix) * alpha * u_opacity;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform vec2 u_pattern_size_a;\nuniform vec2 u_pattern_size_b;\nuniform vec2 u_pixel_coord_upper;\nuniform vec2 u_pixel_coord_lower;\nuniform float u_scale_a;\nuniform float u_scale_b;\nuniform float u_tile_units_to_pixels;\n\nattribute vec2 a_pos;\n\nuniform mat4 u_matrix;\nuniform vec2 u_world;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\nvarying vec2 v_pos;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n vec2 scaled_size_a = u_scale_a * u_pattern_size_a;\n vec2 scaled_size_b = u_scale_b * u_pattern_size_b;\n\n // the correct offset needs to be calculated.\n //\n // The offset depends on how many pixels are between the world origin and\n // the edge of the tile:\n // vec2 offset = mod(pixel_coord, size)\n //\n // At high zoom levels there are a ton of pixels between the world origin\n // and the edge of the tile. The glsl spec only guarantees 16 bits of\n // precision for highp floats. We need more than that.\n //\n // The pixel_coord is passed in as two 16 bit values:\n // pixel_coord_upper = floor(pixel_coord / 2^16)\n // pixel_coord_lower = mod(pixel_coord, 2^16)\n //\n // The offset is calculated in a series of steps that should preserve this precision:\n vec2 offset_a = mod(mod(mod(u_pixel_coord_upper, scaled_size_a) * 256.0, scaled_size_a) * 256.0 + u_pixel_coord_lower, scaled_size_a);\n vec2 offset_b = mod(mod(mod(u_pixel_coord_upper, scaled_size_b) * 256.0, scaled_size_b) * 256.0 + u_pixel_coord_lower, scaled_size_b);\n\n v_pos_a = (u_tile_units_to_pixels * a_pos + offset_a) / scaled_size_a;\n v_pos_b = (u_tile_units_to_pixels * a_pos + offset_b) / scaled_size_b;\n\n v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;\n}\n"},pattern:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform float u_opacity;\nuniform vec2 u_pattern_tl_a;\nuniform vec2 u_pattern_br_a;\nuniform vec2 u_pattern_tl_b;\nuniform vec2 u_pattern_br_b;\nuniform float u_mix;\n\nuniform sampler2D u_image;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\n\nvoid main() {\n\n vec2 imagecoord = mod(v_pos_a, 1.0);\n vec2 pos = mix(u_pattern_tl_a, u_pattern_br_a, imagecoord);\n vec4 color1 = texture2D(u_image, pos);\n\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\n vec2 pos2 = mix(u_pattern_tl_b, u_pattern_br_b, imagecoord_b);\n vec4 color2 = texture2D(u_image, pos2);\n\n gl_FragColor = mix(color1, color2, u_mix) * u_opacity;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform mat4 u_matrix;\nuniform vec2 u_pattern_size_a;\nuniform vec2 u_pattern_size_b;\nuniform vec2 u_pixel_coord_upper;\nuniform vec2 u_pixel_coord_lower;\nuniform float u_scale_a;\nuniform float u_scale_b;\nuniform float u_tile_units_to_pixels;\n\nattribute vec2 a_pos;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n vec2 scaled_size_a = u_scale_a * u_pattern_size_a;\n vec2 scaled_size_b = u_scale_b * u_pattern_size_b;\n\n // the correct offset needs to be calculated.\n //\n // The offset depends on how many pixels are between the world origin and\n // the edge of the tile:\n // vec2 offset = mod(pixel_coord, size)\n //\n // At high zoom levels there are a ton of pixels between the world origin\n // and the edge of the tile. The glsl spec only guarantees 16 bits of\n // precision for highp floats. We need more than that.\n //\n // The pixel_coord is passed in as two 16 bit values:\n // pixel_coord_upper = floor(pixel_coord / 2^16)\n // pixel_coord_lower = mod(pixel_coord, 2^16)\n //\n // The offset is calculated in a series of steps that should preserve this precision:\n vec2 offset_a = mod(mod(mod(u_pixel_coord_upper, scaled_size_a) * 256.0, scaled_size_a) * 256.0 + u_pixel_coord_lower, scaled_size_a);\n vec2 offset_b = mod(mod(mod(u_pixel_coord_upper, scaled_size_b) * 256.0, scaled_size_b) * 256.0 + u_pixel_coord_lower, scaled_size_b);\n\n v_pos_a = (u_tile_units_to_pixels * a_pos + offset_a) / scaled_size_a;\n v_pos_b = (u_tile_units_to_pixels * a_pos + offset_b) / scaled_size_b;\n}\n"},raster:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform float u_opacity0;\nuniform float u_opacity1;\nuniform sampler2D u_image0;\nuniform sampler2D u_image1;\nvarying vec2 v_pos0;\nvarying vec2 v_pos1;\n\nuniform float u_brightness_low;\nuniform float u_brightness_high;\n\nuniform float u_saturation_factor;\nuniform float u_contrast_factor;\nuniform vec3 u_spin_weights;\n\nvoid main() {\n\n // read and cross-fade colors from the main and parent tiles\n vec4 color0 = texture2D(u_image0, v_pos0);\n vec4 color1 = texture2D(u_image1, v_pos1);\n vec4 color = color0 * u_opacity0 + color1 * u_opacity1;\n vec3 rgb = color.rgb;\n\n // spin\n rgb = vec3(\n dot(rgb, u_spin_weights.xyz),\n dot(rgb, u_spin_weights.zxy),\n dot(rgb, u_spin_weights.yzx));\n\n // saturation\n float average = (color.r + color.g + color.b) / 3.0;\n rgb += (average - rgb) * u_saturation_factor;\n\n // contrast\n rgb = (rgb - 0.5) * u_contrast_factor + 0.5;\n\n // brightness\n vec3 u_high_vec = vec3(u_brightness_low, u_brightness_low, u_brightness_low);\n vec3 u_low_vec = vec3(u_brightness_high, u_brightness_high, u_brightness_high);\n\n gl_FragColor = vec4(mix(u_high_vec, u_low_vec, rgb), color.a);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform mat4 u_matrix;\nuniform vec2 u_tl_parent;\nuniform float u_scale_parent;\nuniform float u_buffer_scale;\n\nattribute vec2 a_pos;\nattribute vec2 a_texture_pos;\n\nvarying vec2 v_pos0;\nvarying vec2 v_pos1;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n v_pos0 = (((a_texture_pos / 32767.0) - 0.5) / u_buffer_scale ) + 0.5;\n v_pos1 = (v_pos0 * u_scale_parent) + u_tl_parent;\n}\n"},icon:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform sampler2D u_texture;\nuniform sampler2D u_fadetexture;\nuniform lowp float u_opacity;\n\nvarying vec2 v_tex;\nvarying vec2 v_fade_tex;\n\nvoid main() {\n lowp float alpha = texture2D(u_fadetexture, v_fade_tex).a * u_opacity;\n gl_FragColor = texture2D(u_texture, v_tex) * alpha;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nattribute vec2 a_pos;\nattribute vec2 a_offset;\nattribute vec2 a_texture_pos;\nattribute vec4 a_data;\n\n\n// matrix is for the vertex position.\nuniform mat4 u_matrix;\n\nuniform mediump float u_zoom;\nuniform bool u_rotate_with_map;\nuniform vec2 u_extrude_scale;\n\nuniform vec2 u_texsize;\n\nvarying vec2 v_tex;\nvarying vec2 v_fade_tex;\n\nvoid main() {\n vec2 a_tex = a_texture_pos.xy;\n mediump float a_labelminzoom = a_data[0];\n mediump vec2 a_zoom = a_data.pq;\n mediump float a_minzoom = a_zoom[0];\n mediump float a_maxzoom = a_zoom[1];\n\n // u_zoom is the current zoom level adjusted for the change in font size\n mediump float z = 2.0 - step(a_minzoom, u_zoom) - (1.0 - step(a_maxzoom, u_zoom));\n\n vec2 extrude = u_extrude_scale * (a_offset / 64.0);\n if (u_rotate_with_map) {\n gl_Position = u_matrix * vec4(a_pos + extrude, 0, 1);\n gl_Position.z += z * gl_Position.w;\n } else {\n gl_Position = u_matrix * vec4(a_pos, 0, 1) + vec4(extrude, 0, 0);\n }\n\n v_tex = a_tex / u_texsize;\n v_fade_tex = vec2(a_labelminzoom / 255.0, 0.0);\n}\n"},sdf:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform sampler2D u_texture;\nuniform sampler2D u_fadetexture;\nuniform lowp vec4 u_color;\nuniform lowp float u_opacity;\nuniform lowp float u_buffer;\nuniform lowp float u_gamma;\n\nvarying vec2 v_tex;\nvarying vec2 v_fade_tex;\nvarying float v_gamma_scale;\n\nvoid main() {\n lowp float dist = texture2D(u_texture, v_tex).a;\n lowp float fade_alpha = texture2D(u_fadetexture, v_fade_tex).a;\n lowp float gamma = u_gamma * v_gamma_scale;\n lowp float alpha = smoothstep(u_buffer - gamma, u_buffer + gamma, dist) * fade_alpha;\n\n gl_FragColor = u_color * (alpha * u_opacity);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nconst float PI = 3.141592653589793;\n\nattribute vec2 a_pos;\nattribute vec2 a_offset;\nattribute vec2 a_texture_pos;\nattribute vec4 a_data;\n\n\n// matrix is for the vertex position.\nuniform mat4 u_matrix;\n\nuniform mediump float u_zoom;\nuniform bool u_rotate_with_map;\nuniform bool u_pitch_with_map;\nuniform mediump float u_pitch;\nuniform mediump float u_bearing;\nuniform mediump float u_aspect_ratio;\nuniform vec2 u_extrude_scale;\n\nuniform vec2 u_texsize;\n\nvarying vec2 v_tex;\nvarying vec2 v_fade_tex;\nvarying float v_gamma_scale;\n\nvoid main() {\n vec2 a_tex = a_texture_pos.xy;\n mediump float a_labelminzoom = a_data[0];\n mediump vec2 a_zoom = a_data.pq;\n mediump float a_minzoom = a_zoom[0];\n mediump float a_maxzoom = a_zoom[1];\n\n // u_zoom is the current zoom level adjusted for the change in font size\n mediump float z = 2.0 - step(a_minzoom, u_zoom) - (1.0 - step(a_maxzoom, u_zoom));\n\n // pitch-alignment: map\n // rotation-alignment: map | viewport\n if (u_pitch_with_map) {\n lowp float angle = u_rotate_with_map ? (a_data[1] / 256.0 * 2.0 * PI) : u_bearing;\n lowp float asin = sin(angle);\n lowp float acos = cos(angle);\n mat2 RotationMatrix = mat2(acos, asin, -1.0 * asin, acos);\n vec2 offset = RotationMatrix * a_offset;\n vec2 extrude = u_extrude_scale * (offset / 64.0);\n gl_Position = u_matrix * vec4(a_pos + extrude, 0, 1);\n gl_Position.z += z * gl_Position.w;\n // pitch-alignment: viewport\n // rotation-alignment: map\n } else if (u_rotate_with_map) {\n // foreshortening factor to apply on pitched maps\n // as a label goes from horizontal <=> vertical in angle\n // it goes from 0% foreshortening to up to around 70% foreshortening\n lowp float pitchfactor = 1.0 - cos(u_pitch * sin(u_pitch * 0.75));\n\n lowp float lineangle = a_data[1] / 256.0 * 2.0 * PI;\n\n // use the lineangle to position points a,b along the line\n // project the points and calculate the label angle in projected space\n // this calculation allows labels to be rendered unskewed on pitched maps\n vec4 a = u_matrix * vec4(a_pos, 0, 1);\n vec4 b = u_matrix * vec4(a_pos + vec2(cos(lineangle),sin(lineangle)), 0, 1);\n lowp float angle = atan((b[1]/b[3] - a[1]/a[3])/u_aspect_ratio, b[0]/b[3] - a[0]/a[3]);\n lowp float asin = sin(angle);\n lowp float acos = cos(angle);\n mat2 RotationMatrix = mat2(acos, -1.0 * asin, asin, acos);\n\n vec2 offset = RotationMatrix * (vec2((1.0-pitchfactor)+(pitchfactor*cos(angle*2.0)), 1.0) * a_offset);\n vec2 extrude = u_extrude_scale * (offset / 64.0);\n gl_Position = u_matrix * vec4(a_pos, 0, 1) + vec4(extrude, 0, 0);\n gl_Position.z += z * gl_Position.w;\n // pitch-alignment: viewport\n // rotation-alignment: viewport\n } else {\n vec2 extrude = u_extrude_scale * (a_offset / 64.0);\n gl_Position = u_matrix * vec4(a_pos, 0, 1) + vec4(extrude, 0, 0);\n }\n\n v_gamma_scale = (gl_Position.w - 0.5);\n\n v_tex = a_tex / u_texsize;\n v_fade_tex = vec2(a_labelminzoom / 255.0, 0.0);\n}\n"},collisionbox:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform float u_zoom;\nuniform float u_maxzoom;\n\nvarying float v_max_zoom;\nvarying float v_placement_zoom;\n\nvoid main() {\n\n float alpha = 0.5;\n\n gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0) * alpha;\n\n if (v_placement_zoom > u_zoom) {\n gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0) * alpha;\n }\n\n if (u_zoom >= v_max_zoom) {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0) * alpha * 0.25;\n }\n\n if (v_placement_zoom >= u_maxzoom) {\n gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0) * alpha * 0.2;\n }\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nattribute vec2 a_pos;\nattribute vec2 a_extrude;\nattribute vec2 a_data;\n\nuniform mat4 u_matrix;\nuniform float u_scale;\n\nvarying float v_max_zoom;\nvarying float v_placement_zoom;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos + a_extrude / u_scale, 0.0, 1.0);\n\n v_max_zoom = a_data.x;\n v_placement_zoom = a_data.y;\n}\n"}},e.exports.util="float evaluate_zoom_function_1(const vec4 values, const float t) {\n if (t < 1.0) {\n return mix(values[0], values[1], t);\n } else if (t < 2.0) {\n return mix(values[1], values[2], t - 1.0);\n } else {\n return mix(values[2], values[3], t - 2.0);\n }\n}\nvec4 evaluate_zoom_function_4(const vec4 value0, const vec4 value1, const vec4 value2, const vec4 value3, const float t) {\n if (t < 1.0) {\n return mix(value0, value1, t);\n } else if (t < 2.0) {\n return mix(value1, value2, t - 1.0);\n } else {\n return mix(value2, value3, t - 2.0);\n }\n}\n"},{path:449}],276:[function(t,e,r){"use strict";var n=t("util").format;e.exports=function(t,e){this.message=(t?t+": ":"")+n.apply(n,Array.prototype.slice.call(arguments,2)),null!==e&&void 0!==e&&e.__line__&&(this.line=e.__line__)}},{util:543}],277:[function(t,e,r){"use strict";e.exports=function(t){for(var e=1;e7)return[new n(u,l,"constants have been deprecated as of v8")];if(!(l in h.constants))return[new n(u,l,'constant "%s" not found',l)];e=a({},e,{value:h.constants[l]})}return c.function&&"object"===i(l)?r(e):c.type&&s[c.type]?s[c.type](e):o(a({},e,{valueSpec:c.type?f[c.type]:c}))}},{"../error/validation_error":276,"../util/extend":277,"../util/get_type":278,"./validate_array":281,"./validate_boolean":282,"./validate_color":283,"./validate_constants":284,"./validate_enum":285,"./validate_filter":286,"./validate_function":287,"./validate_layer":289,"./validate_number":291,"./validate_object":292,"./validate_source":294,"./validate_string":295}],281:[function(t,e,r){"use strict";var n=t("../util/get_type"),i=t("./validate"),a=t("../error/validation_error");e.exports=function(t){var e=t.value,r=t.valueSpec,o=t.style,s=t.styleSpec,l=t.key,c=t.arrayElementValidator||i;if("array"!==n(e))return[new a(l,e,"array expected, %s found",n(e))];if(r.length&&e.length!==r.length)return[new a(l,e,"array length %d expected, length %d found",r.length,e.length)];if(r["min-length"]&&e.length7)return r?[new n(e,r,"constants have been deprecated as of v8")]:[];var a=i(r);if("object"!==a)return[new n(e,r,"object expected, %s found",a)];var o=[];for(var s in r)"@"!==s[0]&&o.push(new n(e+"."+s,r[s],'constants must start with "@"'));return o}},{"../error/validation_error":276,"../util/get_type":278}],285:[function(t,e,r){"use strict";var n=t("../error/validation_error"),i=t("../util/unbundle_jsonlint");e.exports=function(t){var e=t.key,r=t.value,a=t.valueSpec,o=[];return-1===a.values.indexOf(i(r))&&o.push(new n(e,r,"expected one of [%s], %s found",a.values.join(", "),r)),o}},{"../error/validation_error":276,"../util/unbundle_jsonlint":279}],286:[function(t,e,r){"use strict";var n=t("../error/validation_error"),i=t("./validate_enum"),a=t("../util/get_type"),o=t("../util/unbundle_jsonlint");e.exports=function t(e){var r,s=e.value,l=e.key,c=e.styleSpec,u=[];if("array"!==a(s))return[new n(l,s,"array expected, %s found",a(s))];if(s.length<1)return[new n(l,s,"filter array must have at least 1 element")];switch(u=u.concat(i({key:l+"[0]",value:s[0],valueSpec:c.filter_operator,style:e.style,styleSpec:e.styleSpec})),o(s[0])){case"<":case"<=":case">":case">=":s.length>=2&&"$type"==s[1]&&u.push(new n(l,s,'"$type" cannot be use with operator "%s"',s[0]));case"==":case"!=":3!=s.length&&u.push(new n(l,s,'filter array for operator "%s" must have 3 elements',s[0]));case"in":case"!in":s.length>=2&&("string"!==(r=a(s[1]))?u.push(new n(l+"[1]",s[1],"string expected, %s found",r)):"@"===s[1][0]&&u.push(new n(l+"[1]",s[1],"filter key cannot be a constant")));for(var f=2;f=8&&(c&&!t.valueSpec["property-function"]?f.push(new n(t.key,t.value,"property functions not supported")):u&&!t.valueSpec["zoom-function"]&&f.push(new n(t.key,t.value,"zoom functions not supported"))),f;function h(t){var s=[],c=t.value,f=t.key;if("array"!==i(c))return[new n(f,c,"array expected, %s found",i(c))];if(2!==c.length)return[new n(f,c,"array length %d expected, length %d found",2,c.length)];var h=i(c[0]);if(e||(e=h),h!==e)return[new n(f,c,"%s stop key type must match previous stop key type %s",h,e)];if("object"===h){if(void 0===c[0].zoom)return[new n(f,c,"object stop key must have zoom")];if(void 0===c[0].value)return[new n(f,c,"object stop key must have value")];s=s.concat(o({key:f+"[0]",value:c[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:l,value:d}}))}else s=s.concat((u?l:d)({key:f+"[0]",value:c[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec}));return s=s.concat(a({key:f+"[1]",value:c[1],valueSpec:r,style:t.style,styleSpec:t.styleSpec})),"number"===i(c[0])&&("piecewise-constant"===r.function&&c[0]%1!=0&&s.push(new n(f+"[0]",c[0],"zoom level for piecewise-constant functions must be an integer")),0!==t.arrayIndex&&c[0]a.maximum?[new i(e,r,"%s is greater than the maximum value %s",r,a.maximum)]:[]}},{"../error/validation_error":276,"../util/get_type":278}],292:[function(t,e,r){"use strict";var n=t("../error/validation_error"),i=t("../util/get_type"),a=t("./validate");e.exports=function(t){var e=t.key,r=t.value,o=t.valueSpec,s=t.objectElementValidators||{},l=t.style,c=t.styleSpec,u=[],f=i(r);if("object"!==f)return[new n(e,r,"object expected, %s found",f)];for(var h in r){var d=h.split(".")[0],p=o&&(o[d]||o["*"]),m=s[d]||s["*"];p||m?u=u.concat((m||a)({key:(e?e+".":e)+h,value:r[h],valueSpec:p,style:l,styleSpec:c,object:r,objectKey:h})):""!==e&&1!==e.split(".").length&&u.push(new n(e,r[h],'unknown property "%s"',h))}for(d in o)o[d].required&&void 0===o[d].default&&void 0===r[d]&&u.push(new n(e,r,'missing required property "%s"',d));return u}},{"../error/validation_error":276,"../util/get_type":278,"./validate":280}],293:[function(t,e,r){"use strict";var n=t("./validate"),i=t("../error/validation_error");e.exports=function(t){var e=t.key,r=t.style,a=t.styleSpec,o=t.value,s=t.objectKey,l=a["paint_"+t.layerType],c=s.match(/^(.*)-transition$/);return c&&l[c[1]]&&l[c[1]].transition?n({key:e,value:o,valueSpec:a.transition,style:r,styleSpec:a}):t.valueSpec||l[s]?n({key:t.key,value:o,valueSpec:t.valueSpec||l[s],style:r,styleSpec:a}):[new i(e,o,'unknown property "%s"',s)]}},{"../error/validation_error":276,"./validate":280}],294:[function(t,e,r){"use strict";var n=t("../error/validation_error"),i=t("../util/unbundle_jsonlint"),a=t("./validate_object"),o=t("./validate_enum");e.exports=function(t){var e=t.value,r=t.key,s=t.styleSpec,l=t.style;if(!e.type)return[new n(r,e,'"type" is required')];switch(i(e.type)){case"vector":case"raster":var c=[];if(c=c.concat(a({key:r,value:e,valueSpec:s.source_tile,style:t.style,styleSpec:s})),"url"in e)for(var u in e)["type","url","tileSize"].indexOf(u)<0&&c.push(new n(r+"."+u,e[u],'a source with a "url" property may not include a "%s" property',u));return c;case"geojson":return a({key:r,value:e,valueSpec:s.source_geojson,style:l,styleSpec:s});case"video":return a({key:r,value:e,valueSpec:s.source_video,style:l,styleSpec:s});case"image":return a({key:r,value:e,valueSpec:s.source_image,style:l,styleSpec:s});default:return o({key:r+".type",value:e.type,valueSpec:{values:["vector","raster","geojson","video","image"]},style:l,styleSpec:s})}}},{"../error/validation_error":276,"../util/unbundle_jsonlint":279,"./validate_enum":285,"./validate_object":292}],295:[function(t,e,r){"use strict";var n=t("../util/get_type"),i=t("../error/validation_error");e.exports=function(t){var e=t.value,r=t.key,a=n(e);return"string"!==a?[new i(r,e,"string expected, %s found",a)]:[]}},{"../error/validation_error":276,"../util/get_type":278}],296:[function(t,e,r){"use strict";var n=t("./validate/validate_constants"),i=t("./validate/validate"),a=t("../reference/latest.min"),o=t("./validate/validate_glyphs_url");function s(t,e){e=e||a;var r=[];return r=r.concat(i({key:"",value:t,valueSpec:e.$root,styleSpec:e,style:t,objectElementValidators:{glyphs:o}})),e.$version>7&&t.constants&&(r=r.concat(n({key:"constants",value:t.constants,style:t,styleSpec:e}))),l(r)}function l(t){return[].concat(t).sort(function(t,e){return t.line-e.line})}function c(t){return function(){return l(t.apply(this,arguments))}}s.source=c(t("./validate/validate_source")),s.layer=c(t("./validate/validate_layer")),s.filter=c(t("./validate/validate_filter")),s.paintProperty=c(t("./validate/validate_paint_property")),s.layoutProperty=c(t("./validate/validate_layout_property")),e.exports=s},{"../reference/latest.min":297,"./validate/validate":280,"./validate/validate_constants":284,"./validate/validate_filter":286,"./validate/validate_glyphs_url":288,"./validate/validate_layer":289,"./validate/validate_layout_property":290,"./validate/validate_paint_property":293,"./validate/validate_source":294}],297:[function(t,e,r){e.exports=t("./v8.min.json")},{"./v8.min.json":298}],298:[function(t,e,r){e.exports={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},sources:{required:!0,type:"sources"},sprite:{type:"string"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_tile","source_geojson","source_video","source_image"],source_tile:{type:{required:!0,type:"enum",values:["vector","raster"]},url:{type:"string"},tiles:{type:"array",value:"string"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:["geojson"]},data:{type:"*"},maxzoom:{type:"number",default:14},buffer:{type:"number",default:64},tolerance:{type:"number",default:3},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:400},clusterMaxZoom:{type:"number"}},source_video:{type:{required:!0,type:"enum",values:["video"]},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:["image"]},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:["fill","line","symbol","circle","raster","background"]},metadata:{type:"*"},ref:{type:"string"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:22},maxzoom:{type:"number",minimum:0,maximum:22},interactive:{type:"boolean",default:!1},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"},"paint.*":{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_symbol","layout_raster","layout_background"],layout_background:{visibility:{type:"enum",function:"piecewise-constant","zoom-function":!0,values:["visible","none"],default:"visible"}},layout_fill:{visibility:{type:"enum",function:"piecewise-constant","zoom-function":!0,values:["visible","none"],default:"visible"}},layout_circle:{visibility:{type:"enum",function:"piecewise-constant","zoom-function":!0,values:["visible","none"],default:"visible"}},layout_line:{"line-cap":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["butt","round","square"],default:"butt"},"line-join":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["bevel","round","miter"],default:"miter"},"line-miter-limit":{type:"number",default:2,function:"interpolated","zoom-function":!0,"property-function":!0,requires:[{"line-join":"miter"}]},"line-round-limit":{type:"number",default:1.05,function:"interpolated","zoom-function":!0,"property-function":!0,requires:[{"line-join":"round"}]},visibility:{type:"enum",function:"piecewise-constant","zoom-function":!0,values:["visible","none"],default:"visible"}},layout_symbol:{"symbol-placement":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["point","line"],default:"point"},"symbol-spacing":{type:"number",default:250,minimum:1,function:"interpolated","zoom-function":!0,"property-function":!0,units:"pixels",requires:[{"symbol-placement":"line"}]},"symbol-avoid-edges":{type:"boolean",function:"piecewise-constant","zoom-function":!0,"property-function":!0,default:!1},"icon-allow-overlap":{type:"boolean",function:"piecewise-constant","zoom-function":!0,"property-function":!0,default:!1,requires:["icon-image"]},"icon-ignore-placement":{type:"boolean",function:"piecewise-constant","zoom-function":!0,"property-function":!0,default:!1,requires:["icon-image"]},"icon-optional":{type:"boolean",function:"piecewise-constant","zoom-function":!0,"property-function":!0,default:!1,requires:["icon-image","text-field"]},"icon-rotation-alignment":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["map","viewport"],default:"viewport",requires:["icon-image"]},"icon-size":{type:"number",default:1,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,requires:["icon-image"]},"icon-text-fit":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!1,values:["none","both","width","height"],default:"none",requires:["icon-image","text-field"]},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",function:"interpolated","zoom-function":!0,"property-function":!0,requires:["icon-image","icon-text-fit","text-field"]},"icon-image":{type:"string",function:"piecewise-constant","zoom-function":!0,"property-function":!0,tokens:!0},"icon-rotate":{type:"number",default:0,period:360,function:"interpolated","zoom-function":!0,"property-function":!0,units:"degrees",requires:["icon-image"]},"icon-padding":{type:"number",default:2,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,units:"pixels",requires:["icon-image"]},"icon-keep-upright":{type:"boolean",function:"piecewise-constant","zoom-function":!0,"property-function":!0,default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":"line"}]},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":!0,"property-function":!0,requires:["icon-image"]},"text-pitch-alignment":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["map","viewport"],requires:["text-field"]},"text-rotation-alignment":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["map","viewport"],default:"viewport",requires:["text-field"]},"text-field":{type:"string",function:"piecewise-constant","zoom-function":!0,"property-function":!0,default:"",tokens:!0},"text-font":{type:"array",value:"string",function:"piecewise-constant","zoom-function":!0,"property-function":!0,default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"]},"text-size":{type:"number",default:16,minimum:0,units:"pixels",function:"interpolated","zoom-function":!0,"property-function":!0,requires:["text-field"]},"text-max-width":{type:"number",default:10,minimum:0,units:"em",function:"interpolated","zoom-function":!0,"property-function":!0,requires:["text-field"]},"text-line-height":{type:"number",default:1.2,units:"em",function:"interpolated","zoom-function":!0,"property-function":!0,requires:["text-field"]},"text-letter-spacing":{type:"number",default:0,units:"em",function:"interpolated","zoom-function":!0,"property-function":!0,requires:["text-field"]},"text-justify":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["left","center","right"],default:"center",requires:["text-field"]},"text-anchor":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["center","left","right","top","bottom","top-left","top-right","bottom-left","bottom-right"],default:"center",requires:["text-field"]},"text-max-angle":{type:"number",default:45,units:"degrees",function:"interpolated","zoom-function":!0,"property-function":!0,requires:["text-field",{"symbol-placement":"line"}]},"text-rotate":{type:"number",default:0,period:360,units:"degrees",function:"interpolated","zoom-function":!0,"property-function":!0,requires:["text-field"]},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",function:"interpolated","zoom-function":!0,"property-function":!0,requires:["text-field"]},"text-keep-upright":{type:"boolean",function:"piecewise-constant","zoom-function":!0,"property-function":!0,default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":"line"}]},"text-transform":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["none","uppercase","lowercase"],default:"none",requires:["text-field"]},"text-offset":{type:"array",value:"number",units:"ems",function:"interpolated","zoom-function":!0,"property-function":!0,length:2,default:[0,0],requires:["text-field"]},"text-allow-overlap":{type:"boolean",function:"piecewise-constant","zoom-function":!0,"property-function":!0,default:!1,requires:["text-field"]},"text-ignore-placement":{type:"boolean",function:"piecewise-constant","zoom-function":!0,"property-function":!0,default:!1,requires:["text-field"]},"text-optional":{type:"boolean",function:"piecewise-constant","zoom-function":!0,"property-function":!0,default:!1,requires:["text-field","icon-image"]},visibility:{type:"enum",function:"piecewise-constant","zoom-function":!0,values:["visible","none"],default:"visible"}},layout_raster:{visibility:{type:"enum",function:"piecewise-constant","zoom-function":!0,values:["visible","none"],default:"visible"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:["==","!=",">",">=","<","<=","in","!in","all","any","none","has","!has"]},geometry_type:{type:"enum",values:["Point","LineString","Polygon"]},color_operation:{type:"enum",values:["lighten","saturate","spin","fade","mix"]},function:{stops:{type:"array",required:!0,value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:["exponential","interval","categorical"],default:"exponential"}},function_stop:{type:"array",minimum:0,maximum:22,value:["number","color"],length:2},paint:["paint_fill","paint_line","paint_circle","paint_symbol","paint_raster","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",function:"piecewise-constant","zoom-function":!0,"property-function":!0,default:!0},"fill-opacity":{type:"number",function:"interpolated","zoom-function":!0,"property-function":!0,default:1,minimum:0,maximum:1,transition:!0},"fill-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:[{"!":"fill-pattern"}]},"fill-outline-color":{type:"color",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}]},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels"},"fill-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["map","viewport"],default:"map",requires:["fill-translate"]},"fill-pattern":{type:"string",function:"piecewise-constant","zoom-function":!0,"property-function":!0,transition:!0}},paint_line:{"line-opacity":{type:"number",function:"interpolated","zoom-function":!0,"property-function":!0,default:1,minimum:0,maximum:1,transition:!0},"line-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:[{"!":"line-pattern"}]},"line-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels"},"line-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["map","viewport"],default:"map",requires:["line-translate"]},"line-width":{type:"number",default:1,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels"},"line-gap-width":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels"},"line-offset":{type:"number",default:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels"},"line-blur":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels"},"line-dasharray":{type:"array",value:"number",function:"piecewise-constant","zoom-function":!0,"property-function":!0,minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}]},"line-pattern":{type:"string",function:"piecewise-constant","zoom-function":!0,"property-function":!0,transition:!0}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels"},"circle-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0},"circle-blur":{type:"number",default:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels"},"circle-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["map","viewport"],default:"map",requires:["circle-translate"]},"circle-pitch-scale":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["map","viewport"],default:"map"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:["icon-image"]},"icon-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:["icon-image"]},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:["icon-image"]},"icon-halo-width":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels",requires:["icon-image"]},"icon-halo-blur":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels",requires:["icon-image"]},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels",requires:["icon-image"]},"icon-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["map","viewport"],default:"map",requires:["icon-image","icon-translate"]},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:["text-field"]},"text-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:["text-field"]},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:["text-field"]},"text-halo-width":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels",requires:["text-field"]},"text-halo-blur":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels",requires:["text-field"]},"text-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels",requires:["text-field"]},"text-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:["map","viewport"],default:"map",requires:["text-field","text-translate"]}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":!0,transition:!0},"raster-hue-rotate":{type:"number",default:0,period:360,function:"interpolated","zoom-function":!0,transition:!0,units:"degrees"},"raster-brightness-min":{type:"number",function:"interpolated","zoom-function":!0,default:0,minimum:0,maximum:1,transition:!0},"raster-brightness-max":{type:"number",function:"interpolated","zoom-function":!0,default:1,minimum:0,maximum:1,transition:!0},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,function:"interpolated","zoom-function":!0,transition:!0},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,function:"interpolated","zoom-function":!0,transition:!0},"raster-fade-duration":{type:"number",default:300,minimum:0,function:"interpolated","zoom-function":!0,transition:!0,units:"milliseconds"}},paint_background:{"background-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":!0,transition:!0,requires:[{"!":"background-pattern"}]},"background-pattern":{type:"string",function:"piecewise-constant","zoom-function":!0,transition:!0},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":!0,transition:!0}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}}}},{}],299:[function(t,e,r){"use strict";function n(t){return!!("undefined"!=typeof window&&"undefined"!=typeof document&&Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray&&Function.prototype&&Function.prototype.bind&&Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions&&"JSON"in window&&"parse"in JSON&&"stringify"in JSON&&"Worker"in window&&"Uint8ClampedArray"in window&&function(t){void 0===i[t]&&(i[t]=function(t){var e=document.createElement("canvas"),r=Object.create(n.webGLContextAttributes);return r.failIfMajorPerformanceCaveat=t,e.probablySupportsContext?e.probablySupportsContext("webgl",r)||e.probablySupportsContext("experimental-webgl",r):e.supportsContext?e.supportsContext("webgl",r)||e.supportsContext("experimental-webgl",r):e.getContext("webgl",r)||e.getContext("experimental-webgl",r)}(t));return i[t]}(t&&t.failIfMajorPerformanceCaveat))}void 0!==e&&e.exports?e.exports=n:window&&(window.mapboxgl=window.mapboxgl||{},window.mapboxgl.supported=n);var i={};n.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0}},{}],300:[function(t,e,r){"use strict";var n=t("../util/util");function i(t){var e=t.layoutVertexArrayType;this.layoutVertexArray=new e;var r=t.elementArrayType;r&&(this.elementArray=new r);var i=t.elementArrayType2;i&&(this.elementArray2=new i),this.paintVertexArrays=n.mapObject(t.paintVertexArrayTypes,function(t){return new t})}e.exports=i,i.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,i.prototype.hasCapacityFor=function(t){return this.layoutVertexArray.length+t<=i.MAX_VERTEX_ARRAY_LENGTH},i.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},i.prototype.trim=function(){for(var t in this.layoutVertexArray.trim(),this.elementArray&&this.elementArray.trim(),this.elementArray2&&this.elementArray2.trim(),this.paintVertexArrays)this.paintVertexArrays[t].trim()},i.prototype.serialize=function(){return{layoutVertexArray:this.layoutVertexArray.serialize(),elementArray:this.elementArray&&this.elementArray.serialize(),elementArray2:this.elementArray2&&this.elementArray2.serialize(),paintVertexArrays:n.mapObject(this.paintVertexArrays,function(t){return t.serialize()})}},i.prototype.getTransferables=function(t){for(var e in t.push(this.layoutVertexArray.arrayBuffer),this.elementArray&&t.push(this.elementArray.arrayBuffer),this.elementArray2&&t.push(this.elementArray2.arrayBuffer),this.paintVertexArrays)t.push(this.paintVertexArrays[e].arrayBuffer)}},{"../util/util":414}],301:[function(t,e,r){"use strict";var n=t("feature-filter"),i=t("./array_group"),a=t("./buffer_group"),o=t("../util/util"),s=t("../util/struct_array"),l=t("assert");function c(t){if(this.zoom=t.zoom,this.overscaling=t.overscaling,this.layer=t.layer,this.childLayers=t.childLayers,this.type=this.layer.type,this.features=[],this.id=this.layer.id,this.index=t.index,this.sourceLayer=this.layer.sourceLayer,this.sourceLayerIndex=t.sourceLayerIndex,this.minZoom=this.layer.minzoom,this.maxZoom=this.layer.maxzoom,this.paintAttributes=function(t){var e={};for(var r in t.programInterfaces){for(var n=e[r]={},i=0;i1?p.name+x:p.name]=m[x]*v}}},c.VertexArrayType=function(t){return new s({members:t,alignment:4})},c.ElementArrayType=function(t){return new s({members:[{type:"Uint16",name:"vertices",components:t||3}]})}},{"../util/struct_array":412,"../util/util":414,"./array_group":300,"./bucket/circle_bucket":302,"./bucket/fill_bucket":303,"./bucket/line_bucket":304,"./bucket/symbol_bucket":305,"./buffer_group":307,assert:51,"feature-filter":141}],302:[function(t,e,r){"use strict";var n=t("../bucket"),i=t("../../util/util"),a=t("../load_geometry"),o=n.EXTENT;function s(){n.apply(this,arguments)}e.exports=s,s.prototype=i.inherit(n,{}),s.prototype.addCircleVertex=function(t,e,r,n,i){return t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2)},s.prototype.programInterfaces={circle:{layoutVertexArrayType:new n.VertexArrayType([{name:"a_pos",components:2,type:"Int16"}]),elementArrayType:new n.ElementArrayType,paintAttributes:[{name:"a_color",components:4,type:"Uint8",getValue:function(t,e,r){return t.getPaintValue("circle-color",e,r)},multiplier:255,paintProperty:"circle-color"},{name:"a_radius",components:1,type:"Uint16",isLayerConstant:!1,getValue:function(t,e,r){return[t.getPaintValue("circle-radius",e,r)]},multiplier:10,paintProperty:"circle-radius"},{name:"a_blur",components:1,type:"Uint16",isLayerConstant:!1,getValue:function(t,e,r){return[t.getPaintValue("circle-blur",e,r)]},multiplier:10,paintProperty:"circle-blur"},{name:"a_opacity",components:1,type:"Uint16",isLayerConstant:!1,getValue:function(t,e,r){return[t.getPaintValue("circle-opacity",e,r)]},multiplier:255,paintProperty:"circle-opacity"}]}},s.prototype.addFeature=function(t){for(var e={zoom:this.zoom},r=a(t),n=this.prepareArrayGroup("circle",0),i=n.layoutVertexArray.length,s=0;s=o||u<0||u>=o)){var f=this.prepareArrayGroup("circle",4),h=f.layoutVertexArray,d=this.addCircleVertex(h,c,u,-1,-1);this.addCircleVertex(h,c,u,1,-1),this.addCircleVertex(h,c,u,1,1),this.addCircleVertex(h,c,u,-1,1),f.elementArray.emplaceBack(d,d+1,d+2),f.elementArray.emplaceBack(d,d+3,d+2)}}this.populatePaintArrays("circle",e,t.properties,n,i)}},{"../../util/util":414,"../bucket":301,"../load_geometry":309}],303:[function(t,e,r){"use strict";var n=t("../bucket"),i=t("../../util/util"),a=t("../load_geometry"),o=t("earcut"),s=t("../../util/classify_rings");function l(){n.apply(this,arguments)}e.exports=l,l.prototype=i.inherit(n,{}),l.prototype.programInterfaces={fill:{layoutVertexArrayType:new n.VertexArrayType([{name:"a_pos",components:2,type:"Int16"}]),elementArrayType:new n.ElementArrayType(1),elementArrayType2:new n.ElementArrayType(2),paintAttributes:[{name:"a_color",components:4,type:"Uint8",getValue:function(t,e,r){return t.getPaintValue("fill-color",e,r)},multiplier:255,paintProperty:"fill-color"},{name:"a_outline_color",components:4,type:"Uint8",getValue:function(t,e,r){return t.getPaintValue("fill-outline-color",e,r)},multiplier:255,paintProperty:"fill-outline-color"},{name:"a_opacity",components:1,type:"Uint8",getValue:function(t,e,r){return[t.getPaintValue("fill-opacity",e,r)]},multiplier:255,paintProperty:"fill-opacity"}]}},l.prototype.addFeature=function(t){for(var e=a(t),r=s(e,500),n=this.prepareArrayGroup("fill",0),i=n.layoutVertexArray.length,o=0;o0&&a.push(i.length/2);for(var u=0;u=1&&n.elementArray2.emplaceBack(h-1,h),i.push(f.x),i.push(f.y)}}for(var d=o(i,a),p=0;p>6)},c.prototype.programInterfaces={line:{layoutVertexArrayType:new n.VertexArrayType([{name:"a_pos",components:2,type:"Int16"},{name:"a_data",components:4,type:"Uint8"}]),elementArrayType:new n.ElementArrayType}},c.prototype.addFeature=function(t){for(var e=a(t,15),r=0;r2&&t[a-1].equals(t[a-2]);)a--;if(!(t.length<2)){"bevel"===e&&(n=1.05);var l=o/(512*this.overscaling)*15,c=t[0],u=t[a-1],f=c.equals(u);if(this.prepareArrayGroup("line",10*a),2!==a||!f){this.distance=0;var h,d,p,m,v,g,y,b=r,x=f?"butt":r,_=!0;this.e1=this.e2=this.e3=-1,f&&(h=t[a-2],v=c.sub(h)._unit()._perp());for(var w=0;w0){var E=h.dist(d);if(E>2*l){var S=h.sub(h.sub(d)._mult(l/E)._round());this.distance+=S.dist(d),this.addCurrentVertex(S,this.distance,m.mult(1),0,0,!1),d=S}}var L=d&&p,C=L?e:p?b:x;if(L&&"round"===C&&(An&&(C="bevel"),"bevel"===C&&(A>2&&(C="flipbevel"),A100)M=v.clone();else{var P=m.x*v.y-m.y*v.x>0?-1:1,z=A*m.add(v).mag()/m.sub(v).mag();M._perp()._mult(z*P)}this.addCurrentVertex(h,this.distance,M,0,0,!1),this.addCurrentVertex(h,this.distance,M.mult(-1),0,0,!1)}else if("bevel"===C||"fakeround"===C){var O=m.x*v.y-m.y*v.x>0,D=-Math.sqrt(A*A-1);if(O?(y=0,g=D):(g=0,y=D),_||this.addCurrentVertex(h,this.distance,m,g,y,!1),"fakeround"===C){for(var I,R=Math.floor(8*(.5-(k-.5))),N=0;N=0;F--)I=m.mult((F+1)/(R+1))._add(v)._unit(),this.addPieSliceVertex(h,this.distance,I,O)}p&&this.addCurrentVertex(h,this.distance,v,-g,-y,!1)}else"butt"===C?(_||this.addCurrentVertex(h,this.distance,m,0,0,!1),p&&this.addCurrentVertex(h,this.distance,v,0,0,!1)):"square"===C?(_||(this.addCurrentVertex(h,this.distance,m,1,1,!1),this.e1=this.e2=-1),p&&this.addCurrentVertex(h,this.distance,v,-1,-1,!1)):"round"===C&&(_||(this.addCurrentVertex(h,this.distance,m,0,0,!1),this.addCurrentVertex(h,this.distance,m,1,1,!0),this.e1=this.e2=-1),p&&(this.addCurrentVertex(h,this.distance,v,-1,-1,!0),this.addCurrentVertex(h,this.distance,v,0,0,!1)));if(T&&w2*l){var B=h.add(p.sub(h)._mult(l/j)._round());this.distance+=B.dist(h),this.addCurrentVertex(B,this.distance,v.mult(1),0,0,!1),h=B}}_=!1}}}},c.prototype.addCurrentVertex=function(t,e,r,n,i,a){var o,s=a?1:0,c=this.arrayGroups.line[this.arrayGroups.line.length-1],u=c.layoutVertexArray,f=c.elementArray;o=r.clone(),n&&o._sub(r.perp()._mult(n)),this.e3=this.addLineVertex(u,t,o,s,0,n,e),this.e1>=0&&this.e2>=0&&f.emplaceBack(this.e1,this.e2,this.e3),this.e1=this.e2,this.e2=this.e3,o=r.mult(-1),i&&o._sub(r.perp()._mult(i)),this.e3=this.addLineVertex(u,t,o,s,1,-i,e),this.e1>=0&&this.e2>=0&&f.emplaceBack(this.e1,this.e2,this.e3),this.e1=this.e2,this.e2=this.e3,e>l/2&&(this.distance=0,this.addCurrentVertex(t,this.distance,r,n,i,a))},c.prototype.addPieSliceVertex=function(t,e,r,n){var i=n?1:0;r=r.mult(n?-1:1);var a=this.arrayGroups.line[this.arrayGroups.line.length-1],o=a.layoutVertexArray,s=a.elementArray;this.e3=this.addLineVertex(o,t,r,0,i,0,e),this.e1>=0&&this.e2>=0&&s.emplaceBack(this.e1,this.e2,this.e3),n?this.e2=this.e3:this.e1=this.e3}},{"../../util/util":414,"../bucket":301,"../load_geometry":309}],305:[function(t,e,r){"use strict";var n=t("point-geometry"),i=t("../bucket"),a=t("../../symbol/anchor"),o=t("../../symbol/get_anchors"),s=t("../../util/token"),l=t("../../symbol/quads"),c=t("../../symbol/shaping"),u=t("../../symbol/resolve_text"),f=t("../../symbol/mergelines"),h=t("../../symbol/clip_line"),d=t("../../util/util"),p=t("../load_geometry"),m=t("../../symbol/collision_feature"),v=c.shapeText,g=c.shapeIcon,y=l.getGlyphQuads,b=l.getIconQuads,x=i.EXTENT;function _(t){i.apply(this,arguments),this.showCollisionBoxes=t.showCollisionBoxes,this.overscaling=t.overscaling,this.collisionBoxArray=t.collisionBoxArray,this.symbolQuadsArray=t.symbolQuadsArray,this.symbolInstancesArray=t.symbolInstancesArray,this.sdfIcons=t.sdfIcons,this.iconsNeedLinear=t.iconsNeedLinear,this.adjustedTextSize=t.adjustedTextSize,this.adjustedIconSize=t.adjustedIconSize,this.fontstack=t.fontstack}e.exports=_,_.MAX_QUADS=65535,_.prototype=d.inherit(i,{}),_.prototype.serialize=function(){var t=i.prototype.serialize.apply(this);return t.sdfIcons=this.sdfIcons,t.iconsNeedLinear=this.iconsNeedLinear,t.adjustedTextSize=this.adjustedTextSize,t.adjustedIconSize=this.adjustedIconSize,t.fontstack=this.fontstack,t};var w=new i.VertexArrayType([{name:"a_pos",components:2,type:"Int16"},{name:"a_offset",components:2,type:"Int16"},{name:"a_texture_pos",components:2,type:"Uint16"},{name:"a_data",components:4,type:"Uint8"}]),M=new i.ElementArrayType;function k(t,e,r,n,i,a,o,s,l,c,u){return t.emplaceBack(e,r,Math.round(64*n),Math.round(64*i),a/4,o/4,10*(c||0),u,10*(s||0),10*Math.min(l||25,25))}_.prototype.addCollisionBoxVertex=function(t,e,r,n,i){return t.emplaceBack(e.x,e.y,Math.round(r.x),Math.round(r.y),10*n,10*i)},_.prototype.programInterfaces={glyph:{layoutVertexArrayType:w,elementArrayType:M},icon:{layoutVertexArrayType:w,elementArrayType:M},collisionBox:{layoutVertexArrayType:new i.VertexArrayType([{name:"a_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"},{name:"a_data",components:2,type:"Uint8"}])}},_.prototype.populateArrays=function(t,e,r){var n={lastIntegerZoom:1/0,lastIntegerZoomTime:0,lastZoom:0};this.adjustedTextMaxSize=this.layer.getLayoutValue("text-size",{zoom:18,zoomHistory:n}),this.adjustedTextSize=this.layer.getLayoutValue("text-size",{zoom:this.zoom+1,zoomHistory:n}),this.adjustedIconMaxSize=this.layer.getLayoutValue("icon-size",{zoom:18,zoomHistory:n}),this.adjustedIconSize=this.layer.getLayoutValue("icon-size",{zoom:this.zoom+1,zoomHistory:n});var i=512*this.overscaling;this.tilePixelRatio=x/i,this.compareText={},this.iconsNeedLinear=!1,this.symbolInstancesStartIndex=this.symbolInstancesArray.length;var a=this.layer.layout,o=this.features,l=this.textFeatures,c=.5,u=.5;switch(a["text-anchor"]){case"right":case"top-right":case"bottom-right":c=1;break;case"left":case"top-left":case"bottom-left":c=0}switch(a["text-anchor"]){case"bottom":case"bottom-right":case"bottom-left":u=1;break;case"top":case"top-right":case"top-left":u=0}for(var h,m,y="right"===a["text-justify"]?1:"left"===a["text-justify"]?0:.5,b=24*a["text-line-height"],_="line"!==a["symbol-placement"]?24*a["text-max-width"]:0,w=24*a["text-letter-spacing"],M=[24*a["text-offset"][0],24*a["text-offset"][1]],k=this.fontstack=a["text-font"].join(","),A=[],T=0;Tx||L.y<0||L.y>x);if(!p||C){var P=C||_;this.addSymbolInstance(L,T,e,r,this.layer,P,this.symbolInstancesArray.length,this.collisionBoxArray,n.index,this.sourceLayerIndex,this.index,c,m,y,f,v,b,{zoom:this.zoom},n.properties)}}}},_.prototype.anchorIsTooClose=function(t,e,r){var n=this.compareText;if(t in n){for(var i=n[t],a=i.length-1;a>=0;a--)if(r.dist(i[a])3*Math.PI/2))){var m=d.tl,v=d.tr,g=d.bl,y=d.br,b=d.tex,x=d.anchorPoint,_=Math.max(u+Math.log(d.minScale)/Math.LN2,f),w=Math.min(u+Math.log(d.maxScale)/Math.LN2,25);if(!(w<=_)){_===f&&(_=0);var M=Math.round(d.glyphAngle/(2*Math.PI)*256),A=k(c,x.x,x.y,m.x,m.y,b.x,b.y,_,w,f,M);k(c,x.x,x.y,v.x,v.y,b.x+b.w,b.y,_,w,f,M),k(c,x.x,x.y,g.x,g.y,b.x,b.y+b.h,_,w,f,M),k(c,x.x,x.y,y.x,y.y,b.x+b.w,b.y+b.h,_,w,f,M),l.emplaceBack(A,A+1,A+2),l.emplaceBack(A+1,A+2,A+3)}}}},_.prototype.updateIcons=function(t){this.recalculateStyleLayers();var e=this.layer.layout["icon-image"];if(e)for(var r=0;r_.MAX_QUADS&&d.warnOnce("Too many symbols being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),A>_.MAX_QUADS&&d.warnOnce("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),this.symbolInstancesArray.emplaceBack(O,D,I,R,k,A,T,E,t.x,t.y,o)},_.prototype.addSymbolQuad=function(t){return this.symbolQuadsArray.emplaceBack(t.anchorPoint.x,t.anchorPoint.y,t.tl.x,t.tl.y,t.tr.x,t.tr.y,t.bl.x,t.bl.y,t.br.x,t.br.y,t.tex.h,t.tex.w,t.tex.x,t.tex.y,t.anchorAngle,t.glyphAngle,t.maxScale,t.minScale)}},{"../../symbol/anchor":363,"../../symbol/clip_line":365,"../../symbol/collision_feature":367,"../../symbol/get_anchors":369,"../../symbol/mergelines":372,"../../symbol/quads":373,"../../symbol/resolve_text":374,"../../symbol/shaping":375,"../../util/token":413,"../../util/util":414,"../bucket":301,"../load_geometry":309,"point-geometry":458}],306:[function(t,e,r){"use strict";function n(t,e,r){this.arrayBuffer=t.arrayBuffer,this.length=t.length,this.attributes=e.members,this.itemSize=e.bytesPerElement,this.type=r,this.arrayType=e}e.exports=n,n.prototype.bind=function(t){var e=t[this.type];this.buffer?t.bindBuffer(e,this.buffer):(this.buffer=t.createBuffer(),t.bindBuffer(e,this.buffer),t.bufferData(e,this.arrayBuffer,t.STATIC_DRAW),this.arrayBuffer=null)};var i={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT"};n.prototype.setVertexAttribPointers=function(t,e){for(var r=0;r0?t["line-gap-width"]+2*t["line-width"]:t["line-width"]}function M(t,e,r,i,a){if(!e[0]&&!e[1])return t;e=n.convert(e),"viewport"===r&&e._rotate(-i);for(var o=[],s=0;sr.max||h.yr.max)&&n.warnOnce("Geometry exceeds allowed extent, reduce your vector tile buffer size")}return l}},{"../util/util":414,"./bucket":301,assert:51}],310:[function(t,e,r){"use strict";function n(t,e,r){this.column=t,this.row=e,this.zoom=r}e.exports=n,n.prototype={clone:function(){return new n(this.column,this.row,this.zoom)},zoomTo:function(t){return this.clone()._zoomTo(t)},sub:function(t){return this.clone()._sub(t)},_zoomTo:function(t){var e=Math.pow(2,t-this.zoom);return this.column*=e,this.row*=e,this.zoom=t,this},_sub:function(t){return t=t.zoomTo(this.zoom),this.column-=t.column,this.row-=t.row,this}}},{}],311:[function(t,e,r){"use strict";e.exports=i;var n=t("../util/util").wrap;function i(t,e){if(isNaN(t)||isNaN(e))throw new Error("Invalid LngLat object: ("+t+", "+e+")");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}i.prototype.wrap=function(){return new i(n(this.lng,-180,180),this.lat)},i.prototype.toArray=function(){return[this.lng,this.lat]},i.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"},i.convert=function(t){return t instanceof i?t:Array.isArray(t)?new i(t[0],t[1]):t}},{"../util/util":414}],312:[function(t,e,r){"use strict";e.exports=i;var n=t("./lng_lat");function i(t,e){t&&(e?this.extend(t).extend(e):4===t.length?this.extend([t[0],t[1]]).extend([t[2],t[3]]):this.extend(t[0]).extend(t[1]))}i.prototype={extend:function(t){var e,r,a=this._sw,o=this._ne;if(t instanceof n)e=t,r=t;else{if(!(t instanceof i))return t?this.extend(n.convert(t)||i.convert(t)):this;if(e=t._sw,r=t._ne,!e||!r)return this}return a||o?(a.lng=Math.min(e.lng,a.lng),a.lat=Math.min(e.lat,a.lat),o.lng=Math.max(r.lng,o.lng),o.lat=Math.max(r.lat,o.lat)):(this._sw=new n(e.lng,e.lat),this._ne=new n(r.lng,r.lat)),this},getCenter:function(){return new n((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},getSouthWest:function(){return this._sw},getNorthEast:function(){return this._ne},getNorthWest:function(){return new n(this.getWest(),this.getNorth())},getSouthEast:function(){return new n(this.getEast(),this.getSouth())},getWest:function(){return this._sw.lng},getSouth:function(){return this._sw.lat},getEast:function(){return this._ne.lng},getNorth:function(){return this._ne.lat},toArray:function(){return[this._sw.toArray(),this._ne.toArray()]},toString:function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"}},i.convert=function(t){return!t||t instanceof i?t:new i(t)}},{"./lng_lat":311}],313:[function(t,e,r){"use strict";var n=t("./lng_lat"),i=t("point-geometry"),a=t("./coordinate"),o=t("../util/util").wrap,s=t("../util/interpolate"),l=t("../source/tile_coord"),c=t("../data/bucket").EXTENT,u=t("gl-matrix"),f=u.vec4,h=u.mat4,d=u.mat2;function p(t,e){this.tileSize=512,this._minZoom=t||0,this._maxZoom=e||22,this.latRange=[-85.05113,85.05113],this.width=0,this.height=0,this._center=new n(0,0),this.zoom=0,this.angle=0,this._altitude=1.5,this._pitch=0,this._unmodified=!0}e.exports=p,p.prototype={get minZoom(){return this._minZoom},set minZoom(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},get maxZoom(){return this._maxZoom},set maxZoom(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},get worldSize(){return this.tileSize*this.scale},get centerPoint(){return this.size._div(2)},get size(){return new i(this.width,this.height)},get bearing(){return-this.angle/Math.PI*180},set bearing(t){var e=-o(t,-180,180)*Math.PI/180;this.angle!==e&&(this._unmodified=!1,this.angle=e,this._calcMatrices(),this.rotationMatrix=d.create(),d.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},get pitch(){return this._pitch/Math.PI*180},set pitch(t){var e=Math.min(60,t)/180*Math.PI;this._pitch!==e&&(this._unmodified=!1,this._pitch=e,this._calcMatrices())},get altitude(){return this._altitude},set altitude(t){var e=Math.max(.75,t);this._altitude!==e&&(this._unmodified=!1,this._altitude=e,this._calcMatrices())},get zoom(){return this._zoom},set zoom(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._calcMatrices(),this._constrain())},get center(){return this._center},set center(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._calcMatrices(),this._constrain())},coveringZoomLevel:function(t){return(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize))},coveringTiles:function(t){var e=this.coveringZoomLevel(t),r=e;if(et.maxzoom&&(e=t.maxzoom);var n=this,a=n.locationCoordinate(n.center)._zoomTo(e),o=new i(a.column-.5,a.row-.5);return l.cover(e,[n.pointCoordinate(new i(0,0))._zoomTo(e),n.pointCoordinate(new i(n.width,0))._zoomTo(e),n.pointCoordinate(new i(n.width,n.height))._zoomTo(e),n.pointCoordinate(new i(0,n.height))._zoomTo(e)],t.reparseOverscaled?r:e).sort(function(t,e){return o.dist(t)-o.dist(e)})},resize:function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._calcMatrices(),this._constrain()},get unmodified(){return this._unmodified},zoomScale:function(t){return Math.pow(2,t)},scaleZoom:function(t){return Math.log(t)/Math.LN2},project:function(t,e){return new i(this.lngX(t.lng,e),this.latY(t.lat,e))},unproject:function(t,e){return new n(this.xLng(t.x,e),this.yLat(t.y,e))},get x(){return this.lngX(this.center.lng)},get y(){return this.latY(this.center.lat)},get point(){return new i(this.x,this.y)},lngX:function(t,e){return(180+t)*(e||this.worldSize)/360},latY:function(t,e){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))*(e||this.worldSize)/360},xLng:function(t,e){return 360*t/(e||this.worldSize)-180},yLat:function(t,e){var r=180-360*t/(e||this.worldSize);return 360/Math.PI*Math.atan(Math.exp(r*Math.PI/180))-90},panBy:function(t){var e=this.centerPoint._add(t);this.center=this.pointLocation(e)},setLocationAtPoint:function(t,e){var r=this.locationCoordinate(t),n=this.pointCoordinate(e),i=this.pointCoordinate(this.centerPoint),a=n._sub(r);this._unmodified=!1,this.center=this.coordinateLocation(i._sub(a))},locationPoint:function(t){return this.coordinatePoint(this.locationCoordinate(t))},pointLocation:function(t){return this.coordinateLocation(this.pointCoordinate(t))},locationCoordinate:function(t){var e=this.zoomScale(this.tileZoom)/this.worldSize,r=n.convert(t);return new a(this.lngX(r.lng)*e,this.latY(r.lat)*e,this.tileZoom)},coordinateLocation:function(t){var e=this.zoomScale(t.zoom);return new n(this.xLng(t.column,e),this.yLat(t.row,e))},pointCoordinate:function(t){var e=[t.x,t.y,0,1],r=[t.x,t.y,1,1];f.transformMat4(e,e,this.pixelMatrixInverse),f.transformMat4(r,r,this.pixelMatrixInverse);var n=e[3],i=r[3],o=e[0]/n,l=r[0]/i,c=e[1]/n,u=r[1]/i,h=e[2]/n,d=r[2]/i,p=h===d?0:(0-h)/(d-h),m=this.worldSize/this.zoomScale(this.tileZoom);return new a(s(o,l,p)/m,s(c,u,p)/m,this.tileZoom)},coordinatePoint:function(t){var e=this.worldSize/this.zoomScale(t.zoom),r=[t.column*e,t.row*e,0,1];return f.transformMat4(r,r,this.pixelMatrix),new i(r[0]/r[3],r[1]/r[3])},calculatePosMatrix:function(t,e){void 0===e&&(e=1/0),t instanceof l&&(t=t.toCoordinate(e));var r=Math.min(t.zoom,e),n=this.worldSize/Math.pow(2,r),i=new Float64Array(16);return h.identity(i),h.translate(i,i,[t.column*n,t.row*n,0]),h.scale(i,i,[n/c,n/c,1]),h.multiply(i,this.projMatrix,i),new Float32Array(i)},_constrain:function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var t,e,r,n,a,o,s,l,c=this.size,u=this._unmodified;this.latRange&&(t=this.latY(this.latRange[1]),a=(e=this.latY(this.latRange[0]))-te&&(l=e-d)}if(this.lngRange){var p=this.x,m=c.x/2;p-mn&&(s=n-m)}void 0===s&&void 0===l||(this.center=this.unproject(new i(void 0!==s?s:this.x,void 0!==l?l:this.y))),this._unmodified=u,this._constraining=!1}},_calcMatrices:function(){if(this.height){var t=Math.atan(.5/this.altitude),e=Math.sin(t)*this.altitude/Math.sin(Math.PI/2-this._pitch-t),r=Math.cos(Math.PI/2-this._pitch)*e+this.altitude,n=new Float64Array(16);if(h.perspective(n,2*Math.atan(this.height/2/this.altitude),this.width/this.height,.1,r),h.translate(n,n,[0,0,-this.altitude]),h.scale(n,n,[1,-1,1/this.height]),h.rotateX(n,n,this._pitch),h.rotateZ(n,n,this.angle),h.translate(n,n,[-this.x,-this.y,0]),this.projMatrix=n,n=h.create(),h.scale(n,n,[this.width/2,-this.height/2,1]),h.translate(n,n,[1,-1,0]),this.pixelMatrix=h.multiply(new Float64Array(16),n,this.projMatrix),!(n=h.invert(new Float64Array(16),this.pixelMatrix)))throw new Error("failed to invert matrix");this.pixelMatrixInverse=n}}}},{"../data/bucket":301,"../source/tile_coord":341,"../util/interpolate":408,"../util/util":414,"./coordinate":310,"./lng_lat":311,"gl-matrix":198,"point-geometry":458}],314:[function(t,e,r){"use strict";var n={" ":[16,[]],"!":[10,[5,21,5,7,-1,-1,5,2,4,1,5,0,6,1,5,2]],'"':[16,[4,21,4,14,-1,-1,12,21,12,14]],"#":[21,[11,25,4,-7,-1,-1,17,25,10,-7,-1,-1,4,12,18,12,-1,-1,3,6,17,6]],$:[20,[8,25,8,-4,-1,-1,12,25,12,-4,-1,-1,17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],"%":[24,[21,21,3,0,-1,-1,8,21,10,19,10,17,9,15,7,14,5,14,3,16,3,18,4,20,6,21,8,21,10,20,13,19,16,19,19,20,21,21,-1,-1,17,7,15,6,14,4,14,2,16,0,18,0,20,1,21,3,21,5,19,7,17,7]],"&":[26,[23,12,23,13,22,14,21,14,20,13,19,11,17,6,15,3,13,1,11,0,7,0,5,1,4,2,3,4,3,6,4,8,5,9,12,13,13,14,14,16,14,18,13,20,11,21,9,20,8,18,8,16,9,13,11,10,16,3,18,1,20,0,22,0,23,1,23,2]],"'":[10,[5,19,4,20,5,21,6,20,6,18,5,16,4,15]],"(":[14,[11,25,9,23,7,20,5,16,4,11,4,7,5,2,7,-2,9,-5,11,-7]],")":[14,[3,25,5,23,7,20,9,16,10,11,10,7,9,2,7,-2,5,-5,3,-7]],"*":[16,[8,21,8,9,-1,-1,3,18,13,12,-1,-1,13,18,3,12]],"+":[26,[13,18,13,0,-1,-1,4,9,22,9]],",":[10,[6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],"-":[26,[4,9,22,9]],".":[10,[5,2,4,1,5,0,6,1,5,2]],"/":[22,[20,25,2,-7]],0:[20,[9,21,6,20,4,17,3,12,3,9,4,4,6,1,9,0,11,0,14,1,16,4,17,9,17,12,16,17,14,20,11,21,9,21]],1:[20,[6,17,8,18,11,21,11,0]],2:[20,[4,16,4,17,5,19,6,20,8,21,12,21,14,20,15,19,16,17,16,15,15,13,13,10,3,0,17,0]],3:[20,[5,21,16,21,10,13,13,13,15,12,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],4:[20,[13,21,3,7,18,7,-1,-1,13,21,13,0]],5:[20,[15,21,5,21,4,12,5,13,8,14,11,14,14,13,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],6:[20,[16,18,15,20,12,21,10,21,7,20,5,17,4,12,4,7,5,3,7,1,10,0,11,0,14,1,16,3,17,6,17,7,16,10,14,12,11,13,10,13,7,12,5,10,4,7]],7:[20,[17,21,7,0,-1,-1,3,21,17,21]],8:[20,[8,21,5,20,4,18,4,16,5,14,7,13,11,12,14,11,16,9,17,7,17,4,16,2,15,1,12,0,8,0,5,1,4,2,3,4,3,7,4,9,6,11,9,12,13,13,15,14,16,16,16,18,15,20,12,21,8,21]],9:[20,[16,14,15,11,13,9,10,8,9,8,6,9,4,11,3,14,3,15,4,18,6,20,9,21,10,21,13,20,15,18,16,14,16,9,15,4,13,1,10,0,8,0,5,1,4,3]],":":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,5,2,4,1,5,0,6,1,5,2]],";":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],"<":[24,[20,18,4,9,20,0]],"=":[26,[4,12,22,12,-1,-1,4,6,22,6]],">":[24,[4,18,20,9,4,0]],"?":[18,[3,16,3,17,4,19,5,20,7,21,11,21,13,20,14,19,15,17,15,15,14,13,13,12,9,10,9,7,-1,-1,9,2,8,1,9,0,10,1,9,2]],"@":[27,[18,13,17,15,15,16,12,16,10,15,9,14,8,11,8,8,9,6,11,5,14,5,16,6,17,8,-1,-1,12,16,10,14,9,11,9,8,10,6,11,5,-1,-1,18,16,17,8,17,6,19,5,21,5,23,7,24,10,24,12,23,15,22,17,20,19,18,20,15,21,12,21,9,20,7,19,5,17,4,15,3,12,3,9,4,6,5,4,7,2,9,1,12,0,15,0,18,1,20,2,21,3,-1,-1,19,16,18,8,18,6,19,5]],A:[18,[9,21,1,0,-1,-1,9,21,17,0,-1,-1,4,7,14,7]],B:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,-1,-1,4,11,13,11,16,10,17,9,18,7,18,4,17,2,16,1,13,0,4,0]],C:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5]],D:[21,[4,21,4,0,-1,-1,4,21,11,21,14,20,16,18,17,16,18,13,18,8,17,5,16,3,14,1,11,0,4,0]],E:[19,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11,-1,-1,4,0,17,0]],F:[18,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11]],G:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,18,8,-1,-1,13,8,18,8]],H:[22,[4,21,4,0,-1,-1,18,21,18,0,-1,-1,4,11,18,11]],I:[8,[4,21,4,0]],J:[16,[12,21,12,5,11,2,10,1,8,0,6,0,4,1,3,2,2,5,2,7]],K:[21,[4,21,4,0,-1,-1,18,21,4,7,-1,-1,9,12,18,0]],L:[17,[4,21,4,0,-1,-1,4,0,16,0]],M:[24,[4,21,4,0,-1,-1,4,21,12,0,-1,-1,20,21,12,0,-1,-1,20,21,20,0]],N:[22,[4,21,4,0,-1,-1,4,21,18,0,-1,-1,18,21,18,0]],O:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21]],P:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,14,17,12,16,11,13,10,4,10]],Q:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21,-1,-1,12,4,18,-2]],R:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,4,11,-1,-1,11,11,18,0]],S:[20,[17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],T:[16,[8,21,8,0,-1,-1,1,21,15,21]],U:[22,[4,21,4,6,5,3,7,1,10,0,12,0,15,1,17,3,18,6,18,21]],V:[18,[1,21,9,0,-1,-1,17,21,9,0]],W:[24,[2,21,7,0,-1,-1,12,21,7,0,-1,-1,12,21,17,0,-1,-1,22,21,17,0]],X:[20,[3,21,17,0,-1,-1,17,21,3,0]],Y:[18,[1,21,9,11,9,0,-1,-1,17,21,9,11]],Z:[20,[17,21,3,0,-1,-1,3,21,17,21,-1,-1,3,0,17,0]],"[":[14,[4,25,4,-7,-1,-1,5,25,5,-7,-1,-1,4,25,11,25,-1,-1,4,-7,11,-7]],"\\":[14,[0,21,14,-3]],"]":[14,[9,25,9,-7,-1,-1,10,25,10,-7,-1,-1,3,25,10,25,-1,-1,3,-7,10,-7]],"^":[16,[6,15,8,18,10,15,-1,-1,3,12,8,17,13,12,-1,-1,8,17,8,0]],_:[16,[0,-2,16,-2]],"`":[10,[6,21,5,20,4,18,4,16,5,15,6,16,5,17]],a:[19,[15,14,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],b:[19,[4,21,4,0,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],c:[18,[15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],d:[19,[15,21,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],e:[18,[3,8,15,8,15,10,14,12,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],f:[12,[10,21,8,21,6,20,5,17,5,0,-1,-1,2,14,9,14]],g:[19,[15,14,15,-2,14,-5,13,-6,11,-7,8,-7,6,-6,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],h:[19,[4,21,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],i:[8,[3,21,4,20,5,21,4,22,3,21,-1,-1,4,14,4,0]],j:[10,[5,21,6,20,7,21,6,22,5,21,-1,-1,6,14,6,-3,5,-6,3,-7,1,-7]],k:[17,[4,21,4,0,-1,-1,14,14,4,4,-1,-1,8,8,15,0]],l:[8,[4,21,4,0]],m:[30,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0,-1,-1,15,10,18,13,20,14,23,14,25,13,26,10,26,0]],n:[19,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],o:[19,[8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3,16,6,16,8,15,11,13,13,11,14,8,14]],p:[19,[4,14,4,-7,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],q:[19,[15,14,15,-7,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],r:[13,[4,14,4,0,-1,-1,4,8,5,11,7,13,9,14,12,14]],s:[17,[14,11,13,13,10,14,7,14,4,13,3,11,4,9,6,8,11,7,13,6,14,4,14,3,13,1,10,0,7,0,4,1,3,3]],t:[12,[5,21,5,4,6,1,8,0,10,0,-1,-1,2,14,9,14]],u:[19,[4,14,4,4,5,1,7,0,10,0,12,1,15,4,-1,-1,15,14,15,0]],v:[16,[2,14,8,0,-1,-1,14,14,8,0]],w:[22,[3,14,7,0,-1,-1,11,14,7,0,-1,-1,11,14,15,0,-1,-1,19,14,15,0]],x:[17,[3,14,14,0,-1,-1,14,14,3,0]],y:[16,[2,14,8,0,-1,-1,14,14,8,0,6,-4,4,-6,2,-7,1,-7]],z:[17,[14,14,3,0,-1,-1,3,14,14,14,-1,-1,3,0,14,0]],"{":[14,[9,25,7,24,6,23,5,21,5,19,6,17,7,16,8,14,8,12,6,10,-1,-1,7,24,6,22,6,20,7,18,8,17,9,15,9,13,8,11,4,9,8,7,9,5,9,3,8,1,7,0,6,-2,6,-4,7,-6,-1,-1,6,8,8,6,8,4,7,2,6,1,5,-1,5,-3,6,-5,7,-6,9,-7]],"|":[8,[4,25,4,-7]],"}":[14,[5,25,7,24,8,23,9,21,9,19,8,17,7,16,6,14,6,12,8,10,-1,-1,7,24,8,22,8,20,7,18,6,17,5,15,5,13,6,11,10,9,6,7,5,5,5,3,6,1,7,0,8,-2,8,-4,7,-6,-1,-1,8,8,6,6,6,4,7,2,8,1,9,-1,9,-3,8,-5,7,-6,5,-7]],"~":[24,[3,6,3,8,4,11,6,12,8,12,10,11,14,8,16,7,18,7,20,8,21,10,-1,-1,3,8,4,10,6,11,8,11,10,10,14,7,16,6,18,6,20,7,21,10,21,12]]};e.exports=function(t,e,r,i){i=i||1;var a,o,s,l,c,u,f,h,d=[];for(a=0,o=t.length;a>16,_>>16),s.uniform2f(o.u_pixel_coord_lower,65535&x,65535&_)}s.uniformMatrix4fv(o.u_matrix,!1,t.transform.calculatePosMatrix(g)),s.drawArrays(s.TRIANGLE_STRIP,0,t.tileExtentBuffer.length)}s.stencilMask(0),s.stencilFunc(s.EQUAL,128,128)}},{"../source/pixels_to_tile_units":335,"./create_uniform_pragmas":316}],318:[function(t,e,r){"use strict";var n=t("../util/browser");e.exports=function(t,e,r,i){if(t.isOpaquePass)return;var a=t.gl;t.setDepthSublayer(0),t.depthMask(!1),a.disable(a.STENCIL_TEST);for(var o=0;o>16,h>>16),s.uniform2f(o.u_pixel_coord_lower,65535&f,65535&h),s.activeTexture(s.TEXTURE0),a.spriteAtlas.bind(s,!0)}}e.exports=function(t,e,r,n){var o,s=t.gl;s.enable(s.STENCIL_TEST),o=!r.paint["fill-pattern"]&&(r.isPaintValueFeatureConstant("fill-color")&&r.isPaintValueFeatureConstant("fill-opacity")&&1===r.paint["fill-color"][3]&&1===r.paint["fill-opacity"]);if(t.isOpaquePass===o){t.setDepthSublayer(1);for(var l=0;l0?1-1/(1.001-o):-o),a.uniform1f(u.u_contrast_factor,(s=r.paint["raster-contrast"])>0?1/(1-s):1+s),a.uniform3fv(u.u_spin_weights,function(t){t*=Math.PI/180;var e=Math.sin(t),r=Math.cos(t);return[(2*r+1)/3,(-Math.sqrt(3)*e-r+1)/3,(Math.sqrt(3)*e-r+1)/3]}(r.paint["raster-hue-rotate"]));var f,h,d=l.source&&l.source.findLoadedParent(i,0,{}),p=function(t,e,r,i){var a=[1,0],o=r.paint["raster-fade-duration"];if(t.source&&o>0){var s=(new Date).getTime(),l=(s-t.timeAdded)/o,c=e?(s-e.timeAdded)/o:-1,u=i.coveringZoomLevel(t.source),f=!!e&&Math.abs(e.coord.z-u)>Math.abs(t.coord.z-u);!e||f?(a[0]=n.clamp(l,0,1),a[1]=1-a[0]):(a[0]=n.clamp(1-c,0,1),a[1]=1-a[0])}var h=r.paint["raster-opacity"];return a[0]*=h,a[1]*=h,a}(l,d,r,t.transform);a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,l.texture),a.activeTexture(a.TEXTURE1),d?(a.bindTexture(a.TEXTURE_2D,d.texture),f=Math.pow(2,d.coord.z-l.coord.z),h=[l.coord.x*f%1,l.coord.y*f%1]):(a.bindTexture(a.TEXTURE_2D,l.texture),p[1]=0),a.uniform2fv(u.u_tl_parent,h||[0,0]),a.uniform1f(u.u_scale_parent,f||1),a.uniform1f(u.u_buffer_scale,1),a.uniform1f(u.u_opacity0,p[0]),a.uniform1f(u.u_opacity1,p[1]),a.uniform1i(u.u_image0,0),a.uniform1i(u.u_image1,1);var m=l.boundsBuffer||t.rasterBoundsBuffer;(l.boundsVAO||t.rasterBoundsVAO).bind(a,u,m),a.drawArrays(a.TRIANGLE_STRIP,0,m.length)}e.exports=a,a.RasterBoundsArray=new i({members:[{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]})},{"../util/struct_array":412,"../util/util":414}],324:[function(t,e,r){"use strict";var n=t("../util/browser"),i=t("./draw_collision_debug"),a=t("../source/pixels_to_tile_units");function o(t,e,r,n,i,a,o,l,c,u,f,h,d,p,m){for(var v=0;vthis.previousZoom;e--)this.changeTimes[e]=r,this.changeOpacities[e]=this.opacities[e];for(e=0;e<256;e++){var n=(r-this.changeTimes[e])/this.fadeDuration*255;this.opacities[e]=e<=t?this.changeOpacities[e]+n:this.changeOpacities[e]-n}this.changed=!0,this.previousZoom=t},n.prototype.bind=function(t){this.texture?(t.bindTexture(t.TEXTURE_2D,this.texture),this.changed&&(t.texSubImage2D(t.TEXTURE_2D,0,0,0,256,1,t.ALPHA,t.UNSIGNED_BYTE,this.array),this.changed=!1)):(this.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texImage2D(t.TEXTURE_2D,0,t.ALPHA,256,1,0,t.ALPHA,t.UNSIGNED_BYTE,this.array))}},{}],326:[function(t,e,r){"use strict";var n=t("../util/util");function i(t,e){this.width=t,this.height=e,this.nextRow=0,this.bytes=4,this.data=new Uint8Array(this.width*this.height*this.bytes),this.positions={}}e.exports=i,i.prototype.setSprite=function(t){this.sprite=t},i.prototype.getDash=function(t,e){var r=t.join(",")+e;return this.positions[r]||(this.positions[r]=this.addDash(t,e)),this.positions[r]},i.prototype.addDash=function(t,e){var r=e?7:0,i=2*r+1;if(this.nextRow+i>this.height)return n.warnOnce("LineAtlas out of space"),null;for(var a=0,o=0;o0?e.pop():null},m.prototype.lineWidth=function(t){this.gl.lineWidth(c.clamp(t,this.lineWidthRange[0],this.lineWidthRange[1]))},m.prototype.showOverdrawInspector=function(t){if(t||this._showOverdrawInspector){this._showOverdrawInspector=t;var e=this.gl;if(t){e.blendFunc(e.CONSTANT_COLOR,e.ONE);e.blendColor(1/8,1/8,1/8,0),e.clearColor(0,0,0,1),e.clear(e.COLOR_BUFFER_BIT)}else e.blendFunc(e.ONE,e.ONE_MINUS_SRC_ALPHA)}}},{"../data/bucket":301,"../data/buffer":306,"../source/pixels_to_tile_units":335,"../source/source_cache":339,"../util/browser":398,"../util/struct_array":412,"../util/util":414,"./create_uniform_pragmas":316,"./draw_background":317,"./draw_circle":318,"./draw_debug":320,"./draw_fill":321,"./draw_line":322,"./draw_raster":323,"./draw_symbol":324,"./frame_history":325,"./painter/use_program":328,"./vertex_array_object":329,"gl-matrix":198}],328:[function(t,e,r){"use strict";var n=t("assert"),i=t("../../util/util"),a=t("mapbox-gl-shaders"),o=a.util;function s(t,e){return t.replace(/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,function(t,r,n,i,a){return e[r][a].replace(/{type}/g,i).replace(/{precision}/g,n)})}e.exports._createProgram=function(t,e,r,l){for(var c=this.gl,u=c.createProgram(),f=a[t],h="#define MAPBOX_GL_JS;\n",d=0;dthis.maxzoom?Math.pow(2,t.coord.z-this.maxzoom):1,n={type:this.type,uid:t.uid,coord:t.coord,zoom:t.coord.z,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,overscaling:r,angle:this.map.transform.angle,pitch:this.map.transform.pitch,showCollisionBoxes:this.map.showCollisionBoxes};t.workerID=this.dispatcher.send("load tile",n,function(r,n){if(t.unloadVectorData(this.map.painter),!t.aborted)return r?e(r):(t.loadVectorData(n,this.map.style),t.redoWhenDone&&(t.redoWhenDone=!1,t.redoPlacement(this)),e(null))}.bind(this),this.workerID)},abortTile:function(t){t.aborted=!0},unloadTile:function(t){t.unloadVectorData(this.map.painter),this.dispatcher.send("remove tile",{uid:t.uid,source:this.id},function(){},t.workerID)},serialize:function(){return{type:this.type,data:this._data}}})},{"../data/bucket":301,"../util/evented":406,"../util/util":414,"resolve-url":488}],331:[function(t,e,r){"use strict";var n=t("../util/util"),i=t("../util/ajax"),a=t("geojson-rewind"),o=t("./geojson_wrapper"),s=t("vt-pbf"),l=t("supercluster"),c=t("geojson-vt"),u=t("./vector_tile_worker_source");function f(t,e,r){r&&(this.loadGeoJSON=r),u.call(this,t,e)}e.exports=f,f.prototype=n.inherit(u,{_geoJSONIndexes:{},loadVectorData:function(t,e){var r=t.source,n=t.coord;if(!this._geoJSONIndexes[r])return e(null,null);var i=this._geoJSONIndexes[r].getTile(Math.min(n.z,t.maxZoom),n.x,n.y);if(!i)return e(null,null);var a=new o(i.features);a.name="_geojsonTileLayer";var l=s({layers:{_geojsonTileLayer:a}});0===l.byteOffset&&l.byteLength===l.buffer.byteLength||(l=new Uint8Array(l)),e(null,{tile:a,rawTileData:l.buffer})},loadData:function(t,e){var r=function(r,n){return r?e(r):"object"!=typeof n?e(new Error("Input data is not a valid GeoJSON object.")):(a(n,!0),void this._indexData(n,t,function(r,n){if(r)return e(r);this._geoJSONIndexes[t.source]=n,e(null)}.bind(this)))}.bind(this);this.loadGeoJSON(t,r)},loadGeoJSON:function(t,e){if(t.url)i.getJSON(t.url,e);else{if("string"!=typeof t.data)return e(new Error("Input data is not a valid GeoJSON object."));try{return e(null,JSON.parse(t.data))}catch(t){return e(new Error("Input data is not a valid GeoJSON object."))}}},_indexData:function(t,e,r){try{e.cluster?r(null,l(e.superclusterOptions).load(t.features)):r(null,c(t,e.geojsonVtOptions))}catch(t){return r(t)}}})},{"../util/ajax":397,"../util/util":414,"./geojson_wrapper":332,"./vector_tile_worker_source":343,"geojson-rewind":147,"geojson-vt":151,supercluster:518,"vt-pbf":550}],332:[function(t,e,r){"use strict";var n=t("point-geometry"),i=t("vector-tile").VectorTileFeature,a=t("../data/bucket").EXTENT;function o(t){this.features=t,this.length=t.length,this.extent=a}function s(t){if(this.type=t.type,1===t.type){this.rawGeometry=[];for(var e=0;ee)){var o=Math.pow(2,Math.min(a.coord.z,this.maxzoom)-Math.min(t.z,this.maxzoom));if(Math.floor(a.coord.x/o)===t.x&&Math.floor(a.coord.y/o)===t.y)for(r[i]=!0,n=!0;a&&a.coord.z-1>t.z;){var s=a.coord.parent(this.maxzoom).id;(a=this._tiles[s])&&a.isRenderable()&&(delete r[i],r[s]=!0)}}}return n},findLoadedParent:function(t,e,r){for(var n=t.z-1;n>=e;n--){t=t.parent(this.maxzoom);var i=this._tiles[t.id];if(i&&i.isRenderable())return r[t.id]=!0,i;if(this._cache.has(t.id))return this.addTile(t),r[t.id]=!0,this._tiles[t.id]}},updateCacheSize:function(t){var e=(Math.ceil(t.width/t.tileSize)+1)*(Math.ceil(t.height/t.tileSize)+1);this._cache.setMaxSize(Math.floor(5*e))},update:function(t,e){if(this._sourceLoaded){var r,n,i;this.updateCacheSize(t);var a=(this.roundZoom?Math.round:Math.floor)(this.getZoom(t)),s=Math.max(a-f.maxOverzooming,this.minzoom),l=Math.max(a+f.maxUnderzooming,this.minzoom),u={},h=(new Date).getTime();this._coveredTiles={};var d=this.used?t.coveringTiles(this._source):[];for(r=0;rh-(e||0)&&(this.findLoadedChildren(n,l,u)&&(u[y]=!0),this.findLoadedParent(n,s,m))}for(p in m)u[p]||(this._coveredTiles[p]=!0);for(p in m)u[p]=!0;var b=c.keysDifference(this._tiles,u);for(r=0;rthis.maxzoom?Math.pow(2,n-this.maxzoom):1;e=new i(r,this.tileSize*a,this.maxzoom),this.loadTile(e,this._tileLoaded.bind(this,e))}return e.uses++,this._tiles[t.id]=e,this.fire("tile.add",{tile:e}),this._source.fire("tile.add",{tile:e}),e},removeTile:function(t){var e=this._tiles[t];e&&(e.uses--,delete this._tiles[t],this.fire("tile.remove",{tile:e}),this._source.fire("tile.remove",{tile:e}),e.uses>0||(e.isRenderable()?this._cache.add(e.coord.wrapped().id,e):(e.aborted=!0,this.abortTile(e),this.unloadTile(e))))},clearTiles:function(){for(var t in this._tiles)this.removeTile(t);this._cache.reset()},tilesIn:function(t){for(var e={},r=this.getIds(),n=1/0,i=1/0,a=-1/0,s=-1/0,c=t[0].zoom,f=0;f=0&&g[1].y>=0){for(var y=[],b=0;b=0&&t%1==0),n(!isNaN(e)&&e>=0&&e%1==0),n(!isNaN(r)&&r>=0&&r%1==0),isNaN(i)&&(i=0),this.z=+t,this.x=+e,this.y=+r,this.w=+i,(i*=2)<0&&(i=-1*i-1);var a=1<e.row){var r=t;t=e,e=r}return{x0:t.column,y0:t.row,x1:e.column,y1:e.row,dx:e.column-t.column,dy:e.row-t.row}}function l(t,e,r,n,i){var a=Math.max(r,Math.floor(e.y0)),o=Math.min(n,Math.ceil(e.y1));if(t.x0===e.x0&&t.y0===e.y0?t.x0+e.dy/t.dy*t.dx0,f=e.dx<0,h=a;hu.dy&&(o=c,c=u,u=o),c.dy>f.dy&&(o=c,c=f,f=o),u.dy>f.dy&&(o=u,u=f,f=o),c.dy&&l(f,c,n,i,a),u.dy&&l(f,u,n,i,a)}e.exports=o,o.prototype.toString=function(){return this.z+"/"+this.x+"/"+this.y},o.prototype.toCoordinate=function(t){var e=Math.min(this.z,t),r=Math.pow(2,e),n=this.y,i=this.x+r*this.w;return new a(i,n,e)},o.fromID=function(t){var e=t%32,r=1<0;a--)i+=(e&(n=1<t?new o(this.z-1,this.x,this.y,this.w):new o(this.z-1,Math.floor(this.x/2),Math.floor(this.y/2),this.w)},o.prototype.wrapped=function(){return new o(this.z,this.x,this.y,0)},o.prototype.children=function(t){if(this.z>=t)return[new o(this.z+1,this.x,this.y,this.w)];var e=this.z+1,r=2*this.x,n=2*this.y;return[new o(e,r,n,this.w),new o(e,r+1,n,this.w),new o(e,r,n+1,this.w),new o(e,r+1,n+1,this.w)]},o.cover=function(t,e,r){var n=1<=0&&a<=n)for(s=t;sthis.maxzoom?Math.pow(2,t.coord.z-this.maxzoom):1,n={url:o(t.coord.url(this.tiles,this.maxzoom,this.scheme),this.url),uid:t.uid,coord:t.coord,zoom:t.coord.z,tileSize:this.tileSize*r,source:this.id,overscaling:r,angle:this.map.transform.angle,pitch:this.map.transform.pitch,showCollisionBoxes:this.map.showCollisionBoxes};function i(r,n){if(!t.aborted){if(r)return e(r);t.loadVectorData(n,this.map.style),t.redoWhenDone&&(t.redoWhenDone=!1,t.redoPlacement(this)),e(null),t.reloadCallback&&(this.loadTile(t,t.reloadCallback),t.reloadCallback=null)}}t.workerID?"loading"===t.state?t.reloadCallback=e:(n.rawTileData=t.rawTileData,this.dispatcher.send("reload tile",n,i.bind(this),t.workerID)):t.workerID=this.dispatcher.send("load tile",n,i.bind(this))},abortTile:function(t){this.dispatcher.send("abort tile",{uid:t.uid,source:this.id},null,t.workerID)},unloadTile:function(t){t.unloadVectorData(this.map.painter),this.dispatcher.send("remove tile",{uid:t.uid,source:this.id},null,t.workerID)}})},{"../util/evented":406,"../util/mapbox":411,"../util/util":414,"./load_tilejson":334}],343:[function(t,e,r){"use strict";var n=t("../util/ajax"),i=t("vector-tile"),a=t("pbf"),o=t("./worker_tile");function s(t,e,r){this.actor=t,this.styleLayers=e,r&&(this.loadVectorData=r),this.loading={},this.loaded={}}e.exports=s,s.prototype={loadTile:function(t,e){var r=t.source,n=t.uid;this.loading[r]||(this.loading[r]={});var i=this.loading[r][n]=new o(t);i.abort=this.loadVectorData(t,function(t,a){if(delete this.loading[r][n],t)return e(t);if(!a)return e(null,null);i.data=a.tile,i.parse(i.data,this.styleLayers.getLayerFamilies(),this.actor,a.rawTileData,e),this.loaded[r]=this.loaded[r]||{},this.loaded[r][n]=i}.bind(this))},reloadTile:function(t,e){var r=this.loaded[t.source],n=t.uid;if(r&&r[n]){var i=r[n];i.parse(i.data,this.styleLayers.getLayerFamilies(),this.actor,t.rawTileData,e)}},abortTile:function(t){var e=this.loading[t.source],r=t.uid;e&&e[r]&&e[r].abort&&(e[r].abort(),delete e[r])},removeTile:function(t){var e=this.loaded[t.source],r=t.uid;e&&e[r]&&delete e[r]},loadVectorData:function(t,e){var r=n.getArrayBuffer(t.url,function(t,r){if(t)return e(t);var n=new i.VectorTile(new a(new Uint8Array(r)));e(t,{tile:n,rawTileData:r})}.bind(this));return function(){r.abort()}},redoPlacement:function(t,e){var r=this.loaded[t.source],n=this.loading[t.source],i=t.uid;if(r&&r[i]){var a=r[i].redoPlacement(t.angle,t.pitch,t.showCollisionBoxes);a.result&&e(null,a.result,a.transferables)}else n&&n[i]&&(n[i].angle=t.angle)}}},{"../util/ajax":397,"./worker_tile":346,pbf:451,"vector-tile":544}],344:[function(t,e,r){"use strict";var n=t("../util/util"),i=t("./tile_coord"),a=t("../geo/lng_lat"),o=t("point-geometry"),s=t("../util/evented"),l=t("../util/ajax"),c=t("../data/bucket").EXTENT,u=t("../render/draw_raster").RasterBoundsArray,f=t("../data/buffer"),h=t("../render/vertex_array_object");function d(t,e){this.id=t,this.urls=e.urls,this.coordinates=e.coordinates,l.getVideo(e.urls,function(t,r){if(t)return this.fire("error",{error:t});var n;this.video=r,this.video.loop=!0,this.video.addEventListener("playing",function(){n=this.map.style.animationLoop.set(1/0),this.map._rerender()}.bind(this)),this.video.addEventListener("pause",function(){this.map.style.animationLoop.cancel(n)}.bind(this)),this.map&&(this.video.play(),this.setCoordinates(e.coordinates)),this.fire("load")}.bind(this))}e.exports=d,d.prototype=n.inherit(s,{minzoom:0,maxzoom:22,tileSize:512,roundZoom:!0,getVideo:function(){return this.video},onAdd:function(t){this.map||(this.map=t,this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},setCoordinates:function(t){this.coordinates=t;var e=this.map,r=t.map(function(t){return e.transform.locationCoordinate(a.convert(t)).zoomTo(0)}),s=this.centerCoord=n.getCoordinatesCenter(r);return s.column=Math.round(s.column),s.row=Math.round(s.row),this.minzoom=this.maxzoom=s.zoom,this._coord=new i(s.zoom,s.column,s.row),this._tileCoords=r.map(function(t){var e=t.zoomTo(s.zoom);return new o(Math.round((e.column-s.column)*c),Math.round((e.row-s.row)*c))}),this.fire("change"),this},_setTile:function(t){this._prepared=!1,this.tile=t;var e=new u;e.emplaceBack(this._tileCoords[0].x,this._tileCoords[0].y,0,0),e.emplaceBack(this._tileCoords[1].x,this._tileCoords[1].y,32767,0),e.emplaceBack(this._tileCoords[3].x,this._tileCoords[3].y,0,32767),e.emplaceBack(this._tileCoords[2].x,this._tileCoords[2].y,32767,32767),this.tile.buckets={},this.tile.boundsBuffer=new f(e.serialize(),u.serialize(),f.BufferType.VERTEX),this.tile.boundsVAO=new h,this.tile.state="loaded"},prepare:function(){if(!(this.video.readyState<2)&&this.tile){var t=this.map.painter.gl;this._prepared?(t.bindTexture(t.TEXTURE_2D,this.tile.texture),t.texSubImage2D(t.TEXTURE_2D,0,0,0,t.RGBA,t.UNSIGNED_BYTE,this.video)):(this._prepared=!0,this.tile.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.tile.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,this.video)),this._currentTime=this.video.currentTime}},loadTile:function(t,e){this._coord&&this._coord.toString()===t.coord.toString()?(this._setTile(t),e(null)):(t.state="errored",e(null))},serialize:function(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}})},{"../data/bucket":301,"../data/buffer":306,"../geo/lng_lat":311,"../render/draw_raster":323,"../render/vertex_array_object":329,"../util/ajax":397,"../util/evented":406,"../util/util":414,"./tile_coord":341,"point-geometry":458}],345:[function(t,e,r){"use strict";var n=t("../util/actor"),i=t("../style/style_layer"),a=t("../util/util"),o=t("./vector_tile_worker_source"),s=t("./geojson_worker_source");function l(t){this.self=t,this.actor=new n(t,this);var e={getLayers:function(){return this.layers}.bind(this),getLayerFamilies:function(){return this.layerFamilies}.bind(this)};this.workerSources={vector:new o(this.actor,e),geojson:new s(this.actor,e)},this.self.registerWorkerSource=function(t,r){if(this.workerSources[t])throw new Error('Worker source with name "'+t+'" already registered.');this.workerSources[t]=new r(this.actor,e)}.bind(this)}function c(t){var e={};for(var r in t){var n=t[r],i=n.ref||n.id,a=t[i];a.layout&&"none"===a.layout.visibility||(e[i]=e[i]||[],r===i?e[i].unshift(n):e[i].push(n))}return e}e.exports=function(t){return new l(t)},a.extend(l.prototype,{"set layers":function(t){this.layers={};for(var e=this,r=[],n=0;n=y.maxzoom||y.layout&&"none"===y.layout.visibility||t.layers&&!t.layers[y.sourceLayer]||((x=a.create({layer:y,index:E++,childLayers:e[S],zoom:this.zoom,overscaling:this.overscaling,showCollisionBoxes:this.showCollisionBoxes,collisionBoxArray:this.collisionBoxArray,symbolQuadsArray:this.symbolQuadsArray,symbolInstancesArray:this.symbolInstancesArray,sourceLayerIndex:M.encode(y.sourceLayer||"_geojsonTileLayer")})).createFilter(),A[y.id]=x,t.layers&&(T[b=y.sourceLayer]=T[b]||{},T[b][y.id]=x)));if(t.layers)for(b in T)1===y.version&&l.warnOnce('Vector tile source "'+this.source+'" layer "'+b+'" does not use vector tile spec v2 and therefore may have some rendering errors.'),(y=t.layers[b])&&L(y,T[b]);else L(t,A);function L(t,e){for(var r=0;r0){for(g=P.length-1;g>=0;g--)P[g].updateIcons(D),P[g].updateFont(I);for(var N in I)I[N]=Object.keys(I[N]).map(Number);D=Object.keys(D),r.send("get glyphs",{uid:this.uid,stacks:I},function(t,e){I=e,F(t)}),D.length?r.send("get icons",{icons:D},function(t,e){D=e,F(t)}):F()}for(g=z.length-1;g>=0;g--)j(this,z[g]);if(0===P.length)return B();function F(t){if(t)return v(t);if(2===++R){for(var e=P.length-1;e>=0;e--)j(k,P[e]);B()}}function j(t,e){if(e.populateArrays(_,I,D),"symbol"!==e.type)for(var r=0;r=0;o--)a[o].placeFeatures(n,r);var s=n.serialize(),l=a.filter(h);return{result:{buckets:l.map(d),collisionTile:s.data},transferables:p(l).concat(s.transferables)}}},{"../data/bucket":301,"../data/feature_index":308,"../symbol/collision_box":366,"../symbol/collision_tile":368,"../symbol/symbol_instances":377,"../symbol/symbol_quads":378,"../util/dictionary_coder":404,"../util/util":414}],347:[function(t,e,r){"use strict";function n(){this.n=0,this.times=[]}e.exports=n,n.prototype.stopped=function(){return this.times=this.times.filter(function(t){return t.time>=(new Date).getTime()}),!this.times.length},n.prototype.set=function(t){return this.times.push({id:this.n,time:t+(new Date).getTime()}),this.n++},n.prototype.cancel=function(t){this.times=this.times.filter(function(e){return e.id!==t})}},{}],348:[function(t,e,r){"use strict";var n=t("../util/evented"),i=t("../util/ajax"),a=t("../util/browser"),o=t("../util/mapbox").normalizeSpriteURL;function s(t){this.base=t,this.retina=a.devicePixelRatio>1;var e=this.retina?"@2x":"";i.getJSON(o(t,e,".json"),function(t,e){t?this.fire("error",{error:t}):(this.data=e,this.img&&this.fire("load"))}.bind(this)),i.getImage(o(t,e,".png"),function(t,e){if(t)this.fire("error",{error:t});else{for(var r=e.getData(),n=e.data=new Uint8Array(r.length),i=0;i1!==this.retina){var t=new s(this.base);t.on("load",function(){this.img=t.img,this.data=t.data,this.retina=t.retina}.bind(this))}},l.prototype={x:0,y:0,width:0,height:0,pixelRatio:1,sdf:!1},s.prototype.getSpritePosition=function(t){if(!this.loaded())return new l;var e=this.data&&this.data[t];return e&&this.img?e:new l}},{"../util/ajax":397,"../util/browser":398,"../util/evented":406,"../util/mapbox":411}],349:[function(t,e,r){"use strict";var n=t("csscolorparser").parseCSSColor,i=t("../util/util"),a=t("./style_function"),o={};e.exports=function t(e){if(a.isFunctionDefinition(e))return i.extend({},e,{stops:e.stops.map(function(e){return[e[0],t(e[1])]})});if("string"==typeof e){if(!o[e]){var r=n(e);if(!r)throw new Error("Invalid color "+e);o[e]=[r[0]/255*r[3],r[1]/255*r[3],r[2]/255*r[3],r[3]]}return o[e]}throw new Error("Invalid color "+e)}},{"../util/util":414,"./style_function":352,csscolorparser:114}],350:[function(t,e,r){"use strict";var n=t("../util/evented"),i=t("./style_layer"),a=t("./image_sprite"),o=t("../symbol/glyph_source"),s=t("../symbol/sprite_atlas"),l=t("../render/line_atlas"),c=t("../util/util"),u=t("../util/ajax"),f=t("../util/mapbox").normalizeStyleURL,h=t("../util/browser"),d=t("../util/dispatcher"),p=t("./animation_loop"),m=t("./validate_style"),v=t("../source/source"),g=t("../source/query_features"),y=t("../source/source_cache"),b=t("./style_spec"),x=t("./style_function");function _(t,e,r){this.animationLoop=e||new p,this.dispatcher=new d(r||1,this),this.spriteAtlas=new s(1024,1024),this.lineAtlas=new l(256,512),this._layers={},this._order=[],this._groups=[],this.sources={},this.zoomHistory={},c.bindAll(["_forwardSourceEvent","_forwardTileEvent","_forwardLayerEvent","_redoPlacement"],this),this._resetUpdates();var n=function(t,e){if(t)this.fire("error",{error:t});else if(!m.emitErrors(this,m(e))){this._loaded=!0,this.stylesheet=e,this.updateClasses();var r=e.sources;for(var n in r)this.addSource(n,r[n]);e.sprite&&(this.sprite=new a(e.sprite),this.sprite.on("load",this.fire.bind(this,"change"))),this.glyphSource=new o(e.glyphs),this._resolve(),this.fire("load")}}.bind(this);"string"==typeof t?u.getJSON(f(t),n):h.frame(n.bind(this,null,t)),this.on("source.load",function(t){var e=t.source;if(e&&e.vectorLayerIds)for(var r in this._layers){var n=this._layers[r];n.source===e.id&&this._validateLayer(n)}})}e.exports=_,_.prototype=c.inherit(n,{_loaded:!1,_validateLayer:function(t){var e=this.sources[t.source];t.sourceLayer&&e&&e.vectorLayerIds&&-1===e.vectorLayerIds.indexOf(t.sourceLayer)&&this.fire("error",{error:new Error('Source layer "'+t.sourceLayer+'" does not exist on source "'+e.id+'" as specified by style layer "'+t.id+'"')})},loaded:function(){if(!this._loaded)return!1;if(Object.keys(this._updates.sources).length)return!1;for(var t in this.sources)if(!this.sources[t].loaded())return!1;return!(this.sprite&&!this.sprite.loaded())},_resolve:function(){var t,e;this._layers={},this._order=this.stylesheet.layers.map(function(t){return t.id});for(var r=0;rMath.floor(t)&&(e.lastIntegerZoom=Math.floor(t+1),e.lastIntegerZoomTime=Date.now()),e.lastZoom=t},_checkLoaded:function(){if(!this._loaded)throw new Error("Style is not done loading")},update:function(t,e){if(!this._updates.changed)return this;if(this._updates.allLayers)this._groupLayers(),this._updateWorkerLayers();else{var r=Object.keys(this._updates.layers);r.length&&this._updateWorkerLayers(r)}var n,i=Object.keys(this._updates.sources);for(n=0;n=0&&this._handleErrors(m.source,"sources."+t,e)?this:(e=new y(t,e,this.dispatcher),this.sources[t]=e,e.style=this,e.on("load",this._forwardSourceEvent).on("error",this._forwardSourceEvent).on("change",this._forwardSourceEvent).on("tile.add",this._forwardTileEvent).on("tile.load",this._forwardTileEvent).on("tile.error",this._forwardTileEvent).on("tile.remove",this._forwardTileEvent).on("tile.stats",this._forwardTileEvent),this._updates.events.push(["source.add",{source:e}]),this._updates.changed=!0,this)},removeSource:function(t){if(this._checkLoaded(),void 0===this.sources[t])throw new Error("There is no source with this ID");var e=this.sources[t];return delete this.sources[t],delete this._updates.sources[t],e.off("load",this._forwardSourceEvent).off("error",this._forwardSourceEvent).off("change",this._forwardSourceEvent).off("tile.add",this._forwardTileEvent).off("tile.load",this._forwardTileEvent).off("tile.error",this._forwardTileEvent).off("tile.remove",this._forwardTileEvent).off("tile.stats",this._forwardTileEvent),this._updates.events.push(["source.remove",{source:e}]),this._updates.changed=!0,this},getSource:function(t){return this.sources[t]&&this.sources[t].getSource()},addLayer:function(t,e){if(this._checkLoaded(),!(t instanceof i)){if(this._handleErrors(m.layer,"layers."+t.id,t,!1,{arrayIndex:-1}))return this;var r=t.ref&&this.getLayer(t.ref);t=i.create(t,r)}return this._validateLayer(t),t.on("error",this._forwardLayerEvent),this._layers[t.id]=t,this._order.splice(e?this._order.indexOf(e):1/0,0,t.id),this._updates.allLayers=!0,t.source&&(this._updates.sources[t.source]=!0),this._updates.events.push(["layer.add",{layer:t}]),this.updateClasses(t.id)},removeLayer:function(t){this._checkLoaded();var e=this._layers[t];if(void 0===e)throw new Error("There is no layer with this ID");for(var r in this._layers)this._layers[r].ref===t&&this.removeLayer(r);return e.off("error",this._forwardLayerEvent),delete this._layers[t],delete this._updates.layers[t],delete this._updates.paintProps[t],this._order.splice(this._order.indexOf(t),1),this._updates.allLayers=!0,this._updates.events.push(["layer.remove",{layer:e}]),this._updates.changed=!0,this},getLayer:function(t){return this._layers[t]},getReferentLayer:function(t){var e=this.getLayer(t);return e.ref&&(e=this.getLayer(e.ref)),e},setLayerZoomRange:function(t,e,r){this._checkLoaded();var n=this.getReferentLayer(t);return n.minzoom===e&&n.maxzoom===r?this:(null!=e&&(n.minzoom=e),null!=r&&(n.maxzoom=r),this._updateLayer(n))},setFilter:function(t,e){this._checkLoaded();var r=this.getReferentLayer(t);return null!==e&&this._handleErrors(m.filter,"layers."+r.id+".filter",e)?this:c.deepEqual(r.filter,e)?this:(r.filter=c.clone(e),this._updateLayer(r))},getFilter:function(t){return this.getReferentLayer(t).filter},setLayoutProperty:function(t,e,r){this._checkLoaded();var n=this.getReferentLayer(t);return c.deepEqual(n.getLayoutProperty(e),r)?this:(n.setLayoutProperty(e,r),this._updateLayer(n))},getLayoutProperty:function(t,e){return this.getReferentLayer(t).getLayoutProperty(e)},setPaintProperty:function(t,e,r,n){this._checkLoaded();var i=this.getLayer(t);if(c.deepEqual(i.getPaintProperty(e,n),r))return this;var a=i.isPaintValueFeatureConstant(e);return i.setPaintProperty(e,r,n),!(r&&x.isFunctionDefinition(r)&&"$zoom"!==r.property&&void 0!==r.property)&&a||(this._updates.layers[t]=!0,i.source&&(this._updates.sources[i.source]=!0)),this.updateClasses(t,e)},getPaintProperty:function(t,e,r){return this.getLayer(t).getPaintProperty(e,r)},updateClasses:function(t,e){if(this._updates.changed=!0,t){var r=this._updates.paintProps;r[t]||(r[t]={}),r[t][e||"all"]=!0}else this._updates.allPaintProps=!0;return this},serialize:function(){return c.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:c.mapObject(this.sources,function(t){return t.serialize()}),layers:this._order.map(function(t){return this._layers[t].serialize()},this)},function(t){return void 0!==t})},_updateLayer:function(t){return this._updates.layers[t.id]=!0,t.source&&(this._updates.sources[t.source]=!0),this._updates.changed=!0,this},_flattenRenderedFeatures:function(t){for(var e=[],r=this._order.length-1;r>=0;r--)for(var n=this._order[r],i=0;is.lastIntegerZoom?(r=c+(1-c)*u,f*=2,n=o({zoom:a-1},e),i=o({zoom:a},e)):(r=1-(1-u)*c,i=o({zoom:a},e),n=o({zoom:a+1},e),f/=2),void 0===n||void 0===i?void 0:{from:n,fromScale:f,to:i,toScale:1,t:r}}));var o;if(!this.isFeatureConstant&&!this.isZoomConstant){this.stopZoomLevels=[];for(var s=[],l=this.value.stops,c=0;c=this.maxzoom)||("none"===this.layout.visibility||0===this.paint[this.type+"-opacity"]))},updatePaintTransitions:function(t,e,r,i){for(var a,o=n.extend({},this._paintDeclarations[""]),s=0;s-r/2;){if(--o<0)return!1;s-=t[o].dist(a),a=t[o]}s+=t[o].dist(t[o+1]),o++;var l=[],c=0;for(;sn;)c-=l.shift().angleDelta;if(c>i)return!1;o++,s+=f.dist(h)}return!0}},{}],365:[function(t,e,r){"use strict";var n=t("point-geometry");e.exports=function(t,e,r,i,a){for(var o=[],s=0;s=i&&h.x>=i||(f.x>=i?f=new n(i,f.y+(h.y-f.y)*((i-f.x)/(h.x-f.x)))._round():h.x>=i&&(h=new n(i,f.y+(h.y-f.y)*((i-f.x)/(h.x-f.x)))._round()),f.y>=a&&h.y>=a||(f.y>=a?f=new n(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round():h.y>=a&&(h=new n(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round()),l&&f.equals(l[l.length-1])||(l=[f],o.push(l)),l.push(h)))))}return o}},{"point-geometry":458}],366:[function(t,e,r){"use strict";var n=t("../util/struct_array"),i=t("../util/util"),a=t("point-geometry"),o=e.exports=new n({members:[{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Float32",name:"maxScale"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"},{type:"Int16",name:"bbox0"},{type:"Int16",name:"bbox1"},{type:"Int16",name:"bbox2"},{type:"Int16",name:"bbox3"},{type:"Float32",name:"placementScale"}]});i.extendAll(o.prototype.StructType.prototype,{get anchorPoint(){return new a(this.anchorPointX,this.anchorPointY)}})},{"../util/struct_array":412,"../util/util":414,"point-geometry":458}],367:[function(t,e,r){"use strict";function n(t,e,r,n,i,a,o,s,l,c,u){var f=o.top*s-l,h=o.bottom*s+l,d=o.left*s-l,p=o.right*s+l;if(this.boxStartIndex=t.length,c){var m=h-f,v=p-d;if(m>0)if(m=Math.max(10*s,m),u){var g=e[r.segment+1].sub(e[r.segment])._unit()._mult(v),y=[r.sub(g),r.add(g)];this._addLineCollisionBoxes(t,y,r,0,v,m,n,i,a)}else this._addLineCollisionBoxes(t,e,r,r.segment,v,m,n,i,a)}else t.emplaceBack(r.x,r.y,d,f,p,h,1/0,n,i,a,0,0,0,0,0);this.boxEndIndex=t.length}e.exports=n,n.prototype._addLineCollisionBoxes=function(t,e,r,n,i,a,o,s,l){var c=a/2,u=Math.floor(i/c),f=-a/2,h=this.boxes,d=r,p=n+1,m=f;do{if(--p<0)return h;m-=e[p].dist(d),d=e[p]}while(m>-i/2);for(var v=e[p].dist(e[p+1]),g=0;g=e.length)return h;v=e[p].dist(e[p+1])}var b=y-m,x=e[p],_=e[p+1].sub(x)._unit()._mult(b)._add(x)._round(),w=i/2/Math.max(Math.abs(y-f)-c/2,0);t.emplaceBack(_.x,_.y,-a/2,-a/2,a/2,a/2,w,o,s,l,0,0,0,0,0)}return h}},{}],368:[function(t,e,r){"use strict";var n=t("point-geometry"),i=t("../data/bucket").EXTENT,a=t("grid-index");function o(t,e,r){if("object"==typeof t){var n=t;r=e,t=n.angle,e=n.pitch,this.grid=new a(n.grid),this.ignoredGrid=new a(n.ignoredGrid)}else this.grid=new a(i,12,6),this.ignoredGrid=new a(i,12,0);this.angle=t,this.pitch=e;var o=Math.sin(t),s=Math.cos(t);if(this.rotationMatrix=[s,-o,o,s],this.reverseRotationMatrix=[s,o,-o,s],this.yStretch=1/Math.cos(e/180*Math.PI),this.yStretch=Math.pow(this.yStretch,1.3),this.collisionBoxArray=r,0===r.length){r.emplaceBack();r.emplaceBack(0,0,0,-32767,0,32767,32767,0,0,0,0,0,0,0,0,0),r.emplaceBack(i,0,0,-32767,0,32767,32767,0,0,0,0,0,0,0,0,0),r.emplaceBack(0,0,-32767,0,32767,0,32767,0,0,0,0,0,0,0,0,0),r.emplaceBack(0,i,-32767,0,32767,0,32767,0,0,0,0,0,0,0,0,0)}this.tempCollisionBox=r.get(0),this.edges=[r.get(1),r.get(2),r.get(3),r.get(4)]}e.exports=o,o.prototype.serialize=function(){var t={angle:this.angle,pitch:this.pitch,grid:this.grid.toArrayBuffer(),ignoredGrid:this.ignoredGrid.toArrayBuffer()};return{data:t,transferables:[t.grid,t.ignoredGrid]}},o.prototype.minScale=.25,o.prototype.maxScale=2,o.prototype.placeCollisionFeature=function(t,e,r){for(var i=this.collisionBoxArray,a=this.minScale,o=this.rotationMatrix,s=this.yStretch,l=t.boxStartIndex;l=this.maxScale)return a}if(r){var _;if(this.angle){var w=this.reverseRotationMatrix,M=new n(c.x1,c.y1).matMult(w),k=new n(c.x2,c.y1).matMult(w),A=new n(c.x1,c.y2).matMult(w),T=new n(c.x2,c.y2).matMult(w);(_=this.tempCollisionBox).anchorPointX=c.anchorPoint.x,_.anchorPointY=c.anchorPoint.y,_.x1=Math.min(M.x,k.x,A.x,T.x),_.y1=Math.min(M.y,k.x,A.x,T.x),_.x2=Math.max(M.x,k.x,A.x,T.x),_.y2=Math.max(M.y,k.x,A.x,T.x),_.maxScale=c.maxScale}else _=c;for(var E=0;E=this.maxScale)return a}}}return a},o.prototype.queryRenderedSymbols=function(t,e,r,i,a){var o={},s=[],l=this.collisionBoxArray,c=this.rotationMatrix,u=new n(t,e)._matMult(c),f=this.tempCollisionBox;f.anchorX=u.x,f.anchorY=u.y,f.x1=0,f.y1=0,f.x2=r-t,f.y2=i-e,f.maxScale=a,a=f.maxScale;for(var h=[u.x+f.x1/a,u.y+f.y1/a*this.yStretch,u.x+f.x2/a,u.y+f.y2/a*this.yStretch],d=this.grid.query(h[0],h[1],h[2],h[3]),p=this.ignoredGrid.query(h[0],h[1],h[2],h[3]),m=0;m=a&&(o[y][b]=!0,s.push(d[v]))}}return s},o.prototype.getPlacementScale=function(t,e,r,n,i){var a=e.x-n.x,o=e.y-n.y,s=(i.x1-r.x2)/a,l=(i.x2-r.x1)/a,c=(i.y1-r.y2)*this.yStretch/o,u=(i.y2-r.y1)*this.yStretch/o;(isNaN(s)||isNaN(l))&&(s=l=1),(isNaN(c)||isNaN(u))&&(c=u=1);var f=Math.min(Math.max(s,l),Math.max(c,u)),h=i.maxScale,d=r.maxScale;return f>h&&(f=h),f>d&&(f=d),f>t&&f>=i.placementScale&&(t=f),t},o.prototype.insertCollisionFeature=function(t,e,r){for(var n=r?this.ignoredGrid:this.grid,i=this.collisionBoxArray,a=t.boxStartIndex;a=0&&A=0&&T=0&&g+d<=p){var E=new i(A,T,M,b)._round();s&&!a(e,E,c,s,l)||y.push(E)}}v+=w}f||y.length||u||(y=t(e,v/2,o,s,l,c,u,!0,h));return y}(t,p?e/2*u%e:(d/2+2*l)*c*u%e,e,h,r,d*c,p,!1,f)}},{"../symbol/anchor":363,"../util/interpolate":408,"./check_max_angle":364}],370:[function(t,e,r){"use strict";var n=t("shelf-pack"),i=t("../util/util"),a=128;function o(){this.width=a,this.height=a,this.bin=new n(this.width,this.height),this.index={},this.ids={},this.data=new Uint8Array(this.width*this.height)}e.exports=o,o.prototype.getGlyphs=function(){var t,e,r,n={};for(var i in this.ids)e=(t=i.split("#"))[0],r=t[1],n[e]||(n[e]=[]),n[e].push(r);return n},o.prototype.getRects=function(){var t,e,r,n={};for(var i in this.ids)e=(t=i.split("#"))[0],r=t[1],n[e]||(n[e]={}),n[e][r]=this.index[i];return n},o.prototype.addGlyph=function(t,e,r,n){if(!r)return null;var a=e+"#"+r.id;if(this.index[a])return this.ids[a].indexOf(t)<0&&this.ids[a].push(t),this.index[a];if(!r.bitmap)return null;var o=r.width+2*n,s=r.height+2*n,l=o+2,c=s+2;l+=4-l%4,c+=4-c%4;var u=this.bin.packOne(l,c);if(u||(this.resize(),u=this.bin.packOne(l,c)),!u)return i.warnOnce("glyph bitmap overflow"),null;this.index[a]=u,this.ids[a]=[t];for(var f=this.data,h=r.bitmap,d=0;d=2048||e>=2048)){this.texture&&(this.gl&&this.gl.deleteTexture(this.texture),this.texture=null),this.width*=4,this.height*=4,this.bin.resize(this.width,this.height);for(var r=new ArrayBuffer(this.width*this.height),n=0;n65535)return r("glyphs > 65535 not supported");void 0===this.loading[t]&&(this.loading[t]={});var n=this.loading[t];if(n[e])n[e].push(r);else{n[e]=[r];var o=function(t,e,r,n){return n=n||"abc",r.replace("{s}",n[t.length%n.length]).replace("{fontstack}",t).replace("{range}",e)}(t,256*e+"-"+(256*e+255),this.url);i(o,function(t,r){for(var i=!t&&new a(new s(new Uint8Array(r))),o=0;on&&null!==f){var b=v[f+1].x;m=Math.max(b,m);for(var x=f+1;x<=g;x++)v[x].y+=r,v[x].x-=b;if(c){var _=f;i[v[f].codePoint]&&_--,o(v,e,d,_,c)}d=f+1,f=null,h+=b,p++}a[y.codePoint]&&(f=g)}var w=v[v.length-1],M=w.x+e[w.codePoint].advance;m=Math.max(m,M);var k=(p+1)*r;o(v,e,d,v.length-1,c),function(t,e,r,n,i,a,o,s){for(var l=(e-r)*i+s[0],c=(-n*(o+1)+.5)*a+s[1],u=0;u1?2:1,this.canvas&&(this.canvas.width=this.width*this.pixelRatio,this.canvas.height=this.height*this.pixelRatio)),this.sprite=t},o.prototype.addIcons=function(t,e){for(var r=0;r1)return;l?(clearTimeout(l),l=null,f("dblclick",e)):l=setTimeout(u,300)},!1),r.addEventListener("touchend",function(t){h("touchend",t)},!1),r.addEventListener("touchmove",function(t){h("touchmove",t)},!1),r.addEventListener("touchcancel",function(t){h("touchcancel",t)},!1),r.addEventListener("click",function(t){n.mousePos(r,t).equals(s)&&f("click",t)},!1),r.addEventListener("dblclick",function(t){f("dblclick",t),t.preventDefault()},!1),r.addEventListener("contextmenu",function(t){o=t,t.preventDefault()},!1)}},{"../util/dom":400,"./handler/box_zoom":385,"./handler/dblclick_zoom":386,"./handler/drag_pan":387,"./handler/drag_rotate":388,"./handler/keyboard":389,"./handler/scroll_zoom":390,"./handler/touch_zoom_rotate":391,"point-geometry":458}],380:[function(t,e,r){"use strict";var n=t("../util/util"),i=t("../util/interpolate"),a=t("../util/browser"),o=t("../geo/lng_lat"),s=t("../geo/lng_lat_bounds"),l=t("point-geometry"),c=e.exports=function(){};n.extend(c.prototype,{getCenter:function(){return this.transform.center},setCenter:function(t,e){return this.jumpTo({center:t},e),this},panBy:function(t,e,r){return this.panTo(this.transform.center,n.extend({offset:l.convert(t).mult(-1)},e),r),this},panTo:function(t,e,r){return this.easeTo(n.extend({center:t},e),r)},getZoom:function(){return this.transform.zoom},setZoom:function(t,e){return this.jumpTo({zoom:t},e),this},zoomTo:function(t,e,r){return this.easeTo(n.extend({zoom:t},e),r)},zoomIn:function(t,e){return this.zoomTo(this.getZoom()+1,t,e),this},zoomOut:function(t,e){return this.zoomTo(this.getZoom()-1,t,e),this},getBearing:function(){return this.transform.bearing},setBearing:function(t,e){return this.jumpTo({bearing:t},e),this},rotateTo:function(t,e,r){return this.easeTo(n.extend({bearing:t},e),r)},resetNorth:function(t,e){return this.rotateTo(0,n.extend({duration:1e3},t),e),this},snapToNorth:function(t,e){return Math.abs(this.getBearing())180&&(r.center.lng>0&&f.lng<0?f.lng+=360:r.center.lng<0&&f.lng>0&&(f.lng-=360));var m=r.zoomScale(h-s),v=r.point,g="center"in t?r.project(f).sub(a.div(m)):v,y=r.worldSize,b=t.curve,x=Math.max(r.width,r.height),_=x/m,w=g.sub(v).mag();if("minZoom"in t){var M=n.clamp(Math.min(t.minZoom,s,h),r.minZoom,r.maxZoom),k=x/r.zoomScale(M-s);b=Math.sqrt(k/w*2)}var A=b*b;function T(t){var e=(_*_-x*x+(t?-1:1)*A*A*w*w)/(2*(t?_:x)*A*w);return Math.log(Math.sqrt(e*e+1)-e)}function E(t){return(Math.exp(t)-Math.exp(-t))/2}function S(t){return(Math.exp(t)+Math.exp(-t))/2}var L=T(0),C=function(t){return S(L)/S(L+b*t)},P=function(t){return x*((S(L)*(E(e=L+b*t)/S(e))-E(L))/A)/w;var e},z=(T(1)-L)/b;if(Math.abs(w)<1e-6){if(Math.abs(x-_)<1e-6)return this.easeTo(t);var O=_=0)return!1;return!0})).join(" | ")},o.prototype=a.inherit(n,{options:{position:"bottom-right"},onAdd:function(t){var e=this._container=i.create("div","mapboxgl-ctrl-attrib",t.getContainer());return this._update(),t.on("source.load",this._update.bind(this)),t.on("source.change",this._update.bind(this)),t.on("source.remove",this._update.bind(this)),t.on("moveend",this._updateEditLink.bind(this)),e},_update:function(){this._map.style&&(this._container.innerHTML=o.createAttributionString(this._map.style.sources)),this._editLink=this._container.getElementsByClassName("mapbox-improve-map")[0],this._updateEditLink()},_updateEditLink:function(){if(this._editLink){var t=this._map.getCenter();this._editLink.href="https://www.mapbox.com/map-feedback/#/"+t.lng+"/"+t.lat+"/"+Math.round(this._map.getZoom()+1)}}})},{"../../util/dom":400,"../../util/util":414,"./control":382}],382:[function(t,e,r){"use strict";var n=t("../../util/util"),i=t("../../util/evented");function a(){}e.exports=a,a.prototype={addTo:function(t){this._map=t;var e=this._container=this.onAdd(t);if(this.options&&this.options.position){var r=this.options.position,n=t._controlCorners[r];e.className+=" mapboxgl-ctrl",-1!==r.indexOf("bottom")?n.insertBefore(e,n.firstChild):n.appendChild(e)}return this},remove:function(){return this._container.parentNode.removeChild(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this}},n.extend(a.prototype,i)},{"../../util/evented":406,"../../util/util":414}],383:[function(t,e,r){"use strict";var n=t("./control"),i=t("../../util/browser"),a=t("../../util/dom"),o=t("../../util/util");e.exports=l;var s={enableHighAccuracy:!1,timeout:6e3};function l(t){o.setOptions(this,t)}l.prototype=o.inherit(n,{options:{position:"top-right"},onAdd:function(t){var e=this._container=a.create("div","mapboxgl-ctrl-group",t.getContainer());return i.supportsGeolocation?(this._container.addEventListener("contextmenu",this._onContextMenu.bind(this)),this._geolocateButton=a.create("button","mapboxgl-ctrl-icon mapboxgl-ctrl-geolocate",this._container),this._geolocateButton.type="button",this._geolocateButton.addEventListener("click",this._onClickGeolocate.bind(this)),e):e},_onContextMenu:function(t){t.preventDefault()},_onClickGeolocate:function(){navigator.geolocation.getCurrentPosition(this._success.bind(this),this._error.bind(this),s),this._timeoutId=setTimeout(this._finish.bind(this),1e4)},_success:function(t){this._map.jumpTo({center:[t.coords.longitude,t.coords.latitude],zoom:17,bearing:0,pitch:0}),this.fire("geolocate",t),this._finish()},_error:function(t){this.fire("error",t),this._finish()},_finish:function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0}})},{"../../util/browser":398,"../../util/dom":400,"../../util/util":414,"./control":382}],384:[function(t,e,r){"use strict";var n=t("./control"),i=t("../../util/dom"),a=t("../../util/util");function o(t){a.setOptions(this,t)}function s(t){return new MouseEvent(t.type,{button:2,buttons:2,bubbles:!0,cancelable:!0,detail:t.detail,view:t.view,screenX:t.screenX,screenY:t.screenY,clientX:t.clientX,clientY:t.clientY,movementX:t.movementX,movementY:t.movementY,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey})}e.exports=o,o.prototype=a.inherit(n,{options:{position:"top-right"},onAdd:function(t){var e="mapboxgl-ctrl",r=this._container=i.create("div",e+"-group",t.getContainer());return this._container.addEventListener("contextmenu",this._onContextMenu.bind(this)),this._zoomInButton=this._createButton(e+"-icon "+e+"-zoom-in",t.zoomIn.bind(t)),this._zoomOutButton=this._createButton(e+"-icon "+e+"-zoom-out",t.zoomOut.bind(t)),this._compass=this._createButton(e+"-icon "+e+"-compass",t.resetNorth.bind(t)),this._compassArrow=i.create("div","arrow",this._compass),this._compass.addEventListener("mousedown",this._onCompassDown.bind(this)),this._onCompassMove=this._onCompassMove.bind(this),this._onCompassUp=this._onCompassUp.bind(this),t.on("rotate",this._rotateCompassArrow.bind(this)),this._rotateCompassArrow(),this._el=t.getCanvasContainer(),r},_onContextMenu:function(t){t.preventDefault()},_onCompassDown:function(t){0===t.button&&(i.disableDrag(),document.addEventListener("mousemove",this._onCompassMove),document.addEventListener("mouseup",this._onCompassUp),this._el.dispatchEvent(s(t)),t.stopPropagation())},_onCompassMove:function(t){0===t.button&&(this._el.dispatchEvent(s(t)),t.stopPropagation())},_onCompassUp:function(t){0===t.button&&(document.removeEventListener("mousemove",this._onCompassMove),document.removeEventListener("mouseup",this._onCompassUp),i.enableDrag(),this._el.dispatchEvent(s(t)),t.stopPropagation())},_createButton:function(t,e){var r=i.create("button",t,this._container);return r.type="button",r.addEventListener("click",function(){e()}),r},_rotateCompassArrow:function(){var t="rotate("+this._map.transform.angle*(180/Math.PI)+"deg)";this._compassArrow.style.transform=t}})},{"../../util/dom":400,"../../util/util":414,"./control":382}],385:[function(t,e,r){"use strict";var n=t("../../util/dom"),i=t("../../geo/lng_lat_bounds"),a=t("../../util/util");function o(t){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),a.bindHandlers(this)}e.exports=o,o.prototype={_enabled:!1,_active:!1,isEnabled:function(){return this._enabled},isActive:function(){return this._active},enable:function(){this.isEnabled()||(this._el.addEventListener("mousedown",this._onMouseDown,!1),this._enabled=!0)},disable:function(){this.isEnabled()&&(this._el.removeEventListener("mousedown",this._onMouseDown),this._enabled=!1)},_onMouseDown:function(t){t.shiftKey&&0===t.button&&(document.addEventListener("mousemove",this._onMouseMove,!1),document.addEventListener("keydown",this._onKeyDown,!1),document.addEventListener("mouseup",this._onMouseUp,!1),n.disableDrag(),this._startPos=n.mousePos(this._el,t),this._active=!0)},_onMouseMove:function(t){var e=this._startPos,r=n.mousePos(this._el,t);this._box||(this._box=n.create("div","mapboxgl-boxzoom",this._container),this._container.classList.add("mapboxgl-crosshair"),this._fireEvent("boxzoomstart",t));var i=Math.min(e.x,r.x),a=Math.max(e.x,r.x),o=Math.min(e.y,r.y),s=Math.max(e.y,r.y);n.setTransform(this._box,"translate("+i+"px,"+o+"px)"),this._box.style.width=a-i+"px",this._box.style.height=s-o+"px"},_onMouseUp:function(t){if(0===t.button){var e=this._startPos,r=n.mousePos(this._el,t),a=new i(this._map.unproject(e),this._map.unproject(r));this._finish(),e.x===r.x&&e.y===r.y?this._fireEvent("boxzoomcancel",t):this._map.fitBounds(a,{linear:!0}).fire("boxzoomend",{originalEvent:t,boxZoomBounds:a})}},_onKeyDown:function(t){27===t.keyCode&&(this._finish(),this._fireEvent("boxzoomcancel",t))},_finish:function(){this._active=!1,document.removeEventListener("mousemove",this._onMouseMove,!1),document.removeEventListener("keydown",this._onKeyDown,!1),document.removeEventListener("mouseup",this._onMouseUp,!1),this._container.classList.remove("mapboxgl-crosshair"),this._box&&(this._box.parentNode.removeChild(this._box),this._box=null),n.enableDrag()},_fireEvent:function(t,e){return this._map.fire(t,{originalEvent:e})}}},{"../../geo/lng_lat_bounds":312,"../../util/dom":400,"../../util/util":414}],386:[function(t,e,r){"use strict";function n(t){this._map=t,this._onDblClick=this._onDblClick.bind(this)}e.exports=n,n.prototype={_enabled:!1,isEnabled:function(){return this._enabled},enable:function(){this.isEnabled()||(this._map.on("dblclick",this._onDblClick),this._enabled=!0)},disable:function(){this.isEnabled()&&(this._map.off("dblclick",this._onDblClick),this._enabled=!1)},_onDblClick:function(t){this._map.zoomTo(this._map.getZoom()+(t.originalEvent.shiftKey?-1:1),{around:t.lngLat},t)}}},{}],387:[function(t,e,r){"use strict";var n=t("../../util/dom"),i=t("../../util/util");e.exports=o;var a=i.bezier(0,0,.3,1);function o(t){this._map=t,this._el=t.getCanvasContainer(),i.bindHandlers(this)}o.prototype={_enabled:!1,_active:!1,isEnabled:function(){return this._enabled},isActive:function(){return this._active},enable:function(){this.isEnabled()||(this._el.addEventListener("mousedown",this._onDown),this._el.addEventListener("touchstart",this._onDown),this._enabled=!0)},disable:function(){this.isEnabled()&&(this._el.removeEventListener("mousedown",this._onDown),this._el.removeEventListener("touchstart",this._onDown),this._enabled=!1)},_onDown:function(t){this._ignoreEvent(t)||this.isActive()||(t.touches?(document.addEventListener("touchmove",this._onMove),document.addEventListener("touchend",this._onTouchEnd)):(document.addEventListener("mousemove",this._onMove),document.addEventListener("mouseup",this._onMouseUp)),this._active=!1,this._startPos=this._pos=n.mousePos(this._el,t),this._inertia=[[Date.now(),this._pos]])},_onMove:function(t){if(!this._ignoreEvent(t)){this.isActive()||(this._active=!0,this._fireEvent("dragstart",t),this._fireEvent("movestart",t));var e=n.mousePos(this._el,t),r=this._map;r.stop(),this._drainInertiaBuffer(),this._inertia.push([Date.now(),e]),r.transform.setLocationAtPoint(r.transform.pointLocation(this._pos),e),this._fireEvent("drag",t),this._fireEvent("move",t),this._pos=e,t.preventDefault()}},_onUp:function(t){if(this.isActive()){this._active=!1,this._fireEvent("dragend",t),this._drainInertiaBuffer();var e=function(){this._fireEvent("moveend",t)}.bind(this),r=this._inertia;if(r.length<2)e();else{var n=r[r.length-1],i=r[0],o=n[1].sub(i[1]),s=(n[0]-i[0])/1e3;if(0===s||n[1].equals(i[1]))e();else{var l=o.mult(.3/s),c=l.mag();c>1400&&(c=1400,l._unit()._mult(c));var u=c/750,f=l.mult(-u/2);this._map.panBy(f,{duration:1e3*u,easing:a,noMoveStart:!0},{originalEvent:t})}}}},_onMouseUp:function(t){this._ignoreEvent(t)||(this._onUp(t),document.removeEventListener("mousemove",this._onMove),document.removeEventListener("mouseup",this._onMouseUp))},_onTouchEnd:function(t){this._ignoreEvent(t)||(this._onUp(t),document.removeEventListener("touchmove",this._onMove),document.removeEventListener("touchend",this._onTouchEnd))},_fireEvent:function(t,e){return this._map.fire(t,{originalEvent:e})},_ignoreEvent:function(t){var e=this._map;if(e.boxZoom&&e.boxZoom.isActive())return!0;if(e.dragRotate&&e.dragRotate.isActive())return!0;if(t.touches)return t.touches.length>1;if(t.ctrlKey)return!0;return"mousemove"===t.type?!1&t.buttons:0!==t.button},_drainInertiaBuffer:function(){for(var t=this._inertia,e=Date.now();t.length>0&&e-t[0][0]>160;)t.shift()}}},{"../../util/dom":400,"../../util/util":414}],388:[function(t,e,r){"use strict";var n=t("../../util/dom"),i=t("point-geometry"),a=t("../../util/util");e.exports=s;var o=a.bezier(0,0,.25,1);function s(t,e){this._map=t,this._el=t.getCanvasContainer(),this._bearingSnap=e.bearingSnap,a.bindHandlers(this)}s.prototype={_enabled:!1,_active:!1,isEnabled:function(){return this._enabled},isActive:function(){return this._active},enable:function(){this.isEnabled()||(this._el.addEventListener("mousedown",this._onDown),this._enabled=!0)},disable:function(){this.isEnabled()&&(this._el.removeEventListener("mousedown",this._onDown),this._enabled=!1)},_onDown:function(t){if(!this._ignoreEvent(t)&&!this.isActive()){document.addEventListener("mousemove",this._onMove),document.addEventListener("mouseup",this._onUp),this._active=!1,this._inertia=[[Date.now(),this._map.getBearing()]],this._startPos=this._pos=n.mousePos(this._el,t),this._center=this._map.transform.centerPoint;var e=this._startPos.sub(this._center);e.mag()<200&&(this._center=this._startPos.add(new i(-200,0)._rotate(e.angle()))),t.preventDefault()}},_onMove:function(t){if(!this._ignoreEvent(t)){this.isActive()||(this._active=!0,this._fireEvent("rotatestart",t),this._fireEvent("movestart",t));var e=this._map;e.stop();var r=this._pos,i=n.mousePos(this._el,t),a=this._center,o=r.sub(a).angleWith(i.sub(a))/Math.PI*180,s=e.getBearing()-o,l=this._inertia,c=l[l.length-1];this._drainInertiaBuffer(),l.push([Date.now(),e._normalizeBearing(s,c[1])]),e.transform.bearing=s,this._fireEvent("rotate",t),this._fireEvent("move",t),this._pos=i}},_onUp:function(t){if(!this._ignoreEvent(t)&&(document.removeEventListener("mousemove",this._onMove),document.removeEventListener("mouseup",this._onUp),this.isActive())){this._active=!1,this._fireEvent("rotateend",t),this._drainInertiaBuffer();var e=this._map,r=e.getBearing(),n=this._inertia,i=function(){Math.abs(r)180&&(d=180);var p=d/180;c+=f*d*(p/2),Math.abs(e._normalizeBearing(c,0))1;var r=t.ctrlKey?1:2,n=t.ctrlKey?0:2;return"mousemove"===t.type?t.buttons&0===r:t.button!==n},_drainInertiaBuffer:function(){for(var t=this._inertia,e=Date.now();t.length>0&&e-t[0][0]>160;)t.shift()}}},{"../../util/dom":400,"../../util/util":414,"point-geometry":458}],389:[function(t,e,r){"use strict";e.exports=n;function n(t){this._map=t,this._el=t.getCanvasContainer(),this._onKeyDown=this._onKeyDown.bind(this)}n.prototype={_enabled:!1,isEnabled:function(){return this._enabled},enable:function(){this.isEnabled()||(this._el.addEventListener("keydown",this._onKeyDown,!1),this._enabled=!0)},disable:function(){this.isEnabled()&&(this._el.removeEventListener("keydown",this._onKeyDown),this._enabled=!1)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var e=this._map,r={originalEvent:t};if(!e.isEasing())switch(t.keyCode){case 61:case 107:case 171:case 187:e.zoomTo(Math.round(e.getZoom())+(t.shiftKey?2:1),r);break;case 189:case 109:case 173:e.zoomTo(Math.round(e.getZoom())-(t.shiftKey?2:1),r);break;case 37:t.shiftKey?e.easeTo({bearing:e.getBearing()-2},r):(t.preventDefault(),e.panBy([-80,0],r));break;case 39:t.shiftKey?e.easeTo({bearing:e.getBearing()+2},r):(t.preventDefault(),e.panBy([80,0],r));break;case 38:t.shiftKey?e.easeTo({pitch:e.getPitch()+5},r):(t.preventDefault(),e.panBy([0,-80],r));break;case 40:t.shiftKey?e.easeTo({pitch:Math.max(e.getPitch()-5,0)},r):(t.preventDefault(),e.panBy([0,80],r))}}}}},{}],390:[function(t,e,r){"use strict";var n=t("../../util/dom"),i=t("../../util/browser"),a=t("../../util/util");e.exports=c;var o="undefined"!=typeof navigator?navigator.userAgent.toLowerCase():"",s=-1!==o.indexOf("firefox"),l=-1!==o.indexOf("safari")&&-1===o.indexOf("chrom");function c(t){this._map=t,this._el=t.getCanvasContainer(),a.bindHandlers(this)}c.prototype={_enabled:!1,isEnabled:function(){return this._enabled},enable:function(){this.isEnabled()||(this._el.addEventListener("wheel",this._onWheel,!1),this._el.addEventListener("mousewheel",this._onWheel,!1),this._enabled=!0)},disable:function(){this.isEnabled()&&(this._el.removeEventListener("wheel",this._onWheel),this._el.removeEventListener("mousewheel",this._onWheel),this._enabled=!1)},_onWheel:function(t){var e;"wheel"===t.type?(e=t.deltaY,s&&t.deltaMode===window.WheelEvent.DOM_DELTA_PIXEL&&(e/=i.devicePixelRatio),t.deltaMode===window.WheelEvent.DOM_DELTA_LINE&&(e*=40)):"mousewheel"===t.type&&(e=-t.wheelDeltaY,l&&(e/=3));var r=i.now(),a=r-(this._time||0);this._pos=n.mousePos(this._el,t),this._time=r,0!==e&&e%4.000244140625==0?(this._type="wheel",e=Math.floor(e/4)):0!==e&&Math.abs(e)<4?this._type="trackpad":a>400?(this._type=null,this._lastValue=e,this._timeout=setTimeout(this._onTimeout,40)):this._type||(this._type=Math.abs(a*e)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,e+=this._lastValue)),t.shiftKey&&e&&(e/=4),this._type&&this._zoom(-e,t),t.preventDefault()},_onTimeout:function(){this._type="wheel",this._zoom(-this._lastValue)},_zoom:function(t,e){if(0!==t){var r=this._map,n=2/(1+Math.exp(-Math.abs(t/100)));t<0&&0!==n&&(n=1/n);var i=r.ease?r.ease.to:r.transform.scale,a=r.transform.scaleZoom(i*n);r.zoomTo(a,{duration:0,around:r.unproject(this._pos),delayEndEvents:200},{originalEvent:e})}}}},{"../../util/browser":398,"../../util/dom":400,"../../util/util":414}],391:[function(t,e,r){"use strict";var n=t("../../util/dom"),i=t("../../util/util");e.exports=o;var a=i.bezier(0,0,.15,1);function o(t){this._map=t,this._el=t.getCanvasContainer(),i.bindHandlers(this)}o.prototype={_enabled:!1,isEnabled:function(){return this._enabled},enable:function(){this.isEnabled()||(this._el.addEventListener("touchstart",this._onStart,!1),this._enabled=!0)},disable:function(){this.isEnabled()&&(this._el.removeEventListener("touchstart",this._onStart),this._enabled=!1)},disableRotation:function(){this._rotationDisabled=!0},enableRotation:function(){this._rotationDisabled=!1},_onStart:function(t){if(2===t.touches.length){var e=n.mousePos(this._el,t.touches[0]),r=n.mousePos(this._el,t.touches[1]);this._startVec=e.sub(r),this._startScale=this._map.transform.scale,this._startBearing=this._map.transform.bearing,this._gestureIntent=void 0,this._inertia=[],document.addEventListener("touchmove",this._onMove,!1),document.addEventListener("touchend",this._onEnd,!1)}},_onMove:function(t){if(2===t.touches.length){var e=n.mousePos(this._el,t.touches[0]),r=n.mousePos(this._el,t.touches[1]),i=e.add(r).div(2),a=e.sub(r),o=a.mag()/this._startVec.mag(),s=this._rotationDisabled?0:180*a.angleWith(this._startVec)/Math.PI,l=this._map;if(this._gestureIntent){var c={duration:0,around:l.unproject(i)};"rotate"===this._gestureIntent&&(c.bearing=this._startBearing+s),"zoom"!==this._gestureIntent&&"rotate"!==this._gestureIntent||(c.zoom=l.transform.scaleZoom(this._startScale*o)),l.stop(),this._drainInertiaBuffer(),this._inertia.push([Date.now(),o,i]),l.easeTo(c,{originalEvent:t})}else{var u=Math.abs(1-o)>.15;Math.abs(s)>4?this._gestureIntent="rotate":u&&(this._gestureIntent="zoom"),this._gestureIntent&&(this._startVec=a,this._startScale=l.transform.scale,this._startBearing=l.transform.bearing)}t.preventDefault()}},_onEnd:function(t){document.removeEventListener("touchmove",this._onMove),document.removeEventListener("touchend",this._onEnd),this._drainInertiaBuffer();var e=this._inertia,r=this._map;if(e.length<2)r.snapToNorth({},{originalEvent:t});else{var n=e[e.length-1],i=e[0],o=r.transform.scaleZoom(this._startScale*n[1]),s=r.transform.scaleZoom(this._startScale*i[1]),l=o-s,c=(n[0]-i[0])/1e3,u=n[2];if(0!==c&&o!==s){var f=.15*l/c;Math.abs(f)>2.5&&(f=f>0?2.5:-2.5);var h=1e3*Math.abs(f/(12*.15)),d=o+f*h/2e3;d<0&&(d=0),r.easeTo({zoom:d,duration:h,easing:a,around:r.unproject(u)},{originalEvent:t})}else r.snapToNorth({},{originalEvent:t})}},_drainInertiaBuffer:function(){for(var t=this._inertia,e=Date.now();t.length>2&&e-t[0][0]>160;)t.shift()}}},{"../../util/dom":400,"../../util/util":414}],392:[function(t,e,r){"use strict";e.exports=i;var n=t("../util/util");function i(){n.bindAll(["_onHashChange","_updateHash"],this)}i.prototype={addTo:function(t){return this._map=t,window.addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this},remove:function(){return window.removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),delete this._map,this},_onHashChange:function(){var t=location.hash.replace("#","").split("/");return t.length>=3&&(this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:+(t[3]||0)}),!0)},_updateHash:function(){var t=this._map.getCenter(),e=this._map.getZoom(),r=this._map.getBearing(),n=Math.max(0,Math.ceil(Math.log(e)/Math.LN2)),i="#"+Math.round(100*e)/100+"/"+t.lat.toFixed(n)+"/"+t.lng.toFixed(n)+(r?"/"+Math.round(10*r)/10:"");window.history.replaceState("","",i)}}},{"../util/util":414}],393:[function(t,e,r){"use strict";var n=t("../util/canvas"),i=t("../util/util"),a=t("../util/browser"),o=t("../util/browser").window,s=t("../util/evented"),l=t("../util/dom"),c=t("../style/style"),u=t("../style/animation_loop"),f=t("../render/painter"),h=t("../geo/transform"),d=t("./hash"),p=t("./bind_handlers"),m=t("./camera"),v=t("../geo/lng_lat"),g=t("../geo/lng_lat_bounds"),y=t("point-geometry"),b=t("./control/attribution"),x={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:0,maxZoom:20,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,bearingSnap:7,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,workerCount:Math.max(a.hardwareConcurrency-1,1)},_=e.exports=function(t){if((t=i.extend({},x,t)).workerCount<1)throw new Error("workerCount must an integer greater than or equal to 1.");this._interactive=t.interactive,this._failIfMajorPerformanceCaveat=t.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=t.preserveDrawingBuffer,this._trackResize=t.trackResize,this._workerCount=t.workerCount,this._bearingSnap=t.bearingSnap,"string"==typeof t.container?this._container=document.getElementById(t.container):this._container=t.container,this.animationLoop=new u,this.transform=new h(t.minZoom,t.maxZoom),t.maxBounds&&this.setMaxBounds(t.maxBounds),i.bindAll(["_forwardStyleEvent","_forwardSourceEvent","_forwardLayerEvent","_forwardTileEvent","_onStyleLoad","_onStyleChange","_onSourceAdd","_onSourceRemove","_onSourceUpdate","_onWindowOnline","_onWindowResize","_update","_render"],this),this._setupContainer(),this._setupPainter(),this.on("move",this._update.bind(this,!1)),this.on("zoom",this._update.bind(this,!0)),this.on("moveend",function(){this.animationLoop.set(300),this._rerender()}.bind(this)),void 0!==o&&(o.addEventListener("online",this._onWindowOnline,!1),o.addEventListener("resize",this._onWindowResize,!1)),p(this,t),this._hash=t.hash&&(new d).addTo(this),this._hash&&this._hash._onHashChange()||this.jumpTo({center:t.center,zoom:t.zoom,bearing:t.bearing,pitch:t.pitch}),this.stacks={},this._classes=[],this.resize(),t.classes&&this.setClasses(t.classes),t.style&&this.setStyle(t.style),t.attributionControl&&this.addControl(new b(t.attributionControl));var e=this.fire.bind(this,"error");this.on("style.error",e),this.on("source.error",e),this.on("tile.error",e),this.on("layer.error",e)};function w(t){t.parentNode&&t.parentNode.removeChild(t)}i.extend(_.prototype,s),i.extend(_.prototype,m.prototype),i.extend(_.prototype,{addControl:function(t){return t.addTo(this),this},addClass:function(t,e){return this._classes.indexOf(t)>=0||""===t?this:(this._classes.push(t),this._classOptions=e,this.style&&this.style.updateClasses(),this._update(!0))},removeClass:function(t,e){var r=this._classes.indexOf(t);return r<0||""===t?this:(this._classes.splice(r,1),this._classOptions=e,this.style&&this.style.updateClasses(),this._update(!0))},setClasses:function(t,e){for(var r={},n=0;n=0},getClasses:function(){return this._classes},resize:function(){var t=0,e=0;return this._container&&(t=this._container.offsetWidth||400,e=this._container.offsetHeight||300),this._canvas.resize(t,e),this.transform.resize(t,e),this.painter.resize(t,e),this.fire("movestart").fire("move").fire("resize").fire("moveend")},getBounds:function(){var t=new g(this.transform.pointLocation(new y(0,0)),this.transform.pointLocation(this.transform.size));return(this.transform.angle||this.transform.pitch)&&(t.extend(this.transform.pointLocation(new y(this.transform.size.x,0))),t.extend(this.transform.pointLocation(new y(0,this.transform.size.y)))),t},setMaxBounds:function(t){if(t){var e=g.convert(t);this.transform.lngRange=[e.getWest(),e.getEast()],this.transform.latRange=[e.getSouth(),e.getNorth()],this.transform._constrain(),this._update()}else null!==t&&void 0!==t||(this.transform.lngRange=[],this.transform.latRange=[],this._update());return this},setMinZoom:function(t){if((t=null===t||void 0===t?0:t)>=0&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom&&t<=20)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error("maxZoom must be between the current minZoom and 20, inclusive")},project:function(t){return this.transform.locationPoint(v.convert(t))},unproject:function(t){return this.transform.pointLocation(y.convert(t))},queryRenderedFeatures:function(){var t,e,r={};return 2===arguments.length?(t=arguments[0],r=arguments[1]):1===arguments.length&&((e=arguments[0])instanceof y||Array.isArray(e))?t=arguments[0]:1===arguments.length&&(r=arguments[0]),this.style.queryRenderedFeatures(this._makeQueryGeometry(t),r,this.transform.zoom,this.transform.angle)},_makeQueryGeometry:function(t){var e;if(void 0===t&&(t=[y.convert([0,0]),y.convert([this.transform.width,this.transform.height])]),t instanceof y||"number"==typeof t[0]){e=[y.convert(t)]}else{var r=[y.convert(t[0]),y.convert(t[1])];e=[r[0],new y(r[1].x,r[0].y),r[1],new y(r[0].x,r[1].y),r[0]]}return e=e.map(function(t){return this.transform.pointCoordinate(t)}.bind(this))},querySourceFeatures:function(t,e){return this.style.querySourceFeatures(t,e)},setStyle:function(t){return this.style&&(this.style.off("load",this._onStyleLoad).off("error",this._forwardStyleEvent).off("change",this._onStyleChange).off("source.add",this._onSourceAdd).off("source.remove",this._onSourceRemove).off("source.load",this._onSourceUpdate).off("source.error",this._forwardSourceEvent).off("source.change",this._onSourceUpdate).off("layer.add",this._forwardLayerEvent).off("layer.remove",this._forwardLayerEvent).off("layer.error",this._forwardLayerEvent).off("tile.add",this._forwardTileEvent).off("tile.remove",this._forwardTileEvent).off("tile.load",this._update).off("tile.error",this._forwardTileEvent).off("tile.stats",this._forwardTileEvent)._remove(),this.off("rotate",this.style._redoPlacement),this.off("pitch",this.style._redoPlacement)),t?(this.style=t instanceof c?t:new c(t,this.animationLoop,this._workerCount),this.style.on("load",this._onStyleLoad).on("error",this._forwardStyleEvent).on("change",this._onStyleChange).on("source.add",this._onSourceAdd).on("source.remove",this._onSourceRemove).on("source.load",this._onSourceUpdate).on("source.error",this._forwardSourceEvent).on("source.change",this._onSourceUpdate).on("layer.add",this._forwardLayerEvent).on("layer.remove",this._forwardLayerEvent).on("layer.error",this._forwardLayerEvent).on("tile.add",this._forwardTileEvent).on("tile.remove",this._forwardTileEvent).on("tile.load",this._update).on("tile.error",this._forwardTileEvent).on("tile.stats",this._forwardTileEvent),this.on("rotate",this.style._redoPlacement),this.on("pitch",this.style._redoPlacement),this):(this.style=null,this)},getStyle:function(){if(this.style)return this.style.serialize()},addSource:function(t,e){return this.style.addSource(t,e),this._update(!0),this},addSourceType:function(t,e,r){return this.style.addSourceType(t,e,r)},removeSource:function(t){return this.style.removeSource(t),this._update(!0),this},getSource:function(t){return this.style.getSource(t)},addLayer:function(t,e){return this.style.addLayer(t,e),this._update(!0),this},removeLayer:function(t){return this.style.removeLayer(t),this._update(!0),this},getLayer:function(t){return this.style.getLayer(t)},setFilter:function(t,e){return this.style.setFilter(t,e),this._update(!0),this},setLayerZoomRange:function(t,e,r){return this.style.setLayerZoomRange(t,e,r),this._update(!0),this},getFilter:function(t){return this.style.getFilter(t)},setPaintProperty:function(t,e,r,n){return this.style.setPaintProperty(t,e,r,n),this._update(!0),this},getPaintProperty:function(t,e,r){return this.style.getPaintProperty(t,e,r)},setLayoutProperty:function(t,e,r){return this.style.setLayoutProperty(t,e,r),this._update(!0),this},getLayoutProperty:function(t,e){return this.style.getLayoutProperty(t,e)},getContainer:function(){return this._container},getCanvasContainer:function(){return this._canvasContainer},getCanvas:function(){return this._canvas.getElement()},_setupContainer:function(){var t=this._container;t.classList.add("mapboxgl-map");var e=this._canvasContainer=l.create("div","mapboxgl-canvas-container",t);this._interactive&&e.classList.add("mapboxgl-interactive"),this._canvas=new n(this,e);var r=this._controlContainer=l.create("div","mapboxgl-control-container",t),i=this._controlCorners={};["top-left","top-right","bottom-left","bottom-right"].forEach(function(t){i[t]=l.create("div","mapboxgl-ctrl-"+t,r)})},_setupPainter:function(){var t=this._canvas.getWebGLContext({failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer});t?this.painter=new f(t,this.transform):this.fire("error",{error:new Error("Failed to initialize WebGL")})},_contextLost:function(t){t.preventDefault(),this._frameId&&a.cancelFrame(this._frameId),this.fire("webglcontextlost",{originalEvent:t})},_contextRestored:function(t){this._setupPainter(),this.resize(),this._update(),this.fire("webglcontextrestored",{originalEvent:t})},loaded:function(){return!this._styleDirty&&!this._sourcesDirty&&!(!this.style||!this.style.loaded())},_update:function(t){return this.style?(this._styleDirty=this._styleDirty||t,this._sourcesDirty=!0,this._rerender(),this):this},_render:function(){try{this.style&&this._styleDirty&&(this._styleDirty=!1,this.style.update(this._classes,this._classOptions),this._classOptions=null,this.style._recalculate(this.transform.zoom)),this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.painter.render(this.style,{debug:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,vertices:this.vertices,rotating:this.rotating,zooming:this.zooming}),this.fire("render"),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire("load")),this._frameId=null,this.animationLoop.stopped()||(this._styleDirty=!0),(this._sourcesDirty||this._repaint||this._styleDirty)&&this._rerender()}catch(t){this.fire("error",{error:t})}return this},remove:function(){this._hash&&this._hash.remove(),a.cancelFrame(this._frameId),this.setStyle(null),void 0!==o&&o.removeEventListener("resize",this._onWindowResize,!1);var t=this.painter.gl.getExtension("WEBGL_lose_context");t&&t.loseContext(),w(this._canvasContainer),w(this._controlContainer),this._container.classList.remove("mapboxgl-map")},_rerender:function(){this.style&&!this._frameId&&(this._frameId=a.frame(this._render))},_forwardStyleEvent:function(t){this.fire("style."+t.type,i.extend({style:t.target},t))},_forwardSourceEvent:function(t){this.fire(t.type,i.extend({style:t.target},t))},_forwardLayerEvent:function(t){this.fire(t.type,i.extend({style:t.target},t))},_forwardTileEvent:function(t){this.fire(t.type,i.extend({style:t.target},t))},_onStyleLoad:function(t){this.transform.unmodified&&this.jumpTo(this.style.stylesheet),this.style.update(this._classes,{transition:!1}),this._forwardStyleEvent(t)},_onStyleChange:function(t){this._update(!0),this._forwardStyleEvent(t)},_onSourceAdd:function(t){var e=t.source;e.onAdd&&e.onAdd(this),this._forwardSourceEvent(t)},_onSourceRemove:function(t){var e=t.source;e.onRemove&&e.onRemove(this),this._forwardSourceEvent(t)},_onSourceUpdate:function(t){this._update(),this._forwardSourceEvent(t)},_onWindowOnline:function(){this._update()},_onWindowResize:function(){this._trackResize&&this.stop().resize()._update()}}),i.extendAll(_.prototype,{_showTileBoundaries:!1,get showTileBoundaries(){return this._showTileBoundaries},set showTileBoundaries(t){this._showTileBoundaries!==t&&(this._showTileBoundaries=t,this._update())},_showCollisionBoxes:!1,get showCollisionBoxes(){return this._showCollisionBoxes},set showCollisionBoxes(t){this._showCollisionBoxes!==t&&(this._showCollisionBoxes=t,this.style._redoPlacement())},_showOverdrawInspector:!1,get showOverdrawInspector(){return this._showOverdrawInspector},set showOverdrawInspector(t){this._showOverdrawInspector!==t&&(this._showOverdrawInspector=t,this._update())},_repaint:!1,get repaint(){return this._repaint},set repaint(t){this._repaint=t,this._update()},_vertices:!1,get vertices(){return this._vertices},set vertices(t){this._vertices=t,this._update()}})},{"../geo/lng_lat":311,"../geo/lng_lat_bounds":312,"../geo/transform":313,"../render/painter":327,"../style/animation_loop":347,"../style/style":350,"../util/browser":398,"../util/canvas":399,"../util/dom":400,"../util/evented":406,"../util/util":414,"./bind_handlers":379,"./camera":380,"./control/attribution":381,"./hash":392,"point-geometry":458}],394:[function(t,e,r){"use strict";e.exports=o;var n=t("../util/dom"),i=t("../geo/lng_lat"),a=t("point-geometry");function o(t,e){t||(t=n.create("div")),t.classList.add("mapboxgl-marker"),this._el=t,this._offset=a.convert(e&&e.offset||[0,0]),this._update=this._update.bind(this)}o.prototype={addTo:function(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._el),t.on("move",this._update),this._update(),this},remove:function(){this._map&&(this._map.off("move",this._update),this._map=null);var t=this._el.parentNode;return t&&t.removeChild(this._el),this},getLngLat:function(){return this._lngLat},setLngLat:function(t){return this._lngLat=i.convert(t),this._update(),this},getElement:function(){return this._el},_update:function(){if(this._map){var t=this._map.project(this._lngLat)._add(this._offset);n.setTransform(this._el,"translate("+t.x+"px,"+t.y+"px)")}}}},{"../geo/lng_lat":311,"../util/dom":400,"point-geometry":458}],395:[function(t,e,r){"use strict";e.exports=s;var n=t("../util/util"),i=t("../util/evented"),a=t("../util/dom"),o=t("../geo/lng_lat");function s(t){n.setOptions(this,t),n.bindAll(["_update","_onClickClose"],this)}s.prototype=n.inherit(i,{options:{closeButton:!0,closeOnClick:!0},addTo:function(t){return this._map=t,this._map.on("move",this._update),this.options.closeOnClick&&this._map.on("click",this._onClickClose),this._update(),this},remove:function(){return this._content&&this._content.parentNode&&this._content.parentNode.removeChild(this._content),this._container&&(this._container.parentNode.removeChild(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("click",this._onClickClose),delete this._map),this.fire("close"),this},getLngLat:function(){return this._lngLat},setLngLat:function(t){return this._lngLat=o.convert(t),this._update(),this},setText:function(t){return this.setDOMContent(document.createTextNode(t))},setHTML:function(t){var e,r=document.createDocumentFragment(),n=document.createElement("body");for(n.innerHTML=t;e=n.firstChild;)r.appendChild(e);return this.setDOMContent(r)},setDOMContent:function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},_createContent:function(){this._content&&this._content.parentNode&&this._content.parentNode.removeChild(this._content),this._content=a.create("div","mapboxgl-popup-content",this._container),this.options.closeButton&&(this._closeButton=a.create("button","mapboxgl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClickClose))},_update:function(){if(this._map&&this._lngLat&&this._content){this._container||(this._container=a.create("div","mapboxgl-popup",this._map.getContainer()),this._tip=a.create("div","mapboxgl-popup-tip",this._container),this._container.appendChild(this._content));var t=this._map.project(this._lngLat).round(),e=this.options.anchor;if(!e){var r=this._container.offsetWidth,n=this._container.offsetHeight;e=t.ythis._map.transform.height-n?["bottom"]:[],t.xthis._map.transform.width-r/2&&e.push("right"),e=0===e.length?"bottom":e.join("-")}var i={top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"},o=this._container.classList;for(var s in i)o.remove("mapboxgl-popup-anchor-"+s);o.add("mapboxgl-popup-anchor-"+e),a.setTransform(this._container,i[e]+" translate("+t.x+"px,"+t.y+"px)")}},_onClickClose:function(){this.remove()}})},{"../geo/lng_lat":311,"../util/dom":400,"../util/evented":406,"../util/util":414}],396:[function(t,e,r){"use strict";function n(t,e){this.target=t,this.parent=e,this.callbacks={},this.callbackID=0,this.receive=this.receive.bind(this),this.target.addEventListener("message",this.receive,!1)}e.exports=n,n.prototype.receive=function(t){var e,r=t.data,n=r.id;if(""===r.type)e=this.callbacks[r.id],delete this.callbacks[r.id],e&&e(r.error||null,r.data);else if(void 0!==r.id&&this.parent[r.type])this.parent[r.type](r.data,a.bind(this));else if(void 0!==r.id&&this.parent.workerSources){var i=r.type.split(".");this.parent.workerSources[i[0]][i[1]](r.data,a.bind(this))}else this.parent[r.type](r.data);function a(t,e,r){this.postMessage({type:"",id:String(n),error:t?String(t):null,data:e},r)}},n.prototype.send=function(t,e,r,n){var i=null;r&&(this.callbacks[i=this.callbackID++]=r),this.postMessage({type:t,id:String(i),data:e},n)},n.prototype.postMessage=function(t,e){this.target.postMessage(t,e)}},{}],397:[function(t,e,r){"use strict";r.getJSON=function(t,e){var r=new XMLHttpRequest;return r.open("GET",t,!0),r.setRequestHeader("Accept","application/json"),r.onerror=function(t){e(t)},r.onload=function(){if(r.status>=200&&r.status<300&&r.response){var t;try{t=JSON.parse(r.response)}catch(t){return e(t)}e(null,t)}else e(new Error(r.statusText))},r.send(),r},r.getArrayBuffer=function(t,e){var r=new XMLHttpRequest;return r.open("GET",t,!0),r.responseType="arraybuffer",r.onerror=function(t){e(t)},r.onload=function(){r.status>=200&&r.status<300&&r.response?e(null,r.response):e(new Error(r.statusText))},r.send(),r},r.getImage=function(t,e){return r.getArrayBuffer(t,function(t,r){if(t)return e(t);var n=new Image;n.onload=function(){e(null,n),(window.URL||window.webkitURL).revokeObjectURL(n.src)};var i=new Blob([new Uint8Array(r)],{type:"image/png"});return n.src=(window.URL||window.webkitURL).createObjectURL(i),n.getData=function(){var t=document.createElement("canvas"),e=t.getContext("2d");return t.width=n.width,t.height=n.height,e.drawImage(n,0,0),e.getImageData(0,0,n.width,n.height).data},n})},r.getVideo=function(t,e){var r,n,i=document.createElement("video");i.onloadstart=function(){e(null,i)};for(var a=0;a=o+n?t.call(i,1):(t.call(i,(l-o)/n),r.frame(s)))}),function(){a=!0}},r.supported=t("mapbox-gl-supported"),r.hardwareConcurrency=navigator.hardwareConcurrency||4,Object.defineProperty(r,"devicePixelRatio",{get:function(){return window.devicePixelRatio}}),r.supportsWebp=!1;var a=document.createElement("img");a.onload=function(){r.supportsWebp=!0},a.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=",r.supportsGeolocation=!!navigator.geolocation},{"mapbox-gl-supported":299}],399:[function(t,e,r){"use strict";var n=t("../util"),i=t("mapbox-gl-supported");function a(t,e){this.canvas=document.createElement("canvas"),t&&e&&(this.canvas.style.position="absolute",this.canvas.classList.add("mapboxgl-canvas"),this.canvas.addEventListener("webglcontextlost",t._contextLost.bind(t),!1),this.canvas.addEventListener("webglcontextrestored",t._contextRestored.bind(t),!1),this.canvas.setAttribute("tabindex",0),e.appendChild(this.canvas))}e.exports=a,a.prototype.resize=function(t,e){var r=window.devicePixelRatio||1;this.canvas.width=r*t,this.canvas.height=r*e,this.canvas.style.width=t+"px",this.canvas.style.height=e+"px"},a.prototype.getWebGLContext=function(t){return t=n.extend({},t,i.webGLContextAttributes),this.canvas.getContext("webgl",t)||this.canvas.getContext("experimental-webgl",t)},a.prototype.getElement=function(){return this.canvas}},{"../util":414,"mapbox-gl-supported":299}],400:[function(t,e,r){"use strict";var n=t("point-geometry");r.create=function(t,e,r){var n=document.createElement(t);return e&&(n.className=e),r&&r.appendChild(n),n};var i=document.documentElement.style;function a(t){for(var e=0;e1)for(var f=0;f=0&&this._events[t].splice(r,1),this._events[t].length||delete this._events[t]}else delete this._events[t];return this},once:function(t,e){var r=function(n){this.off(t,r),e.call(this,n)}.bind(this);return this.on(t,r),this},fire:function(t,e){if(!this.listens(t))return n.endsWith(t,"error")&&console.error(e&&e.error||e||"Empty error event"),this;e=n.extend({},e),n.extend(e,{type:t,target:this});for(var r=this._events[t].slice(),i=0;i1){if(i(t,e))return!0;for(var n=0;n(e.y-t.y)*(r.x-t.x)}function o(t,e,r,n){return a(t,r,n)!==a(e,r,n)&&a(t,e,r)!==a(t,e,n)}function s(t,e,r){var n=r*r;if(1===e.length)return t.distSqr(e[0])1?t.distSqr(r):t.distSqr(r.sub(e)._mult(i)._add(e))}function c(t,e){for(var r,n,i,a=!1,o=0;oe.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);return a}function u(t,e){for(var r=!1,n=0,i=t.length-1;ne.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r)}return r}e.exports={multiPolygonIntersectsBufferedMultiPoint:function(t,e,r){for(var n=0;n=3)for(var l=0;lthis.max){var r=this.get(this.order[0]);r&&this.onRemove(r)}return this},n.prototype.has=function(t){return t in this.data},n.prototype.keys=function(){return this.order},n.prototype.get=function(t){if(!this.has(t))return null;var e=this.data[t];return delete this.data[t],this.order.splice(this.order.indexOf(t),1),e},n.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this.get(this.order[0]);e&&this.onRemove(e)}return this}},{}],411:[function(t,e,r){"use strict";var n=t("./config"),i=t("./browser"),a=t("url"),o=t("./util");function s(t,e,r){if(!(r=r||n.ACCESS_TOKEN)&&n.REQUIRE_ACCESS_TOKEN)throw new Error("An API access token is required to use Mapbox GL. See https://www.mapbox.com/developers/api/#access-tokens");if(t=t.replace(/^mapbox:\/\//,n.API_URL+e),t+=-1!==t.indexOf("?")?"&access_token=":"?access_token=",n.REQUIRE_ACCESS_TOKEN){if("s"===r[0])throw new Error("Use a public access token (pk.*) with Mapbox GL JS, not a secret access token (sk.*). See https://www.mapbox.com/developers/api/#access-tokens");t+=r}return t}function l(t){return t?"?"+t:""}e.exports.normalizeStyleURL=function(t,e){var r=a.parse(t);return"mapbox:"!==r.protocol?t:s("mapbox:/"+r.pathname+l(r.query),"/styles/v1/",e)},e.exports.normalizeSourceURL=function(t,e){return"mapbox:"!==a.parse(t).protocol?t:s(t+".json","/v4/",e)+"&secure"},e.exports.normalizeGlyphsURL=function(t,e){var r=a.parse(t);return"mapbox:"!==r.protocol?t:s("mapbox://"+r.pathname.split("/")[1]+"/{fontstack}/{range}.pbf"+l(r.query),"/fonts/v1/",e)},e.exports.normalizeSpriteURL=function(t,e,r,n){var i=a.parse(t);return"mapbox:"!==i.protocol?(i.pathname+=e+r,a.format(i)):s("mapbox:/"+i.pathname+"/sprite"+e+r+l(i.query),"/styles/v1/",n)},e.exports.normalizeTileURL=function(t,e,r){var s=a.parse(t,!0);if(!e)return t;if("mapbox:"!==a.parse(e).protocol)return t;var l,c=i.supportsWebp?".webp":"$1",u=i.devicePixelRatio>=2||512===r?"@2x":"";return a.format({protocol:s.protocol,hostname:s.hostname,pathname:s.pathname.replace(/(\.(?:png|jpg)\d*)/,u+c),query:(l=s.query,l.access_token&&"tk."===l.access_token.slice(0,3)?o.extend({},l,{access_token:n.ACCESS_TOKEN}):l)})}},{"./browser":398,"./config":403,"./util":414,url:539}],412:[function(t,e,r){"use strict";var n=t("assert");e.exports=function(t){var e=JSON.stringify(t);if(a[e])return a[e];void 0===t.alignment&&(t.alignment=1);function r(){d.apply(this,arguments)}r.prototype=Object.create(d.prototype);var u=0,m=0,v=["Uint8"];function g(){p.apply(this,arguments),this.members=r.prototype.members}return r.prototype.members=t.members.map(function(e){e={name:e.name,type:e.type,components:e.components||1},n(e.name.length),n(e.type in i),v.indexOf(e.type)<0&&v.push(e.type);var a=l(e.type);m=Math.max(m,a),e.offset=u=s(u,Math.max(t.alignment,a));for(var o=0;othis.capacity){this.capacity=Math.max(t,Math.floor(this.capacity*this.RESIZE_MULTIPLIER),this.DEFAULT_CAPACITY),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e)}},p.prototype._refreshViews=function(){for(var t=0;t=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)},r.bezier=function(t,e,r,i){var a=new n(t,e,r,i);return function(t){return a.solve(t)}},r.ease=r.bezier(.25,.1,.25,1),r.clamp=function(t,e,r){return Math.min(r,Math.max(e,t))},r.wrap=function(t,e,r){var n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i},r.coalesce=function(){for(var t=0;t=0)return!0;return!1};var o={};r.warnOnce=function(t){o[t]||("undefined"!=typeof console&&console.warn(t),o[t]=!0)}},{"../geo/coordinate":310,unitbezier:537}],415:[function(t,e,r){"use strict";function n(t,e,r,n){this._vectorTileFeature=t,t._z=e,t._x=r,t._y=n,this.properties=t.properties,null!=t.id&&(this.id=t.id)}e.exports=n,n.prototype={type:"Feature",get geometry(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry},set geometry(t){this._geometry=t},toJSON:function(){var t={};for(var e in this)"_geometry"!==e&&"_vectorTileFeature"!==e&&"toJSON"!==e&&(t[e]=this[e]);return t}}},{}],416:[function(t,e,r){e.exports={_args:[["mapbox-gl@0.22.1","/home/etienne/Documents/plotly/plotly.js"]],_from:"mapbox-gl@0.22.1",_id:"mapbox-gl@0.22.1",_inBundle:!1,_integrity:"sha1-kqllVH1MLyTCLLxIfu2khpTLYno=",_location:"/mapbox-gl",_phantomChildren:{},_requested:{type:"version",registry:!0,raw:"mapbox-gl@0.22.1",name:"mapbox-gl",escapedName:"mapbox-gl",rawSpec:"0.22.1",saveSpec:null,fetchSpec:"0.22.1"},_requiredBy:["/"],_resolved:"https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-0.22.1.tgz",_spec:"0.22.1",_where:"/home/etienne/Documents/plotly/plotly.js",browser:{"./js/util/ajax.js":"./js/util/browser/ajax.js","./js/util/browser.js":"./js/util/browser/browser.js","./js/util/canvas.js":"./js/util/browser/canvas.js","./js/util/dom.js":"./js/util/browser/dom.js","./js/util/web_worker.js":"./js/util/browser/web_worker.js"},bugs:{url:"https://github.com/mapbox/mapbox-gl-js/issues"},dependencies:{csscolorparser:"^1.0.2",earcut:"^2.0.3","feature-filter":"^2.2.0","geojson-rewind":"^0.1.0","geojson-vt":"^2.4.0","gl-matrix":"^2.3.1","grid-index":"^1.0.0","mapbox-gl-function":"^1.2.1","mapbox-gl-shaders":"github:mapbox/mapbox-gl-shaders#de2ab007455aa2587c552694c68583f94c9f2747","mapbox-gl-style-spec":"github:mapbox/mapbox-gl-style-spec#83b1a3e5837d785af582efd5ed1a212f2df6a4ae","mapbox-gl-supported":"^1.2.0",pbf:"^1.3.2",pngjs:"^2.2.0","point-geometry":"^0.0.0",quickselect:"^1.0.0",request:"^2.39.0","resolve-url":"^0.2.1","shelf-pack":"^1.0.0",supercluster:"^2.0.1",unassertify:"^2.0.0",unitbezier:"^0.0.0","vector-tile":"^1.3.0","vt-pbf":"^2.0.2",webworkify:"^1.3.0","whoots-js":"^2.0.0"},description:"A WebGL interactive maps library",devDependencies:{"babel-preset-react":"^6.11.1",babelify:"^7.3.0",benchmark:"~2.1.0",browserify:"^13.0.0",clipboard:"^1.5.12","concat-stream":"1.5.1",coveralls:"^2.11.8",doctrine:"^1.2.1",documentation:"https://github.com/documentationjs/documentation/archive/bb41619c734e59ef3fbc3648610032efcfdaaace.tar.gz","documentation-theme-utils":"3.0.0",envify:"^3.4.0",eslint:"^2.5.3","eslint-config-mourner":"^2.0.0","eslint-plugin-html":"^1.5.1",gl:"^4.0.1",handlebars:"4.0.5","highlight.js":"9.3.0",istanbul:"^0.4.2","json-loader":"^0.5.4",lodash:"^4.13.1","mapbox-gl-test-suite":"github:mapbox/mapbox-gl-test-suite#7babab52fb02788ebbc38384139bf350e8e38552","memory-fs":"^0.3.0",minifyify:"^7.0.1","npm-run-all":"^3.0.0",nyc:"6.4.0",proxyquire:"^1.7.9",remark:"4.2.2","remark-html":"3.0.0",sinon:"^1.15.4",st:"^1.2.0",tap:"^5.7.0","transform-loader":"^0.2.3","unist-util-visit":"1.1.0",vinyl:"1.1.1","vinyl-fs":"2.4.3",watchify:"^3.7.0",webpack:"^1.13.1","webworkify-webpack":"^1.1.3"},engines:{node:">=4.0.0"},homepage:"https://github.com/mapbox/mapbox-gl-js#readme",license:"BSD-3-Clause",main:"js/mapbox-gl.js",name:"mapbox-gl",repository:{type:"git",url:"git://github.com/mapbox/mapbox-gl-js.git"},scripts:{build:"npm run build-docs # invoked by publisher when publishing docs on the mb-pages branch","build-dev":"browserify js/mapbox-gl.js --debug --standalone mapboxgl > dist/mapbox-gl-dev.js && tap --no-coverage test/build/dev.test.js","build-docs":"documentation build --github --format html -c documentation.yml --theme ./docs/_theme --output docs/api/","build-min":"browserify js/mapbox-gl.js --debug -t unassertify --plugin [minifyify --map mapbox-gl.js.map --output dist/mapbox-gl.js.map] --standalone mapboxgl > dist/mapbox-gl.js && tap --no-coverage test/build/min.test.js","build-token":"browserify debug/access-token-src.js --debug -t envify > debug/access-token.js",lint:"eslint --ignore-path .gitignore js test bench docs/_posts/examples/*.html","open-changed-examples":"git diff --name-only mb-pages HEAD -- docs/_posts/examples/*.html | awk '{print \"http://127.0.0.1:4000/mapbox-gl-js/example/\" substr($0,33,length($0)-37)}' | xargs open",start:"run-p build-token watch-dev watch-bench start-server","start-bench":"run-p build-token watch-bench start-server","start-debug":"run-p build-token watch-dev start-server","start-docs":"npm run build-min && npm run build-docs && jekyll serve -w","start-server":"st --no-cache --localhost --port 9966 --index index.html .",test:"npm run lint && tap --reporter dot test/js/*/*.js test/build/webpack.test.js","test-suite":"node test/render.test.js && node test/query.test.js","watch-bench":"node bench/download-data.js && watchify bench/index.js --plugin [minifyify --no-map] -t [babelify --presets react] -t unassertify -t envify -o bench/bench.js -v","watch-dev":"watchify js/mapbox-gl.js --debug --standalone mapboxgl -o dist/mapbox-gl-dev.js -v"},version:"0.22.1"}},{}],417:[function(t,e,r){"use strict";e.exports=function(t){for(var e=1<d[1][2]&&(g[0]=-g[0]),d[0][2]>d[2][0]&&(g[1]=-g[1]),d[1][0]>d[0][1]&&(g[2]=-g[2]),!0}},{"./normalize":419,"gl-mat4/clone":180,"gl-mat4/create":181,"gl-mat4/determinant":182,"gl-mat4/invert":186,"gl-mat4/transpose":196,"gl-vec3/cross":238,"gl-vec3/dot":239,"gl-vec3/length":240,"gl-vec3/normalize":242}],419:[function(t,e,r){e.exports=function(t,e){var r=e[15];if(0===r)return!1;for(var n=1/r,i=0;i<16;i++)t[i]=e[i]*n;return!0}},{}],420:[function(t,e,r){var n=t("gl-vec3/lerp"),i=t("mat4-recompose"),a=t("mat4-decompose"),o=t("gl-mat4/determinant"),s=t("quat-slerp"),l=f(),c=f(),u=f();function f(){return{translate:h(),scale:h(1),skew:h(),perspective:[0,0,0,1],quaternion:[0,0,0,1]}}function h(t){return[t||0,t||0,t||0]}e.exports=function(t,e,r,f){if(0===o(e)||0===o(r))return!1;var h=a(e,l.translate,l.scale,l.skew,l.perspective,l.quaternion),d=a(r,c.translate,c.scale,c.skew,c.perspective,c.quaternion);return!(!h||!d||(n(u.translate,l.translate,c.translate,f),n(u.skew,l.skew,c.skew,f),n(u.scale,l.scale,c.scale,f),n(u.perspective,l.perspective,c.perspective,f),s(u.quaternion,l.quaternion,c.quaternion,f),i(t,u.translate,u.scale,u.skew,u.perspective,u.quaternion),0))}},{"gl-mat4/determinant":182,"gl-vec3/lerp":241,"mat4-decompose":418,"mat4-recompose":421,"quat-slerp":471}],421:[function(t,e,r){var n={identity:t("gl-mat4/identity"),translate:t("gl-mat4/translate"),multiply:t("gl-mat4/multiply"),create:t("gl-mat4/create"),scale:t("gl-mat4/scale"),fromRotationTranslation:t("gl-mat4/fromRotationTranslation")},i=(n.create(),n.create());e.exports=function(t,e,r,a,o,s){return n.identity(t),n.fromRotationTranslation(t,s,e),t[3]=o[0],t[7]=o[1],t[11]=o[2],t[15]=o[3],n.identity(i),0!==a[2]&&(i[9]=a[2],n.multiply(t,t,i)),0!==a[1]&&(i[9]=0,i[8]=a[1],n.multiply(t,t,i)),0!==a[0]&&(i[8]=0,i[4]=a[0],n.multiply(t,t,i)),n.scale(t,t,r),t}},{"gl-mat4/create":181,"gl-mat4/fromRotationTranslation":184,"gl-mat4/identity":185,"gl-mat4/multiply":188,"gl-mat4/scale":194,"gl-mat4/translate":195}],422:[function(t,e,r){"use strict";var n=t("binary-search-bounds"),i=t("mat4-interpolate"),a=t("gl-mat4/invert"),o=t("gl-mat4/rotateX"),s=t("gl-mat4/rotateY"),l=t("gl-mat4/rotateZ"),c=t("gl-mat4/lookAt"),u=t("gl-mat4/translate"),f=(t("gl-mat4/scale"),t("gl-vec3/normalize")),h=[0,0,0];function d(t){this._components=t.slice(),this._time=[0],this.prevMatrix=t.slice(),this.nextMatrix=t.slice(),this.computedMatrix=t.slice(),this.computedInverse=t.slice(),this.computedEye=[0,0,0],this.computedUp=[0,0,0],this.computedCenter=[0,0,0],this.computedRadius=[0],this._limits=[-1/0,1/0]}e.exports=function(t){return new d((t=t||{}).matrix||[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])};var p=d.prototype;p.recalcMatrix=function(t){var e=this._time,r=n.le(e,t),o=this.computedMatrix;if(!(r<0)){var s=this._components;if(r===e.length-1)for(var l=16*r,c=0;c<16;++c)o[c]=s[l++];else{var u=e[r+1]-e[r],h=(l=16*r,this.prevMatrix),d=!0;for(c=0;c<16;++c)h[c]=s[l++];var p=this.nextMatrix;for(c=0;c<16;++c)p[c]=s[l++],d=d&&h[c]===p[c];if(u<1e-6||d)for(c=0;c<16;++c)o[c]=h[c];else i(o,h,p,(t-e[r])/u)}var m=this.computedUp;m[0]=o[1],m[1]=o[5],m[2]=o[9],f(m,m);var v=this.computedInverse;a(v,o);var g=this.computedEye,y=v[15];g[0]=v[12]/y,g[1]=v[13]/y,g[2]=v[14]/y;var b=this.computedCenter,x=Math.exp(this.computedRadius[0]);for(c=0;c<3;++c)b[c]=g[c]-o[2+4*c]*x}},p.idle=function(t){if(!(t1&&n(t[o[u-2]],t[o[u-1]],c)<=0;)u-=1,o.pop();for(o.push(l),u=s.length;u>1&&n(t[s[u-2]],t[s[u-1]],c)>=0;)u-=1,s.pop();s.push(l)}for(var r=new Array(s.length+o.length-2),f=0,i=0,h=o.length;i0;--d)r[f++]=s[d];return r};var n=t("robust-orientation")[3]},{"robust-orientation":495}],424:[function(t,e,r){"use strict";e.exports=function(t,e){e||(e=t,t=window);var r=0,i=0,a=0,o={shift:!1,alt:!1,control:!1,meta:!1},s=!1;function l(t){var e=!1;return"altKey"in t&&(e=e||t.altKey!==o.alt,o.alt=!!t.altKey),"shiftKey"in t&&(e=e||t.shiftKey!==o.shift,o.shift=!!t.shiftKey),"ctrlKey"in t&&(e=e||t.ctrlKey!==o.control,o.control=!!t.ctrlKey),"metaKey"in t&&(e=e||t.metaKey!==o.meta,o.meta=!!t.metaKey),e}function c(t,s){var c=n.x(s),u=n.y(s);"buttons"in s&&(t=0|s.buttons),(t!==r||c!==i||u!==a||l(s))&&(r=0|t,i=c||0,a=u||0,e&&e(r,i,a,o))}function u(t){c(0,t)}function f(){(r||i||a||o.shift||o.alt||o.meta||o.control)&&(i=a=0,r=0,o.shift=o.alt=o.control=o.meta=!1,e&&e(0,0,0,o))}function h(t){l(t)&&e&&e(r,i,a,o)}function d(t){0===n.buttons(t)?c(0,t):c(r,t)}function p(t){c(r|n.buttons(t),t)}function m(t){c(r&~n.buttons(t),t)}function v(){s||(s=!0,t.addEventListener("mousemove",d),t.addEventListener("mousedown",p),t.addEventListener("mouseup",m),t.addEventListener("mouseleave",u),t.addEventListener("mouseenter",u),t.addEventListener("mouseout",u),t.addEventListener("mouseover",u),t.addEventListener("blur",f),t.addEventListener("keyup",h),t.addEventListener("keydown",h),t.addEventListener("keypress",h),t!==window&&(window.addEventListener("blur",f),window.addEventListener("keyup",h),window.addEventListener("keydown",h),window.addEventListener("keypress",h)))}v();var g={element:t};return Object.defineProperties(g,{enabled:{get:function(){return s},set:function(e){e?v():s&&(s=!1,t.removeEventListener("mousemove",d),t.removeEventListener("mousedown",p),t.removeEventListener("mouseup",m),t.removeEventListener("mouseleave",u),t.removeEventListener("mouseenter",u),t.removeEventListener("mouseout",u),t.removeEventListener("mouseover",u),t.removeEventListener("blur",f),t.removeEventListener("keyup",h),t.removeEventListener("keydown",h),t.removeEventListener("keypress",h),t!==window&&(window.removeEventListener("blur",f),window.removeEventListener("keyup",h),window.removeEventListener("keydown",h),window.removeEventListener("keypress",h)))},enumerable:!0},buttons:{get:function(){return r},enumerable:!0},x:{get:function(){return i},enumerable:!0},y:{get:function(){return a},enumerable:!0},mods:{get:function(){return o},enumerable:!0}}),g};var n=t("mouse-event")},{"mouse-event":426}],425:[function(t,e,r){var n={left:0,top:0};e.exports=function(t,e,r){e=e||t.currentTarget||t.srcElement,Array.isArray(r)||(r=[0,0]);var i=t.clientX||0,a=t.clientY||0,o=(s=e,s===window||s===document||s===document.body?n:s.getBoundingClientRect());var s;return r[0]=i-o.left,r[1]=a-o.top,r}},{}],426:[function(t,e,r){"use strict";function n(t){return t.target||t.srcElement||window}r.buttons=function(t){if("object"==typeof t){if("buttons"in t)return t.buttons;if("which"in t){if(2===(e=t.which))return 4;if(3===e)return 2;if(e>0)return 1<=0)return 1< 0");"function"!=typeof t.vertex&&e("Must specify vertex creation function");"function"!=typeof t.cell&&e("Must specify cell creation function");"function"!=typeof t.phase&&e("Must specify phase function");for(var S=t.getters||[],L=new Array(T),C=0;C=0?L[C]=!0:L[C]=!1;return function(t,e,r,T,E,S){var L=S.length,C=E.length;if(C<2)throw new Error("ndarray-extract-contour: Dimension must be at least 2");for(var P="extractContour"+E.join("_"),z=[],O=[],D=[],I=0;I0&&j.push(l(I,E[R-1])+"*"+s(E[R-1])),O.push(p(I,E[R])+"=("+j.join("-")+")|0")}for(var I=0;I=0;--I)B.push(s(E[I]));O.push(w+"=("+B.join("*")+")|0",x+"=mallocUint32("+w+")",b+"=mallocUint32("+w+")",M+"=0"),O.push(m(0)+"=0");for(var R=1;R<1<0;k=k-1&p)w.push(b+"["+M+"+"+g(k)+"]");w.push(y(0));for(var k=0;k=0;--e)G(e,0);for(var r=[],e=0;e0){",d(E[e]),"=1;");t(e-1,r|1<=0?s.push("0"):e.indexOf(-(l+1))>=0?s.push("s["+l+"]-1"):(s.push("-1"),a.push("1"),o.push("s["+l+"]-2"));var c=".lo("+a.join()+").hi("+o.join()+")";if(0===a.length&&(c=""),i>0){n.push("if(1");for(var l=0;l=0||e.indexOf(-(l+1))>=0||n.push("&&s[",l,"]>2");n.push("){grad",i,"(src.pick(",s.join(),")",c);for(var l=0;l=0||e.indexOf(-(l+1))>=0||n.push(",dst.pick(",s.join(),",",l,")",c);n.push(");")}for(var l=0;l1){dst.set(",s.join(),",",u,",0.5*(src.get(",h.join(),")-src.get(",d.join(),")))}else{dst.set(",s.join(),",",u,",0)};"):n.push("if(s[",u,"]>1){diff(",f,",src.pick(",h.join(),")",c,",src.pick(",d.join(),")",c,");}else{zero(",f,");};");break;case"mirror":0===i?n.push("dst.set(",s.join(),",",u,",0);"):n.push("zero(",f,");");break;case"wrap":var p=s.slice(),m=s.slice();e[l]<0?(p[u]="s["+u+"]-2",m[u]="0"):(p[u]="s["+u+"]-1",m[u]="1"),0===i?n.push("if(s[",u,"]>2){dst.set(",s.join(),",",u,",0.5*(src.get(",p.join(),")-src.get(",m.join(),")))}else{dst.set(",s.join(),",",u,",0)};"):n.push("if(s[",u,"]>2){diff(",f,",src.pick(",p.join(),")",c,",src.pick(",m.join(),")",c,");}else{zero(",f,");};");break;default:throw new Error("ndarray-gradient: Invalid boundary condition")}}i>0&&n.push("};")}for(var s=0;s<1<>",rrshift:">>>"};!function(){for(var t in s){var e=s[t];r[t]=o({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+e+"c"},funcName:t}),r[t+"eq"]=o({args:["array","array"],body:{args:["a","b"],body:"a"+e+"=b"},rvalue:!0,funcName:t+"eq"}),r[t+"s"]=o({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+e+"s"},funcName:t+"s"}),r[t+"seq"]=o({args:["array","scalar"],body:{args:["a","s"],body:"a"+e+"=s"},rvalue:!0,funcName:t+"seq"})}}();var l={not:"!",bnot:"~",neg:"-",recip:"1.0/"};!function(){for(var t in l){var e=l[t];r[t]=o({args:["array","array"],body:{args:["a","b"],body:"a="+e+"b"},funcName:t}),r[t+"eq"]=o({args:["array"],body:{args:["a"],body:"a="+e+"a"},rvalue:!0,count:2,funcName:t+"eq"})}}();var c={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};!function(){for(var t in c){var e=c[t];r[t]=o({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+e+"c"},funcName:t}),r[t+"s"]=o({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+e+"s"},funcName:t+"s"}),r[t+"eq"]=o({args:["array","array"],body:{args:["a","b"],body:"a=a"+e+"b"},rvalue:!0,count:2,funcName:t+"eq"}),r[t+"seq"]=o({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+e+"s"},rvalue:!0,count:2,funcName:t+"seq"})}}();var u=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];!function(){for(var t=0;tthis_s){this_s=-a}else if(a>this_s){this_s=a}",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norminf"}),r.norm1=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:3}],body:"this_s+=a<0?-a:a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm1"}),r.sup=n({args:["array"],pre:{body:"this_h=-Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}}),r.inf=n({args:["array"],pre:{body:"this_h=Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}}),r.random=o({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"}),r.assign=o({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"}),r.assigns=o({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"}),r.equals=n({args:["array","array"],pre:i,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1},{name:"y",lvalue:!1,rvalue:!0,count:1}],body:"if(x!==y){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"equals"})},{"cwise-compiler":116}],434:[function(t,e,r){"use strict";var n=t("ndarray"),i=t("./doConvert.js");e.exports=function(t,e){for(var r=[],a=t,o=1;Array.isArray(a);)r.push(a.length),o*=a.length,a=a[0];return 0===r.length?n():(e||(e=n(new Float64Array(o),r)),i(e,t),e)}},{"./doConvert.js":435,ndarray:439}],435:[function(t,e,r){e.exports=t("cwise-compiler")({args:["array","scalar","index"],pre:{body:"{}",args:[],thisVars:[],localVars:[]},body:{body:"{\nvar _inline_1_v=_inline_1_arg1_,_inline_1_i\nfor(_inline_1_i=0;_inline_1_i<_inline_1_arg2_.length-1;++_inline_1_i) {\n_inline_1_v=_inline_1_v[_inline_1_arg2_[_inline_1_i]]\n}\n_inline_1_arg0_=_inline_1_v[_inline_1_arg2_[_inline_1_arg2_.length-1]]\n}",args:[{name:"_inline_1_arg0_",lvalue:!0,rvalue:!1,count:1},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_1_arg2_",lvalue:!1,rvalue:!0,count:4}],thisVars:[],localVars:["_inline_1_i","_inline_1_v"]},post:{body:"{}",args:[],thisVars:[],localVars:[]},funcName:"convert",blockSize:64})},{"cwise-compiler":116}],436:[function(t,e,r){"use strict";var n=t("typedarray-pool"),i=32;function a(t){switch(t){case"uint8":return[n.mallocUint8,n.freeUint8];case"uint16":return[n.mallocUint16,n.freeUint16];case"uint32":return[n.mallocUint32,n.freeUint32];case"int8":return[n.mallocInt8,n.freeInt8];case"int16":return[n.mallocInt16,n.freeInt16];case"int32":return[n.mallocInt32,n.freeInt32];case"float32":return[n.mallocFloat,n.freeFloat];case"float64":return[n.mallocDouble,n.freeDouble];default:return null}}function o(t){for(var e=[],r=0;r0?s.push(["d",p,"=s",p,"-d",f,"*n",f].join("")):s.push(["d",p,"=s",p].join("")),f=p),0!=(d=t.length-1-l)&&(h>0?s.push(["e",d,"=s",d,"-e",h,"*n",h,",f",d,"=",c[d],"-f",h,"*n",h].join("")):s.push(["e",d,"=s",d,",f",d,"=",c[d]].join("")),h=d)}r.push("var "+s.join(","));var m=["0","n0-1","data","offset"].concat(o(t.length));r.push(["if(n0<=",i,"){","insertionSort(",m.join(","),")}else{","quickSort(",m.join(","),")}"].join("")),r.push("}return "+n);var v=new Function("insertionSort","quickSort",r.join("\n")),g=function(t,e){var r=["'use strict'"],n=["ndarrayInsertionSort",t.join("d"),e].join(""),i=["left","right","data","offset"].concat(o(t.length)),s=a(e),l=["i,j,cptr,ptr=left*s0+offset"];if(t.length>1){for(var c=[],u=1;u1){for(r.push("dptr=0;sptr=ptr"),u=t.length-1;u>=0;--u)0!==(d=t[u])&&r.push(["for(i",d,"=0;i",d,"b){break __l}"].join("")),u=t.length-1;u>=1;--u)r.push("sptr+=e"+u,"dptr+=f"+u,"}");for(r.push("dptr=cptr;sptr=cptr-s0"),u=t.length-1;u>=0;--u)0!==(d=t[u])&&r.push(["for(i",d,"=0;i",d,"=0;--u)0!==(d=t[u])&&r.push(["for(i",d,"=0;i",d,"scratch)){",h("cptr",f("cptr-s0")),"cptr-=s0","}",h("cptr","scratch"));return r.push("}"),t.length>1&&s&&r.push("free(scratch)"),r.push("} return "+n),s?new Function("malloc","free",r.join("\n"))(s[0],s[1]):new Function(r.join("\n"))()}(t,e);return v(g,function(t,e,r){var n=["'use strict'"],s=["ndarrayQuickSort",t.join("d"),e].join(""),l=["left","right","data","offset"].concat(o(t.length)),c=a(e),u=0;n.push(["function ",s,"(",l.join(","),"){"].join(""));var f=["sixth=((right-left+1)/6)|0","index1=left+sixth","index5=right-sixth","index3=(left+right)>>1","index2=index3-sixth","index4=index3+sixth","el1=index1","el2=index2","el3=index3","el4=index4","el5=index5","less=left+1","great=right-1","pivots_are_equal=true","tmp","tmp0","x","y","z","k","ptr0","ptr1","ptr2","comp_pivot1=0","comp_pivot2=0","comp=0"];if(t.length>1){for(var h=[],d=1;d=0;--a)0!==(o=t[a])&&n.push(["for(i",o,"=0;i",o,"1)for(a=0;a1?n.push("ptr_shift+=d"+o):n.push("ptr0+=d"+o),n.push("}"))}}function y(e,r,i,a){if(1===r.length)n.push("ptr0="+p(r[0]));else{for(var o=0;o1)for(o=0;o=1;--o)i&&n.push("pivot_ptr+=f"+o),r.length>1?n.push("ptr_shift+=e"+o):n.push("ptr0+=e"+o),n.push("}")}function b(){t.length>1&&c&&n.push("free(pivot1)","free(pivot2)")}function x(e,r){var i="el"+e,a="el"+r;if(t.length>1){var o="__l"+ ++u;y(o,[i,a],!1,["comp=",m("ptr0"),"-",m("ptr1"),"\n","if(comp>0){tmp0=",i,";",i,"=",a,";",a,"=tmp0;break ",o,"}\n","if(comp<0){break ",o,"}"].join(""))}else n.push(["if(",m(p(i)),">",m(p(a)),"){tmp0=",i,";",i,"=",a,";",a,"=tmp0}"].join(""))}function _(e,r){t.length>1?g([e,r],!1,v("ptr0",m("ptr1"))):n.push(v(p(e),m(p(r))))}function w(e,r,i){if(t.length>1){var a="__l"+ ++u;y(a,[r],!0,[e,"=",m("ptr0"),"-pivot",i,"[pivot_ptr]\n","if(",e,"!==0){break ",a,"}"].join(""))}else n.push([e,"=",m(p(r)),"-pivot",i].join(""))}function M(e,r){t.length>1?g([e,r],!1,["tmp=",m("ptr0"),"\n",v("ptr0",m("ptr1")),"\n",v("ptr1","tmp")].join("")):n.push(["ptr0=",p(e),"\n","ptr1=",p(r),"\n","tmp=",m("ptr0"),"\n",v("ptr0",m("ptr1")),"\n",v("ptr1","tmp")].join(""))}function k(e,r,i){t.length>1?(g([e,r,i],!1,["tmp=",m("ptr0"),"\n",v("ptr0",m("ptr1")),"\n",v("ptr1",m("ptr2")),"\n",v("ptr2","tmp")].join("")),n.push("++"+r,"--"+i)):n.push(["ptr0=",p(e),"\n","ptr1=",p(r),"\n","ptr2=",p(i),"\n","++",r,"\n","--",i,"\n","tmp=",m("ptr0"),"\n",v("ptr0",m("ptr1")),"\n",v("ptr1",m("ptr2")),"\n",v("ptr2","tmp")].join(""))}function A(t,e){M(t,e),n.push("--"+e)}function T(e,r,i){t.length>1?g([e,r],!0,[v("ptr0",m("ptr1")),"\n",v("ptr1",["pivot",i,"[pivot_ptr]"].join(""))].join("")):n.push(v(p(e),m(p(r))),v(p(r),"pivot"+i))}function E(e,r){n.push(["if((",r,"-",e,")<=",i,"){\n","insertionSort(",e,",",r,",data,offset,",o(t.length).join(","),")\n","}else{\n",s,"(",e,",",r,",data,offset,",o(t.length).join(","),")\n","}"].join(""))}function S(e,r,i){t.length>1?(n.push(["__l",++u,":while(true){"].join("")),g([e],!0,["if(",m("ptr0"),"!==pivot",r,"[pivot_ptr]){break __l",u,"}"].join("")),n.push(i,"}")):n.push(["while(",m(p(e)),"===pivot",r,"){",i,"}"].join(""))}return n.push("var "+f.join(",")),x(1,2),x(4,5),x(1,3),x(2,3),x(1,4),x(3,4),x(2,5),x(2,3),x(4,5),t.length>1?g(["el1","el2","el3","el4","el5","index1","index3","index5"],!0,["pivot1[pivot_ptr]=",m("ptr1"),"\n","pivot2[pivot_ptr]=",m("ptr3"),"\n","pivots_are_equal=pivots_are_equal&&(pivot1[pivot_ptr]===pivot2[pivot_ptr])\n","x=",m("ptr0"),"\n","y=",m("ptr2"),"\n","z=",m("ptr4"),"\n",v("ptr5","x"),"\n",v("ptr6","y"),"\n",v("ptr7","z")].join("")):n.push(["pivot1=",m(p("el2")),"\n","pivot2=",m(p("el4")),"\n","pivots_are_equal=pivot1===pivot2\n","x=",m(p("el1")),"\n","y=",m(p("el3")),"\n","z=",m(p("el5")),"\n",v(p("index1"),"x"),"\n",v(p("index3"),"y"),"\n",v(p("index5"),"z")].join("")),_("index2","left"),_("index4","right"),n.push("if(pivots_are_equal){"),n.push("for(k=less;k<=great;++k){"),w("comp","k",1),n.push("if(comp===0){continue}"),n.push("if(comp<0){"),n.push("if(k!==less){"),M("k","less"),n.push("}"),n.push("++less"),n.push("}else{"),n.push("while(true){"),w("comp","great",1),n.push("if(comp>0){"),n.push("great--"),n.push("}else if(comp<0){"),k("k","less","great"),n.push("break"),n.push("}else{"),A("k","great"),n.push("break"),n.push("}"),n.push("}"),n.push("}"),n.push("}"),n.push("}else{"),n.push("for(k=less;k<=great;++k){"),w("comp_pivot1","k",1),n.push("if(comp_pivot1<0){"),n.push("if(k!==less){"),M("k","less"),n.push("}"),n.push("++less"),n.push("}else{"),w("comp_pivot2","k",2),n.push("if(comp_pivot2>0){"),n.push("while(true){"),w("comp","great",2),n.push("if(comp>0){"),n.push("if(--greatindex5){"),S("less",1,"++less"),S("great",2,"--great"),n.push("for(k=less;k<=great;++k){"),w("comp_pivot1","k",1),n.push("if(comp_pivot1===0){"),n.push("if(k!==less){"),M("k","less"),n.push("}"),n.push("++less"),n.push("}else{"),w("comp_pivot2","k",2),n.push("if(comp_pivot2===0){"),n.push("while(true){"),w("comp","great",2),n.push("if(comp===0){"),n.push("if(--great1&&c?new Function("insertionSort","malloc","free",n.join("\n"))(r,c[0],c[1]):new Function("insertionSort",n.join("\n"))(r)}(t,e,g))}},{"typedarray-pool":534}],437:[function(t,e,r){"use strict";var n=t("./lib/compile_sort.js"),i={};e.exports=function(t){var e=t.order,r=t.dtype,a=[e,r].join(":"),o=i[a];return o||(i[a]=o=n(e,r)),o(t),t}},{"./lib/compile_sort.js":436}],438:[function(t,e,r){"use strict";var n=t("ndarray-linear-interpolate"),i=t("cwise/lib/wrapper")({args:["index","array","scalar","scalar","scalar"],pre:{body:"{this_warped=new Array(_inline_9_arg4_)}",args:[{name:"_inline_9_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_9_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_9_arg2_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_9_arg3_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_9_arg4_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_warped"],localVars:[]},body:{body:"{_inline_10_arg2_(this_warped,_inline_10_arg0_),_inline_10_arg1_=_inline_10_arg3_.apply(void 0,this_warped)}",args:[{name:"_inline_10_arg0_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_10_arg1_",lvalue:!0,rvalue:!1,count:1},{name:"_inline_10_arg2_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_10_arg3_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_10_arg4_",lvalue:!1,rvalue:!1,count:0}],thisVars:["this_warped"],localVars:[]},post:{body:"{}",args:[],thisVars:[],localVars:[]},debug:!1,funcName:"warpND",blockSize:64}),a=t("cwise/lib/wrapper")({args:["index","array","scalar","scalar","scalar"],pre:{body:"{this_warped=[0]}",args:[],thisVars:["this_warped"],localVars:[]},body:{body:"{_inline_13_arg2_(this_warped,_inline_13_arg0_),_inline_13_arg1_=_inline_13_arg3_(_inline_13_arg4_,this_warped[0])}",args:[{name:"_inline_13_arg0_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_13_arg1_",lvalue:!0,rvalue:!1,count:1},{name:"_inline_13_arg2_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_13_arg3_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_13_arg4_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_warped"],localVars:[]},post:{body:"{}",args:[],thisVars:[],localVars:[]},debug:!1,funcName:"warp1D",blockSize:64}),o=t("cwise/lib/wrapper")({args:["index","array","scalar","scalar","scalar"],pre:{body:"{this_warped=[0,0]}",args:[],thisVars:["this_warped"],localVars:[]},body:{body:"{_inline_16_arg2_(this_warped,_inline_16_arg0_),_inline_16_arg1_=_inline_16_arg3_(_inline_16_arg4_,this_warped[0],this_warped[1])}",args:[{name:"_inline_16_arg0_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_16_arg1_",lvalue:!0,rvalue:!1,count:1},{name:"_inline_16_arg2_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_16_arg3_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_16_arg4_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_warped"],localVars:[]},post:{body:"{}",args:[],thisVars:[],localVars:[]},debug:!1,funcName:"warp2D",blockSize:64}),s=t("cwise/lib/wrapper")({args:["index","array","scalar","scalar","scalar"],pre:{body:"{this_warped=[0,0,0]}",args:[],thisVars:["this_warped"],localVars:[]},body:{body:"{_inline_19_arg2_(this_warped,_inline_19_arg0_),_inline_19_arg1_=_inline_19_arg3_(_inline_19_arg4_,this_warped[0],this_warped[1],this_warped[2])}",args:[{name:"_inline_19_arg0_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_19_arg1_",lvalue:!0,rvalue:!1,count:1},{name:"_inline_19_arg2_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_19_arg3_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_19_arg4_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_warped"],localVars:[]},post:{body:"{}",args:[],thisVars:[],localVars:[]},debug:!1,funcName:"warp3D",blockSize:64});e.exports=function(t,e,r){switch(e.shape.length){case 1:a(t,r,n.d1,e);break;case 2:o(t,r,n.d2,e);break;case 3:s(t,r,n.d3,e);break;default:i(t,r,n.bind(void 0,e),e.shape.length)}return t}},{"cwise/lib/wrapper":119,"ndarray-linear-interpolate":432}],439:[function(t,e,r){var n=t("iota-array"),i=t("is-buffer"),a="undefined"!=typeof Float64Array;function o(t,e){return t[0]-e[0]}function s(){var t,e=this.stride,r=new Array(e.length);for(t=0;tMath.abs(this.stride[1]))?[1,0]:[0,1]}})"):3===e&&a.push("var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})")):a.push("ORDER})")),a.push("proto.set=function "+r+"_set("+l.join(",")+",v){"),i?a.push("return this.data.set("+u+",v)}"):a.push("return this.data["+u+"]=v}"),a.push("proto.get=function "+r+"_get("+l.join(",")+"){"),i?a.push("return this.data.get("+u+")}"):a.push("return this.data["+u+"]}"),a.push("proto.index=function "+r+"_index(",l.join(),"){return "+u+"}"),a.push("proto.hi=function "+r+"_hi("+l.join(",")+"){return new "+r+"(this.data,"+o.map(function(t){return["(typeof i",t,"!=='number'||i",t,"<0)?this.shape[",t,"]:i",t,"|0"].join("")}).join(",")+","+o.map(function(t){return"this.stride["+t+"]"}).join(",")+",this.offset)}");var d=o.map(function(t){return"a"+t+"=this.shape["+t+"]"}),p=o.map(function(t){return"c"+t+"=this.stride["+t+"]"});a.push("proto.lo=function "+r+"_lo("+l.join(",")+"){var b=this.offset,d=0,"+d.join(",")+","+p.join(","));for(var m=0;m=0){d=i"+m+"|0;b+=c"+m+"*d;a"+m+"-=d}");a.push("return new "+r+"(this.data,"+o.map(function(t){return"a"+t}).join(",")+","+o.map(function(t){return"c"+t}).join(",")+",b)}"),a.push("proto.step=function "+r+"_step("+l.join(",")+"){var "+o.map(function(t){return"a"+t+"=this.shape["+t+"]"}).join(",")+","+o.map(function(t){return"b"+t+"=this.stride["+t+"]"}).join(",")+",c=this.offset,d=0,ceil=Math.ceil");for(m=0;m=0){c=(c+this.stride["+m+"]*i"+m+")|0}else{a.push(this.shape["+m+"]);b.push(this.stride["+m+"])}");return a.push("var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}"),a.push("return function construct_"+r+"(data,shape,stride,offset){return new "+r+"(data,"+o.map(function(t){return"shape["+t+"]"}).join(",")+","+o.map(function(t){return"stride["+t+"]"}).join(",")+",offset)}"),new Function("CTOR_LIST","ORDER",a.join("\n"))(c[t],s)}var c={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],buffer:[],generic:[]};e.exports=function(t,e,r,n){if(void 0===t)return(0,c.array[0])([]);"number"==typeof t&&(t=[t]),void 0===e&&(e=[t.length]);var o=e.length;if(void 0===r){r=new Array(o);for(var s=o-1,u=1;s>=0;--s)r[s]=u,u*=e[s]}if(void 0===n)for(n=0,s=0;s>>0;e.exports=function(t,e){if(isNaN(t)||isNaN(e))return NaN;if(t===e)return t;if(0===t)return e<0?-i:i;var r=n.hi(t),o=n.lo(t);e>t==t>0?o===a?(r+=1,o=0):o+=1:0===o?(o=a,r-=1):o-=1;return n.pack(o,r)}},{"double-bits":131}],441:[function(t,e,r){var n=Math.PI,i=c(120);function a(t,e,r,n){return["C",t,e,r,n,r,n]}function o(t,e,r,n,i,a){return["C",t/3+2/3*r,e/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}function s(t,e,r,a,o,c,u,f,h,d){if(d)M=d[0],k=d[1],_=d[2],w=d[3];else{var p=l(t,e,-o);t=p.x,e=p.y;var m=(t-(f=(p=l(f,h,-o)).x))/2,v=(e-(h=p.y))/2,g=m*m/(r*r)+v*v/(a*a);g>1&&(r*=g=Math.sqrt(g),a*=g);var y=r*r,b=a*a,x=(c==u?-1:1)*Math.sqrt(Math.abs((y*b-y*v*v-b*m*m)/(y*v*v+b*m*m)));x==1/0&&(x=1);var _=x*r*v/a+(t+f)/2,w=x*-a*m/r+(e+h)/2,M=Math.asin(((e-w)/a).toFixed(9)),k=Math.asin(((h-w)/a).toFixed(9));M=t<_?n-M:M,k=f<_?n-k:k,M<0&&(M=2*n+M),k<0&&(k=2*n+k),u&&M>k&&(M-=2*n),!u&&k>M&&(k-=2*n)}if(Math.abs(k-M)>i){var A=k,T=f,E=h;k=M+i*(u&&k>M?1:-1);var S=s(f=_+r*Math.cos(k),h=w+a*Math.sin(k),r,a,o,0,u,T,E,[k,A,_,w])}var L=Math.tan((k-M)/4),C=4/3*r*L,P=4/3*a*L,z=[2*t-(t+C*Math.sin(M)),2*e-(e-P*Math.cos(M)),f+C*Math.sin(k),h-P*Math.cos(k),f,h];if(d)return z;S&&(z=z.concat(S));for(var O=0;O7&&(r.push(g.splice(0,7)),g.unshift("C"));break;case"S":var b=d,x=p;"C"!=e&&"S"!=e||(b+=b-n,x+=x-i),g=["C",b,x,g[1],g[2],g[3],g[4]];break;case"T":"Q"==e||"T"==e?(f=2*d-f,h=2*p-h):(f=d,h=p),g=o(d,p,f,h,g[1],g[2]);break;case"Q":f=g[1],h=g[2],g=o(d,p,g[1],g[2],g[3],g[4]);break;case"L":g=a(d,p,g[1],g[2]);break;case"H":g=a(d,p,g[1],p);break;case"V":g=a(d,p,d,g[1]);break;case"Z":g=a(d,p,l,u)}e=y,d=g[g.length-2],p=g[g.length-1],g.length>4?(n=g[g.length-4],i=g[g.length-3]):(n=d,i=p),r.push(g)}return r}},{}],442:[function(t,e,r){r.vertexNormals=function(t,e,r){for(var n=e.length,i=new Array(n),a=void 0===r?1e-6:r,o=0;oa){var x=i[c],_=1/Math.sqrt(v*y);for(b=0;b<3;++b){var w=(b+1)%3,M=(b+2)%3;x[b]+=_*(g[w]*m[M]-g[M]*m[w])}}}for(o=0;oa)for(_=1/Math.sqrt(k),b=0;b<3;++b)x[b]*=_;else for(b=0;b<3;++b)x[b]=0}return i},r.faceNormals=function(t,e,r){for(var n=t.length,i=new Array(n),a=void 0===r?1e-6:r,o=0;oa?1/Math.sqrt(d):0;for(c=0;c<3;++c)h[c]*=d;i[o]=h}return i}},{}],443:[function(t,e,r){"use strict";var n=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(e).map(function(t){return e[t]}).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach(function(t){n[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var r,o,s=function(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}(t),l=1;l0){var f=Math.sqrt(u+1);t[0]=.5*(o-l)/f,t[1]=.5*(s-n)/f,t[2]=.5*(r-a)/f,t[3]=.5*f}else{var h=Math.max(e,a,c),f=Math.sqrt(2*h-u+1);e>=h?(t[0]=.5*f,t[1]=.5*(i+r)/f,t[2]=.5*(s+n)/f,t[3]=.5*(o-l)/f):a>=h?(t[0]=.5*(r+i)/f,t[1]=.5*f,t[2]=.5*(l+o)/f,t[3]=.5*(s-n)/f):(t[0]=.5*(n+s)/f,t[1]=.5*(o+l)/f,t[2]=.5*f,t[3]=.5*(r-i)/f)}return t}},{}],445:[function(t,e,r){"use strict";e.exports=function(t){var e=(t=t||{}).center||[0,0,0],r=t.rotation||[0,0,0,1],n=t.radius||1;e=[].slice.call(e,0,3),u(r=[].slice.call(r,0,4),r);var i=new f(r,e,Math.log(n));i.setDistanceLimits(t.zoomMin,t.zoomMax),("eye"in t||"up"in t)&&i.lookAt(0,t.eye,t.center,t.up);return i};var n=t("filtered-vector"),i=t("gl-mat4/lookAt"),a=t("gl-mat4/fromQuat"),o=t("gl-mat4/invert"),s=t("./lib/quatFromFrame");function l(t,e,r){return Math.sqrt(Math.pow(t,2)+Math.pow(e,2)+Math.pow(r,2))}function c(t,e,r,n){return Math.sqrt(Math.pow(t,2)+Math.pow(e,2)+Math.pow(r,2)+Math.pow(n,2))}function u(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=c(r,n,i,a);o>1e-6?(t[0]=r/o,t[1]=n/o,t[2]=i/o,t[3]=a/o):(t[0]=t[1]=t[2]=0,t[3]=1)}function f(t,e,r){this.radius=n([r]),this.center=n(e),this.rotation=n(t),this.computedRadius=this.radius.curve(0),this.computedCenter=this.center.curve(0),this.computedRotation=this.rotation.curve(0),this.computedUp=[.1,0,0],this.computedEye=[.1,0,0],this.computedMatrix=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.recalcMatrix(0)}var h=f.prototype;h.lastT=function(){return Math.max(this.radius.lastT(),this.center.lastT(),this.rotation.lastT())},h.recalcMatrix=function(t){this.radius.curve(t),this.center.curve(t),this.rotation.curve(t);var e=this.computedRotation;u(e,e);var r=this.computedMatrix;a(r,e);var n=this.computedCenter,i=this.computedEye,o=this.computedUp,s=Math.exp(this.computedRadius[0]);i[0]=n[0]+s*r[2],i[1]=n[1]+s*r[6],i[2]=n[2]+s*r[10],o[0]=r[1],o[1]=r[5],o[2]=r[9];for(var l=0;l<3;++l){for(var c=0,f=0;f<3;++f)c+=r[l+4*f]*i[f];r[12+l]=-c}},h.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r},h.idle=function(t){this.center.idle(t),this.radius.idle(t),this.rotation.idle(t)},h.flush=function(t){this.center.flush(t),this.radius.flush(t),this.rotation.flush(t)},h.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=i[1],o=i[5],s=i[9],c=l(a,o,s);a/=c,o/=c,s/=c;var u=i[0],f=i[4],h=i[8],d=u*a+f*o+h*s,p=l(u-=a*d,f-=o*d,h-=s*d);u/=p,f/=p,h/=p;var m=i[2],v=i[6],g=i[10],y=m*a+v*o+g*s,b=m*u+v*f+g*h,x=l(m-=y*a+b*u,v-=y*o+b*f,g-=y*s+b*h);m/=x,v/=x,g/=x;var _=u*e+a*r,w=f*e+o*r,M=h*e+s*r;this.center.move(t,_,w,M);var k=Math.exp(this.computedRadius[0]);k=Math.max(1e-4,k+n),this.radius.set(t,Math.log(k))},h.rotate=function(t,e,r,n){this.recalcMatrix(t),e=e||0,r=r||0;var i=this.computedMatrix,a=i[0],o=i[4],s=i[8],u=i[1],f=i[5],h=i[9],d=i[2],p=i[6],m=i[10],v=e*a+r*u,g=e*o+r*f,y=e*s+r*h,b=-(p*y-m*g),x=-(m*v-d*y),_=-(d*g-p*v),w=Math.sqrt(Math.max(0,1-Math.pow(b,2)-Math.pow(x,2)-Math.pow(_,2))),M=c(b,x,_,w);M>1e-6?(b/=M,x/=M,_/=M,w/=M):(b=x=_=0,w=1);var k=this.computedRotation,A=k[0],T=k[1],E=k[2],S=k[3],L=A*w+S*b+T*_-E*x,C=T*w+S*x+E*b-A*_,P=E*w+S*_+A*x-T*b,z=S*w-A*b-T*x-E*_;if(n){b=d,x=p,_=m;var O=Math.sin(n)/l(b,x,_);b*=O,x*=O,_*=O,z=z*(w=Math.cos(e))-(L=L*w+z*b+C*_-P*x)*b-(C=C*w+z*x+P*b-L*_)*x-(P=P*w+z*_+L*x-C*b)*_}var D=c(L,C,P,z);D>1e-6?(L/=D,C/=D,P/=D,z/=D):(L=C=P=0,z=1),this.rotation.set(t,L,C,P,z)},h.lookAt=function(t,e,r,n){this.recalcMatrix(t),r=r||this.computedCenter,e=e||this.computedEye,n=n||this.computedUp;var a=this.computedMatrix;i(a,e,r,n);var o=this.computedRotation;s(o,a[0],a[1],a[2],a[4],a[5],a[6],a[8],a[9],a[10]),u(o,o),this.rotation.set(t,o[0],o[1],o[2],o[3]);for(var l=0,c=0;c<3;++c)l+=Math.pow(r[c]-e[c],2);this.radius.set(t,.5*Math.log(Math.max(l,1e-6))),this.center.set(t,r[0],r[1],r[2])},h.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},h.setMatrix=function(t,e){var r=this.computedRotation;s(r,e[0],e[1],e[2],e[4],e[5],e[6],e[8],e[9],e[10]),u(r,r),this.rotation.set(t,r[0],r[1],r[2],r[3]);var n=this.computedMatrix;o(n,e);var i=n[15];if(Math.abs(i)>1e-6){var a=n[12]/i,l=n[13]/i,c=n[14]/i;this.recalcMatrix(t);var f=Math.exp(this.computedRadius[0]);this.center.set(t,a-n[2]*f,l-n[6]*f,c-n[10]*f),this.radius.idle(t)}else this.center.idle(t),this.radius.idle(t)},h.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},h.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},h.getDistanceLimits=function(t){var e=this.radius.bounds;return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},h.toJSON=function(){return this.recalcMatrix(this.lastT()),{center:this.computedCenter.slice(),rotation:this.computedRotation.slice(),distance:Math.log(this.computedRadius[0]),zoomMin:this.radius.bounds[0][0],zoomMax:this.radius.bounds[1][0]}},h.fromJSON=function(t){var e=this.lastT(),r=t.center;r&&this.center.set(e,r[0],r[1],r[2]);var n=t.rotation;n&&this.rotation.set(e,n[0],n[1],n[2],n[3]);var i=t.distance;i&&i>0&&this.radius.set(e,Math.log(i)),this.setDistanceLimits(t.zoomMin,t.zoomMax)}},{"./lib/quatFromFrame":444,"filtered-vector":142,"gl-mat4/fromQuat":183,"gl-mat4/invert":186,"gl-mat4/lookAt":187}],446:[function(t,e,r){"use strict";var n=t("repeat-string");e.exports=function(t,e,r){return n(r=void 0!==r?r+"":" ",e)+t}},{"repeat-string":487}],447:[function(t,e,r){e.exports=function(t){var e=[];return t.replace(i,function(t,r,i){var o=r.toLowerCase();for(i=function(t){var e=t.match(a);return e?e.map(Number):[]}(i),"m"==o&&i.length>2&&(e.push([r].concat(i.splice(0,2))),o="l",r="m"==r?"l":"L");;){if(i.length==n[o])return i.unshift(r),e.push(i);if(i.length=0;n--){var i=t[n];"."===i?t.splice(n,1):".."===i?(t.splice(n,1),r++):r&&(t.splice(n,1),r--)}if(e)for(;r--;r)t.unshift("..");return t}var n=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,i=function(t){return n.exec(t).slice(1)};function a(t,e){if(t.filter)return t.filter(e);for(var r=[],n=0;n=-1&&!n;i--){var o=i>=0?arguments[i]:t.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(r=o+"/"+r,n="/"===o.charAt(0))}return r=e(a(r.split("/"),function(t){return!!t}),!n).join("/"),(n?"/":"")+r||"."},r.normalize=function(t){var n=r.isAbsolute(t),i="/"===o(t,-1);return(t=e(a(t.split("/"),function(t){return!!t}),!n).join("/"))||n||(t="."),t&&i&&(t+="/"),(n?"/":"")+t},r.isAbsolute=function(t){return"/"===t.charAt(0)},r.join=function(){var t=Array.prototype.slice.call(arguments,0);return r.normalize(a(t,function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t}).join("/"))},r.relative=function(t,e){function n(t){for(var e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r-e+1)}t=r.resolve(t).substr(1),e=r.resolve(e).substr(1);for(var i=n(t.split("/")),a=n(e.split("/")),o=Math.min(i.length,a.length),s=o,l=0;l55295&&e<57344){if(!r){e>56319||a+1===n?i.push(239,191,189):r=e;continue}if(e<56320){i.push(239,191,189),r=e;continue}e=r-55296<<10|e-56320|65536,r=null}else r&&(i.push(239,191,189),r=null);e<128?i.push(e):e<2048?i.push(e>>6|192,63&e|128):e<65536?i.push(e>>12|224,e>>6&63|128,63&e|128):i.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}return i}(n={readUInt32LE:function(t){return(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},writeUInt32LE:function(t,e){this[e]=t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24},readInt32LE:function(t){return(this[t]|this[t+1]<<8|this[t+2]<<16)+(this[t+3]<<24)},readFloatLE:function(t){return o.read(this,t,!0,23,4)},readDoubleLE:function(t){return o.read(this,t,!0,52,8)},writeFloatLE:function(t,e){return o.write(this,t,e,!0,23,4)},writeDoubleLE:function(t,e){return o.write(this,t,e,!0,52,8)},toString:function(t,e,r){var n="",i="";e=e||0,r=Math.min(this.length,r||this.length);for(var a=e;a>3,a=this.pos;t(i,e,this),this.pos===a&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=this.buf.readUInt32LE(this.pos);return this.pos+=4,t},readSFixed32:function(){var t=this.buf.readInt32LE(this.pos);return this.pos+=4,t},readFixed64:function(){var t=this.buf.readUInt32LE(this.pos)+4294967296*this.buf.readUInt32LE(this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=this.buf.readUInt32LE(this.pos)+4294967296*this.buf.readInt32LE(this.pos+4);return this.pos+=8,t},readFloat:function(){var t=this.buf.readFloatLE(this.pos);return this.pos+=4,t},readDouble:function(){var t=this.buf.readDoubleLE(this.pos);return this.pos+=8,t},readVarint:function(){var t,e,r=this.buf;return t=127&(e=r[this.pos++]),e<128?t:(t|=(127&(e=r[this.pos++]))<<7,e<128?t:(t|=(127&(e=r[this.pos++]))<<14,e<128?t:(t|=(127&(e=r[this.pos++]))<<21,e<128?t:function(t,e){var r,n=e.buf;if(r=n[e.pos++],t+=268435456*(127&r),r<128)return t;if(r=n[e.pos++],t+=34359738368*(127&r),r<128)return t;if(r=n[e.pos++],t+=4398046511104*(127&r),r<128)return t;if(r=n[e.pos++],t+=562949953421312*(127&r),r<128)return t;if(r=n[e.pos++],t+=72057594037927940*(127&r),r<128)return t;if(r=n[e.pos++],t+=0x8000000000000000*(127&r),r<128)return t;throw new Error("Expected varint not more than 10 bytes")}(t,this))))},readVarint64:function(){var t=this.pos,e=this.readVarint();if(e127;);else if(e===i.Bytes)this.pos=this.readVarint()+this.pos;else if(e===i.Fixed32)this.pos+=4;else{if(e!==i.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455?function(t,e){e.realloc(10);var r=e.pos+10;for(;t>=1;){if(e.pos>=r)throw new Error("Given varint doesn't fit into 10 bytes");var n=255&t;e.buf[e.pos++]=n|(t>=128?128:0),t/=128}}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t);var e=n.byteLength(t);this.writeVarint(e),this.realloc(e),this.buf.write(t,this.pos),this.pos+=e},writeFloat:function(t){this.realloc(4),this.buf.writeFloatLE(t,this.pos),this.pos+=4},writeDouble:function(t){this.realloc(8),this.buf.writeDoubleLE(t,this.pos),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&function(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.ceil(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i]}(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,i.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){this.writeMessage(t,o,e)},writePackedSVarint:function(t,e){this.writeMessage(t,s,e)},writePackedBoolean:function(t,e){this.writeMessage(t,u,e)},writePackedFloat:function(t,e){this.writeMessage(t,l,e)},writePackedDouble:function(t,e){this.writeMessage(t,c,e)},writePackedFixed32:function(t,e){this.writeMessage(t,f,e)},writePackedSFixed32:function(t,e){this.writeMessage(t,h,e)},writePackedFixed64:function(t,e){this.writeMessage(t,d,e)},writePackedSFixed64:function(t,e){this.writeMessage(t,p,e)},writeBytesField:function(t,e){this.writeTag(t,i.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,i.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,i.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,i.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,i.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,i.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,i.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,i.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,i.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,i.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./buffer":450}],452:[function(t,e,r){"use strict";e.exports=function(t){var e=t.length;if(e0;--o)a=l[o],r=s[o],s[o]=s[a],s[a]=r,l[o]=l[r],l[r]=a,c=(c+r)*o;return n.freeUint32(l),n.freeUint32(s),c},r.unrank=function(t,e,r){switch(t){case 0:return r||[];case 1:return r?(r[0]=0,r):[0];case 2:return r?(e?(r[0]=0,r[1]=1):(r[0]=1,r[1]=0),r):e?[0,1]:[1,0]}var n,i,a,o=1;for((r=r||new Array(t))[0]=0,a=1;a0;--a)e=e-(n=e/o|0)*o|0,o=o/a|0,i=0|r[a],r[a]=0|r[n],r[n]=0|i;return r}},{"invert-permutation":260,"typedarray-pool":534}],454:[function(t,e,r){"use strict";e.exports=function(t,e,r){var n,a,o={};if("string"==typeof e&&(e=i(e)),Array.isArray(e)){var s={};for(a=0;a0){o=a[u][r][0],l=u;break}s=o[1^l];for(var f=0;f<2;++f)for(var h=a[f][r],d=0;d0&&(o=p,s=m,l=f)}return i?s:(o&&c(o,l),s)}function f(t,r){var i=a[r][t][0],o=[t];c(i,r);for(var s=i[1^r];;){for(;s!==t;)o.push(s),s=u(o[o.length-2],s,!1);if(a[0][t].length+a[1][t].length===0)break;var l=o[o.length-1],f=t,h=o[1],d=u(l,f,!0);if(n(e[l],e[f],e[h],e[d])<0)break;o.push(t),s=u(l,f)}return o}function h(t,e){return e[1]===e[e.length-1]}for(var o=0;o0;){a[0][o].length;var m=f(o,d);h(p,m)?p.push.apply(p,m):(p.length>0&&l.push(p),p=m)}p.length>0&&l.push(p)}return l};var n=t("compare-angle")},{"compare-angle":106}],456:[function(t,e,r){"use strict";e.exports=function(t,e){for(var r=n(t,e.length),i=new Array(e.length),a=new Array(e.length),o=[],s=0;s0;){var c=o.pop();i[c]=!1;for(var u=r[c],s=0;s0})).length,v=new Array(m),g=new Array(m),d=0;d0;){var j=N.pop(),B=L[j];l(B,function(t,e){return t-e});var U,V=B.length,q=F[j];if(0===q){var M=p[j];U=[M]}for(var d=0;d=0)&&(F[H]=1^q,N.push(H),0===q)){var M=p[H];R(M)||(M.reverse(),U.push(M))}}0===q&&r.push(U)}return r};var n=t("edges-to-adjacency-list"),i=t("planar-dual"),a=t("point-in-big-polygon"),o=t("two-product"),s=t("robust-sum"),l=t("uniq"),c=t("./lib/trim-leaves");function u(t,e){for(var r=new Array(t),n=0;n0&&e[i]===r[0]))return 1;a=t[i-1]}for(var s=1;a;){var l=a.key,c=n(r,l[0],l[1]);if(l[0][0]0))return 0;s=-1,a=a.right}else if(c>0)a=a.left;else{if(!(c<0))return 0;s=1,a=a.right}}return s}}(g.slabs,g.coordinates);return 0===a.length?y:function(t,e){return function(r){return t(r[0],r[1])?0:e(r)}}(l(a),y)};var n=t("robust-orientation")[3],i=t("slab-decomposition"),a=t("interval-tree-1d"),o=t("binary-search-bounds");function s(){return!0}function l(t){for(var e={},r=0;r=-t},pointBetween:function(e,r,n){var i=e[1]-r[1],a=n[0]-r[0],o=e[0]-r[0],s=n[1]-r[1],l=o*a+i*s;return!(l-t)},pointsSameX:function(e,r){return Math.abs(e[0]-r[0])t!=o-i>t&&(a-c)*(i-u)/(o-u)+c-n>t&&(s=!s),a=c,o=u}return s}};return e}},{}],463:[function(t,e,r){var n={toPolygon:function(t,e){function r(e){if(e.length<=0)return t.segments({inverted:!1,regions:[]});function r(e){var r=e.slice(0,e.length-1);return t.segments({inverted:!1,regions:[r]})}for(var n=r(e[0]),i=1;i0})}function u(t,n){var i=t.seg,a=n.seg,o=i.start,s=i.end,c=a.start,u=a.end;r&&r.checkIntersection(i,a);var f=e.linesIntersect(o,s,c,u);if(!1===f){if(!e.pointsCollinear(o,s,c))return!1;if(e.pointsSame(o,u)||e.pointsSame(s,c))return!1;var h=e.pointsSame(o,c),d=e.pointsSame(s,u);if(h&&d)return n;var p=!h&&e.pointBetween(o,c,u),m=!d&&e.pointBetween(s,c,u);if(h)return m?l(n,s):l(t,u),n;p&&(d||(m?l(n,s):l(t,u)),l(n,o))}else 0===f.alongA&&(-1===f.alongB?l(t,c):0===f.alongB?l(t,f.pt):1===f.alongB&&l(t,u)),0===f.alongB&&(-1===f.alongA?l(n,o):0===f.alongA?l(n,f.pt):1===f.alongA&&l(n,s));return!1}for(var f=[];!a.isEmpty();){var h=a.getHead();if(r&&r.vert(h.pt[0]),h.isStart){r&&r.segmentNew(h.seg,h.primary);var d=c(h),p=d.before?d.before.ev:null,m=d.after?d.after.ev:null;function v(){if(p){var t=u(h,p);if(t)return t}return!!m&&u(h,m)}r&&r.tempStatus(h.seg,!!p&&p.seg,!!m&&m.seg);var g,y,b=v();if(b)t?(y=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below)&&(b.seg.myFill.above=!b.seg.myFill.above):b.seg.otherFill=h.seg.myFill,r&&r.segmentUpdate(b.seg),h.other.remove(),h.remove();if(a.getHead()!==h){r&&r.rewind(h.seg);continue}t?(y=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below,h.seg.myFill.below=m?m.seg.myFill.above:i,h.seg.myFill.above=y?!h.seg.myFill.below:h.seg.myFill.below):null===h.seg.otherFill&&(g=m?h.primary===m.primary?m.seg.otherFill.above:m.seg.myFill.above:h.primary?o:i,h.seg.otherFill={above:g,below:g}),r&&r.status(h.seg,!!p&&p.seg,!!m&&m.seg),h.other.status=d.insert(n.node({ev:h}))}else{var x=h.status;if(null===x)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(s.exists(x.prev)&&s.exists(x.next)&&u(x.prev.ev,x.next.ev),r&&r.statusRemove(x.ev.seg),x.remove(),!h.primary){var _=h.seg.myFill;h.seg.myFill=h.seg.otherFill,h.seg.otherFill=_}f.push(h.seg)}a.getHead().remove()}return r&&r.done(),f}return t?{addRegion:function(t){for(var n,i,a,o=t[t.length-1],l=0;l=c?(k=1,y=c+2*h+p):y=h*(k=-h/c)+p):(k=0,d>=0?(A=0,y=p):-d>=f?(A=1,y=f+2*d+p):y=d*(A=-d/f)+p);else if(A<0)A=0,h>=0?(k=0,y=p):-h>=c?(k=1,y=c+2*h+p):y=h*(k=-h/c)+p;else{var T=1/M;y=(k*=T)*(c*k+u*(A*=T)+2*h)+A*(u*k+f*A+2*d)+p}else k<0?(x=f+d)>(b=u+h)?(_=x-b)>=(w=c-2*u+f)?(k=1,A=0,y=c+2*h+p):y=(k=_/w)*(c*k+u*(A=1-k)+2*h)+A*(u*k+f*A+2*d)+p:(k=0,x<=0?(A=1,y=f+2*d+p):d>=0?(A=0,y=p):y=d*(A=-d/f)+p):A<0?(x=c+h)>(b=u+d)?(_=x-b)>=(w=c-2*u+f)?(A=1,k=0,y=f+2*d+p):y=(k=1-(A=_/w))*(c*k+u*A+2*h)+A*(u*k+f*A+2*d)+p:(A=0,x<=0?(k=1,y=c+2*h+p):h>=0?(k=0,y=p):y=h*(k=-h/c)+p):(_=f+d-u-h)<=0?(k=0,A=1,y=f+2*d+p):_>=(w=c-2*u+f)?(k=1,A=0,y=c+2*h+p):y=(k=_/w)*(c*k+u*(A=1-k)+2*h)+A*(u*k+f*A+2*d)+p;var E=1-k-A;for(l=0;l1)for(var r=1;r= 0x80 (not a basic code point)","invalid-input":"Invalid input"},w=u-f,M=Math.floor,k=String.fromCharCode;function A(t){throw new RangeError(_[t])}function T(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function E(t,e){var r=t.split("@"),n="";return r.length>1&&(n=r[0]+"@",t=r[1]),n+T((t=t.replace(x,".")).split("."),e).join(".")}function S(t){for(var e,r,n=[],i=0,a=t.length;i=55296&&e<=56319&&i65535&&(e+=k((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=k(t)}).join("")}function C(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function P(t,e,r){var n=0;for(t=r?M(t/p):t>>1,t+=M(t/e);t>w*h>>1;n+=u)t=M(t/w);return M(n+(w+1)*t/(t+d))}function z(t){var e,r,n,i,a,o,s,l,d,p,y,b=[],x=t.length,_=0,w=v,k=m;for((r=t.lastIndexOf(g))<0&&(r=0),n=0;n=128&&A("not-basic"),b.push(t.charCodeAt(n));for(i=r>0?r+1:0;i=x&&A("invalid-input"),((l=(y=t.charCodeAt(i++))-48<10?y-22:y-65<26?y-65:y-97<26?y-97:u)>=u||l>M((c-_)/o))&&A("overflow"),_+=l*o,!(l<(d=s<=k?f:s>=k+h?h:s-k));s+=u)o>M(c/(p=u-d))&&A("overflow"),o*=p;k=P(_-a,e=b.length+1,0==a),M(_/e)>c-w&&A("overflow"),w+=M(_/e),_%=e,b.splice(_++,0,w)}return L(b)}function O(t){var e,r,n,i,a,o,s,l,d,p,y,b,x,_,w,T=[];for(b=(t=S(t)).length,e=v,r=0,a=m,o=0;o=e&&yM((c-r)/(x=n+1))&&A("overflow"),r+=(s-e)*x,e=s,o=0;oc&&A("overflow"),y==e){for(l=r,d=u;!(l<(p=d<=a?f:d>=a+h?h:d-a));d+=u)w=l-p,_=u-p,T.push(k(C(p+w%_,0))),l=M(w/_);T.push(k(C(l,0))),a=P(r,x,n==i),r=0,++n}++r,++e}return T.join("")}if(s={version:"1.4.1",ucs2:{decode:S,encode:L},decode:z,encode:O,toASCII:function(t){return E(t,function(t){return b.test(t)?"xn--"+O(t):t})},toUnicode:function(t){return E(t,function(t){return y.test(t)?z(t.slice(4).toLowerCase()):t})}},i&&a)if(e.exports==i)a.exports=s;else for(l in s)s.hasOwnProperty(l)&&(i[l]=s[l]);else n.punycode=s}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],471:[function(t,e,r){e.exports=t("gl-quat/slerp")},{"gl-quat/slerp":213}],472:[function(t,e,r){"use strict";function n(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.exports=function(t,e,r,a){e=e||"&",r=r||"=";var o={};if("string"!=typeof t||0===t.length)return o;var s=/\+/g;t=t.split(e);var l=1e3;a&&"number"==typeof a.maxKeys&&(l=a.maxKeys);var c=t.length;l>0&&c>l&&(c=l);for(var u=0;u=0?(f=m.substr(0,v),h=m.substr(v+1)):(f=m,h=""),d=decodeURIComponent(f),p=decodeURIComponent(h),n(o,d)?i(o[d])?o[d].push(p):o[d]=[o[d],p]:o[d]=p}return o};var i=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}},{}],473:[function(t,e,r){"use strict";var n=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};e.exports=function(t,e,r,s){return e=e||"&",r=r||"=",null===t&&(t=void 0),"object"==typeof t?a(o(t),function(o){var s=encodeURIComponent(n(o))+r;return i(t[o])?a(t[o],function(t){return s+encodeURIComponent(n(t))}).join(e):s+encodeURIComponent(n(t[o]))}).join(e):s?encodeURIComponent(n(s))+r+encodeURIComponent(n(t)):""};var i=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function a(t,e){if(t.map)return t.map(e);for(var r=[],n=0;nn;){if(a-n>600){var s=a-n+1,l=r-n+1,c=Math.log(s),u=.5*Math.exp(2*c/3),f=.5*Math.sqrt(c*u*(s-u)/s)*(l-s/2<0?-1:1),h=Math.max(n,Math.floor(r-l*u/s+f)),d=Math.min(a,Math.floor(r+(s-l)*u/s+f));t(e,r,h,d,o)}var p=e[r],m=n,v=a;for(i(e,n,r),o(e[a],p)>0&&i(e,n,a);m0;)v--}0===o(e[n],p)?i(e,n,v):i(e,++v,a),v<=r&&(n=v+1),r<=v&&(a=v-1)}}(t,e,r||0,n||t.length-1,o||a)}function i(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function a(t,e){return te?1:0}e.exports=n,e.exports.default=n},{}],476:[function(t,e,r){"use strict";var n=t("big-rat/add");e.exports=function(t,e){for(var r=t.length,i=new Array(r),a=0;a0){var c=t[r-1];if(0===n(s,c)&&a(c)!==l){r-=1;continue}}t[r++]=s}}return t.length=r,t}},{"cell-orientation":91,"compare-cell":107,"compare-oriented-cell":108}],481:[function(t,e,r){"use strict";var n=t("array-bounds"),i=t("color-normalize"),a=t("update-diff"),o=t("pick-by-alias"),s=t("object-assign"),l=t("flatten-vertex-data"),c=t("to-float32"),u=c.float32,f=c.fract32;e.exports=function(t,e){"function"==typeof t?(e||(e={}),e.regl=t):e=t;e.length&&(e.positions=e);if(!(t=e.regl).hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");var r,c,d,p,m,v,g=t._gl,y={color:"black",capSize:5,lineWidth:1,opacity:1,viewport:null,range:null,offset:0,count:0,bounds:null,positions:[],errors:[]},b=[];return p=t.buffer({usage:"dynamic",type:"uint8",data:null}),c=t.buffer({usage:"dynamic",type:"float",data:null}),d=t.buffer({usage:"dynamic",type:"float",data:null}),m=t.buffer({usage:"dynamic",type:"float",data:null}),v=t.buffer({usage:"static",type:"float",data:h}),M(e),r=t({vert:"\n\t\tprecision highp float;\n\n\t\tattribute vec2 position, positionFract;\n\t\tattribute vec4 error;\n\t\tattribute vec4 color;\n\n\t\tattribute vec2 direction, lineOffset, capOffset;\n\n\t\tuniform vec4 viewport;\n\t\tuniform float lineWidth, capSize;\n\t\tuniform vec2 scale, scaleFract, translate, translateFract;\n\n\t\tvarying vec4 fragColor;\n\n\t\tvoid main() {\n\t\t\tfragColor = color / 255.;\n\n\t\t\tvec2 pixelOffset = lineWidth * lineOffset + (capSize + lineWidth) * capOffset;\n\n\t\t\tvec2 dxy = -step(.5, direction.xy) * error.xz + step(direction.xy, vec2(-.5)) * error.yw;\n\n\t\t\tvec2 position = position + dxy;\n\n\t\t\tvec2 pos = (position + translate) * scale\n\t\t\t\t+ (positionFract + translateFract) * scale\n\t\t\t\t+ (position + translate) * scaleFract\n\t\t\t\t+ (positionFract + translateFract) * scaleFract;\n\n\t\t\tpos += pixelOffset / viewport.zw;\n\n\t\t\tgl_Position = vec4(pos * 2. - 1., 0, 1);\n\t\t}\n\t\t",frag:"\n\t\tprecision mediump float;\n\n\t\tvarying vec4 fragColor;\n\n\t\tuniform float opacity;\n\n\t\tvoid main() {\n\t\t\tgl_FragColor = fragColor;\n\t\t\tgl_FragColor.a *= opacity;\n\t\t}\n\t\t",uniforms:{range:t.prop("range"),lineWidth:t.prop("lineWidth"),capSize:t.prop("capSize"),opacity:t.prop("opacity"),scale:t.prop("scale"),translate:t.prop("translate"),scaleFract:t.prop("scaleFract"),translateFract:t.prop("translateFract"),viewport:function(t,e){return[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]}},attributes:{color:{buffer:p,offset:function(t,e){return 4*e.offset},divisor:1},position:{buffer:c,offset:function(t,e){return 8*e.offset},divisor:1},positionFract:{buffer:d,offset:function(t,e){return 8*e.offset},divisor:1},error:{buffer:m,offset:function(t,e){return 16*e.offset},divisor:1},direction:{buffer:v,stride:24,offset:0},lineOffset:{buffer:v,stride:24,offset:8},capOffset:{buffer:v,stride:24,offset:16}},primitive:"triangles",blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:!1},scissor:{enable:!0,box:t.prop("viewport")},viewport:t.prop("viewport"),stencil:!1,instances:t.prop("count"),count:h.length}),s(x,{update:M,draw:_,destroy:k,regl:t,gl:g,canvas:g.canvas,groups:b}),x;function x(t){t?M(t):null===t&&k(),_()}function _(e){if("number"==typeof e)return w(e);e&&!Array.isArray(e)&&(e=[e]),t._refresh(),b.forEach(function(t,r){t&&(e&&(e[r]?t.draw=!0:t.draw=!1),t.draw?w(r):t.draw=!0)})}function w(t){"number"==typeof t&&(t=b[t]),null!=t&&t&&t.count&&t.color&&t.opacity&&t.positions&&t.positions.length>1&&(t.scaleRatio=[t.scale[0]*t.viewport.width,t.scale[1]*t.viewport.height],r(t),t.after&&t.after(t))}function M(t){if(t){null!=t.length?"number"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var e=0,r=0;if(b=t.map(function(t,c){var u=b[c];return t?("function"==typeof t?t={after:t}:"number"==typeof t[0]&&(t={positions:t}),t=o(t,{color:"color colors fill",capSize:"capSize cap capsize cap-size",lineWidth:"lineWidth line-width width line thickness",opacity:"opacity alpha",range:"range dataBox",viewport:"viewport viewBox",errors:"errors error",positions:"positions position data points"}),u||(b[c]=u={id:c,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},t=s({},y,t)),a(u,t,[{lineWidth:function(t){return.5*+t},capSize:function(t){return.5*+t},opacity:parseFloat,errors:function(t){return t=l(t),r+=t.length,t},positions:function(t,r){return t=l(t,"float64"),r.count=Math.floor(t.length/2),r.bounds=n(t,2),r.offset=e,e+=r.count,t}},{color:function(t,e){var r=e.count;if(t||(t="transparent"),!Array.isArray(t)||"number"==typeof t[0]){var n=t;t=Array(r);for(var a=0;a2&&(t._refresh(),e.fill&&e.triangles&&e.triangles.length>2&&p(e),e.thickness&&e.color&&(e.scaleRatio=[e.scale[0]*e.viewport.width,e.scale[1]*e.viewport.height],e.scaleRatio[0]>k||e.scaleRatio[1]>k?d(e):"rect"===e.join||!e.join&&(e.thickness<=2||e.positions.length>=A)?d(e):r(e),e.after&&e.after(e)))}function C(t){if(t){null!=t.length?"number"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var e=0;if(E.lines=w=t.map(function(t,r){var o=w[r];return t?("function"==typeof t?t={after:t}:"number"==typeof t[0]&&(t={positions:t}),t=s(t,{positions:"positions points data coords",thickness:"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth",join:"lineJoin linejoin join type mode",miterLimit:"miterlimit miterLimit",dashes:"dash dashes dasharray dash-array dashArray",color:"color stroke colors stroke-color strokeColor",fill:"fill fill-color fillColor",opacity:"alpha opacity",overlay:"overlay crease overlap intersect",close:"closed close closed-path closePath",range:"range dataBox",viewport:"viewport viewBox",hole:"holes hole hollow",after:"after callback done pass"}),o||(w[r]=o={id:r,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,offset:0,dashLength:0,hole:!0},t=a({},_,t)),l(o,t,[{thickness:parseFloat,opacity:parseFloat,miterLimit:parseFloat,overlay:Boolean,join:function(t){return t},after:function(t){return t},hole:function(t){return t||[]},positions:function(t,r,n){t=c(t,"float64");var a=Math.floor(t.length/2),o=i(t,2);return r.range||n.range||(n.range=o),r.count=a,r.bounds=o,e+=a,t},fill:function(t){return t?n(t,"uint8"):null},dashes:function(t,e,r){var n,i=e.dashLength;if(!t||t.length<2)i=1,n=new Uint8Array([255,255,255,255,255,255,255,255]);else{i=0;for(var a=0;a=4&&e.positions[0]===e.positions[e.positions.length-2]&&e.positions[1]===e.positions[e.positions.length-1]},positions:function(t,e,r){if(e.fill&&t.length){for(var n=[],i={},a=0,o=0,s=0,l=e.count;o 0. && baClipping < length(normalWidth * endBotJoin)) {\n\t\t//handle miter clipping\n\t\tbTopCoord -= normalWidth * endTopJoin;\n\t\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\n\t}\n\n\tif (nextReverse) {\n\t\t//make join rectangular\n\t\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\n\t\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\n\t\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\n\t\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\n\t}\n\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\n\t\t//handle miter clipping\n\t\taBotCoord -= normalWidth * startBotJoin;\n\t\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\n\t}\n\n\tvec2 aTopPosition = (aTopCoord) * scale + translate;\n\tvec2 aBotPosition = (aBotCoord) * scale + translate;\n\n\tvec2 bTopPosition = (bTopCoord) * scale + translate;\n\tvec2 bBotPosition = (bBotCoord) * scale + translate;\n\n\t//position is normalized 0..1 coord on the screen\n\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\n\n\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\n\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\n\n\t//bevel miter cutoffs\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n\n\t//round miter cutoffs\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n}\n"]),frag:o(["precision highp float;\n#define GLSLIFY 1\n\nuniform sampler2D dashPattern;\nuniform vec2 dashShape;\nuniform float dashLength, pixelRatio, thickness, opacity, id, miterMode;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\nvarying vec4 startCutoff, endCutoff;\nvarying vec2 startCoord, endCoord;\nvarying float enableStartMiter, enableEndMiter;\n\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 diff = b - a;\n\tvec2 perp = normalize(vec2(-diff.y, diff.x));\n\treturn dot(p - a, perp);\n}\n\nvoid main() {\n\tfloat alpha = 1., distToStart, distToEnd;\n\tfloat cutoff = thickness * .5;\n\n\t//bevel miter\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToStart + 1., 0.), 1.);\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToEnd + 1., 0.), 1.);\n\t\t}\n\t}\n\n\t// round miter\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - startCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - endCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\t}\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\n\tfloat dash = texture2D(dashPattern, vec2(t * dashLength * 2. / dashShape.x, (id + .5) / dashShape.y)).r;\n\n\tgl_FragColor = fragColor * dash;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}\n"]),attributes:{lineEnd:{buffer:v,divisor:0,stride:8,offset:0},lineTop:{buffer:v,divisor:0,stride:8,offset:4},aColor:{buffer:m,stride:4,offset:function(t,e){return 4*e.offset},divisor:1},bColor:{buffer:m,stride:4,offset:function(t,e){return 4*e.offset+4},divisor:1},prevCoord:{buffer:g,stride:8,offset:function(t,e){return 8*e.offset},divisor:1},aCoord:{buffer:g,stride:8,offset:function(t,e){return 8+8*e.offset},divisor:1},bCoord:{buffer:g,stride:8,offset:function(t,e){return 16+8*e.offset},divisor:1},nextCoord:{buffer:g,stride:8,offset:function(t,e){return 24+8*e.offset},divisor:1}}},T)),d=t(a({vert:o(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec2 aCoord, bCoord, aCoordFract, bCoordFract;\nattribute vec4 color;\nattribute float lineEnd, lineTop;\n\nuniform vec2 scale, scaleFract, translate, translateFract, scaleRatio;\nuniform float thickness, pixelRatio, id;\nuniform vec4 viewport;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\n\nconst float MAX_LINES = 256.;\n\nvec2 project(vec2 position, vec2 positionFract, vec2 scale, vec2 scaleFract, vec2 translate, vec2 translateFract) {\n\t// the order is important\n\treturn position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n}\n\nvoid main() {\n\t// vec2 scaleRatio = scale * viewport.zw;\n\tvec2 normalWidth = thickness / scaleRatio;\n\n\tfloat lineStart = 1. - lineEnd;\n\tfloat lineOffset = lineTop * 2. - 1.;\n\tfloat depth = (MAX_LINES - 1. - id) / (MAX_LINES);\n\n\tvec2 diff = (bCoord + bCoordFract - aCoord - aCoordFract);\n\ttangent = normalize(diff * scaleRatio);\n\tvec2 normal = vec2(-tangent.y, tangent.x);\n\n\tvec2 position = project(aCoord, aCoordFract, scale, scaleFract, translate, translateFract) * lineStart\n\t\t+ project(bCoord, bCoordFract, scale, scaleFract, translate, translateFract) * lineEnd\n\n\t\t+ thickness * normal * .5 * lineOffset / viewport.zw;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n}\n"]),frag:o(["precision highp float;\n#define GLSLIFY 1\n\nuniform sampler2D dashPattern;\nuniform vec2 dashShape;\nuniform float dashLength, pixelRatio, thickness, opacity, id;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\n\nvoid main() {\n\tfloat alpha = 1.;\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\n\tfloat dash = texture2D(dashPattern, vec2(t * dashLength * 2. / dashShape.x, (id + .5) / dashShape.y)).r;\n\n\tgl_FragColor = fragColor * dash;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}\n"]),attributes:{lineEnd:{buffer:v,divisor:0,stride:8,offset:0},lineTop:{buffer:v,divisor:0,stride:8,offset:4},aCoord:{buffer:g,stride:8,offset:function(t,e){return 8+8*e.offset},divisor:1},bCoord:{buffer:g,stride:8,offset:function(t,e){return 16+8*e.offset},divisor:1},aCoordFract:{buffer:y,stride:8,offset:function(t,e){return 8+8*e.offset},divisor:1},bCoordFract:{buffer:y,stride:8,offset:function(t,e){return 16+8*e.offset},divisor:1},color:{buffer:m,stride:4,offset:function(t,e){return 4*e.offset},divisor:1}}},T)),p=t({primitive:"triangle",elements:function(t,e){return e.triangles},offset:0,vert:o(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec2 position, positionFract;\n\nuniform vec4 color;\nuniform vec2 scale, scaleFract, translate, translateFract, scaleRatio;\nuniform float pixelRatio, id;\nuniform vec4 viewport;\n\nvarying vec4 fragColor;\n\nconst float MAX_LINES = 256.;\n\nvoid main() {\n\tfloat depth = (MAX_LINES - 4. - id) / (MAX_LINES);\n\n\tvec2 position = position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n}\n"]),frag:o(["precision highp float;\n#define GLSLIFY 1\n\nuniform float opacity;\n\nvarying vec4 fragColor;\n\nvoid main() {\n\tgl_FragColor = fragColor;\n\tgl_FragColor.a *= opacity;\n}\n"]),uniforms:{scale:t.prop("scale"),color:t.prop("fill"),scaleFract:t.prop("scaleFract"),translateFract:t.prop("translateFract"),translate:t.prop("translate"),opacity:t.prop("opacity"),pixelRatio:t.context("pixelRatio"),id:t.prop("id"),viewport:function(t,e){return[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]}},attributes:{position:{buffer:g,stride:8,offset:function(t,e){return 8+8*e.offset}},positionFract:{buffer:y,stride:8,offset:function(t,e){return 8+8*e.offset}}},blend:T.blend,depth:{enable:!1},scissor:T.scissor,stencil:T.stencil,viewport:T.viewport}),a(E,{update:C,draw:S,destroy:P,regl:t,gl:x,canvas:x.canvas,lines:w}),E};function h(t){var e=new Float32Array(t.length);e.set(t);for(var r=0,n=e.length;r 1.0) {\n discard;\n }\n\n float centerFraction = fragBorderSize == 0. ? 2. : fragSize / (fragSize + fragBorderSize + 1.25);\n\n vec4 baseColor = mix(borderColor, color, smoothStep(radius, centerFraction));\n float alpha = 1.0 - pow(1.0 - baseColor.a, 1.);\n gl_FragColor = vec4(baseColor.rgb * alpha, alpha);\n}\n"]),vert:l(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec2 position, positionFract;\nattribute float size, borderSize;\n\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float pixelRatio;\nuniform sampler2D palette;\n\nconst float paletteSize = 4096., maxSize = 100.;\n\nvarying vec4 fragColor, fragBorderColor;\nvarying float fragBorderRadius, fragWidth, fragBorderSize, fragSize;\n\nvoid main() {\n float size = size * maxSize / 255.;\n float borderSize = borderSize * maxSize / 255.;\n fragBorderSize = borderSize;\n fragSize = size;\n\n gl_PointSize = (size + borderSize) * pixelRatio;\n\n vec2 pos = (position + translate) * scale\n\t\t\t+ (positionFract + translateFract) * scale\n\t\t\t+ (position + translate) * scaleFract\n\t\t\t+ (positionFract + translateFract) * scaleFract;\n\n gl_Position = vec4(pos * 2. - 1., 0, 1);\n\n fragBorderRadius = borderSize == 0. ? 2. : 1. - 2. * borderSize / (size + borderSize);\n fragWidth = 1. / gl_PointSize;\n}\n"]),uniforms:{color:function(t,e){var r=e.color.length?e.color[0]:e.color;return k.slice(4*r,4*r+4).map(function(t){return t/255})},borderColor:function(t,e){var r=e.borderColor.length?e.borderColor[0]:e.borderColor;return k.slice(4*r,4*r+4).map(function(t){return t/255})},pixelRatio:t.context("pixelRatio"),palette:w,scale:t.prop("scale"),scaleFract:t.prop("scaleFract"),translate:t.prop("translate"),translateFract:t.prop("translateFract"),opacity:t.prop("opacity"),marker:t.prop("marker")},attributes:{position:b,positionFract:x,size:z.attributes.size,borderSize:z.attributes.borderSize}}));else{var O=s({},z);O.frag=l(["precision mediump float;\n#define GLSLIFY 1\n\nvarying vec4 fragColor, fragBorderColor;\nvarying float fragWidth, fragBorderColorLevel, fragColorLevel;\n\nuniform sampler2D marker;\nuniform float pixelRatio, opacity;\n\nfloat smoothStep(float x, float y) {\n return 1.0 / (1.0 + exp(50.0*(x - y)));\n}\n\nvoid main() {\n float dist = texture2D(marker, gl_PointCoord).r, delta = fragWidth;\n\n //max-distance alpha\n if (dist < 0.003) discard;\n\n //null-border case\n if (fragBorderColorLevel == fragColorLevel || fragBorderColor.a == 0.) {\n float colorAmt = smoothstep(.5 - delta, .5 + delta, dist);\n gl_FragColor = vec4(fragColor.rgb, colorAmt * fragColor.a);\n return;\n }\n\n float borderColorAmt = smoothstep(fragBorderColorLevel - delta, fragBorderColorLevel + delta, dist);\n float colorAmt = smoothstep(fragColorLevel - delta, fragColorLevel + delta, dist);\n\n vec4 color = fragBorderColor;\n color.a *= borderColorAmt;\n color = mix(color, fragColor, colorAmt);\n color.a *= opacity;\n\n gl_FragColor = color;\n}\n"]),O.vert=l(["precision mediump float;\n#define GLSLIFY 1\n\nattribute vec2 position, positionFract;\nattribute float size, borderSize;\nattribute float colorId, borderColorId;\n\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float pixelRatio;\nuniform sampler2D palette;\n\nconst float paletteSize = 4096., maxSize = 100.;\nconst float borderLevel = .5;\n\nvarying vec4 fragColor, fragBorderColor;\nvarying float fragPointSize, fragBorderRadius,\n\t\tfragWidth, fragBorderColorLevel, fragColorLevel;\n\nvoid main() {\n vec4 color = texture2D(palette, vec2((colorId + .5) / paletteSize, 0));\n vec4 borderColor = texture2D(palette, vec2((borderColorId + .5) / paletteSize, 0));\n\n float size = size * maxSize / 255.;\n float borderSize = borderSize * maxSize / 255.;\n\n gl_PointSize = 2. * size * pixelRatio;\n fragPointSize = size * pixelRatio;\n\n vec2 pos = (position + translate) * scale\n + (positionFract + translateFract) * scale\n + (position + translate) * scaleFract\n + (positionFract + translateFract) * scaleFract;\n\n gl_Position = vec4(pos * 2. - 1., 0, 1);\n\n fragColor = color;\n fragBorderColor = borderColor;\n fragWidth = 1. / gl_PointSize;\n\n fragBorderColorLevel = clamp(borderLevel - borderLevel * borderSize / size, 0., 1.);\n fragColorLevel = clamp(borderLevel + (1. - borderLevel) * borderSize / size, 0., 1.);\n}\n"]),r=t(O);var D=s({},z);D.frag=l(["precision highp float;\n#define GLSLIFY 1\n\nvarying vec4 fragColor, fragBorderColor;\n\nuniform float opacity;\nvarying float fragBorderRadius, fragWidth;\n\nvoid main() {\n\tfloat radius, alpha = 1.0, delta = fragWidth;\n\n\tradius = length(2.0 * gl_PointCoord.xy - 1.0);\n\n\tif(radius > 1.0 + delta) {\n\t\tdiscard;\n\t\treturn;\n\t}\n\n\talpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);\n\n\tfloat borderRadius = fragBorderRadius;\n\tfloat ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);\n\tvec4 color = mix(fragColor, fragBorderColor, ratio);\n\tcolor.a *= alpha * opacity;\n\tgl_FragColor = color;\n}\n"]),D.vert=l(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec2 position, positionFract;\nattribute float size, borderSize;\nattribute float colorId, borderColorId;\n\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float pixelRatio;\nuniform sampler2D palette;\n\nconst float paletteSize = 4096., maxSize = 100.;\n\nvarying vec4 fragColor, fragBorderColor;\nvarying float fragBorderRadius, fragWidth;\n\nvoid main() {\n vec4 color = texture2D(palette, vec2((colorId + .5) / paletteSize, 0));\n vec4 borderColor = texture2D(palette, vec2((borderColorId + .5) / paletteSize, 0));\n\n float size = size * maxSize / 255.;\n float borderSize = borderSize * maxSize / 255.;\n\n gl_PointSize = (size + borderSize) * pixelRatio;\n\n vec2 pos = (position + translate) * scale\n\t\t\t+ (positionFract + translateFract) * scale\n\t\t\t+ (position + translate) * scaleFract\n\t\t\t+ (positionFract + translateFract) * scaleFract;\n\n gl_Position = vec4(pos * 2. - 1., 0, 1);\n\n fragBorderRadius = borderSize == 0. ? 2. : 1. - 2. * borderSize / (size + borderSize);\n fragColor = color;\n fragBorderColor = borderColor;\n fragWidth = 1. / gl_PointSize;\n}\n"]),p=t(D)}function I(t){t?j(t):null===t&&H(),R()}function R(t){if("number"==typeof t)return N(t);Array.isArray(t)?t.forEach(function(t,e){if(null!=t)return t.length?N(t,e):N(t)}):E.forEach(function(t,e){t&&N(e)})}function N(e,n){var i;if("number"==typeof e&&(e=E[e]),Array.isArray(e)&&(i=e,e=E[n]),e&&e.count&&e.opacity){var a;if(i){a=Array(e.count);for(var o=0;o1)){var m=p.offset,v=p.count+m,g=c.ge(u,n[0],m,v-1),y=c.lt(u,n[2],g,v-1)+1;if(!(y<=g))if(r){var b=x(t.data.subarray(g,y),r);o.push(s({},e,{elements:b,marker:S[f],offset:0,count:b.length}))}else o.push(s({},e,{elements:t.elements,marker:S[f],offset:g,count:y-g}))}}function x(t,e){for(var r=[],n=0,a=t.length;ni)){c.snap=!0;var h=c.x=Array(u),d=c.w=Array(u),p=void 0;if(n.length>1){p=Array(2*u);for(var m=0;m=0)return n;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)r=e;else{r=new Uint8Array(e.length);for(var i=0,a=e.length;i4*C&&(t=t.slice(0,4*C)),w.subimage({width:Math.min(.25*t.length,C),height:1,data:t},0,0)}function H(){E.length=0,y.destroy(),b.destroy(),x.destroy(),_.destroy(),w.destroy()}return s(I,{update:j,draw:R,destroy:H,regl:t,gl:M,canvas:M.canvas,groups:E,markers:L,palette:k}),I}},{"array-bounds":48,"array-range":50,"binary-search-bounds":484,"color-id":97,"color-normalize":99,"flatten-vertex-data":143,glslify:485,"is-iexplorer":264,"object-assign":443,"pick-by-alias":454,"snap-points-2d":514,"to-float32":527,"update-diff":538}],484:[function(t,e,r){arguments[4][90][0].apply(r,arguments)},{dup:90}],485:[function(t,e,r){arguments[4][169][0].apply(r,arguments)},{dup:169}],486:[function(t,e,r){var n,i;n=this,i=function(){function t(t,e){this.id=U++,this.type=t,this.data=e}function e(t){return"["+function t(e){if(0===e.length)return[];var r=e.charAt(0),n=e.charAt(e.length-1);if(1>>=e))<<3,(e|=r=(15<(t>>>=r))<<2)|(r=(3<(t>>>=r))<<1)|t>>>r>>1}function l(t){t:{for(var e=16;268435456>=e;e*=16)if(t<=e){t=e;break t}t=0}return 0<(e=W[s(t)>>2]).length?e.pop():new ArrayBuffer(t)}function c(t){W[s(t.byteLength)>>2].push(t)}function u(t,e,r,n,i,a){for(var o=0;o(i=l)&&(i=n.buffer.byteLength,5123===f?i>>=1:5125===f&&(i>>=2)),n.vertCount=i,i=s,0>s&&(i=4,1===(s=n.buffer.dimension)&&(i=0),2===s&&(i=1),3===s&&(i=4)),n.primType=i}function s(t){n.elementsCount--,delete l[t.id],t.buffer.destroy(),t.buffer=null}var l={},c=0,u={uint8:5121,uint16:5123};e.oes_element_index_uint&&(u.uint32=5125),i.prototype.bind=function(){this.buffer.bind()};var f=[];return{create:function(t,e){function l(t){if(t)if("number"==typeof t)c(t),f.primType=4,f.vertCount=0|t,f.type=5121;else{var e=null,r=35044,n=-1,i=-1,s=0,h=0;Array.isArray(t)||G(t)||a(t)?e=t:("data"in t&&(e=t.data),"usage"in t&&(r=Q[t.usage]),"primitive"in t&&(n=rt[t.primitive]),"count"in t&&(i=0|t.count),"type"in t&&(h=u[t.type]),"length"in t?s=0|t.length:(s=i,5123===h||5122===h?s*=2:5125!==h&&5124!==h||(s*=4))),o(f,e,r,n,i,s,h)}else c(),f.primType=4,f.vertCount=0,f.type=5121;return l}var c=r.create(null,34963,!0),f=new i(c._buffer);return n.elementsCount++,l(t),l._reglType="elements",l._elements=f,l.subdata=function(t,e){return c.subdata(t,e),l},l.destroy=function(){s(f)},l},createStream:function(t){var e=f.pop();return e||(e=new i(r.create(null,34963,!0,!1)._buffer)),o(e,t,35040,-1,-1,0,0),e},destroyStream:function(t){f.push(t)},getElements:function(t){return"function"==typeof t&&t._elements instanceof i?t._elements:null},clear:function(){Y(l).forEach(s)}}}function v(t){for(var e=X.allocType(5123,t.length),r=0;r>>31<<15,i=(a<<1>>>24)-127,a=a>>13&1023;e[r]=-24>i?n:-14>i?n+(a+1024>>-14-i):15>=i,r.height>>=i,d(r,n[i]),t.mipmask|=1<e;++e)t.images[e]=null;return t}function L(t){for(var e=t.images,r=0;re){for(var r=0;r=--this.refCount&&R(this)}}),s.profile&&(o.getTotalTextureSize=function(){var t=0;return Object.keys(ft).forEach(function(e){t+=ft[e].stats.size}),t}),{create2D:function(e,r){function n(t,e){var r=i.texInfo;C.call(r);var a=S();return"number"==typeof t?A(a,0|t,"number"==typeof e?0|e:0|t):t?(P(r,t),T(a,t)):A(a,1,1),r.genMipmaps&&(a.mipmask=(a.width<<1)-1),i.mipmask=a.mipmask,c(i,a),i.internalformat=a.internalformat,n.width=a.width,n.height=a.height,D(i),E(a,3553),z(r,3553),I(),L(a),s.profile&&(i.stats.size=M(i.internalformat,i.type,a.width,a.height,r.genMipmaps,!1)),n.format=$[i.internalformat],n.type=tt[i.type],n.mag=et[r.magFilter],n.min=rt[r.minFilter],n.wrapS=nt[r.wrapS],n.wrapT=nt[r.wrapT],n}var i=new O(3553);return ft[i.id]=i,o.textureCount++,n(e,r),n.subimage=function(t,e,r,a){e|=0,r|=0,a|=0;var o=m();return c(o,i),o.width=0,o.height=0,d(o,t),o.width=o.width||(i.width>>a)-e,o.height=o.height||(i.height>>a)-r,D(i),p(o,3553,e,r,a),I(),k(o),n},n.resize=function(e,r){var a=0|e,o=0|r||a;if(a===i.width&&o===i.height)return n;n.width=i.width=a,n.height=i.height=o,D(i);for(var l=0;i.mipmask>>l;++l)t.texImage2D(3553,l,i.format,a>>l,o>>l,0,i.format,i.type,null);return I(),s.profile&&(i.stats.size=M(i.internalformat,i.type,a,o,!1,!1)),n},n._reglType="texture2d",n._texture=i,s.profile&&(n.stats=i.stats),n.destroy=function(){i.decRef()},n},createCube:function(e,r,n,i,a,l){function f(t,e,r,n,i,a){var o,l=h.texInfo;for(C.call(l),o=0;6>o;++o)v[o]=S();if("number"!=typeof t&&t){if("object"==typeof t)if(e)T(v[0],t),T(v[1],e),T(v[2],r),T(v[3],n),T(v[4],i),T(v[5],a);else if(P(l,t),u(h,t),"faces"in t)for(t=t.faces,o=0;6>o;++o)c(v[o],h),T(v[o],t[o]);else for(o=0;6>o;++o)T(v[o],t)}else for(t=0|t||1,o=0;6>o;++o)A(v[o],t,t);for(c(h,v[0]),h.mipmask=l.genMipmaps?(v[0].width<<1)-1:v[0].mipmask,h.internalformat=v[0].internalformat,f.width=v[0].width,f.height=v[0].height,D(h),o=0;6>o;++o)E(v[o],34069+o);for(z(l,34067),I(),s.profile&&(h.stats.size=M(h.internalformat,h.type,f.width,f.height,l.genMipmaps,!0)),f.format=$[h.internalformat],f.type=tt[h.type],f.mag=et[l.magFilter],f.min=rt[l.minFilter],f.wrapS=nt[l.wrapS],f.wrapT=nt[l.wrapT],o=0;6>o;++o)L(v[o]);return f}var h=new O(34067);ft[h.id]=h,o.cubeCount++;var v=Array(6);return f(e,r,n,i,a,l),f.subimage=function(t,e,r,n,i){r|=0,n|=0,i|=0;var a=m();return c(a,h),a.width=0,a.height=0,d(a,e),a.width=a.width||(h.width>>i)-r,a.height=a.height||(h.height>>i)-n,D(h),p(a,34069+t,r,n,i),I(),k(a),f},f.resize=function(e){if((e|=0)!==h.width){f.width=h.width=e,f.height=h.height=e,D(h);for(var r=0;6>r;++r)for(var n=0;h.mipmask>>n;++n)t.texImage2D(34069+r,n,h.format,e>>n,e>>n,0,h.format,h.type,null);return I(),s.profile&&(h.stats.size=M(h.internalformat,h.type,f.width,f.height,!1,!0)),f}},f._reglType="textureCube",f._texture=h,s.profile&&(f.stats=h.stats),f.destroy=function(){h.decRef()},f},clear:function(){for(var e=0;er;++r)if(0!=(e.mipmask&1<>r,e.height>>r,0,e.internalformat,e.type,null);else for(var n=0;6>n;++n)t.texImage2D(34069+n,r,e.internalformat,e.width>>r,e.height>>r,0,e.internalformat,e.type,null);z(e.texInfo,e.target)})}}}function A(t,e,r,n,i,a){function o(t,e,r){this.target=t,this.texture=e,this.renderbuffer=r;var n=t=0;e?(t=e.width,n=e.height):r&&(t=r.width,n=r.height),this.width=t,this.height=n}function s(t){t&&(t.texture&&t.texture._texture.decRef(),t.renderbuffer&&t.renderbuffer._renderbuffer.decRef())}function l(t,e,r){t&&(t.texture?t.texture._texture.refCount+=1:t.renderbuffer._renderbuffer.refCount+=1)}function c(e,r){r&&(r.texture?t.framebufferTexture2D(36160,e,r.target,r.texture._texture.texture,0):t.framebufferRenderbuffer(36160,e,36161,r.renderbuffer._renderbuffer.renderbuffer))}function u(t){var e=3553,r=null,n=null,i=t;return"object"==typeof t&&(i=t.data,"target"in t&&(e=0|t.target)),"texture2d"===(t=i._reglType)?r=i:"textureCube"===t?r=i:"renderbuffer"===t&&(n=i,e=36161),new o(e,r,n)}function f(t,e,r,a,s){return r?((t=n.create2D({width:t,height:e,format:a,type:s}))._texture.refCount=0,new o(3553,t,null)):((t=i.create({width:t,height:e,format:a}))._renderbuffer.refCount=0,new o(36161,null,t))}function h(t){return t&&(t.texture||t.renderbuffer)}function d(t,e,r){t&&(t.texture?t.texture.resize(e,r):t.renderbuffer&&t.renderbuffer.resize(e,r))}function p(){this.id=M++,k[this.id]=this,this.framebuffer=t.createFramebuffer(),this.height=this.width=0,this.colorAttachments=[],this.depthStencilAttachment=this.stencilAttachment=this.depthAttachment=null}function m(t){t.colorAttachments.forEach(s),s(t.depthAttachment),s(t.stencilAttachment),s(t.depthStencilAttachment)}function v(e){t.deleteFramebuffer(e.framebuffer),e.framebuffer=null,a.framebufferCount--,delete k[e.id]}function g(e){var n;t.bindFramebuffer(36160,e.framebuffer);var i=e.colorAttachments;for(n=0;ni;++i){for(c=0;ct;++t)r[t].resize(n);return e.width=e.height=n,e},_reglType:"framebufferCube",destroy:function(){r.forEach(function(t){t.destroy()})}})},clear:function(){Y(k).forEach(v)},restore:function(){Y(k).forEach(function(e){e.framebuffer=t.createFramebuffer(),g(e)})}})}function T(){this.w=this.z=this.y=this.x=this.state=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.divisor=this.stride=this.offset=0}function E(t,e,r,n){function i(t,e,r,n){this.name=t,this.id=e,this.location=r,this.info=n}function a(t,e){for(var r=0;rt&&(t=e.stats.uniformsCount)}),t},r.getMaxAttributesCount=function(){var t=0;return h.forEach(function(e){e.stats.attributesCount>t&&(t=e.stats.attributesCount)}),t}),{clear:function(){var e=t.deleteShader.bind(t);Y(c).forEach(e),c={},Y(u).forEach(e),u={},h.forEach(function(e){t.deleteProgram(e.program)}),h.length=0,f={},r.shaderCount=0},program:function(t,e,n){var i=f[e];i||(i=f[e]={});var a=i[t];return a||(a=new s(e,t),r.shaderCount++,l(a),i[t]=a,h.push(a)),a},restore:function(){c={},u={};for(var t=0;t="+e+"?"+i+".constant["+e+"]:0;"}).join(""),"}}else{","if(",o,"(",i,".buffer)){",u,"=",s,".createStream(",34962,",",i,".buffer);","}else{",u,"=",s,".getBuffer(",i,".buffer);","}",f,'="type" in ',i,"?",a.glTypes,"[",i,".type]:",u,".dtype;",l.normalized,"=!!",i,".normalized;"),n("size"),n("offset"),n("stride"),n("divisor"),r("}}"),r.exit("if(",l.isStream,"){",s,".destroyStream(",u,");","}"),l})}),o}function A(t,e,r,n,i){var a=_(t),s=function(t,e,r){function n(t){if(t in i){var r=i[t];t=!0;var n,o,s=0|r.x,l=0|r.y;return"width"in r?n=0|r.width:t=!1,"height"in r?o=0|r.height:t=!1,new D(!t&&e&&e.thisDep,!t&&e&&e.contextDep,!t&&e&&e.propDep,function(t,e){var i=t.shared.context,a=n;"width"in r||(a=e.def(i,".","framebufferWidth","-",s));var c=o;return"height"in r||(c=e.def(i,".","framebufferHeight","-",l)),[s,l,a,c]})}if(t in a){var c=a[t];return t=N(c,function(t,e){var r=t.invoke(e,c),n=t.shared.context,i=e.def(r,".x|0"),a=e.def(r,".y|0");return[i,a,e.def('"width" in ',r,"?",r,".width|0:","(",n,".","framebufferWidth","-",i,")"),r=e.def('"height" in ',r,"?",r,".height|0:","(",n,".","framebufferHeight","-",a,")")]}),e&&(t.thisDep=t.thisDep||e.thisDep,t.contextDep=t.contextDep||e.contextDep,t.propDep=t.propDep||e.propDep),t}return e?new D(e.thisDep,e.contextDep,e.propDep,function(t,e){var r=t.shared.context;return[0,0,e.def(r,".","framebufferWidth"),e.def(r,".","framebufferHeight")]}):null}var i=t.static,a=t.dynamic;if(t=n("viewport")){var o=t;t=new D(t.thisDep,t.contextDep,t.propDep,function(t,e){var r=o.append(t,e),n=t.shared.context;return e.set(n,".viewportWidth",r[2]),e.set(n,".viewportHeight",r[3]),r})}return{viewport:t,scissor_box:n("scissor.box")}}(t,a),l=M(t),c=function(t,e){var r=t.static,n=t.dynamic,i={};return nt.forEach(function(t){function e(e,o){if(t in r){var s=e(r[t]);i[a]=R(function(){return s})}else if(t in n){var l=n[t];i[a]=N(l,function(t,e){return o(t,e,t.invoke(e,l))})}}var a=v(t);switch(t){case"cull.enable":case"blend.enable":case"dither":case"stencil.enable":case"depth.enable":case"scissor.enable":case"polygonOffset.enable":case"sample.alpha":case"sample.enable":case"depth.mask":return e(function(t){return t},function(t,e,r){return r});case"depth.func":return e(function(t){return yt[t]},function(t,e,r){return e.def(t.constants.compareFuncs,"[",r,"]")});case"depth.range":return e(function(t){return t},function(t,e,r){return[e.def("+",r,"[0]"),e=e.def("+",r,"[1]")]});case"blend.func":return e(function(t){return[gt["srcRGB"in t?t.srcRGB:t.src],gt["dstRGB"in t?t.dstRGB:t.dst],gt["srcAlpha"in t?t.srcAlpha:t.src],gt["dstAlpha"in t?t.dstAlpha:t.dst]]},function(t,e,r){function n(t,n){return e.def('"',t,n,'" in ',r,"?",r,".",t,n,":",r,".",t)}t=t.constants.blendFuncs;var i=n("src","RGB"),a=n("dst","RGB"),o=(i=e.def(t,"[",i,"]"),e.def(t,"[",n("src","Alpha"),"]"));return[i,a=e.def(t,"[",a,"]"),o,t=e.def(t,"[",n("dst","Alpha"),"]")]});case"blend.equation":return e(function(t){return"string"==typeof t?[J[t],J[t]]:"object"==typeof t?[J[t.rgb],J[t.alpha]]:void 0},function(t,e,r){var n=t.constants.blendEquations,i=e.def(),a=e.def();return(t=t.cond("typeof ",r,'==="string"')).then(i,"=",a,"=",n,"[",r,"];"),t.else(i,"=",n,"[",r,".rgb];",a,"=",n,"[",r,".alpha];"),e(t),[i,a]});case"blend.color":return e(function(t){return o(4,function(e){return+t[e]})},function(t,e,r){return o(4,function(t){return e.def("+",r,"[",t,"]")})});case"stencil.mask":return e(function(t){return 0|t},function(t,e,r){return e.def(r,"|0")});case"stencil.func":return e(function(t){return[yt[t.cmp||"keep"],t.ref||0,"mask"in t?t.mask:-1]},function(t,e,r){return[t=e.def('"cmp" in ',r,"?",t.constants.compareFuncs,"[",r,".cmp]",":",7680),e.def(r,".ref|0"),e=e.def('"mask" in ',r,"?",r,".mask|0:-1")]});case"stencil.opFront":case"stencil.opBack":return e(function(e){return["stencil.opBack"===t?1029:1028,bt[e.fail||"keep"],bt[e.zfail||"keep"],bt[e.zpass||"keep"]]},function(e,r,n){function i(t){return r.def('"',t,'" in ',n,"?",a,"[",n,".",t,"]:",7680)}var a=e.constants.stencilOps;return["stencil.opBack"===t?1029:1028,i("fail"),i("zfail"),i("zpass")]});case"polygonOffset.offset":return e(function(t){return[0|t.factor,0|t.units]},function(t,e,r){return[e.def(r,".factor|0"),e=e.def(r,".units|0")]});case"cull.face":return e(function(t){var e=0;return"front"===t?e=1028:"back"===t&&(e=1029),e},function(t,e,r){return e.def(r,'==="front"?',1028,":",1029)});case"lineWidth":return e(function(t){return t},function(t,e,r){return r});case"frontFace":return e(function(t){return xt[t]},function(t,e,r){return e.def(r+'==="cw"?2304:2305')});case"colorMask":return e(function(t){return t.map(function(t){return!!t})},function(t,e,r){return o(4,function(t){return"!!"+r+"["+t+"]"})});case"sample.coverage":return e(function(t){return["value"in t?t.value:1,!!t.invert]},function(t,e,r){return[e.def('"value" in ',r,"?+",r,".value:1"),e=e.def("!!",r,".invert")]})}}),i}(t),u=w(t),f=s.viewport;return f&&(c.viewport=f),(s=s[f=v("scissor.box")])&&(c[f]=s),(a={framebuffer:a,draw:l,shader:u,state:c,dirty:s=0>1)",s],");")}function e(){r(l,".drawArraysInstancedANGLE(",[p,m,v,s],");")}d?y?t():(r("if(",d,"){"),t(),r("}else{"),e(),r("}")):e()}function o(){function t(){r(u+".drawElements("+[p,v,g,m+"<<(("+g+"-5121)>>1)"]+");")}function e(){r(u+".drawArrays("+[p,m,v]+");")}d?y?t():(r("if(",d,"){"),t(),r("}else{"),e(),r("}")):e()}var s,l,c=t.shared,u=c.gl,f=c.draw,h=n.draw,d=function(){var i=h.elements,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a)):i=a.def(f,".","elements"),i&&a("if("+i+")"+u+".bindBuffer(34963,"+i+".buffer.buffer);"),i}(),p=i("primitive"),m=i("offset"),v=function(){var i=h.count,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a)):i=a.def(f,".","count"),i}();if("number"==typeof v){if(0===v)return}else r("if(",v,"){"),r.exit("}");Q&&(s=i("instances"),l=t.instancing);var g=d+".type",y=h.elements&&I(h.elements);Q&&("number"!=typeof s||0<=s)?"string"==typeof s?(r("if(",s,">0){"),a(),r("}else if(",s,"<0){"),o(),r("}")):a():o()}function q(t,e,r,n,i){return i=(e=x()).proc("body",i),Q&&(e.instancing=i.def(e.shared.extensions,".angle_instanced_arrays")),t(e,i,r,n),e.compile().body}function H(t,e,r,n){C(t,e),j(t,e,r,n.attributes,function(){return!0}),B(t,e,r,n.uniforms,function(){return!0}),U(t,e,e,r)}function G(t,e,r,n){function i(){return!0}t.batchId="a1",C(t,e),j(t,e,r,n.attributes,i),B(t,e,r,n.uniforms,i),U(t,e,e,r)}function Y(t,e,r,n){function i(t){return t.contextDep&&o||t.propDep}function a(t){return!i(t)}C(t,e);var o=r.contextDep,s=e.def(),l=e.def();t.shared.props=l,t.batchId=s;var c=t.scope(),u=t.scope();e(c.entry,"for(",s,"=0;",s,"<","a1",";++",s,"){",l,"=","a0","[",s,"];",u,"}",c.exit),r.needsContext&&T(t,u,r.context),r.needsFramebuffer&&E(t,u,r.framebuffer),L(t,u,r.state,i),r.profile&&i(r.profile)&&F(t,u,r,!1,!0),n?(j(t,c,r,n.attributes,a),j(t,u,r,n.attributes,i),B(t,c,r,n.uniforms,a),B(t,u,r,n.uniforms,i),U(t,c,u,r)):(e=t.global.def("{}"),n=r.shader.progVar.append(t,u),l=u.def(n,".id"),c=u.def(e,"[",l,"]"),u(t.shared.gl,".useProgram(",n,".program);","if(!",c,"){",c,"=",e,"[",l,"]=",t.link(function(e){return q(G,t,r,e,2)}),"(",n,");}",c,".call(this,a0[",s,"],",s,");"))}function W(t,r){function n(e){var n=r.shader[e];n&&i.set(a.shader,"."+e,n.append(t,i))}var i=t.proc("scope",3);t.batchId="a2";var a=t.shared,o=a.current;T(t,i,r.context),r.framebuffer&&r.framebuffer.append(t,i),O(Object.keys(r.state)).forEach(function(e){var n=r.state[e].append(t,i);g(n)?n.forEach(function(r,n){i.set(t.next[e],"["+n+"]",r)}):i.set(a.next,"."+e,n)}),F(t,i,r,!0,!0),["elements","offset","count","instances","primitive"].forEach(function(e){var n=r.draw[e];n&&i.set(a.draw,"."+e,""+n.append(t,i))}),Object.keys(r.uniforms).forEach(function(n){i.set(a.uniforms,"["+e.id(n)+"]",r.uniforms[n].append(t,i))}),Object.keys(r.attributes).forEach(function(e){var n=r.attributes[e].append(t,i),a=t.scopeAttrib(e);Object.keys(new Z).forEach(function(t){i.set(a,"."+t,n[t])})}),n("vert"),n("frag"),0=--this.refCount&&o(this)},i.profile&&(n.getTotalRenderbufferSize=function(){var t=0;return Object.keys(u).forEach(function(e){t+=u[e].stats.size}),t}),{create:function(e,r){function o(e,r){var n=0,a=0,u=32854;if("object"==typeof e&&e?("shape"in e?(n=0|(a=e.shape)[0],a=0|a[1]):("radius"in e&&(n=a=0|e.radius),"width"in e&&(n=0|e.width),"height"in e&&(a=0|e.height)),"format"in e&&(u=s[e.format])):"number"==typeof e?(n=0|e,a="number"==typeof r?0|r:n):e||(n=a=1),n!==c.width||a!==c.height||u!==c.format)return o.width=c.width=n,o.height=c.height=a,c.format=u,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,u,n,a),i.profile&&(c.stats.size=ft[c.format]*c.width*c.height),o.format=l[c.format],o}var c=new a(t.createRenderbuffer());return u[c.id]=c,n.renderbufferCount++,o(e,r),o.resize=function(e,r){var n=0|e,a=0|r||n;return n===c.width&&a===c.height?o:(o.width=c.width=n,o.height=c.height=a,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,c.format,n,a),i.profile&&(c.stats.size=ft[c.format]*c.width*c.height),o)},o._reglType="renderbuffer",o._renderbuffer=c,i.profile&&(o.stats=c.stats),o.destroy=function(){c.decRef()},o},clear:function(){Y(u).forEach(o)},restore:function(){Y(u).forEach(function(e){e.renderbuffer=t.createRenderbuffer(),t.bindRenderbuffer(36161,e.renderbuffer),t.renderbufferStorage(36161,e.format,e.width,e.height)}),t.bindRenderbuffer(36161,null)}}},dt=[];dt[6408]=4;var pt=[];pt[5121]=1,pt[5126]=4,pt[36193]=2;var mt=["x","y","z","w"],vt="blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset".split(" "),gt={0:0,1:1,zero:0,one:1,"src color":768,"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},yt={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},bt={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},xt={cw:2304,ccw:2305},_t=new D(!1,!1,!1,function(){});return function(t){function e(){if(0===X.length)w&&w.update(),Q=null;else{Q=q.next(e),f();for(var t=X.length-1;0<=t;--t){var r=X[t];r&&r(P,null,0)}v.flush(),w&&w.update()}}function r(){!Q&&0=X.length&&n()}}}}function u(){var t=Y.viewport,e=Y.scissor_box;t[0]=t[1]=e[0]=e[1]=0,P.viewportWidth=P.framebufferWidth=P.drawingBufferWidth=t[2]=e[2]=v.drawingBufferWidth,P.viewportHeight=P.framebufferHeight=P.drawingBufferHeight=t[3]=e[3]=v.drawingBufferHeight}function f(){P.tick+=1,P.time=d(),u(),G.procs.poll()}function h(){u(),G.procs.refresh(),w&&w.update()}function d(){return(H()-M)/1e3}if(!(t=i(t)))return null;var v=t.gl,g=v.getContextAttributes();v.isContextLost();var y=function(t,e){function r(e){var r;e=e.toLowerCase();try{r=n[e]=t.getExtension(e)}catch(t){}return!!r}for(var n={},i=0;ie;++e)$(B({framebuffer:t.framebuffer.faces[e]},t),l);else $(t,l);else l(0,t)},prop:V.define.bind(null,1),context:V.define.bind(null,2),this:V.define.bind(null,3),draw:s({}),buffer:function(t){return O.create(t,34962,!1,!1)},elements:function(t){return D.create(t,!1)},texture:R.create2D,cube:R.createCube,renderbuffer:N.create,framebuffer:U.create,framebufferCube:U.createCube,attributes:g,frame:c,on:function(t,e){var r;switch(t){case"frame":return c(e);case"lost":r=Z;break;case"restore":r=J;break;case"destroy":r=K}return r.push(e),{cancel:function(){for(var t=0;t=r)return i.substr(0,r);for(;r>i.length&&e>1;)1&e&&(i+=t),e>>=1,t+=t;return i=(i+=t).substr(0,r)}},{}],488:[function(t,e,r){var n,i;n=this,i=function(){return function(){var t=arguments.length;if(0===t)throw new Error("resolveUrl requires at least one argument; got none.");var e=document.createElement("base");if(e.href=arguments[0],1===t)return e.href;var r=document.getElementsByTagName("head")[0];r.insertBefore(e,r.firstChild);for(var n,i=document.createElement("a"),a=1;a=0;--i){var a=r,o=t[i],s=(r=a+o)-a,l=o-s;l&&(t[--n]=r,r=l)}for(var c=0,i=n;i>1;return["sum(",t(e.slice(0,r)),",",t(e.slice(r)),")"].join("")}(e);var n}function u(t){return new Function("sum","scale","prod","compress",["function robustDeterminant",t,"(m){return compress(",c(function(t){for(var e=new Array(t),r=0;r>1;return["sum(",c(t.slice(0,e)),",",c(t.slice(e)),")"].join("")}function u(t,e){if("m"===t.charAt(0)){if("w"===e.charAt(0)){var r=t.split("[");return["w",e.substr(1),"m",r[0].substr(1)].join("")}return["prod(",t,",",e,")"].join("")}return u(e,t)}function f(t){if(2===t.length)return[["diff(",u(t[0][0],t[1][1]),",",u(t[1][0],t[0][1]),")"].join("")];for(var e=[],r=0;r0&&r.push(","),r.push("[");for(var o=0;o0&&r.push(","),o===i?r.push("+b[",a,"]"):r.push("+A[",a,"][",o,"]");r.push("]")}r.push("]),")}r.push("det(A)]}return ",e);var s=new Function("det",r.join(""));return s(t<6?n[t]:n)}var o=[function(){return[0]},function(t,e){return[[e[0]],[t[0][0]]]}];!function(){for(;o.length>1;return["sum(",c(t.slice(0,e)),",",c(t.slice(e)),")"].join("")}function u(t){if(2===t.length)return[["sum(prod(",t[0][0],",",t[1][1],"),prod(-",t[0][1],",",t[1][0],"))"].join("")];for(var e=[],r=0;r0){if(a<=0)return o;n=i+a}else{if(!(i<0))return o;if(a>=0)return o;n=-(i+a)}var s=3.3306690738754716e-16*n;return o>=s||o<=-s?o:h(t,e,r)},function(t,e,r,n){var i=t[0]-n[0],a=e[0]-n[0],o=r[0]-n[0],s=t[1]-n[1],l=e[1]-n[1],c=r[1]-n[1],u=t[2]-n[2],f=e[2]-n[2],h=r[2]-n[2],p=a*c,m=o*l,v=o*s,g=i*c,y=i*l,b=a*s,x=u*(p-m)+f*(v-g)+h*(y-b),_=7.771561172376103e-16*((Math.abs(p)+Math.abs(m))*Math.abs(u)+(Math.abs(v)+Math.abs(g))*Math.abs(f)+(Math.abs(y)+Math.abs(b))*Math.abs(h));return x>_||-x>_?x:d(t,e,r,n)}];!function(){for(;p.length<=s;)p.push(f(p.length));for(var t=[],r=["slow"],n=0;n<=s;++n)t.push("a"+n),r.push("o"+n);var i=["function getOrientation(",t.join(),"){switch(arguments.length){case 0:case 1:return 0;"];for(n=2;n<=s;++n)i.push("case ",n,":return o",n,"(",t.slice(0,n).join(),");");i.push("}var s=new Array(arguments.length);for(var i=0;i0&&o>0||a<0&&o<0)return!1;var s=n(r,t,e),l=n(i,t,e);if(s>0&&l>0||s<0&&l<0)return!1;if(0===a&&0===o&&0===s&&0===l)return function(t,e,r,n){for(var i=0;i<2;++i){var a=t[i],o=e[i],s=Math.min(a,o),l=Math.max(a,o),c=r[i],u=n[i],f=Math.min(c,u),h=Math.max(c,u);if(h=n?(i=f,(l+=1)=n?(i=f,(l+=1)0){for(var s=0,l=0,c=0;cn.h||t>n.free||rs)&&(l=2*Math.max(t,s)),(aa)&&(o=2*Math.max(r,a)),this.resize(l,o),this.packOne(t,r)):null},t.prototype.clear=function(){this.shelves=[],this.stats={}},t.prototype.resize=function(t,e){this.w=t,this.h=e;for(var r=0;rthis.free||e>this.h)return null;var r=this.x;return this.x+=t,this.free-=t,{x:r,y:this.y,w:t,h:e,width:t,height:e}},e.prototype.resize=function(t){return this.free+=t-this.w,this.w=t,!0},t},"object"==typeof r&&void 0!==e?e.exports=i():n.ShelfPack=i()},{}],502:[function(t,e,r){"use strict";e.exports=function(t){return t<0?-1:t>0?1:0}},{}],503:[function(t,e,r){"use strict";e.exports=function(t){return i(n(t))};var n=t("boundary-cells"),i=t("reduce-simplicial-complex")},{"boundary-cells":74,"reduce-simplicial-complex":480}],504:[function(t,e,r){"use strict";e.exports=function(t,e,r,s){r=r||0,void 0===s&&(s=function(t){for(var e=t.length,r=0,n=0;n>1,v=E[2*m+1];","if(v===b){return m}","if(b0&&l.push(","),l.push("[");for(var n=0;n0&&l.push(","),l.push("B(C,E,c[",i[0],"],c[",i[1],"])")}l.push("]")}l.push(");")}}for(var a=t+1;a>1;--a){a>1,s=a(t[o],e);s<=0?(0===s&&(i=o),r=o+1):s>0&&(n=o-1)}return i}function u(t,e){for(var r=new Array(t.length),i=0,o=r.length;i=t.length||0!==a(t[v],s)););}return r}function f(t,e){if(e<0)return[];for(var r=[],i=(1<>>u&1&&c.push(i[u]);e.push(c)}return s(e)},r.skeleton=f,r.boundary=function(t){for(var e=[],r=0,n=t.length;r>1:(t>>1)-1}function b(t){for(var e=g(t);;){var r=e,n=2*t+1,i=2*(t+1),a=t;if(n0;){var r=y(t);if(r>=0){var n=g(r);if(e0){var t=k[0];return v(0,E-1),E-=1,b(0),t}return-1}function w(t,e){var r=k[t];return c[r]===e?t:(c[r]=-1/0,x(t),_(),c[r]=e,x((E+=1)-1))}function M(t){if(!u[t]){u[t]=!0;var e=s[t],r=l[t];s[r]>=0&&(s[r]=e),l[e]>=0&&(l[e]=r),A[e]>=0&&w(A[e],m(e)),A[r]>=0&&w(A[r],m(r))}}for(var k=[],A=new Array(a),f=0;f>1;f>=0;--f)b(f);for(;;){var S=_();if(S<0||c[S]>r)break;M(S)}for(var L=[],f=0;f=0&&r>=0&&e!==r){var n=A[e],i=A[r];n!==i&&P.push([n,i])}}),i.unique(i.normalize(P)),{positions:L,edges:P}};var n=t("robust-orientation"),i=t("simplicial-complex")},{"robust-orientation":495,"simplicial-complex":508}],511:[function(t,e,r){"use strict";e.exports=function(t,e){var r,a,o,s;if(e[0][0]e[1][0]))return i(e,t);r=e[1],a=e[0]}if(t[0][0]t[1][0]))return-i(t,e);o=t[1],s=t[0]}var l=n(r,a,s),c=n(r,a,o);if(l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;if(l=n(s,o,a),c=n(s,o,r),l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;return a[0]-s[0]};var n=t("robust-orientation");function i(t,e){var r,i,a,o;if(e[0][0]e[1][0])){var s=Math.min(t[0][1],t[1][1]),l=Math.max(t[0][1],t[1][1]),c=Math.min(e[0][1],e[1][1]),u=Math.max(e[0][1],e[1][1]);return lu?s-u:l-u}r=e[1],i=e[0]}t[0][1]0)if(e[0]!==o[1][0])r=t,t=t.right;else{if(l=c(t.right,e))return l;t=t.left}else{if(e[0]!==o[1][0])return t;var l;if(l=c(t.right,e))return l;t=t.left}}return r}function u(t,e,r,n){this.y=t,this.index=e,this.start=r,this.closed=n}function f(t,e,r,n){this.x=t,this.segment=e,this.create=r,this.index=n}s.prototype.castUp=function(t){var e=n.le(this.coordinates,t[0]);if(e<0)return-1;this.slabs[e];var r=c(this.slabs[e],t),i=-1;if(r&&(i=r.value),this.coordinates[e]===t[0]){var s=null;if(r&&(s=r.key),e>0){var u=c(this.slabs[e-1],t);u&&(s?o(u.key,s)>0&&(s=u.key,i=u.value):(i=u.value,s=u.key))}var f=this.horizontal[e];if(f.length>0){var h=n.ge(f,t[1],l);if(h=f.length)return i;d=f[h]}}if(d.start)if(s){var p=a(s[0],s[1],[t[0],d.y]);s[0][0]>s[1][0]&&(p=-p),p>0&&(i=d.index)}else i=d.index;else d.y!==t[1]&&(i=d.index)}}}return i}},{"./lib/order-segments":511,"binary-search-bounds":70,"functional-red-black-tree":144,"robust-orientation":495}],513:[function(t,e,r){"use strict";e.exports=function(t,e,r,f,h){h<=4*n?i(0,h-1,t,e,r,f):function t(e,r,f,h,d,p){var m=(r-e+1)/6|0,v=e+m,g=r-m,y=e+r>>1,b=y-m,x=y+m,_=v,w=b,M=y,k=x,A=g,T=e+1,E=r-1,S=0;c(_,w,f,h,d)&&(S=_,_=w,w=S);c(k,A,f,h,d)&&(S=k,k=A,A=S);c(_,M,f,h,d)&&(S=_,_=M,M=S);c(w,M,f,h,d)&&(S=w,w=M,M=S);c(_,k,f,h,d)&&(S=_,_=k,k=S);c(M,k,f,h,d)&&(S=M,M=k,k=S);c(w,A,f,h,d)&&(S=w,w=A,A=S);c(w,M,f,h,d)&&(S=w,w=M,M=S);c(k,A,f,h,d)&&(S=k,k=A,A=S);var L=f[w];var C=h[2*w];var P=h[2*w+1];var z=d[w];var O=p[w];var D=f[k];var I=h[2*k];var R=h[2*k+1];var N=d[k];var F=p[k];var j=_;var B=M;var U=A;var V=v;var q=y;var H=g;var G=f[j];var Y=f[B];var W=f[U];f[V]=G;f[q]=Y;f[H]=W;for(var X=0;X<2;++X){var Z=h[2*j+X],J=h[2*B+X],K=h[2*U+X];h[2*V+X]=Z,h[2*q+X]=J,h[2*H+X]=K}var Q=d[j];var $=d[B];var tt=d[U];d[V]=Q;d[q]=$;d[H]=tt;var et=p[j];var rt=p[B];var nt=p[U];p[V]=et;p[q]=rt;p[H]=nt;o(b,e,f,h,d,p);o(x,r,f,h,d,p);for(var it=T;it<=E;++it)if(u(it,L,C,P,z,f,h,d))it!==T&&a(it,T,f,h,d,p),++T;else if(!u(it,D,I,R,N,f,h,d))for(;;){if(u(E,D,I,R,N,f,h,d)){u(E,L,C,P,z,f,h,d)?(s(it,T,E,f,h,d,p),++T,--E):(a(it,E,f,h,d,p),--E);break}if(--Et;){var d=r[h-1],p=n[2*(h-1)];if((d-s||l-p)>=0)break;r[h]=d,n[2*h]=p,n[2*h+1]=n[2*h-1],i[h]=i[h-1],a[h]=a[h-1],h-=1}r[h]=s,n[2*h]=l,n[2*h+1]=c,i[h]=u,a[h]=f}}function a(t,e,r,n,i,a){var o=r[t],s=n[2*t],l=n[2*t+1],c=i[t],u=a[t];r[t]=r[e],n[2*t]=n[2*e],n[2*t+1]=n[2*e+1],i[t]=i[e],a[t]=a[e],r[e]=o,n[2*e]=s,n[2*e+1]=l,i[e]=c,a[e]=u}function o(t,e,r,n,i,a){r[t]=r[e],n[2*t]=n[2*e],n[2*t+1]=n[2*e+1],i[t]=i[e],a[t]=a[e]}function s(t,e,r,n,i,a,o){var s=n[t],l=i[2*t],c=i[2*t+1],u=a[t],f=o[t];n[t]=n[e],i[2*t]=i[2*e],i[2*t+1]=i[2*e+1],a[t]=a[e],o[t]=o[e],n[e]=n[r],i[2*e]=i[2*r],i[2*e+1]=i[2*r+1],a[e]=a[r],o[e]=o[r],n[r]=s,i[2*r]=l,i[2*r+1]=c,a[r]=u,o[r]=f}function l(t,e,r,n,i,a,o,s,l,c,u){s[t]=s[e],l[2*t]=l[2*e],l[2*t+1]=l[2*e+1],c[t]=c[e],u[t]=u[e],s[e]=r,l[2*e]=n,l[2*e+1]=i,c[e]=a,u[e]=o}function c(t,e,r,n,i){return(r[t]-r[e]||n[2*e]-n[2*t]||i[t]-i[e])<0}function u(t,e,r,n,i,a,o,s){return(e-a[t]||o[2*t]-r||i-s[t])<0}},{}],514:[function(t,e,r){"use strict";var n=t("./lib/sort"),i=t("array-bounds");function a(t,e,r,n,i,a,o,s){for(var l=r,c=r;c>>1;if(l<1)return[];e||(e=Array(l));r||(r=Array(l));s||(s=[]);for(var c=0;c=s[2]||s[1]>=s[3]){var u=i(t,2);u[0]===u[2]&&(u[2]+=1),u[1]===u[3]&&(u[3]+=1),s[0]=u[0],s[1]=u[1],s[2]=u[2],s[3]=u[3]}var f=s[0],h=s[1],d=s[2],p=s[3],m=1/(d-f),v=1/(p-h),g=Math.max(d-f,p-h),y=new Int32Array(l),b=0;(function n(i,o,s,l,c,u){var f=.5*s;var h=l+1;var d=c-l;r[b]=d;y[b++]=u;for(var p=0;p<2;++p)for(var m=0;m<2;++m){var v=i+p*f,g=o+m*f,x=a(t,e,h,c,v,g,v+f,g+f);if(x!==h){if(x-h>=Math.max(.9*d,32)){var _=c+l>>>1;n(v,g,f,h,_,u+1),h=_}n(v,g,f,h,x,u+1),h=x}}})(f,h,g,0,l,0),n(y,t,e,r,l);for(var x=[],_=0,w=l,b=l-1;b>=0;--b){t[2*b]=(t[2*b]-f)*m,t[2*b+1]=(t[2*b+1]-h)*v;var M=y[b];M!==_&&(x.push(new o(g*Math.pow(.5,M),b+1,w-(b+1))),w=b+1,_=M)}return x.push(new o(g*Math.pow(.5,M+1),0,w)),x}},{"./lib/sort":513,"array-bounds":48}],515:[function(t,e,r){"use strict";var n=t("robust-dot-product"),i=t("robust-sum");function a(t,e){var r=i(n(t,e),[e[e.length-1]]);return r[r.length-1]}function o(t,e,r,n){var i=-e/(n-e);i<0?i=0:i>1&&(i=1);for(var a=1-i,o=t.length,s=new Array(o),l=0;l0||i>0&&u<0){var f=o(s,u,l,i);r.push(f),n.push(f.slice())}u<0?n.push(l.slice()):u>0?r.push(l.slice()):(r.push(l.slice()),n.push(l.slice())),i=u}return{positive:r,negative:n}},e.exports.positive=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c>=0&&r.push(s.slice()),n=c}return r},e.exports.negative=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c<=0&&r.push(s.slice()),n=c}return r}},{"robust-dot-product":492,"robust-sum":500}],516:[function(t,e,r){!function(){"use strict";var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[\+\-]/};function e(r){return function(r,n){var i,a,o,s,l,c,u,f,h,d=1,p=r.length,m="";for(a=0;a=0),s[8]){case"b":i=parseInt(i,10).toString(2);break;case"c":i=String.fromCharCode(parseInt(i,10));break;case"d":case"i":i=parseInt(i,10);break;case"j":i=JSON.stringify(i,null,s[6]?parseInt(s[6]):0);break;case"e":i=s[7]?parseFloat(i).toExponential(s[7]):parseFloat(i).toExponential();break;case"f":i=s[7]?parseFloat(i).toFixed(s[7]):parseFloat(i);break;case"g":i=s[7]?String(Number(i.toPrecision(s[7]))):parseFloat(i);break;case"o":i=(parseInt(i,10)>>>0).toString(8);break;case"s":i=String(i),i=s[7]?i.substring(0,s[7]):i;break;case"t":i=String(!!i),i=s[7]?i.substring(0,s[7]):i;break;case"T":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=s[7]?i.substring(0,s[7]):i;break;case"u":i=parseInt(i,10)>>>0;break;case"v":i=i.valueOf(),i=s[7]?i.substring(0,s[7]):i;break;case"x":i=(parseInt(i,10)>>>0).toString(16);break;case"X":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}t.json.test(s[8])?m+=i:(!t.number.test(s[8])||f&&!s[3]?h="":(h=f?"+":"-",i=i.toString().replace(t.sign,"")),c=s[4]?"0"===s[4]?"0":s[4].charAt(1):" ",u=s[6]-(h+i).length,l=s[6]&&u>0?c.repeat(u):"",m+=s[5]?h+i+l:"0"===c?h+l+i:l+h+i)}return m}(function(e){if(i[e])return i[e];var r,n=e,a=[],o=0;for(;n;){if(null!==(r=t.text.exec(n)))a.push(r[0]);else if(null!==(r=t.modulo.exec(n)))a.push("%");else{if(null===(r=t.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(r[2]){o|=1;var s=[],l=r[2],c=[];if(null===(c=t.key.exec(l)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(s.push(c[1]);""!==(l=l.substring(c[0].length));)if(null!==(c=t.key_access.exec(l)))s.push(c[1]);else{if(null===(c=t.index_access.exec(l)))throw new SyntaxError("[sprintf] failed to parse named argument key");s.push(c[1])}r[2]=s}else o|=2;if(3===o)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");a.push(r)}n=n.substring(r[0].length)}return i[e]=a}(r),arguments)}function n(t,r){return e.apply(null,[t].concat(r||[]))}var i=Object.create(null);void 0!==r&&(r.sprintf=e,r.vsprintf=n),"undefined"!=typeof window&&(window.sprintf=e,window.vsprintf=n)}()},{}],517:[function(t,e,r){"use strict";e.exports=function(t){for(var e=t.length,r=new Array(e),n=new Array(e),i=new Array(e),a=new Array(e),o=new Array(e),s=new Array(e),l=0;l0;){e=c[c.length-1];var d=t[e];if(a[e]=0&&s[e].push(o[m])}a[e]=p}else{if(n[e]===r[e]){for(var v=[],g=[],y=0,p=l.length-1;p>=0;--p){var b=l[p];if(i[b]=!1,v.push(b),g.push(s[b]),y+=s[b].length,o[b]=f.length,b===e){l.length=p;break}}f.push(v);for(var x=new Array(y),p=0;p=1e4?Math.round(e/1e3)+"k":e>=1e3?Math.round(e/100)/10+"k":e;return f(f({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:r})}function c(t){return t/360+.5}function u(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function f(t,e){for(var r in e)t[r]=e[r];return t}function h(t){return t.x}function d(t){return t.y}e.exports=function(t){return new i(t)},i.prototype={options:{minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,reduce:null,initial:function(){return{}},map:function(t){return t}},load:function(t){var e=this.options.log;e&&console.time("total time");var r="prepare "+t.length+" points";e&&console.time(r),this.points=t;var i=t.map(o);e&&console.timeEnd(r);for(var a=this.options.maxZoom;a>=this.options.minZoom;a--){var s=+Date.now();this.trees[a+1]=n(i,h,d,this.options.nodeSize,Float32Array),i=this._cluster(i,a),e&&console.log("z%d: %d clusters in %dms",a,i.length,+Date.now()-s)}return this.trees[this.options.minZoom]=n(i,h,d,this.options.nodeSize,Float32Array),e&&console.timeEnd("total time"),this},getClusters:function(t,e){for(var r=this.trees[this._limitZoom(e)],n=r.range(c(t[0]),u(t[3]),c(t[2]),u(t[1])),i=[],a=0;a c)|0 },"),"generic"===e&&a.push("getters:[0],");for(var s=[],l=[],c=0;c>>7){");for(var c=0;c<1<<(1<128&&c%128==0){f.length>0&&h.push("}}");var d="vExtra"+f.length;a.push("case ",c>>>7,":",d,"(m&0x7f,",l.join(),");break;"),h=["function ",d,"(m,",l.join(),"){switch(m){"],f.push(h)}h.push("case ",127&c,":");for(var p=new Array(r),m=new Array(r),v=new Array(r),g=new Array(r),y=0,b=0;bb)&&!(c&1<<_)!=!(c&1<0&&(A="+"+v[x]+"*c");var T=p[x].length/y*.5,E=.5+g[x]/y*.5;k.push("d"+x+"-"+E+"-"+T+"*("+p[x].join("+")+A+")/("+m[x].join("+")+")")}h.push("a.push([",k.join(),"]);","break;")}a.push("}},"),f.length>0&&h.push("}}");for(var S=[],c=0;c<1<1&&(a=1),a<-1&&(a=-1),i*Math.acos(a)};r.default=function(t){var e=t.px,r=t.py,l=t.cx,c=t.cy,u=t.rx,f=t.ry,h=t.xAxisRotation,d=void 0===h?0:h,p=t.largeArcFlag,m=void 0===p?0:p,v=t.sweepFlag,g=void 0===v?0:v,y=[];if(0===u||0===f)return[];var b=Math.sin(d*i/360),x=Math.cos(d*i/360),_=x*(e-l)/2+b*(r-c)/2,w=-b*(e-l)/2+x*(r-c)/2;if(0===_&&0===w)return[];u=Math.abs(u),f=Math.abs(f);var M=Math.pow(_,2)/Math.pow(u,2)+Math.pow(w,2)/Math.pow(f,2);M>1&&(u*=Math.sqrt(M),f*=Math.sqrt(M));var k=function(t,e,r,n,a,o,l,c,u,f,h,d){var p=Math.pow(a,2),m=Math.pow(o,2),v=Math.pow(h,2),g=Math.pow(d,2),y=p*m-p*g-m*v;y<0&&(y=0),y/=p*g+m*v;var b=(y=Math.sqrt(y)*(l===c?-1:1))*a/o*d,x=y*-o/a*h,_=f*b-u*x+(t+r)/2,w=u*b+f*x+(e+n)/2,M=(h-b)/a,k=(d-x)/o,A=(-h-b)/a,T=(-d-x)/o,E=s(1,0,M,k),S=s(M,k,A,T);return 0===c&&S>0&&(S-=i),1===c&&S<0&&(S+=i),[_,w,E,S]}(e,r,l,c,u,f,m,g,b,x,_,w),A=n(k,4),T=A[0],E=A[1],S=A[2],L=A[3],C=Math.max(Math.ceil(Math.abs(L)/(i/4)),1);L/=C;for(var P=0;Pe[2]&&(e[2]=c[u+0]),c[u+1]>e[3]&&(e[3]=c[u+1]);return e}},{"abs-svg-path":43,assert:51,"is-svg-path":267,"normalize-svg-path":523,"parse-svg-path":447}],523:[function(t,e,r){"use strict";e.exports=function(t){for(var e,r=[],o=0,s=0,l=0,c=0,u=null,f=null,h=0,d=0,p=0,m=t.length;p4?(o=v[v.length-4],s=v[v.length-3]):(o=h,s=d),r.push(v)}return r};var n=t("svg-arc-to-cubic-bezier");function i(t,e,r,n){return["C",t,e,r,n,r,n]}function a(t,e,r,n,i,a){return["C",t/3+2/3*r,e/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}},{"svg-arc-to-cubic-bezier":521}],524:[function(t,e,r){(function(r){"use strict";var n=t("svg-path-bounds"),i=t("parse-svg-path"),a=t("draw-svg-path"),o=t("is-svg-path"),s=t("bitmap-sdf"),l=document.createElement("canvas"),c=l.getContext("2d");e.exports=function(t,e){if(!o(t))throw Error("Argument should be valid svg path string");e||(e={});var u,f;e.shape?(u=e.shape[0],f=e.shape[1]):(u=l.width=e.w||e.width||200,f=l.height=e.h||e.height||200);var h=Math.min(u,f),d=e.stroke||0,p=e.viewbox||e.viewBox||n(t),m=[u/(p[2]-p[0]),f/(p[3]-p[1])],v=Math.min(m[0]||0,m[1]||0)/2;c.fillStyle="black",c.fillRect(0,0,u,f),c.fillStyle="white",d&&("number"!=typeof d&&(d=1),c.strokeStyle=d>0?"white":"black",c.lineWidth=Math.abs(d));if(c.translate(.5*u,.5*f),c.scale(v,v),r.Path2D){var g=new Path2D(t);c.fill(g),d&&c.stroke(g)}else{var y=i(t);a(c,y),c.fill(),d&&c.stroke()}return c.setTransform(1,0,0,1,0,0),s(c,{cutoff:null!=e.cutoff?e.cutoff:.5,radius:null!=e.radius?e.radius:.5*h})}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"bitmap-sdf":72,"draw-svg-path":132,"is-svg-path":267,"parse-svg-path":447,"svg-path-bounds":522}],525:[function(t,e,r){(function(r){"use strict";e.exports=function t(e,r,i){var i=i||{};var o=a[e];o||(o=a[e]={" ":{data:new Float32Array(0),shape:.2}});var s=o[r];if(!s)if(r.length<=1||!/\d/.test(r))s=o[r]=function(t){for(var e=t.cells,r=t.positions,n=new Float32Array(6*e.length),i=0,a=0,o=0;o0&&(f+=.02);for(var d=new Float32Array(u),p=0,m=-.5*f,h=0;h1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}if(t=C(t,360),e=C(e,100),r=C(r,100),0===e)n=i=a=r;else{var s=r<.5?r*(1+e):r+e-r*e,l=2*r-s;n=o(l,s,t+1/3),i=o(l,s,t),a=o(l,s,t-1/3)}return{r:255*n,g:255*i,b:255*a}}(e.h,l,u),f=!0,h="hsl"),e.hasOwnProperty("a")&&(a=e.a));var d,p,m;return a=L(a),{ok:f,format:e.format||h,r:o(255,s(i.r,0)),g:o(255,s(i.g,0)),b:o(255,s(i.b,0)),a:a}}(e);this._originalInput=e,this._r=u.r,this._g=u.g,this._b=u.b,this._a=u.a,this._roundA=a(100*this._a)/100,this._format=l.format||u.format,this._gradientType=l.gradientType,this._r<1&&(this._r=a(this._r)),this._g<1&&(this._g=a(this._g)),this._b<1&&(this._b=a(this._b)),this._ok=u.ok,this._tc_id=i++}function u(t,e,r){t=C(t,255),e=C(e,255),r=C(r,255);var n,i,a=s(t,e,r),l=o(t,e,r),c=(a+l)/2;if(a==l)n=i=0;else{var u=a-l;switch(i=c>.5?u/(2-a-l):u/(a+l),a){case t:n=(e-r)/u+(e>1)+720)%360;--e;)n.h=(n.h+i)%360,a.push(c(n));return a}function T(t,e){e=e||6;for(var r=c(t).toHsv(),n=r.h,i=r.s,a=r.v,o=[],s=1/e;e--;)o.push(c({h:n,s:i,v:a})),a=(a+s)%1;return o}c.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var e,r,n,i=this.toRgb();return e=i.r/255,r=i.g/255,n=i.b/255,.2126*(e<=.03928?e/12.92:t.pow((e+.055)/1.055,2.4))+.7152*(r<=.03928?r/12.92:t.pow((r+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:t.pow((n+.055)/1.055,2.4))},setAlpha:function(t){return this._a=L(t),this._roundA=a(100*this._a)/100,this},toHsv:function(){var t=f(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=f(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.v);return 1==this._a?"hsv("+e+", "+r+"%, "+n+"%)":"hsva("+e+", "+r+"%, "+n+"%, "+this._roundA+")"},toHsl:function(){var t=u(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=u(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.l);return 1==this._a?"hsl("+e+", "+r+"%, "+n+"%)":"hsla("+e+", "+r+"%, "+n+"%, "+this._roundA+")"},toHex:function(t){return h(this._r,this._g,this._b,t)},toHexString:function(t){return"#"+this.toHex(t)},toHex8:function(t){return function(t,e,r,n,i){var o=[O(a(t).toString(16)),O(a(e).toString(16)),O(a(r).toString(16)),O(I(n))];if(i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1))return o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0);return o.join("")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return"#"+this.toHex8(t)},toRgb:function(){return{r:a(this._r),g:a(this._g),b:a(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+a(this._r)+", "+a(this._g)+", "+a(this._b)+")":"rgba("+a(this._r)+", "+a(this._g)+", "+a(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:a(100*C(this._r,255))+"%",g:a(100*C(this._g,255))+"%",b:a(100*C(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+a(100*C(this._r,255))+"%, "+a(100*C(this._g,255))+"%, "+a(100*C(this._b,255))+"%)":"rgba("+a(100*C(this._r,255))+"%, "+a(100*C(this._g,255))+"%, "+a(100*C(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(S[h(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e="#"+d(this._r,this._g,this._b,this._a),r=e,n=this._gradientType?"GradientType = 1, ":"";if(t){var i=c(t);r="#"+d(i._r,i._g,i._b,i._a)}return"progid:DXImageTransform.Microsoft.gradient("+n+"startColorstr="+e+",endColorstr="+r+")"},toString:function(t){var e=!!t;t=t||this._format;var r=!1,n=this._a<1&&this._a>=0;return e||!n||"hex"!==t&&"hex6"!==t&&"hex3"!==t&&"hex4"!==t&&"hex8"!==t&&"name"!==t?("rgb"===t&&(r=this.toRgbString()),"prgb"===t&&(r=this.toPercentageRgbString()),"hex"!==t&&"hex6"!==t||(r=this.toHexString()),"hex3"===t&&(r=this.toHexString(!0)),"hex4"===t&&(r=this.toHex8String(!0)),"hex8"===t&&(r=this.toHex8String()),"name"===t&&(r=this.toName()),"hsl"===t&&(r=this.toHslString()),"hsv"===t&&(r=this.toHsvString()),r||this.toHexString()):"name"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return c(this.toString())},_applyModification:function(t,e){var r=t.apply(null,[this].concat([].slice.call(e)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(g,arguments)},brighten:function(){return this._applyModification(y,arguments)},darken:function(){return this._applyModification(b,arguments)},desaturate:function(){return this._applyModification(p,arguments)},saturate:function(){return this._applyModification(m,arguments)},greyscale:function(){return this._applyModification(v,arguments)},spin:function(){return this._applyModification(x,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(A,arguments)},complement:function(){return this._applyCombination(_,arguments)},monochromatic:function(){return this._applyCombination(T,arguments)},splitcomplement:function(){return this._applyCombination(k,arguments)},triad:function(){return this._applyCombination(w,arguments)},tetrad:function(){return this._applyCombination(M,arguments)}},c.fromRatio=function(t,e){if("object"==typeof t){var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]="a"===n?t[n]:D(t[n]));t=r}return c(t,e)},c.equals=function(t,e){return!(!t||!e)&&c(t).toRgbString()==c(e).toRgbString()},c.random=function(){return c.fromRatio({r:l(),g:l(),b:l()})},c.mix=function(t,e,r){r=0===r?0:r||50;var n=c(t).toRgb(),i=c(e).toRgb(),a=r/100;return c({r:(i.r-n.r)*a+n.r,g:(i.g-n.g)*a+n.g,b:(i.b-n.b)*a+n.b,a:(i.a-n.a)*a+n.a})},c.readability=function(e,r){var n=c(e),i=c(r);return(t.max(n.getLuminance(),i.getLuminance())+.05)/(t.min(n.getLuminance(),i.getLuminance())+.05)},c.isReadable=function(t,e,r){var n,i,a=c.readability(t,e);switch(i=!1,(n=function(t){var e,r;e=((t=t||{level:"AA",size:"small"}).level||"AA").toUpperCase(),r=(t.size||"small").toLowerCase(),"AA"!==e&&"AAA"!==e&&(e="AA");"small"!==r&&"large"!==r&&(r="small");return{level:e,size:r}}(r)).level+n.size){case"AAsmall":case"AAAlarge":i=a>=4.5;break;case"AAlarge":i=a>=3;break;case"AAAsmall":i=a>=7}return i},c.mostReadable=function(t,e,r){var n,i,a,o,s=null,l=0;i=(r=r||{}).includeFallbackColors,a=r.level,o=r.size;for(var u=0;ul&&(l=n,s=c(e[u]));return c.isReadable(t,s,{level:a,size:o})||!i?s:(r.includeFallbackColors=!1,c.mostReadable(t,["#fff","#000"],r))};var E=c.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},S=c.hexNames=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}(E);function L(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function C(e,r){(function(t){return"string"==typeof t&&-1!=t.indexOf(".")&&1===parseFloat(t)})(e)&&(e="100%");var n=function(t){return"string"==typeof t&&-1!=t.indexOf("%")}(e);return e=o(r,s(0,parseFloat(e))),n&&(e=parseInt(e*r,10)/100),t.abs(e-r)<1e-6?1:e%r/parseFloat(r)}function P(t){return o(1,s(0,t))}function z(t){return parseInt(t,16)}function O(t){return 1==t.length?"0"+t:""+t}function D(t){return t<=1&&(t=100*t+"%"),t}function I(e){return t.round(255*parseFloat(e)).toString(16)}function R(t){return z(t)/255}var N,F,j,B=(F="[\\s|\\(]+("+(N="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+N+")[,|\\s]+("+N+")\\s*\\)?",j="[\\s|\\(]+("+N+")[,|\\s]+("+N+")[,|\\s]+("+N+")[,|\\s]+("+N+")\\s*\\)?",{CSS_UNIT:new RegExp(N),rgb:new RegExp("rgb"+F),rgba:new RegExp("rgba"+j),hsl:new RegExp("hsl"+F),hsla:new RegExp("hsla"+j),hsv:new RegExp("hsv"+F),hsva:new RegExp("hsva"+j),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function U(t){return!!B.CSS_UNIT.exec(t)}void 0!==e&&e.exports?e.exports=c:window.tinycolor=c}(Math)},{}],527:[function(t,e,r){"use strict";function n(t){if(t instanceof Float32Array)return t;if("number"==typeof t)return new Float32Array([t])[0];var e=new Float32Array(t);return e.set(t),e}e.exports=n,e.exports.float32=e.exports.float=n,e.exports.fract32=e.exports.fract=function(t){if("number"==typeof t)return n(t-n(t));for(var e=n(t),r=0,i=e.length;rf&&(f=l[0]),l[1]h&&(h=l[1])}function i(t){switch(t.type){case"GeometryCollection":t.geometries.forEach(i);break;case"Point":n(t.coordinates);break;case"MultiPoint":t.coordinates.forEach(n)}}if(!e){var a,o,s=r(t),l=new Array(2),c=1/0,u=c,f=-c,h=-c;for(o in t.arcs.forEach(function(t){for(var e=-1,r=t.length;++ef&&(f=l[0]),l[1]h&&(h=l[1])}),t.objects)i(t.objects[o]);e=t.bbox=[c,u,f,h]}return e},i=function(t,e){for(var r,n=t.length,i=n-e;i<--n;)r=t[i],t[i++]=t[n],t[n]=r};function a(t,e){var r=e.id,n=e.bbox,i=null==e.properties?{}:e.properties,a=o(t,e);return null==r&&null==n?{type:"Feature",properties:i,geometry:a}:null==n?{type:"Feature",id:r,properties:i,geometry:a}:{type:"Feature",id:r,bbox:n,properties:i,geometry:a}}function o(t,e){var n=r(t),a=t.arcs;function o(t,e){e.length&&e.pop();for(var r=a[t<0?~t:t],o=0,s=r.length;o1)n=function(t,e,r){var n,i=[],a=[];function o(t){var e=t<0?~t:t;(a[e]||(a[e]=[])).push({i:t,g:n})}function s(t){t.forEach(o)}function l(t){t.forEach(s)}return function t(e){switch(n=e,e.type){case"GeometryCollection":e.geometries.forEach(t);break;case"LineString":s(e.arcs);break;case"MultiLineString":case"Polygon":l(e.arcs);break;case"MultiPolygon":e.arcs.forEach(l)}}(e),a.forEach(null==r?function(t){i.push(t[0].i)}:function(t){r(t[0].g,t[t.length-1].g)&&i.push(t[0].i)}),i}(0,e,r);else for(i=0,n=new Array(a=t.arcs.length);i1)for(var a,o,c=1,u=l(i[0]);cu&&(o=i[0],i[0]=i[c],i[c]=o,u=a);return i})}}var u=function(t,e){for(var r=0,n=t.length;r>>1;t[i]=2))throw new Error("n must be \u22652");if(t.transform)throw new Error("already quantized");var r,i=n(t),a=i[0],o=(i[2]-a)/(e-1)||1,s=i[1],l=(i[3]-s)/(e-1)||1;function c(t){t[0]=Math.round((t[0]-a)/o),t[1]=Math.round((t[1]-s)/l)}function u(t){switch(t.type){case"GeometryCollection":t.geometries.forEach(u);break;case"Point":c(t.coordinates);break;case"MultiPoint":t.coordinates.forEach(c)}}for(r in t.arcs.forEach(function(t){for(var e,r,n,i=1,c=1,u=t.length,f=t[0],h=f[0]=Math.round((f[0]-a)/o),d=f[1]=Math.round((f[1]-s)/l);iMath.max(r,n)?i[2]=1:r>Math.max(e,n)?i[0]=1:i[1]=1;for(var a=0,o=0,l=0;l<3;++l)a+=t[l]*t[l],o+=i[l]*t[l];for(l=0;l<3;++l)i[l]-=o/a*t[l];return s(i,i),i}function h(t,e,r,i,a,o,s,l){this.center=n(r),this.up=n(i),this.right=n(a),this.radius=n([o]),this.angle=n([s,l]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(t,e),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var c=0;c<16;++c)this.computedMatrix[c]=.5;this.recalcMatrix(0)}var d=h.prototype;d.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},d.getDistanceLimits=function(t){var e=this.radius.bounds[0];return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},d.recalcMatrix=function(t){this.center.curve(t),this.up.curve(t),this.right.curve(t),this.radius.curve(t),this.angle.curve(t);for(var e=this.computedUp,r=this.computedRight,n=0,i=0,a=0;a<3;++a)i+=e[a]*r[a],n+=e[a]*e[a];var l=Math.sqrt(n),u=0;for(a=0;a<3;++a)r[a]-=e[a]*i/n,u+=r[a]*r[a],e[a]/=l;var f=Math.sqrt(u);for(a=0;a<3;++a)r[a]/=f;var h=this.computedToward;o(h,e,r),s(h,h);var d=Math.exp(this.computedRadius[0]),p=this.computedAngle[0],m=this.computedAngle[1],v=Math.cos(p),g=Math.sin(p),y=Math.cos(m),b=Math.sin(m),x=this.computedCenter,_=v*y,w=g*y,M=b,k=-v*b,A=-g*b,T=y,E=this.computedEye,S=this.computedMatrix;for(a=0;a<3;++a){var L=_*r[a]+w*h[a]+M*e[a];S[4*a+1]=k*r[a]+A*h[a]+T*e[a],S[4*a+2]=L,S[4*a+3]=0}var C=S[1],P=S[5],z=S[9],O=S[2],D=S[6],I=S[10],R=P*I-z*D,N=z*O-C*I,F=C*D-P*O,j=c(R,N,F);R/=j,N/=j,F/=j,S[0]=R,S[4]=N,S[8]=F;for(a=0;a<3;++a)E[a]=x[a]+S[2+4*a]*d;for(a=0;a<3;++a){u=0;for(var B=0;B<3;++B)u+=S[a+4*B]*E[B];S[12+a]=-u}S[15]=1},d.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r};var p=[0,0,0];d.rotate=function(t,e,r,n){if(this.angle.move(t,e,r),n){this.recalcMatrix(t);var i=this.computedMatrix;p[0]=i[2],p[1]=i[6],p[2]=i[10];for(var o=this.computedUp,s=this.computedRight,l=this.computedToward,c=0;c<3;++c)i[4*c]=o[c],i[4*c+1]=s[c],i[4*c+2]=l[c];a(i,i,n,p);for(c=0;c<3;++c)o[c]=i[4*c],s[c]=i[4*c+1];this.up.set(t,o[0],o[1],o[2]),this.right.set(t,s[0],s[1],s[2])}},d.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=(Math.exp(this.computedRadius[0]),i[1]),o=i[5],s=i[9],l=c(a,o,s);a/=l,o/=l,s/=l;var u=i[0],f=i[4],h=i[8],d=u*a+f*o+h*s,p=c(u-=a*d,f-=o*d,h-=s*d),m=(u/=p)*e+a*r,v=(f/=p)*e+o*r,g=(h/=p)*e+s*r;this.center.move(t,m,v,g);var y=Math.exp(this.computedRadius[0]);y=Math.max(1e-4,y+n),this.radius.set(t,Math.log(y))},d.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},d.setMatrix=function(t,e,r,n){var a=1;"number"==typeof r&&(a=0|r),(a<0||a>3)&&(a=1);var o=(a+2)%3;e||(this.recalcMatrix(t),e=this.computedMatrix);var s=e[a],l=e[a+4],f=e[a+8];if(n){var h=Math.abs(s),d=Math.abs(l),p=Math.abs(f),m=Math.max(h,d,p);h===m?(s=s<0?-1:1,l=f=0):p===m?(f=f<0?-1:1,s=l=0):(l=l<0?-1:1,s=f=0)}else{var v=c(s,l,f);s/=v,l/=v,f/=v}var g,y,b=e[o],x=e[o+4],_=e[o+8],w=b*s+x*l+_*f,M=c(b-=s*w,x-=l*w,_-=f*w),k=l*(_/=M)-f*(x/=M),A=f*(b/=M)-s*_,T=s*x-l*b,E=c(k,A,T);if(k/=E,A/=E,T/=E,this.center.jump(t,H,G,Y),this.radius.idle(t),this.up.jump(t,s,l,f),this.right.jump(t,b,x,_),2===a){var S=e[1],L=e[5],C=e[9],P=S*b+L*x+C*_,z=S*k+L*A+C*T;g=R<0?-Math.PI/2:Math.PI/2,y=Math.atan2(z,P)}else{var O=e[2],D=e[6],I=e[10],R=O*s+D*l+I*f,N=O*b+D*x+I*_,F=O*k+D*A+I*T;g=Math.asin(u(R)),y=Math.atan2(F,N)}this.angle.jump(t,y,g),this.recalcMatrix(t);var j=e[2],B=e[6],U=e[10],V=this.computedMatrix;i(V,e);var q=V[15],H=V[12]/q,G=V[13]/q,Y=V[14]/q,W=Math.exp(this.computedRadius[0]);this.center.jump(t,H-j*W,G-B*W,Y-U*W)},d.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},d.idle=function(t){this.center.idle(t),this.up.idle(t),this.right.idle(t),this.radius.idle(t),this.angle.idle(t)},d.flush=function(t){this.center.flush(t),this.up.flush(t),this.right.flush(t),this.radius.flush(t),this.angle.flush(t)},d.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},d.lookAt=function(t,e,r,n){this.recalcMatrix(t),e=e||this.computedEye,r=r||this.computedCenter;var i=(n=n||this.computedUp)[0],a=n[1],o=n[2],s=c(i,a,o);if(!(s<1e-6)){i/=s,a/=s,o/=s;var l=e[0]-r[0],f=e[1]-r[1],h=e[2]-r[2],d=c(l,f,h);if(!(d<1e-6)){l/=d,f/=d,h/=d;var p=this.computedRight,m=p[0],v=p[1],g=p[2],y=i*m+a*v+o*g,b=c(m-=y*i,v-=y*a,g-=y*o);if(!(b<.01&&(b=c(m=a*h-o*f,v=o*l-i*h,g=i*f-a*l))<1e-6)){m/=b,v/=b,g/=b,this.up.set(t,i,a,o),this.right.set(t,m,v,g),this.center.set(t,r[0],r[1],r[2]),this.radius.set(t,Math.log(d));var x=a*g-o*v,_=o*m-i*g,w=i*v-a*m,M=c(x,_,w),k=i*l+a*f+o*h,A=m*l+v*f+g*h,T=(x/=M)*l+(_/=M)*f+(w/=M)*h,E=Math.asin(u(k)),S=Math.atan2(T,A),L=this.angle._state,C=L[L.length-1],P=L[L.length-2];C%=2*Math.PI;var z=Math.abs(C+2*Math.PI-S),O=Math.abs(C-S),D=Math.abs(C-2*Math.PI-S);z0?r.pop():new ArrayBuffer(t)}function h(t){return new Uint8Array(f(t),0,t)}function d(t){return new Uint16Array(f(2*t),0,t)}function p(t){return new Uint32Array(f(4*t),0,t)}function m(t){return new Int8Array(f(t),0,t)}function v(t){return new Int16Array(f(2*t),0,t)}function g(t){return new Int32Array(f(4*t),0,t)}function y(t){return new Float32Array(f(4*t),0,t)}function b(t){return new Float64Array(f(8*t),0,t)}function x(t){return o?new Uint8ClampedArray(f(t),0,t):h(t)}function _(t){return new DataView(f(t),0,t)}function w(t){t=i.nextPow2(t);var e=i.log2(t),r=c[e];return r.length>0?r.pop():new n(t)}r.free=function(t){if(n.isBuffer(t))c[i.log2(t.length)].push(t);else{if("[object ArrayBuffer]"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|i.log2(e);l[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeInt8=r.freeInt16=r.freeInt32=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){u(t.buffer)},r.freeArrayBuffer=u,r.freeBuffer=function(t){c[i.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||"arraybuffer"===e)return f(t);switch(e){case"uint8":return h(t);case"uint16":return d(t);case"uint32":return p(t);case"int8":return m(t);case"int16":return v(t);case"int32":return g(t);case"float":case"float32":return y(t);case"double":case"float64":return b(t);case"uint8_clamped":return x(t);case"buffer":return w(t);case"data":case"dataview":return _(t);default:return null}return null},r.mallocArrayBuffer=f,r.mallocUint8=h,r.mallocUint16=d,r.mallocUint32=p,r.mallocInt8=m,r.mallocInt16=v,r.mallocInt32=g,r.mallocFloat32=r.mallocFloat=y,r.mallocFloat64=r.mallocDouble=b,r.mallocUint8Clamped=x,r.mallocDataView=_,r.mallocBuffer=w,r.clearCache=function(){for(var t=0;t<32;++t)s.UINT8[t].length=0,s.UINT16[t].length=0,s.UINT32[t].length=0,s.INT8[t].length=0,s.INT16[t].length=0,s.INT32[t].length=0,s.FLOAT[t].length=0,s.DOUBLE[t].length=0,s.UINT8C[t].length=0,l[t].length=0,c[t].length=0}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},t("buffer").Buffer)},{"bit-twiddle":71,buffer:83,dup:134}],535:[function(t,e,r){"use strict";"use restrict";function n(t){this.roots=new Array(t),this.ranks=new Array(t);for(var e=0;en)return n;for(;ra?r=i:n=i,i=.5*(n-r)+r}return i},n.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))}},{}],538:[function(t,e,r){"use strict";e.exports=function(t,e,r){Array.isArray(r)||(r=[].slice.call(arguments,2));for(var n=0,i=r.length;n",'"',"`"," ","\r","\n","\t"]),u=["'"].concat(c),f=["%","/","?",";","#"].concat(u),h=["/","?","#"],d=/^[+a-z0-9A-Z_-]{0,63}$/,p=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,"javascript:":!0},v={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=t("querystring");function b(t,e,r){if(t&&i.isObject(t)&&t instanceof a)return t;var n=new a;return n.parse(t,e,r),n}a.prototype.parse=function(t,e,r){if(!i.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var a=t.indexOf("?"),s=-1!==a&&a127?O+="x":O+=z[D];if(!O.match(d)){var R=C.slice(0,E),N=C.slice(E+1),F=z.match(p);F&&(R.push(F[1]),N.unshift(F[2])),N.length&&(b="/"+N.join(".")+b),this.hostname=R.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),L||(this.hostname=n.toASCII(this.hostname));var j=this.port?":"+this.port:"",B=this.hostname||"";this.host=B+j,this.href+=this.host,L&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!m[w])for(E=0,P=u.length;E0)&&r.host.split("@"))&&(r.auth=L.shift(),r.host=r.hostname=L.shift());return r.search=t.search,r.query=t.query,i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!M.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var A=M.slice(-1)[0],T=(r.host||t.host||M.length>1)&&("."===A||".."===A)||""===A,E=0,S=M.length;S>=0;S--)"."===(A=M[S])?M.splice(S,1):".."===A?(M.splice(S,1),E++):E&&(M.splice(S,1),E--);if(!_&&!w)for(;E--;E)M.unshift("..");!_||""===M[0]||M[0]&&"/"===M[0].charAt(0)||M.unshift(""),T&&"/"!==M.join("/").substr(-1)&&M.push("");var L,C=""===M[0]||M[0]&&"/"===M[0].charAt(0);k&&(r.hostname=r.host=C?"":M.length?M.shift():"",(L=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=L.shift(),r.host=r.hostname=L.shift()));return(_=_||r.host&&M.length)&&!C&&M.unshift(""),M.length?r.pathname=M.join("/"):(r.pathname=null,r.path=null),i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},a.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},{"./util":540,punycode:470,querystring:474}],540:[function(t,e,r){"use strict";e.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},{}],541:[function(t,e,r){"function"==typeof Object.create?e.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},{}],542:[function(t,e,r){e.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},{}],543:[function(t,e,r){(function(e,n){var i=/%[sdj%]/g;r.format=function(t){if(!g(t)){for(var e=[],r=0;r=a)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),l=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),p(e)?n.showHidden=e:e&&r._extend(n,e),y(n.showHidden)&&(n.showHidden=!1),y(n.depth)&&(n.depth=2),y(n.colors)&&(n.colors=!1),y(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=l),u(n,t,n.depth)}function l(t,e){var r=s.styles[e];return r?"\x1b["+s.colors[r][0]+"m"+t+"\x1b["+s.colors[r][1]+"m":t}function c(t,e){return t}function u(t,e,n){if(t.customInspect&&e&&M(e.inspect)&&e.inspect!==r.inspect&&(!e.constructor||e.constructor.prototype!==e)){var i=e.inspect(n,t);return g(i)||(i=u(t,i,n)),i}var a=function(t,e){if(y(e))return t.stylize("undefined","undefined");if(g(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}if(v(e))return t.stylize(""+e,"number");if(p(e))return t.stylize(""+e,"boolean");if(m(e))return t.stylize("null","null")}(t,e);if(a)return a;var o=Object.keys(e),s=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(o);if(t.showHidden&&(o=Object.getOwnPropertyNames(e)),w(e)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return f(e);if(0===o.length){if(M(e)){var l=e.name?": "+e.name:"";return t.stylize("[Function"+l+"]","special")}if(b(e))return t.stylize(RegExp.prototype.toString.call(e),"regexp");if(_(e))return t.stylize(Date.prototype.toString.call(e),"date");if(w(e))return f(e)}var c,x="",k=!1,A=["{","}"];(d(e)&&(k=!0,A=["[","]"]),M(e))&&(x=" [Function"+(e.name?": "+e.name:"")+"]");return b(e)&&(x=" "+RegExp.prototype.toString.call(e)),_(e)&&(x=" "+Date.prototype.toUTCString.call(e)),w(e)&&(x=" "+f(e)),0!==o.length||k&&0!=e.length?n<0?b(e)?t.stylize(RegExp.prototype.toString.call(e),"regexp"):t.stylize("[Object]","special"):(t.seen.push(e),c=k?function(t,e,r,n,i){for(var a=[],o=0,s=e.length;o=0&&0,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60)return r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1];return r[0]+e+" "+t.join(", ")+" "+r[1]}(c,x,A)):A[0]+x+A[1]}function f(t){return"["+Error.prototype.toString.call(t)+"]"}function h(t,e,r,n,i,a){var o,s,l;if((l=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?s=l.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):l.set&&(s=t.stylize("[Setter]","special")),E(n,i)||(o="["+i+"]"),s||(t.seen.indexOf(l.value)<0?(s=m(r)?u(t,l.value,null):u(t,l.value,r-1)).indexOf("\n")>-1&&(s=a?s.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+s.split("\n").map(function(t){return" "+t}).join("\n")):s=t.stylize("[Circular]","special")),y(o)){if(a&&i.match(/^\d+$/))return s;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=t.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=t.stylize(o,"string"))}return o+": "+s}function d(t){return Array.isArray(t)}function p(t){return"boolean"==typeof t}function m(t){return null===t}function v(t){return"number"==typeof t}function g(t){return"string"==typeof t}function y(t){return void 0===t}function b(t){return x(t)&&"[object RegExp]"===k(t)}function x(t){return"object"==typeof t&&null!==t}function _(t){return x(t)&&"[object Date]"===k(t)}function w(t){return x(t)&&("[object Error]"===k(t)||t instanceof Error)}function M(t){return"function"==typeof t}function k(t){return Object.prototype.toString.call(t)}function A(t){return t<10?"0"+t.toString(10):t.toString(10)}r.debuglog=function(t){if(y(a)&&(a=e.env.NODE_DEBUG||""),t=t.toUpperCase(),!o[t])if(new RegExp("\\b"+t+"\\b","i").test(a)){var n=e.pid;o[t]=function(){var e=r.format.apply(r,arguments);console.error("%s %d: %s",t,n,e)}}else o[t]=function(){};return o[t]},r.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},r.isArray=d,r.isBoolean=p,r.isNull=m,r.isNullOrUndefined=function(t){return null==t},r.isNumber=v,r.isString=g,r.isSymbol=function(t){return"symbol"==typeof t},r.isUndefined=y,r.isRegExp=b,r.isObject=x,r.isDate=_,r.isError=w,r.isFunction=M,r.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},r.isBuffer=t("./support/isBuffer");var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function E(t,e){return Object.prototype.hasOwnProperty.call(t,e)}r.log=function(){var t,e;console.log("%s - %s",(t=new Date,e=[A(t.getHours()),A(t.getMinutes()),A(t.getSeconds())].join(":"),[t.getDate(),T[t.getMonth()],e].join(" ")),r.format.apply(r,arguments))},r.inherits=t("inherits"),r._extend=function(t,e){if(!e||!x(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t}}).call(this,t("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":542,_process:469,inherits:541}],544:[function(t,e,r){e.exports.VectorTile=t("./lib/vectortile.js"),e.exports.VectorTileFeature=t("./lib/vectortilefeature.js"),e.exports.VectorTileLayer=t("./lib/vectortilelayer.js")},{"./lib/vectortile.js":545,"./lib/vectortilefeature.js":546,"./lib/vectortilelayer.js":547}],545:[function(t,e,r){"use strict";var n=t("./vectortilelayer");function i(t,e,r){if(3===t){var i=new n(r,r.readVarint()+r.pos);i.length&&(e[i.name]=i)}}e.exports=function(t,e){this.layers=t.readFields(i,{},e)}},{"./vectortilelayer":547}],546:[function(t,e,r){"use strict";var n=t("point-geometry");function i(t,e,r,n,i){this.properties={},this.extent=r,this.type=0,this._pbf=t,this._geometry=-1,this._keys=n,this._values=i,t.readFields(a,this,e)}function a(t,e,r){1==t?e.id=r.readVarint():2==t?function(t,e){var r=t.readVarint()+t.pos;for(;t.pos>3}if(a--,1===i||2===i)o+=t.readSVarint(),s+=t.readSVarint(),1===i&&(e&&l.push(e),e=[]),e.push(new n(o,s));else{if(7!==i)throw new Error("unknown command "+i);e&&e.push(e[0].clone())}}return e&&l.push(e),l},i.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,l=1/0,c=-1/0;t.pos>3}if(n--,1===r||2===r)i+=t.readSVarint(),a+=t.readSVarint(),is&&(s=i),ac&&(c=a);else if(7!==r)throw new Error("unknown command "+r)}return[o,l,s,c]},i.prototype.toGeoJSON=function(t,e,r){var n,a,s=this.extent*Math.pow(2,r),l=this.extent*t,c=this.extent*e,u=this.loadGeometry(),f=i.types[this.type];function h(t){for(var e=0;e>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null}return e}(r))}e.exports=i,i.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new n(this._pbf,e,this.extent,this._keys,this._values)}},{"./vectortilefeature.js":546}],548:[function(t,e,r){"use strict";e.exports=function(t,e){"object"==typeof e&&null!==e||(e={});return n(t,e.canvas||i,e.context||a,e)};var n=t("./lib/vtext"),i=null,a=null;"undefined"!=typeof document&&((i=document.createElement("canvas")).width=8192,i.height=1024,a=i.getContext("2d"))},{"./lib/vtext":549}],549:[function(t,e,r){"use strict";e.exports=function(t,e,r,n){var a=n.size||64,o=n.font||"normal";return r.font=a+"px "+o,r.textAlign="start",r.textBaseline="alphabetic",r.direction="ltr",f(function(t,e,r,n){var a=0|Math.ceil(e.measureText(r).width+2*n);if(a>8192)throw new Error("vectorize-text: String too long (sorry, this will get fixed later)");var o=3*n;t.height>31}function u(t){for(var e=[],r=0,n=0,i=t.length,a=0;a=0?e[a]:i})},has___:{value:b(function(e){var n=y(e);return n?r in n:t.indexOf(e)>=0})},set___:{value:b(function(n,i){var a,o=y(n);return o?o[r]=i:(a=t.indexOf(n))>=0?e[a]=i:(a=t.length,e[a]=i,t[a]=n),this})},delete___:{value:b(function(n){var i,a,o=y(n);return o?r in o&&delete o[r]:!((i=t.indexOf(n))<0||(a=t.length-1,t[i]=void 0,e[i]=e[a],t[i]=t[a],t.length=a,e.length=a,0))})}})};m.prototype=Object.create(Object.prototype,{get:{value:function(t,e){return this.get___(t,e)},writable:!0,configurable:!0},has:{value:function(t){return this.has___(t)},writable:!0,configurable:!0},set:{value:function(t,e){return this.set___(t,e)},writable:!0,configurable:!0},delete:{value:function(t){return this.delete___(t)},writable:!0,configurable:!0}}),"function"==typeof r?function(){function n(){this instanceof m||x();var e,n=new r,i=void 0,a=!1;return e=t?function(t,e){return n.set(t,e),n.has(t)||(i||(i=new m),i.set(t,e)),this}:function(t,e){if(a)try{n.set(t,e)}catch(r){i||(i=new m),i.set___(t,e)}else n.set(t,e);return this},Object.create(m.prototype,{get___:{value:b(function(t,e){return i?n.has(t)?n.get(t):i.get___(t,e):n.get(t,e)})},has___:{value:b(function(t){return n.has(t)||!!i&&i.has___(t)})},set___:{value:b(e)},delete___:{value:b(function(t){var e=!!n.delete(t);return i&&i.delete___(t)||e})},permitHostObjects___:{value:b(function(t){if(t!==v)throw new Error("bogus call to permitHostObjects___");a=!0})}})}t&&"undefined"!=typeof Proxy&&(Proxy=void 0),n.prototype=m.prototype,e.exports=n,Object.defineProperty(WeakMap.prototype,"constructor",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():("undefined"!=typeof Proxy&&(Proxy=void 0),e.exports=m)}function v(t){t.permitHostObjects___&&t.permitHostObjects___(v)}function g(t){return!(t.substr(0,l.length)==l&&"___"===t.substr(t.length-3))}function y(t){if(t!==Object(t))throw new TypeError("Not an object: "+t);var e=t[c];if(e&&e.key===t)return e;if(s(t)){e={key:t};try{return o(t,c,{value:e,writable:!1,enumerable:!1,configurable:!1}),e}catch(t){return}}}function b(t){return t.prototype=null,Object.freeze(t)}function x(){d||"undefined"==typeof console||(d=!0,console.warn("WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future."))}}()},{}],554:[function(t,e,r){var n=t("./hidden-store.js");e.exports=function(){var t={};return function(e){if(("object"!=typeof e||null===e)&&"function"!=typeof e)throw new Error("Weakmap-shim: Key must be object");var r=e.valueOf(t);return r&&r.identity===t?r:n(e,t)}}},{"./hidden-store.js":555}],555:[function(t,e,r){e.exports=function(t,e){var r={identity:e},n=t.valueOf;return Object.defineProperty(t,"valueOf",{value:function(t){return t!==e?n.apply(this,arguments):r},writable:!0}),r}},{}],556:[function(t,e,r){var n=t("./create-store.js");e.exports=function(){var t=n();return{get:function(e,r){var n=t(e);return n.hasOwnProperty("value")?n.value:r},set:function(e,r){return t(e).value=r,this},has:function(e){return"value"in t(e)},delete:function(e){return delete t(e).value}}}},{"./create-store.js":554}],557:[function(t,e,r){var n=t("get-canvas-context");e.exports=function(t){return n("webgl",t)}},{"get-canvas-context":156}],558:[function(t,e,r){var n=arguments[3],i=arguments[4],a=arguments[5],o=JSON.stringify;e.exports=function(t,e){for(var r,s=Object.keys(a),l=0,c=s.length;l2111)throw e.replace(/\{0\}/,this.local.name);return t},toMonthIndex:function(t,e,r){var i=this.intercalaryMonth(t);if(r&&e!==i||e<1||e>12)throw n.local.invalidMonth.replace(/\{0\}/,this.local.name);return i?!r&&e<=i?e-1:e:e-1},toChineseMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);if(e<0||e>(r?12:11))throw n.local.invalidMonth.replace(/\{0\}/,this.local.name);return r?e>13},isIntercalaryMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);return!!r&&r===e},leapYear:function(t){return 0!==this.intercalaryMonth(t)},weekOfYear:function(t,e,r){var i,o=this._validateYear(t,n.local.invalidyear),s=h[o-h[0]],l=s>>9&4095,c=s>>5&15,u=31&s;(i=a.newDate(l,c,u)).add(4-(i.dayOfWeek()||7),"d");var f=this.toJD(t,e,r)-i.toJD();return 1+Math.floor(f/7)},monthsInYear:function(t){return this.leapYear(t)?13:12},daysInMonth:function(t,e){t.year&&(e=t.month(),t=t.year()),t=this._validateYear(t);var r=f[t-f[0]];if(e>(r>>13?12:11))throw n.local.invalidMonth.replace(/\{0\}/,this.local.name);return r&1<<12-e?30:29},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,s,r,n.local.invalidDate);t=this._validateYear(i.year()),e=i.month(),r=i.day();var o=this.isIntercalaryMonth(t,e),s=this.toChineseMonth(t,e),l=function(t,e,r,n,i){var a,o,s;if("object"==typeof t)o=t,a=e||{};else{var l="number"==typeof t&&t>=1888&&t<=2111;if(!l)throw new Error("Lunar year outside range 1888-2111");var c="number"==typeof e&&e>=1&&e<=12;if(!c)throw new Error("Lunar month outside range 1 - 12");var u,d="number"==typeof r&&r>=1&&r<=30;if(!d)throw new Error("Lunar day outside range 1 - 30");"object"==typeof n?(u=!1,a=n):(u=!!n,a=i||{}),o={year:t,month:e,day:r,isIntercalary:u}}s=o.day-1;var p,m=f[o.year-f[0]],v=m>>13;p=v?o.month>v?o.month:o.isIntercalary?o.month:o.month-1:o.month-1;for(var g=0;g>9&4095,(b>>5&15)-1,(31&b)+s);return a.year=x.getFullYear(),a.month=1+x.getMonth(),a.day=x.getDate(),a}(t,s,r,o);return a.toJD(l.year,l.month,l.day)},fromJD:function(t){var e=a.fromJD(t),r=function(t,e,r,n){var i,a;if("object"==typeof t)i=t,a=e||{};else{var o="number"==typeof t&&t>=1888&&t<=2111;if(!o)throw new Error("Solar year outside range 1888-2111");var s="number"==typeof e&&e>=1&&e<=12;if(!s)throw new Error("Solar month outside range 1 - 12");var l="number"==typeof r&&r>=1&&r<=31;if(!l)throw new Error("Solar day outside range 1 - 31");i={year:t,month:e,day:r},a=n||{}}var c=h[i.year-h[0]],u=i.year<<9|i.month<<5|i.day;a.year=u>=c?i.year:i.year-1,c=h[a.year-h[0]];var d,p=new Date(c>>9&4095,(c>>5&15)-1,31&c),m=new Date(i.year,i.month-1,i.day);d=Math.round((m-p)/864e5);var v,g=f[a.year-f[0]];for(v=0;v<13;v++){var y=g&1<<12-v?30:29;if(d>13;!b||v=2&&n<=6},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{century:o[Math.floor((i.year()-1)/100)+1]||""}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year()+(i.year()<0?1:0),e=i.month(),(r=i.day())+(e>1?16:0)+(e>2?32*(e-2):0)+400*(t-1)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t+.5)-Math.floor(this.jdEpoch)-1;var e=Math.floor(t/400)+1;t-=400*(e-1),t+=t>15?16:0;var r=Math.floor(t/32)+1,n=t-32*(r-1)+1;return this.newDate(e<=0?e-1:e,r,n)}});var o={20:"Fruitbat",21:"Anchovy"};n.calendars.discworld=a},{"../main":575,"object-assign":443}],564:[function(t,e,r){var n=t("../main"),i=t("object-assign");function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}a.prototype=new n.baseCalendar,i(a.prototype,{name:"Ethiopian",jdEpoch:1724220.5,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Ethiopian",epochs:["BEE","EE"],monthNames:["Meskerem","Tikemet","Hidar","Tahesas","Tir","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehase","Pagume"],monthNamesShort:["Mes","Tik","Hid","Tah","Tir","Yek","Meg","Mia","Gen","Sen","Ham","Neh","Pag"],dayNames:["Ehud","Segno","Maksegno","Irob","Hamus","Arb","Kidame"],dayNamesShort:["Ehu","Seg","Mak","Iro","Ham","Arb","Kid"],dayNamesMin:["Eh","Se","Ma","Ir","Ha","Ar","Ki"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()+(e.year()<0?1:0))%4==3||t%4==-1},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[""].invalidYear),13},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(13===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return(t=i.year())<0&&t++,i.day()+30*(i.month()-1)+365*(t-1)+Math.floor(t/4)+this.jdEpoch-1},fromJD:function(t){var e=Math.floor(t)+.5-this.jdEpoch,r=Math.floor((e-Math.floor((e+366)/1461))/365)+1;r<=0&&r--,e=Math.floor(t)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(e/30)+1,i=e-30*(n-1)+1;return this.newDate(r,n,i)}}),n.calendars.ethiopian=a},{"../main":575,"object-assign":443}],565:[function(t,e,r){var n=t("../main"),i=t("object-assign");function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}function o(t,e){return t-e*Math.floor(t/e)}a.prototype=new n.baseCalendar,i(a.prototype,{name:"Hebrew",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{"":{name:"Hebrew",epochs:["BAM","AM"],monthNames:["Nisan","Iyar","Sivan","Tammuz","Av","Elul","Tishrei","Cheshvan","Kislev","Tevet","Shevat","Adar","Adar II"],monthNamesShort:["Nis","Iya","Siv","Tam","Av","Elu","Tis","Che","Kis","Tev","She","Ada","Ad2"],dayNames:["Yom Rishon","Yom Sheni","Yom Shlishi","Yom Revi'i","Yom Chamishi","Yom Shishi","Yom Shabbat"],dayNamesShort:["Ris","She","Shl","Rev","Cha","Shi","Sha"],dayNamesMin:["Ri","She","Shl","Re","Ch","Shi","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return this._leapYear(e.year())},_leapYear:function(t){return o(7*(t=t<0?t+1:t)+1,19)<7},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),this._leapYear(t.year?t.year():t)?13:12},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),this.toJD(-1===t?1:t+1,7,1)-this.toJD(t,7,1)},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),12===e&&this.leapYear(t)?30:8===e&&5===o(this.daysInYear(t),10)?30:9===e&&3===o(this.daysInYear(t),10)?29:this.daysPerMonth[e-1]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{yearType:(this.leapYear(i)?"embolismic":"common")+" "+["deficient","regular","complete"][this.daysInYear(i)%10-3]}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t<=0?t+1:t,o=this.jdEpoch+this._delay1(a)+this._delay2(a)+r+1;if(e<7){for(var s=7;s<=this.monthsInYear(t);s++)o+=this.daysInMonth(t,s);for(s=1;s=this.toJD(-1===e?1:e+1,7,1);)e++;for(var r=tthis.toJD(e,r,this.daysInMonth(e,r));)r++;var n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.hebrew=a},{"../main":575,"object-assign":443}],566:[function(t,e,r){var n=t("../main"),i=t("object-assign");function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}a.prototype=new n.baseCalendar,i(a.prototype,{name:"Islamic",jdEpoch:1948439.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Islamic",epochs:["BH","AH"],monthNames:["Muharram","Safar","Rabi' al-awwal","Rabi' al-thani","Jumada al-awwal","Jumada al-thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-ahad","Yawm al-ithnayn","Yawm ath-thulaathaa'","Yawm al-arbi'aa'","Yawm al-kham\u012bs","Yawm al-jum'a","Yawm as-sabt"],dayNamesShort:["Aha","Ith","Thu","Arb","Kha","Jum","Sab"],dayNamesMin:["Ah","It","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(t){return(11*this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year()+14)%30<11},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return this.leapYear(t)?355:354},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),r=i.day(),t=t<=0?t+1:t,r+Math.ceil(29.5*(e-1))+354*(t-1)+Math.floor((3+11*t)/30)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t)+.5;var e=Math.floor((30*(t-this.jdEpoch)+10646)/10631);e=e<=0?e-1:e;var r=Math.min(12,Math.ceil((t-29-this.toJD(e,1,1))/29.5)+1),n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.islamic=a},{"../main":575,"object-assign":443}],567:[function(t,e,r){var n=t("../main"),i=t("object-assign");function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}a.prototype=new n.baseCalendar,i(a.prototype,{name:"Julian",jdEpoch:1721423.5,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Julian",epochs:["BC","AD"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"mm/dd/yyyy",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()<0?e.year()+1:e.year())%4==0},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(4-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),r=i.day(),t<0&&t++,e<=2&&(t--,e+=12),Math.floor(365.25*(t+4716))+Math.floor(30.6001*(e+1))+r-1524.5},fromJD:function(t){var e=Math.floor(t+.5)+1524,r=Math.floor((e-122.1)/365.25),n=Math.floor(365.25*r),i=Math.floor((e-n)/30.6001),a=i-Math.floor(i<14?1:13),o=r-Math.floor(a>2?4716:4715),s=e-n-Math.floor(30.6001*i);return o<=0&&o--,this.newDate(o,a,s)}}),n.calendars.julian=a},{"../main":575,"object-assign":443}],568:[function(t,e,r){var n=t("../main"),i=t("object-assign");function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}function o(t,e){return t-e*Math.floor(t/e)}function s(t,e){return o(t-1,e)+1}a.prototype=new n.baseCalendar,i(a.prototype,{name:"Mayan",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{"":{name:"Mayan",epochs:["",""],monthNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],monthNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],dayNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesMin:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],digits:null,dateFormat:"YYYY.m.d",firstDay:0,isRTL:!1,haabMonths:["Pop","Uo","Zip","Zotz","Tzec","Xul","Yaxkin","Mol","Chen","Yax","Zac","Ceh","Mac","Kankin","Muan","Pax","Kayab","Cumku","Uayeb"],tzolkinMonths:["Imix","Ik","Akbal","Kan","Chicchan","Cimi","Manik","Lamat","Muluc","Oc","Chuen","Eb","Ben","Ix","Men","Cib","Caban","Etznab","Cauac","Ahau"]}},leapYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),!1},formatYear:function(t){t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year();var e=Math.floor(t/400);return t%=400,t+=t<0?400:0,e+"."+Math.floor(t/20)+"."+t%20},forYear:function(t){if((t=t.split(".")).length<3)throw"Invalid Mayan year";for(var e=0,r=0;r19||r>0&&n<0)throw"Invalid Mayan year";e=20*e+n}return e},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),18},weekOfYear:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),0},daysInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),360},daysInMonth:function(t,e){return this._validate(t,e,this.minDay,n.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate).day()},weekDay:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),!0},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate).toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(t){var e=o((t-=this.jdEpoch)+8+340,365);return[Math.floor(e/20)+1,o(e,20)]},_toTzolkin:function(t){return[s((t-=this.jdEpoch)+20,20),s(t+4,13)]},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return i.day()+20*i.month()+360*i.year()+this.jdEpoch},fromJD:function(t){t=Math.floor(t)+.5-this.jdEpoch;var e=Math.floor(t/360);t%=360,t+=t<0?360:0;var r=Math.floor(t/20),n=t%20;return this.newDate(e,r,n)}}),n.calendars.mayan=a},{"../main":575,"object-assign":443}],569:[function(t,e,r){var n=t("../main"),i=t("object-assign");function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}a.prototype=new n.baseCalendar;var o=n.instance("gregorian");i(a.prototype,{name:"Nanakshahi",jdEpoch:2257673.5,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Nanakshahi",epochs:["BN","AN"],monthNames:["Chet","Vaisakh","Jeth","Harh","Sawan","Bhadon","Assu","Katak","Maghar","Poh","Magh","Phagun"],monthNamesShort:["Che","Vai","Jet","Har","Saw","Bha","Ass","Kat","Mgr","Poh","Mgh","Pha"],dayNames:["Somvaar","Mangalvar","Budhvaar","Veervaar","Shukarvaar","Sanicharvaar","Etvaar"],dayNamesShort:["Som","Mangal","Budh","Veer","Shukar","Sanichar","Et"],dayNamesMin:["So","Ma","Bu","Ve","Sh","Sa","Et"],digits:null,dateFormat:"dd-mm-yyyy",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[""].invalidYear);return o.leapYear(e.year()+(e.year()<1?1:0)+1469)},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(1-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidMonth);(t=i.year())<0&&t++;for(var a=i.day(),s=1;s=this.toJD(e+1,1,1);)e++;for(var r=t-Math.floor(this.toJD(e,1,1)+.5)+1,n=1;r>this.daysInMonth(e,n);)r-=this.daysInMonth(e,n),n++;return this.newDate(e,n,r)}}),n.calendars.nanakshahi=a},{"../main":575,"object-assign":443}],570:[function(t,e,r){var n=t("../main"),i=t("object-assign");function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}a.prototype=new n.baseCalendar,i(a.prototype,{name:"Nepali",jdEpoch:1700709.5,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{"":{name:"Nepali",epochs:["BBS","ABS"],monthNames:["Baisakh","Jestha","Ashadh","Shrawan","Bhadra","Ashwin","Kartik","Mangsir","Paush","Mangh","Falgun","Chaitra"],monthNamesShort:["Bai","Je","As","Shra","Bha","Ash","Kar","Mang","Pau","Ma","Fal","Chai"],dayNames:["Aaitabaar","Sombaar","Manglbaar","Budhabaar","Bihibaar","Shukrabaar","Shanibaar"],dayNamesShort:["Aaita","Som","Mangl","Budha","Bihi","Shukra","Shani"],dayNamesMin:["Aai","So","Man","Bu","Bi","Shu","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:1,isRTL:!1}},leapYear:function(t){return this.daysInYear(t)!==this.daysPerYear},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){if(t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),void 0===this.NEPALI_CALENDAR_DATA[t])return this.daysPerYear;for(var e=0,r=this.minMonth;r<=12;r++)e+=this.NEPALI_CALENDAR_DATA[t][r];return e},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),void 0===this.NEPALI_CALENDAR_DATA[t]?this.daysPerMonth[e-1]:this.NEPALI_CALENDAR_DATA[t][e]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=n.instance(),o=0,s=e,l=t;this._createMissingCalendarData(t);var c=t-(s>9||9===s&&r>=this.NEPALI_CALENDAR_DATA[l][0]?56:57);for(9!==e&&(o=r,s--);9!==s;)s<=0&&(s=12,l--),o+=this.NEPALI_CALENDAR_DATA[l][s],s--;return 9===e?(o+=r-this.NEPALI_CALENDAR_DATA[l][0])<0&&(o+=a.daysInYear(c)):o+=this.NEPALI_CALENDAR_DATA[l][9]-this.NEPALI_CALENDAR_DATA[l][0],a.newDate(c,1,1).add(o,"d").toJD()},fromJD:function(t){var e=n.instance().fromJD(t),r=e.year(),i=e.dayOfYear(),a=r+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)++o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var c=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,c)},_createMissingCalendarData:function(t){var e=this.daysPerMonth.slice(0);e.unshift(17);for(var r=t-1;r0?474:473))%2820+474+38)%2816<682},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-(n.dayOfWeek()+1)%7,"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t-(t>=0?474:473),s=474+o(a,2820);return r+(e<=7?31*(e-1):30*(e-1)+6)+Math.floor((682*s-110)/2816)+365*(s-1)+1029983*Math.floor(a/2820)+this.jdEpoch-1},fromJD:function(t){var e=(t=Math.floor(t)+.5)-this.toJD(475,1,1),r=Math.floor(e/1029983),n=o(e,1029983),i=2820;if(1029982!==n){var a=Math.floor(n/366),s=o(n,366);i=Math.floor((2134*a+2816*s+2815)/1028522)+a+1}var l=i+2820*r+474;l=l<=0?l-1:l;var c=t-this.toJD(l,1,1)+1,u=c<=186?Math.ceil(c/31):Math.ceil((c-6)/30),f=t-this.toJD(l,u,1)+1;return this.newDate(l,u,f)}}),n.calendars.persian=a,n.calendars.jalali=a},{"../main":575,"object-assign":443}],572:[function(t,e,r){var n=t("../main"),i=t("object-assign"),a=n.instance();function o(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}o.prototype=new n.baseCalendar,i(o.prototype,{name:"Taiwan",jdEpoch:2419402.5,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Taiwan",epochs:["BROC","ROC"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leapYear(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)},_g2tYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)}}),n.calendars.taiwan=o},{"../main":575,"object-assign":443}],573:[function(t,e,r){var n=t("../main"),i=t("object-assign"),a=n.instance();function o(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}o.prototype=new n.baseCalendar,i(o.prototype,{name:"Thai",jdEpoch:1523098.5,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Thai",epochs:["BBE","BE"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leapYear(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)},_g2tYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)}}),n.calendars.thai=o},{"../main":575,"object-assign":443}],574:[function(t,e,r){var n=t("../main"),i=t("object-assign");function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}a.prototype=new n.baseCalendar,i(a.prototype,{name:"UmmAlQura",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Umm al-Qura",epochs:["BH","AH"],monthNames:["Al-Muharram","Safar","Rabi' al-awwal","Rabi' Al-Thani","Jumada Al-Awwal","Jumada Al-Thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-Ahad","Yawm al-Ithnain","Yawm al-Thal\u0101th\u0101\u2019","Yawm al-Arba\u2018\u0101\u2019","Yawm al-Kham\u012bs","Yawm al-Jum\u2018a","Yawm al-Sabt"],dayNamesMin:["Ah","Ith","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!0}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return 355===this.daysInYear(e.year())},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){for(var e=0,r=1;r<=12;r++)e+=this.daysInMonth(t,r);return e},daysInMonth:function(t,e){for(var r=this._validate(t,e,this.minDay,n.local.invalidMonth).toJD()-24e5+.5,i=0,a=0;ar)return o[i]-o[i-1];i++}return 30},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate),a=12*(i.year()-1)+i.month()-15292;return i.day()+o[a-1]-1+24e5-.5},fromJD:function(t){for(var e=t-24e5+.5,r=0,n=0;ne);n++)r++;var i=r+15292,a=Math.floor((i-1)/12),s=a+1,l=i-12*a,c=e-o[r-1]+1;return this.newDate(s,l,c)},isValid:function(t,e,r){var i=n.baseCalendar.prototype.isValid.apply(this,arguments);return i&&(i=(t=null!=t.year?t.year:t)>=1276&&t<=1500),i},_validate:function(t,e,r,i){var a=n.baseCalendar.prototype._validate.apply(this,arguments);if(a.year<1276||a.year>1500)throw i.replace(/\{0\}/,this.local.name);return a}}),n.calendars.ummalqura=a;var o=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]},{"../main":575,"object-assign":443}],575:[function(t,e,r){var n=t("object-assign");function i(){this.regionalOptions=[],this.regionalOptions[""]={invalidCalendar:"Calendar {0} not found",invalidDate:"Invalid {0} date",invalidMonth:"Invalid {0} month",invalidYear:"Invalid {0} year",differentCalendars:"Cannot mix {0} and {1} dates"},this.local=this.regionalOptions[""],this.calendars={},this._localCals={}}function a(t,e,r,n){if(this._calendar=t,this._year=e,this._month=r,this._day=n,0===this._calendar._validateLevel&&!this._calendar.isValid(this._year,this._month,this._day))throw(c.local.invalidDate||c.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name)}function o(t,e){return"000000".substring(0,e-(t=""+t).length)+t}function s(){this.shortYearCutoff="+10"}function l(t){this.local=this.regionalOptions[t]||this.regionalOptions[""]}n(i.prototype,{instance:function(t,e){t=(t||"gregorian").toLowerCase(),e=e||"";var r=this._localCals[t+"-"+e];if(!r&&this.calendars[t]&&(r=new this.calendars[t](e),this._localCals[t+"-"+e]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[""].invalidCalendar).replace(/\{0\}/,t);return r},newDate:function(t,e,r,n,i){return(n=(null!=t&&t.year?t.calendar():"string"==typeof n?this.instance(n,i):n)||this.instance()).newDate(t,e,r)},substituteDigits:function(t){return function(e){return(e+"").replace(/[0-9]/g,function(e){return t[e]})}},substituteChineseDigits:function(t,e){return function(r){for(var n="",i=0;r>0;){var a=r%10;n=(0===a?"":t[a]+e[i])+n,i++,r=Math.floor(r/10)}return 0===n.indexOf(t[1]+e[1])&&(n=n.substr(1)),n||t[0]}}}),n(a.prototype,{newDate:function(t,e,r){return this._calendar.newDate(null==t?this:t,e,r)},year:function(t){return 0===arguments.length?this._year:this.set(t,"y")},month:function(t){return 0===arguments.length?this._month:this.set(t,"m")},day:function(t){return 0===arguments.length?this._day:this.set(t,"d")},date:function(t,e,r){if(!this._calendar.isValid(t,e,r))throw(c.local.invalidDate||c.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name);return this._year=t,this._month=e,this._day=r,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(t,e){return this._calendar.add(this,t,e)},set:function(t,e){return this._calendar.set(this,t,e)},compareTo:function(t){if(this._calendar.name!==t._calendar.name)throw(c.local.differentCalendars||c.regionalOptions[""].differentCalendars).replace(/\{0\}/,this._calendar.local.name).replace(/\{1\}/,t._calendar.local.name);var e=this._year!==t._year?this._year-t._year:this._month!==t._month?this.monthOfYear()-t.monthOfYear():this._day-t._day;return 0===e?0:e<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(t){return this._calendar.fromJD(t)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(t){return this._calendar.fromJSDate(t)},toString:function(){return(this.year()<0?"-":"")+o(Math.abs(this.year()),4)+"-"+o(this.month(),2)+"-"+o(this.day(),2)}}),n(s.prototype,{_validateLevel:0,newDate:function(t,e,r){return null==t?this.today():(t.year&&(this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[""].invalidDate),r=t.day(),e=t.month(),t=t.year()),new a(this,t,e,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[""].invalidYear).year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[""].invalidYear);return(e.year()<0?"-":"")+o(Math.abs(e.year()),4)},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[""].invalidYear),12},monthOfYear:function(t,e){var r=this._validate(t,e,this.minDay,c.local.invalidMonth||c.regionalOptions[""].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(t,e){var r=(e+this.firstMonth-2*this.minMonth)%this.monthsInYear(t)+this.minMonth;return this._validate(t,r,this.minDay,c.local.invalidMonth||c.regionalOptions[""].invalidMonth),r},daysInYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[""].invalidYear);return this.leapYear(e)?366:365},dayOfYear:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[""].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[""].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(t,e,r){return this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[""].invalidDate),{}},add:function(t,e,r){return this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[""].invalidDate),this._correctAdd(t,this._add(t,e,r),e,r)},_add:function(t,e,r){if(this._validateLevel++,"d"===r||"w"===r){var n=t.toJD()+e*("w"===r?this.daysInWeek():1),i=t.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=t.year()+("y"===r?e:0),o=t.monthOfYear()+("m"===r?e:0);i=t.day();"y"===r?(t.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,t.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):"m"===r&&(!function(t){for(;oe-1+t.minMonth;)a++,o-=e,e=t.monthsInYear(a)}(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var s=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,s}catch(t){throw this._validateLevel--,t}},_correctAdd:function(t,e,r,n){if(!(this.hasYearZero||"y"!==n&&"m"!==n||0!==e[0]&&t.year()>0==e[0]>0)){var i={y:[1,1,"y"],m:[1,this.monthsInYear(-1),"m"],w:[this.daysInWeek(),this.daysInYear(-1),"d"],d:[1,this.daysInYear(-1),"d"]}[n],a=r<0?-1:1;e=this._add(t,r*i[0]+a*i[1],i[2])}return t.date(e[0],e[1],e[2])},set:function(t,e,r){this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[""].invalidDate);var n="y"===r?e:t.year(),i="m"===r?e:t.month(),a="d"===r?e:t.day();return"y"!==r&&"m"!==r||(a=Math.min(a,this.daysInMonth(n,i))),t.date(n,i,a)},isValid:function(t,e,r){this._validateLevel++;var n=this.hasYearZero||0!==t;if(n){var i=this.newDate(t,e,this.minDay);n=e>=this.minMonth&&e-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),c=i-(l>2.5?4716:4715);return c<=0&&c--,this.newDate(c,l,s)},toJSDate:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[""].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(t){return this.newDate(t.getFullYear(),t.getMonth()+1,t.getDate())}});var c=e.exports=new i;c.cdate=a,c.baseCalendar=s,c.calendars.gregorian=l},{"object-assign":443}],576:[function(t,e,r){var n=t("object-assign"),i=t("./main");n(i.regionalOptions[""],{invalidArguments:"Invalid arguments",invalidFormat:"Cannot format a date from another calendar",missingNumberAt:"Missing number at position {0}",unknownNameAt:"Unknown name at position {0}",unexpectedLiteralAt:"Unexpected literal at position {0}",unexpectedText:"Additional text found at end"}),i.local=i.regionalOptions[""],n(i.cdate.prototype,{formatDate:function(t,e){return"string"!=typeof t&&(e=t,t=""),this._calendar.formatDate(t||"",this,e)}}),n(i.baseCalendar.prototype,{UNIX_EPOCH:i.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:86400,TICKS_EPOCH:i.instance().jdEpoch,TICKS_PER_DAY:864e9,ATOM:"yyyy-mm-dd",COOKIE:"D, dd M yyyy",FULL:"DD, MM d, yyyy",ISO_8601:"yyyy-mm-dd",JULIAN:"J",RFC_822:"D, d M yy",RFC_850:"DD, dd-M-yy",RFC_1036:"D, d M yy",RFC_1123:"D, d M yyyy",RFC_2822:"D, d M yyyy",RSS:"D, d M yy",TICKS:"!",TIMESTAMP:"@",W3C:"yyyy-mm-dd",formatDate:function(t,e,r){if("string"!=typeof t&&(r=e,e=t,t=""),!e)return"";if(e.calendar()!==this)throw i.local.invalidFormat||i.regionalOptions[""].invalidFormat;t=t||this.local.dateFormat;for(var n,a,o,s,l=(r=r||{}).dayNamesShort||this.local.dayNamesShort,c=r.dayNames||this.local.dayNames,u=r.monthNumbers||this.local.monthNumbers,f=r.monthNamesShort||this.local.monthNamesShort,h=r.monthNames||this.local.monthNames,d=(r.calculateWeek||this.local.calculateWeek,function(e,r){for(var n=1;w+n1}),p=function(t,e,r,n){var i=""+e;if(d(t,n))for(;i.length1},b=function(t,r){var n=y(t,r),a=[2,3,n?4:2,n?4:2,10,11,20]["oyYJ@!".indexOf(t)+1],o=new RegExp("^-?\\d{1,"+a+"}"),s=e.substring(A).match(o);if(!s)throw(i.local.missingNumberAt||i.regionalOptions[""].missingNumberAt).replace(/\{0\}/,A);return A+=s[0].length,parseInt(s[0],10)},x=this,_=function(){if("function"==typeof l){y("m");var t=l.call(x,e.substring(A));return A+=t.length,t}return b("m")},w=function(t,r,n,a){for(var o=y(t,a)?n:r,s=0;s-1){d=1,p=m;for(var S=this.daysInMonth(h,d);p>S;S=this.daysInMonth(h,d))d++,p-=S}return f>-1?this.fromJD(f):this.newDate(h,d,p)},determineDate:function(t,e,r,n,i){r&&"object"!=typeof r&&(i=n,n=r,r=null),"string"!=typeof n&&(i=n,n="");var a=this;return e=e?e.newDate():null,t=null==t?e:"string"==typeof t?function(t){try{return a.parseDate(n,t,i)}catch(t){}for(var e=((t=t.toLowerCase()).match(/^c/)&&r?r.newDate():null)||a.today(),o=/([+-]?[0-9]+)\s*(d|w|m|y)?/g,s=o.exec(t);s;)e.add(parseInt(s[1],10),s[2]||"d"),s=o.exec(t);return e}(t):"number"==typeof t?isNaN(t)||t===1/0||t===-1/0?e:a.today().add(t,"d"):a.newDate(t)}})},{"./main":575,"object-assign":443}],577:[function(t,e,r){e.exports=t("cwise-compiler")({args:["array",{offset:[1],array:0},"scalar","scalar","index"],pre:{body:"{}",args:[],thisVars:[],localVars:[]},post:{body:"{}",args:[],thisVars:[],localVars:[]},body:{body:"{\n var _inline_1_da = _inline_1_arg0_ - _inline_1_arg3_\n var _inline_1_db = _inline_1_arg1_ - _inline_1_arg3_\n if((_inline_1_da >= 0) !== (_inline_1_db >= 0)) {\n _inline_1_arg2_.push(_inline_1_arg4_[0] + 0.5 + 0.5 * (_inline_1_da + _inline_1_db) / (_inline_1_da - _inline_1_db))\n }\n }",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_1_arg2_",lvalue:!1,rvalue:!0,count:1},{name:"_inline_1_arg3_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg4_",lvalue:!1,rvalue:!0,count:1}],thisVars:[],localVars:["_inline_1_da","_inline_1_db"]},funcName:"zeroCrossings"})},{"cwise-compiler":116}],578:[function(t,e,r){"use strict";e.exports=function(t,e){var r=[];return e=+e||0,n(t.hi(t.shape[0]-1),r,e),r};var n=t("./lib/zc-core")},{"./lib/zc-core":577}],579:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("../../plots/cartesian/axes"),a=t("./common_defaults"),o=t("./attributes");e.exports=function(t,e,r,s,l){function c(r,i){return n.coerce(t,e,o,r,i)}s=s||{};var u=c("visible",!(l=l||{}).itemIsNotPlainObject),f=c("clicktoshow");if(!u&&!f)return e;a(t,e,r,c);for(var h=e.showarrow,d=["x","y"],p=[-10,-30],m={_fullLayout:r},v=0;v<2;v++){var g=d[v],y=i.coerceRef(t,e,m,g,"","paper");if(i.coercePosition(e,m,c,y,g,.5),h){var b="a"+g,x=i.coerceRef(t,e,m,b,"pixel");"pixel"!==x&&x!==y&&(x=e[b]="pixel");var _="pixel"===x?p[v]:.4;i.coercePosition(e,m,c,x,b,_)}c(g+"anchor"),c(g+"shift")}if(n.noneOrAll(t,e,["x","y"]),h&&n.noneOrAll(t,e,["ax","ay"]),f){var w=c("xclick"),M=c("yclick");e._xclick=void 0===w?e.x:i.cleanPosition(w,m,e.xref),e._yclick=void 0===M?e.y:i.cleanPosition(M,m,e.yref)}return e}},{"../../lib":724,"../../plots/cartesian/axes":770,"./attributes":581,"./common_defaults":584}],580:[function(t,e,r){"use strict";e.exports=[{path:"",backoff:0},{path:"M-2.4,-3V3L0.6,0Z",backoff:.6},{path:"M-3.7,-2.5V2.5L1.3,0Z",backoff:1.3},{path:"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z",backoff:1.55},{path:"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z",backoff:1.6},{path:"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z",backoff:2},{path:"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z",backoff:0,noRotate:!0},{path:"M2,2V-2H-2V2Z",backoff:0,noRotate:!0}]},{}],581:[function(t,e,r){"use strict";var n=t("./arrow_paths"),i=t("../../plots/font_attributes"),a=t("../../plots/cartesian/constants");e.exports={_isLinkedToArray:"annotation",visible:{valType:"boolean",dflt:!0,editType:"calcIfAutorange+arraydraw"},text:{valType:"string",editType:"calcIfAutorange+arraydraw"},textangle:{valType:"angle",dflt:0,editType:"calcIfAutorange+arraydraw"},font:i({editType:"calcIfAutorange+arraydraw",colorEditType:"arraydraw"}),width:{valType:"number",min:1,dflt:null,editType:"calcIfAutorange+arraydraw"},height:{valType:"number",min:1,dflt:null,editType:"calcIfAutorange+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},align:{valType:"enumerated",values:["left","center","right"],dflt:"center",editType:"arraydraw"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"arraydraw"},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},bordercolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},borderpad:{valType:"number",min:0,dflt:1,editType:"calcIfAutorange+arraydraw"},borderwidth:{valType:"number",min:0,dflt:1,editType:"calcIfAutorange+arraydraw"},showarrow:{valType:"boolean",dflt:!0,editType:"calcIfAutorange+arraydraw"},arrowcolor:{valType:"color",editType:"arraydraw"},arrowhead:{valType:"integer",min:0,max:n.length,dflt:1,editType:"arraydraw"},startarrowhead:{valType:"integer",min:0,max:n.length,dflt:1,editType:"arraydraw"},arrowside:{valType:"flaglist",flags:["end","start"],extras:["none"],dflt:"end",editType:"arraydraw"},arrowsize:{valType:"number",min:.3,dflt:1,editType:"calcIfAutorange+arraydraw"},startarrowsize:{valType:"number",min:.3,dflt:1,editType:"calcIfAutorange+arraydraw"},arrowwidth:{valType:"number",min:.1,editType:"calcIfAutorange+arraydraw"},standoff:{valType:"number",min:0,dflt:0,editType:"calcIfAutorange+arraydraw"},startstandoff:{valType:"number",min:0,dflt:0,editType:"calcIfAutorange+arraydraw"},ax:{valType:"any",editType:"calcIfAutorange+arraydraw"},ay:{valType:"any",editType:"calcIfAutorange+arraydraw"},axref:{valType:"enumerated",dflt:"pixel",values:["pixel",a.idRegex.x.toString()],editType:"calc"},ayref:{valType:"enumerated",dflt:"pixel",values:["pixel",a.idRegex.y.toString()],editType:"calc"},xref:{valType:"enumerated",values:["paper",a.idRegex.x.toString()],editType:"calc"},x:{valType:"any",editType:"calcIfAutorange+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calcIfAutorange+arraydraw"},xshift:{valType:"number",dflt:0,editType:"calcIfAutorange+arraydraw"},yref:{valType:"enumerated",values:["paper",a.idRegex.y.toString()],editType:"calc"},y:{valType:"any",editType:"calcIfAutorange+arraydraw"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"auto",editType:"calcIfAutorange+arraydraw"},yshift:{valType:"number",dflt:0,editType:"calcIfAutorange+arraydraw"},clicktoshow:{valType:"enumerated",values:[!1,"onoff","onout"],dflt:!1,editType:"arraydraw"},xclick:{valType:"any",editType:"arraydraw"},yclick:{valType:"any",editType:"arraydraw"},hovertext:{valType:"string",editType:"arraydraw"},hoverlabel:{bgcolor:{valType:"color",editType:"arraydraw"},bordercolor:{valType:"color",editType:"arraydraw"},font:i({editType:"arraydraw"}),editType:"arraydraw"},captureevents:{valType:"boolean",editType:"arraydraw"},editType:"calc",_deprecated:{ref:{valType:"string",editType:"calc"}}}},{"../../plots/cartesian/constants":775,"../../plots/font_attributes":797,"./arrow_paths":580}],582:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("../../plots/cartesian/axes"),a=t("./draw").draw;function o(t){var e=t._fullLayout;n.filterVisible(e.annotations).forEach(function(e){var r,n,a,o,s=i.getFromId(t,e.xref),l=i.getFromId(t,e.yref),c=3*e.arrowsize*e.arrowwidth||0,u=3*e.startarrowsize*e.arrowwidth||0;s&&s.autorange&&(r=c+e.xshift,n=c-e.xshift,a=u+e.xshift,o=u-e.xshift,e.axref===e.xref?(i.expand(s,[s.r2c(e.x)],{ppadplus:r,ppadminus:n}),i.expand(s,[s.r2c(e.ax)],{ppadplus:Math.max(e._xpadplus,a),ppadminus:Math.max(e._xpadminus,o)})):(a=e.ax?a+e.ax:a,o=e.ax?o-e.ax:o,i.expand(s,[s.r2c(e.x)],{ppadplus:Math.max(e._xpadplus,r,a),ppadminus:Math.max(e._xpadminus,n,o)}))),l&&l.autorange&&(r=c-e.yshift,n=c+e.yshift,a=u-e.yshift,o=u+e.yshift,e.ayref===e.yref?(i.expand(l,[l.r2c(e.y)],{ppadplus:r,ppadminus:n}),i.expand(l,[l.r2c(e.ay)],{ppadplus:Math.max(e._ypadplus,a),ppadminus:Math.max(e._ypadminus,o)})):(a=e.ay?a+e.ay:a,o=e.ay?o-e.ay:o,i.expand(l,[l.r2c(e.y)],{ppadplus:Math.max(e._ypadplus,r,a),ppadminus:Math.max(e._ypadminus,n,o)})))})}e.exports=function(t){var e=t._fullLayout,r=n.filterVisible(e.annotations);if(r.length&&t._fullData.length){var s={};for(var l in r.forEach(function(t){s[t.xref]=1,s[t.yref]=1}),s){var c=i.getFromId(t,l);if(c&&c.autorange)return n.syncOrAsync([a,o],t)}}}},{"../../lib":724,"../../plots/cartesian/axes":770,"./draw":587}],583:[function(t,e,r){"use strict";var n=t("../../plotly");function i(t,e){var r,n,i,o,s,l,c,u=t._fullLayout.annotations,f=[],h=[],d=[],p=(e||[]).length;for(r=0;r0||r.explicitOff.length>0},onClick:function(t,e){var r,a=i(t,e),o=a.on,s=a.off.concat(a.explicitOff),l={};if(!o.length&&!s.length)return;for(r=0;r2/3?"right":"center"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[e]}e._w=I,e._h=N;for(var U=!1,V=["x","y"],q=0;q1)&&(K===J?((ot=Q.r2fraction(e["a"+Z]))<0||ot>1)&&(U=!0):U=!0,U))continue;H=Q._offset+Q.r2p(e[Z]),W=.5}else"x"===Z?(Y=e[Z],H=b.l+b.w*Y):(Y=1-e[Z],H=b.t+b.h*Y),W=e.showarrow?.5:Y;if(e.showarrow){at.head=H;var st=e["a"+Z];X=tt*B(.5,e.xanchor)-et*B(.5,e.yanchor),K===J?(at.tail=Q._offset+Q.r2p(st),G=X):(at.tail=H+st,G=X+st),at.text=at.tail+X;var lt=y["x"===Z?"width":"height"];if("paper"===J&&(at.head=o.constrain(at.head,1,lt-1)),"pixel"===K){var ct=-Math.max(at.tail-3,at.text),ut=Math.min(at.tail+3,at.text)-lt;ct>0?(at.tail+=ct,at.text+=ct):ut>0&&(at.tail-=ut,at.text-=ut)}at.tail+=it,at.head+=it}else G=X=rt*B(W,nt),at.text=H+X;at.text+=it,X+=it,G+=it,e["_"+Z+"padplus"]=rt/2+G,e["_"+Z+"padminus"]=rt/2-G,e["_"+Z+"size"]=rt,e["_"+Z+"shift"]=X}if(U)S.remove();else{var ft=0,ht=0;if("left"!==e.align&&(ft=(I-E)*("center"===e.align?.5:1)),"top"!==e.valign&&(ht=(N-C)*("middle"===e.valign?.5:1)),u)n.select("svg").attr({x:P+ft-1,y:P+ht}).call(c.setClipUrl,O?_:null);else{var dt=P+ht-v.top,pt=P+ft-v.left;R.call(f.positionText,pt,dt).call(c.setClipUrl,O?_:null)}D.select("rect").call(c.setRect,P,P,I,N),z.call(c.setRect,L/2,L/2,F-L,j-L),S.call(c.setTranslate,Math.round(w.x.text-F/2),Math.round(w.y.text-j/2)),A.attr({transform:"rotate("+M+","+w.x.text+","+w.y.text+")"});var mt,vt,gt=function(r,n){k.selectAll(".annotation-arrow-g").remove();var u=w.x.head,f=w.y.head,h=w.x.tail+r,v=w.y.tail+n,y=w.x.text+r,_=w.y.text+n,T=o.rotationXYMatrix(M,y,_),E=o.apply2DTransform(T),L=o.apply2DTransform2(T),C=+z.attr("width"),P=+z.attr("height"),O=y-.5*C,D=O+C,I=_-.5*P,R=I+P,N=[[O,I,O,R],[O,R,D,R],[D,R,D,I],[D,I,O,I]].map(L);if(!N.reduce(function(t,e){return t^!!o.segmentsIntersect(u,f,u+1e6,f+1e6,e[0],e[1],e[2],e[3])},!1)){N.forEach(function(t){var e=o.segmentsIntersect(h,v,u,f,t[0],t[1],t[2],t[3]);e&&(h=e.x,v=e.y)});var F=e.arrowwidth,j=e.arrowcolor,B=e.arrowside,U=k.append("g").style({opacity:l.opacity(j)}).classed("annotation-arrow-g",!0),V=U.append("path").attr("d","M"+h+","+v+"L"+u+","+f).style("stroke-width",F+"px").call(l.stroke,l.rgb(j));if(p(V,B,e),x.annotationPosition&&V.node().parentNode&&!a){var q=u,H=f;if(e.standoff){var G=Math.sqrt(Math.pow(u-h,2)+Math.pow(f-v,2));q+=e.standoff*(h-u)/G,H+=e.standoff*(v-f)/G}var Y,W,X,Z=U.append("path").classed("annotation-arrow",!0).classed("anndrag",!0).attr({d:"M3,3H-3V-3H3ZM0,0L"+(h-q)+","+(v-H),transform:"translate("+q+","+H+")"}).style("stroke-width",F+6+"px").call(l.stroke,"rgba(0,0,0,0)").call(l.fill,"rgba(0,0,0,0)");d.init({element:Z.node(),gd:t,prepFn:function(){var t=c.getTranslate(S);W=t.x,X=t.y,Y={},s&&s.autorange&&(Y[s._name+".autorange"]=!0),m&&m.autorange&&(Y[m._name+".autorange"]=!0)},moveFn:function(t,r){var n=E(W,X),i=n[0]+t,a=n[1]+r;S.call(c.setTranslate,i,a),Y[g+".x"]=s?s.p2r(s.r2p(e.x)+t):e.x+t/b.w,Y[g+".y"]=m?m.p2r(m.r2p(e.y)+r):e.y-r/b.h,e.axref===e.xref&&(Y[g+".ax"]=s.p2r(s.r2p(e.ax)+t)),e.ayref===e.yref&&(Y[g+".ay"]=m.p2r(m.r2p(e.ay)+r)),U.attr("transform","translate("+t+","+r+")"),A.attr({transform:"rotate("+M+","+i+","+a+")"})},doneFn:function(){i.relayout(t,Y);var e=document.querySelector(".js-notes-box-panel");e&&e.redraw(e.selectedObj)}})}}};if(e.showarrow&>(0,0),T)d.init({element:S.node(),gd:t,prepFn:function(){vt=A.attr("transform"),mt={}},moveFn:function(t,r){var n="pointer";if(e.showarrow)e.axref===e.xref?mt[g+".ax"]=s.p2r(s.r2p(e.ax)+t):mt[g+".ax"]=e.ax+t,e.ayref===e.yref?mt[g+".ay"]=m.p2r(m.r2p(e.ay)+r):mt[g+".ay"]=e.ay+r,gt(t,r);else{if(a)return;if(s)mt[g+".x"]=e.x+t/s._m;else{var i=e._xsize/b.w,o=e.x+(e._xshift-e.xshift)/b.w-i/2;mt[g+".x"]=d.align(o+t/b.w,i,0,1,e.xanchor)}if(m)mt[g+".y"]=e.y+r/m._m;else{var l=e._ysize/b.h,c=e.y-(e._yshift+e.yshift)/b.h-l/2;mt[g+".y"]=d.align(c-r/b.h,l,0,1,e.yanchor)}s&&m||(n=d.getCursor(s?.5:mt[g+".x"],m?.5:mt[g+".y"],e.xanchor,e.yanchor))}A.attr({transform:"translate("+t+","+r+")"+vt}),h(S,n)},doneFn:function(){h(S),i.relayout(t,mt);var e=document.querySelector(".js-notes-box-panel");e&&e.redraw(e.selectedObj)}})}}}e.exports={draw:function(t){var e=t._fullLayout;e._infolayer.selectAll(".annotation").remove();for(var r=0;r=0,v=e.indexOf("end")>=0,g=f.backoff*d+r.standoff,y=h.backoff*p+r.startstandoff;if("line"===u.nodeName){o={x:+t.attr("x1"),y:+t.attr("y1")},s={x:+t.attr("x2"),y:+t.attr("y2")};var b=o.x-s.x,x=o.y-s.y;if(c=(l=Math.atan2(x,b))+Math.PI,g&&y&&g+y>Math.sqrt(b*b+x*x))return void P();if(g){if(g*g>b*b+x*x)return void P();var _=g*Math.cos(l),w=g*Math.sin(l);s.x+=_,s.y+=w,t.attr({x2:s.x,y2:s.y})}if(y){if(y*y>b*b+x*x)return void P();var M=y*Math.cos(l),k=y*Math.sin(l);o.x-=M,o.y-=k,t.attr({x1:o.x,y1:o.y})}}else if("path"===u.nodeName){var A=u.getTotalLength(),T="";if(A1){c=!0;break}}c?t.fullLayout._infolayer.select(".annotation-"+t.id+'[data-index="'+s+'"]').remove():(l._pdata=i(t.glplot.cameraParams,[e.xaxis.r2l(l.x)*r[0],e.yaxis.r2l(l.y)*r[1],e.zaxis.r2l(l.z)*r[2]]),n(t.graphDiv,l,s,t.id,l._xa,l._ya))}}},{"../../plots/gl3d/project":822,"../annotations/draw":587}],594:[function(t,e,r){"use strict";var n=t("../../registry"),i=t("../../lib");e.exports={moduleType:"component",name:"annotations3d",schema:{subplots:{scene:{annotations:t("./attributes")}}},layoutAttributes:t("./attributes"),handleDefaults:t("./defaults"),includeBasePlot:function(t,e){var r=n.subplotsRegistry.gl3d;if(!r)return;for(var a=r.attrRegex,o=Object.keys(t),s=0;s=0))return t;if(3===o)n[o]>1&&(n[o]=1);else if(n[o]>=1)return t}var s=Math.round(255*n[0])+", "+Math.round(255*n[1])+", "+Math.round(255*n[2]);return a?"rgba("+s+", "+n[3]+")":"rgb("+s+")"}a.tinyRGB=function(t){var e=t.toRgb();return"rgb("+Math.round(e.r)+", "+Math.round(e.g)+", "+Math.round(e.b)+")"},a.rgb=function(t){return a.tinyRGB(n(t))},a.opacity=function(t){return t?n(t).getAlpha():0},a.addOpacity=function(t,e){var r=n(t).toRgb();return"rgba("+Math.round(r.r)+", "+Math.round(r.g)+", "+Math.round(r.b)+", "+e+")"},a.combine=function(t,e){var r=n(t).toRgb();if(1===r.a)return n(t).toRgbString();var i=n(e||l).toRgb(),a=1===i.a?i:{r:255*(1-i.a)+i.r*i.a,g:255*(1-i.a)+i.g*i.a,b:255*(1-i.a)+i.b*i.a},o={r:a.r*(1-r.a)+r.r*r.a,g:a.g*(1-r.a)+r.g*r.a,b:a.b*(1-r.a)+r.b*r.a};return n(o).toRgbString()},a.contrast=function(t,e,r){var i=n(t);return 1!==i.getAlpha()&&(i=n(a.combine(t,l))),(i.isDark()?e?i.lighten(e):l:r?i.darken(r):s).toString()},a.stroke=function(t,e){var r=n(e);t.style({stroke:a.tinyRGB(r),"stroke-opacity":r.getAlpha()})},a.fill=function(t,e){var r=n(e);t.style({fill:a.tinyRGB(r),"fill-opacity":r.getAlpha()})},a.clean=function(t){if(t&&"object"==typeof t){var e,r,n,i,o=Object.keys(t);for(e=0;e0?T>=O:T<=O));E++)T>I&&T0?T>=O:T<=O));E++)T>S[0]&&T1){var it=Math.pow(10,Math.floor(Math.log(nt)/Math.LN10));et*=it*u.roundUp(nt/it,[2,5,10]),(Math.abs(r.levels.start)/r.levels.size+1e-6)%1<2e-6&&($.tick0=0)}$.dtick=et}$.domain=[Z+Y,Z+q-Y],$.setScale();var at=_._infolayer.selectAll("g."+e).data([0]);at.enter().append("g").classed(e,!0).classed(w.colorbar,!0).each(function(){var t=n.select(this);t.append("rect").classed(w.cbbg,!0),t.append("g").classed(w.cbfills,!0),t.append("g").classed(w.cblines,!0),t.append("g").classed(w.cbaxis,!0).classed(w.crisp,!0),t.append("g").classed(w.cbtitleunshift,!0).append("g").classed(w.cbtitle,!0),t.append("rect").classed(w.cboutline,!0),t.select(".cbtitle").datum(0)}),at.attr("transform","translate("+Math.round(A.l)+","+Math.round(A.t)+")");var ot=at.select(".cbtitleunshift").attr("transform","translate(-"+Math.round(A.l)+",-"+Math.round(A.t)+")");$._axislayer=at.select(".cbaxis");var st=0;if(-1!==["top","bottom"].indexOf(r.titleside)){var lt,ct=A.l+(r.x+H)*A.w,ut=$.titlefont.size;lt="top"===r.titleside?(1-(Z+q-Y))*A.h+A.t+3+.75*ut:(1-(Z+Y))*A.h+A.t-3-.25*ut,vt($._id+"title",{attributes:{x:ct,y:lt,"text-anchor":"start"}})}var ft,ht,dt,pt=u.syncOrAsync([o.previousPromises,function(){if(-1!==["top","bottom"].indexOf(r.titleside)){var e=at.select(".cbtitle"),a=e.select("text"),o=[-r.outlinewidth/2,r.outlinewidth/2],s=e.select(".h"+$._id+"title-math-group").node(),c=15.6;if(a.node()&&(c=parseInt(a.node().style.fontSize,10)*g),s?(st=d.bBox(s).height)>c&&(o[1]-=(st-c)/2):a.node()&&!a.classed(w.jsPlaceholder)&&(st=d.bBox(a.node()).height),st){if(st+=5,"top"===r.titleside)$.domain[1]-=st/A.h,o[1]*=-1;else{$.domain[0]+=st/A.h;var f=v.lineCount(a);o[1]+=(1-f)*c}e.attr("transform","translate("+o+")"),$.setScale()}}at.selectAll(".cbfills,.cblines").attr("transform","translate(0,"+Math.round(A.h*(1-$.domain[1]))+")"),$._axislayer.attr("transform","translate(0,"+Math.round(-A.t)+")");var h=at.select(".cbfills").selectAll("rect.cbfill").data(C);h.enter().append("rect").classed(w.cbfill,!0).style("stroke","none"),h.exit().remove(),h.each(function(t,e){var r=[0===e?S[0]:(C[e]+C[e-1])/2,e===C.length-1?S[1]:(C[e]+C[e+1])/2].map($.c2p).map(Math.round);e!==C.length-1&&(r[1]+=r[1]>r[0]?1:-1);var a=z(t).replace("e-",""),o=i(a).toHexString();n.select(this).attr({x:W,width:Math.max(B,2),y:n.min(r),height:Math.max(n.max(r)-n.min(r),2),fill:o})});var p=at.select(".cblines").selectAll("path.cbline").data(r.line.color&&r.line.width?L:[]);return p.enter().append("path").classed(w.cbline,!0),p.exit().remove(),p.each(function(t){n.select(this).attr("d","M"+W+","+(Math.round($.c2p(t))+r.line.width/2%1)+"h"+B).call(d.lineGroupStyle,r.line.width,P(t),r.line.dash)}),$._axislayer.selectAll("g."+$._id+"tick,path").remove(),$._pos=W+B+(r.outlinewidth||0)/2-("outside"===r.ticks?1:0),$.side="right",u.syncOrAsync([function(){return l.doTicks(t,$,!0)},function(){if(-1===["top","bottom"].indexOf(r.titleside)){var e=$.titlefont.size,i=$._offset+$._length/2,a=A.l+($.position||0)*A.w+("right"===$.side?10+e*($.showticklabels?1:.5):-10-e*($.showticklabels?.5:0));vt("h"+$._id+"title",{avoid:{selection:n.select(t).selectAll("g."+$._id+"tick"),side:r.titleside,offsetLeft:A.l,offsetTop:0,maxShift:_.width},attributes:{x:a,y:i,"text-anchor":"middle"},transform:{rotate:"-90",offset:0}})}}])},o.previousPromises,function(){var n=B+r.outlinewidth/2+d.bBox($._axislayer.node()).width;if((N=ot.select("text")).node()&&!N.classed(w.jsPlaceholder)){var i,a=ot.select(".h"+$._id+"title-math-group").node();i=a&&-1!==["top","bottom"].indexOf(r.titleside)?d.bBox(a).width:d.bBox(ot.node()).right-W-A.l,n=Math.max(n,i)}var s=2*r.xpad+n+r.borderwidth+r.outlinewidth/2,l=J-K;at.select(".cbbg").attr({x:W-r.xpad-(r.borderwidth+r.outlinewidth)/2,y:K-G,width:Math.max(s,2),height:Math.max(l+2*G,2)}).call(p.fill,r.bgcolor).call(p.stroke,r.bordercolor).style({"stroke-width":r.borderwidth}),at.selectAll(".cboutline").attr({x:W,y:K+r.ypad+("top"===r.titleside?st:0),width:Math.max(B,2),height:Math.max(l-2*r.ypad-st,2)}).call(p.stroke,r.outlinecolor).style({fill:"None","stroke-width":r.outlinewidth});var c=({center:.5,right:1}[r.xanchor]||0)*s;at.attr("transform","translate("+(A.l-c)+","+A.t+")"),o.autoMargin(t,e,{x:r.x,y:r.y,l:s*({right:1,center:.5}[r.xanchor]||0),r:s*({left:1,center:.5}[r.xanchor]||0),t:l*({bottom:1,middle:.5}[r.yanchor]||0),b:l*({top:1,middle:.5}[r.yanchor]||0)})}],t);if(pt&&pt.then&&(t._promises||[]).push(pt),t._context.edits.colorbarPosition)c.init({element:at.node(),gd:t,prepFn:function(){ft=at.attr("transform"),h(at)},moveFn:function(t,e){at.attr("transform",ft+" translate("+t+","+e+")"),ht=c.align(X+t/A.w,U,0,1,r.xanchor),dt=c.align(Z-e/A.h,q,0,1,r.yanchor);var n=c.getCursor(ht,dt,r.xanchor,r.yanchor);h(at,n)},doneFn:function(){h(at),void 0!==ht&&void 0!==dt&&a.restyle(t,{"colorbar.x":ht,"colorbar.y":dt},k().index)}});return pt}function mt(t,e){return u.coerce(Q,$,x,t,e)}function vt(e,r){var n,i=k();n=s.traceIs(i,"markerColorscale")?"marker.colorbar.title":"colorbar.title";var a={propContainer:$,propName:n,traceIndex:i.index,placeholder:_._dfltTitle.colorbar,containerGroup:at.select(".cbtitle")},o="h"===e.charAt(0)?e.substr(1):"h"+e;at.selectAll("."+o+",."+o+"-math-group").remove(),m.draw(t,e,f(a,r||{}))}_._infolayer.selectAll("g."+e).remove()}function k(){var r,n,i=e.substr(2);for(r=0;r=0?i.Reds:i.Blues,l.colorscale=m,s.reversescale&&(m=a(m)),s.colorscale=m)}},{"../../lib":724,"./flip_scale":610,"./scales":617}],606:[function(t,e,r){"use strict";var n=t("./attributes"),i=t("../../lib/extend").extendFlat;t("./scales.js");e.exports=function(t,e,r){return{color:{valType:"color",arrayOk:!0,editType:e||"style"},colorscale:i({},n.colorscale,{}),cauto:i({},n.zauto,{impliedEdits:{cmin:void 0,cmax:void 0}}),cmax:i({},n.zmax,{editType:e||n.zmax.editType,impliedEdits:{cauto:!1}}),cmin:i({},n.zmin,{editType:e||n.zmin.editType,impliedEdits:{cauto:!1}}),autocolorscale:i({},n.autocolorscale,{dflt:!1===r?r:n.autocolorscale.dflt}),reversescale:i({},n.reversescale,{})}}},{"../../lib/extend":713,"./attributes":604,"./scales.js":617}],607:[function(t,e,r){"use strict";var n=t("./scales");e.exports=n.RdBu},{"./scales":617}],608:[function(t,e,r){"use strict";var n=t("fast-isnumeric"),i=t("../../lib"),a=t("../colorbar/has_colorbar"),o=t("../colorbar/defaults"),s=t("./is_valid_scale"),l=t("./flip_scale");e.exports=function(t,e,r,c,u){var f,h=u.prefix,d=u.cLetter,p=h.slice(0,h.length-1),m=h?i.nestedProperty(t,p).get()||{}:t,v=h?i.nestedProperty(e,p).get()||{}:e,g=m[d+"min"],y=m[d+"max"],b=m.colorscale;c(h+d+"auto",!(n(g)&&n(y)&&g=0;i--,a++)e=t[i],n[a]=[1-e[0],e[1]];return n}},{}],611:[function(t,e,r){"use strict";var n=t("./scales"),i=t("./default_scale"),a=t("./is_valid_scale_array");e.exports=function(t,e){if(e||(e=i),!t)return e;function r(){try{t=n[t]||JSON.parse(t)}catch(r){t=e}}return"string"==typeof t&&(r(),"string"==typeof t&&r()),a(t)?t:e}},{"./default_scale":607,"./is_valid_scale_array":615,"./scales":617}],612:[function(t,e,r){"use strict";var n=t("fast-isnumeric"),i=t("../../lib"),a=t("./is_valid_scale");e.exports=function(t,e){var r=e?i.nestedProperty(t,e).get()||{}:t,o=r.color,s=!1;if(Array.isArray(o))for(var l=0;l4/3-s?o:s}},{}],619:[function(t,e,r){"use strict";var n=t("../../lib"),i=[["sw-resize","s-resize","se-resize"],["w-resize","move","e-resize"],["nw-resize","n-resize","ne-resize"]];e.exports=function(t,e,r,a){return t="left"===r?0:"center"===r?1:"right"===r?2:n.constrain(Math.floor(3*t),0,2),e="bottom"===a?0:"middle"===a?1:"top"===a?2:n.constrain(Math.floor(3*e),0,2),i[e][t]}},{"../../lib":724}],620:[function(t,e,r){"use strict";var n=t("mouse-event-offset"),i=t("has-hover"),a=t("has-passive-events"),o=t("../../plotly"),s=t("../../lib"),l=t("../../plots/cartesian/constants"),c=t("../../constants/interactions"),u=e.exports={};u.align=t("./align"),u.getCursor=t("./cursor");var f=t("./unhover");function h(){var t=document.createElement("div");t.className="dragcover";var e=t.style;return e.position="fixed",e.left=0,e.right=0,e.top=0,e.bottom=0,e.zIndex=999999999,e.background="none",document.body.appendChild(t),t}function d(t){return n(t.changedTouches?t.changedTouches[0]:t,document.body)}u.unhover=f.wrapped,u.unhoverRaw=f.raw,u.init=function(t){var e,r,n,f,p,m,v,g,y=t.gd,b=1,x=c.DBLCLICKDELAY,_=t.element;y._mouseDownTime||(y._mouseDownTime=0),_.style.pointerEvents="all",_.onmousedown=M,a?(_._ontouchstart&&_.removeEventListener("touchstart",_._ontouchstart),_._ontouchstart=M,_.addEventListener("touchstart",M,{passive:!1})):_.ontouchstart=M;var w=t.clampFn||function(t,e,r){return Math.abs(t)x&&(b=Math.max(b-1,1)),y._dragged)t.doneFn&&t.doneFn(e);else if(t.clickFn&&t.clickFn(b,m),!g){var r;try{r=new MouseEvent("click",e)}catch(t){var n=d(e);(r=document.createEvent("MouseEvents")).initMouseEvent("click",e.bubbles,e.cancelable,e.view,e.detail,e.screenX,e.screenY,n[0],n[1],e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget)}v.dispatchEvent(r)}!function(t){t._dragging=!1,t._replotPending&&o.plot(t)}(y),y._dragged=!1}else y._dragged=!1}},u.coverSlip=h},{"../../constants/interactions":701,"../../lib":724,"../../plotly":765,"../../plots/cartesian/constants":775,"./align":618,"./cursor":619,"./unhover":621,"has-hover":255,"has-passive-events":256,"mouse-event-offset":425}],621:[function(t,e,r){"use strict";var n=t("../../lib/events"),i=t("../../lib/throttle"),a=t("../../lib/get_graph_div"),o=t("../fx/constants"),s=e.exports={};s.wrapped=function(t,e,r){(t=a(t))._fullLayout&&i.clear(t._fullLayout._uid+o.HOVERID),s.raw(t,e,r)},s.raw=function(t,e){var r=t._fullLayout,i=t._hoverdata;e||(e={}),e.target&&!1===n.triggerHandler(t,"plotly_beforehover",e)||(r._hoverlayer.selectAll("g").remove(),r._hoverlayer.selectAll("line").remove(),r._hoverlayer.selectAll("circle").remove(),t._hoverdata=void 0,e.target&&i&&t.emit("plotly_unhover",{event:e,points:i}))}},{"../../lib/events":712,"../../lib/get_graph_div":719,"../../lib/throttle":748,"../fx/constants":635}],622:[function(t,e,r){"use strict";r.dash={valType:"string",values:["solid","dot","dash","longdash","dashdot","longdashdot"],dflt:"solid",editType:"style"}},{}],623:[function(t,e,r){"use strict";var n=t("d3"),i=t("fast-isnumeric"),a=t("tinycolor2"),o=t("../../registry"),s=t("../color"),l=t("../colorscale"),c=t("../../lib"),u=t("../../lib/svg_text_utils"),f=t("../../constants/xmlns_namespaces"),h=t("../../constants/alignment").LINE_SPACING,d=t("../../constants/interactions").DESELECTDIM,p=t("../../traces/scatter/subtypes"),m=t("../../traces/scatter/make_bubble_size_func"),v=e.exports={};v.font=function(t,e,r,n){c.isPlainObject(e)&&(n=e.color,r=e.size,e=e.family),e&&t.style("font-family",e),r+1&&t.style("font-size",r+"px"),n&&t.call(s.fill,n)},v.setPosition=function(t,e,r){t.attr("x",e).attr("y",r)},v.setSize=function(t,e,r){t.attr("width",e).attr("height",r)},v.setRect=function(t,e,r,n,i){t.call(v.setPosition,e,r).call(v.setSize,n,i)},v.translatePoint=function(t,e,r,n){var a=r.c2p(t.x),o=n.c2p(t.y);return!!(i(a)&&i(o)&&e.node())&&("text"===e.node().nodeName?e.attr("x",a).attr("y",o):e.attr("transform","translate("+a+","+o+")"),!0)},v.translatePoints=function(t,e,r){t.each(function(t){var i=n.select(this);v.translatePoint(t,i,e,r)})},v.hideOutsideRangePoint=function(t,e,r,n,i,a){e.attr("display",r.isPtWithinRange(t,i)&&n.isPtWithinRange(t,a)?null:"none")},v.hideOutsideRangePoints=function(t,e){if(e._hasClipOnAxisFalse){var r=e.xaxis,i=e.yaxis;t.each(function(e){var a=e[0].trace,o=a.xcalendar,s=a.ycalendar;t.selectAll(".point,.textpoint").each(function(t){v.hideOutsideRangePoint(t,n.select(this),r,i,o,s)})})}},v.crispRound=function(t,e,r){return e&&i(e)?t._context.staticPlot?e:e<1?1:Math.round(e):r||0},v.singleLineStyle=function(t,e,r,n,i){e.style("fill","none");var a=(((t||[])[0]||{}).trace||{}).line||{},o=r||a.width||0,l=i||a.dash||"";s.stroke(e,n||a.color),v.dashLine(e,l,o)},v.lineGroupStyle=function(t,e,r,i){t.style("fill","none").each(function(t){var a=(((t||[])[0]||{}).trace||{}).line||{},o=e||a.width||0,l=i||a.dash||"";n.select(this).call(s.stroke,r||a.color).call(v.dashLine,l,o)})},v.dashLine=function(t,e,r){r=+r||0,e=v.dashStyle(e,r),t.style({"stroke-dasharray":e,"stroke-width":r+"px"})},v.dashStyle=function(t,e){e=+e||1;var r=Math.max(e,3);return"solid"===t?t="":"dot"===t?t=r+"px,"+r+"px":"dash"===t?t=3*r+"px,"+3*r+"px":"longdash"===t?t=5*r+"px,"+5*r+"px":"dashdot"===t?t=3*r+"px,"+r+"px,"+r+"px,"+r+"px":"longdashdot"===t&&(t=5*r+"px,"+2*r+"px,"+r+"px,"+2*r+"px"),t},v.singleFillStyle=function(t){var e=(((n.select(t.node()).data()[0]||[])[0]||{}).trace||{}).fillcolor;e&&t.call(s.fill,e)},v.fillGroupStyle=function(t){t.style("stroke-width",0).each(function(e){var r=n.select(this);try{r.call(s.fill,e[0].trace.fillcolor)}catch(e){c.error(e,t),r.remove()}})};var g=t("./symbol_defs");v.symbolNames=[],v.symbolFuncs=[],v.symbolNeedLines={},v.symbolNoDot={},v.symbolNoFill={},v.symbolList=[],Object.keys(g).forEach(function(t){var e=g[t];v.symbolList=v.symbolList.concat([e.n,t,e.n+100,t+"-open"]),v.symbolNames[e.n]=t,v.symbolFuncs[e.n]=e.f,e.needLine&&(v.symbolNeedLines[e.n]=!0),e.noDot?v.symbolNoDot[e.n]=!0:v.symbolList=v.symbolList.concat([e.n+200,t+"-dot",e.n+300,t+"-open-dot"]),e.noFill&&(v.symbolNoFill[e.n]=!0)});var y=v.symbolNames.length,b="M0,0.5L0.5,0L0,-0.5L-0.5,0Z";function x(t,e){var r=t%100;return v.symbolFuncs[r](e)+(t>=200?b:"")}v.symbolNumber=function(t){if("string"==typeof t){var e=0;t.indexOf("-open")>0&&(e=100,t=t.replace("-open","")),t.indexOf("-dot")>0&&(e+=200,t=t.replace("-dot","")),(t=v.symbolNames.indexOf(t))>=0&&(t+=e)}return t%100>=y||t>=400?0:Math.floor(Math.max(t,0))};var _={x1:1,x2:0,y1:0,y2:0},w={x1:0,x2:0,y1:1,y2:0};v.gradient=function(t,e,r,i,o,l){var u=e._fullLayout._defs.select(".gradients").selectAll("#"+r).data([i+o+l],c.identity);u.exit().remove(),u.enter().append("radial"===i?"radialGradient":"linearGradient").each(function(){var t=n.select(this);"horizontal"===i?t.attr(_):"vertical"===i&&t.attr(w),t.attr("id",r);var e=a(o),c=a(l);t.append("stop").attr({offset:"0%","stop-color":s.tinyRGB(c),"stop-opacity":c.getAlpha()}),t.append("stop").attr({offset:"100%","stop-color":s.tinyRGB(e),"stop-opacity":e.getAlpha()})}),t.style({fill:"url(#"+r+")","fill-opacity":null})},v.initGradients=function(t){var e=t._fullLayout._defs.selectAll(".gradients").data([0]);e.enter().append("g").classed("gradients",!0),e.selectAll("linearGradient,radialGradient").remove()},v.singlePointStyle=function(t,e,r,n,i,a){var l=r.marker;!function(t,e,r,n,i,a,l,c){if(o.traceIs(r,"symbols")){var u=m(r);e.attr("d",function(t){var e;e="various"===t.ms||"various"===a.size?3:p.isBubble(r)?u(t.ms):(a.size||6)/2,t.mrc=e;var n=v.symbolNumber(t.mx||a.symbol)||0;return t.om=n%200>=100,x(n,e)})}e.style("opacity",function(t){return(t.mo+1||a.opacity+1)-1});var f,h,d,g=!1;if(t.so?(d=l.outlierwidth,h=l.outliercolor,f=a.outliercolor):(d=(t.mlw+1||l.width+1||(t.trace?t.trace.marker.line.width:0)+1)-1,h="mlc"in t?t.mlcc=i(t.mlc):Array.isArray(l.color)?s.defaultLine:l.color,Array.isArray(a.color)&&(f=s.defaultLine,g=!0),f="mc"in t?t.mcc=n(t.mc):a.color||"rgba(0,0,0,0)"),t.om)e.call(s.stroke,f).style({"stroke-width":(d||1)+"px",fill:"none"});else{e.style("stroke-width",d+"px");var y=a.gradient,b=t.mgt;if(b?g=!0:b=y&&y.type,b&&"none"!==b){var _=t.mgc;_?g=!0:_=y.color;var w="g"+c._fullLayout._uid+"-"+r.uid;g&&(w+="-"+t.i),e.call(v.gradient,c,w,b,f,_)}else e.call(s.fill,f);d&&e.call(s.stroke,h)}}(t,e,r,n,i,l,l.line,a)},v.pointStyle=function(t,e,r){if(t.size()){var i=e.marker,a=v.tryColorscale(i,""),o=v.tryColorscale(i,"line");t.each(function(t){v.singlePointStyle(t,n.select(this),e,a,o,r)})}},v.selectedPointStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=e.selected||{},i=e.unselected||{},a=e.marker||{},l=r.marker||{},c=i.marker||{},u=a.opacity,f=l.opacity,h=c.opacity,p=void 0!==f,m=void 0!==h;t.each(function(t){var e,r=n.select(this),i=t.mo,a=void 0!==i;(a||p||m)&&(t.selected?p&&(e=f):e=m?h:d*(a?i:u)),void 0!==e&&r.style("opacity",e)});var g=l.color,y=c.color;(g||y)&&t.each(function(t){var e,r=n.select(this);t.selected?g&&(e=g):y&&(e=y),e&&s.fill(r,e)});var b=l.size,_=c.size,w=void 0!==b,M=void 0!==_;o.traceIs(e,"symbols")&&(w||M)&&t.each(function(t){var e,r=n.select(this),i=t.mrc,o=t.mx||a.symbol||0;e=t.selected?w?b/2:i:M?_/2:i,r.attr("d",x(v.symbolNumber(o),e)),t.mrc2=e})}},v.tryColorscale=function(t,e){var r=e?c.nestedProperty(t,e).get():t,n=r.colorscale,i=r.color;return n&&Array.isArray(i)?l.makeColorScaleFunc(l.extractScale(n,r.cmin,r.cmax)):c.identity};var M={start:1,end:-1,middle:0,bottom:1,top:-1};function k(t,e,r,i){var a=n.select(t.node().parentNode),o=-1!==e.indexOf("top")?"top":-1!==e.indexOf("bottom")?"bottom":"middle",s=-1!==e.indexOf("left")?"end":-1!==e.indexOf("right")?"start":"middle",l=i?i/.8+1:0,c=(u.lineCount(t)-1)*h+1,f=M[s]*l,d=.75*r+M[o]*l+(M[o]-1)*c*r/2;t.attr("text-anchor",s),a.attr("transform","translate("+f+","+d+")")}function A(t,e){var r=t.ts||e.textfont.size;return i(r)&&r>0?r:0}v.textPointStyle=function(t,e,r){t.each(function(t){var i=n.select(this),a=c.extractOption(t,e,"tx","text");if(a){var o=t.tp||e.textposition,s=A(t,e);i.call(v.font,t.tf||e.textfont.family,s,t.tc||e.textfont.color).text(a).call(u.convertToTspans,r).call(k,o,s,t.mrc)}else i.remove()})},v.selectedTextStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=e.selected||{},i=e.unselected||{};t.each(function(t){var a,o=n.select(this),l=t.tc||e.textfont.color,c=t.tp||e.textposition,u=A(t,e),f=(r.textfont||{}).color,h=(i.textfont||{}).color;t.selected?f&&(a=f):h?a=h:f||(a=s.addOpacity(l,d)),a&&s.fill(o,a),k(o,c,u,t.mrc2||t.mrc)})}};var T=.5;function E(t,e,r,i){var a=t[0]-e[0],o=t[1]-e[1],s=r[0]-e[0],l=r[1]-e[1],c=Math.pow(a*a+o*o,T/2),u=Math.pow(s*s+l*l,T/2),f=(u*u*a-c*c*s)*i,h=(u*u*o-c*c*l)*i,d=3*u*(c+u),p=3*c*(c+u);return[[n.round(e[0]+(d&&f/d),2),n.round(e[1]+(d&&h/d),2)],[n.round(e[0]-(p&&f/p),2),n.round(e[1]-(p&&h/p),2)]]}v.smoothopen=function(t,e){if(t.length<3)return"M"+t.join("L");var r,n="M"+t[0],i=[];for(r=1;r=1e4&&(v.savedBBoxes={},C=0),r&&(v.savedBBoxes[r]=g),C++,c.extendFlat({},g)},v.setClipUrl=function(t,e){if(e){var r="#"+e,i=n.select("base");i.size()&&i.attr("href")&&(r=window.location.href.split("#")[0]+r),t.attr("clip-path","url("+r+")")}else t.attr("clip-path",null)},v.getTranslate=function(t){var e=(t[t.attr?"attr":"getAttribute"]("transform")||"").replace(/.*\btranslate\((-?\d*\.?\d*)[^-\d]*(-?\d*\.?\d*)[^\d].*/,function(t,e,r){return[e,r].join(" ")}).split(" ");return{x:+e[0]||0,y:+e[1]||0}},v.setTranslate=function(t,e,r){var n=t.attr?"attr":"getAttribute",i=t.attr?"attr":"setAttribute",a=t[n]("transform")||"";return e=e||0,r=r||0,a=a.replace(/(\btranslate\(.*?\);?)/,"").trim(),a=(a+=" translate("+e+", "+r+")").trim(),t[i]("transform",a),a},v.getScale=function(t){var e=(t[t.attr?"attr":"getAttribute"]("transform")||"").replace(/.*\bscale\((\d*\.?\d*)[^\d]*(\d*\.?\d*)[^\d].*/,function(t,e,r){return[e,r].join(" ")}).split(" ");return{x:+e[0]||1,y:+e[1]||1}},v.setScale=function(t,e,r){var n=t.attr?"attr":"getAttribute",i=t.attr?"attr":"setAttribute",a=t[n]("transform")||"";return e=e||1,r=r||1,a=a.replace(/(\bscale\(.*?\);?)/,"").trim(),a=(a+=" scale("+e+", "+r+")").trim(),t[i]("transform",a),a},v.setPointGroupScale=function(t,e,r){var n,i,a;return e=e||1,r=r||1,i=1===e&&1===r?"":" scale("+e+","+r+")",a=/\s*sc.*/,t.each(function(){n=(this.getAttribute("transform")||"").replace(a,""),n=(n+=i).trim(),this.setAttribute("transform",n)}),i};var z=/translate\([^)]*\)\s*$/;v.setTextPointsScale=function(t,e,r){t.each(function(){var t,i=n.select(this),a=i.select("text");if(a.node()){var o=parseFloat(a.attr("x")||0),s=parseFloat(a.attr("y")||0),l=(i.attr("transform")||"").match(z);t=1===e&&1===r?[]:["translate("+o+","+s+")","scale("+e+","+r+")","translate("+-o+","+-s+")"],l&&t.push(l),i.attr("transform",t.join(" "))}})}},{"../../constants/alignment":696,"../../constants/interactions":701,"../../constants/xmlns_namespaces":704,"../../lib":724,"../../lib/svg_text_utils":747,"../../registry":854,"../../traces/scatter/make_bubble_size_func":1065,"../../traces/scatter/subtypes":1070,"../color":598,"../colorscale":613,"./symbol_defs":624,d3:128,"fast-isnumeric":140,tinycolor2:526}],624:[function(t,e,r){"use strict";var n=t("d3");e.exports={circle:{n:0,f:function(t){var e=n.round(t,2);return"M"+e+",0A"+e+","+e+" 0 1,1 0,-"+e+"A"+e+","+e+" 0 0,1 "+e+",0Z"}},square:{n:1,f:function(t){var e=n.round(t,2);return"M"+e+","+e+"H-"+e+"V-"+e+"H"+e+"Z"}},diamond:{n:2,f:function(t){var e=n.round(1.3*t,2);return"M"+e+",0L0,"+e+"L-"+e+",0L0,-"+e+"Z"}},cross:{n:3,f:function(t){var e=n.round(.4*t,2),r=n.round(1.2*t,2);return"M"+r+","+e+"H"+e+"V"+r+"H-"+e+"V"+e+"H-"+r+"V-"+e+"H-"+e+"V-"+r+"H"+e+"V-"+e+"H"+r+"Z"}},x:{n:4,f:function(t){var e=n.round(.8*t/Math.sqrt(2),2),r="l"+e+","+e,i="l"+e+",-"+e,a="l-"+e+",-"+e,o="l-"+e+","+e;return"M0,"+e+r+i+a+i+a+o+a+o+r+o+r+"Z"}},"triangle-up":{n:5,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return"M-"+e+","+n.round(t/2,2)+"H"+e+"L0,-"+n.round(t,2)+"Z"}},"triangle-down":{n:6,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return"M-"+e+",-"+n.round(t/2,2)+"H"+e+"L0,"+n.round(t,2)+"Z"}},"triangle-left":{n:7,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return"M"+n.round(t/2,2)+",-"+e+"V"+e+"L-"+n.round(t,2)+",0Z"}},"triangle-right":{n:8,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return"M-"+n.round(t/2,2)+",-"+e+"V"+e+"L"+n.round(t,2)+",0Z"}},"triangle-ne":{n:9,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return"M-"+r+",-"+e+"H"+e+"V"+r+"Z"}},"triangle-se":{n:10,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return"M"+e+",-"+r+"V"+e+"H-"+r+"Z"}},"triangle-sw":{n:11,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return"M"+r+","+e+"H-"+e+"V-"+r+"Z"}},"triangle-nw":{n:12,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return"M-"+e+","+r+"V-"+e+"H"+r+"Z"}},pentagon:{n:13,f:function(t){var e=n.round(.951*t,2),r=n.round(.588*t,2),i=n.round(-t,2),a=n.round(-.309*t,2);return"M"+e+","+a+"L"+r+","+n.round(.809*t,2)+"H-"+r+"L-"+e+","+a+"L0,"+i+"Z"}},hexagon:{n:14,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return"M"+i+",-"+r+"V"+r+"L0,"+e+"L-"+i+","+r+"V-"+r+"L0,-"+e+"Z"}},hexagon2:{n:15,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return"M-"+r+","+i+"H"+r+"L"+e+",0L"+r+",-"+i+"H-"+r+"L-"+e+",0Z"}},octagon:{n:16,f:function(t){var e=n.round(.924*t,2),r=n.round(.383*t,2);return"M-"+r+",-"+e+"H"+r+"L"+e+",-"+r+"V"+r+"L"+r+","+e+"H-"+r+"L-"+e+","+r+"V-"+r+"Z"}},star:{n:17,f:function(t){var e=1.4*t,r=n.round(.225*e,2),i=n.round(.951*e,2),a=n.round(.363*e,2),o=n.round(.588*e,2),s=n.round(-e,2),l=n.round(-.309*e,2),c=n.round(.118*e,2),u=n.round(.809*e,2);return"M"+r+","+l+"H"+i+"L"+a+","+c+"L"+o+","+u+"L0,"+n.round(.382*e,2)+"L-"+o+","+u+"L-"+a+","+c+"L-"+i+","+l+"H-"+r+"L0,"+s+"Z"}},hexagram:{n:18,f:function(t){var e=n.round(.66*t,2),r=n.round(.38*t,2),i=n.round(.76*t,2);return"M-"+i+",0l-"+r+",-"+e+"h"+i+"l"+r+",-"+e+"l"+r+","+e+"h"+i+"l-"+r+","+e+"l"+r+","+e+"h-"+i+"l-"+r+","+e+"l-"+r+",-"+e+"h-"+i+"Z"}},"star-triangle-up":{n:19,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o="A "+a+","+a+" 0 0 1 ";return"M-"+e+","+r+o+e+","+r+o+"0,-"+i+o+"-"+e+","+r+"Z"}},"star-triangle-down":{n:20,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o="A "+a+","+a+" 0 0 1 ";return"M"+e+",-"+r+o+"-"+e+",-"+r+o+"0,"+i+o+e+",-"+r+"Z"}},"star-square":{n:21,f:function(t){var e=n.round(1.1*t,2),r=n.round(2*t,2),i="A "+r+","+r+" 0 0 1 ";return"M-"+e+",-"+e+i+"-"+e+","+e+i+e+","+e+i+e+",-"+e+i+"-"+e+",-"+e+"Z"}},"star-diamond":{n:22,f:function(t){var e=n.round(1.4*t,2),r=n.round(1.9*t,2),i="A "+r+","+r+" 0 0 1 ";return"M-"+e+",0"+i+"0,"+e+i+e+",0"+i+"0,-"+e+i+"-"+e+",0Z"}},"diamond-tall":{n:23,f:function(t){var e=n.round(.7*t,2),r=n.round(1.4*t,2);return"M0,"+r+"L"+e+",0L0,-"+r+"L-"+e+",0Z"}},"diamond-wide":{n:24,f:function(t){var e=n.round(1.4*t,2),r=n.round(.7*t,2);return"M0,"+r+"L"+e+",0L0,-"+r+"L-"+e+",0Z"}},hourglass:{n:25,f:function(t){var e=n.round(t,2);return"M"+e+","+e+"H-"+e+"L"+e+",-"+e+"H-"+e+"Z"},noDot:!0},bowtie:{n:26,f:function(t){var e=n.round(t,2);return"M"+e+","+e+"V-"+e+"L-"+e+","+e+"V-"+e+"Z"},noDot:!0},"circle-cross":{n:27,f:function(t){var e=n.round(t,2);return"M0,"+e+"V-"+e+"M"+e+",0H-"+e+"M"+e+",0A"+e+","+e+" 0 1,1 0,-"+e+"A"+e+","+e+" 0 0,1 "+e+",0Z"},needLine:!0,noDot:!0},"circle-x":{n:28,f:function(t){var e=n.round(t,2),r=n.round(t/Math.sqrt(2),2);return"M"+r+","+r+"L-"+r+",-"+r+"M"+r+",-"+r+"L-"+r+","+r+"M"+e+",0A"+e+","+e+" 0 1,1 0,-"+e+"A"+e+","+e+" 0 0,1 "+e+",0Z"},needLine:!0,noDot:!0},"square-cross":{n:29,f:function(t){var e=n.round(t,2);return"M0,"+e+"V-"+e+"M"+e+",0H-"+e+"M"+e+","+e+"H-"+e+"V-"+e+"H"+e+"Z"},needLine:!0,noDot:!0},"square-x":{n:30,f:function(t){var e=n.round(t,2);return"M"+e+","+e+"L-"+e+",-"+e+"M"+e+",-"+e+"L-"+e+","+e+"M"+e+","+e+"H-"+e+"V-"+e+"H"+e+"Z"},needLine:!0,noDot:!0},"diamond-cross":{n:31,f:function(t){var e=n.round(1.3*t,2);return"M"+e+",0L0,"+e+"L-"+e+",0L0,-"+e+"ZM0,-"+e+"V"+e+"M-"+e+",0H"+e},needLine:!0,noDot:!0},"diamond-x":{n:32,f:function(t){var e=n.round(1.3*t,2),r=n.round(.65*t,2);return"M"+e+",0L0,"+e+"L-"+e+",0L0,-"+e+"ZM-"+r+",-"+r+"L"+r+","+r+"M-"+r+","+r+"L"+r+",-"+r},needLine:!0,noDot:!0},"cross-thin":{n:33,f:function(t){var e=n.round(1.4*t,2);return"M0,"+e+"V-"+e+"M"+e+",0H-"+e},needLine:!0,noDot:!0,noFill:!0},"x-thin":{n:34,f:function(t){var e=n.round(t,2);return"M"+e+","+e+"L-"+e+",-"+e+"M"+e+",-"+e+"L-"+e+","+e},needLine:!0,noDot:!0,noFill:!0},asterisk:{n:35,f:function(t){var e=n.round(1.2*t,2),r=n.round(.85*t,2);return"M0,"+e+"V-"+e+"M"+e+",0H-"+e+"M"+r+","+r+"L-"+r+",-"+r+"M"+r+",-"+r+"L-"+r+","+r},needLine:!0,noDot:!0,noFill:!0},hash:{n:36,f:function(t){var e=n.round(t/2,2),r=n.round(t,2);return"M"+e+","+r+"V-"+r+"m-"+r+",0V"+r+"M"+r+","+e+"H-"+r+"m0,-"+r+"H"+r},needLine:!0,noFill:!0},"y-up":{n:37,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return"M-"+e+","+i+"L0,0M"+e+","+i+"L0,0M0,-"+r+"L0,0"},needLine:!0,noDot:!0,noFill:!0},"y-down":{n:38,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return"M-"+e+",-"+i+"L0,0M"+e+",-"+i+"L0,0M0,"+r+"L0,0"},needLine:!0,noDot:!0,noFill:!0},"y-left":{n:39,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return"M"+i+","+e+"L0,0M"+i+",-"+e+"L0,0M-"+r+",0L0,0"},needLine:!0,noDot:!0,noFill:!0},"y-right":{n:40,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return"M-"+i+","+e+"L0,0M-"+i+",-"+e+"L0,0M"+r+",0L0,0"},needLine:!0,noDot:!0,noFill:!0},"line-ew":{n:41,f:function(t){var e=n.round(1.4*t,2);return"M"+e+",0H-"+e},needLine:!0,noDot:!0,noFill:!0},"line-ns":{n:42,f:function(t){var e=n.round(1.4*t,2);return"M0,"+e+"V-"+e},needLine:!0,noDot:!0,noFill:!0},"line-ne":{n:43,f:function(t){var e=n.round(t,2);return"M"+e+",-"+e+"L-"+e+","+e},needLine:!0,noDot:!0,noFill:!0},"line-nw":{n:44,f:function(t){var e=n.round(t,2);return"M"+e+","+e+"L-"+e+",-"+e},needLine:!0,noDot:!0,noFill:!0}}},{d3:128}],625:[function(t,e,r){"use strict";e.exports={visible:{valType:"boolean",editType:"calc"},type:{valType:"enumerated",values:["percent","constant","sqrt","data"],editType:"calc"},symmetric:{valType:"boolean",editType:"calc"},array:{valType:"data_array",editType:"calc"},arrayminus:{valType:"data_array",editType:"calc"},value:{valType:"number",min:0,dflt:10,editType:"calc"},valueminus:{valType:"number",min:0,dflt:10,editType:"calc"},traceref:{valType:"integer",min:0,dflt:0,editType:"style"},tracerefminus:{valType:"integer",min:0,dflt:0,editType:"style"},copy_ystyle:{valType:"boolean",editType:"plot"},copy_zstyle:{valType:"boolean",editType:"style"},color:{valType:"color",editType:"style"},thickness:{valType:"number",min:0,dflt:2,editType:"style"},width:{valType:"number",min:0,editType:"plot"},editType:"calc",_deprecated:{opacity:{valType:"number",editType:"style"}}}},{}],626:[function(t,e,r){"use strict";var n=t("fast-isnumeric"),i=t("../../registry"),a=t("../../plots/cartesian/axes"),o=t("./compute_error");function s(t,e,r,i){var s=e["error_"+i]||{},l=[];if(s.visible&&-1!==["linear","log"].indexOf(r.type)){for(var c=o(s),u=0;u0;t.each(function(t){var u,f=t[0].trace,h=f.error_x||{},d=f.error_y||{};f.ids&&(u=function(t){return t.id});var p=o.hasMarkers(f)&&f.marker.maxdisplayed>0;d.visible||h.visible||(t=[]);var m=n.select(this).selectAll("g.errorbar").data(t,u);if(m.exit().remove(),t.length){h.visible||m.selectAll("path.xerror").remove(),d.visible||m.selectAll("path.yerror").remove(),m.style("opacity",1);var v=m.enter().append("g").classed("errorbar",!0);c&&v.style("opacity",0).transition().duration(r.duration).style("opacity",1),a.setClipUrl(m,e.layerClipId),m.each(function(t){var e=n.select(this),a=function(t,e,r){var n={x:e.c2p(t.x),y:r.c2p(t.y)};void 0!==t.yh&&(n.yh=r.c2p(t.yh),n.ys=r.c2p(t.ys),i(n.ys)||(n.noYS=!0,n.ys=r.c2p(t.ys,!0)));void 0!==t.xh&&(n.xh=e.c2p(t.xh),n.xs=e.c2p(t.xs),i(n.xs)||(n.noXS=!0,n.xs=e.c2p(t.xs,!0)));return n}(t,s,l);if(!p||t.vis){var o;if(d.visible&&i(a.x)&&i(a.yh)&&i(a.ys)){var u=d.width;o="M"+(a.x-u)+","+a.yh+"h"+2*u+"m-"+u+",0V"+a.ys,a.noYS||(o+="m-"+u+",0h"+2*u);var f=e.select("path.yerror");!f.size()?f=e.append("path").style("vector-effect","non-scaling-stroke").classed("yerror",!0):c&&(f=f.transition().duration(r.duration).ease(r.easing)),f.attr("d",o)}if(h.visible&&i(a.y)&&i(a.xh)&&i(a.xs)){var m=(h.copy_ystyle?d:h).width;o="M"+a.xh+","+(a.y-m)+"v"+2*m+"m0,-"+m+"H"+a.xs,a.noXS||(o+="m0,-"+m+"v"+2*m);var v=e.select("path.xerror");!v.size()?v=e.append("path").style("vector-effect","non-scaling-stroke").classed("xerror",!0):c&&(v=v.transition().duration(r.duration).ease(r.easing)),v.attr("d",o)}}})}})}},{"../../traces/scatter/subtypes":1070,"../drawing":623,d3:128,"fast-isnumeric":140}],631:[function(t,e,r){"use strict";var n=t("d3"),i=t("../color");e.exports=function(t){t.each(function(t){var e=t[0].trace,r=e.error_y||{},a=e.error_x||{},o=n.select(this);o.selectAll("path.yerror").style("stroke-width",r.thickness+"px").call(i.stroke,r.color),a.copy_ystyle&&(a=r),o.selectAll("path.xerror").style("stroke-width",a.thickness+"px").call(i.stroke,a.color)})}},{"../color":598,d3:128}],632:[function(t,e,r){"use strict";var n=t("../../plots/font_attributes");e.exports={hoverlabel:{bgcolor:{valType:"color",arrayOk:!0,editType:"none"},bordercolor:{valType:"color",arrayOk:!0,editType:"none"},font:n({arrayOk:!0,editType:"none"}),namelength:{valType:"integer",min:-1,arrayOk:!0,editType:"none"},editType:"calc"}}},{"../../plots/font_attributes":797}],633:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("../../registry");function a(t,e,r,i){i=i||n.identity,Array.isArray(t)&&(e[0][r]=i(t))}e.exports=function(t){var e=t.calcdata,r=t._fullLayout;function o(t){return function(e){return n.coerceHoverinfo({hoverinfo:e},{_module:t._module},r)}}for(var s=0;s=0&&r.index-1&&i.length>v&&(i=v>3?i.substr(0,v-3)+"...":i.substr(0,v))}void 0!==t.extraText&&(a+=t.extraText),void 0!==t.zLabel?(void 0!==t.xLabel&&(a+="x: "+t.xLabel+"
"),void 0!==t.yLabel&&(a+="y: "+t.yLabel+"
"),a+=(a?"z: ":"")+t.zLabel):P&&t[o+"Label"]===A?a=t[("x"===o?"y":"x")+"Label"]||"":void 0===t.xLabel?void 0!==t.yLabel&&(a=t.yLabel):a=void 0===t.yLabel?t.xLabel:"("+t.xLabel+", "+t.yLabel+")",t.text&&!Array.isArray(t.text)&&(a+=(a?"
":"")+t.text),""===a&&(""===i&&e.remove(),a=i);var b=e.select("text.nums").call(u.font,t.fontFamily||m,t.fontSize||y,t.fontColor||p).text(a).attr("data-notex",1).call(l.positionText,0,0).call(l.convertToTspans,r),x=e.select("text.name"),_=0;i&&i!==a?(x.call(u.font,t.fontFamily||m,t.fontSize||y,d).text(i).attr("data-notex",1).call(l.positionText,0,0).call(l.convertToTspans,r),_=x.node().getBoundingClientRect().width+2*M):(x.remove(),e.select("rect").remove()),e.select("path").style({fill:d,stroke:p});var k,T,E=b.node().getBoundingClientRect(),z=t.xa._offset+(t.x0+t.x1)/2,O=t.ya._offset+(t.y0+t.y1)/2,D=Math.abs(t.x1-t.x0),I=Math.abs(t.y1-t.y0),R=E.width+w+M+_;t.ty0=S-E.top,t.bx=E.width+2*M,t.by=E.height+2*M,t.anchor="start",t.txwidth=E.width,t.tx2width=_,t.offset=0,s?(t.pos=z,k=O+I/2+R<=C,T=O-I/2-R>=0,"top"!==t.idealAlign&&k||!T?k?(O+=I/2,t.anchor="start"):t.anchor="middle":(O-=I/2,t.anchor="end")):(t.pos=O,k=z+D/2+R<=L,T=z-D/2-R>=0,"left"!==t.idealAlign&&k||!T?k?(z+=D/2,t.anchor="start"):t.anchor="middle":(z-=D/2,t.anchor="end")),b.attr("text-anchor",t.anchor),_&&x.attr("text-anchor",t.anchor),e.attr("transform","translate("+z+","+O+")"+(s?"rotate("+g+")":""))}),D}function A(t,e){t.each(function(t){var r=n.select(this);if(t.del)r.remove();else{var i="end"===t.anchor?-1:1,a=r.select("text.nums"),o={start:1,end:-1,middle:0}[t.anchor],s=o*(w+M),c=s+o*(t.txwidth+M),f=0,h=t.offset;"middle"===t.anchor&&(s-=t.tx2width/2,c-=t.tx2width/2),e&&(h*=-_,f=t.offset*x),r.select("path").attr("d","middle"===t.anchor?"M-"+t.bx/2+",-"+t.by/2+"h"+t.bx+"v"+t.by+"h-"+t.bx+"Z":"M0,0L"+(i*w+f)+","+(w+h)+"v"+(t.by/2-w)+"h"+i*t.bx+"v-"+t.by+"H"+(i*w+f)+"V"+(h-w)+"Z"),a.call(l.positionText,s+f,h+t.ty0-t.by/2+M),t.tx2width&&(r.select("text.name").call(l.positionText,c+o*M+f,h+t.ty0-t.by/2+M),r.select("rect").call(u.setRect,c+(o-1)*t.tx2width/2+f,h-t.by/2-1,t.tx2width,t.by+2))}})}function T(t,e){var r=t.index,n=t.trace||{},i=t.cd[0],a=t.cd[r]||{},s=Array.isArray(r)?function(t,e){return o.castOption(i,r,t)||o.extractOption({},n,"",e)}:function(t,e){return o.extractOption(a,n,t,e)};function l(e,r,n){var i=s(r,n);i&&(t[e]=i)}if(l("hoverinfo","hi","hoverinfo"),l("color","hbg","hoverlabel.bgcolor"),l("borderColor","hbc","hoverlabel.bordercolor"),l("fontFamily","htf","hoverlabel.font.family"),l("fontSize","hts","hoverlabel.font.size"),l("fontColor","htc","hoverlabel.font.color"),l("nameLength","hnl","hoverlabel.namelength"),t.posref="y"===e?(t.x0+t.x1)/2:(t.y0+t.y1)/2,t.x0=o.constrain(t.x0,0,t.xa._length),t.x1=o.constrain(t.x1,0,t.xa._length),t.y0=o.constrain(t.y0,0,t.ya._length),t.y1=o.constrain(t.y1,0,t.ya._length),void 0!==t.xLabelVal&&(t.xLabel="xLabel"in t?t.xLabel:d.hoverLabelText(t.xa,t.xLabelVal),t.xVal=t.xa.c2d(t.xLabelVal)),void 0!==t.yLabelVal&&(t.yLabel="yLabel"in t?t.yLabel:d.hoverLabelText(t.ya,t.yLabelVal),t.yVal=t.ya.c2d(t.yLabelVal)),void 0!==t.zLabelVal&&void 0===t.zLabel&&(t.zLabel=String(t.zLabelVal)),!(isNaN(t.xerr)||"log"===t.xa.type&&t.xerr<=0)){var c=d.tickText(t.xa,t.xa.c2l(t.xerr),"hover").text;void 0!==t.xerrneg?t.xLabel+=" +"+c+" / -"+d.tickText(t.xa,t.xa.c2l(t.xerrneg),"hover").text:t.xLabel+=" \xb1 "+c,"x"===e&&(t.distance+=1)}if(!(isNaN(t.yerr)||"log"===t.ya.type&&t.yerr<=0)){var u=d.tickText(t.ya,t.ya.c2l(t.yerr),"hover").text;void 0!==t.yerrneg?t.yLabel+=" +"+u+" / -"+d.tickText(t.ya,t.ya.c2l(t.yerrneg),"hover").text:t.yLabel+=" \xb1 "+u,"y"===e&&(t.distance+=1)}var f=t.hoverinfo||t.trace.hoverinfo;return"all"!==f&&(-1===(f=Array.isArray(f)?f:f.split("+")).indexOf("x")&&(t.xLabel=void 0),-1===f.indexOf("y")&&(t.yLabel=void 0),-1===f.indexOf("z")&&(t.zLabel=void 0),-1===f.indexOf("text")&&(t.text=void 0),-1===f.indexOf("name")&&(t.name=void 0)),t}function E(t,e){var r,n,i=e.container,o=e.fullLayout,s=e.event,l=!!t.hLinePoint,c=!!t.vLinePoint;if(i.selectAll(".spikeline").remove(),c||l){var h=f.combine(o.plot_bgcolor,o.paper_bgcolor);if(l){var d,p,m=t.hLinePoint;r=m&&m.xa,"cursor"===(n=m&&m.ya).spikesnap?(d=s.pointerX,p=s.pointerY):(d=r._offset+(m.x0+m.x1)/2,p=n._offset+(m.y0+m.y1)/2);var v,g,y=a.readability(m.color,h)<1.5?f.contrast(h):m.color,b=n.spikemode,x=n.spikethickness,_=n.spikecolor||y,w=n._boundingBox,M=(w.left+w.right)/2et.width||$<0||$>et.height)return h.unhoverRaw(t,e);e.pointerX=e.offsetX,e.pointerY=e.offsetY}if(D="xval"in e?m.flat(l,e.xval):m.p2c(_,Q),I="yval"in e?m.flat(l,e.yval):m.p2c(w,$),!i(D[0])||!i(I[0]))return o.warn("Fx.hover failed",e,t),h.unhoverRaw(t,e)}var rt=1/0;for(N=0;NY&&(Z.splice(0,Y),rt=Z[0].distance),u._has("cartesian")&&0!==X&&0===Z.length){G.distance=X,G.index=!1;var st=j._module.hoverPoints(G,q,H,"closest",u._hoverlayer);if(st){var lt,ct=st.filter(function(t){return t.xa.showspikes});if(ct.length){var ut=ct[0];i(ut.x0)&&i(ut.y0)&&(lt=pt(ut),(!K.vLinePoint||K.vLinePoint.distance>lt.distance)&&(K.vLinePoint=lt))}var ft=st.filter(function(t){return t.ya.showspikes});if(ft.length){var ht=ft[0];i(ht.x0)&&i(ht.y0)&&(lt=pt(ht),(!K.hLinePoint||K.hLinePoint.distance>lt.distance)&&(K.hLinePoint=lt))}}}}function dt(t,e){if(!t.length)return null;var r=t.map(function(t,e){var r=t.xa,n=t.ya,i=r.c2p(q),a=n.c2p(H),o=function(t){var e=t.kink,r=(t.x1+t.x0)/2-i,n=(t.y1+t.y0)/2-a;return Math.max(Math.sqrt(r*r+n*n)-e,1-3/e)}(t);return{distance:o,index:e}});return r=r.filter(function(t){return t.distance<=e}).sort(function(t,e){return t.distance-e.distance}),r.length?t[r[0].index]:null}function pt(t){return t?{xa:t.xa,ya:t.ya,x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1,distance:t.distance,curveNumber:t.trace.index,color:t.color,pointNumber:t.index}:null}var mt={fullLayout:u,container:u._hoverlayer,outerContainer:u._paperdiv,event:e},vt=t._spikepoints,gt={vLinePoint:K.vLinePoint,hLinePoint:K.hLinePoint};if(t._spikepoints=gt,u._has("cartesian")&&0!==X&&0!==Z.length){var yt=Z.filter(function(t){return t.ya.showspikes}),bt=dt(yt,X);K.hLinePoint=pt(bt);var xt=Z.filter(function(t){return t.xa.showspikes}),_t=dt(xt,X);K.vLinePoint=pt(_t)}if(0===Z.length){var wt=h.unhoverRaw(t,e);return!u._has("cartesian")||null===K.hLinePoint&&null===K.vLinePoint||S(vt)&&E(K,mt),wt}u._has("cartesian")&&S(vt)&&E(K,mt);Z.sort(function(t,e){return t.distance-e.distance});var Mt=t._hoverdata,kt=[];for(R=0;R1,Et=f.combine(u.plot_bgcolor||f.background,u.paper_bgcolor),St={hovermode:O,rotateLabels:Tt,bgColor:Et,container:u._hoverlayer,outerContainer:u._paperdiv,commonLabelOpts:u.hoverlabel,hoverdistance:u.hoverdistance},Lt=k(Z,St,t);if(function(t,e,r){var n,i,a,o,s,l,c,u=0,f=t.map(function(t,n){var i=t[e];return[{i:n,dp:0,pos:t.pos,posref:t.posref,size:t.by*("x"===i._id.charAt(0)?b:1)/2,pmin:0,pmax:"x"===i._id.charAt(0)?r.width:r.height}]}).sort(function(t,e){return t[0].posref-e[0].posref});function h(t){var e=t[0],r=t[t.length-1];if(i=e.pmin-e.pos-e.dp+e.size,a=r.pos+r.dp+r.size-e.pmax,i>.01){for(s=t.length-1;s>=0;s--)t[s].dp+=i;n=!1}if(!(a<.01)){if(i<-.01){for(s=t.length-1;s>=0;s--)t[s].dp-=a;n=!1}if(n){var c=0;for(o=0;oe.pmax&&c++;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos>e.pmax-1&&(l.del=!0,c--);for(o=0;o=0;s--)t[s].dp-=a;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos+l.dp+l.size>e.pmax&&(l.del=!0,c--)}}}for(;!n&&u<=t.length;){for(u++,n=!0,o=0;o.01&&m.pmin===v.pmin&&m.pmax===v.pmax){for(s=p.length-1;s>=0;s--)p[s].dp+=i;for(d.push.apply(d,p),f.splice(o+1,1),c=0,s=d.length-1;s>=0;s--)c+=d[s].dp;for(a=c/d.length,s=d.length-1;s>=0;s--)d[s].dp-=a;n=!1}else o++}f.forEach(h)}for(o=f.length-1;o>=0;o--){var g=f[o];for(s=g.length-1;s>=0;s--){var y=g[s],x=t[y.i];x.offset=y.dp,x.del=y.del}}}(Z,Tt?"xa":"ya",u),A(Lt,Tt),e.target&&e.target.tagName){var Ct=p.getComponentMethod("annotations","hasClickToShow")(t,kt);c(n.select(e.target),Ct?"pointer":"")}if(!e.target||a||!function(t,e,r){if(!r||r.length!==t._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=t._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber))return!0}return!1}(t,0,Mt))return;Mt&&t.emit("plotly_unhover",{event:e,points:Mt});t.emit("plotly_hover",{event:e,points:t._hoverdata,xaxes:_,yaxes:w,xvals:D,yvals:I})}(t,e,r,a)})},r.loneHover=function(t,e){var r={color:t.color||f.defaultLine,x0:t.x0||t.x||0,x1:t.x1||t.x||0,y0:t.y0||t.y||0,y1:t.y1||t.y||0,xLabel:t.xLabel,yLabel:t.yLabel,zLabel:t.zLabel,text:t.text,name:t.name,idealAlign:t.idealAlign,borderColor:t.borderColor,fontFamily:t.fontFamily,fontSize:t.fontSize,fontColor:t.fontColor,trace:{index:0,hoverinfo:""},xa:{_offset:0},ya:{_offset:0},index:0},i=n.select(e.container),a=e.outerContainer?n.select(e.outerContainer):i,o={hovermode:"closest",rotateLabels:!1,bgColor:e.bgColor||f.background,container:i,outerContainer:a,hoverdistance:v.MAXDIST},s=k([r],o,e.gd);return A(s,o.rotateLabels),s.node()}},{"../../lib":724,"../../lib/events":712,"../../lib/override_cursor":735,"../../lib/svg_text_utils":747,"../../plots/cartesian/axes":770,"../../registry":854,"../color":598,"../dragelement":620,"../drawing":623,"./constants":635,"./helpers":637,d3:128,"fast-isnumeric":140,tinycolor2:526}],639:[function(t,e,r){"use strict";var n=t("../../lib");e.exports=function(t,e,r,i){r("hoverlabel.bgcolor",(i=i||{}).bgcolor),r("hoverlabel.bordercolor",i.bordercolor),r("hoverlabel.namelength",i.namelength),n.coerceFont(r,"hoverlabel.font",i.font)}},{"../../lib":724}],640:[function(t,e,r){"use strict";var n=t("d3"),i=t("../../lib"),a=t("../dragelement"),o=t("./helpers"),s=t("./layout_attributes");e.exports={moduleType:"component",name:"fx",constants:t("./constants"),schema:{layout:s},attributes:t("./attributes"),layoutAttributes:s,supplyLayoutGlobalDefaults:t("./layout_global_defaults"),supplyDefaults:t("./defaults"),supplyLayoutDefaults:t("./layout_defaults"),calc:t("./calc"),getDistanceFunction:o.getDistanceFunction,getClosest:o.getClosest,inbox:o.inbox,quadrature:o.quadrature,appendArrayPointValue:o.appendArrayPointValue,castHoverOption:function(t,e,r){return i.castOption(t,e,"hoverlabel."+r)},castHoverinfo:function(t,e,r){return i.castOption(t,r,"hoverinfo",function(r){return i.coerceHoverinfo({hoverinfo:r},{_module:t._module},e)})},hover:t("./hover").hover,unhover:a.unhover,loneHover:t("./hover").loneHover,loneUnhover:function(t){var e=i.isD3Selection(t)?t:n.select(t);e.selectAll("g.hovertext").remove(),e.selectAll(".spikeline").remove()},click:t("./click")}},{"../../lib":724,"../dragelement":620,"./attributes":632,"./calc":633,"./click":634,"./constants":635,"./defaults":636,"./helpers":637,"./hover":638,"./layout_attributes":641,"./layout_defaults":642,"./layout_global_defaults":643,d3:128}],641:[function(t,e,r){"use strict";var n=t("./constants"),i=t("../../plots/font_attributes")({editType:"none"});i.family.dflt=n.HOVERFONT,i.size.dflt=n.HOVERFONTSIZE,e.exports={dragmode:{valType:"enumerated",values:["zoom","pan","select","lasso","orbit","turntable"],dflt:"zoom",editType:"modebar"},hovermode:{valType:"enumerated",values:["x","y","closest",!1],editType:"modebar"},hoverdistance:{valType:"integer",min:-1,dflt:20,editType:"none"},spikedistance:{valType:"integer",min:-1,dflt:20,editType:"none"},hoverlabel:{bgcolor:{valType:"color",editType:"none"},bordercolor:{valType:"color",editType:"none"},font:i,namelength:{valType:"integer",min:-1,dflt:15,editType:"none"},editType:"none"}}},{"../../plots/font_attributes":797,"./constants":635}],642:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("./layout_attributes");e.exports=function(t,e,r){function a(r,a){return n.coerce(t,e,i,r,a)}var o;a("dragmode"),e._has("cartesian")?(e._isHoriz=function(t){for(var e=!0,r=0;r=2/3},r.isCenterAnchor=function(t){return"center"===t.xanchor||"auto"===t.xanchor&&t.x>1/3&&t.x<2/3},r.isBottomAnchor=function(t){return"bottom"===t.yanchor||"auto"===t.yanchor&&t.y<=1/3},r.isMiddleAnchor=function(t){return"middle"===t.yanchor||"auto"===t.yanchor&&t.y>1/3&&t.y<2/3}},{}],650:[function(t,e,r){"use strict";var n=t("../../plots/font_attributes"),i=t("../color/attributes");e.exports={bgcolor:{valType:"color",editType:"legend"},bordercolor:{valType:"color",dflt:i.defaultLine,editType:"legend"},borderwidth:{valType:"number",min:0,dflt:0,editType:"legend"},font:n({editType:"legend"}),orientation:{valType:"enumerated",values:["v","h"],dflt:"v",editType:"legend"},traceorder:{valType:"flaglist",flags:["reversed","grouped"],extras:["normal"],editType:"legend"},tracegroupgap:{valType:"number",min:0,dflt:10,editType:"legend"},x:{valType:"number",min:-2,max:3,dflt:1.02,editType:"legend"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left",editType:"legend"},y:{valType:"number",min:-2,max:3,dflt:1,editType:"legend"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"auto",editType:"legend"},editType:"legend"}},{"../../plots/font_attributes":797,"../color/attributes":597}],651:[function(t,e,r){"use strict";e.exports={scrollBarWidth:4,scrollBarHeight:20,scrollBarColor:"#808BA4",scrollBarMargin:4}},{}],652:[function(t,e,r){"use strict";var n=t("../../registry"),i=t("../../lib"),a=t("./attributes"),o=t("../../plots/layout_attributes"),s=t("./helpers");e.exports=function(t,e,r){for(var l,c,u,f,h=t.legend||{},d={},p=0,m="normal",v=0;v1)){if(e.legend=d,y("bgcolor",e.paper_bgcolor),y("bordercolor"),y("borderwidth"),i.coerceFont(y,"font",e.font),y("orientation"),"h"===d.orientation){var b=t.xaxis;b&&b.rangeslider&&b.rangeslider.visible?(l=0,u="left",c=1.1,f="bottom"):(l=0,u="left",c=-.1,f="top")}y("traceorder",m),s.isGrouped(e.legend)&&y("tracegroupgap"),y("x",l),y("xanchor",u),y("y",c),y("yanchor",f),i.noneOrAll(h,d,["x","y"])}}},{"../../lib":724,"../../plots/layout_attributes":824,"../../registry":854,"./attributes":650,"./helpers":656}],653:[function(t,e,r){"use strict";var n=t("d3"),i=t("../../plotly"),a=t("../../lib"),o=t("../../plots/plots"),s=t("../../registry"),l=t("../dragelement"),c=t("../drawing"),u=t("../color"),f=t("../../lib/svg_text_utils"),h=t("./handle_click"),d=t("./constants"),p=t("../../constants/interactions"),m=t("../../constants/alignment"),v=m.LINE_SPACING,g=m.FROM_TL,y=m.FROM_BR,b=t("./get_legend_data"),x=t("./style"),_=t("./helpers"),w=t("./anchor_utils"),M=p.DBLCLICKDELAY;function k(t,e){var r=t.data()[0][0],n=e._fullLayout,o=r.trace,l=s.traceIs(o,"pie"),u=o.index,h=l?r.label:o.name,d=t.selectAll("text.legendtext").data([0]);function p(r){f.convertToTspans(r,e,function(){!function(t,e){var r=t.data()[0][0];if(!r.trace.showlegend)return void t.remove();var n,i,a=t.select("g[class*=math-group]"),o=a.node(),s=e._fullLayout.legend.font.size*v;if(o){var l=c.bBox(o);n=l.height,i=l.width,c.setTranslate(a,0,n/4)}else{var u=t.select(".legendtext"),h=f.lineCount(u),d=u.node();n=s*h,i=d?c.bBox(d).width:0;var p=s*(.3+(1-h)/2);f.positionText(u,40,p)}n=Math.max(n,16)+3,r.height=n,r.width=i}(t,e)})}d.enter().append("text").classed("legendtext",!0),d.attr("text-anchor","start").classed("user-select-none",!0).call(c.font,n.legend.font).text(h),e._context.edits.legendText&&!l?d.call(f.makeEditable,{gd:e}).call(p).on("edit",function(t){this.text(t).call(p);var n,o=t;this.text()||(t=" ");var l=r.trace._fullInput||{},c={};if(-1!==["ohlc","candlestick"].indexOf(l.type))c[(n=r.trace.transforms)[n.length-1].direction+".name"]=t;else if(s.hasTransform(l,"groupby")){var f=s.getTransformIndices(l,"groupby"),h=f[f.length-1],d=a.keyedContainer(l,"transforms["+h+"].styles","target","value.name");""===o?d.remove(r.trace._group):d.set(r.trace._group,t),c=d.constructUpdate()}else c.name=t;return i.restyle(e,c,u)}):d.call(p)}function A(t,e){var r,n=1,i=t.selectAll("rect").data([0]);i.enter().append("rect").classed("legendtoggle",!0).style("cursor","pointer").attr("pointer-events","all").call(u.fill,"rgba(0,0,0,0)"),i.on("mousedown",function(){(r=(new Date).getTime())-e._legendMouseDownTimeM&&(n=Math.max(n-1,1)),1===n?r._clickTimeout=setTimeout(function(){h(t,e,n)},M):2===n&&(r._clickTimeout&&clearTimeout(r._clickTimeout),e._legendMouseDownTime=0,h(t,e,n))}})}function T(t,e,r){var i=t._fullLayout,a=i.legend,o=a.borderwidth,s=_.isGrouped(a),l=0;if(a._width=0,a._height=0,_.isVertical(a))s&&e.each(function(t,e){c.setTranslate(this,0,e*a.tracegroupgap)}),r.each(function(t){var e=t[0],r=e.height,n=e.width;c.setTranslate(this,o,5+o+a._height+r/2),a._height+=r,a._width=Math.max(a._width,n)}),a._width+=45+2*o,a._height+=10+2*o,s&&(a._height+=(a._lgroupsLength-1)*a.tracegroupgap),l=40;else if(s){for(var u=[a._width],f=e.data(),h=0,d=f.length;ho+w-M,r.each(function(t){var e=t[0],r=v?40+t[0].width:b;o+x+M+r>i.width-(i.margin.r+i.margin.l)&&(x=0,g+=y,a._height=a._height+y,y=0),c.setTranslate(this,o+x,5+o+e.height/2+g),a._width+=M+r,a._height=Math.max(a._height,e.height),x+=M+r,y=Math.max(e.height,y)}),a._width+=2*o,a._height+=10+2*o}a._width=Math.ceil(a._width),a._height=Math.ceil(a._height),r.each(function(e){var r=e[0];n.select(this).select(".legendtoggle").call(c.setRect,0,-r.height/2,(t._context.edits.legendText?0:a._width)+l,r.height)})}function E(t){var e=t._fullLayout.legend,r="left";w.isRightAnchor(e)?r="right":w.isCenterAnchor(e)&&(r="center");var n="top";w.isBottomAnchor(e)?n="bottom":w.isMiddleAnchor(e)&&(n="middle"),o.autoMargin(t,"legend",{x:e.x,y:e.y,l:e._width*g[r],r:e._width*y[r],b:e._height*y[n],t:e._height*g[n]})}e.exports=function(t){var e=t._fullLayout,r="legend"+e._uid;if(e._infolayer&&t.calcdata){t._legendMouseDownTime||(t._legendMouseDownTime=0);var f=e.legend,p=e.showlegend&&b(t.calcdata,f),m=e.hiddenlabels||[];if(!e.showlegend||!p.length)return e._infolayer.selectAll(".legend").remove(),e._topdefs.select("#"+r).remove(),void o.autoMargin(t,"legend");var v=e._infolayer.selectAll("g.legend").data([0]);v.enter().append("g").attr({class:"legend","pointer-events":"all"});var _=e._topdefs.selectAll("#"+r).data([0]);_.enter().append("clipPath").attr("id",r).append("rect");var S=v.selectAll("rect.bg").data([0]);S.enter().append("rect").attr({class:"bg","shape-rendering":"crispEdges"}),S.call(u.stroke,f.bordercolor),S.call(u.fill,f.bgcolor),S.style("stroke-width",f.borderwidth+"px");var L=v.selectAll("g.scrollbox").data([0]);L.enter().append("g").attr("class","scrollbox");var C=v.selectAll("rect.scrollbar").data([0]);C.enter().append("rect").attr({class:"scrollbar",rx:20,ry:2,width:0,height:0}).call(u.fill,"#808BA4");var P=L.selectAll("g.groups").data(p);P.enter().append("g").attr("class","groups"),P.exit().remove();var z=P.selectAll("g.traces").data(a.identity);z.enter().append("g").attr("class","traces"),z.exit().remove(),z.call(x,t).style("opacity",function(t){var e=t[0].trace;return s.traceIs(e,"pie")?-1!==m.indexOf(t[0].label)?.5:1:"legendonly"===e.visible?.5:1}).each(function(){n.select(this).call(k,t).call(A,t)});var O=0!==v.enter().size();O&&(T(t,P,z),E(t));var D=e.width,I=e.height;T(t,P,z),f._height>I?function(t){var e=t._fullLayout.legend,r="left";w.isRightAnchor(e)?r="right":w.isCenterAnchor(e)&&(r="center");o.autoMargin(t,"legend",{x:e.x,y:.5,l:e._width*g[r],r:e._width*y[r],b:0,t:0})}(t):E(t);var R=e._size,N=R.l+R.w*f.x,F=R.t+R.h*(1-f.y);w.isRightAnchor(f)?N-=f._width:w.isCenterAnchor(f)&&(N-=f._width/2),w.isBottomAnchor(f)?F-=f._height:w.isMiddleAnchor(f)&&(F-=f._height/2);var j=f._width,B=R.w;j>B?(N=R.l,j=B):(N+j>D&&(N=D-j),N<0&&(N=0),j=Math.min(D-N,f._width));var U=f._height,V=R.h;U>V?(F=R.t,U=V):(F+U>I&&(F=I-U),F<0&&(F=0),U=Math.min(I-F,f._height)),c.setTranslate(v,N,F);var q,H,G,Y,W,X,Z=U-d.scrollBarHeight-2*d.scrollBarMargin,J=f._height-U;if(f._height<=U||t._context.staticPlot)S.attr({width:j-f.borderwidth,height:U-f.borderwidth,x:f.borderwidth/2,y:f.borderwidth/2}),c.setTranslate(L,0,0),_.select("rect").attr({width:j-2*f.borderwidth,height:U-2*f.borderwidth,x:f.borderwidth,y:f.borderwidth}),L.call(c.setClipUrl,r);else{q=d.scrollBarMargin,H=L.attr("data-scroll")||0,S.attr({width:j-2*f.borderwidth+d.scrollBarWidth+d.scrollBarMargin,height:U-f.borderwidth,x:f.borderwidth/2,y:f.borderwidth/2}),_.select("rect").attr({width:j-2*f.borderwidth+d.scrollBarWidth+d.scrollBarMargin,height:U-2*f.borderwidth,x:f.borderwidth,y:f.borderwidth-H}),L.call(c.setClipUrl,r),O&&Q(q,H),v.on("wheel",null),v.on("wheel",function(){H=a.constrain(L.attr("data-scroll")-n.event.deltaY/Z*J,-J,0),Q(q=d.scrollBarMargin-H/J*Z,H),0!==H&&H!==-J&&n.event.preventDefault()}),C.on(".drag",null),L.on(".drag",null);var K=n.behavior.drag().on("drag",function(){q=a.constrain(n.event.y-d.scrollBarHeight/2,d.scrollBarMargin,d.scrollBarMargin+Z),H=-(q-d.scrollBarMargin)/Z*J,Q(q,H)});C.call(K),L.call(K)}if(t._context.edits.legendPosition)v.classed("cursor-move",!0),l.init({element:v.node(),gd:t,prepFn:function(){var t=c.getTranslate(v);W=t.x,X=t.y},moveFn:function(t,e){var r=W+t,n=X+e;c.setTranslate(v,r,n),G=l.align(r,0,R.l,R.l+R.w,f.xanchor),Y=l.align(n,0,R.t+R.h,R.t,f.yanchor)},doneFn:function(){void 0!==G&&void 0!==Y&&i.relayout(t,{"legend.x":G,"legend.y":Y})},clickFn:function(r,n){var i=e._infolayer.selectAll("g.traces").filter(function(){var t=this.getBoundingClientRect();return n.clientX>=t.left&&n.clientX<=t.right&&n.clientY>=t.top&&n.clientY<=t.bottom});i.size()>0&&(1===r?v._clickTimeout=setTimeout(function(){h(i,t,r)},M):2===r&&(v._clickTimeout&&clearTimeout(v._clickTimeout),h(i,t,r)))}})}function Q(t,e){L.attr("data-scroll",e).call(c.setTranslate,0,e),C.call(c.setRect,j,t,d.scrollBarWidth,d.scrollBarHeight),_.select("rect").attr({y:f.borderwidth-e})}}},{"../../constants/alignment":696,"../../constants/interactions":701,"../../lib":724,"../../lib/svg_text_utils":747,"../../plotly":765,"../../plots/plots":833,"../../registry":854,"../color":598,"../dragelement":620,"../drawing":623,"./anchor_utils":649,"./constants":651,"./get_legend_data":654,"./handle_click":655,"./helpers":656,"./style":658,d3:128}],654:[function(t,e,r){"use strict";var n=t("../../registry"),i=t("./helpers");e.exports=function(t,e){var r,a,o={},s=[],l=!1,c={},u=0;function f(t,r){if(""!==t&&i.isGrouped(e))-1===s.indexOf(t)?(s.push(t),l=!0,o[t]=[[r]]):o[t].push([r]);else{var n="~~i"+u;s.push(n),o[n]=[[r]],u++}}for(r=0;rr[1])return r[1]}return i}function p(t){return t[0]}if(u||f||h){var m={},v={};u&&(m.mc=d("marker.color",p),m.mo=d("marker.opacity",a.mean,[.2,1]),m.ms=d("marker.size",a.mean,[2,16]),m.mlc=d("marker.line.color",p),m.mlw=d("marker.line.width",a.mean,[0,5]),v.marker={sizeref:1,sizemin:1,sizemode:"diameter"}),h&&(v.line={width:d("line.width",p,[0,10])}),f&&(m.tx="Aa",m.tp=d("textposition",p),m.ts=10,m.tc=d("textfont.color",p),m.tf=d("textfont.family",p)),r=[a.minExtend(s,m)],i=a.minExtend(c,v)}var g=n.select(this).select("g.legendpoints"),y=g.selectAll("path.scatterpts").data(u?r:[]);y.enter().append("path").classed("scatterpts",!0).attr("transform","translate(20,0)"),y.exit().remove(),y.call(o.pointStyle,i,e),u&&(r[0].mrc=3);var b=g.selectAll("g.pointtext").data(f?r:[]);b.enter().append("g").classed("pointtext",!0).append("text").attr("transform","translate(20,0)"),b.exit().remove(),b.selectAll("text").call(o.textPointStyle,i,e)})}},{"../../lib":724,"../../registry":854,"../../traces/pie/style_one":1034,"../../traces/scatter/subtypes":1070,"../color":598,"../drawing":623,d3:128}],659:[function(t,e,r){"use strict";var n=t("../../plotly"),i=t("../../plots/plots"),a=t("../../plots/cartesian/axis_ids"),o=t("../../lib"),s=t("../../snapshot/download"),l=t("../../../build/ploticon"),c=o._,u=e.exports={};function f(t,e){var r,i,o=e.currentTarget,s=o.getAttribute("data-attr"),l=o.getAttribute("data-val")||!0,c=t._fullLayout,u={},f=a.list(t,null,!0),h="on";if("zoom"===s){var d,p="in"===l?.5:2,m=(1+p)/2,v=(1-p)/2;for(i=0;i1?(_=["toggleHover"],w=["resetViews"]):f?(x=["zoomInGeo","zoomOutGeo"],_=["hoverClosestGeo"],w=["resetGeo"]):u?(_=["hoverClosest3d"],w=["resetCameraDefault3d","resetCameraLastSave3d"]):m?(_=["toggleHover"],w=["resetViewMapbox"]):_=d?["hoverClosestGl2d"]:h?["hoverClosestPie"]:["toggleHover"];c&&(_=["toggleSpikelines","hoverClosestCartesian","hoverCompareCartesian"]);!c&&!d||g||(x=["zoomIn2d","zoomOut2d","autoScale2d"],"resetViews"!==w[0]&&(w=["resetScale2d"]));u?M=["zoom3d","pan3d","orbitRotation","tableRotation"]:(c||d)&&!g||p?M=["zoom2d","pan2d"]:m||f?M=["pan2d"]:v&&(M=["zoom2d"]);(function(t){for(var e=!1,r=0;r0)){var d=function(t,e,r){for(var n=r.filter(function(r){return e[r].anchor===t._id}),i=0,a=0;ad&&(d=f)));return d>=h?[h,d]:void 0}}e.exports=function(t){var e=t._fullLayout,r=n.filterVisible(e.shapes);if(r.length&&t._fullData.length)for(var o=0;oU&&n>V&&!t.shiftKey?l.getCursor(i/r,1-a/n):"move";c(e,o),B=o.split("-")[0]}function Y(n,i){if("path"===r.type){var a=function(t){return F(R(t)+n)};D&&"date"===D.type&&(a=f.encodeDate(a));var l=function(t){return j(N(t)+i)};I&&"date"===I.type&&(l=f.encodeDate(l)),r.path=p(z,a,l),o[O]=r.path}else o[v]=r.x0=F(s+n),o[g]=r.y0=j(u+i),o[y]=r.x1=F(h+n),o[b]=r.y1=j(m+i);e.attr("d",d(t,r))}function W(n,i){if("path"===r.type){var a=function(t){return F(R(t)+n)};D&&"date"===D.type&&(a=f.encodeDate(a));var s=function(t){return j(N(t)+i)};I&&"date"===I.type&&(s=f.encodeDate(s)),r.path=p(z,a,s),o[O]=r.path}else{var l=~B.indexOf("n")?x+i:x,c=~B.indexOf("s")?_+i:_,u=~B.indexOf("w")?w+n:w,h=~B.indexOf("e")?M+n:M;c-l>V&&(o[k]=r[S]=j(l),o[A]=r[L]=j(c)),h-u>U&&(o[T]=r[C]=F(u),o[E]=r[P]=F(h))}e.attr("d",d(t,r))}l.init(q),e.node().onmousemove=G}(t,m,i,e)}}function d(t,e){var r,n,o,s,l=e.type,c=a.getFromId(t,e.xref),h=a.getFromId(t,e.yref),d=t._fullLayout._size;if(c?(r=f.shapePositionToRange(c),n=function(t){return c._offset+c.r2p(r(t,!0))}):n=function(t){return d.l+d.w*t},h?(o=f.shapePositionToRange(h),s=function(t){return h._offset+h.r2p(o(t,!0))}):s=function(t){return d.t+d.h*(1-t)},"path"===l)return c&&"date"===c.type&&(n=f.decodeDate(n)),h&&"date"===h.type&&(s=f.decodeDate(s)),function(t,e,r){return t.replace(u.segmentRE,function(t){var n=0,a=t.charAt(0),o=u.paramIsX[a],s=u.paramIsY[a],l=u.numParams[a],c=t.substr(1).replace(u.paramRE,function(t){return o[n]?t=e(t):s[n]&&(t=r(t)),++n>l&&(t="X"),t});return n>l&&(c=c.replace(/[\s,]*X.*/,""),i.log("Ignoring extra params in segment "+t)),a+c})}(e.path,n,s);var p=n(e.x0),m=n(e.x1),v=s(e.y0),g=s(e.y1);if("line"===l)return"M"+p+","+v+"L"+m+","+g;if("rect"===l)return"M"+p+","+v+"H"+m+"V"+g+"H"+p+"Z";var y=(p+m)/2,b=(v+g)/2,x=Math.abs(y-p),_=Math.abs(b-v),w="A"+x+","+_,M=y+x+","+b;return"M"+M+w+" 0 1,1 "+(y+","+(b-_))+w+" 0 0,1 "+M+"Z"}function p(t,e,r){return t.replace(u.segmentRE,function(t){var n=0,i=t.charAt(0),a=u.paramIsX[i],o=u.paramIsY[i],s=u.numParams[i];return i+t.substr(1).replace(u.paramRE,function(t){return n>=s?t:(a[n]?t=e(t):o[n]&&(t=r(t)),n++,t)})})}e.exports={draw:function(t){var e=t._fullLayout;e._shapeUpperLayer.selectAll("path").remove(),e._shapeLowerLayer.selectAll("path").remove(),e._shapeSubplotLayers.selectAll("path").remove();for(var r=0;r0)&&(i("active"),i("x"),i("y"),n.noneOrAll(t,e,["x","y"]),i("xanchor"),i("yanchor"),i("len"),i("lenmode"),i("pad.t"),i("pad.r"),i("pad.b"),i("pad.l"),n.coerceFont(i,"font",r.font),i("currentvalue.visible")&&(i("currentvalue.xanchor"),i("currentvalue.prefix"),i("currentvalue.suffix"),i("currentvalue.offset"),n.coerceFont(i,"currentvalue.font",e.font)),i("transition.duration"),i("transition.easing"),i("bgcolor"),i("activebgcolor"),i("bordercolor"),i("borderwidth"),i("ticklen"),i("tickwidth"),i("tickcolor"),i("minorticklen"))}e.exports=function(t,e){i(t,e,{name:o,handleItemDefaults:l})}},{"../../lib":724,"../../plots/array_container_defaults":767,"./attributes":684,"./constants":685}],687:[function(t,e,r){"use strict";var n=t("d3"),i=t("../../plots/plots"),a=t("../color"),o=t("../drawing"),s=t("../../lib/svg_text_utils"),l=t("../legend/anchor_utils"),c=t("./constants"),u=t("../../constants/alignment"),f=u.LINE_SPACING,h=u.FROM_TL,d=u.FROM_BR;function p(t){return t._index}function m(t,e){var r=o.tester.selectAll("g."+c.labelGroupClass).data(e.steps);r.enter().append("g").classed(c.labelGroupClass,!0);var a=0,u=0;r.each(function(t){var r=y(n.select(this),{step:t},e).node();if(r){var i=o.bBox(r);u=Math.max(u,i.height),a=Math.max(a,i.width)}}),r.remove();var f=e._dims={};f.inputAreaWidth=Math.max(c.railWidth,c.gripHeight);var p=t._fullLayout._size;f.lx=p.l+p.w*e.x,f.ly=p.t+p.h*(1-e.y),"fraction"===e.lenmode?f.outerLength=Math.round(p.w*e.len):f.outerLength=e.len,f.inputAreaStart=0,f.inputAreaLength=Math.round(f.outerLength-e.pad.l-e.pad.r);var m=(f.inputAreaLength-2*c.stepInset)/(e.steps.length-1),g=a+c.labelPadding;if(f.labelStride=Math.max(1,Math.ceil(g/m)),f.labelHeight=u,f.currentValueMaxWidth=0,f.currentValueHeight=0,f.currentValueTotalHeight=0,f.currentValueMaxLines=1,e.currentvalue.visible){var b=o.tester.append("g");r.each(function(t){var r=v(b,e,t.label),n=r.node()&&o.bBox(r.node())||{width:0,height:0},i=s.lineCount(r);f.currentValueMaxWidth=Math.max(f.currentValueMaxWidth,Math.ceil(n.width)),f.currentValueHeight=Math.max(f.currentValueHeight,Math.ceil(n.height)),f.currentValueMaxLines=Math.max(f.currentValueMaxLines,i)}),f.currentValueTotalHeight=f.currentValueHeight+e.currentvalue.offset,b.remove()}f.height=f.currentValueTotalHeight+c.tickOffset+e.ticklen+c.labelOffset+f.labelHeight+e.pad.t+e.pad.b;var x="left";l.isRightAnchor(e)&&(f.lx-=f.outerLength,x="right"),l.isCenterAnchor(e)&&(f.lx-=f.outerLength/2,x="center");var _="top";l.isBottomAnchor(e)&&(f.ly-=f.height,_="bottom"),l.isMiddleAnchor(e)&&(f.ly-=f.height/2,_="middle"),f.outerLength=Math.ceil(f.outerLength),f.height=Math.ceil(f.height),f.lx=Math.round(f.lx),f.ly=Math.round(f.ly),i.autoMargin(t,c.autoMarginIdRoot+e._index,{x:e.x,y:e.y,l:f.outerLength*h[x],r:f.outerLength*d[x],b:f.height*d[_],t:f.height*h[_]})}function v(t,e,r){if(e.currentvalue.visible){var n,i,a=t.selectAll("text").data([0]),l=e._dims;switch(e.currentvalue.xanchor){case"right":n=l.inputAreaLength-c.currentValueInset-l.currentValueMaxWidth,i="left";break;case"center":n=.5*l.inputAreaLength,i="middle";break;default:n=c.currentValueInset,i="left"}a.enter().append("text").classed(c.labelClass,!0).classed("user-select-none",!0).attr({"text-anchor":i,"data-notex":1});var u=e.currentvalue.prefix?e.currentvalue.prefix:"";if("string"==typeof r)u+=r;else u+=e.steps[e.active].label;e.currentvalue.suffix&&(u+=e.currentvalue.suffix),a.call(o.font,e.currentvalue.font).text(u).call(s.convertToTspans,e._gd);var h=s.lineCount(a),d=(l.currentValueMaxLines+1-h)*e.currentvalue.font.size*f;return s.positionText(a,n,d),a}}function g(t,e,r){var n=t.selectAll("rect."+c.gripRectClass).data([0]);n.enter().append("rect").classed(c.gripRectClass,!0).call(w,e,t,r).style("pointer-events","all"),n.attr({width:c.gripWidth,height:c.gripHeight,rx:c.gripRadius,ry:c.gripRadius}).call(a.stroke,r.bordercolor).call(a.fill,r.bgcolor).style("stroke-width",r.borderwidth+"px")}function y(t,e,r){var n=t.selectAll("text").data([0]);return n.enter().append("text").classed(c.labelClass,!0).classed("user-select-none",!0).attr({"text-anchor":"middle","data-notex":1}),n.call(o.font,r.font).text(e.step.label).call(s.convertToTspans,r._gd),n}function b(t,e){var r=t.selectAll("g."+c.labelsClass).data([0]),i=e._dims;r.enter().append("g").classed(c.labelsClass,!0);var a=r.selectAll("g."+c.labelGroupClass).data(i.labelSteps);a.enter().append("g").classed(c.labelGroupClass,!0),a.exit().remove(),a.each(function(t){var r=n.select(this);r.call(y,t,e),o.setTranslate(r,A(e,t.fraction),c.tickOffset+e.ticklen+e.font.size*f+c.labelOffset+i.currentValueTotalHeight)})}function x(t,e,r,n,i){var a=Math.round(n*(r.steps.length-1));a!==r.active&&_(t,e,r,a,!0,i)}function _(t,e,r,n,a,o){var s=r.active;r._input.active=r.active=n;var l=r.steps[r.active];e.call(k,r,r.active/(r.steps.length-1),o),e.call(v,r),t.emit("plotly_sliderchange",{slider:r,step:r.steps[r.active],interaction:a,previousActive:s}),l&&l.method&&a&&(e._nextMethod?(e._nextMethod.step=l,e._nextMethod.doCallback=a,e._nextMethod.doTransition=o):(e._nextMethod={step:l,doCallback:a,doTransition:o},e._nextMethodRaf=window.requestAnimationFrame(function(){var r=e._nextMethod.step;r.method&&(r.execute&&i.executeAPICommand(t,r.method,r.args),e._nextMethod=null,e._nextMethodRaf=null)})))}function w(t,e,r){var i=r.node(),o=n.select(e);function s(){return r.data()[0]}t.on("mousedown",function(){var t=s();e.emit("plotly_sliderstart",{slider:t});var l=r.select("."+c.gripRectClass);n.event.stopPropagation(),n.event.preventDefault(),l.call(a.fill,t.activebgcolor);var u=T(t,n.mouse(i)[0]);x(e,r,t,u,!0),t._dragging=!0,o.on("mousemove",function(){var t=s(),a=T(t,n.mouse(i)[0]);x(e,r,t,a,!1)}),o.on("mouseup",function(){var t=s();t._dragging=!1,l.call(a.fill,t.bgcolor),o.on("mouseup",null),o.on("mousemove",null),e.emit("plotly_sliderend",{slider:t,step:t.steps[t.active]})})})}function M(t,e){var r=t.selectAll("rect."+c.tickRectClass).data(e.steps),i=e._dims;r.enter().append("rect").classed(c.tickRectClass,!0),r.exit().remove(),r.attr({width:e.tickwidth+"px","shape-rendering":"crispEdges"}),r.each(function(t,r){var s=r%i.labelStride==0,l=n.select(this);l.attr({height:s?e.ticklen:e.minorticklen}).call(a.fill,e.tickcolor),o.setTranslate(l,A(e,r/(e.steps.length-1))-.5*e.tickwidth,(s?c.tickOffset:c.minorTickOffset)+i.currentValueTotalHeight)})}function k(t,e,r,n){var i=t.select("rect."+c.gripRectClass),a=A(e,r);if(!e._invokingCommand){var o=i;n&&e.transition.duration>0&&(o=o.transition().duration(e.transition.duration).ease(e.transition.easing)),o.attr("transform","translate("+(a-.5*c.gripWidth)+","+e._dims.currentValueTotalHeight+")")}}function A(t,e){var r=t._dims;return r.inputAreaStart+c.stepInset+(r.inputAreaLength-2*c.stepInset)*Math.min(1,Math.max(0,e))}function T(t,e){var r=t._dims;return Math.min(1,Math.max(0,(e-c.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*c.stepInset-2*r.inputAreaStart)))}function E(t,e,r){var n=t.selectAll("rect."+c.railTouchRectClass).data([0]),i=r._dims;n.enter().append("rect").classed(c.railTouchRectClass,!0).call(w,e,t,r).style("pointer-events","all"),n.attr({width:i.inputAreaLength,height:Math.max(i.inputAreaWidth,c.tickOffset+r.ticklen+i.labelHeight)}).call(a.fill,r.bgcolor).attr("opacity",0),o.setTranslate(n,0,i.currentValueTotalHeight)}function S(t,e){var r=t.selectAll("rect."+c.railRectClass).data([0]),n=e._dims;r.enter().append("rect").classed(c.railRectClass,!0);var i=n.inputAreaLength-2*c.railInset;r.attr({width:i,height:c.railWidth,rx:c.railRadius,ry:c.railRadius,"shape-rendering":"crispEdges"}).call(a.stroke,e.bordercolor).call(a.fill,e.bgcolor).style("stroke-width",e.borderwidth+"px"),o.setTranslate(r,c.railInset,.5*(n.inputAreaWidth-c.railWidth)+n.currentValueTotalHeight)}e.exports=function(t){var e=t._fullLayout,r=function(t,e){for(var r=t[c.name],n=[],i=0;i0?[0]:[]);if(a.enter().append("g").classed(c.containerClassName,!0).style("cursor","ew-resize"),a.exit().remove(),a.exit().size()&&function(t){for(var e=t._fullLayout._pushmargin||{},r=Object.keys(e),n=0;n=r.steps.length&&(r.active=0);e.call(v,r).call(S,r).call(b,r).call(M,r).call(E,t,r).call(g,t,r);var n=r._dims;o.setTranslate(e,n.lx+r.pad.l,n.ly+r.pad.t),e.call(k,r,r.active/(r.steps.length-1),!1),e.call(v,r)}(t,n.select(this),e)}})}}},{"../../constants/alignment":696,"../../lib/svg_text_utils":747,"../../plots/plots":833,"../color":598,"../drawing":623,"../legend/anchor_utils":649,"./constants":685,d3:128}],688:[function(t,e,r){"use strict";var n=t("./constants");e.exports={moduleType:"component",name:n.name,layoutAttributes:t("./attributes"),supplyLayoutDefaults:t("./defaults"),draw:t("./draw")}},{"./attributes":684,"./constants":685,"./defaults":686,"./draw":687}],689:[function(t,e,r){"use strict";var n=t("d3"),i=t("fast-isnumeric"),a=t("../../plotly"),o=t("../../plots/plots"),s=t("../../lib"),l=t("../drawing"),c=t("../color"),u=t("../../lib/svg_text_utils"),f=t("../../constants/interactions"),h=/ [XY][0-9]* /;(e.exports={}).draw=function(t,e,r){var d,p=r.propContainer,m=r.propName,v=r.placeholder,g=r.traceIndex,y=r.avoid||{},b=r.attributes,x=r.transform,_=r.containerGroup,w=t._fullLayout,M=p.titlefont||{},k=M.family,A=M.size,T=M.color,E=1,S=!1,L=(p.title||"").trim();"title"===m?d="titleText":-1!==m.indexOf("axis")?d="axisTitleText":m.indexOf(!0)&&(d="colorbarTitleText");var C=t._context.edits[d];""===L?E=0:L.replace(h," % ")===v.replace(h," % ")&&(E=.2,S=!0,C||(L=""));var P=L||C;_||(_=w._infolayer.selectAll(".g-"+e).data([0])).enter().append("g").classed("g-"+e,!0);var z=_.selectAll("text").data(P?[0]:[]);if(z.enter().append("text"),z.text(L).attr("class",e),z.exit().remove(),!P)return _;function O(t){s.syncOrAsync([D,I],t)}function D(e){var r;return x?(r="",x.rotate&&(r+="rotate("+[x.rotate,b.x,b.y]+")"),x.offset&&(r+="translate(0, "+x.offset+")")):r=null,e.attr("transform",r),e.style({"font-family":k,"font-size":n.round(A,2)+"px",fill:c.rgb(T),opacity:E*c.opacity(T),"font-weight":o.fontWeight}).attr(b).call(u.convertToTspans,t),o.previousPromises(t)}function I(t){var e=n.select(t.node().parentNode);if(y&&y.selection&&y.side&&L){e.attr("transform",null);var r=0,a={left:"right",right:"left",top:"bottom",bottom:"top"}[y.side],o=-1!==["left","top"].indexOf(y.side)?-1:1,c=i(y.pad)?y.pad:2,u=l.bBox(e.node()),f={left:0,top:0,right:w.width,bottom:w.height},h=y.maxShift||(f[y.side]-u[y.side])*("left"===y.side||"top"===y.side?-1:1);if(h<0)r=h;else{var d=y.offsetLeft||0,p=y.offsetTop||0;u.left-=d,u.right-=d,u.top-=p,u.bottom-=p,y.selection.each(function(){var t=l.bBox(this);s.bBoxIntersect(u,t,c)&&(r=Math.max(r,o*(t[y.side]-u[a])+c))}),r=Math.min(h,r)}if(r>0||h<0){var m={left:[-r,0],right:[r,0],top:[0,-r],bottom:[0,r]}[y.side];e.attr("transform","translate("+m+")")}}}return z.call(O),C&&(L?z.on(".opacity",null):(E=0,S=!0,z.text(v).on("mouseover.opacity",function(){n.select(this).transition().duration(f.SHOW_PLACEHOLDER).style("opacity",1)}).on("mouseout.opacity",function(){n.select(this).transition().duration(f.HIDE_PLACEHOLDER).style("opacity",0)})),z.call(u.makeEditable,{gd:t}).on("edit",function(e){void 0!==g?a.restyle(t,m,e,g):a.relayout(t,m,e)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(O)}).on("input",function(t){this.text(t||" ").call(u.positionText,b.x,b.y)})),z.classed("js-placeholder",S),_}},{"../../constants/interactions":701,"../../lib":724,"../../lib/svg_text_utils":747,"../../plotly":765,"../../plots/plots":833,"../color":598,"../drawing":623,d3:128,"fast-isnumeric":140}],690:[function(t,e,r){"use strict";var n=t("../../plots/font_attributes"),i=t("../color/attributes"),a=t("../../lib/extend").extendFlat,o=t("../../plot_api/edit_types").overrideAll,s=t("../../plots/pad_attributes");e.exports=o({_isLinkedToArray:"updatemenu",_arrayAttrRegexps:[/^updatemenus\[(0|[1-9][0-9]+)\]\.buttons/],visible:{valType:"boolean"},type:{valType:"enumerated",values:["dropdown","buttons"],dflt:"dropdown"},direction:{valType:"enumerated",values:["left","right","up","down"],dflt:"down"},active:{valType:"integer",min:-1,dflt:0},showactive:{valType:"boolean",dflt:!0},buttons:{_isLinkedToArray:"button",method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string",dflt:""},execute:{valType:"boolean",dflt:!0}},x:{valType:"number",min:-2,max:3,dflt:-.05},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"right"},y:{valType:"number",min:-2,max:3,dflt:1},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},pad:a({},s,{}),font:n({}),bgcolor:{valType:"color"},bordercolor:{valType:"color",dflt:i.borderLine},borderwidth:{valType:"number",min:0,dflt:1,editType:"arraydraw"}},"arraydraw","from-root")},{"../../lib/extend":713,"../../plot_api/edit_types":754,"../../plots/font_attributes":797,"../../plots/pad_attributes":832,"../color/attributes":597}],691:[function(t,e,r){"use strict";e.exports={name:"updatemenus",containerClassName:"updatemenu-container",headerGroupClassName:"updatemenu-header-group",headerClassName:"updatemenu-header",headerArrowClassName:"updatemenu-header-arrow",dropdownButtonGroupClassName:"updatemenu-dropdown-button-group",dropdownButtonClassName:"updatemenu-dropdown-button",buttonClassName:"updatemenu-button",itemRectClassName:"updatemenu-item-rect",itemTextClassName:"updatemenu-item-text",menuIndexAttrName:"updatemenu-active-index",autoMarginIdRoot:"updatemenu-",blankHeaderOpts:{label:" "},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:"#F4FAFF",hoverColor:"#F4FAFF",arrowSymbol:{left:"\u25c4",right:"\u25ba",up:"\u25b2",down:"\u25bc"}}},{}],692:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("../../plots/array_container_defaults"),a=t("./attributes"),o=t("./constants").name,s=a.buttons;function l(t,e,r){function i(r,i){return n.coerce(t,e,a,r,i)}i("visible",function(t,e){var r,i,a=t.buttons||[],o=e.buttons=[];function l(t,e){return n.coerce(r,i,s,t,e)}for(var c=0;c0)&&(i("active"),i("direction"),i("type"),i("showactive"),i("x"),i("y"),n.noneOrAll(t,e,["x","y"]),i("xanchor"),i("yanchor"),i("pad.t"),i("pad.r"),i("pad.b"),i("pad.l"),n.coerceFont(i,"font",r.font),i("bgcolor",r.paper_bgcolor),i("bordercolor"),i("borderwidth"))}e.exports=function(t,e){i(t,e,{name:o,handleItemDefaults:l})}},{"../../lib":724,"../../plots/array_container_defaults":767,"./attributes":690,"./constants":691}],693:[function(t,e,r){"use strict";var n=t("d3"),i=t("../../plots/plots"),a=t("../color"),o=t("../drawing"),s=t("../../lib/svg_text_utils"),l=t("../legend/anchor_utils"),c=t("../../constants/alignment").LINE_SPACING,u=t("./constants"),f=t("./scrollbox");function h(t){return t._index}function d(t,e){return+t.attr(u.menuIndexAttrName)===e._index}function p(t,e,r,n,i,a,o,s){e._input.active=e.active=o,"buttons"===e.type?v(t,n,null,null,e):"dropdown"===e.type&&(i.attr(u.menuIndexAttrName,"-1"),m(t,n,i,a,e),s||v(t,n,i,a,e))}function m(t,e,r,n,i){var a=e.selectAll("g."+u.headerClassName).data([0]),s=i._dims;a.enter().append("g").classed(u.headerClassName,!0).style("pointer-events","all");var l=i.active,c=i.buttons[l]||u.blankHeaderOpts,f={y:i.pad.t,yPad:0,x:i.pad.l,xPad:0,index:0},h={width:s.headerWidth,height:s.headerHeight};a.call(g,i,c,t).call(k,i,f,h);var p=e.selectAll("text."+u.headerArrowClassName).data([0]);p.enter().append("text").classed(u.headerArrowClassName,!0).classed("user-select-none",!0).attr("text-anchor","end").call(o.font,i.font).text(u.arrowSymbol[i.direction]),p.attr({x:s.headerWidth-u.arrowOffsetX+i.pad.l,y:s.headerHeight/2+u.textOffsetY+i.pad.t}),a.on("click",function(){r.call(A),r.attr(u.menuIndexAttrName,d(r,i)?-1:String(i._index)),v(t,e,r,n,i)}),a.on("mouseover",function(){a.call(_)}),a.on("mouseout",function(){a.call(w,i)}),o.setTranslate(e,s.lx,s.ly)}function v(t,e,r,a,o){r||(r=e).attr("pointer-events","all");var s=function(t){return-1==+t.attr(u.menuIndexAttrName)}(r)&&"buttons"!==o.type?[]:o.buttons,l="dropdown"===o.type?u.dropdownButtonClassName:u.buttonClassName,c=r.selectAll("g."+l).data(s),f=c.enter().append("g").classed(l,!0),h=c.exit();"dropdown"===o.type?(f.attr("opacity","0").transition().attr("opacity","1"),h.transition().attr("opacity","0").remove()):h.remove();var d=0,m=0,v=o._dims,y=-1!==["up","down"].indexOf(o.direction);"dropdown"===o.type&&(y?m=v.headerHeight+u.gapButtonHeader:d=v.headerWidth+u.gapButtonHeader),"dropdown"===o.type&&"up"===o.direction&&(m=-u.gapButtonHeader+u.gapButton-v.openHeight),"dropdown"===o.type&&"left"===o.direction&&(d=-u.gapButtonHeader+u.gapButton-v.openWidth);var b={x:v.lx+d+o.pad.l,y:v.ly+m+o.pad.t,yPad:u.gapButton,xPad:u.gapButton,index:0},M={l:b.x+o.borderwidth,t:b.y+o.borderwidth};c.each(function(s,l){var u=n.select(this);u.call(g,o,s,t).call(k,o,b),u.on("click",function(){n.event.defaultPrevented||(p(t,o,0,e,r,a,l),s.execute&&i.executeAPICommand(t,s.method,s.args),t.emit("plotly_buttonclicked",{menu:o,button:s,active:o.active}))}),u.on("mouseover",function(){u.call(_)}),u.on("mouseout",function(){u.call(w,o),c.call(x,o)})}),c.call(x,o),y?(M.w=Math.max(v.openWidth,v.headerWidth),M.h=b.y-M.t):(M.w=b.x-M.l,M.h=Math.max(v.openHeight,v.headerHeight)),M.direction=o.direction,a&&(c.size()?function(t,e,r,n,i,a){var o,s,l,c=i.direction,f="up"===c||"down"===c,h=i._dims,d=i.active;if(f)for(s=0,l=0;l0?[0]:[]);if(a.enter().append("g").classed(u.containerClassName,!0).style("cursor","pointer"),a.exit().remove(),a.exit().size()&&function(t){for(var e=t._fullLayout._pushmargin||{},r=Object.keys(e),n=0;nw,A=s.barLength+2*s.barPad,T=s.barWidth+2*s.barPad,E=p,S=v+g;S+T>c&&(S=c-T);var L=this.container.selectAll("rect.scrollbar-horizontal").data(k?[0]:[]);L.exit().on(".drag",null).remove(),L.enter().append("rect").classed("scrollbar-horizontal",!0).call(i.fill,s.barColor),k?(this.hbar=L.attr({rx:s.barRadius,ry:s.barRadius,x:E,y:S,width:A,height:T}),this._hbarXMin=E+A/2,this._hbarTranslateMax=w-A):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var C=g>M,P=s.barWidth+2*s.barPad,z=s.barLength+2*s.barPad,O=p+m,D=v;O+P>l&&(O=l-P);var I=this.container.selectAll("rect.scrollbar-vertical").data(C?[0]:[]);I.exit().on(".drag",null).remove(),I.enter().append("rect").classed("scrollbar-vertical",!0).call(i.fill,s.barColor),C?(this.vbar=I.attr({rx:s.barRadius,ry:s.barRadius,x:O,y:D,width:P,height:z}),this._vbarYMin=D+z/2,this._vbarTranslateMax=M-z):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var R=this.id,N=u-.5,F=C?f+P+.5:f+.5,j=h-.5,B=k?d+T+.5:d+.5,U=o._topdefs.selectAll("#"+R).data(k||C?[0]:[]);if(U.exit().remove(),U.enter().append("clipPath").attr("id",R).append("rect"),k||C?(this._clipRect=U.select("rect").attr({x:Math.floor(N),y:Math.floor(j),width:Math.ceil(F)-Math.floor(N),height:Math.ceil(B)-Math.floor(j)}),this.container.call(a.setClipUrl,R),this.bg.attr({x:p,y:v,width:m,height:g})):(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(a.setClipUrl,null),delete this._clipRect),k||C){var V=n.behavior.drag().on("dragstart",function(){n.event.sourceEvent.preventDefault()}).on("drag",this._onBoxDrag.bind(this));this.container.on("wheel",null).on("wheel",this._onBoxWheel.bind(this)).on(".drag",null).call(V);var q=n.behavior.drag().on("dragstart",function(){n.event.sourceEvent.preventDefault(),n.event.sourceEvent.stopPropagation()}).on("drag",this._onBarDrag.bind(this));k&&this.hbar.on(".drag",null).call(q),C&&this.vbar.on(".drag",null).call(q)}this.setTranslate(e,r)},s.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(a.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(".drag",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(".drag",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)},s.prototype._onBoxDrag=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t-=n.event.dx),this.vbar&&(e-=n.event.dy),this.setTranslate(t,e)},s.prototype._onBoxWheel=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t+=n.event.deltaY),this.vbar&&(e+=n.event.deltaY),this.setTranslate(t,e)},s.prototype._onBarDrag=function(){var t=this.translateX,e=this.translateY;if(this.hbar){var r=t+this._hbarXMin,i=r+this._hbarTranslateMax;t=(o.constrain(n.event.x,r,i)-r)/(i-r)*(this.position.w-this._box.w)}if(this.vbar){var a=e+this._vbarYMin,s=a+this._vbarTranslateMax;e=(o.constrain(n.event.y,a,s)-a)/(s-a)*(this.position.h-this._box.h)}this.setTranslate(t,e)},s.prototype.setTranslate=function(t,e){var r=this.position.w-this._box.w,n=this.position.h-this._box.h;if(t=o.constrain(t||0,0,r),e=o.constrain(e||0,0,n),this.translateX=t,this.translateY=e,this.container.call(a.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-e),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+e-.5)}),this.hbar){var i=t/r;this.hbar.call(a.setTranslate,t+i*this._hbarTranslateMax,e)}if(this.vbar){var s=e/n;this.vbar.call(a.setTranslate,t,e+s*this._vbarTranslateMax)}}},{"../../lib":724,"../color":598,"../drawing":623,d3:128}],696:[function(t,e,r){"use strict";e.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,MID_SHIFT:.35,OPPOSITE_SIDE:{left:"right",right:"left",top:"bottom",bottom:"top"}}},{}],697:[function(t,e,r){"use strict";e.exports={COMPARISON_OPS:["=","!=","<",">=",">","<="],COMPARISON_OPS2:["=","<",">=",">","<="],INTERVAL_OPS:["[]","()","[)","(]","][",")(","](",")["],SET_OPS:["{}","}{"],CONSTRAINT_REDUCTION:{"=":"=","<":"<","<=":"<",">":">",">=":">","[]":"[]","()":"[]","[)":"[]","(]":"[]","][":"][",")(":"][","](":"][",")[":"]["}}},{}],698:[function(t,e,r){"use strict";e.exports={solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}},{}],699:[function(t,e,r){"use strict";e.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}},{}],700:[function(t,e,r){"use strict";e.exports={circle:"\u25cf","circle-open":"\u25cb",square:"\u25a0","square-open":"\u25a1",diamond:"\u25c6","diamond-open":"\u25c7",cross:"+",x:"\u274c"}},{}],701:[function(t,e,r){"use strict";e.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DBLCLICKDELAY:300,DESELECTDIM:.2}},{}],702:[function(t,e,r){"use strict";e.exports={BADNUM:void 0,FP_SAFE:Number.MAX_VALUE/1e4,ONEAVGYEAR:315576e5,ONEAVGMONTH:26298e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,EPOCHJD:2440587.5,ALMOST_EQUAL:1-1e-6,MINUS_SIGN:"\u2212"}},{}],703:[function(t,e,r){"use strict";e.exports={entityToUnicode:{mu:"\u03bc","#956":"\u03bc",amp:"&","#28":"&",lt:"<","#60":"<",gt:">","#62":">",nbsp:"\xa0","#160":"\xa0",times:"\xd7","#215":"\xd7",plusmn:"\xb1","#177":"\xb1",deg:"\xb0","#176":"\xb0"}}},{}],704:[function(t,e,r){"use strict";r.xmlns="http://www.w3.org/2000/xmlns/",r.svg="http://www.w3.org/2000/svg",r.xlink="http://www.w3.org/1999/xlink",r.svgAttrs={xmlns:r.svg,"xmlns:xlink":r.xlink}},{}],705:[function(t,e,r){"use strict";var n=t("./plotly");r.version="1.34.0",t("es6-promise").polyfill(),t("../build/plotcss"),t("./fonts/mathjax_config"),r.plot=n.plot,r.newPlot=n.newPlot,r.restyle=n.restyle,r.relayout=n.relayout,r.redraw=n.redraw,r.update=n.update,r.react=n.react,r.extendTraces=n.extendTraces,r.prependTraces=n.prependTraces,r.addTraces=n.addTraces,r.deleteTraces=n.deleteTraces,r.moveTraces=n.moveTraces,r.purge=n.purge,r.setPlotConfig=t("./plot_api/set_plot_config"),r.register=t("./plot_api/register"),r.toImage=t("./plot_api/to_image"),r.downloadImage=t("./snapshot/download"),r.validate=t("./plot_api/validate"),r.addFrames=n.addFrames,r.deleteFrames=n.deleteFrames,r.animate=n.animate,r.register(t("./traces/scatter")),r.register([t("./components/fx"),t("./components/legend"),t("./components/annotations"),t("./components/annotations3d"),t("./components/shapes"),t("./components/images"),t("./components/updatemenus"),t("./components/sliders"),t("./components/rangeslider"),t("./components/rangeselector")]),r.register([t("./locale-en"),t("./locale-en-us")]),r.Icons=t("../build/ploticon"),r.Plots=n.Plots,r.Fx=t("./components/fx"),r.Snapshot=t("./snapshot"),r.PlotSchema=t("./plot_api/plot_schema"),r.Queue=t("./lib/queue"),r.d3=t("d3")},{"../build/plotcss":1,"../build/ploticon":2,"./components/annotations":589,"./components/annotations3d":594,"./components/fx":640,"./components/images":648,"./components/legend":657,"./components/rangeselector":669,"./components/rangeslider":675,"./components/shapes":682,"./components/sliders":688,"./components/updatemenus":694,"./fonts/mathjax_config":706,"./lib/queue":738,"./locale-en":752,"./locale-en-us":751,"./plot_api/plot_schema":759,"./plot_api/register":760,"./plot_api/set_plot_config":761,"./plot_api/to_image":763,"./plot_api/validate":764,"./plotly":765,"./snapshot":859,"./snapshot/download":856,"./traces/scatter":1060,d3:128,"es6-promise":137}],706:[function(t,e,r){"use strict";"undefined"!=typeof MathJax?(r.MathJax=!0,MathJax.Hub.Config({messageStyle:"none",skipStartupTypeset:!0,displayAlign:"left",tex2jax:{inlineMath:[["$","$"],["\\(","\\)"]]}}),MathJax.Hub.Configured()):r.MathJax=!1},{}],707:[function(t,e,r){"use strict";var n=Math.PI;r.deg2rad=function(t){return t/180*n},r.rad2deg=function(t){return t/n*180},r.wrap360=function(t){var e=t%360;return e<0?e+360:e},r.wrap180=function(t){return Math.abs(t)>180&&(t-=360*Math.round(t/360)),t}},{}],708:[function(t,e,r){"use strict";var n=t("fast-isnumeric"),i=t("../constants/numerical").BADNUM,a=/^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g;e.exports=function(t){return"string"==typeof t&&(t=t.replace(a,"")),n(t)?Number(t):i}},{"../constants/numerical":702,"fast-isnumeric":140}],709:[function(t,e,r){"use strict";var n=t("fast-isnumeric"),i=t("tinycolor2"),a=t("../plots/attributes"),o=t("../components/colorscale/get_scale"),s=(Object.keys(t("../components/colorscale/scales")),t("./nested_property")),l=t("./regex").counter,c=t("../constants/interactions").DESELECTDIM,u=t("./angles").wrap180;r.valObjectMeta={data_array:{coerceFunction:function(t,e,r){Array.isArray(t)?e.set(t):void 0!==r&&e.set(r)}},enumerated:{coerceFunction:function(t,e,r,n){n.coerceNumber&&(t=+t),-1===n.values.indexOf(t)?e.set(r):e.set(t)},validateFunction:function(t,e){e.coerceNumber&&(t=+t);for(var r=e.values,n=0;ni.max?e.set(r):e.set(+t)}},integer:{coerceFunction:function(t,e,r,i){t%1||!n(t)||void 0!==i.min&&ti.max?e.set(r):e.set(+t)}},string:{coerceFunction:function(t,e,r,n){if("string"!=typeof t){var i="number"==typeof t;!0!==n.strict&&i?e.set(String(t)):e.set(r)}else n.noBlank&&!t?e.set(r):e.set(t)}},color:{coerceFunction:function(t,e,r){i(t).isValid()?e.set(t):e.set(r)}},colorlist:{coerceFunction:function(t,e,r){Array.isArray(t)&&t.length&&t.every(function(t){return i(t).isValid()})?e.set(t):e.set(r)}},colorscale:{coerceFunction:function(t,e,r){e.set(o(t,r))}},angle:{coerceFunction:function(t,e,r){"auto"===t?e.set("auto"):n(t)?e.set(u(+t)):e.set(r)}},subplotid:{coerceFunction:function(t,e,r){"string"==typeof t&&l(r).test(t)?e.set(t):e.set(r)},validateFunction:function(t,e){var r=e.dflt;return t===r||"string"==typeof t&&!!l(r).test(t)}},flaglist:{coerceFunction:function(t,e,r,n){if("string"==typeof t)if(-1===(n.extras||[]).indexOf(t)){for(var i=t.split("+"),a=0;a=n&&t<=i?t:u;if("string"!=typeof t&&"number"!=typeof t)return u;t=String(t);var a=_(e),o=t.charAt(0);!a||"G"!==o&&"g"!==o||(t=t.substr(1),e="");var s=a&&"chinese"===e.substr(0,7),l=t.match(s?b:y);if(!l)return u;var c=l[1],g=l[3]||"1",w=Number(l[5]||1),M=Number(l[7]||0),k=Number(l[9]||0),A=Number(l[11]||0);if(a){if(2===c.length)return u;var T;c=Number(c);try{var E=v.getComponentMethod("calendars","getCal")(e);if(s){var S="i"===g.charAt(g.length-1);g=parseInt(g,10),T=E.newDate(c,E.toMonthIndex(c,g,S),w)}else T=E.newDate(c,Number(g),w)}catch(t){return u}return T?(T.toJD()-m)*f+M*h+k*d+A*p:u}c=2===c.length?(Number(c)+2e3-x)%100+x:Number(c),g-=1;var L=new Date(Date.UTC(2e3,g,w,M,k));return L.setUTCFullYear(c),L.getUTCMonth()!==g?u:L.getUTCDate()!==w?u:L.getTime()+A*p},n=r.MIN_MS=r.dateTime2ms("-9999"),i=r.MAX_MS=r.dateTime2ms("9999-12-31 23:59:59.9999"),r.isDateTime=function(t,e){return r.dateTime2ms(t,e)!==u};var M=90*f,k=3*h,A=5*d;function T(t,e,r,n,i){if((e||r||n||i)&&(t+=" "+w(e,2)+":"+w(r,2),(n||i)&&(t+=":"+w(n,2),i))){for(var a=4;i%10==0;)a-=1,i/=10;t+="."+w(i,a)}return t}r.ms2DateTime=function(t,e,r){if("number"!=typeof t||!(t>=n&&t<=i))return u;e||(e=0);var a,o,s,c,y,b,x=Math.floor(10*l(t+.05,1)),w=Math.round(t-x/10);if(_(r)){var E=Math.floor(w/f)+m,S=Math.floor(l(t,f));try{a=v.getComponentMethod("calendars","getCal")(r).fromJD(E).formatDate("yyyy-mm-dd")}catch(t){a=g("G%Y-%m-%d")(new Date(w))}if("-"===a.charAt(0))for(;a.length<11;)a="-0"+a.substr(1);else for(;a.length<10;)a="0"+a;o=e=n+f&&t<=i-f))return u;var e=Math.floor(10*l(t+.05,1)),r=new Date(Math.round(t-e/10));return T(a.time.format("%Y-%m-%d")(r),r.getHours(),r.getMinutes(),r.getSeconds(),10*r.getUTCMilliseconds()+e)},r.cleanDate=function(t,e,n){if(r.isJSDate(t)||"number"==typeof t){if(_(n))return s.error("JS Dates and milliseconds are incompatible with world calendars",t),e;if(!(t=r.ms2DateTimeLocal(+t))&&void 0!==e)return e}else if(!r.isDateTime(t,n))return s.error("unrecognized date",t),e;return t};var E=/%\d?f/g;function S(t,e,r,n){t=t.replace(E,function(t){var r=Math.min(+t.charAt(1)||6,6);return(e/1e3%1+2).toFixed(r).substr(2).replace(/0+$/,"")||"0"});var i=new Date(Math.floor(e+.05));if(_(n))try{t=v.getComponentMethod("calendars","worldCalFmt")(t,e,n)}catch(t){return"Invalid"}return r(t)(i)}var L=[59,59.9,59.99,59.999,59.9999];r.formatDate=function(t,e,r,n,i,a){if(i=_(i)&&i,!e)if("y"===r)e=a.year;else if("m"===r)e=a.month;else{if("d"!==r)return function(t,e){var r=l(t+.05,f),n=w(Math.floor(r/h),2)+":"+w(l(Math.floor(r/d),60),2);if("M"!==e){o(e)||(e=0);var i=(100+Math.min(l(t/p,60),L[e])).toFixed(e).substr(1);e>0&&(i=i.replace(/0+$/,"").replace(/[\.]$/,"")),n+=":"+i}return n}(t,r)+"\n"+S(a.dayMonthYear,t,n,i);e=a.dayMonth+"\n"+a.year}return S(e,t,n,i)};var C=3*f;r.incrementMonth=function(t,e,r){r=_(r)&&r;var n=l(t,f);if(t=Math.round(t-n),r)try{var i=Math.round(t/f)+m,a=v.getComponentMethod("calendars","getCal")(r),o=a.fromJD(i);return e%12?a.add(o,e,"m"):a.add(o,e/12,"y"),(o.toJD()-m)*f+n}catch(e){s.error("invalid ms "+t+" in calendar "+r)}var c=new Date(t+C);return c.setUTCMonth(c.getUTCMonth()+e)+n-C},r.findExactDates=function(t,e){for(var r,n,i=0,a=0,s=0,l=0,c=_(e)&&v.getComponentMethod("calendars","getCal")(e),u=0;u0&&(r.push(i),i=[])}return i.length>0&&r.push(i),r},r.makeLine=function(t){return 1===t.length?{type:"LineString",coordinates:t[0]}:{type:"MultiLineString",coordinates:t}},r.makePolygon=function(t){if(1===t.length)return{type:"Polygon",coordinates:t};for(var e=new Array(t.length),r=0;r1||m<0||m>1?null:{x:t+l*m,y:e+f*m}}function l(t,e,r,n,i){var a=n*t+i*e;if(a<0)return n*n+i*i;if(a>r){var o=n-t,s=i-e;return o*o+s*s}var l=n*e-i*t;return l*l/r}r.segmentsIntersect=s,r.segmentDistance=function(t,e,r,n,i,a,o,c){if(s(t,e,r,n,i,a,o,c))return 0;var u=r-t,f=n-e,h=o-i,d=c-a,p=u*u+f*f,m=h*h+d*d,v=Math.min(l(u,f,p,i-t,a-e),l(u,f,p,o-t,c-e),l(h,d,m,t-i,e-a),l(h,d,m,r-i,n-a));return Math.sqrt(v)},r.getTextLocation=function(t,e,r,s){if(t===i&&s===a||(n={},i=t,a=s),n[r])return n[r];var l=t.getPointAtLength(o(r-s/2,e)),c=t.getPointAtLength(o(r+s/2,e)),u=Math.atan((c.y-l.y)/(c.x-l.x)),f=t.getPointAtLength(o(r,e)),h={x:(4*f.x+l.x+c.x)/6,y:(4*f.y+l.y+c.y)/6,theta:u};return n[r]=h,h},r.clearLocationCache=function(){i=null},r.getVisibleSegment=function(t,e,r){var n,i,a=e.left,o=e.right,s=e.top,l=e.bottom,c=0,u=t.getTotalLength(),f=u;function h(e){var r=t.getPointAtLength(e);0===e?n=r:e===u&&(i=r);var c=r.xo?r.x-o:0,f=r.yl?r.y-l:0;return Math.sqrt(c*c+f*f)}for(var d=h(c);d;){if((c+=d+r)>f)return;d=h(c)}for(d=h(f);d;){if(c>(f-=d+r))return;d=h(f)}return{min:c,max:f,len:f-c,total:u,isClosed:0===c&&f===u&&Math.abs(n.x-i.x)<.1&&Math.abs(n.y-i.y)<.1}},r.findPointOnPath=function(t,e,r,n){for(var i,a,o,s=(n=n||{}).pathLength||t.getTotalLength(),l=n.tolerance||.001,c=n.iterationLimit||30,u=t.getPointAtLength(0)[r]>t.getPointAtLength(s)[r]?-1:1,f=0,h=0,d=s;f0?d=i:h=i,f++}return a}},{"./mod":731}],719:[function(t,e,r){"use strict";e.exports=function(t){var e;if("string"==typeof t){if(null===(e=document.getElementById(t)))throw new Error("No DOM element with id '"+t+"' exists on the page.");return e}if(null===t||void 0===t)throw new Error("DOM element provided is null or undefined");return t}},{}],720:[function(t,e,r){"use strict";var n=t("fast-isnumeric"),i=t("color-normalize"),a=t("../components/colorscale"),o=t("../components/color/attributes").defaultLine,s=i(o),l=1;function c(t,e){var r=t;return r[3]*=e,r}function u(t){if(n(t))return s;var e=i(t);return e.length?e:s}function f(t){return n(t)?t:l}e.exports=function(t,e,r){var n,o,h,d,p,m=t.color,v=Array.isArray(m),g=Array.isArray(e),y=[];if(n=void 0!==t.colorscale?a.makeColorScaleFunc(a.extractScale(t.colorscale,t.cmin,t.cmax)):u,o=v?function(t,e){return void 0===t[e]?s:i(n(t[e]))}:u,h=g?function(t,e){return void 0===t[e]?l:f(t[e])}:f,v||g)for(var b=0;b=0;){var n=t.indexOf(";",r);if(n/g,"")}(function(t){for(var e=0;(e=t.indexOf("",e))>=0;){var r=t.indexOf("",e);if(r/g,"\n"))))}},{"../constants/string_mappings":703,"superscript-text":519}],723:[function(t,e,r){"use strict";e.exports=function(t){return t}},{}],724:[function(t,e,r){"use strict";var n=t("d3"),i=t("fast-isnumeric"),a=t("../constants/numerical"),o=a.FP_SAFE,s=a.BADNUM,l=e.exports={};l.nestedProperty=t("./nested_property"),l.keyedContainer=t("./keyed_container"),l.relativeAttr=t("./relative_attr"),l.isPlainObject=t("./is_plain_object"),l.isArray=t("./is_array"),l.mod=t("./mod"),l.toLogRange=t("./to_log_range"),l.relinkPrivateKeys=t("./relink_private"),l.ensureArray=t("./ensure_array");var c=t("./coerce");l.valObjectMeta=c.valObjectMeta,l.coerce=c.coerce,l.coerce2=c.coerce2,l.coerceFont=c.coerceFont,l.coerceHoverinfo=c.coerceHoverinfo,l.coerceSelectionMarkerOpacity=c.coerceSelectionMarkerOpacity,l.validate=c.validate;var u=t("./dates");l.dateTime2ms=u.dateTime2ms,l.isDateTime=u.isDateTime,l.ms2DateTime=u.ms2DateTime,l.ms2DateTimeLocal=u.ms2DateTimeLocal,l.cleanDate=u.cleanDate,l.isJSDate=u.isJSDate,l.formatDate=u.formatDate,l.incrementMonth=u.incrementMonth,l.dateTick0=u.dateTick0,l.dfltRange=u.dfltRange,l.findExactDates=u.findExactDates,l.MIN_MS=u.MIN_MS,l.MAX_MS=u.MAX_MS;var f=t("./search");l.findBin=f.findBin,l.sorterAsc=f.sorterAsc,l.sorterDes=f.sorterDes,l.distinctVals=f.distinctVals,l.roundUp=f.roundUp;var h=t("./stats");l.aggNums=h.aggNums,l.len=h.len,l.mean=h.mean,l.variance=h.variance,l.stdev=h.stdev,l.interp=h.interp;var d=t("./matrix");l.init2dArray=d.init2dArray,l.transposeRagged=d.transposeRagged,l.dot=d.dot,l.translationMatrix=d.translationMatrix,l.rotationMatrix=d.rotationMatrix,l.rotationXYMatrix=d.rotationXYMatrix,l.apply2DTransform=d.apply2DTransform,l.apply2DTransform2=d.apply2DTransform2;var p=t("./angles");l.deg2rad=p.deg2rad,l.rad2deg=p.rad2deg,l.wrap360=p.wrap360,l.wrap180=p.wrap180;var m=t("./geometry2d");l.segmentsIntersect=m.segmentsIntersect,l.segmentDistance=m.segmentDistance,l.getTextLocation=m.getTextLocation,l.clearLocationCache=m.clearLocationCache,l.getVisibleSegment=m.getVisibleSegment,l.findPointOnPath=m.findPointOnPath;var v=t("./extend");l.extendFlat=v.extendFlat,l.extendDeep=v.extendDeep,l.extendDeepAll=v.extendDeepAll,l.extendDeepNoArrays=v.extendDeepNoArrays;var g=t("./loggers");l.log=g.log,l.warn=g.warn,l.error=g.error;var y=t("./regex");l.counterRegex=y.counter;var b=t("./throttle");l.throttle=b.throttle,l.throttleDone=b.done,l.clearThrottle=b.clear,l.getGraphDiv=t("./get_graph_div"),l._=t("./localize"),l.notifier=t("./notifier"),l.filterUnique=t("./filter_unique"),l.filterVisible=t("./filter_visible"),l.pushUnique=t("./push_unique"),l.cleanNumber=t("./clean_number"),l.ensureNumber=function(t){return i(t)?(t=Number(t))<-o||t>o?s:i(t)?Number(t):s:s},l.noop=t("./noop"),l.identity=t("./identity"),l.swapAttrs=function(t,e,r,n){r||(r="x"),n||(n="y");for(var i=0;ir?Math.max(r,Math.min(e,t)):Math.max(e,Math.min(r,t))},l.bBoxIntersect=function(t,e,r){return r=r||0,t.left<=e.right+r&&e.left<=t.right+r&&t.top<=e.bottom+r&&e.top<=t.bottom+r},l.simpleMap=function(t,e,r,n){for(var i=t.length,a=new Array(i),o=0;o-1||c!==1/0&&c>=Math.pow(2,r)?t(e,r,n):s},l.OptionControl=function(t,e){t||(t={}),e||(e="opt");var r={optionList:[],_newoption:function(n){n[e]=t,r[n.name]=n,r.optionList.push(n)}};return r["_"+e]=t,r},l.smooth=function(t,e){if((e=Math.round(e)||0)<2)return t;var r,n,i,a,o=t.length,s=2*o,l=2*e-1,c=new Array(l),u=new Array(o);for(r=0;r=s&&(i-=s*Math.floor(i/s)),i<0?i=-1-i:i>=o&&(i=s-1-i),a+=t[i]*c[n];u[r]=a}return u},l.syncOrAsync=function(t,e,r){var n;function i(){return l.syncOrAsync(t,e,r)}for(;t.length;)if((n=(0,t.splice(0,1)[0])(e))&&n.then)return n.then(i).then(void 0,l.promiseError);return r&&r(e)},l.stripTrailingSlash=function(t){return"/"===t.substr(-1)?t.substr(0,t.length-1):t},l.noneOrAll=function(t,e,r){if(t){var n,i,a=!1,o=!0;for(n=0;n=0&&a%1==0){var p=n?n[d]:d,m=r?r[p]:p;f(m)&&(t[m].selected=1)}}},l.getTargetArray=function(t,e){var r=e.target;if("string"==typeof r&&r){var n=l.nestedProperty(t,r).get();return!!Array.isArray(n)&&n}return!!Array.isArray(r)&&r},l.minExtend=function(t,e){var r={};"object"!=typeof e&&(e={});var n,i,a,o=Object.keys(t);for(n=0;n1?i+o[1]:"";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,"$1"+a+"$2");return s+l};var w=/%{([^\s%{}]*)}/g,M=/^\w*$/;l.templateString=function(t,e){var r={};return t.replace(w,function(t,n){return M.test(n)?e[n]||"":(r[n]=r[n]||l.nestedProperty(e,n).get,r[n]()||"")})};l.subplotSort=function(t,e){for(var r=Math.min(t.length,e.length)+1,n=0,i=0,a=0;a=48&&o<=57,c=s>=48&&s<=57;if(l&&(n=10*n+o-48),c&&(i=10*i+s-48),!l||!c){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n}},{"../constants/numerical":702,"./angles":707,"./clean_number":708,"./coerce":709,"./dates":710,"./ensure_array":711,"./extend":713,"./filter_unique":714,"./filter_visible":715,"./geometry2d":718,"./get_graph_div":719,"./identity":723,"./is_array":725,"./is_plain_object":726,"./keyed_container":727,"./localize":728,"./loggers":729,"./matrix":730,"./mod":731,"./nested_property":732,"./noop":733,"./notifier":734,"./push_unique":737,"./regex":739,"./relative_attr":740,"./relink_private":741,"./search":742,"./stats":745,"./throttle":748,"./to_log_range":749,d3:128,"fast-isnumeric":140}],725:[function(t,e,r){"use strict";var n="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer:{isView:function(){return!1}};e.exports=function(t){return Array.isArray(t)||n.isView(t)}},{}],726:[function(t,e,r){"use strict";e.exports=function(t){return window&&window.process&&window.process.versions?"[object Object]"===Object.prototype.toString.call(t):"[object Object]"===Object.prototype.toString.call(t)&&Object.getPrototypeOf(t)===Object.prototype}},{}],727:[function(t,e,r){"use strict";var n=t("./nested_property"),i=/^\w*$/;e.exports=function(t,e,r,a){var o,s;r=r||"name",a=a||"value";var l={};s=e&&e.length?n(t,e).get():t,e=e||"",s=s||[];var c={};for(o=0;o2)return l[e]=2|l[e],f.set(t,null);if(u){for(o=e;o1){for(var t=["LOG:"],e=0;e0){for(var t=["WARN:"],e=0;e0){for(var t=["ERROR:"],e=0;e=0;e--){if(n=t[e][0],a=t[e][1],s=!1,i(n))for(r=n.length-1;r>=0;r--)c(n[r],f(a,r))?s?n[r]=void 0:n.pop():s=!0;else if("object"==typeof n&&null!==n)for(o=Object.keys(n),s=!1,r=o.length-1;r>=0;r--)c(n[o[r]],f(a,o[r]))?delete n[o[r]]:s=!0;if(s)return}}(u)):s[e[o]]=n}}function f(t,e){var r=e;return n(e)?r="["+e+"]":t&&(r="."+e),t+r}function h(t,e,r,n){var a,o=i(r),s=!0,l=r,f=n.replace("-1",0),h=!o&&c(r,f),p=e[0];for(a=0;a/g),o=0;oo||a===i||al||e&&c(t))}:function(t,e){var a=t[0],c=t[1];if(a===i||ao||c===i||cl)return!1;var u,f,h,d,p,m=r.length,v=r[0][0],g=r[0][1],y=0;for(u=1;uMath.max(f,v)||c>Math.max(h,g)))if(cu||Math.abs(n(o,h))>i)return!0;return!1};a.filter=function(t,e){var r=[t[0]],n=0,i=0;function a(a){t.push(a);var s=r.length,l=n;r.splice(i+1);for(var c=l+1;c1&&a(t.pop());return{addPt:a,raw:t,filtered:r}}},{"../constants/numerical":702,"./matrix":730}],737:[function(t,e,r){"use strict";e.exports=function(t,e){if(e instanceof RegExp){var r,n=e.toString();for(r=0;ri.queueLength&&(t.undoQueue.queue.shift(),t.undoQueue.index--))},startSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!0,t.undoQueue.beginSequence=!0},stopSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!1,t.undoQueue.beginSequence=!1},undo:function(t){var e,r;if(t.framework&&t.framework.isPolar)t.framework.undo();else if(!(void 0===t.undoQueue||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;r=t.undoQueue.queue.length)){for(e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;re}function l(t,e){return t>=e}r.findBin=function(t,e,r){if(n(e.start))return r?Math.ceil((t-e.start)/e.size-1e-9)-1:Math.floor((t-e.start)/e.size+1e-9);var c,u,f=0,h=e.length,d=0,p=h>1?(e[h-1]-e[0])/(h-1):1;for(u=p>=0?r?a:o:r?l:s,t+=1e-9*p*(r?-1:1)*(p>=0?1:-1);f90&&i.log("Long binary search..."),f-1},r.sorterAsc=function(t,e){return t-e},r.sorterDes=function(t,e){return e-t},r.distinctVals=function(t){var e=t.slice();e.sort(r.sorterAsc);for(var n=e.length-1,i=e[n]-e[0]||1,a=i/(n||1)/1e4,o=[e[0]],s=0;se[s]+a&&(i=Math.min(i,e[s+1]-e[s]),o.push(e[s+1]));return{vals:o,minDiff:i}},r.roundUp=function(t,e,r){for(var n,i=0,a=e.length-1,o=0,s=r?0:1,l=r?1:0,c=r?Math.ceil:Math.floor;it.length-1)return t[t.length-1];var r=e%1;return r*t[Math.ceil(e)]+(1-r)*t[Math.floor(e)]}},{"fast-isnumeric":140}],746:[function(t,e,r){"use strict";var n=t("color-normalize");e.exports=function(t){return t?n(t):[0,0,0,1]}},{"color-normalize":99}],747:[function(t,e,r){"use strict";var n=t("d3"),i=t("../lib"),a=t("../constants/xmlns_namespaces"),o=t("../constants/string_mappings"),s=t("../constants/alignment").LINE_SPACING;function l(t,e){return t.node().getBoundingClientRect()[e]}var c=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;r.convertToTspans=function(t,e,o){var g=t.text(),L=!t.attr("data-notex")&&"undefined"!=typeof MathJax&&g.match(c),C=n.select(t.node().parentNode);if(!C.empty()){var P=t.attr("class")?t.attr("class").split(" ")[0]:"text";return P+="-math",C.selectAll("svg."+P).remove(),C.selectAll("g."+P+"-group").remove(),t.style("display",null).attr({"data-unformatted":g,"data-math":"N"}),L?(e&&e._promises||[]).push(new Promise(function(e){t.style("display","none");var r=parseInt(t.node().style.fontSize,10),a={fontSize:r};!function(t,e,r){var a="math-output-"+i.randstr([],64),o=n.select("body").append("div").attr({id:a}).style({visibility:"hidden",position:"absolute"}).style({"font-size":e.fontSize+"px"}).text((s=t,s.replace(u,"\\lt ").replace(f,"\\gt ")));var s;MathJax.Hub.Queue(["Typeset",MathJax.Hub,o.node()],function(){var e=n.select("body").select("#MathJax_SVG_glyphs");if(o.select(".MathJax_SVG").empty()||!o.select("svg").node())i.log("There was an error in the tex syntax.",t),r();else{var a=o.select("svg").node().getBoundingClientRect();r(o.select(".MathJax_SVG"),e,a)}o.remove()})}(L[2],a,function(n,i,a){C.selectAll("svg."+P).remove(),C.selectAll("g."+P+"-group").remove();var s=n&&n.select("svg");if(!s||!s.node())return z(),void e();var c=C.append("g").classed(P+"-group",!0).attr({"pointer-events":"none","data-unformatted":g,"data-math":"Y"});c.node().appendChild(s.node()),i&&i.node()&&s.node().insertBefore(i.node().cloneNode(!0),s.node().firstChild),s.attr({class:P,height:a.height,preserveAspectRatio:"xMinYMin meet"}).style({overflow:"visible","pointer-events":"none"});var u=t.node().style.fill||"black";s.select("g").attr({fill:u,stroke:u});var f=l(s,"width"),h=l(s,"height"),d=+t.attr("x")-f*{start:0,middle:.5,end:1}[t.attr("text-anchor")||"start"],p=-(r||l(t,"height"))/4;"y"===P[0]?(c.attr({transform:"rotate("+[-90,+t.attr("x"),+t.attr("y")]+") translate("+[-f/2,p-h/2]+")"}),s.attr({x:+t.attr("x"),y:+t.attr("y")})):"l"===P[0]?s.attr({x:t.attr("x"),y:p-h/2}):"a"===P[0]?s.attr({x:0,y:p}):s.attr({x:d,y:+t.attr("y")+p-h/2}),o&&o.call(t,c),e(c)})})):z(),t}function z(){C.empty()||(P=t.attr("class")+"-math",C.select("svg."+P).remove()),t.text("").style("white-space","pre"),function(t,e){e=(r=e,function(t,e){if(!t)return"";for(var r=0;r1)for(var i=1;i doesnt match end tag <"+t+">. Pretending it did match.",e),o=c[c.length-1].node}else i.log("Ignoring unexpected end tag .",e)}w.test(e)?f():(o=t,c=[{node:t}]);for(var P=e.split(x),z=0;z|>|>)/g;var h={sup:"font-size:70%",sub:"font-size:70%",b:"font-weight:bold",i:"font-style:italic",a:"cursor:pointer",span:"",em:"font-style:italic;font-weight:bold"},d={sub:"0.3em",sup:"-0.6em"},p={sub:"-0.21em",sup:"0.42em"},m="\u200b",v=["http:","https:","mailto:","",void 0,":"],g=new RegExp("]*)?/?>","g"),y=Object.keys(o.entityToUnicode).map(function(t){return{regExp:new RegExp("&"+t+";","g"),sub:o.entityToUnicode[t]}}),b=/(\r\n?|\n)/g,x=/(<[^<>]*>)/,_=/<(\/?)([^ >]*)(\s+(.*))?>/i,w=//i,M=/(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i,k=/(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i,A=/(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i,T=/(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;function E(t,e){if(!t)return null;var r=t.match(e);return r&&(r[3]||r[4])}var S=/(^|;)\s*color:/;function L(t,e,r){var n,i,a,o=r.horizontalAlign,s=r.verticalAlign||"top",l=t.node().getBoundingClientRect(),c=e.node().getBoundingClientRect();return i="bottom"===s?function(){return l.bottom-n.height}:"middle"===s?function(){return l.top+(l.height-n.height)/2}:function(){return l.top},a="right"===o?function(){return l.right-n.width}:"center"===o?function(){return l.left+(l.width-n.width)/2}:function(){return l.left},function(){return n=this.node().getBoundingClientRect(),this.style({top:i()-c.top+"px",left:a()-c.left+"px","z-index":1e3}),this}}r.plainText=function(t){return(t||"").replace(g," ")},r.lineCount=function(t){return t.selectAll("tspan.line").size()||1},r.positionText=function(t,e,r){return t.each(function(){var t=n.select(this);function i(e,r){return void 0===r?null===(r=t.attr(e))&&(t.attr(e,0),r=0):t.attr(e,r),r}var a=i("x",e),o=i("y",r);"text"===this.nodeName&&t.selectAll("tspan.line").attr({x:a,y:o})})},r.makeEditable=function(t,e){var r=e.gd,i=e.delegate,a=n.dispatch("edit","input","cancel"),o=i||t;if(t.style({"pointer-events":i?"none":"all"}),1!==t.size())throw new Error("boo");function s(){var i,s,c,u;i=n.select(r).select(".svg-container"),s=i.append("div"),c=t.node().style,u=parseFloat(c.fontSize||12),s.classed("plugin-editable editable",!0).style({position:"absolute","font-family":c.fontFamily||"Arial","font-size":u,color:e.fill||c.fill||"black",opacity:1,"background-color":e.background||"transparent",outline:"#ffffff33 1px solid",margin:[-u/8+1,0,0,-1].join("px ")+"px",padding:"0","box-sizing":"border-box"}).attr({contenteditable:!0}).text(e.text||t.attr("data-unformatted")).call(L(t,i,e)).on("blur",function(){r._editing=!1,t.text(this.textContent).style({opacity:1});var e,i=n.select(this).attr("class");(e=i?"."+i.split(" ")[0]+"-math-group":"[class*=-math-group]")&&n.select(t.node().parentNode).select(e).style({opacity:0});var o=this.textContent;n.select(this).transition().duration(0).remove(),n.select(document).on("mouseup",null),a.edit.call(t,o)}).on("focus",function(){var t=this;r._editing=!0,n.select(document).on("mouseup",function(){if(n.event.target===t)return!1;document.activeElement===s.node()&&s.node().blur()})}).on("keyup",function(){27===n.event.which?(r._editing=!1,t.style({opacity:1}),n.select(this).style({opacity:0}).on("blur",function(){return!1}).transition().remove(),a.cancel.call(t,this.textContent)):(a.input.call(t,this.textContent),n.select(this).call(L(t,i,e)))}).on("keydown",function(){13===n.event.which&&this.blur()}).call(l),t.style({opacity:0});var f,h=o.attr("class");(f=h?"."+h.split(" ")[0]+"-math-group":"[class*=-math-group]")&&n.select(t.node().parentNode).select(f).style({opacity:0})}function l(t){var e=t.node(),r=document.createRange();r.selectNodeContents(e);var n=window.getSelection();n.removeAllRanges(),n.addRange(r),e.focus()}return e.immediate?s():o.on("click",s),n.rebind(t,a,"on")}},{"../constants/alignment":696,"../constants/string_mappings":703,"../constants/xmlns_namespaces":704,"../lib":724,d3:128}],748:[function(t,e,r){"use strict";var n={};function i(t){t&&null!==t.timer&&(clearTimeout(t.timer),t.timer=null)}r.throttle=function(t,e,r){var a=n[t],o=Date.now();if(!a){for(var s in n)n[s].tsa.ts+e?l():a.timer=setTimeout(function(){l(),a.timer=null},e)},r.done=function(t){var e=n[t];return e&&e.timer?new Promise(function(t){var r=e.onDone;e.onDone=function(){r&&r(),t(),e.onDone=null}}):Promise.resolve()},r.clear=function(t){if(t)i(n[t]),delete n[t];else for(var e in n)r.clear(e)}},{}],749:[function(t,e,r){"use strict";var n=t("fast-isnumeric");e.exports=function(t,e){if(t>0)return Math.log(t)/Math.LN10;var r=Math.log(Math.min(e[0],e[1]))/Math.LN10;return n(r)||(r=Math.log(Math.max(e[0],e[1]))/Math.LN10-6),r}},{"fast-isnumeric":140}],750:[function(t,e,r){"use strict";var n=e.exports={},i=t("../plots/geo/constants").locationmodeToLayer,a=t("topojson-client").feature;n.getTopojsonName=function(t){return[t.scope.replace(/ /g,"-"),"_",t.resolution.toString(),"m"].join("")},n.getTopojsonPath=function(t,e){return t+e+".json"},n.getTopojsonFeatures=function(t,e){var r=i[t.locationmode],n=e.objects[r];return a(e,n).features}},{"../plots/geo/constants":799,"topojson-client":529}],751:[function(t,e,r){"use strict";e.exports={moduleType:"locale",name:"en-US",dictionary:{"Click to enter Colorscale title":"Click to enter Colorscale title"},format:{date:"%m/%d/%Y"}}},{}],752:[function(t,e,r){"use strict";e.exports={moduleType:"locale",name:"en",dictionary:{"Click to enter Colorscale title":"Click to enter Colourscale title"},format:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],periods:["AM","PM"],dateTime:"%a %b %e %X %Y",date:"%d/%m/%Y",time:"%H:%M:%S",decimal:".",thousands:",",grouping:[3],currency:["$",""],year:"%Y",month:"%b %Y",dayMonth:"%b %-d",dayMonthYear:"%b %-d, %Y"}}},{}],753:[function(t,e,r){"use strict";var n=t("../registry");e.exports=function(t){for(var e,r,i=n.layoutArrayContainers,a=n.layoutArrayRegexes,o=t.split("[")[0],s=0;s0&&o.log("Clearing previous rejected promises from queue."),t._promises=[]},r.cleanLayout=function(t){var e,r;t||(t={}),t.xaxis1&&(t.xaxis||(t.xaxis=t.xaxis1),delete t.xaxis1),t.yaxis1&&(t.yaxis||(t.yaxis=t.yaxis1),delete t.yaxis1),t.scene1&&(t.scene||(t.scene=t.scene1),delete t.scene1);var n=(s.subplotsRegistry.cartesian||{}).attrRegex,a=(s.subplotsRegistry.gl3d||{}).attrRegex,l=Object.keys(t);for(e=0;e3?(T.x=1.02,T.xanchor="left"):T.x<-2&&(T.x=-.02,T.xanchor="right"),T.y>3?(T.y=1.02,T.yanchor="bottom"):T.y<-2&&(T.y=-.02,T.yanchor="top")),"rotate"===t.dragmode&&(t.dragmode="orbit"),f.clean(t),t},r.cleanData=function(t,e){for(var n=[],i=t.concat(Array.isArray(e)?e:[]).filter(function(t){return"uid"in t}).map(function(t){return t.uid}),l=0;l0)return t.substr(0,e)}r.hasParent=function(t,e){for(var r=v(e);r;){if(r in t)return!0;r=v(r)}return!1};var g=["x","y","z"];r.clearAxisTypes=function(t,e,r){for(var n=0;n1&&o.warn("Full array edits are incompatible with other edits",f);var y=r[""][""];if(u(y))e.set(null);else{if(!Array.isArray(y))return o.warn("Unrecognized full array edit value",f,y),!0;e.set(y)}return!m&&(h(v,g),d(t),!0)}var b,x,_,w,M,k,A,T=Object.keys(r).map(Number).sort(s),E=e.get(),S=E||[],L=n(g,f).get(),C=[],P=-1,z=S.length;for(b=0;bS.length-(A?0:1))o.warn("index out of range",f,_);else if(void 0!==k)M.length>1&&o.warn("Insertion & removal are incompatible with edits to the same index.",f,_),u(k)?C.push(_):A?("add"===k&&(k={}),S.splice(_,0,k),L&&L.splice(_,0,{})):o.warn("Unrecognized full object edit value",f,_,k),-1===P&&(P=_);else for(x=0;x=0;b--)S.splice(C[b],1),L&&L.splice(C[b],1);if(S.length?E||e.set(S):e.set(null),m)return!1;if(h(v,g),p!==a){var O;if(-1===P)O=T;else{for(z=Math.max(S.length,z),O=[],b=0;b=P);b++)O.push(_);for(b=P;b=t.data.length||i<-t.data.length)throw new Error(r+" must be valid indices for gd.data.");if(e.indexOf(i,n+1)>-1||i>=0&&e.indexOf(-t.data.length+i)>-1||i<0&&e.indexOf(t.data.length+i)>-1)throw new Error("each index in "+r+" must be unique.")}}function I(t,e,r){if(!Array.isArray(t.data))throw new Error("gd.data must be an array.");if(void 0===e)throw new Error("currentIndices is a required argument.");if(Array.isArray(e)||(e=[e]),D(t,e,"currentIndices"),void 0===r||Array.isArray(r)||(r=[r]),void 0!==r&&D(t,r,"newIndices"),void 0!==r&&e.length!==r.length)throw new Error("current and new indices must be of equal length.")}function R(t,e,r,n,a,o){!function(t,e,r,n){var i=s.isPlainObject(n);if(!Array.isArray(t.data))throw new Error("gd.data must be an array");if(!s.isPlainObject(e))throw new Error("update must be a key:value object");if(void 0===r)throw new Error("indices must be an integer or array of integers");for(var a in D(t,r,"indices"),e){if(!Array.isArray(e[a])||e[a].length!==r.length)throw new Error("attribute "+a+" must be an array of length equal to indices array length");if(i&&(!(a in n)||!Array.isArray(n[a])||n[a].length!==e[a].length))throw new Error("when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object")}}(t,e,r,n);for(var l,c,u,f=function(t,e,r,n){var a,o,l,c,u,f=s.isPlainObject(n),h=[];for(var d in Array.isArray(r)||(r=[r]),r=O(r,t.data.length-1),e)for(var p=0;p=0&&uY.range[0]?[1,2]:[2,1]);else{var Z=Y.range[0],J=Y.range[1];W?(Z<=0&&J<=0&&A(F+".autorange",!0),Z<=0?Z=J/1e6:J<=0&&(J=Z/1e6),A(F+".range[0]",Math.log(Z)/Math.LN10),A(F+".range[1]",Math.log(J)/Math.LN10)):(A(F+".range[0]",Math.pow(10,Z)),A(F+".range[1]",Math.pow(10,J)))}else A(F+".autorange",!0);Array.isArray(l._subplots.polar)&&l._subplots.polar.length&&l[P.parts[0]]&&"radialaxis"===P.parts[1]&&delete l[P.parts[0]]._subplot.viewInitial["radialaxis.range"],u.getComponentMethod("annotations","convertCoords")(t,U,z,A),u.getComponentMethod("images","convertCoords")(t,U,z,A)}else A(F+".autorange",!0),A(F+".range",null);s.nestedProperty(l,F+"._inputRange").set(null)}else if(I.match(k.AX_NAME_PATTERN)){var K=s.nestedProperty(l,C).get(),Q=(z||{}).type;Q&&"-"!==Q||(Q="linear"),u.getComponentMethod("annotations","convertCoords")(t,K,Q,A),u.getComponentMethod("images","convertCoords")(t,K,Q,A)}var $=x.containerArrayMatch(C);if($){r=$.array,n=$.index;var tt=$.property,et=(s.nestedProperty(a,r)||[])[n]||{},rt=et,nt=q||{editType:"calc"},it=-1!==nt.editType.indexOf("calcIfAutorange");""===n?(it?y.calc=!0:M.update(y,nt),it=!1):""===tt&&(rt=z,x.isAddVal(z)?w[C]=null:x.isRemoveVal(z)?(w[C]=et,rt=et):s.warn("unrecognized full object value",e)),it&&(B(t,rt,"x")||B(t,rt,"y"))?y.calc=!0:M.update(y,nt),p[r]||(p[r]={});var at=p[r][n];at||(at=p[r][n]={}),at[tt]=z,delete e[C]}else"reverse"===I?(j.range?j.range.reverse():(A(F+".autorange",!0),j.range=[1,0]),U.autorange?y.calc=!0:y.plot=!0):((!l._has("gl2d")&&!l._has("regl")||"dragmode"!==C||"lasso"!==z&&"select"!==z||"lasso"===V||"select"===V)&&q?M.update(y,q):y.calc=!0,P.set(z))}}for(r in p){x.applyContainerArrayChanges(t,s.nestedProperty(a,r),p[r],y)||(y.plot=!0)}var ot=l._axisConstraintGroups||[];for(T in E)for(n=0;n=i.length?i[0]:i[t]:i}function l(t){return Array.isArray(a)?t>=a.length?a[0]:a[t]:a}function c(t,e){var r=0;return function(){if(t&&++r===e)return t()}}return void 0===n._frameWaitingCnt&&(n._frameWaitingCnt=0),new Promise(function(a,u){function f(){n._currentFrame&&n._currentFrame.onComplete&&n._currentFrame.onComplete();var e=n._currentFrame=n._frameQueue.shift();if(e){var r=e.name?e.name.toString():null;t._fullLayout._currentFrame=r,n._lastFrameAt=Date.now(),n._timeToNext=e.frameOpts.duration,h.transition(t,e.frame.data,e.frame.layout,_.coerceTraceIndices(t,e.frame.traces),e.frameOpts,e.transitionOpts).then(function(){e.onComplete&&e.onComplete()}),t.emit("plotly_animatingframe",{name:r,frame:e.frame,animation:{frame:e.frameOpts,transition:e.transitionOpts}})}else t.emit("plotly_animated"),window.cancelAnimationFrame(n._animationRaf),n._animationRaf=null}function d(){t.emit("plotly_animating"),n._lastFrameAt=-1/0,n._timeToNext=0,n._runningTransitions=0,n._currentFrame=null;var e=function(){n._animationRaf=window.requestAnimationFrame(e),Date.now()-n._lastFrameAt>n._timeToNext&&f()};e()}var p,m,v=0;function g(t){return Array.isArray(i)?v>=i.length?t.transitionOpts=i[v]:t.transitionOpts=i[0]:t.transitionOpts=i,v++,t}var y=[],b=void 0===e||null===e,x=Array.isArray(e);if(!b&&!x&&s.isPlainObject(e))y.push({type:"object",data:g(s.extendFlat({},e))});else if(b||-1!==["string","number"].indexOf(typeof e))for(p=0;p0&&kk)&&A.push(m);y=A}}y.length>0?function(e){if(0!==e.length){for(var i=0;i=0;n--)if(s.isPlainObject(e[n])){var m=e[n].name,v=(u[m]||p[m]||{}).name,g=e[n].name,y=u[v]||p[v];v&&g&&"number"==typeof g&&y&&L<5&&(L++,s.warn('addFrames: overwriting frame "'+(u[v]||p[v]).name+'" with a frame whose name of type "number" also equates to "'+v+'". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.'),5===L&&s.warn("addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.")),p[m]={name:m},d.push({frame:h.supplyFrameDefaults(e[n]),index:r&&void 0!==r[n]&&null!==r[n]?r[n]:f+n})}d.sort(function(t,e){return t.index>e.index?-1:t.index=0;n--){if("number"==typeof(i=d[n].frame).name&&s.warn("Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings"),!i.name)for(;u[i.name="frame "+t._transitionData._counter++];);if(u[i.name]){for(a=0;a=0;r--)n=e[r],a.push({type:"delete",index:n}),o.unshift({type:"insert",index:n,value:i[n]});var l=h.modifyFrames,u=h.modifyFrames,f=[t,o],d=[t,a];return c&&c.add(t,l,f,u,d),h.modifyFrames(t,a)},o.purge=function(t){var e=(t=s.getGraphDiv(t))._fullLayout||{},r=t._fullData||[];return h.cleanPlot([],{},r,e),h.purge(t),l.purge(t),e._container&&e._container.remove(),delete t._context,t}},{"../components/color":598,"../components/drawing":623,"../components/errorbars":629,"../constants/xmlns_namespaces":704,"../lib":724,"../lib/events":712,"../lib/queue":738,"../lib/svg_text_utils":747,"../plotly":765,"../plots/cartesian/axis_ids":773,"../plots/cartesian/constants":775,"../plots/cartesian/constraints":777,"../plots/cartesian/graph_interact":779,"../plots/plots":833,"../plots/polar/legacy":841,"../registry":854,"./edit_types":754,"./helpers":755,"./manage_arrays":756,"./plot_schema":759,"./subroutines":762,d3:128,"fast-isnumeric":140,"has-hover":255}],758:[function(t,e,r){"use strict";e.exports={staticPlot:!1,editable:!1,edits:{annotationPosition:!1,annotationTail:!1,annotationText:!1,axisTitleText:!1,colorbarPosition:!1,colorbarTitleText:!1,legendPosition:!1,legendText:!1,shapePosition:!1,titleText:!1},autosizable:!1,queueLength:0,fillFrame:!1,frameMargins:0,scrollZoom:!1,doubleClick:"reset+autosize",showTips:!0,showAxisDragHandles:!0,showAxisRangeEntryBoxes:!0,showLink:!1,sendData:!0,linkText:"Edit chart",showSources:!1,displayModeBar:"hover",modeBarButtonsToRemove:[],modeBarButtonsToAdd:[],modeBarButtons:!1,displaylogo:!0,plotGlPixelRatio:2,setBackground:"transparent",topojsonURL:"https://cdn.plot.ly/",mapboxAccessToken:null,logging:1,globalTransforms:[],locale:"en-US",locales:{}}},{}],759:[function(t,e,r){"use strict";var n=t("../registry"),i=t("../lib"),a=t("../plots/attributes"),o=t("../plots/layout_attributes"),s=t("../plots/frame_attributes"),l=t("../plots/animation_attributes"),c=t("../plots/polar/legacy/area_attributes"),u=t("../plots/polar/legacy/axis_attributes"),f=t("./edit_types"),h=i.extendFlat,d=i.extendDeepAll,p="_isSubplotObj",m="_isLinkedToArray",v=[p,m,"_arrayAttrRegexps","_deprecated"];function g(t,e,r){if(!t)return!1;if(t._isLinkedToArray)if(y(e[r]))r++;else if(r=t.items.length)return!1;t=t.items[a]}}return t}function y(t){return t===Math.round(t)&&t>=0}function b(t){return function(t){r.crawl(t,function(t,e,n){r.isValObject(t)?"data_array"===t.valType?(t.role="data",n[e+"src"]={valType:"string",editType:"none"}):!0===t.arrayOk&&(n[e+"src"]={valType:"string",editType:"none"}):i.isPlainObject(t)&&(t.role="object")})}(t),function(t){r.crawl(t,function(t,e,r){if(!t)return;var n=t[m];if(!n)return;delete t[m],r[e]={items:{}},r[e].items[n]=t,r[e].role="object"})}(t),t}function x(t,e,r){var n=i.nestedProperty(t,r),a=d({},e.layoutAttributes);a[p]=!0,n.set(a)}function _(t,e,r){var n=i.nestedProperty(t,r);n.set(d(n.get()||{},e))}r.IS_SUBPLOT_OBJ=p,r.IS_LINKED_TO_ARRAY=m,r.DEPRECATED="_deprecated",r.UNDERSCORE_ATTRS=v,r.get=function(){var t={};n.allTypes.concat("area").forEach(function(e){t[e]=function(t){var e,r;"area"===t?(e={attributes:c},r={}):(e=n.modules[t]._module,r=e.basePlotModule);var i={type:null};d(i,a),d(i,e.attributes),r.attributes&&d(i,r.attributes);i.type=t;var o={meta:e.meta||{},attributes:b(i)};if(e.layoutAttributes){var s={};d(s,e.layoutAttributes),o.layoutAttributes=b(s)}return o}(e)});var e,r={};return Object.keys(n.transformsRegistry).forEach(function(t){r[t]=function(t){var e=n.transformsRegistry[t],r=d({},e.attributes);return Object.keys(n.componentsRegistry).forEach(function(e){var i=n.componentsRegistry[e];i.schema&&i.schema.transforms&&i.schema.transforms[t]&&Object.keys(i.schema.transforms[t]).forEach(function(e){_(r,i.schema.transforms[t][e],e)})}),{attributes:b(r)}}(t)}),{defs:{valObjects:i.valObjectMeta,metaKeys:v.concat(["description","role","editType","impliedEdits"]),editType:{traces:f.traces,layout:f.layout},impliedEdits:{}},traces:t,layout:function(){var t,e,r={};for(t in d(r,o),n.subplotsRegistry)if((e=n.subplotsRegistry[t]).layoutAttributes)if("cartesian"===e.name)x(r,e,"xaxis"),x(r,e,"yaxis");else{var i="subplot"===e.attr?e.name:e.attr;x(r,e,i)}for(t in r=function(t){return h(t,{radialaxis:u.radialaxis,angularaxis:u.angularaxis}),h(t,u.layout),t}(r),n.componentsRegistry){var a=(e=n.componentsRegistry[t]).schema;if(a&&(a.subplots||a.layout)){var s=a.subplots;if(s&&s.xaxis&&!s.yaxis)for(var l in s.xaxis)delete r.yaxis[l]}else e.layoutAttributes&&_(r,e.layoutAttributes,e.name)}return{layoutAttributes:b(r)}}(),transforms:r,frames:(e={frames:i.extendDeepAll({},s)},b(e),e.frames),animation:b(l)}},r.crawl=function(t,e,n,a){var o=n||0;a=a||"",Object.keys(t).forEach(function(n){var s=t[n];if(-1===v.indexOf(n)){var l=(a?a+".":"")+n;e(s,n,t,o,l),r.isValObject(s)||i.isPlainObject(s)&&"impliedEdits"!==n&&r.crawl(s,e,o+1,l)}})},r.isValObject=function(t){return t&&void 0!==t.valType},r.findArrayAttributes=function(t){var e=[],n=[];function o(r,a,o,s){if(n=n.slice(0,s).concat([a]),r&&("data_array"===r.valType||!0===r.arrayOk)&&!("colorbar"===n[s-1]&&("ticktext"===a||"tickvals"===a))){var l=function(t){return t.join(".")}(n),c=i.nestedProperty(t,l).get();Array.isArray(c)&&e.push(l)}}if(r.crawl(a,o),t._module&&t._module.attributes&&r.crawl(t._module.attributes,o),t.transforms)for(var s=t.transforms,l=0;l=t.transforms.length)return!1;i=(r=(n.transformsRegistry[t.transforms[l].type]||{}).attributes)&&r[e[2]],s=3}else if("area"===t.type)i=c[o];else{var u=t._module;if(u||(u=(n.modules[t.type||a.type.dflt]||{})._module),!u)return!1;if(!(i=(r=u.attributes)&&r[o])){var f=u.basePlotModule;f&&f.attributes&&(i=f.attributes[o])}i||(i=a[o])}return g(i,e,s)},r.getLayoutValObject=function(t,e){return g(function(t,e){var r,i,a,s,l=t._basePlotModules;if(l){var c;for(r=0;r=t[1]||i[1]<=t[0])&&a[0]e[0])return!0}return!1}(r,n,w)?(_.push(t),w.push([r,n])):i=[0];var o=e.plotgroup.selectAll(".bg").data(i);o.enter().append("rect").classed("bg",!0),o.exit().remove(),o.each(function(){e.bg=o;var t=e.plotgroup.node();t.insertBefore(this,t.childNodes[0])})});var M=a._bgLayer.selectAll(".bg").data(_);return M.enter().append("rect").classed("bg",!0),M.exit().remove(),M.each(function(t){a._plots[t].bg=n.select(this)}),x.each(function(t){var r=a._plots[t],n=r.xaxis,i=r.yaxis;r.bg&&h&&r.bg.call(c.setRect,n._offset-s,i._offset-s,n._length+2*s,i._length+2*s).call(l.fill,a.plot_bgcolor).style("stroke-width",0),r.clipId="clip"+a._uid+t+"plot";var o,f,p=a._clips.selectAll("#"+r.clipId).data([0]);for(p.enter().append("clipPath").attr({class:"plotclip",id:r.clipId}).append("rect"),p.selectAll("rect").attr({width:n._length,height:i._length}),c.setTranslate(r.plot,n._offset,i._offset),r._hasClipOnAxisFalse?(o=null,f=r.clipId):(o=r.clipId,f=null),c.setClipUrl(r.plot,o),e=0;e1&&d.push(h("object","layout"))),i.supplyDefaults(p);for(var m=p._fullData,v=r.length,g=0;g2e-6||((r-t._forceTick0)/t._minDtick%1+1.000001)%1>2e-6)&&(t._minDtick=0)):t._minDtick=0},w.getAutoRange=function(t){var e,r=[],n=t._min[0].val,i=t._max[0].val;for(e=1;e0&&f>0&&h/f>d&&(c=s,u=l,d=h/f);if(n===i){var v=n-1,g=n+1;r="tozero"===t.rangemode?n<0?[v,0]:[0,g]:"nonnegative"===t.rangemode?[Math.max(0,v),Math.max(0,g)]:[v,g]}else d&&("linear"!==t.type&&"-"!==t.type||("tozero"===t.rangemode?(c.val>=0&&(c={val:0,pad:0}),u.val<=0&&(u={val:0,pad:0})):"nonnegative"===t.rangemode&&(c.val-d*c.pad<0&&(c={val:0,pad:0}),u.val<0&&(u={val:1,pad:0})),d=(u.val-c.val)/(t._length-c.pad-u.pad)),r=[c.val-d*c.pad,u.val+d*u.pad]);return r[0]===r[1]&&("tozero"===t.rangemode?r=r[0]<0?[r[0],0]:r[0]>0?[0,r[0]]:[0,1]:(r=[r[0]-1,r[0]+1],"nonnegative"===t.rangemode&&(r[0]=Math.max(0,r[0])))),p&&r.reverse(),o.simpleMap(r,t.l2r||Number)},w.doAutoRange=function(t){t._length||t.setScale();var e=t._min&&t._max&&t._min.length&&t._max.length;if(t.autorange&&e){t.range=w.getAutoRange(t),t._r=t.range.slice(),t._rl=o.simpleMap(t._r,t.r2l);var r=t._input;r.range=t.range.slice(),r.autorange=t.autorange}},w.saveRangeInitial=function(t,e){for(var r=w.list(t,"",!0),n=!1,i=0;i0?r.ppadplus:r.ppadminus)||r.ppad||0),_=k((t._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),w=k(r.vpadplus||r.vpad),M=k(r.vpadminus||r.vpad);for(n=0;n<6;n++)A(n);for(n=g-1;n>5;n--)A(n)}function k(t){if(Array.isArray(t))return function(e){return Math.max(Number(t[e]||0),0)};var e=Math.max(Number(t||0),0);return function(){return e}}function A(r){if(l=e[r],i(l)){if(f=x(r)+y,d=_(r)+y,m=l-M(r),v=l+w(r),"log"===t.type&&m=d?p=!1:s.val>=c&&s.pad<=d&&(t._min.splice(a,1),a--);p&&t._min.push({val:c,pad:b&&0===c?0:d})}if(n(u)){for(p=!0,a=0;a=u&&s.pad>=f?p=!1:s.val<=u&&s.pad<=f&&(t._max.splice(a,1),a--);p&&t._max.push({val:u,pad:b&&0===u?0:f})}}function n(t){return i(t)&&Math.abs(t).3*h||u(n)||u(a))){var d=r.dtick/2;t+=t+d.8){var s=Number(r.substr(1));a.exactYears>.8&&s%12==0?t=w.tickIncrement(t,"M6","reverse")+1.5*m:a.exactMonths>.8?t=w.tickIncrement(t,"M1","reverse")+15.5*m:t-=m/2;var l=w.tickIncrement(t,r);if(l<=n)return l}return t}(g,t,l.dtick,c,a)),p=g,v=0;p<=u;)p=w.tickIncrement(p,l.dtick,!1,a),v++;return{start:e.c2r(g,0,a),end:e.c2r(p,0,a),size:l.dtick,_count:v}},w.calcTicks=function(t){var e=o.simpleMap(t.range,t.r2l);if("auto"===t.tickmode||!t.dtick){var r,n=t.nticks;n||("category"===t.type?(r=t.tickfont?1.2*(t.tickfont.size||12):15,n=t._length/r):(r="y"===t._id.charAt(0)?40:80,n=o.constrain(t._length/r,4,9)+1),"radialaxis"===t._name&&(n*=2)),"array"===t.tickmode&&(n*=100),w.autoTicks(t,Math.abs(e[1]-e[0])/n),t._minDtick>0&&t.dtick<2*t._minDtick&&(t.dtick=t._minDtick,t.tick0=t.l2r(t._forceTick0))}if(t.tick0||(t.tick0="date"===t.type?"2000-01-01":0),R(t),"array"===t.tickmode)return function(t){var e,r,n=t.tickvals,i=t.ticktext,a=new Array(n.length),s=o.simpleMap(t.range,t.r2l),l=1.0001*s[0]-1e-4*s[1],c=1.0001*s[1]-1e-4*s[0],u=Math.min(l,c),f=Math.max(l,c),h=0;Array.isArray(i)||(i=[]);var d="category"===t.type?t.d2l_noadd:t.d2l;"log"===t.type&&"L"!==String(t.dtick).charAt(0)&&(t.dtick="L"+Math.pow(10,Math.floor(Math.min(t.range[0],t.range[1]))-1));for(r=0;ru&&e=s:u<=s)&&!(a.length>c||u===l);u=w.tickIncrement(u,t.dtick,i,t.calendar))l=u,a.push(u);"angular"===t._id&&360===Math.abs(e[1]-e[0])&&a.pop(),t._tmax=a[a.length-1],t._prevDateHead="",t._inCalcTicks=!0;for(var f=new Array(a.length),h=0;h10||"01-01"!==n.substr(5)?t._tickround="d":t._tickround=+e.substr(1)%12==0?"y":"m";else if(e>=m&&a<=10||e>=15*m)t._tickround="d";else if(e>=g&&a<=16||e>=v)t._tickround="M";else if(e>=y&&a<=19||e>=g)t._tickround="S";else{var o=t.l2r(r+e).replace(/^-/,"").length;t._tickround=Math.max(a,o)-20}}else if(i(e)||"L"===e.charAt(0)){var s=t.range.map(t.r2d||Number);i(e)||(e=Number(e.substr(1))),t._tickround=2-Math.floor(Math.log(e)/Math.LN10+.01);var l=Math.max(Math.abs(s[0]),Math.abs(s[1])),c=Math.floor(Math.log(l)/Math.LN10+.01);Math.abs(c)>3&&(j(t.exponentformat)&&!B(c)?t._tickexponent=3*Math.round((c-1)/3):t._tickexponent=c)}else t._tickround=null}function N(t,e,r){var n=t.tickfont||{};return{x:e,dx:0,dy:0,text:r||"",fontSize:n.size,font:n.family,fontColor:n.color}}w.autoTicks=function(t,e){var r;function n(t){return Math.pow(t,Math.floor(Math.log(e)/Math.LN10))}if("date"===t.type){t.tick0=o.dateTick0(t.calendar);var a=2*e;a>d?(e/=d,r=n(10),t.dtick="M"+12*I(e,r,S)):a>p?(e/=p,t.dtick="M"+I(e,1,L)):a>m?(t.dtick=I(e,m,P),t.tick0=o.dateTick0(t.calendar,!0)):a>v?t.dtick=I(e,v,L):a>g?t.dtick=I(e,g,C):a>y?t.dtick=I(e,y,C):(r=n(10),t.dtick=I(e,r,S))}else if("log"===t.type){t.tick0=0;var s=o.simpleMap(t.range,t.r2l);if(e>.7)t.dtick=Math.ceil(e);else if(Math.abs(s[1]-s[0])<1){var l=1.5*Math.abs((s[1]-s[0])/e);e=Math.abs(Math.pow(10,s[1])-Math.pow(10,s[0]))/l,r=n(10),t.dtick="L"+I(e,r,S)}else t.dtick=e>.3?"D2":"D1"}else"category"===t.type?(t.tick0=0,t.dtick=Math.ceil(Math.max(e,1))):"angular"===t._id?(t.tick0=0,r=1,t.dtick=I(e,r,D)):(t.tick0=0,r=n(10),t.dtick=I(e,r,S));if(0===t.dtick&&(t.dtick=1),!i(t.dtick)&&"string"!=typeof t.dtick){var c=t.dtick;throw t.dtick=1,"ax.dtick error: "+String(c)}},w.tickIncrement=function(t,e,r,a){var s=r?-1:1;if(i(e))return t+s*e;var l=e.charAt(0),c=s*Number(e.substr(1));if("M"===l)return o.incrementMonth(t,c,a);if("L"===l)return Math.log(Math.pow(10,t)+c)/Math.LN10;if("D"===l){var u="D2"===e?O:z,f=t+.01*s,h=o.roundUp(o.mod(f,1),u,r);return Math.floor(f)+Math.log(n.round(Math.pow(10,h),1))/Math.LN10}throw"unrecognized dtick "+String(e)},w.tickFirst=function(t){var e=t.r2l||Number,r=o.simpleMap(t.range,e),a=r[1]"+l,t._prevDateHead=l));e.text=c}(t,s,r,c):"log"===t.type?function(t,e,r,n,a){var s=t.dtick,l=e.x,c=t.tickformat;"never"===a&&(a="");!n||"string"==typeof s&&"L"===s.charAt(0)||(s="L3");if(c||"string"==typeof s&&"L"===s.charAt(0))e.text=U(Math.pow(10,l),t,a,n);else if(i(s)||"D"===s.charAt(0)&&o.mod(l+.01,1)<.1){var u=Math.round(l);-1!==["e","E","power"].indexOf(t.exponentformat)||j(t.exponentformat)&&B(u)?(e.text=0===u?1:1===u?"10":u>1?"10"+u+"":"10"+b+-u+"",e.fontSize*=1.25):(e.text=U(Math.pow(10,l),t,"","fakehover"),"D1"===s&&"y"===t._id.charAt(0)&&(e.dy-=e.fontSize/6))}else{if("D"!==s.charAt(0))throw"unrecognized dtick "+String(s);e.text=String(Math.round(Math.pow(10,o.mod(l,1)))),e.fontSize*=.75}if("D1"===t.dtick){var f=String(e.text).charAt(0);"0"!==f&&"1"!==f||("y"===t._id.charAt(0)?e.dx-=e.fontSize/4:(e.dy+=e.fontSize/2,e.dx+=(t.range[1]>t.range[0]?1:-1)*e.fontSize*(l<0?.5:.25)))}}(t,s,0,c,n):"category"===t.type?function(t,e){var r=t._categories[Math.round(e.x)];void 0===r&&(r="");e.text=String(r)}(t,s):"angular"===t._id?function(t,e,r,n,i){if("radians"!==t.thetaunit||r)e.text=U(e.x,t,i,n);else{var a=e.x/180;if(0===a)e.text="0";else{var s=function(t){function e(t,e){return Math.abs(t-e)<=1e-6}var r=function(t){var r=1;for(;!e(Math.round(t*r)/r,t);)r*=10;return r}(t),n=t*r,i=Math.abs(function t(r,n){return e(n,0)?r:t(n,r%n)}(n,r));return[Math.round(n/i),Math.round(r/i)]}(a);if(s[1]>=100)e.text=U(o.deg2rad(e.x),t,i,n);else{var l=e.x<0;1===s[1]?1===s[0]?e.text="\u03c0":e.text=s[0]+"\u03c0":e.text=["",s[0],"","\u2044","",s[1],"","\u03c0"].join(""),l&&(e.text=b+e.text)}}}}(t,s,r,c,n):function(t,e,r,n,i){"never"===i?i="":"all"===t.showexponent&&Math.abs(e.x/t.dtick)<1e-6&&(i="hide");e.text=U(e.x,t,i,n)}(t,s,0,c,n),t.tickprefix&&!d(t.showtickprefix)&&(s.text=t.tickprefix+s.text),t.ticksuffix&&!d(t.showticksuffix)&&(s.text+=t.ticksuffix),s},w.hoverLabelText=function(t,e,r){if(r!==x&&r!==e)return w.hoverLabelText(t,e)+" - "+w.hoverLabelText(t,r);var n="log"===t.type&&e<=0,i=w.tickText(t,t.c2l(n?-e:e),"hover").text;return n?0===e?"0":b+i:i};var F=["f","p","n","\u03bc","m","","k","M","G","T"];function j(t){return"SI"===t||"B"===t}function B(t){return t>14||t<-15}function U(t,e,r,n){var a=t<0,s=e._tickround,l=r||e.exponentformat||"B",c=e._tickexponent,u=w.getTickFormat(e),f=e.separatethousands;if(n){var h={exponentformat:e.exponentformat,dtick:"none"===e.showexponent?e.dtick:i(t)&&Math.abs(t)||1,range:"none"===e.showexponent?e.range.map(e.r2d):[0,t||1]};R(h),s=(Number(h._tickround)||0)+4,c=h._tickexponent,e.hoverformat&&(u=e.hoverformat)}if(u)return e._numFormat(u)(t).replace(/-/g,b);var d,p=Math.pow(10,-s)/2;if("none"===l&&(c=0),(t=Math.abs(t))"+d+"":"B"===l&&9===c?t+="B":j(l)&&(t+=F[c/3+5]));return a?b+t:t}function V(t,e){for(var r=0;r=0,a=c(t,e[1])<=0;return(r||i)&&(n||a)}if(t.tickformatstops&&t.tickformatstops.length>0)switch(t.type){case"date":case"linear":for(e=0;e=a(n))){r=t.tickformatstops[e];break}break;case"log":for(e=0;e1&&e1)for(n=1;n2*o}(t,e)?"date":function(t){for(var e,r=Math.max(1,(t.length-1)/1e3),n=0,o=0,s=0;s2*n}(t)?"category":function(t){if(!t)return!1;for(var e=0;en?1:-1:+(t.substr(1)||1)-+(e.substr(1)||1)}},{"../../registry":854,"./constants":775}],774:[function(t,e,r){"use strict";e.exports=function(t,e,r){if("category"===e.type){var n,i=t.categoryarray,a=Array.isArray(i)&&i.length>0;a&&(n="array");var o=r("categoryorder",n);"array"===o&&r("categoryarray"),a||"array"!==o||(e.categoryorder="trace")}}},{}],775:[function(t,e,r){"use strict";var n=t("../../lib").counterRegex;e.exports={idRegex:{x:n("x"),y:n("y")},attrRegex:n("[xy]axis"),xAxisMatch:n("xaxis"),yAxisMatch:n("yaxis"),AX_ID_PATTERN:/^[xyz][0-9]*$/,AX_NAME_PATTERN:/^[xyz]axis[0-9]*$/,SUBPLOT_PATTERN:/^x([0-9]*)y([0-9]*)$/,MINDRAG:8,MINSELECT:12,MINZOOM:20,DRAGGERSIZE:20,BENDPX:1.5,REDRAWDELAY:50,SELECTDELAY:100,SELECTID:"-select",DFLTRANGEX:[-1,6],DFLTRANGEY:[-1,4],traceLayerClasses:["imagelayer","maplayer","barlayer","carpetlayer","violinlayer","boxlayer","scatterlayer"],layerValue2layerClass:{"above traces":"above","below traces":"below"}}},{"../../lib":724}],776:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("./axis_ids").id2name;e.exports=function(t,e,r,a,o){var s=o._axisConstraintGroups,l=e._id,c=l.charAt(0);if(!e.fixedrange&&(r("constrain"),n.coerce(t,e,{constraintoward:{valType:"enumerated",values:"x"===c?["left","center","right"]:["bottom","middle","top"],dflt:"x"===c?"center":"middle"}},"constraintoward"),t.scaleanchor)){var u=function(t,e,r,n){var a,o,s,l,c=n[i(e)].type,u=[];for(o=0;oa*g)||_)for(r=0;rP&&OL&&(L=O);f/=(L-S)/(2*C),S=l.l2r(S),L=l.l2r(L),l.range=l._input.range=A=0?Math.min(t,.9):1/(1/Math.max(t,-.3)+3.222))}function P(t,e,r,n,i){return t.append("path").attr("class","zoombox").style({fill:e>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("transform","translate("+r+", "+n+")").attr("d",i+"Z")}function z(t,e,r){return t.append("path").attr("class","zoombox-corners").style({fill:u.background,stroke:u.defaultLine,"stroke-width":1,opacity:0}).attr("transform","translate("+e+", "+r+")").attr("d","M0,0Z")}function O(t){t.selectAll(".select-outline").remove()}function D(t,e,r,n,i,a){t.attr("d",n+"M"+r.l+","+r.t+"v"+r.h+"h"+r.w+"v-"+r.h+"h-"+r.w+"Z"),I(t,e,i,a)}function I(t,e,r,n){r||(t.transition().style("fill",n>.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),e.transition().style("opacity",1).duration(200))}function R(t){n.select(t).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}function N(t){k&&t.data&&t._context.showTips&&(l.notifier(l._(t,"Double-click to zoom back out"),"long"),k=!1)}function F(t){return"lasso"===t||"select"===t}function j(t){var e=Math.floor(Math.min(t.b-t.t,t.r-t.l,M)/2);return"M"+(t.l-3.5)+","+(t.t-.5+e)+"h3v"+-e+"h"+e+"v-3h-"+(e+3)+"ZM"+(t.r+3.5)+","+(t.t-.5+e)+"h-3v"+-e+"h"+-e+"v-3h"+(e+3)+"ZM"+(t.r+3.5)+","+(t.b+.5-e)+"h-3v"+e+"h"+-e+"v3h"+(e+3)+"ZM"+(t.l-3.5)+","+(t.b+.5-e)+"h3v"+e+"h"+e+"v3h-"+(e+3)+"Z"}function B(t,e){if(a){var r=void 0!==t.onwheel?"wheel":"mousewheel";t._onwheel&&t.removeEventListener(r,t._onwheel),t._onwheel=e,t.addEventListener(r,e,{passive:!1})}else void 0!==t.onwheel?t.onwheel=e:void 0!==t.onmousewheel&&(t.onmousewheel=e)}e.exports={makeDragBox:function(t,e,r,a,u,d,k,A){var I,U,V,q,H,G,Y,W,X,Z,J,K,Q,$=t._fullLayout,tt=t._fullLayout._zoomlayer,et=k+A==="nsew",rt=1===(k+A).length;function nt(){U=[e.xaxis],V=[e.yaxis];var r=U[0],n=V[0];G=r._length,Y=n._length;var i,a,o=$._axisConstraintGroups,s=[r._id],c=[n._id];I=[e].concat(k&&A?e.overlays:[]);for(var u=1;uM||o>M?(ht="xy",a/G>o/Y?(o=a*Y/G,st>i?lt.t=st-o:lt.b=st+o):(a=o*G/Y,ot>n?lt.l=ot-a:lt.r=ot+a),pt.attr("d",j(lt))):s():!X||o rect").call(f.setTranslate,i,a).call(f.setScale,r,n);var C=y.plot.selectAll(".scatterlayer .trace, .boxlayer .trace, .violinlayer .trace");y.plot.call(f.setTranslate,S,L).call(f.setScale,1/r,1/n),C.selectAll(".point").call(f.setPointGroupScale,r,n),C.selectAll(".textpoint").call(f.setTextPointsScale,r,n),C.call(f.hideOutsideRangePoints,y)}}}return k.length*A.length!=1&&B(it,function(e){if(t._context.scrollZoom||$._enablescrollzoom){if(t._transitioningWithDuration)return e.preventDefault(),void e.stopPropagation();var r=t.querySelector(".plotly");if(nt(),!(r.scrollHeight-r.clientHeight>10||r.scrollWidth-r.clientWidth>10)){clearTimeout(xt);var n=-e.deltaY;if(isFinite(n)||(n=e.wheelDelta/10),isFinite(n)){var i,a=Math.exp(-Math.min(Math.max(n,-20),20)/200),o=wt.draglayer.select(".nsewdrag").node().getBoundingClientRect(),s=(e.clientX-o.left)/o.width,c=(o.bottom-e.clientY)/o.height;if(A||J){for(A||(s=.5),i=0;iu[1]-.01&&(e.domain=[0,1]),i.noneOrAll(t.domain,e.domain,[0,1])}return r("layer"),e}},{"../../lib":724,"fast-isnumeric":140}],787:[function(t,e,r){"use strict";var n=t("../../constants/alignment").FROM_BL;e.exports=function(t,e,r){void 0===r&&(r=n[t.constraintoward||"center"]);var i=[t.r2l(t.range[0]),t.r2l(t.range[1])],a=i[0]+(i[1]-i[0])*r;t.range=t._input.range=[t.l2r(a+(i[0]-a)*e),t.l2r(a+(i[1]-a)*e)]}},{"../../constants/alignment":696}],788:[function(t,e,r){"use strict";var n=t("polybooljs"),i=t("../../lib/polygon"),a=t("../../lib/throttle"),o=t("../../components/color"),s=t("../../components/fx/helpers").makeEventData,l=t("../../components/fx"),c=t("./axes"),u=t("./constants"),f=i.filter,h=i.tester,d=i.multitester,p=u.MINSELECT;function m(t){return t._id}function v(t,e,r){var n,i,a;if(r){var o=r.points||[];for(n=0;n0)return Math.log(e)/Math.LN10;if(e<=0&&r&&t.range&&2===t.range.length){var n=t.range[0],i=t.range[1];return.5*(n+i-3*u*Math.abs(n-i))}return h}function g(e,r,n){var a=l(e,n||t.calendar);if(a===h){if(!i(e))return h;a=l(new Date(+e))}return a}function y(e,r,n){return s(e,r,n||t.calendar)}function b(e){return t._categories[Math.round(e)]}function x(e){if(t._categoriesMap){var r=t._categoriesMap[e];if(void 0!==r)return r}if(i(e))return+e}function _(e){return i(e)?n.round(t._b+t._m*e,2):h}function w(e){return(e-t._b)/t._m}t.c2l="log"===t.type?v:c,t.l2c="log"===t.type?m:c,t.l2p=_,t.p2l=w,t.c2p="log"===t.type?function(t,e){return _(v(t,e))}:_,t.p2c="log"===t.type?function(t){return m(w(t))}:w,-1!==["linear","-"].indexOf(t.type)?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=o,t.c2d=t.c2r=t.l2d=t.l2r=c,t.d2p=t.r2p=function(e){return t.l2p(o(e))},t.p2d=t.p2r=w,t.cleanPos=c):"log"===t.type?(t.d2r=t.d2l=function(t,e){return v(o(t),e)},t.r2d=t.r2c=function(t){return m(o(t))},t.d2c=t.r2l=o,t.c2d=t.l2r=c,t.c2r=v,t.l2d=m,t.d2p=function(e,r){return t.l2p(t.d2r(e,r))},t.p2d=function(t){return m(w(t))},t.r2p=function(e){return t.l2p(o(e))},t.p2r=w,t.cleanPos=c):"date"===t.type?(t.d2r=t.r2d=a.identity,t.d2c=t.r2c=t.d2l=t.r2l=g,t.c2d=t.c2r=t.l2d=t.l2r=y,t.d2p=t.r2p=function(e,r,n){return t.l2p(g(e,0,n))},t.p2d=t.p2r=function(t,e,r){return y(w(t),e,r)},t.cleanPos=function(e){return a.cleanDate(e,h,t.calendar)}):"category"===t.type&&(t.d2c=t.d2l=function(e){if(null!==e&&void 0!==e){if(void 0===t._categoriesMap&&(t._categoriesMap={}),void 0!==t._categoriesMap[e])return t._categoriesMap[e];t._categories.push(e);var r=t._categories.length-1;return t._categoriesMap[e]=r,r}return h},t.r2d=t.c2d=t.l2d=b,t.d2r=t.d2l_noadd=x,t.r2c=function(e){var r=x(e);return void 0!==r?r:t.fraction2r(.5)},t.l2r=t.c2r=c,t.r2l=x,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return b(w(t))},t.r2p=t.d2p,t.p2r=w,t.cleanPos=function(t){return"string"==typeof t&&""!==t?t:c(t)}),t.fraction2r=function(e){var r=t.r2l(t.range[0]),n=t.r2l(t.range[1]);return t.l2r(r+e*(n-r))},t.r2fraction=function(e){var r=t.r2l(t.range[0]),n=t.r2l(t.range[1]);return(t.r2l(e)-r)/(n-r)},t.cleanRange=function(e,n){n||(n={}),e||(e="range");var o,s,l=a.nestedProperty(t,e).get();if(s=(s="date"===t.type?a.dfltRange(t.calendar):"y"===r?d.DFLTRANGEY:n.dfltRange||d.DFLTRANGEX).slice(),l&&2===l.length)for("date"===t.type&&(l[0]=a.cleanDate(l[0],h,t.calendar),l[1]=a.cleanDate(l[1],h,t.calendar)),o=0;o<2;o++)if("date"===t.type){if(!a.isDateTime(l[o],t.calendar)){t[e]=s;break}if(t.r2l(l[0])===t.r2l(l[1])){var c=a.constrain(t.r2l(l[0]),a.MIN_MS+1e3,a.MAX_MS-1e3);l[0]=t.l2r(c-1e3),l[1]=t.l2r(c+1e3);break}}else{if(!i(l[o])){if(!i(l[1-o])){t[e]=s;break}l[o]=l[1-o]*(o?10:.1)}if(l[o]<-f?l[o]=-f:l[o]>f&&(l[o]=f),l[0]===l[1]){var u=Math.max(1,Math.abs(1e-6*l[0]));l[0]-=u,l[1]+=u}}else a.nestedProperty(t,e).set(s)},t.setScale=function(n){var i=e._size;if(t._categories||(t._categories=[]),t._categoriesMap||(t._categoriesMap={}),t.overlaying){var a=p.getFromId({_fullLayout:e},t.overlaying);t.domain=a.domain}var o=n&&t._r?"_r":"range",s=t.calendar;t.cleanRange(o);var l=t.r2l(t[o][0],s),c=t.r2l(t[o][1],s);if("y"===r?(t._offset=i.t+(1-t.domain[1])*i.h,t._length=i.h*(t.domain[1]-t.domain[0]),t._m=t._length/(l-c),t._b=-t._m*c):(t._offset=i.l+t.domain[0]*i.w,t._length=i.w*(t.domain[1]-t.domain[0]),t._m=t._length/(c-l),t._b=-t._m*l),!isFinite(t._m)||!isFinite(t._b))throw e._replotting=!1,new Error("Something went wrong with axis scaling")},t.makeCalcdata=function(e,r){var n,i,a,o,s="date"===t.type&&e[r+"calendar"];if(r in e)for(n=e[r],o=e._length||n.length,i=new Array(o),a=0;a=t.r2l(t.range[0])&&i<=t.r2l(t.range[1])},t._min=[],t._max=[];var M=e._d3locale;"date"===t.type&&(t._dateFormat=M?M.timeFormat.utc:n.time.format.utc,t._extraFormat=e._extraFormat),t._separators=e.separators,t._numFormat=M?M.numberFormat:n.format,delete t._minDtick,delete t._forceTick0}},{"../../constants/numerical":702,"../../lib":724,"./axis_ids":773,"./constants":775,d3:128,"fast-isnumeric":140}],790:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("./layout_attributes");e.exports=function(t,e,r,a,o){var s=function(t){var e=["showexponent","showtickprefix","showticksuffix"].filter(function(e){return void 0!==t[e]});if(e.every(function(r){return t[r]===t[e[0]]})||1===e.length)return t[e[0]]}(t);if(r("tickprefix")&&r("showtickprefix",s),r("ticksuffix",o.tickSuffixDflt)&&r("showticksuffix",s),r("showticklabels")){var l=o.font||{},c=e.color===t.color?e.color:l.color;if(n.coerceFont(r,"tickfont",{family:l.family,size:l.size,color:c}),r("tickangle"),"category"!==a){var u=r("tickformat");!function(t,e){var r,a,o=t.tickformatstops,s=e.tickformatstops=[];if(!Array.isArray(o))return;function l(t,e){return n.coerce(r,a,i.tickformatstops,t,e)}for(var c=0;c0?Number(u):c;else if("string"!=typeof u)e.dtick=c;else{var f=u.charAt(0),h=u.substr(1);((h=n(h)?Number(h):0)<=0||!("date"===o&&"M"===f&&h===Math.round(h)||"log"===o&&"L"===f||"log"===o&&"D"===f&&(1===h||2===h)))&&(e.dtick=c)}var d="date"===o?i.dateTick0(e.calendar):0,p=r("tick0",d);"date"===o?e.tick0=i.cleanDate(p,d):n(p)&&"D1"!==u&&"D2"!==u?e.tick0=Number(p):e.tick0=d}else{void 0===r("tickvals")?e.tickmode="auto":r("ticktext")}}},{"../../constants/numerical":702,"../../lib":724,"fast-isnumeric":140}],793:[function(t,e,r){"use strict";var n=t("d3"),i=t("../../plotly"),a=t("../../registry"),o=t("../../components/drawing"),s=t("./axes"),l=t("./constants").attrRegex;e.exports=function(t,e,r,c){var u=t._fullLayout,f=[];var h,d,p,m,v=function(t){var e,r,n,i,a={};for(e in t)if((r=e.split("."))[0].match(l)){var o=e.charAt(0),s=r[0];if(n=u[s],i={},Array.isArray(t[e])?i.to=t[e].slice(0):Array.isArray(t[e].range)&&(i.to=t[e].range.slice(0)),!i.to)continue;i.axisName=s,i.length=n._length,f.push(o),a[o]=i}return a}(e),g=Object.keys(v),y=function(t,e,r){var n,i,a,o=t._plots,s=[];for(n in o){var l=o[n];if(-1===s.indexOf(l)){var c=l.xaxis._id,u=l.yaxis._id,f=l.xaxis.range,h=l.yaxis.range;l.xaxis._r=l.xaxis.range.slice(),l.yaxis._r=l.yaxis.range.slice(),i=r[c]?r[c].to:f,a=r[u]?r[u].to:h,f[0]===i[0]&&f[1]===i[1]&&h[0]===a[0]&&h[1]===a[1]||-1===e.indexOf(c)&&-1===e.indexOf(u)||s.push(l)}}return s}(u,g,v);if(!y.length)return function(){function e(e,r,n){for(var i=0;i rect").call(o.setTranslate,0,0).call(o.setScale,1,1),t.plot.call(o.setTranslate,e._offset,r._offset).call(o.setScale,1,1);var n=t.plot.selectAll(".scatterlayer .trace");n.selectAll(".point").call(o.setPointGroupScale,1,1),n.selectAll(".textpoint").call(o.setTextPointsScale,1,1),n.call(o.hideOutsideRangePoints,t)}function x(e,r){var n,i,l,c=v[e.xaxis._id],f=v[e.yaxis._id],h=[];if(c){i=(n=t._fullLayout[c.axisName])._r,l=c.to,h[0]=(i[0]*(1-r)+r*l[0]-i[0])/(i[1]-i[0])*e.xaxis._length;var d=i[1]-i[0],p=l[1]-l[0];n.range[0]=i[0]*(1-r)+r*l[0],n.range[1]=i[1]*(1-r)+r*l[1],h[2]=e.xaxis._length*(1-r+r*p/d)}else h[0]=0,h[2]=e.xaxis._length;if(f){i=(n=t._fullLayout[f.axisName])._r,l=f.to,h[1]=(i[1]*(1-r)+r*l[1]-i[1])/(i[0]-i[1])*e.yaxis._length;var m=i[1]-i[0],g=l[1]-l[0];n.range[0]=i[0]*(1-r)+r*l[0],n.range[1]=i[1]*(1-r)+r*l[1],h[3]=e.yaxis._length*(1-r+r*g/m)}else h[1]=0,h[3]=e.yaxis._length;!function(e,r){var n,i=[];for(i=[e._id,r._id],n=0;n rect").call(o.setTranslate,k,A).call(o.setScale,1/w,1/M),e.plot.call(o.setTranslate,S,L).call(o.setScale,w,M).selectAll(".points").selectAll(".point").call(o.setPointGroupScale,1/w,1/M),e.plot.selectAll(".points").selectAll(".textpoint").call(o.setTextPointsScale,1/w,1/M)}c&&(h=c());var _=n.ease(r.easing);return t._transitionData._interruptCallbacks.push(function(){return window.cancelAnimationFrame(m),m=null,function(){for(var e={},r=0;rr.duration?(function(){for(var e={},r=0;r0?".":"")+a;i.isPlainObject(o)?l(o,e,s,n+1):e(s,a,o)}})}r.manageCommandObserver=function(t,e,n,o){var s={},l=!0;e&&e._commandObserver&&(s=e._commandObserver),s.cache||(s.cache={}),s.lookupTable={};var c=r.hasSimpleAPICommandBindings(t,n,s.lookupTable);if(e&&e._commandObserver){if(c)return s;if(e._commandObserver.remove)return e._commandObserver.remove(),e._commandObserver=null,s}if(c){a(t,c,s.cache),s.check=function(){if(l){var e=a(t,c,s.cache);return e.changed&&o&&void 0!==s.lookupTable[e.value]&&(s.disable(),Promise.resolve(o({value:e.value,type:c.type,prop:c.prop,traces:c.traces,index:s.lookupTable[e.value]})).then(s.enable,s.enable)),e.changed}};for(var u=["plotly_relayout","plotly_redraw","plotly_restyle","plotly_update","plotly_animatingframe","plotly_afterplot"],f=0;fi*Math.PI/180}return!1},r.getPath=function(){return n.geo.path().projection(r)},r.getBounds=function(t){return r.getPath().bounds(t)},r.fitExtent=function(t,e){var n=t[1][0]-t[0][0],i=t[1][1]-t[0][1],a=r.clipExtent&&r.clipExtent();r.scale(150).translate([0,0]),a&&r.clipExtent(null);var o=r.getBounds(e),s=Math.min(n/(o[1][0]-o[0][0]),i/(o[1][1]-o[0][1])),l=+t[0][0]+(n-s*(o[1][0]+o[0][0]))/2,c=+t[0][1]+(i-s*(o[1][1]+o[0][1]))/2;return a&&r.clipExtent(a),r.scale(150*s).translate([l,c])},r.precision(p.precision),i&&r.clipAngle(i-p.clipPad);return r}(e);u.center([c.lon-l.lon,c.lat-l.lat]).rotate([-l.lon,-l.lat,l.roll]).parallels(s.parallels);var f=[[r.l+r.w*o.x[0],r.t+r.h*(1-o.y[1])],[r.l+r.w*o.x[1],r.t+r.h*(1-o.y[0])]],h=e.lonaxis,d=e.lataxis,m=function(t,e){var r=p.clipPad,n=t[0]+r,i=t[1]-r,a=e[0]+r,o=e[1]-r;n>0&&i<0&&(i+=360);var s=(i-n)/4;return{type:"Polygon",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}(h.range,d.range);u.fitExtent(f,m);var v=this.bounds=u.getBounds(m),g=this.fitScale=u.scale(),y=u.translate();if(!isFinite(v[0][0])||!isFinite(v[0][1])||!isFinite(v[1][0])||!isFinite(v[1][1])||isNaN(y[0])||isNaN(y[0])){for(var b=this.graphDiv,x=["projection.rotation","center","lonaxis.range","lataxis.range"],_="Invalid geo settings, relayout'ing to default view.",w={},M=0;M0&&w<0&&(w+=360);var M,k,A,T=(_+w)/2;if(!c){var E=u?s.projRotate:[T,0,0];M=r("projection.rotation.lon",E[0]),r("projection.rotation.lat",E[1]),r("projection.rotation.roll",E[2]),r("showcoastlines",!u)&&(r("coastlinecolor"),r("coastlinewidth")),r("showocean")&&r("oceancolor")}(c?(k=-96.6,A=38.7):(k=u?T:M,A=(x[0]+x[1])/2),r("center.lon",k),r("center.lat",A),f)&&r("projection.parallels",s.projParallels||[0,60]);r("projection.scale"),r("showland")&&r("landcolor"),r("showlakes")&&r("lakecolor"),r("showrivers")&&(r("rivercolor"),r("riverwidth")),r("showcountries",u&&"usa"!==a)&&(r("countrycolor"),r("countrywidth")),("usa"===a||"north america"===a&&50===n)&&(r("showsubunits",!0),r("subunitcolor"),r("subunitwidth")),u||r("showframe",!0)&&(r("framecolor"),r("framewidth")),r("bgcolor")}e.exports=function(t,e,r){n(t,e,r,{type:"geo",attributes:a,handleDefaults:s,partition:"y"})}},{"../../subplot_defaults":846,"../constants":799,"./layout_attributes":804}],804:[function(t,e,r){"use strict";var n=t("../../../components/color/attributes"),i=t("../../domain_attributes"),a=t("../constants"),o=t("../../../plot_api/edit_types").overrideAll,s={range:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},showgrid:{valType:"boolean",dflt:!1},tick0:{valType:"number"},dtick:{valType:"number"},gridcolor:{valType:"color",dflt:n.lightLine},gridwidth:{valType:"number",min:0,dflt:1}};e.exports=o({domain:i({name:"geo"},{}),resolution:{valType:"enumerated",values:[110,50],dflt:110,coerceNumber:!0},scope:{valType:"enumerated",values:Object.keys(a.scopeDefaults),dflt:"world"},projection:{type:{valType:"enumerated",values:Object.keys(a.projNames)},rotation:{lon:{valType:"number"},lat:{valType:"number"},roll:{valType:"number"}},parallels:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},scale:{valType:"number",min:0,dflt:1}},center:{lon:{valType:"number"},lat:{valType:"number"}},showcoastlines:{valType:"boolean"},coastlinecolor:{valType:"color",dflt:n.defaultLine},coastlinewidth:{valType:"number",min:0,dflt:1},showland:{valType:"boolean",dflt:!1},landcolor:{valType:"color",dflt:a.landColor},showocean:{valType:"boolean",dflt:!1},oceancolor:{valType:"color",dflt:a.waterColor},showlakes:{valType:"boolean",dflt:!1},lakecolor:{valType:"color",dflt:a.waterColor},showrivers:{valType:"boolean",dflt:!1},rivercolor:{valType:"color",dflt:a.waterColor},riverwidth:{valType:"number",min:0,dflt:1},showcountries:{valType:"boolean"},countrycolor:{valType:"color",dflt:n.defaultLine},countrywidth:{valType:"number",min:0,dflt:1},showsubunits:{valType:"boolean"},subunitcolor:{valType:"color",dflt:n.defaultLine},subunitwidth:{valType:"number",min:0,dflt:1},showframe:{valType:"boolean"},framecolor:{valType:"color",dflt:n.defaultLine},framewidth:{valType:"number",min:0,dflt:1},bgcolor:{valType:"color",dflt:n.background},lonaxis:s,lataxis:s},"plot","from-root")},{"../../../components/color/attributes":597,"../../../plot_api/edit_types":754,"../../domain_attributes":796,"../constants":799}],805:[function(t,e,r){"use strict";e.exports=function(t){function e(t,e){return{type:"Feature",id:t.id,properties:t.properties,geometry:r(t.geometry,e)}}function r(e,n){if(!e)return null;if("GeometryCollection"===e.type)return{type:"GeometryCollection",geometries:object.geometries.map(function(t){return r(t,n)})};if(!c.hasOwnProperty(e.type))return null;var i=c[e.type];return t.geo.stream(e,n(i)),i.result()}t.geo.project=function(t,e){var i=e.stream;if(!i)throw new Error("not yet supported");return(t&&n.hasOwnProperty(t.type)?n[t.type]:r)(t,i)};var n={Feature:e,FeatureCollection:function(t,r){return{type:"FeatureCollection",features:t.features.map(function(t){return e(t,r)})}}},i=[],a=[],o={point:function(t,e){i.push([t,e])},result:function(){var t=i.length?i.length<2?{type:"Point",coordinates:i[0]}:{type:"MultiPoint",coordinates:i}:null;return i=[],t}},s={lineStart:u,point:function(t,e){i.push([t,e])},lineEnd:function(){i.length&&(a.push(i),i=[])},result:function(){var t=a.length?a.length<2?{type:"LineString",coordinates:a[0]}:{type:"MultiLineString",coordinates:a}:null;return a=[],t}},l={polygonStart:u,lineStart:u,point:function(t,e){i.push([t,e])},lineEnd:function(){var t=i.length;if(t){do{i.push(i[0].slice())}while(++t<4);a.push(i),i=[]}},polygonEnd:u,result:function(){if(!a.length)return null;var t=[],e=[];return a.forEach(function(r){!function(t){if((e=t.length)<4)return!1;for(var e,r=0,n=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++rn^d>n&&r<(h-c)*(n-u)/(d-u)+c&&(i=!i)}return i}(t[0],r))return t.push(e),!0})||t.push([e])}),a=[],t.length?t.length>1?{type:"MultiPolygon",coordinates:t}:{type:"Polygon",coordinates:t[0]}:null}},c={Point:o,MultiPoint:o,LineString:s,MultiLineString:s,Polygon:l,MultiPolygon:l,Sphere:l};function u(){}var f=1e-6,h=f*f,d=Math.PI,p=d/2,m=(Math.sqrt(d),d/180),v=180/d;function g(t){return t>1?p:t<-1?-p:Math.asin(t)}function y(t){return t>1?0:t<-1?d:Math.acos(t)}var b=t.geo.projection,x=t.geo.projectionMutator;function _(t,e){var r=(2+p)*Math.sin(e);e/=2;for(var n=0,i=1/0;n<10&&Math.abs(i)>f;n++){var a=Math.cos(e);e-=i=(e+Math.sin(e)*(a+2)-r)/(2*a*(1+a))}return[2/Math.sqrt(d*(4+d))*t*(1+Math.cos(e)),2*Math.sqrt(d/(4+d))*Math.sin(e)]}t.geo.interrupt=function(e){var r,n=[[[[-d,0],[0,p],[d,0]]],[[[-d,0],[0,-p],[d,0]]]];function i(t,r){for(var i=r<0?-1:1,a=n[+(r<0)],o=0,s=a.length-1;oa[o][2][0];++o);var l=e(t-a[o][1][0],r);return l[0]+=e(a[o][1][0],i*r>i*a[o][0][1]?a[o][0][1]:r)[0],l}e.invert&&(i.invert=function(t,a){for(var o=r[+(a<0)],s=n[+(a<0)],c=0,u=o.length;c=0;--i){var o=n[1][i],l=180*o[0][0]/d,c=180*o[0][1]/d,u=180*o[1][1]/d,f=180*o[2][0]/d,h=180*o[2][1]/d;r.push(s([[f-e,h-e],[f-e,u+e],[l+e,u+e],[l+e,c-e]],30))}return{type:"Polygon",coordinates:[t.merge(r)]}}(),l)},i},a.lobes=function(t){return arguments.length?(n=t.map(function(t){return t.map(function(t){return[[t[0][0]*d/180,t[0][1]*d/180],[t[1][0]*d/180,t[1][1]*d/180],[t[2][0]*d/180,t[2][1]*d/180]]})}),r=n.map(function(t){return t.map(function(t){var r,n=e(t[0][0],t[0][1])[0],i=e(t[2][0],t[2][1])[0],a=e(t[1][0],t[0][1])[1],o=e(t[1][0],t[1][1])[1];return a>o&&(r=a,a=o,o=r),[[n,a],[i,o]]})}),a):n.map(function(t){return t.map(function(t){return[[180*t[0][0]/d,180*t[0][1]/d],[180*t[1][0]/d,180*t[1][1]/d],[180*t[2][0]/d,180*t[2][1]/d]]})})},a},_.invert=function(t,e){var r=.5*e*Math.sqrt((4+d)/d),n=g(r),i=Math.cos(n);return[t/(2/Math.sqrt(d*(4+d))*(1+i)),g((n+r*(i+2))/(2+p))]},(t.geo.eckert4=function(){return b(_)}).raw=_;var w=t.geo.azimuthalEqualArea.raw;function M(t,e){if(arguments.length<2&&(e=t),1===e)return w;if(e===1/0)return k;function r(r,n){var i=w(r/e,n);return i[0]*=t,i}return r.invert=function(r,n){var i=w.invert(r/t,n);return i[0]*=e,i},r}function k(t,e){return[t*Math.cos(e)/Math.cos(e/=2),2*Math.sin(e)]}function A(t,e){return[3*t/(2*d)*Math.sqrt(d*d/3-e*e),e]}function T(t,e){return[t,1.25*Math.log(Math.tan(d/4+.4*e))]}function E(t){return function(e){var r,n=t*Math.sin(e),i=30;do{e-=r=(e+Math.sin(e)-n)/(1+Math.cos(e))}while(Math.abs(r)>f&&--i>0);return e/2}}k.invert=function(t,e){var r=2*g(e/2);return[t*Math.cos(r/2)/Math.cos(r),r]},(t.geo.hammer=function(){var t=2,e=x(M),r=e(t);return r.coefficient=function(r){return arguments.length?e(t=+r):t},r}).raw=M,A.invert=function(t,e){return[2/3*d*t/Math.sqrt(d*d/3-e*e),e]},(t.geo.kavrayskiy7=function(){return b(A)}).raw=A,T.invert=function(t,e){return[t,2.5*Math.atan(Math.exp(.8*e))-.625*d]},(t.geo.miller=function(){return b(T)}).raw=T,E(d);var S=function(t,e,r){var n=E(r);function i(r,i){return[t*r*Math.cos(i=n(i)),e*Math.sin(i)]}return i.invert=function(n,i){var a=g(i/e);return[n/(t*Math.cos(a)),g((2*a+Math.sin(2*a))/r)]},i}(Math.SQRT2/p,Math.SQRT2,d);function L(t,e){var r=e*e,n=r*r;return[t*(.8707-.131979*r+n*(n*(.003971*r-.001529*n)-.013791)),e*(1.007226+r*(.015085+n*(.028874*r-.044475-.005916*n)))]}(t.geo.mollweide=function(){return b(S)}).raw=S,L.invert=function(t,e){var r,n=e,i=25;do{var a=n*n,o=a*a;n-=r=(n*(1.007226+a*(.015085+o*(.028874*a-.044475-.005916*o)))-e)/(1.007226+a*(.045255+o*(.259866*a-.311325-.005916*11*o)))}while(Math.abs(r)>f&&--i>0);return[t/(.8707+(a=n*n)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),n]},(t.geo.naturalEarth=function(){return b(L)}).raw=L;var C=[[.9986,-.062],[1,0],[.9986,.062],[.9954,.124],[.99,.186],[.9822,.248],[.973,.31],[.96,.372],[.9427,.434],[.9216,.4958],[.8962,.5571],[.8679,.6176],[.835,.6769],[.7986,.7346],[.7597,.7903],[.7186,.8435],[.6732,.8936],[.6213,.9394],[.5722,.9761],[.5322,1]];function P(t,e){var r,n=Math.min(18,36*Math.abs(e)/d),i=Math.floor(n),a=n-i,o=(r=C[i])[0],s=r[1],l=(r=C[++i])[0],c=r[1],u=(r=C[Math.min(19,++i)])[0],f=r[1];return[t*(l+a*(u-o)/2+a*a*(u-2*l+o)/2),(e>0?p:-p)*(c+a*(f-s)/2+a*a*(f-2*c+s)/2)]}function z(t,e){return[t*Math.cos(e),e]}function O(t,e){var r,n=Math.cos(e),i=(r=y(n*Math.cos(t/=2)))?r/Math.sin(r):1;return[2*n*Math.sin(t)*i,Math.sin(e)*i]}function D(t,e){var r=O(t,e);return[(r[0]+t/p)/2,(r[1]+e)/2]}C.forEach(function(t){t[1]*=1.0144}),P.invert=function(t,e){var r=e/p,n=90*r,i=Math.min(18,Math.abs(n/5)),a=Math.max(0,Math.floor(i));do{var o=C[a][1],s=C[a+1][1],l=C[Math.min(19,a+2)][1],c=l-o,u=l-2*s+o,f=2*(Math.abs(r)-s)/c,d=u/c,g=f*(1-d*f*(1-2*d*f));if(g>=0||1===a){n=(e>=0?5:-5)*(g+i);var y,b=50;do{g=(i=Math.min(18,Math.abs(n)/5))-(a=Math.floor(i)),o=C[a][1],s=C[a+1][1],l=C[Math.min(19,a+2)][1],n-=(y=(e>=0?p:-p)*(s+g*(l-o)/2+g*g*(l-2*s+o)/2)-e)*v}while(Math.abs(y)>h&&--b>0);break}}while(--a>=0);var x=C[a][0],_=C[a+1][0],w=C[Math.min(19,a+2)][0];return[t/(_+g*(w-x)/2+g*g*(w-2*_+x)/2),n*m]},(t.geo.robinson=function(){return b(P)}).raw=P,z.invert=function(t,e){return[t/Math.cos(e),e]},(t.geo.sinusoidal=function(){return b(z)}).raw=z,O.invert=function(t,e){if(!(t*t+4*e*e>d*d+f)){var r=t,n=e,i=25;do{var a,o=Math.sin(r),s=Math.sin(r/2),l=Math.cos(r/2),c=Math.sin(n),u=Math.cos(n),h=Math.sin(2*n),p=c*c,m=u*u,v=s*s,g=1-m*l*l,b=g?y(u*l)*Math.sqrt(a=1/g):a=0,x=2*b*u*s-t,_=b*c-e,w=a*(m*v+b*u*l*p),M=a*(.5*o*h-2*b*c*s),k=.25*a*(h*s-b*c*m*o),A=a*(p*l+b*v*u),T=M*k-A*w;if(!T)break;var E=(_*M-x*A)/T,S=(x*k-_*w)/T;r-=E,n-=S}while((Math.abs(E)>f||Math.abs(S)>f)&&--i>0);return[r,n]}},(t.geo.aitoff=function(){return b(O)}).raw=O,D.invert=function(t,e){var r=t,n=e,i=25;do{var a,o=Math.cos(n),s=Math.sin(n),l=Math.sin(2*n),c=s*s,u=o*o,h=Math.sin(r),d=Math.cos(r/2),m=Math.sin(r/2),v=m*m,g=1-u*d*d,b=g?y(o*d)*Math.sqrt(a=1/g):a=0,x=.5*(2*b*o*m+r/p)-t,_=.5*(b*s+n)-e,w=.5*a*(u*v+b*o*d*c)+.5/p,M=a*(h*l/4-b*s*m),k=.125*a*(l*m-b*s*u*h),A=.5*a*(c*d+b*v*o)+.5,T=M*k-A*w,E=(_*M-x*A)/T,S=(x*k-_*w)/T;r-=E,n-=S}while((Math.abs(E)>f||Math.abs(S)>f)&&--i>0);return[r,n]},(t.geo.winkel3=function(){return b(D)}).raw=D}},{}],806:[function(t,e,r){"use strict";var n=t("d3"),i=t("../../lib"),a=Math.PI/180,o=180/Math.PI,s={cursor:"pointer"},l={cursor:"auto"};function c(t,e){return n.behavior.zoom().translate(e.translate()).scale(e.scale())}function u(t,e,r){var n=t.id,a=t.graphDiv,o=a.layout[n],s=a._fullLayout[n],l={};function c(t,e){var r=i.nestedProperty(s,t);r.get()!==e&&(r.set(e),i.nestedProperty(o,t).set(e),l[n+"."+t]=e)}r(c),c("projection.scale",e.scale()/t.fitScale),a.emit("plotly_relayout",l)}function f(t,e){var r=c(0,e);function i(r){var n=e.invert(t.midPt);r("center.lon",n[0]),r("center.lat",n[1])}return r.on("zoomstart",function(){n.select(this).style(s)}).on("zoom",function(){e.scale(n.event.scale).translate(n.event.translate),t.render()}).on("zoomend",function(){n.select(this).style(l),u(t,e,i)}),r}function h(t,e){var r,i,a,o,f,h,d,p,m=c(0,e),v=2;function g(t){return e.invert(t)}function y(r){var n=e.rotate(),i=e.invert(t.midPt);r("projection.rotation.lon",-n[0]),r("center.lon",i[0]),r("center.lat",i[1])}return m.on("zoomstart",function(){n.select(this).style(s),r=n.mouse(this),i=e.rotate(),a=e.translate(),o=i,f=g(r)}).on("zoom",function(){if(h=n.mouse(this),l=e(g(s=r)),Math.abs(l[0]-s[0])>v||Math.abs(l[1]-s[1])>v)return m.scale(e.scale()),void m.translate(e.translate());var s,l;e.scale(n.event.scale),e.translate([a[0],n.event.translate[1]]),f?g(h)&&(p=g(h),d=[o[0]+(p[0]-f[0]),i[1],i[2]],e.rotate(d),o=d):f=g(r=h),t.render()}).on("zoomend",function(){n.select(this).style(l),u(t,e,y)}),m}function d(t,e){var r,i={r:e.rotate(),k:e.scale()},f=c(0,e),h=function(t){var e=0,r=arguments.length,i=[];for(;++ep?(a=(f>0?90:-90)-d,i=0):(a=Math.asin(f/p)*o-d,i=Math.sqrt(p*p-f*f));var v=180-a-2*d,y=(Math.atan2(h,u)-Math.atan2(c,i))*o,b=(Math.atan2(h,u)-Math.atan2(c,-i))*o,x=m(r[0],r[1],a,y),_=m(r[0],r[1],v,b);return x<=_?[a,y,r[2]]:[v,b,r[2]]}(M,r,S);isFinite(k[0])&&isFinite(k[1])&&isFinite(k[2])||(k=S),e.rotate(k),S=k}}else r=p(e,T=x);h.of(this,arguments)({type:"zoom"})}),A=h.of(this,arguments),d++||A({type:"zoomstart"})}).on("zoomend",function(){var r;n.select(this).style(l),v.call(f,"zoom",null),r=h.of(this,arguments),--d||r({type:"zoomend"}),u(t,e,b)}).on("zoom.redraw",function(){t.render()}),n.rebind(f,h,"on")}function p(t,e){var r=t.invert(e);return r&&isFinite(r[0])&&isFinite(r[1])&&function(t){var e=t[0]*a,r=t[1]*a,n=Math.cos(r);return[n*Math.cos(e),n*Math.sin(e),Math.sin(r)]}(r)}function m(t,e,r,n){var i=v(r-t),a=v(n-e);return Math.sqrt(i*i+a*a)}function v(t){return(t%360+540)%360-180}function g(t,e,r){var n=r*a,i=t.slice(),o=0===e?1:0,s=2===e?1:2,l=Math.cos(n),c=Math.sin(n);return i[o]=t[o]*l-t[s]*c,i[s]=t[s]*l+t[o]*c,i}function y(t,e){for(var r=0,n=0,i=t.length;nMath.abs(s)?(l.boxEnd[1]=l.boxStart[1]+Math.abs(a)*_*(s>=0?1:-1),l.boxEnd[1]u[3]&&(l.boxEnd[1]=u[3],l.boxEnd[0]=l.boxStart[0]+(u[3]-l.boxStart[1])/Math.abs(_))):(l.boxEnd[0]=l.boxStart[0]+Math.abs(s)/_*(a>=0?1:-1),l.boxEnd[0]u[2]&&(l.boxEnd[0]=u[2],l.boxEnd[1]=l.boxStart[1]+(u[2]-l.boxStart[0])*Math.abs(_)))}}else l.boxEnabled?(a=l.boxStart[0]!==l.boxEnd[0],s=l.boxStart[1]!==l.boxEnd[1],a||s?(a&&(v(0,l.boxStart[0],l.boxEnd[0]),t.xaxis.autorange=!1),s&&(v(1,l.boxStart[1],l.boxEnd[1]),t.yaxis.autorange=!1),t.relayoutCallback()):t.glplot.setDirty(),l.boxEnabled=!1,l.boxInited=!1):l.boxInited&&(l.boxInited=!1);break;case"pan":l.boxEnabled=!1,l.boxInited=!1,e?(l.panning||(l.dragStart[0]=n,l.dragStart[1]=i),Math.abs(l.dragStart[0]-n)h[p+2]&&(h[p]=-1,h[p+2]=1),(d=this[b[p]])._length=s.viewBox[p+2]-s.viewBox[p],o.doAutoRange(d),d.setScale();g(l),s.ticks=this.computeTickMarks(),s.dataBox=this.calcDataBox(),s.merge(r),n.update(s),this.glplot.draw()},w.calcDataBox=function(){var t=this.xaxis,e=this.yaxis,r=t.range,n=e.range,i=t.r2l,a=e.r2l;return[i(r[0]),a(n[0]),i(r[1]),a(n[1])]},w.setRanges=function(t){var e=this.xaxis,r=this.yaxis,n=e.l2r,i=r.l2r;e.range=[n(t[0]),n(t[2])],r.range=[i(t[1]),i(t[3])]},w.updateTraces=function(t,e){var r,n,i,a=Object.keys(this.traces);this.fullData=t;t:for(r=0;rMath.abs(e))c.rotate(a,0,0,-t*r*Math.PI*p.rotateSpeed/window.innerWidth);else{var o=-p.zoomSpeed*i*e/window.innerHeight*(a-c.lastT())/20;c.pan(a,0,0,f*(Math.exp(o)-1))}}},!0),p};var n=t("right-now"),i=t("3d-view"),a=t("mouse-change"),o=t("mouse-wheel"),s=t("mouse-event-offset"),l=t("has-passive-events")},{"3d-view":40,"has-passive-events":256,"mouse-change":424,"mouse-event-offset":425,"mouse-wheel":427,"right-now":489}],813:[function(t,e,r){"use strict";var n=t("../../plot_api/edit_types").overrideAll,i=t("../../components/fx/layout_attributes"),a=t("./scene"),o=t("../get_data").getSubplotData,s=t("../../lib"),l=t("../../constants/xmlns_namespaces");r.name="gl3d",r.attr="scene",r.idRoot="scene",r.idRegex=r.attrRegex=s.counterRegex("scene"),r.attributes=t("./layout/attributes"),r.layoutAttributes=t("./layout/layout_attributes"),r.baseLayoutAttrOverrides=n({hoverlabel:i.hoverlabel},"plot","nested"),r.supplyLayoutDefaults=t("./layout/defaults"),r.plot=function(t){for(var e=t._fullLayout,r=t._fullData,n=e._subplots.gl3d,i=0;i1;o(t,e,r,{type:"gl3d",attributes:l,handleDefaults:c,fullLayout:e,font:e.font,fullData:r,getDfltFromLayout:function(e){if(!i)return n.validate(t[e],l[e])?t[e]:void 0},paper_bgcolor:e.paper_bgcolor,calendar:e.calendar})}},{"../../../components/color":598,"../../../lib":724,"../../../registry":854,"../../subplot_defaults":846,"./axis_defaults":816,"./layout_attributes":819}],819:[function(t,e,r){"use strict";var n=t("./axis_attributes"),i=t("../../domain_attributes"),a=t("../../../lib/extend").extendFlat,o=t("../../../lib").counterRegex;function s(t,e,r){return{x:{valType:"number",dflt:t,editType:"camera"},y:{valType:"number",dflt:e,editType:"camera"},z:{valType:"number",dflt:r,editType:"camera"},editType:"camera"}}e.exports={_arrayAttrRegexps:[o("scene",".annotations",!0)],bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"plot"},camera:{up:a(s(0,0,1),{}),center:a(s(0,0,0),{}),eye:a(s(1.25,1.25,1.25),{}),editType:"camera"},domain:i({name:"scene",editType:"plot"}),aspectmode:{valType:"enumerated",values:["auto","cube","data","manual"],dflt:"auto",editType:"plot",impliedEdits:{"aspectratio.x":void 0,"aspectratio.y":void 0,"aspectratio.z":void 0}},aspectratio:{x:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},y:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},z:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},editType:"plot",impliedEdits:{aspectmode:"manual"}},xaxis:n,yaxis:n,zaxis:n,dragmode:{valType:"enumerated",values:["orbit","turntable","zoom","pan",!1],dflt:"turntable",editType:"plot"},hovermode:{valType:"enumerated",values:["closest",!1],dflt:"closest",editType:"modebar"},editType:"plot",_deprecated:{cameraposition:{valType:"info_array",editType:"camera"}}}},{"../../../lib":724,"../../../lib/extend":713,"../../domain_attributes":796,"./axis_attributes":815}],820:[function(t,e,r){"use strict";var n=t("../../../lib/str2rgbarray"),i=["xaxis","yaxis","zaxis"];function a(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}a.prototype.merge=function(t){for(var e=0;e<3;++e){var r=t[i[e]];r.visible?(this.enabled[e]=r.showspikes,this.colors[e]=n(r.spikecolor),this.drawSides[e]=r.spikesides,this.lineWidth[e]=r.spikethickness):(this.enabled[e]=!1,this.drawSides[e]=!1)}},e.exports=function(t){var e=new a;return e.merge(t),e}},{"../../../lib/str2rgbarray":746}],821:[function(t,e,r){"use strict";e.exports=function(t){for(var e=t.axesOptions,r=t.glplot.axesPixels,l=t.fullSceneLayout,c=[[],[],[]],u=0;u<3;++u){var f=l[o[u]];if(f._length=(r[u].hi-r[u].lo)*r[u].pixelsPerDataUnit/t.dataScale[u],Math.abs(f._length)===1/0)c[u]=[];else{f._input_range=f.range.slice(),f.range[0]=r[u].lo/t.dataScale[u],f.range[1]=r[u].hi/t.dataScale[u],f._m=1/(t.dataScale[u]*r[u].pixelsPerDataUnit),f.range[0]===f.range[1]&&(f.range[0]-=1,f.range[1]+=1);var h=f.tickmode;if("auto"===f.tickmode){f.tickmode="linear";var d=f.nticks||i.constrain(f._length/40,4,9);n.autoTicks(f,Math.abs(f.range[1]-f.range[0])/d)}for(var p=n.calcTicks(f),m=0;mf[1][o]?d[o]=1:f[1][o]===f[0][o]?d[o]=1:d[o]=1/(f[1][o]-f[0][o]);for(this.dataScale=d,this.convertAnnotations(this),a=0;am[1][a])m[0][a]=-1,m[1][a]=1;else{var T=m[1][a]-m[0][a];m[0][a]-=T/32,m[1][a]+=T/32}}else{var E=s.range;m[0][a]=s.r2l(E[0]),m[1][a]=s.r2l(E[1])}m[0][a]===m[1][a]&&(m[0][a]-=1,m[1][a]+=1),v[a]=m[1][a]-m[0][a],this.glplot.bounds[0][a]=m[0][a]*d[a],this.glplot.bounds[1][a]=m[1][a]*d[a]}var S=[1,1,1];for(a=0;a<3;++a){var L=g[l=(s=c[w[a]]).type];S[a]=Math.pow(L.acc,1/L.count)/d[a]}var C;if("auto"===c.aspectmode)C=Math.max.apply(null,S)/Math.min.apply(null,S)<=4?S:[1,1,1];else if("cube"===c.aspectmode)C=[1,1,1];else if("data"===c.aspectmode)C=S;else{if("manual"!==c.aspectmode)throw new Error("scene.js aspectRatio was not one of the enumerated types");var P=c.aspectratio;C=[P.x,P.y,P.z]}c.aspectratio.x=u.aspectratio.x=C[0],c.aspectratio.y=u.aspectratio.y=C[1],c.aspectratio.z=u.aspectratio.z=C[2],this.glplot.aspect=C;var z=c.domain||null,O=e._size||null;if(z&&O){var D=this.container.style;D.position="absolute",D.left=O.l+z.x[0]*O.w+"px",D.top=O.t+(1-z.y[1])*O.h+"px",D.width=O.w*(z.x[1]-z.x[0])+"px",D.height=O.h*(z.y[1]-z.y[0])+"px"}this.glplot.redraw()}},_.destroy=function(){this.glplot&&(this.camera.mouseListener.enabled=!1,this.container.removeEventListener("wheel",this.camera.wheelListener),this.camera=this.glplot.camera=null,this.glplot.dispose(),this.container.parentNode.removeChild(this.container),this.glplot=null)},_.getCamera=function(){return this.glplot.camera.view.recalcMatrix(this.camera.view.lastT()),A(this.glplot.camera)},_.setCamera=function(t){var e;this.glplot.camera.lookAt.apply(this,[[(e=t).eye.x,e.eye.y,e.eye.z],[e.center.x,e.center.y,e.center.z],[e.up.x,e.up.y,e.up.z]])},_.saveCamera=function(t){var e=this.getCamera(),r=c.nestedProperty(t,this.id+".camera"),n=r.get(),i=!1;function a(t,e,r,n){var i=["up","center","eye"],a=["x","y","z"];return e[i[r]]&&t[i[r]][a[n]]===e[i[r]][a[n]]}if(void 0===n)i=!0;else for(var o=0;o<3;o++)for(var s=0;s<3;s++)if(!a(e,n,o,s)){i=!0;break}return i&&r.set(e),i},_.updateFx=function(t,e){var r=this.camera;r&&("orbit"===t?(r.mode="orbit",r.keyBindingMode="rotate"):"turntable"===t?(r.up=[0,0,1],r.mode="turntable",r.keyBindingMode="rotate"):r.keyBindingMode=t),this.fullSceneLayout.hovermode=e},_.toImage=function(t){t||(t="png"),this.staticMode&&this.container.appendChild(n),this.glplot.redraw();var e=this.glplot.gl,r=e.drawingBufferWidth,i=e.drawingBufferHeight;e.bindFramebuffer(e.FRAMEBUFFER,null);var a=new Uint8Array(r*i*4);e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a);for(var o=0,s=i-1;o0}o.update=function(t){this.visible?this.needsNewSource(t)?(this.updateLayer(t),this.updateSource(t)):this.needsNewLayer(t)&&this.updateLayer(t):(this.updateSource(t),this.updateLayer(t)),this.updateStyle(t),this.visible=s(t)},o.needsNewSource=function(t){return this.sourceType!==t.sourcetype||this.source!==t.source||this.layerType!==t.type},o.needsNewLayer=function(t){return this.layerType!==t.type||this.below!==t.below},o.updateSource=function(t){var e=this.map;if(e.getSource(this.idSource)&&e.removeSource(this.idSource),this.sourceType=t.sourcetype,this.source=t.source,s(t)){var r=function(t){var e,r=t.sourcetype,n=t.source,i={type:r};"geojson"===r?e="data":"vector"===r&&(e="string"==typeof n?"url":"tiles");return i[e]=n,i}(t);e.addSource(this.idSource,r)}},o.updateLayer=function(t){var e=this.map;if(e.getLayer(this.idLayer)&&e.removeLayer(this.idLayer),this.layerType=t.type,s(t)){e.addLayer({id:this.idLayer,source:this.idSource,"source-layer":t.sourcelayer||"",type:t.type},t.below);this.mapbox.setOptions(this.idLayer,"setLayoutProperty",{visibility:"visible"})}},o.updateStyle=function(t){var e=function(t){var e={},r={};switch(t.type){case"circle":n.extendFlat(r,{"circle-radius":t.circle.radius,"circle-color":t.color,"circle-opacity":t.opacity});break;case"line":n.extendFlat(r,{"line-width":t.line.width,"line-color":t.color,"line-opacity":t.opacity});break;case"fill":n.extendFlat(r,{"fill-color":t.color,"fill-outline-color":t.fill.outlinecolor,"fill-opacity":t.opacity});break;case"symbol":var a=t.symbol,o=i(a.textposition,a.iconsize);n.extendFlat(e,{"icon-image":a.icon+"-15","icon-size":a.iconsize/10,"text-field":a.text,"text-size":a.textfont.size,"text-anchor":o.anchor,"text-offset":o.offset}),n.extendFlat(r,{"icon-color":t.color,"text-color":a.textfont.color,"text-opacity":t.opacity})}return{layout:e,paint:r}}(t);s(t)&&(this.mapbox.setOptions(this.idLayer,"setLayoutProperty",e.layout),this.mapbox.setOptions(this.idLayer,"setPaintProperty",e.paint))},o.dispose=function(){var t=this.map;t.removeLayer(this.idLayer),t.removeSource(this.idSource)},e.exports=function(t,e,r){var n=new a(t,e);return n.update(r),n}},{"../../lib":724,"./convert_text_opts":826}],829:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("../../components/color").defaultLine,a=t("../domain_attributes"),o=t("../font_attributes"),s=t("../../traces/scatter/attributes").textposition,l=t("../../plot_api/edit_types").overrideAll,c=o({});c.family.dflt="Open Sans Regular, Arial Unicode MS Regular",e.exports=l({_arrayAttrRegexps:[n.counterRegex("mapbox",".layers",!0)],domain:a({name:"mapbox"}),accesstoken:{valType:"string",noBlank:!0,strict:!0},style:{valType:"any",values:["basic","streets","outdoors","light","dark","satellite","satellite-streets"],dflt:"basic"},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},layers:{_isLinkedToArray:"layer",sourcetype:{valType:"enumerated",values:["geojson","vector"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},type:{valType:"enumerated",values:["circle","line","fill","symbol"],dflt:"circle"},below:{valType:"string",dflt:""},color:{valType:"color",dflt:i},opacity:{valType:"number",min:0,max:1,dflt:1},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2}},fill:{outlinecolor:{valType:"color",dflt:i}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},textfont:c,textposition:n.extendFlat({},s,{arrayOk:!1})}}},"plot","from-root")},{"../../components/color":598,"../../lib":724,"../../plot_api/edit_types":754,"../../traces/scatter/attributes":1048,"../domain_attributes":796,"../font_attributes":797}],830:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("../subplot_defaults"),a=t("./layout_attributes");function o(t,e,r,i){r("accesstoken",i.accessToken),r("style"),r("center.lon"),r("center.lat"),r("zoom"),r("bearing"),r("pitch"),function(t,e){var r,i,o=t.layers||[],s=e.layers=[];function l(t,e){return n.coerce(r,i,a.layers,t,e)}for(var c=0;c=e.width-20?(a["text-anchor"]="start",a.x=5):(a["text-anchor"]="end",a.x=e._paper.attr("width")-7),r.attr(a);var o=r.select(".js-link-to-tool"),s=r.select(".js-link-spacer"),l=r.select(".js-sourcelinks");t._context.showSources&&t._context.showSources(t),t._context.showLink&&function(t,e){e.text("");var r=e.append("a").attr({"xlink:xlink:href":"#",class:"link--impt link--embedview","font-weight":"bold"}).text(t._context.linkText+" "+String.fromCharCode(187));if(t._context.sendData)r.on("click",function(){d.sendDataToCloud(t)});else{var n=window.location.pathname.split("/"),i=window.location.search;r.attr({"xlink:xlink:show":"new","xlink:xlink:href":"/"+n[2].split(".")[0]+"/"+n[1]+i})}}(t,o),s.text(o.text()&&l.text()?" - ":"")}},d.sendDataToCloud=function(t){t.emit("plotly_beforeexport");var e=window.PLOTLYENV&&window.PLOTLYENV.BASE_URL||"https://plot.ly",r=n.select(t).append("div").attr("id","hiddenform").style("display","none"),i=r.append("form").attr({action:e+"/external",method:"post",target:"_blank"});return i.append("input").attr({type:"text",name:"data"}).node().value=d.graphJson(t,!1,"keepdata"),i.node().submit(),r.remove(),t.emit("plotly_afterexport"),!1};var x,_=["days","shortDays","months","shortMonths","periods","dateTime","date","time","decimal","thousands","grouping","currency"],w=["year","month","dayMonth","dayMonthYear"];function M(t,e){var r,n,i=t.trace,a=i._arrayAttrs,o={};for(r=0;r=0)return!0}return!1},d.cleanPlot=function(t,e,r,n){var i,a,o=n._basePlotModules||[];for(i=0;i0){var u=function(t){var e,r={left:0,right:0,bottom:0,top:0};if(t)for(e in t)t.hasOwnProperty(e)&&(r.left+=t[e].left||0,r.right+=t[e].right||0,r.bottom+=t[e].bottom||0,r.top+=t[e].top||0);return r}(t._boundingBoxMargins),f=u.left+u.right,h=u.bottom+u.top,p=1-2*s,m=r._container&&r._container.node?r._container.node().getBoundingClientRect():{width:r.width,height:r.height};n=Math.round(p*(m.width-f)),a=Math.round(p*(m.height-h))}else{var v=l?window.getComputedStyle(t):{};n=parseFloat(v.width)||r.width,a=parseFloat(v.height)||r.height}var g=d.layoutAttributes.width.min,y=d.layoutAttributes.height.min;n1,x=!e.height&&Math.abs(r.height-a)>1;(x||b)&&(b&&(r.width=n),x&&(r.height=a)),t._initialAutoSize||(t._initialAutoSize={width:n,height:a}),d.sanitizeMargins(r)},d.supplyLayoutModuleDefaults=function(t,e,r,n){var i,a,o,l=s.componentsRegistry,c=e._basePlotModules,u=s.subplotsRegistry.cartesian;for(i in l)(o=l[i]).includeBasePlot&&o.includeBasePlot(t,e);for(c.length||c.push(u),e._has("cartesian")&&u.finalizeSubplots(t,e),a=0;a.5*n.width&&(r.l=r.r=0),r.b+r.t>.5*n.height&&(r.b=r.t=0),n._pushmargin[e]={l:{val:r.x,size:r.l+i},r:{val:r.x,size:r.r+i},b:{val:r.y,size:r.b+i},t:{val:r.y,size:r.t+i}}}else delete n._pushmargin[e];n._replotting||d.doAutoMargin(t)}},d.doAutoMargin=function(t){var e=t._fullLayout;e._size||(e._size={}),e._pushmargin||(e._pushmargin={});var r=e._size,n=JSON.stringify(r),o=Math.max(e.margin.l||0,0),s=Math.max(e.margin.r||0,0),l=Math.max(e.margin.t||0,0),c=Math.max(e.margin.b||0,0),u=e._pushmargin;if(!1!==e.margin.autoexpand)for(var f in u.base={l:{val:0,size:o},r:{val:1,size:s},t:{val:1,size:l},b:{val:0,size:c}},u){var h=u[f].l||{},d=u[f].b||{},p=h.val,m=h.size,v=d.val,g=d.size;for(var y in u){if(i(m)&&u[y].r){var b=u[y].r.val,x=u[y].r.size;if(b>p){var _=(m*b+(x-e.width)*p)/(b-p),w=(x*(1-p)+(m-e.width)*(1-b))/(b-p);_>=0&&w>=0&&_+w>o+s&&(o=_,s=w)}}if(i(g)&&u[y].t){var M=u[y].t.val,k=u[y].t.size;if(M>v){var A=(g*M+(k-e.height)*v)/(M-v),T=(k*(1-v)+(g-e.height)*(1-M))/(M-v);A>=0&&T>=0&&A+T>c+l&&(c=A,l=T)}}}}if(r.l=Math.round(o),r.r=Math.round(s),r.t=Math.round(l),r.b=Math.round(c),r.p=Math.round(e.margin.pad),r.w=Math.round(e.width)-r.l-r.r,r.h=Math.round(e.height)-r.t-r.b,!e._replotting&&"{}"!==n&&n!==JSON.stringify(e._size))return a.plot(t)},d.graphJson=function(t,e,r,n,i){(i&&e&&!t._fullData||i&&!e&&!t._fullLayout)&&d.supplyDefaults(t);var a=i?t._fullData:t.data,o=i?t._fullLayout:t.layout,s=(t._transitionData||{})._frames;function l(t){if("function"==typeof t)return null;if(c.isPlainObject(t)){var e,n,i={};for(e in t)if("function"!=typeof t[e]&&-1===["_","["].indexOf(e.charAt(0))){if("keepdata"===r){if("src"===e.substr(e.length-3))continue}else if("keepstream"===r){if("string"==typeof(n=t[e+"src"])&&n.indexOf(":")>0&&!c.isPlainObject(t.stream))continue}else if("keepall"!==r&&"string"==typeof(n=t[e+"src"])&&n.indexOf(":")>0)continue;i[e]=l(t[e])}return i}return Array.isArray(t)?t.map(l):c.isJSDate(t)?c.ms2DateTimeLocal(+t):t}var u={data:(a||[]).map(function(t){var r=l(t);return e&&delete r.fit,r})};return e||(u.layout=l(o)),t.framework&&t.framework.isPolar&&(u=t.framework.getConfig()),s&&(u.frames=l(s)),"object"===n?u:JSON.stringify(u)},d.modifyFrames=function(t,e){var r,n,i,a=t._transitionData._frames,o=t._transitionData._frameHash;for(r=0;r0&&(t._transitioningWithDuration=!0),t._transitionData._interruptCallbacks.push(function(){p=!0}),i.redraw&&t._transitionData._interruptCallbacks.push(function(){return a.redraw(t)}),t._transitionData._interruptCallbacks.push(function(){t.emit("plotly_transitioninterrupted",[])});var n,s,l=0,u=0;function f(){return l++,function(){var r;p||++u!==l||(r=e,t._transitionData&&(function(t){if(t)for(;t.length;)t.shift()}(t._transitionData._interruptCallbacks),Promise.resolve().then(function(){if(i.redraw)return a.redraw(t)}).then(function(){t._transitioning=!1,t._transitioningWithDuration=!1,t.emit("plotly_transitioned",[])}).then(r)))}}var d=t._fullLayout._basePlotModules,m=!1;if(r)for(s=0;s=0;a--)if(x[a].enabled){r._indexToPoints=x[a]._indexToPoints;break}n&&n.calc&&(b=n.calc(t,r))}Array.isArray(b)&&b[0]||(b=[{x:h,y:h}]),b[0].t||(b[0].t={}),b[0].trace=r,d[i]=b}s.getComponentMethod("fx","calc")(t)},d.rehover=function(t){t._fullLayout._rehover&&t._fullLayout._rehover()},d.generalUpdatePerTraceModule=function(t,e,r,n){var i,a=e.traceHash,o={};for(i=0;i=0?h.angularAxis.domain:n.extent(w),E=Math.abs(w[1]-w[0]);k&&!M&&(E=0);var S=T.slice();A&&M&&(S[1]+=E);var L=h.angularAxis.ticksCount||4;L>8&&(L=L/(L/8)+L%8),h.angularAxis.ticksStep&&(L=(S[1]-S[0])/L);var C=h.angularAxis.ticksStep||(S[1]-S[0])/(L*(h.minorTicks+1));_&&(C=Math.max(Math.round(C),1)),S[2]||(S[2]=C);var P=n.range.apply(this,S);if(P=P.map(function(t,e){return parseFloat(t.toPrecision(12))}),s=n.scale.linear().domain(S.slice(0,2)).range("clockwise"===h.direction?[0,360]:[360,0]),u.layout.angularAxis.domain=s.domain(),u.layout.angularAxis.endPadding=A?E:0,void 0===(t=n.select(this).select("svg.chart-root"))||t.empty()){var z=(new DOMParser).parseFromString("' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '","application/xml"),O=this.appendChild(this.ownerDocument.importNode(z.documentElement,!0));t=n.select(O)}t.select(".guides-group").style({"pointer-events":"none"}),t.select(".angular.axis-group").style({"pointer-events":"none"}),t.select(".radial.axis-group").style({"pointer-events":"none"});var D,I=t.select(".chart-group"),R={fill:"none",stroke:h.tickColor},N={"font-size":h.font.size,"font-family":h.font.family,fill:h.font.color,"text-shadow":["-1px 0px","1px -1px","-1px 1px","1px 1px"].map(function(t,e){return" "+t+" 0 "+h.font.outlineColor}).join(",")};if(h.showLegend){D=t.select(".legend-group").attr({transform:"translate("+[y,h.margin.top]+")"}).style({display:"block"});var F=d.map(function(t,e){var r=o.util.cloneJson(t);return r.symbol="DotPlot"===t.geometry?t.dotType||"circle":"LinePlot"!=t.geometry?"square":"line",r.visibleInLegend=void 0===t.visibleInLegend||t.visibleInLegend,r.color="LinePlot"===t.geometry?t.strokeColor:t.color,r});o.Legend().config({data:d.map(function(t,e){return t.name||"Element"+e}),legendConfig:i({},o.Legend.defaultConfig().legendConfig,{container:D,elements:F,reverseOrder:h.legend.reverseOrder})})();var j=D.node().getBBox();y=Math.min(h.width-j.width-h.margin.left-h.margin.right,h.height-h.margin.top-h.margin.bottom)/2,y=Math.max(10,y),x=[h.margin.left+y,h.margin.top+y],r.range([0,y]),u.layout.radialAxis.domain=r.domain(),D.attr("transform","translate("+[x[0]+y,x[1]-y]+")")}else D=t.select(".legend-group").style({display:"none"});t.attr({width:h.width,height:h.height}).style({opacity:h.opacity}),I.attr("transform","translate("+x+")").style({cursor:"crosshair"});var B=[(h.width-(h.margin.left+h.margin.right+2*y+(j?j.width:0)))/2,(h.height-(h.margin.top+h.margin.bottom+2*y))/2];if(B[0]=Math.max(0,B[0]),B[1]=Math.max(0,B[1]),t.select(".outer-group").attr("transform","translate("+B+")"),h.title){var U=t.select("g.title-group text").style(N).text(h.title),V=U.node().getBBox();U.attr({x:x[0]-V.width/2,y:x[1]-y-20})}var q=t.select(".radial.axis-group");if(h.radialAxis.gridLinesVisible){var H=q.selectAll("circle.grid-circle").data(r.ticks(5));H.enter().append("circle").attr({class:"grid-circle"}).style(R),H.attr("r",r),H.exit().remove()}q.select("circle.outside-circle").attr({r:y}).style(R);var G=t.select("circle.background-circle").attr({r:y}).style({fill:h.backgroundColor,stroke:h.stroke});function Y(t,e){return s(t)%360+h.orientation}if(h.radialAxis.visible){var W=n.svg.axis().scale(r).ticks(5).tickSize(5);q.call(W).attr({transform:"rotate("+h.radialAxis.orientation+")"}),q.selectAll(".domain").style(R),q.selectAll("g>text").text(function(t,e){return this.textContent+h.radialAxis.ticksSuffix}).style(N).style({"text-anchor":"start"}).attr({x:0,y:0,dx:0,dy:0,transform:function(t,e){return"horizontal"===h.radialAxis.tickOrientation?"rotate("+-h.radialAxis.orientation+") translate("+[0,N["font-size"]]+")":"translate("+[0,N["font-size"]]+")"}}),q.selectAll("g>line").style({stroke:"black"})}var X=t.select(".angular.axis-group").selectAll("g.angular-tick").data(P),Z=X.enter().append("g").classed("angular-tick",!0);X.attr({transform:function(t,e){return"rotate("+Y(t)+")"}}).style({display:h.angularAxis.visible?"block":"none"}),X.exit().remove(),Z.append("line").classed("grid-line",!0).classed("major",function(t,e){return e%(h.minorTicks+1)==0}).classed("minor",function(t,e){return!(e%(h.minorTicks+1)==0)}).style(R),Z.selectAll(".minor").style({stroke:h.minorTickColor}),X.select("line.grid-line").attr({x1:h.tickLength?y-h.tickLength:0,x2:y}).style({display:h.angularAxis.gridLinesVisible?"block":"none"}),Z.append("text").classed("axis-text",!0).style(N);var J=X.select("text.axis-text").attr({x:y+h.labelOffset,dy:a+"em",transform:function(t,e){var r=Y(t),n=y+h.labelOffset,i=h.angularAxis.tickOrientation;return"horizontal"==i?"rotate("+-r+" "+n+" 0)":"radial"==i?r<270&&r>90?"rotate(180 "+n+" 0)":null:"rotate("+(r<=180&&r>0?-90:90)+" "+n+" 0)"}}).style({"text-anchor":"middle",display:h.angularAxis.labelsVisible?"block":"none"}).text(function(t,e){return e%(h.minorTicks+1)!=0?"":_?_[t]+h.angularAxis.ticksSuffix:t+h.angularAxis.ticksSuffix}).style(N);h.angularAxis.rewriteTicks&&J.text(function(t,e){return e%(h.minorTicks+1)!=0?"":h.angularAxis.rewriteTicks(this.textContent,e)});var K=n.max(I.selectAll(".angular-tick text")[0].map(function(t,e){return t.getCTM().e+t.getBBox().width}));D.attr({transform:"translate("+[y+K,h.margin.top]+")"});var Q=t.select("g.geometry-group").selectAll("g").size()>0,$=t.select("g.geometry-group").selectAll("g.geometry").data(d);if($.enter().append("g").attr({class:function(t,e){return"geometry geometry"+e}}),$.exit().remove(),d[0]||Q){var tt=[];d.forEach(function(t,e){var n={};n.radialScale=r,n.angularScale=s,n.container=$.filter(function(t,r){return r==e}),n.geometry=t.geometry,n.orientation=h.orientation,n.direction=h.direction,n.index=e,tt.push({data:t,geometryConfig:n})});var et=[];n.nest().key(function(t,e){return void 0!==t.data.groupId||"unstacked"}).entries(tt).forEach(function(t,e){"unstacked"===t.key?et=et.concat(t.values.map(function(t,e){return[t]})):et.push(t.values)}),et.forEach(function(t,e){var r;r=Array.isArray(t)?t[0].geometryConfig.geometry:t.geometryConfig.geometry;var n=t.map(function(t,e){return i(o[r].defaultConfig(),t)});o[r]().config(n)()})}var rt,nt,it=t.select(".guides-group"),at=t.select(".tooltips-group"),ot=o.tooltipPanel().config({container:at,fontSize:8})(),st=o.tooltipPanel().config({container:at,fontSize:8})(),lt=o.tooltipPanel().config({container:at,hasTick:!0})();if(!M){var ct=it.select("line").attr({x1:0,y1:0,y2:0}).style({stroke:"grey","pointer-events":"none"});I.on("mousemove.angular-guide",function(t,e){var r=o.util.getMousePos(G).angle;ct.attr({x2:-y,transform:"rotate("+r+")"}).style({opacity:.5});var n=(r+180+360-h.orientation)%360;rt=s.invert(n);var i=o.util.convertToCartesian(y+12,r+180);ot.text(o.util.round(rt)).move([i[0]+x[0],i[1]+x[1]])}).on("mouseout.angular-guide",function(t,e){it.select("line").style({opacity:0})})}var ut=it.select("circle").style({stroke:"grey",fill:"none"});I.on("mousemove.radial-guide",function(t,e){var n=o.util.getMousePos(G).radius;ut.attr({r:n}).style({opacity:.5}),nt=r.invert(o.util.getMousePos(G).radius);var i=o.util.convertToCartesian(n,h.radialAxis.orientation);st.text(o.util.round(nt)).move([i[0]+x[0],i[1]+x[1]])}).on("mouseout.radial-guide",function(t,e){ut.style({opacity:0}),lt.hide(),ot.hide(),st.hide()}),t.selectAll(".geometry-group .mark").on("mouseover.tooltip",function(e,r){var i=n.select(this),a=this.style.fill,s="black",l=this.style.opacity||1;if(i.attr({"data-opacity":l}),a&&"none"!==a){i.attr({"data-fill":a}),s=n.hsl(a).darker().toString(),i.style({fill:s,opacity:1});var c={t:o.util.round(e[0]),r:o.util.round(e[1])};M&&(c.t=_[e[0]]);var u="t: "+c.t+", r: "+c.r,f=this.getBoundingClientRect(),h=t.node().getBoundingClientRect(),d=[f.left+f.width/2-B[0]-h.left,f.top+f.height/2-B[1]-h.top];lt.config({color:s}).text(u),lt.move(d)}else a=this.style.stroke||"black",i.attr({"data-stroke":a}),s=n.hsl(a).darker().toString(),i.style({stroke:s,opacity:1})}).on("mousemove.tooltip",function(t,e){if(0!=n.event.which)return!1;n.select(this).attr("data-fill")&<.show()}).on("mouseout.tooltip",function(t,e){lt.hide();var r=n.select(this),i=r.attr("data-fill");i?r.style({fill:i,opacity:r.attr("data-opacity")}):r.style({stroke:r.attr("data-stroke"),opacity:r.attr("data-opacity")})})})}(c),this},h.config=function(t){if(!arguments.length)return l;var e=o.util.cloneJson(t);return e.data.forEach(function(t,e){l.data[e]||(l.data[e]={}),i(l.data[e],o.Axis.defaultConfig().data[0]),i(l.data[e],t)}),i(l.layout,o.Axis.defaultConfig().layout),i(l.layout,e.layout),this},h.getLiveConfig=function(){return u},h.getinputConfig=function(){return c},h.radialScale=function(t){return r},h.angularScale=function(t){return s},h.svg=function(){return t},n.rebind(h,f,"on"),h},o.Axis.defaultConfig=function(t,e){return{data:[{t:[1,2,3,4],r:[10,11,12,13],name:"Line1",geometry:"LinePlot",color:null,strokeDash:"solid",strokeColor:null,strokeSize:"1",visibleInLegend:!0,opacity:1}],layout:{defaultColorRange:n.scale.category10().range(),title:null,height:450,width:500,margin:{top:40,right:40,bottom:40,left:40},font:{size:12,color:"gray",outlineColor:"white",family:"Tahoma, sans-serif"},direction:"clockwise",orientation:0,labelOffset:10,radialAxis:{domain:null,orientation:-45,ticksSuffix:"",visible:!0,gridLinesVisible:!0,tickOrientation:"horizontal",rewriteTicks:null},angularAxis:{domain:[0,360],ticksSuffix:"",visible:!0,gridLinesVisible:!0,labelsVisible:!0,tickOrientation:"horizontal",rewriteTicks:null,ticksCount:null,ticksStep:null},minorTicks:0,tickLength:null,tickColor:"silver",minorTickColor:"#eee",backgroundColor:"none",needsEndSpacing:null,showLegend:!0,legend:{reverseOrder:!1},opacity:1}}},o.util={},o.DATAEXTENT="dataExtent",o.AREA="AreaChart",o.LINE="LinePlot",o.DOT="DotPlot",o.BAR="BarChart",o.util._override=function(t,e){for(var r in t)r in e&&(e[r]=t[r])},o.util._extend=function(t,e){for(var r in t)e[r]=t[r]},o.util._rndSnd=function(){return 2*Math.random()-1+(2*Math.random()-1)+(2*Math.random()-1)},o.util.dataFromEquation2=function(t,e){var r=e||6;return n.range(0,360+r,r).map(function(e,r){var n=e*Math.PI/180;return[e,t(n)]})},o.util.dataFromEquation=function(t,e,r){var i=e||6,a=[],o=[];n.range(0,360+i,i).forEach(function(e,r){var n=e*Math.PI/180,i=t(n);a.push(e),o.push(i)});var s={t:a,r:o};return r&&(s.name=r),s},o.util.ensureArray=function(t,e){if(void 0===t)return null;var r=[].concat(t);return n.range(e).map(function(t,e){return r[e]||r[0]})},o.util.fillArrays=function(t,e,r){return e.forEach(function(e,n){t[e]=o.util.ensureArray(t[e],r)}),t},o.util.cloneJson=function(t){return JSON.parse(JSON.stringify(t))},o.util.validateKeys=function(t,e){"string"==typeof e&&(e=e.split("."));var r=e.shift();return t[r]&&(!e.length||objHasKeys(t[r],e))},o.util.sumArrays=function(t,e){return n.zip(t,e).map(function(t,e){return n.sum(t)})},o.util.arrayLast=function(t){return t[t.length-1]},o.util.arrayEqual=function(t,e){for(var r=Math.max(t.length,e.length,1);r-- >=0&&t[r]===e[r];);return-2===r},o.util.flattenArray=function(t){for(var e=[];!o.util.arrayEqual(e,t);)e=t,t=[].concat.apply([],t);return t},o.util.deduplicate=function(t){return t.filter(function(t,e,r){return r.indexOf(t)==e})},o.util.convertToCartesian=function(t,e){var r=e*Math.PI/180;return[t*Math.cos(r),t*Math.sin(r)]},o.util.round=function(t,e){var r=e||2,n=Math.pow(10,r);return Math.round(t*n)/n},o.util.getMousePos=function(t){var e=n.mouse(t.node()),r=e[0],i=e[1],a={};return a.x=r,a.y=i,a.pos=e,a.angle=180*(Math.atan2(i,r)+Math.PI)/Math.PI,a.radius=Math.sqrt(r*r+i*i),a},o.util.duplicatesCount=function(t){for(var e,r={},n={},i=0,a=t.length;i0)){var l=n.select(this.parentNode).selectAll("path.line").data([0]);l.enter().insert("path"),l.attr({class:"line",d:u(s),transform:function(t,r){return"rotate("+(e.orientation+90)+")"},"pointer-events":"none"}).style({fill:function(t,e){return p.fill(r,i,a)},"fill-opacity":0,stroke:function(t,e){return p.stroke(r,i,a)},"stroke-width":function(t,e){return p["stroke-width"](r,i,a)},"stroke-dasharray":function(t,e){return p["stroke-dasharray"](r,i,a)},opacity:function(t,e){return p.opacity(r,i,a)},display:function(t,e){return p.display(r,i,a)}})}};var f=e.angularScale.range(),h=Math.abs(f[1]-f[0])/o[0].length*Math.PI/180,d=n.svg.arc().startAngle(function(t){return-h/2}).endAngle(function(t){return h/2}).innerRadius(function(t){return e.radialScale(l+(t[2]||0))}).outerRadius(function(t){return e.radialScale(l+(t[2]||0))+e.radialScale(t[1])});c.arc=function(t,r,i){n.select(this).attr({class:"mark arc",d:d,transform:function(t,r){return"rotate("+(e.orientation+s(t[0])+90)+")"}})};var p={fill:function(e,r,n){return t[n].data.color},stroke:function(e,r,n){return t[n].data.strokeColor},"stroke-width":function(e,r,n){return t[n].data.strokeSize+"px"},"stroke-dasharray":function(e,n,i){return r[t[i].data.strokeDash]},opacity:function(e,r,n){return t[n].data.opacity},display:function(e,r,n){return void 0===t[n].data.visible||t[n].data.visible?"block":"none"}},m=n.select(this).selectAll("g.layer").data(o);m.enter().append("g").attr({class:"layer"});var v=m.selectAll("path.mark").data(function(t,e){return t});v.enter().append("path").attr({class:"mark"}),v.style(p).each(c[e.geometryType]),v.exit().remove(),m.exit().remove()})}return a.config=function(e){return arguments.length?(e.forEach(function(e,r){t[r]||(t[r]={}),i(t[r],o.PolyChart.defaultConfig()),i(t[r],e)}),this):t},a.getColorScale=function(){},n.rebind(a,e,"on"),a},o.PolyChart.defaultConfig=function(){return{data:{name:"geom1",t:[[1,2,3,4]],r:[[1,2,3,4]],dotType:"circle",dotSize:64,dotVisible:!1,barWidth:20,color:"#ffa500",strokeSize:1,strokeColor:"silver",strokeDash:"solid",opacity:1,index:0,visible:!0,visibleInLegend:!0},geometryConfig:{geometry:"LinePlot",geometryType:"arc",direction:"clockwise",orientation:0,container:"body",radialScale:null,angularScale:null,colorScale:n.scale.category20()}}},o.BarChart=function(){return o.PolyChart()},o.BarChart.defaultConfig=function(){return{geometryConfig:{geometryType:"bar"}}},o.AreaChart=function(){return o.PolyChart()},o.AreaChart.defaultConfig=function(){return{geometryConfig:{geometryType:"arc"}}},o.DotPlot=function(){return o.PolyChart()},o.DotPlot.defaultConfig=function(){return{geometryConfig:{geometryType:"dot",dotType:"circle"}}},o.LinePlot=function(){return o.PolyChart()},o.LinePlot.defaultConfig=function(){return{geometryConfig:{geometryType:"line"}}},o.Legend=function(){var t=o.Legend.defaultConfig(),e=n.dispatch("hover");function r(){var e=t.legendConfig,a=t.data.map(function(t,r){return[].concat(t).map(function(t,n){var a=i({},e.elements[r]);return a.name=t,a.color=[].concat(e.elements[r].color)[n],a})}),o=n.merge(a);o=o.filter(function(t,r){return e.elements[r]&&(e.elements[r].visibleInLegend||void 0===e.elements[r].visibleInLegend)}),e.reverseOrder&&(o=o.reverse());var s=e.container;("string"==typeof s||s.nodeName)&&(s=n.select(s));var l=o.map(function(t,e){return t.color}),c=e.fontSize,u=null==e.isContinuous?"number"==typeof o[0]:e.isContinuous,f=u?e.height:c*o.length,h=s.classed("legend-group",!0).selectAll("svg").data([0]),d=h.enter().append("svg").attr({width:300,height:f+c,xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1"});d.append("g").classed("legend-axis",!0),d.append("g").classed("legend-marks",!0);var p=n.range(o.length),m=n.scale[u?"linear":"ordinal"]().domain(p).range(l),v=n.scale[u?"linear":"ordinal"]().domain(p)[u?"range":"rangePoints"]([0,f]);if(u){var g=h.select(".legend-marks").append("defs").append("linearGradient").attr({id:"grad1",x1:"0%",y1:"0%",x2:"0%",y2:"100%"}).selectAll("stop").data(l);g.enter().append("stop"),g.attr({offset:function(t,e){return e/(l.length-1)*100+"%"}}).style({"stop-color":function(t,e){return t}}),h.append("rect").classed("legend-mark",!0).attr({height:e.height,width:e.colorBandWidth,fill:"url(#grad1)"})}else{var y=h.select(".legend-marks").selectAll("path.legend-mark").data(o);y.enter().append("path").classed("legend-mark",!0),y.attr({transform:function(t,e){return"translate("+[c/2,v(e)+c/2]+")"},d:function(t,e){var r,i,a,o=t.symbol;return a=3*(i=c),"line"===(r=o)?"M"+[[-i/2,-i/12],[i/2,-i/12],[i/2,i/12],[-i/2,i/12]]+"Z":-1!=n.svg.symbolTypes.indexOf(r)?n.svg.symbol().type(r).size(a)():n.svg.symbol().type("square").size(a)()},fill:function(t,e){return m(e)}}),y.exit().remove()}var b=n.svg.axis().scale(v).orient("right"),x=h.select("g.legend-axis").attr({transform:"translate("+[u?e.colorBandWidth:c,c/2]+")"}).call(b);return x.selectAll(".domain").style({fill:"none",stroke:"none"}),x.selectAll("line").style({fill:"none",stroke:u?e.textColor:"none"}),x.selectAll("text").style({fill:e.textColor,"font-size":e.fontSize}).text(function(t,e){return o[e].name}),r}return r.config=function(e){return arguments.length?(i(t,e),this):t},n.rebind(r,e,"on"),r},o.Legend.defaultConfig=function(t,e){return{data:["a","b","c"],legendConfig:{elements:[{symbol:"line",color:"red"},{symbol:"square",color:"yellow"},{symbol:"diamond",color:"limegreen"}],height:150,colorBandWidth:30,fontSize:12,container:"body",isContinuous:null,textColor:"grey",reverseOrder:!1}}},o.tooltipPanel=function(){var t,e,r,a={container:null,hasTick:!1,fontSize:12,color:"white",padding:5},s="tooltip-"+o.tooltipPanel.uid++,l=10,c=function(){var n=(t=a.container.selectAll("g."+s).data([0])).enter().append("g").classed(s,!0).style({"pointer-events":"none",display:"none"});return r=n.append("path").style({fill:"white","fill-opacity":.9}).attr({d:"M0 0"}),e=n.append("text").attr({dx:a.padding+l,dy:.3*+a.fontSize}),c};return c.text=function(i){var o=n.hsl(a.color).l,s=o>=.5?"#aaa":"white",u=o>=.5?"black":"white",f=i||"";e.style({fill:u,"font-size":a.fontSize+"px"}).text(f);var h=a.padding,d=e.node().getBBox(),p={fill:a.color,stroke:s,"stroke-width":"2px"},m=d.width+2*h+l,v=d.height+2*h;return r.attr({d:"M"+[[l,-v/2],[l,-v/4],[a.hasTick?0:l,0],[l,v/4],[l,v/2],[m,v/2],[m,-v/2]].join("L")+"Z"}).style(p),t.attr({transform:"translate("+[l,-v/2+2*h]+")"}),t.style({display:"block"}),c},c.move=function(e){if(t)return t.attr({transform:"translate("+[e[0],e[1]]+")"}).style({display:"block"}),c},c.hide=function(){if(t)return t.style({display:"none"}),c},c.show=function(){if(t)return t.style({display:"block"}),c},c.config=function(t){return i(a,t),c},c},o.tooltipPanel.uid=1,o.adapter={},o.adapter.plotly=function(){var t={convert:function(t,e){var r={};if(t.data&&(r.data=t.data.map(function(t,r){var n=i({},t);return[[n,["marker","color"],["color"]],[n,["marker","opacity"],["opacity"]],[n,["marker","line","color"],["strokeColor"]],[n,["marker","line","dash"],["strokeDash"]],[n,["marker","line","width"],["strokeSize"]],[n,["marker","symbol"],["dotType"]],[n,["marker","size"],["dotSize"]],[n,["marker","barWidth"],["barWidth"]],[n,["line","interpolation"],["lineInterpolation"]],[n,["showlegend"],["visibleInLegend"]]].forEach(function(t,r){o.util.translator.apply(null,t.concat(e))}),e||delete n.marker,e&&delete n.groupId,e?("LinePlot"===n.geometry?(n.type="scatter",!0===n.dotVisible?(delete n.dotVisible,n.mode="lines+markers"):n.mode="lines"):"DotPlot"===n.geometry?(n.type="scatter",n.mode="markers"):"AreaChart"===n.geometry?n.type="area":"BarChart"===n.geometry&&(n.type="bar"),delete n.geometry):("scatter"===n.type?"lines"===n.mode?n.geometry="LinePlot":"markers"===n.mode?n.geometry="DotPlot":"lines+markers"===n.mode&&(n.geometry="LinePlot",n.dotVisible=!0):"area"===n.type?n.geometry="AreaChart":"bar"===n.type&&(n.geometry="BarChart"),delete n.mode,delete n.type),n}),!e&&t.layout&&"stack"===t.layout.barmode)){var a=o.util.duplicates(r.data.map(function(t,e){return t.geometry}));r.data.forEach(function(t,e){var n=a.indexOf(t.geometry);-1!=n&&(r.data[e].groupId=n)})}if(t.layout){var s=i({},t.layout);if([[s,["plot_bgcolor"],["backgroundColor"]],[s,["showlegend"],["showLegend"]],[s,["radialaxis"],["radialAxis"]],[s,["angularaxis"],["angularAxis"]],[s.angularaxis,["showline"],["gridLinesVisible"]],[s.angularaxis,["showticklabels"],["labelsVisible"]],[s.angularaxis,["nticks"],["ticksCount"]],[s.angularaxis,["tickorientation"],["tickOrientation"]],[s.angularaxis,["ticksuffix"],["ticksSuffix"]],[s.angularaxis,["range"],["domain"]],[s.angularaxis,["endpadding"],["endPadding"]],[s.radialaxis,["showline"],["gridLinesVisible"]],[s.radialaxis,["tickorientation"],["tickOrientation"]],[s.radialaxis,["ticksuffix"],["ticksSuffix"]],[s.radialaxis,["range"],["domain"]],[s.angularAxis,["showline"],["gridLinesVisible"]],[s.angularAxis,["showticklabels"],["labelsVisible"]],[s.angularAxis,["nticks"],["ticksCount"]],[s.angularAxis,["tickorientation"],["tickOrientation"]],[s.angularAxis,["ticksuffix"],["ticksSuffix"]],[s.angularAxis,["range"],["domain"]],[s.angularAxis,["endpadding"],["endPadding"]],[s.radialAxis,["showline"],["gridLinesVisible"]],[s.radialAxis,["tickorientation"],["tickOrientation"]],[s.radialAxis,["ticksuffix"],["ticksSuffix"]],[s.radialAxis,["range"],["domain"]],[s.font,["outlinecolor"],["outlineColor"]],[s.legend,["traceorder"],["reverseOrder"]],[s,["labeloffset"],["labelOffset"]],[s,["defaultcolorrange"],["defaultColorRange"]]].forEach(function(t,r){o.util.translator.apply(null,t.concat(e))}),e?(void 0!==s.tickLength&&(s.angularaxis.ticklen=s.tickLength,delete s.tickLength),s.tickColor&&(s.angularaxis.tickcolor=s.tickColor,delete s.tickColor)):(s.angularAxis&&void 0!==s.angularAxis.ticklen&&(s.tickLength=s.angularAxis.ticklen),s.angularAxis&&void 0!==s.angularAxis.tickcolor&&(s.tickColor=s.angularAxis.tickcolor)),s.legend&&"boolean"!=typeof s.legend.reverseOrder&&(s.legend.reverseOrder="normal"!=s.legend.reverseOrder),s.legend&&"boolean"==typeof s.legend.traceorder&&(s.legend.traceorder=s.legend.traceorder?"reversed":"normal",delete s.legend.reverseOrder),s.margin&&void 0!==s.margin.t){var l=["t","r","b","l","pad"],c=["top","right","bottom","left","pad"],u={};n.entries(s.margin).forEach(function(t,e){u[c[l.indexOf(t.key)]]=t.value}),s.margin=u}e&&(delete s.needsEndSpacing,delete s.minorTickColor,delete s.minorTicks,delete s.angularaxis.ticksCount,delete s.angularaxis.ticksCount,delete s.angularaxis.ticksStep,delete s.angularaxis.rewriteTicks,delete s.angularaxis.nticks,delete s.radialaxis.ticksCount,delete s.radialaxis.ticksCount,delete s.radialaxis.ticksStep,delete s.radialaxis.rewriteTicks,delete s.radialaxis.nticks),r.layout=s}return r}};return t}},{"../../../constants/alignment":696,"../../../lib":724,d3:128}],843:[function(t,e,r){"use strict";var n=t("d3"),i=t("../../../lib"),a=t("../../../components/color"),o=t("./micropolar"),s=t("./undo_manager"),l=i.extendDeepAll,c=e.exports={};c.framework=function(t){var e,r,i,a,u,f=new s;function h(r,s){return s&&(u=s),n.select(n.select(u).node().parentNode).selectAll(".svg-container>*:not(.chart-root)").remove(),e=e?l(e,r):r,i||(i=o.Axis()),a=o.adapter.plotly().convert(e),i.config(a).render(u),t.data=e.data,t.layout=e.layout,c.fillLayout(t),e}return h.isPolar=!0,h.svg=function(){return i.svg()},h.getConfig=function(){return e},h.getLiveConfig=function(){return o.adapter.plotly().convert(i.getLiveConfig(),!0)},h.getLiveScales=function(){return{t:i.angularScale(),r:i.radialScale()}},h.setUndoPoint=function(){var t,n,i=this,a=o.util.cloneJson(e);t=a,n=r,f.add({undo:function(){n&&i(n)},redo:function(){i(t)}}),r=o.util.cloneJson(a)},h.undo=function(){f.undo()},h.redo=function(){f.redo()},h},c.fillLayout=function(t){var e=n.select(t).selectAll(".plot-container"),r=e.selectAll(".svg-container"),i=t.framework&&t.framework.svg&&t.framework.svg(),o={width:800,height:600,paper_bgcolor:a.background,_container:e,_paperdiv:r,_paper:i};t._fullLayout=l(o,t.layout)}},{"../../../components/color":598,"../../../lib":724,"./micropolar":842,"./undo_manager":844,d3:128}],844:[function(t,e,r){"use strict";e.exports=function(){var t,e=[],r=-1,n=!1;function i(t,e){return t?(n=!0,t[e](),n=!1,this):this}return{add:function(t){return n?this:(e.splice(r+1,e.length-r),e.push(t),r=e.length-1,this)},setCallback:function(e){t=e},undo:function(){var n=e[r];return n?(i(n,"undo"),r-=1,t&&t(n.undo),this):this},redo:function(){var n=e[r+1];return n?(i(n,"redo"),r+=1,t&&t(n.redo),this):this},clear:function(){e=[],r=-1},hasUndo:function(){return-1!==r},hasRedo:function(){return r0?1:-1}function N(t){return R(Math.cos(t))}function F(t){return R(Math.sin(t))}e.exports=function(t,e){return new T(t,e)},E.plot=function(t,e){var r=e[this.id];this._hasClipOnAxisFalse=!1;for(var n=0;n=90||s>90&&l>=450?1:u<=0&&h<=0?0:Math.max(u,h);e=s<=180&&l>=180||s>180&&l>=540?-1:c>=0&&f>=0?0:Math.min(c,f);r=s<=270&&l>=270||s>270&&l>=630?-1:u>=0&&h>=0?0:Math.min(u,h);n=l>=360?1:c<=0&&f<=0?0:Math.max(c,f);return[e,r,n,i]}(g),b=y[2]-y[0],_=y[3]-y[1],M=v/m,k=Math.abs(_/b);M>k?(s=m,p=(v-(u=m*k))/i.h/2,h=[a[0],a[1]],d=[o[0]+p,o[1]-p]):(u=v,p=(m-(s=v/k))/i.w/2,h=[a[0]+p,a[1]-p],d=[o[0],o[1]]),r.xLength2=s,r.yLength2=u,r.xDomain2=h,r.yDomain2=d;var A=r.xOffset2=i.l+i.w*h[0],T=r.yOffset2=i.t+i.h*(1-d[1]),E=r.radius=s/b,S=r.cx=A-E*y[0],L=r.cy=T+E*y[3],C=r.cxx=S-A,z=r.cyy=L-T;r.updateRadialAxis(t,e),r.updateRadialAxisTitle(t,e),r.updateAngularAxis(t,e);var O=r.radialAxis.range,I=O[1]-O[0],R=r.xaxis={type:"linear",_id:"x",range:[y[0]*I,y[2]*I],domain:h};f.setConvert(R,t),R.setScale();var N=r.yaxis={type:"linear",_id:"y",range:[y[1]*I,y[3]*I],domain:d};f.setConvert(N,t),N.setScale(),R.isPtWithinRange=function(t){return r.isPtWithinSector(t)},N.isPtWithinRange=function(){return!0},n.frontplot.attr("transform",D(A,T)).call(c.setClipUrl,r._hasClipOnAxisFalse?null:r.clipIds.circle),n.bgcircle.attr({d:P(E,g),transform:D(S,L)}).call(l.fill,e.bgcolor),r.clipPaths.circle.select("path").attr("d",P(E,g)).attr("transform",D(C,z)),r.framework.selectAll(".crisp").classed("crisp",0)},E.updateRadialAxis=function(t,e){var r=this.gd,n=this.layers,i=this.radius,a=this.cx,o=this.cy,c=t._size,u=e.radialaxis,h=e.sector,d=w(h[0]);this.fillViewInitialKey("radialaxis.angle",u.angle);var p=this.radialAxis=s.extendFlat({},u,{_axislayer:n["radial-axis"],_gridlayer:n["radial-grid"],_id:"x",_pos:0,side:{counterclockwise:"top",clockwise:"bottom"}[u.side],domain:[0,i/c.w],anchor:"free",position:0,_counteraxis:!0});S(p,u,t),f.doAutoRange(p),u.range=p.range.slice(),u._input.range=p.range.slice(),this.fillViewInitialKey("radialaxis.range",p.range.slice()),"auto"===p.tickangle&&d>90&&d<=270&&(p.tickangle=180),p._transfn=function(t){return"translate("+p.l2p(t.x)+",0)"},p._gridpath=function(t){return C(p.r2p(t.x),h)};var m=L(u);this.radialTickLayout!==m&&(n["radial-axis"].selectAll(".xtick").remove(),this.radialTickLayout=m),f.doTicks(r,p,!0),O(n["radial-axis"],u.showticklabels||u.ticks,{transform:D(a,o)+I(-u.angle)}),O(n["radial-grid"],u.showgrid,{transform:D(a,o)}).selectAll("path").attr("transform",null),O(n["radial-line"].select("line"),u.showline,{x1:0,y1:0,x2:i,y2:0,transform:D(a,o)+I(-u.angle)}).attr("stroke-width",u.linewidth).call(l.stroke,u.linecolor)},E.updateRadialAxisTitle=function(t,e,r){var n=this.gd,i=this.radius,a=this.cx,o=this.cy,s=e.radialaxis,l=this.id+"title",u=void 0!==r?r:s.angle,f=x(u),h=Math.cos(f),d=Math.sin(f),p=0;if(s.title){var v=c.bBox(this.layers["radial-axis"].node()).height,g=s.titlefont.size;p="counterclockwise"===s.side?-v-.4*g:v+.8*g}this.layers["radial-axis-title"]=m.draw(n,l,{propContainer:s,propName:this.id+".radialaxis.title",placeholder:b(n,"Click to enter radial axis title"),attributes:{x:a+i/2*h+p*d,y:o-i/2*d+p*h,"text-anchor":"middle"},transform:{rotate:-u}})},E.updateAngularAxis=function(t,e){var r=this,i=r.gd,a=r.layers,o=r.radius,c=r.cx,u=r.cy,h=e.angularaxis,d=e.sector,p=d.map(x);r.fillViewInitialKey("angularaxis.rotation",h.rotation);var m=r.angularAxis=s.extendFlat({},h,{_axislayer:a["angular-axis"],_gridlayer:a["angular-grid"],_id:"angular",_pos:0,side:"right",domain:[0,Math.PI],anchor:"free",position:0,_counteraxis:!0});function v(t){return m.c2rad(t.x,"degrees")}function g(t){return[o*Math.cos(t),o*Math.sin(t)]}"linear"===m.type?(m.autorange=!1,z(d)?m.range=d.slice():m.range=p.map(m.unTransformRad).map(_),"radians"===m.thetaunit&&(m.tick0=_(m.tick0),m.dtick=_(m.dtick))):"category"===m.type&&(m._tickFilter=function(t){return r.isPtWithinSector({r:r.radialAxis.range[1],rad:m.c2rad(t.x)})}),S(m,h,t),f.doAutoRange(m),m._transfn=function(t){var e=v(t),r=g(e),i=D(c+r[0],u-r[1]),a=n.select(this);return a&&a.node()&&a.classed("ticks")&&(i+=I(-_(e))),i},m._gridpath=function(t){var e=g(v(t));return"M0,0L"+-e[0]+","+e[1]};var b="outside"!==h.ticks?.7:.5;m._labelx=function(t){var e=v(t),r=m._labelStandoff,n=m._pad;return(0===F(e)?0:Math.cos(e)*(r+n+b*t.fontSize))+N(e)*(t.dx+r+n)},m._labely=function(t){var e=v(t),r=m._labelStandoff,n=m._labelShift,i=m._pad;return t.dy+t.fontSize*y-n+-Math.sin(e)*(r+i+b*t.fontSize)},m._labelanchor=function(t,e){var r=v(e);return 0===F(r)?N(r)>0?"start":"end":"middle"};var w=L(h);r.angularTickLayout!==w&&(a["angular-axis"].selectAll(".angulartick").remove(),r.angularTickLayout=w),f.doTicks(i,m,!0),O(a["angular-line"].select("path"),h.showline,{d:P(o,d),transform:D(c,u)}).attr("stroke-width",h.linewidth).call(l.stroke,h.linecolor)},E.updateFx=function(t,e){this.gd._context.staticPlot||(this.updateAngularDrag(t,e),this.updateRadialDrag(t,e),this.updateMainDrag(t,e))},E.updateMainDrag=function(t,e){var r=this,o=r.gd,s=r.layers,l=t._zoomlayer,c=A.MINZOOM,u=A.OFFEDGE,f=r.radius,m=r.cx,g=r.cy,y=r.cxx,b=r.cyy,x=e.sector,_=d.makeDragger(s,"path","maindrag","crosshair");n.select(_).attr("d",P(f,x)).attr("transform",D(m,g));var w,M,k,T,E,S,L,C,z,O={element:_,gd:o,subplot:r.id,plotinfo:{xaxis:r.xaxis,yaxis:r.yaxis},xaxes:[r.xaxis],yaxes:[r.yaxis]};function I(t,e){var r=t-y,n=e-b;return Math.sqrt(r*r+n*n)}function R(t,e){return Math.atan2(b-e,t-y)}function N(t,e){return[t*Math.cos(e),t*Math.sin(-e)]}function F(t,e){var r=A.cornerLen,n=A.cornerHalfWidth;if(0===t)return P(2*n,x);var i=r/t/2,a=e-i,o=e+i,s=Math.max(0,Math.min(t,f)),l=s-n,c=s+n;return"M"+N(l,a)+"A"+[l,l]+" 0,0,0 "+N(l,o)+"L"+N(c,o)+"A"+[c,c]+" 0,0,1 "+N(c,a)+"Z"}function j(t,e){var r,n,i=w+t,a=M+e,o=I(w,M),s=Math.min(I(i,a),f),l=R(w,M),h=R(i,a);oc?(o0==a>y[0]){E=m.range[1]=a,f.doTicks(i,r.radialAxis,!0),l["radial-grid"].attr("transform",D(u,p)).selectAll("path").attr("transform",null);var h=E-y[0],d=r.sectorBBox;for(var v in r.xaxis.range=[d[0]*h,d[2]*h],r.yaxis.range=[d[1]*h,d[3]*h],r.xaxis.setScale(),r.yaxis.setScale(),r.traceHash){var x=r.traceHash[v],_=s.filterVisible(x),w=x[0][0].trace._module,M=i._fullLayout[r.id];if(w.plot(i,r,_,M),!o.traceIs(v,"gl"))for(var k=0;k<_.length;k++)w.style(i,_[k])}}}},E.updateAngularDrag=function(t,e){var r=this,i=r.gd,l=r.layers,u=r.radius,p=r.cx,m=r.cy,v=r.cxx,y=r.cyy,b=e.sector,w=A.angularDragBoxSize,T=d.makeDragger(l,"path","angulardrag","move"),E={element:T,gd:i};function S(t,e){return Math.atan2(y+w-e,t-v-w)}n.select(T).attr("d",function(t,e,r){var n,i,a,o=Math.abs(r[1]-r[0])<=180?0:1;function s(t,e){return[t*Math.cos(e),-t*Math.sin(e)]}function l(t,e,r){return"A"+[t,t]+" "+[0,o,r]+" "+s(t,e)}return z(r)?(n=0,a=2*Math.PI,i=Math.PI,"M"+s(t,n)+l(t,i,0)+l(t,a,0)+"ZM"+s(e,n)+l(e,i,1)+l(e,a,1)+"Z"):(n=x(r[0]),a=x(r[1]),"M"+s(t,n)+"L"+s(e,n)+l(e,a,0)+"L"+s(t,a)+l(t,n,1)+"Z")}(u,u+w,b)).attr("transform",D(p,m)).call(g,"move");var L,C,P,O,R,N,F=l.frontplot.select(".scatterlayer").selectAll(".trace"),j=F.selectAll(".point"),B=F.selectAll(".textpoint");function U(t,e){var a=S(L+t,C+e),u=_(a-N);O=P+u,l.frontplot.attr("transform",D(r.xOffset2,r.yOffset2)+I([-u,v,y])),r.clipPaths.circle.select("path").attr("transform",D(v,y)+I(u)),j.each(function(){var t=n.select(this),e=c.getTranslate(t);t.attr("transform",D(e.x,e.y)+I([u]))}),B.each(function(){var t=n.select(this),e=t.select("text"),r=c.getTranslate(t);t.attr("transform",I([u,e.attr("x"),e.attr("y")])+D(r.x,r.y))});var h=r.angularAxis;for(var d in h.rotation=M(O),"linear"!==h.type||z(b)||(h.range=R.map(x).map(h.unTransformRad).map(_)),k(h),f.doTicks(i,h,!0),r._hasClipOnAxisFalse&&!z(b)&&(r.sector=[R[0]-u,R[1]-u],F.call(c.hideOutsideRangePoints,r)),r.traceHash)if(o.traceIs(d,"gl")){var p=r.traceHash[d],m=s.filterVisible(p),g=p[0][0].trace._module,w=i._fullLayout[r.id];g.plot(i,r,m,w)}}function V(){B.select("text").attr("transform",null);var t={};t[r.id+".angularaxis.rotation"]=O,a.relayout(i,t)}E.prepFn=function(e,n,i){var a=t[r.id];R=a.sector.slice(),P=a.angularaxis.rotation;var o=T.getBoundingClientRect();L=n-o.left,C=i-o.top,N=S(L,C),E.moveFn=U,E.doneFn=V,d.clearSelect(t._zoomlayer)},h.init(E)},E.isPtWithinSector=function(t){var e=this.sector,r=this.radialAxis,n=r.range,i=r.c2r(t.r),a=w(e[0]),o=w(e[1]);a>o&&(o+=360);var s,l,c=w(_(t.rad)),u=c+360;return n[1]>=n[0]?(s=n[0],l=n[1]):(s=n[1],l=n[0]),i>=s&&i<=l&&(z(e)||c>=a&&c<=o||u>=a&&u<=o)},E.fillViewInitialKey=function(t,e){t in this.viewInitial||(this.viewInitial[t]=e)}},{"../../components/color":598,"../../components/dragelement":620,"../../components/drawing":623,"../../components/fx":640,"../../components/titles":689,"../../constants/alignment":696,"../../lib":724,"../../lib/setcursor":743,"../../plotly":765,"../../registry":854,"../cartesian/axes":770,"../cartesian/dragbox":778,"../cartesian/select":788,"../plots":833,"./constants":834,"./helpers":835,d3:128,tinycolor2:526}],846:[function(t,e,r){"use strict";var n=t("../lib");e.exports=function(t,e,r,i){var a,o,s=i.type,l=i.attributes,c=i.handleDefaults,u=i.partition||"x",f=e._subplots[s],h=f.length;function d(t,e){return n.coerce(a,o,l,t,e)}for(var p=0;p=f&&(d.min=0,p.min=0,m.min=0,t.aaxis&&delete t.aaxis.min,t.baxis&&delete t.baxis.min,t.caxis&&delete t.caxis.min)}e.exports=function(t,e,r){i(t,e,r,{type:"ternary",attributes:a,handleDefaults:l,font:e.font,paper_bgcolor:e.paper_bgcolor})}},{"../../../components/color":598,"../../subplot_defaults":846,"./axis_defaults":850,"./layout_attributes":852}],852:[function(t,e,r){"use strict";var n=t("../../../components/color/attributes"),i=t("../../domain_attributes"),a=t("./axis_attributes"),o=t("../../../plot_api/edit_types").overrideAll;e.exports=o({domain:i({name:"ternary"}),bgcolor:{valType:"color",dflt:n.background},sum:{valType:"number",dflt:1,min:0},aaxis:a,baxis:a,caxis:a},"plot","from-root")},{"../../../components/color/attributes":597,"../../../plot_api/edit_types":754,"../../domain_attributes":796,"./axis_attributes":849}],853:[function(t,e,r){"use strict";var n=t("d3"),i=t("tinycolor2"),a=t("../../plotly"),o=t("../../lib"),s=o._,l=t("../../components/color"),c=t("../../components/drawing"),u=t("../cartesian/set_convert"),f=t("../../lib/extend").extendFlat,h=t("../plots"),d=t("../cartesian/axes"),p=t("../../components/dragelement"),m=t("../../components/fx"),v=t("../../components/titles"),g=t("../cartesian/select"),y=t("../cartesian/constants");function b(t,e){this.id=t.id,this.graphDiv=t.graphDiv,this.init(e),this.makeFramework(e)}e.exports=b;var x=b.prototype;x.init=function(t){this.container=t._ternarylayer,this.defs=t._defs,this.layoutId=t._uid,this.traceHash={},this.layers={}},x.plot=function(t,e){var r=e[this.id],n=e._size;this._hasClipOnAxisFalse=!1;for(var i=0;i_*b?i=(a=b)*_:a=(i=y)/_,o=v*i/y,s=g*a/b,r=e.l+e.w*p-i/2,n=e.t+e.h*(1-m)-a/2,h.x0=r,h.y0=n,h.w=i,h.h=a,h.sum=x,h.xaxis={type:"linear",range:[w+2*k-x,x-w-2*M],domain:[p-o/2,p+o/2],_id:"x"},u(h.xaxis,h.graphDiv._fullLayout),h.xaxis.setScale(),h.xaxis.isPtWithinRange=function(t){return t.a>=h.aaxis.range[0]&&t.a<=h.aaxis.range[1]&&t.b>=h.baxis.range[1]&&t.b<=h.baxis.range[0]&&t.c>=h.caxis.range[1]&&t.c<=h.caxis.range[0]},h.yaxis={type:"linear",range:[w,x-M-k],domain:[m-s/2,m+s/2],_id:"y"},u(h.yaxis,h.graphDiv._fullLayout),h.yaxis.setScale(),h.yaxis.isPtWithinRange=function(){return!0};var A=h.yaxis.domain[0],T=h.aaxis=f({},t.aaxis,{visible:!0,range:[w,x-M-k],side:"left",_counterangle:30,tickangle:(+t.aaxis.tickangle||0)-30,domain:[A,A+s*_],_axislayer:h.layers.aaxis,_gridlayer:h.layers.agrid,_pos:0,_id:"y",_length:i,_gridpath:"M0,0l"+a+",-"+i/2});u(T,h.graphDiv._fullLayout),T.setScale();var E=h.baxis=f({},t.baxis,{visible:!0,range:[x-w-k,M],side:"bottom",_counterangle:30,domain:h.xaxis.domain,_axislayer:h.layers.baxis,_gridlayer:h.layers.bgrid,_counteraxis:h.aaxis,_pos:0,_id:"x",_length:i,_gridpath:"M0,0l-"+i/2+",-"+a});u(E,h.graphDiv._fullLayout),E.setScale(),T._counteraxis=E;var S=h.caxis=f({},t.caxis,{visible:!0,range:[x-w-M,k],side:"right",_counterangle:30,tickangle:(+t.caxis.tickangle||0)+30,domain:[A,A+s*_],_axislayer:h.layers.caxis,_gridlayer:h.layers.cgrid,_counteraxis:h.baxis,_pos:0,_id:"y",_length:i,_gridpath:"M0,0l-"+a+","+i/2});u(S,h.graphDiv._fullLayout),S.setScale();var L="M"+r+","+(n+a)+"h"+i+"l-"+i/2+",-"+a+"Z";h.clipDef.select("path").attr("d",L),h.layers.plotbg.select("path").attr("d",L);var C="M0,"+a+"h"+i+"l-"+i/2+",-"+a+"Z";h.clipDefRelative.select("path").attr("d",C);var P="translate("+r+","+n+")";h.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",P),h.clipDefRelative.select("path").attr("transform",null);var z="translate("+(r-E._offset)+","+(n+a)+")";h.layers.baxis.attr("transform",z),h.layers.bgrid.attr("transform",z);var O="translate("+(r+i/2)+","+n+")rotate(30)translate(0,"+-T._offset+")";h.layers.aaxis.attr("transform",O),h.layers.agrid.attr("transform",O);var D="translate("+(r+i/2)+","+n+")rotate(-30)translate(0,"+-S._offset+")";h.layers.caxis.attr("transform",D),h.layers.cgrid.attr("transform",D),h.drawAxes(!0),h.plotContainer.selectAll(".crisp").classed("crisp",!1),h.layers.aline.select("path").attr("d",T.showline?"M"+r+","+(n+a)+"l"+i/2+",-"+a:"M0,0").call(l.stroke,T.linecolor||"#000").style("stroke-width",(T.linewidth||0)+"px"),h.layers.bline.select("path").attr("d",E.showline?"M"+r+","+(n+a)+"h"+i:"M0,0").call(l.stroke,E.linecolor||"#000").style("stroke-width",(E.linewidth||0)+"px"),h.layers.cline.select("path").attr("d",S.showline?"M"+(r+i/2)+","+n+"l"+i/2+","+a:"M0,0").call(l.stroke,S.linecolor||"#000").style("stroke-width",(S.linewidth||0)+"px"),h.graphDiv._context.staticPlot||h.initInteractions(),c.setClipUrl(h.layers.frontplot,h._hasClipOnAxisFalse?null:h.clipId)},x.drawAxes=function(t){var e=this.graphDiv,r=this.id.substr(7)+"title",n=this.aaxis,i=this.baxis,a=this.caxis;if(d.doTicks(e,n,!0),d.doTicks(e,i,!0),d.doTicks(e,a,!0),t){var o=Math.max(n.showticklabels?n.tickfont.size/2:0,(a.showticklabels?.75*a.tickfont.size:0)+("outside"===a.ticks?.87*a.ticklen:0));this.layers["a-title"]=v.draw(e,"a"+r,{propContainer:n,propName:this.id+".aaxis.title",placeholder:s(e,"Click to enter Component A title"),attributes:{x:this.x0+this.w/2,y:this.y0-n.titlefont.size/3-o,"text-anchor":"middle"}});var l=(i.showticklabels?i.tickfont.size:0)+("outside"===i.ticks?i.ticklen:0)+3;this.layers["b-title"]=v.draw(e,"b"+r,{propContainer:i,propName:this.id+".baxis.title",placeholder:s(e,"Click to enter Component B title"),attributes:{x:this.x0-l,y:this.y0+this.h+.83*i.titlefont.size+l,"text-anchor":"middle"}}),this.layers["c-title"]=v.draw(e,"c"+r,{propContainer:a,propName:this.id+".caxis.title",placeholder:s(e,"Click to enter Component C title"),attributes:{x:this.x0+this.w+l,y:this.y0+this.h+.83*a.titlefont.size+l,"text-anchor":"middle"}})}};var w=y.MINZOOM/2+.87,M="m-0.87,.5h"+w+"v3h-"+(w+5.2)+"l"+(w/2+2.6)+",-"+(.87*w+4.5)+"l2.6,1.5l-"+w/2+","+.87*w+"Z",k="m0.87,.5h-"+w+"v3h"+(w+5.2)+"l-"+(w/2+2.6)+",-"+(.87*w+4.5)+"l-2.6,1.5l"+w/2+","+.87*w+"Z",A="m0,1l"+w/2+","+.87*w+"l2.6,-1.5l-"+(w/2+2.6)+",-"+(.87*w+4.5)+"l-"+(w/2+2.6)+","+(.87*w+4.5)+"l2.6,1.5l"+w/2+",-"+.87*w+"Z",T="m0.5,0.5h5v-2h-5v-5h-2v5h-5v2h5v5h2Z",E=!0;function S(t){n.select(t).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}x.initInteractions=function(){var t,e,r,n,u,f,h,d,v,b,x=this,w=x.layers.plotbg.select("path").node(),L=x.graphDiv,C=L._fullLayout._zoomlayer,P={element:w,gd:L,plotinfo:{xaxis:x.xaxis,yaxis:x.yaxis},subplot:x.id,prepFn:function(a,o,s){P.xaxes=[x.xaxis],P.yaxes=[x.yaxis];var c=L._fullLayout.dragmode;a.shiftKey&&(c="pan"===c?"zoom":"pan"),P.minDrag="lasso"===c?1:void 0,"zoom"===c?(P.moveFn=I,P.doneFn=R,function(a,o,s){var c=w.getBoundingClientRect();t=o-c.left,e=s-c.top,r={a:x.aaxis.range[0],b:x.baxis.range[1],c:x.caxis.range[1]},u=r,n=x.aaxis.range[1]-r.a,f=i(x.graphDiv._fullLayout[x.id].bgcolor).getLuminance(),h="M0,"+x.h+"L"+x.w/2+", 0L"+x.w+","+x.h+"Z",d=!1,v=C.append("path").attr("class","zoombox").attr("transform","translate("+x.x0+", "+x.y0+")").style({fill:f>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("d",h),b=C.append("path").attr("class","zoombox-corners").attr("transform","translate("+x.x0+", "+x.y0+")").style({fill:l.background,stroke:l.defaultLine,"stroke-width":1,opacity:0}).attr("d","M0,0Z"),j()}(0,o,s)):"pan"===c?(P.moveFn=N,P.doneFn=F,r={a:x.aaxis.range[0],b:x.baxis.range[1],c:x.caxis.range[1]},u=r,j()):"select"!==c&&"lasso"!==c||g(a,o,s,P,c)},clickFn:function(t,e){if(S(L),2===t){var r={};r[x.id+".aaxis.min"]=0,r[x.id+".baxis.min"]=0,r[x.id+".caxis.min"]=0,L.emit("plotly_doubleclick",null),a.relayout(L,r)}m.click(L,e,x.id)}};function z(t,e){return 1-e/x.h}function O(t,e){return 1-(t+(x.h-e)/Math.sqrt(3))/x.w}function D(t,e){return(t-(x.h-e)/Math.sqrt(3))/x.w}function I(i,a){var o=t+i,s=e+a,l=Math.max(0,Math.min(1,z(0,e),z(0,s))),c=Math.max(0,Math.min(1,O(t,e),O(o,s))),p=Math.max(0,Math.min(1,D(t,e),D(o,s))),m=(l/2+p)*x.w,g=(1-l/2-c)*x.w,w=(m+g)/2,E=g-m,S=(1-l)*x.h,L=S-E/_;E.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),b.transition().style("opacity",1).duration(200),d=!0)}function R(){if(S(L),u!==r){var t={};t[x.id+".aaxis.min"]=u.a,t[x.id+".baxis.min"]=u.b,t[x.id+".caxis.min"]=u.c,a.relayout(L,t),E&&L.data&&L._context.showTips&&(o.notifier(s(L,"Double-click to zoom back out"),"long"),E=!1)}}function N(t,e){var n=t/x.xaxis._m,i=e/x.yaxis._m,a=[(u={a:r.a-i,b:r.b+(n+i)/2,c:r.c-(n-i)/2}).a,u.b,u.c].sort(),o=a.indexOf(u.a),s=a.indexOf(u.b),l=a.indexOf(u.c);a[0]<0&&(a[1]+a[0]/2<0?(a[2]+=a[0]+a[1],a[0]=a[1]=0):(a[2]+=a[0]/2,a[1]+=a[0]/2,a[0]=0),u={a:a[o],b:a[s],c:a[l]},e=(r.a-u.a)*x.yaxis._m,t=(r.c-u.c-r.b+u.b)*x.xaxis._m);var f="translate("+(x.x0+t)+","+(x.y0+e)+")";x.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",f);var h="translate("+-t+","+-e+")";x.clipDefRelative.select("path").attr("transform",h),x.aaxis.range=[u.a,x.sum-u.b-u.c],x.baxis.range=[x.sum-u.a-u.c,u.b],x.caxis.range=[x.sum-u.a-u.b,u.c],x.drawAxes(!1),x.plotContainer.selectAll(".crisp").classed("crisp",!1),x._hasClipOnAxisFalse&&x.plotContainer.select(".scatterlayer").selectAll(".trace").call(c.hideOutsideRangePoints,x)}function F(){var t={};t[x.id+".aaxis.min"]=u.a,t[x.id+".baxis.min"]=u.b,t[x.id+".caxis.min"]=u.c,a.relayout(L,t)}function j(){C.selectAll(".select-outline").remove()}w.onmousemove=function(t){m.hover(L,t,x.id),L._fullLayout._lasthover=w,L._fullLayout._hoversubplot=x.id},w.onmouseout=function(t){L._dragging||p.unhover(L,t)},p.init(P)}},{"../../components/color":598,"../../components/dragelement":620,"../../components/drawing":623,"../../components/fx":640,"../../components/titles":689,"../../lib":724,"../../lib/extend":713,"../../plotly":765,"../cartesian/axes":770,"../cartesian/constants":775,"../cartesian/select":788,"../cartesian/set_convert":789,"../plots":833,d3:128,tinycolor2:526}],854:[function(t,e,r){"use strict";var n=t("./lib/loggers"),i=t("./lib/noop"),a=t("./lib/push_unique"),o=t("./lib/extend"),s=o.extendFlat,l=o.extendDeepAll,c=t("./plots/attributes"),u=t("./plots/layout_attributes");function f(t){if(t.layoutAttributes){var e=t.layoutAttributes._arrayAttrRegexps;if(e)for(var n=0;n-1&&(u[h[r]].title="");for(r=0;r")?"":e.html(t).text()});return e.remove(),r}(_),_=(_=_.replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g,"&")).replace(c,"'"),i.isIE()&&(_=(_=(_=_.replace(/"/gi,"'")).replace(/(\('#)([^']*)('\))/gi,'("#$2")')).replace(/(\\')/gi,'"')),_}},{"../components/color":598,"../components/drawing":623,"../constants/xmlns_namespaces":704,"../lib":724,d3:128}],863:[function(t,e,r){"use strict";var n=t("../../lib").mergeArray;e.exports=function(t,e){for(var r=0;ra;if(!o)return e}return void 0!==r?r:t.dflt}(t.size,s,n.size),color:function(t,e,r){return a(e).isValid()?e:void 0!==r?r:t.dflt}(t.color,l,n.color)}}function x(t,e){var r;return Array.isArray(t)?e.01?N:function(t,e){return Math.abs(t-e)>=2?N(t):t>e?Math.ceil(t):Math.floor(t)};T=I(T,u=I(u,T)),S=I(S,E=I(E,S))}var R=n.select(this);R.append("path").style("vector-effect","non-scaling-stroke").attr("d","M"+u+","+E+"V"+S+"H"+T+"V"+E+"Z"),function(t,e,r,n,i,a,o,l){var u;function f(e,r,n){var i=e.append("text").text(r).attr({class:"bartext bartext-"+u,transform:"","text-anchor":"middle","data-notex":1}).call(c.font,n).call(s.convertToTspans,t);return i}var w=r[0].trace,M=w.orientation,k=function(t,e){var r=x(t.text,e);return _(h,r)}(w,n);if(!k)return;if("none"===(u=function(t,e){var r=x(t.textposition,e);return function(t,e,r){return t.coerceNumber&&(e=+e),-1!==t.values.indexOf(e)?e:void 0!==r?r:t.dflt}(d,r)}(w,n)))return;var A,T,E,S,L,C,P=function(t,e,r){return b(p,t.textfont,e,r)}(w,n,t._fullLayout.font),z=function(t,e,r){return b(m,t.insidetextfont,e,r)}(w,n,P),O=function(t,e,r){return b(v,t.outsidetextfont,e,r)}(w,n,P),D=t._fullLayout.barmode,I="stack"===D||"relative"===D,R=r[n],N=!I||R._outmost,F=Math.abs(a-i)-2*g,j=Math.abs(l-o)-2*g;"outside"===u&&(N||(u="inside"));if("auto"===u)if(N){u="inside",A=f(e,k,z),T=c.bBox(A.node()),E=T.width,S=T.height;var B=E>0&&S>0,U=E<=F&&S<=j,V=E<=j&&S<=F,q="h"===M?F>=E*(j/S):j>=S*(F/E);B&&(U||V||q)?u="inside":(u="outside",A.remove(),A=null)}else u="inside";if(!A&&(A=f(e,k,"outside"===u?O:z),T=c.bBox(A.node()),E=T.width,S=T.height,E<=0||S<=0))return void A.remove();"outside"===u?(C="both"===w.constraintext||"outside"===w.constraintext,L=function(t,e,r,n,i,a,o){var s,l="h"===a?Math.abs(n-r):Math.abs(e-t);l>2*g&&(s=g);var c=1;o&&(c="h"===a?Math.min(1,l/i.height):Math.min(1,l/i.width));var u,f,h,d,p=(i.left+i.right)/2,m=(i.top+i.bottom)/2;u=c*i.width,f=c*i.height,"h"===a?er?(h=(t+e)/2,d=n+s+f/2):(h=(t+e)/2,d=n-s-f/2);return y(p,m,h,d,c,!1)}(i,a,o,l,T,M,C)):(C="both"===w.constraintext||"inside"===w.constraintext,L=function(t,e,r,n,i,a,o){var s,l,c,u,f,h,d,p=i.width,m=i.height,v=(i.left+i.right)/2,b=(i.top+i.bottom)/2,x=Math.abs(e-t),_=Math.abs(n-r);x>2*g&&_>2*g?(x-=2*(f=g),_-=2*f):f=0;p<=x&&m<=_?(h=!1,d=1):p<=_&&m<=x?(h=!0,d=1):pr?(c=(t+e)/2,u=n-f-l/2):(c=(t+e)/2,u=n+f+l/2);return y(v,b,c,u,d,h)}(i,a,o,l,T,M,C));A.attr("transform",L)}(t,R,e,o,u,T,E,S)}else n.select(this).remove();function N(t){return 0===w.bargap&&0===w.bargroupgap?n.round(Math.round(t)-D,2):t}})}),M.call(u.plot,e)}},{"../../components/color":598,"../../components/drawing":623,"../../components/errorbars":629,"../../lib":724,"../../lib/svg_text_utils":747,"./attributes":864,d3:128,"fast-isnumeric":140,tinycolor2:526}],872:[function(t,e,r){"use strict";e.exports=function(t,e){var r,n=t.cd,i=t.xaxis,a=t.yaxis,o=[];if(!1===e)for(r=0;rf+c||!n(u))&&(d=!0,p(h,t))}for(var v=0;v1||0===s.bargap&&0===s.bargroupgap&&!t[0].trace.marker.line.width)&&n.select(this).attr("shape-rendering","crispEdges")}),r.selectAll("g.points").each(function(e){var r=n.select(this),a=r.selectAll("path"),o=r.selectAll("text"),s=e[0].trace;i.pointStyle(a,s,t),i.selectedPointStyle(a,s),o.each(function(t){var e,r=n.select(this);function a(r){var n=e[r];return Array.isArray(n)?n[t.i]:n}r.classed("bartext-inside")?e=s.insidetextfont:r.classed("bartext-outside")&&(e=s.outsidetextfont),e||(e=s.textfont),i.font(r,a("family"),a("size"),a("color"))}),i.selectedTextStyle(o,s)}),a.style(r)}},{"../../components/drawing":623,"../../components/errorbars":629,d3:128}],876:[function(t,e,r){"use strict";var n=t("../../components/color"),i=t("../../components/colorscale/has_colorscale"),a=t("../../components/colorscale/defaults");e.exports=function(t,e,r,o,s){r("marker.color",o),i(t,"marker")&&a(t,e,s,r,{prefix:"marker.",cLetter:"c"}),r("marker.line.color",n.defaultLine),i(t,"marker.line")&&a(t,e,s,r,{prefix:"marker.line.",cLetter:"c"}),r("marker.line.width"),r("marker.opacity"),r("selected.marker.color"),r("unselected.marker.color")}},{"../../components/color":598,"../../components/colorscale/defaults":608,"../../components/colorscale/has_colorscale":612}],877:[function(t,e,r){"use strict";var n=t("../scatter/attributes"),i=t("../../components/color/attributes"),a=t("../../lib/extend").extendFlat,o=n.marker,s=o.line;e.exports={y:{valType:"data_array",editType:"calc+clearAxisTypes"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},x0:{valType:"any",editType:"calc+clearAxisTypes"},y0:{valType:"any",editType:"calc+clearAxisTypes"},name:{valType:"string",editType:"calc+clearAxisTypes"},text:a({},n.text,{}),whiskerwidth:{valType:"number",min:0,max:1,dflt:.5,editType:"calcIfAutorange"},notched:{valType:"boolean",editType:"calcIfAutorange"},notchwidth:{valType:"number",min:0,max:.5,dflt:.25,editType:"calcIfAutorange"},boxpoints:{valType:"enumerated",values:["all","outliers","suspectedoutliers",!1],dflt:"outliers",editType:"calcIfAutorange"},boxmean:{valType:"enumerated",values:[!0,"sd",!1],dflt:!1,editType:"calcIfAutorange"},jitter:{valType:"number",min:0,max:1,editType:"calcIfAutorange"},pointpos:{valType:"number",min:-2,max:2,editType:"calcIfAutorange"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},marker:{outliercolor:{valType:"color",dflt:"rgba(0, 0, 0, 0)",editType:"style"},symbol:a({},o.symbol,{arrayOk:!1,editType:"plot"}),opacity:a({},o.opacity,{arrayOk:!1,dflt:1,editType:"style"}),size:a({},o.size,{arrayOk:!1,editType:"calcIfAutorange"}),color:a({},o.color,{arrayOk:!1,editType:"style"}),line:{color:a({},s.color,{arrayOk:!1,dflt:i.defaultLine,editType:"style"}),width:a({},s.width,{arrayOk:!1,dflt:0,editType:"style"}),outliercolor:{valType:"color",editType:"style"},outlierwidth:{valType:"number",min:0,dflt:1,editType:"style"},editType:"style"},editType:"plot"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:n.fillcolor,selected:{marker:n.selected.marker,editType:"style"},unselected:{marker:n.unselected.marker,editType:"style"},hoveron:{valType:"flaglist",flags:["boxes","points"],dflt:"boxes+points",editType:"style"}}},{"../../components/color/attributes":597,"../../lib/extend":713,"../scatter/attributes":1048}],878:[function(t,e,r){"use strict";var n=t("fast-isnumeric"),i=t("../../lib"),a=i._,o=t("../../plots/cartesian/axes");function s(t,e,r){var n={text:"tx"};for(var i in n)Array.isArray(e[i])&&(t[n[i]]=e[i][r])}function l(t,e){return t.v-e.v}function c(t){return t.v}e.exports=function(t,e){var r,u,f,h,d,p=t._fullLayout,m=o.getFromId(t,e.xaxis||"x"),v=o.getFromId(t,e.yaxis||"y"),g=[],y="violin"===e.type?"_numViolins":"_numBoxes";"h"===e.orientation?(u=m,f="x",h=v,d="y"):(u=v,f="y",h=m,d="x");var b=u.makeCalcdata(e,f),x=function(t,e,r,a,o){if(e in t)return r.makeCalcdata(t,e);var s;s=e+"0"in t?t[e+"0"]:"name"in t&&("category"===r.type||n(t.name)&&-1!==["linear","log"].indexOf(r.type)||i.isDateTime(t.name)&&"date"===r.type)?t.name:o;var l=r.d2c(s,0,t[e+"calendar"]);return a.map(function(){return l})}(e,d,h,b,p[y]),_=i.distinctVals(x),w=_.vals,M=_.minDiff/2,k=function(t,e){for(var r=t.length,n=new Array(r+1),i=0;i=0&&L0){var P=E[r].sort(l),z=P.map(c),O=z.length,D={pos:w[r],pts:P};D.min=z[0],D.max=z[O-1],D.mean=i.mean(z,O),D.sd=i.stdev(z,O,D.mean),D.q1=i.interp(z,.25),D.med=i.interp(z,.5),D.q3=i.interp(z,.75),D.lf=Math.min(D.q1,z[Math.min(i.findBin(2.5*D.q1-1.5*D.q3,z,!0)+1,O-1)]),D.uf=Math.max(D.q3,z[Math.max(i.findBin(2.5*D.q3-1.5*D.q1,z),0)]),D.lo=4*D.q1-3*D.q3,D.uo=4*D.q3-3*D.q1;var I=1.57*(D.q3-D.q1)/Math.sqrt(O);D.ln=D.med-I,D.un=D.med+I,g.push(D)}return function(t,e){if(Array.isArray(e.selectedpoints))for(var r=0;r0?(g[0].t={num:p[y],dPos:M,posLetter:d,valLetter:f,labels:{med:a(t,"median:"),min:a(t,"min:"),q1:a(t,"q1:"),q3:a(t,"q3:"),max:a(t,"max:"),mean:"sd"===e.boxmean?a(t,"mean \xb1 \u03c3:"):a(t,"mean:"),lf:a(t,"lower fence:"),uf:a(t,"upper fence:")}},e._fullInput&&"candlestick"===e._fullInput.type&&delete g[0].t.labels,p[y]++,g):[{t:{empty:!0}}]}},{"../../lib":724,"../../plots/cartesian/axes":770,"fast-isnumeric":140}],879:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("../../registry"),a=t("../../components/color"),o=t("./attributes");function s(t,e,r,n){var a,o=r("y"),s=r("x");if(o&&o.length)a="v",s||r("x0");else{if(!s||!s.length)return void(e.visible=!1);a="h",r("y0")}i.getComponentMethod("calendars","handleTraceDefaults")(t,e,["x","y"],n),r("orientation",a)}function l(t,e,r,i){var a=i.prefix,s=n.coerce2(t,e,o,"marker.outliercolor"),l=r("marker.line.outliercolor"),c=r(a+"points",s||l?"suspectedoutliers":void 0);c?(r("jitter","all"===c?.3:0),r("pointpos","all"===c?-1.5:0),r("marker.symbol"),r("marker.opacity"),r("marker.size"),r("marker.color",e.line.color),r("marker.line.color"),r("marker.line.width"),"suspectedoutliers"===c&&(r("marker.line.outliercolor",e.marker.color),r("marker.line.outlierwidth")),r("selected.marker.color"),r("unselected.marker.color"),r("selected.marker.size"),r("unselected.marker.size"),r("text")):delete e.marker,r("hoveron"),n.coerceSelectionMarkerOpacity(e,r)}e.exports={supplyDefaults:function(t,e,r,i){function c(r,i){return n.coerce(t,e,o,r,i)}s(t,e,c,i),!1!==e.visible&&(c("line.color",(t.marker||{}).color||r),c("line.width"),c("fillcolor",a.addOpacity(e.line.color,.5)),c("whiskerwidth"),c("boxmean"),c("notched",void 0!==t.notchwidth)&&c("notchwidth"),l(t,e,c,{prefix:"box"}))},handleSampleDefaults:s,handlePointsDefaults:l}},{"../../components/color":598,"../../lib":724,"../../registry":854,"./attributes":877}],880:[function(t,e,r){"use strict";var n=t("../../plots/cartesian/axes"),i=t("../../lib"),a=t("../../components/fx"),o=t("../../components/color"),s=t("../scatter/fill_hover_text");function l(t,e,r,s){var l,c,u,f,h,d,p,m,v,g,y=t.cd,b=t.xa,x=t.ya,_=y[0].trace,w=y[0].t,M="violin"===_.type,k=[],A="closest"!==s||M?w.bdPos:2.5*w.bdPos,T=function(t){return t.pos+w.bPos-d};M&&"both"!==_.side?("positive"===_.side&&(v=function(t){var e=T(t);return a.inbox(e,e+A)}),"negative"===_.side&&(v=function(t){var e=T(t);return a.inbox(e-A,e)})):v=function(t){var e=T(t);return a.inbox(e-A,e+A)},g=M?function(t){return a.inbox(t.span[0]-h,t.span[1]-h)}:function(t){return a.inbox(t.min-h,t.max-h)},"h"===_.orientation?(h=e,d=r,p=g,m=v,l="y",u=x,c="x",f=b):(h=r,d=e,p=v,m=g,l="x",u=b,c="y",f=x);var E=a.getDistanceFunction(s,p,m);if(a.getClosest(y,E,t),!1===t.index)return[];var S=y[t.index],L=_.line.color,C=(_.marker||{}).color;o.opacity(L)&&_.line.width?t.color=L:o.opacity(C)&&_.boxpoints?t.color=C:t.color=_.fillcolor,t[l+"0"]=u.c2p(S.pos+w.bPos-w.bdPos,!0),t[l+"1"]=u.c2p(S.pos+w.bPos+w.bdPos,!0),n.tickText(u,u.c2l(S.pos),"hover").text,t[l+"LabelVal"]=S.pos;var P={},z=["med","min","q1","q3","max"];(_.boxmean||(_.meanline||{}).visible)&&z.push("mean"),(_.boxpoints||_.points)&&z.push("lf","uf");for(var O=0;Ot.uf}),o=Math.max((t.max-t.min)/10,t.q3-t.q1),u=1e-9*o,f=o*c,m=[],v=0;if(r.jitter){if(0===o)for(v=1,m=new Array(a.length),e=0;et.lo&&(w.so=!0)}return a}).enter().append("path").classed("point",!0).call(a.translatePoints,u,f)}function h(t,e,r,a){var o,s,l=e.pos,c=e.val,u=a.bPos,f=a.bPosPxOffset||0;Array.isArray(a.bdPos)?(o=a.bdPos[0],s=a.bdPos[1]):(o=a.bdPos,s=a.bdPos),t.selectAll("path.mean").data(i.identity).enter().append("path").attr("class","mean").style({fill:"none","vector-effect":"non-scaling-stroke"}).each(function(t){var e=l.c2p(t.pos+u,!0)+f,i=l.c2p(t.pos+u-o,!0)+f,a=l.c2p(t.pos+u+s,!0)+f,h=c.c2p(t.mean,!0),d=c.c2p(t.mean-t.sd,!0),p=c.c2p(t.mean+t.sd,!0);"h"===r.orientation?n.select(this).attr("d","M"+h+","+i+"V"+a+("sd"===r.boxmean?"m0,0L"+d+","+e+"L"+h+","+i+"L"+p+","+e+"Z":"")):n.select(this).attr("d","M"+i+","+h+"H"+a+("sd"===r.boxmean?"m0,0L"+e+","+d+"L"+i+","+h+"L"+e+","+p+"Z":""))})}e.exports={plot:function(t,e,r){var i=t._fullLayout,a=e.xaxis,o=e.yaxis;e.plot.select(".boxlayer").selectAll("g.trace.boxes").data(r).enter().append("g").attr("class","trace boxes").each(function(t){var e,r,s=t[0],l=s.t,c=s.trace,d=s.node3=n.select(this),p=i._numBoxes,m="group"===i.boxmode&&p>1,v=l.dPos*(1-i.boxgap)*(1-i.boxgroupgap)/(m?p:1),g=m?2*l.dPos*((l.num+.5)/p-.5)*(1-i.boxgap):0,y=v*c.whiskerwidth;!0!==c.visible||l.empty?n.select(this).remove():("h"===c.orientation?(e=o,r=a):(e=a,r=o),l.bPos=g,l.bdPos=v,l.wdPos=y,u(d,{pos:e,val:r},c,l),c.boxpoints&&f(d,{x:a,y:o},c,l),c.boxmean&&h(d,{pos:e,val:r},c,l))})},plotBoxAndWhiskers:u,plotPoints:f,plotBoxMean:h}},{"../../components/drawing":623,"../../lib":724,d3:128}],885:[function(t,e,r){"use strict";e.exports=function(t,e){var r,n,i=t.cd,a=t.xaxis,o=t.yaxis,s=[];if(!1===e)for(r=0;r=10)return null;var n=1/0;var i=-1/0;var a=e.length;for(var o=0;o0?Math.floor:Math.ceil,P=S>0?Math.ceil:Math.floor,z=S>0?Math.min:Math.max,O=S>0?Math.max:Math.min,D=C(T+L),I=P(E-L),R=[[u=A(T)]];for(i=D;i*S=0;i--)a[u-i]=t[f][i],o[u-i]=e[f][i];for(s.push({x:a,y:o,bicubic:l}),i=f,a=[],o=[];i>=0;i--)a[f-i]=t[i][0],o[f-i]=e[i][0];return s.push({x:a,y:o,bicubic:c}),s}},{}],900:[function(t,e,r){"use strict";var n=t("../../plots/cartesian/axes"),i=t("../../lib/extend").extendFlat;e.exports=function(t,e,r,a){var o,s,l,c,u,f,h,d,p,m,v,g,y,b,x=t[r],_=t[r+"axis"],w=_._gridlines=[],M=_._minorgridlines=[],k=_._boundarylines=[],A=t[a],T=t[a+"axis"];"array"===_.tickmode&&(_.tickvals=x.slice());var E=t.xctrl,S=t.yctrl,L=E[0].length,C=E.length,P=t.a.length,z=t.b.length;n.calcTicks(_),"array"===_.tickmode&&delete _.tickvals;var O=_.smoothing?3:1;function D(e){var n,i,o,s,l,c,u,f,h,p,m,v,g=[],y=[],b={};if("b"===r)for(i=t.b2j(e),o=Math.floor(Math.max(0,Math.min(z-2,i))),s=i-o,b.length=z,b.crossLength=P,b.xy=function(e){return t.evalxy([],e,i)},b.dxy=function(e,r){return t.dxydi([],e,o,r,s)},n=0;n0&&(h=t.dxydi([],n-1,o,0,s),g.push(l[0]+h[0]/3),y.push(l[1]+h[1]/3),p=t.dxydi([],n-1,o,1,s),g.push(f[0]-p[0]/3),y.push(f[1]-p[1]/3)),g.push(f[0]),y.push(f[1]),l=f;else for(n=t.a2i(e),c=Math.floor(Math.max(0,Math.min(P-2,n))),u=n-c,b.length=P,b.crossLength=z,b.xy=function(e){return t.evalxy([],n,e)},b.dxy=function(e,r){return t.dxydj([],c,e,u,r)},i=0;i0&&(m=t.dxydj([],c,i-1,u,0),g.push(l[0]+m[0]/3),y.push(l[1]+m[1]/3),v=t.dxydj([],c,i-1,u,1),g.push(f[0]-v[0]/3),y.push(f[1]-v[1]/3)),g.push(f[0]),y.push(f[1]),l=f;return b.axisLetter=r,b.axis=_,b.crossAxis=T,b.value=e,b.constvar=a,b.index=d,b.x=g,b.y=y,b.smoothing=T.smoothing,b}function I(e){var n,i,o,s,l,c=[],u=[],f={};if(f.length=x.length,f.crossLength=A.length,"b"===r)for(o=Math.max(0,Math.min(z-2,e)),l=Math.min(1,Math.max(0,e-o)),f.xy=function(r){return t.evalxy([],r,e)},f.dxy=function(e,r){return t.dxydi([],e,o,r,l)},n=0;nx.length-1||w.push(i(I(s),{color:_.gridcolor,width:_.gridwidth}));for(d=f;dx.length-1||v<0||v>x.length-1))for(g=x[l],y=x[v],o=0;o<_.minorgridcount;o++)(b=v-l)<=0||(m=g+(y-g)*(o+1)/(_.minorgridcount+1)*(_.arraydtick/b))x[x.length-1]||M.push(i(D(m),{color:_.minorgridcolor,width:_.minorgridwidth}));_.startline&&k.push(i(I(0),{color:_.startlinecolor,width:_.startlinewidth})),_.endline&&k.push(i(I(x.length-1),{color:_.endlinecolor,width:_.endlinewidth}))}else{for(c=5e-15,f=(u=[Math.floor((x[x.length-1]-_.tick0)/_.dtick*(1+c)),Math.ceil((x[0]-_.tick0)/_.dtick/(1+c))].sort(function(t,e){return t-e}))[0],h=u[1],d=f;d<=h;d++)p=_.tick0+_.dtick*d,w.push(i(D(p),{color:_.gridcolor,width:_.gridwidth}));for(d=f-1;dx[x.length-1]||M.push(i(D(m),{color:_.minorgridcolor,width:_.minorgridwidth}));_.startline&&k.push(i(D(x[0]),{color:_.startlinecolor,width:_.startlinewidth})),_.endline&&k.push(i(D(x[x.length-1]),{color:_.endlinecolor,width:_.endlinewidth}))}}},{"../../lib/extend":713,"../../plots/cartesian/axes":770}],901:[function(t,e,r){"use strict";var n=t("../../plots/cartesian/axes"),i=t("../../lib/extend").extendFlat;e.exports=function(t,e){var r,a,o,s=e._labels=[],l=e._gridlines;for(r=0;re.length&&(t=t.slice(0,e.length)):t=[],n=0;ne.length&&(t=t.slice(0,e.length)):t=[],n=0;ne.length&&(t[n]=t[n].slice(0,e.length)):t[n]=[],i=0;i90&&(d-=180,l=-l),{angle:d,flip:l,p:t.c2p(n,e,r),offsetMultplier:c}}},{}],917:[function(t,e,r){"use strict";var n=t("d3"),i=t("../../components/drawing"),a=t("./map_1d_array"),o=t("./makepath"),s=t("./orient_text"),l=t("../../lib/svg_text_utils"),c=t("../../lib"),u=t("../../constants/alignment");function f(t,e,r){var n=t.selectAll(e+"."+r).data([0]);return n.enter().append(e).classed(r,!0),n}function h(t,e,r){var n=r[0],i=r[0].trace,l=e.xaxis,u=e.yaxis,h=i.aaxis,m=i.baxis,v=t._fullLayout,y=e.plot.selectAll(".carpetlayer"),b=v._clips,x=f(y,"g","carpet"+i.uid).classed("trace",!0),_=f(x,"g","minorlayer"),w=f(x,"g","majorlayer"),M=f(x,"g","boundarylayer"),k=f(x,"g","labellayer");x.style("opacity",i.opacity),d(l,u,w,h,"a",h._gridlines),d(l,u,w,m,"b",m._gridlines),d(l,u,_,h,"a",h._minorgridlines),d(l,u,_,m,"b",m._minorgridlines),d(l,u,M,h,"a-boundary",h._boundarylines),d(l,u,M,m,"b-boundary",m._boundarylines),function(t,e,r,n,i,a,o,l){var u,f,h,d;u=.5*(r.a[0]+r.a[r.a.length-1]),f=r.b[0],h=r.ab2xy(u,f,!0),d=r.dxyda_rough(u,f),void 0===o.angle&&c.extendFlat(o,s(r,i,a,h,r.dxydb_rough(u,f)));g(t,e,r,n,h,d,r.aaxis,i,a,o,"a-title"),u=r.a[0],f=.5*(r.b[0]+r.b[r.b.length-1]),h=r.ab2xy(u,f,!0),d=r.dxydb_rough(u,f),void 0===l.angle&&c.extendFlat(l,s(r,i,a,h,r.dxyda_rough(u,f)));g(t,e,r,n,h,d,r.baxis,i,a,l,"b-title")}(t,k,i,n,l,u,p(t,l,u,i,n,k,h._labels,"a-label"),p(t,l,u,i,n,k,m._labels,"b-label")),function(t,e,r,n,i){var s,l,c,u,h=r.select("#"+t._clipPathId);h.size()||(h=r.append("clipPath").classed("carpetclip",!0));var d=f(h,"path","carpetboundary"),p=e.clipsegments,m=[];for(u=0;u0?"start":"end","data-notex":1}).call(i.font,o.font).text(o.text).call(l.convertToTspans,t),v=i.bBox(this);m.attr("transform","translate("+u.p[0]+","+u.p[1]+") rotate("+u.angle+")translate("+o.axis.labelpadding*h+","+.3*v.height+")"),d=Math.max(d,v.width+o.axis.labelpadding)}),h.exit().remove(),p.maxExtent=d,p}e.exports=function(t,e,r){for(var n=0;n90&&p<270,y=n.select(this);y.text(u.title||"").call(l.convertToTspans,t),g&&(b=(-l.lineCount(y)+v)*m*a-b),y.attr("transform","translate("+e.p[0]+","+e.p[1]+") rotate("+e.angle+") translate(0,"+b+")").classed("user-select-none",!0).attr("text-anchor","middle").call(i.font,u.titlefont)}),y.exit().remove()}},{"../../components/drawing":623,"../../constants/alignment":696,"../../lib":724,"../../lib/svg_text_utils":747,"./makepath":913,"./map_1d_array":914,"./orient_text":916,d3:128}],918:[function(t,e,r){"use strict";var n=t("./constants"),i=t("../../lib/search").findBin,a=t("./compute_control_points"),o=t("./create_spline_evaluator"),s=t("./create_i_derivative_evaluator"),l=t("./create_j_derivative_evaluator");e.exports=function(t){var e=t.a,r=t.b,c=t.a.length,u=t.b.length,f=t.aaxis,h=t.baxis,d=e[0],p=e[c-1],m=r[0],v=r[u-1],g=e[e.length-1]-e[0],y=r[r.length-1]-r[0],b=g*n.RELATIVE_CULL_TOLERANCE,x=y*n.RELATIVE_CULL_TOLERANCE;d-=b,p+=b,m-=x,v+=x,t.isVisible=function(t,e){return t>d&&tm&&ep||ev},f.c2p=function(t){return t},h.c2p=function(t){return t},t.setScale=function(){var e=t._x,r=t._y,n=a(t.xctrl,t.yctrl,e,r,f.smoothing,h.smoothing);t.xctrl=n[0],t.yctrl=n[1],t.evalxy=o([t.xctrl,t.yctrl],c,u,f.smoothing,h.smoothing),t.dxydi=s([t.xctrl,t.yctrl],f.smoothing,h.smoothing),t.dxydj=l([t.xctrl,t.yctrl],f.smoothing,h.smoothing)},t.i2a=function(t){var r=Math.max(0,Math.floor(t[0]),c-2),n=t[0]-r;return(1-n)*e[r]+n*e[r+1]},t.j2b=function(t){var e=Math.max(0,Math.floor(t[1]),c-2),n=t[1]-e;return(1-n)*r[e]+n*r[e+1]},t.ij2ab=function(e){return[t.i2a(e[0]),t.j2b(e[1])]},t.a2i=function(t){var r=Math.max(0,Math.min(i(t,e),c-2)),n=e[r],a=e[r+1];return Math.max(0,Math.min(c-1,r+(t-n)/(a-n)))},t.b2j=function(t){var e=Math.max(0,Math.min(i(t,r),u-2)),n=r[e],a=r[e+1];return Math.max(0,Math.min(u-1,e+(t-n)/(a-n)))},t.ab2ij=function(e){return[t.a2i(e[0]),t.b2j(e[1])]},t.i2c=function(e,r){return t.evalxy([],e,r)},t.ab2xy=function(n,i,a){if(!a&&(ne[c-1]|ir[u-1]))return[!1,!1];var o=t.a2i(n),s=t.b2j(i),l=t.evalxy([],o,s);if(a){var f,h,d,p,m=0,v=0,g=[];ne[c-1]?(f=c-2,h=1,m=(n-e[c-1])/(e[c-1]-e[c-2])):h=o-(f=Math.max(0,Math.min(c-2,Math.floor(o)))),ir[u-1]?(d=u-2,p=1,v=(i-r[u-1])/(r[u-1]-r[u-2])):p=s-(d=Math.max(0,Math.min(u-2,Math.floor(s)))),m&&(t.dxydi(g,f,d,h,p),l[0]+=g[0]*m,l[1]+=g[1]*m),v&&(t.dxydj(g,f,d,h,p),l[0]+=g[0]*v,l[1]+=g[1]*v)}return l},t.c2p=function(t,e,r){return[e.c2p(t[0]),r.c2p(t[1])]},t.p2x=function(t,e,r){return[e.p2c(t[0]),r.p2c(t[1])]},t.dadi=function(t){var r=Math.max(0,Math.min(e.length-2,t));return e[r+1]-e[r]},t.dbdj=function(t){var e=Math.max(0,Math.min(r.length-2,t));return r[e+1]-r[e]},t.dxyda=function(e,r,n,i){var a=t.dxydi(null,e,r,n,i),o=t.dadi(e,n);return[a[0]/o,a[1]/o]},t.dxydb=function(e,r,n,i){var a=t.dxydj(null,e,r,n,i),o=t.dbdj(r,i);return[a[0]/o,a[1]/o]},t.dxyda_rough=function(e,r,n){var i=g*(n||.1),a=t.ab2xy(e+i,r,!0),o=t.ab2xy(e-i,r,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dxydb_rough=function(e,r,n){var i=y*(n||.1),a=t.ab2xy(e,r+i,!0),o=t.ab2xy(e,r-i,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dpdx=function(t){return t._m},t.dpdy=function(t){return t._m}}},{"../../lib/search":742,"./compute_control_points":904,"./constants":905,"./create_i_derivative_evaluator":906,"./create_j_derivative_evaluator":907,"./create_spline_evaluator":908}],919:[function(t,e,r){"use strict";var n=t("../../lib");e.exports=function(t,e,r){var i,a,o,s=[],l=[],c=t[0].length,u=t.length;function f(e,r){var n,i=0,a=0;return e>0&&void 0!==(n=t[r][e-1])&&(a++,i+=n),e0&&void 0!==(n=t[r-1][e])&&(a++,i+=n),r0&&a0&&i1e-5);return n.log("Smoother converged to",k,"after",A,"iterations"),t}},{"../../lib":724}],920:[function(t,e,r){"use strict";var n=t("./has_columns"),i=t("../heatmap/convert_column_xyz");e.exports=function(t,e,r){var a=[],o=r("x");o&&!n(o)&&a.push("x"),e._cheater=!o;var s=r("y");if(s&&!n(s)&&a.push("y"),o||s)return a.length&&i(e,e.aaxis,e.baxis,"a","b",a),!0}},{"../heatmap/convert_column_xyz":963,"./has_columns":910}],921:[function(t,e,r){"use strict";var n=t("../scattergeo/attributes"),i=t("../../components/colorscale/attributes"),a=t("../../components/colorbar/attributes"),o=t("../../plots/attributes"),s=t("../../lib/extend"),l=s.extendFlat,c=s.extendDeepAll,u=n.marker.line;e.exports=l({locations:{valType:"data_array",editType:"calc"},locationmode:n.locationmode,z:{valType:"data_array",editType:"calc"},text:l({},n.text,{}),marker:{line:{color:u.color,width:l({},u.width,{dflt:1}),editType:"calc"},opacity:{valType:"number",arrayOk:!0,min:0,max:1,dflt:1,editType:"style"},editType:"calc"},selected:{marker:{opacity:n.selected.marker.opacity,editType:"plot"},editType:"plot"},unselected:{marker:{opacity:n.unselected.marker.opacity,editType:"plot"},editType:"plot"},hoverinfo:l({},o.hoverinfo,{editType:"calc",flags:["location","z","text","name"]})},c({},i,{zmax:{editType:"calc"},zmin:{editType:"calc"}}),{colorbar:a})},{"../../components/colorbar/attributes":599,"../../components/colorscale/attributes":604,"../../lib/extend":713,"../../plots/attributes":768,"../scattergeo/attributes":1086}],922:[function(t,e,r){"use strict";var n=t("fast-isnumeric"),i=t("../../constants/numerical").BADNUM,a=t("../../components/colorscale/calc"),o=t("../scatter/arrays_to_calcdata"),s=t("../scatter/calc_selection");e.exports=function(t,e){for(var r=e.locations.length,l=new Array(r),c=0;cl&&(e.z=u.slice(0,l)),s("locationmode"),s("text"),s("marker.line.color"),s("marker.line.width"),s("marker.opacity"),i(t,e,o,s,{prefix:"",cLetter:"z"}),n.coerceSelectionMarkerOpacity(e,s)):e.visible=!1}else e.visible=!1}},{"../../components/colorscale/defaults":608,"../../lib":724,"./attributes":921}],924:[function(t,e,r){"use strict";e.exports=function(t,e){return t.location=e.location,t.z=e.z,t}},{}],925:[function(t,e,r){"use strict";var n=t("../../plots/cartesian/axes"),i=t("./attributes"),a=t("../scatter/fill_hover_text");e.exports=function(t,e,r){var o,s,l,c,u=t.cd,f=u[0].trace,h=t.subplot;for(s=0;s")}(t,f,o,h.mockAxis),[t]}},{"../../plots/cartesian/axes":770,"../scatter/fill_hover_text":1056,"./attributes":921}],926:[function(t,e,r){"use strict";var n={};n.attributes=t("./attributes"),n.supplyDefaults=t("./defaults"),n.colorbar=t("../heatmap/colorbar"),n.calc=t("./calc"),n.plot=t("./plot"),n.style=t("./style"),n.hoverPoints=t("./hover"),n.eventData=t("./event_data"),n.selectPoints=t("./select"),n.moduleType="trace",n.name="choropleth",n.basePlotModule=t("../../plots/geo"),n.categories=["geo","noOpacity"],n.meta={},e.exports=n},{"../../plots/geo":801,"../heatmap/colorbar":962,"./attributes":921,"./calc":922,"./defaults":923,"./event_data":924,"./hover":925,"./plot":927,"./select":928,"./style":929}],927:[function(t,e,r){"use strict";var n=t("d3"),i=t("../../lib"),a=t("../../lib/polygon"),o=t("../../lib/topojson_utils").getTopojsonFeatures,s=t("../../lib/geo_location_utils").locationToFeature,l=t("./style");function c(t,e){for(var r=t[0].trace,n=t.length,i=o(r,e),a=0;a0&&t[e+1][0]<0)return e;return null}switch(e="RUS"===l||"FJI"===l?function(t){var e;if(null===u(t))e=t;else for(e=new Array(t.length),i=0;ie?r[n++]=[t[i][0]+360,t[i][1]]:i===e?(r[n++]=t[i],r[n++]=[t[i][0],-90]):r[n++]=t[i];var o=a.tester(r);o.pts.pop(),c.push(o)}:function(t){c.push(a.tester(t))},o.type){case"MultiPolygon":for(r=0;r":f.value>h&&(s.prefixBoundary=!0);break;case"<":f.valueh)&&(s.prefixBoundary=!0);break;case"][":a=Math.min.apply(null,f.value),o=Math.max.apply(null,f.value),ah&&(s.prefixBoundary=!0)}}},{}],933:[function(t,e,r){"use strict";var n=t("../../plots/plots"),i=t("../../components/colorbar/draw"),a=t("./make_color_map"),o=t("./end_plus");e.exports=function(t,e){var r=e[0].trace,s="cb"+r.uid;if(t._fullLayout._infolayer.selectAll("."+s).remove(),r.showscale){var l=i(t,s);e[0].t.cb=l;var c=r.contours,u=r.line,f=c.size||1,h=c.coloring,d=a(r,{isColorbar:!0});"heatmap"===h&&l.filllevels({start:r.zmin,end:r.zmax,size:(r.zmax-r.zmin)/254}),l.fillcolor("fill"===h||"heatmap"===h?d:"").line({color:"lines"===h?d:u.color,width:!1!==c.showlines?u.width:0,dash:u.dash}).levels({start:c.start,end:o(c),size:f}).options(r.colorbar)()}else n.autoMargin(t,s)}},{"../../components/colorbar/draw":602,"../../plots/plots":833,"./end_plus":941,"./make_color_map":946}],934:[function(t,e,r){"use strict";e.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}},{}],935:[function(t,e,r){"use strict";var n=t("fast-isnumeric"),i=t("./label_defaults"),a=t("../../components/color"),o=a.addOpacity,s=a.opacity,l=t("../../constants/filter_ops"),c=l.CONSTRAINT_REDUCTION,u=l.COMPARISON_OPS2;e.exports=function(t,e,r,a,l,f){var h,d,p,m=e.contours,v=r("contours.operation");(m._operation=c[v],function(t,e){var r;-1===u.indexOf(e.operation)?(t("contours.value",[0,1]),Array.isArray(e.value)?e.value.length>2?e.value=e.value.slice(2):0===e.length?e.value=[0,1]:e.length<2?(r=parseFloat(e.value[0]),e.value=[r,r+1]):e.value=[parseFloat(e.value[0]),parseFloat(e.value[1])]:n(e.value)&&(r=parseFloat(e.value),e.value=[r,r+1])):(t("contours.value",0),n(e.value)||(Array.isArray(e.value)?e.value=parseFloat(e.value[0]):e.value=0))}(r,m),"="===v?h=m.showlines=!0:(h=r("contours.showlines"),p=r("fillcolor",o((t.line||{}).color||l,.5))),h)&&(d=r("line.color",p&&s(p)?o(e.fillcolor,1):l),r("line.width",2),r("line.dash"));r("line.smoothing"),i(r,a,d,f)}},{"../../components/color":598,"../../constants/filter_ops":697,"./label_defaults":945,"fast-isnumeric":140}],936:[function(t,e,r){"use strict";var n=t("../../constants/filter_ops"),i=t("fast-isnumeric");function a(t,e){var r,a=Array.isArray(e);function o(t){return i(t)?+t:null}return-1!==n.COMPARISON_OPS2.indexOf(t)?r=o(a?e[0]:e):-1!==n.INTERVAL_OPS.indexOf(t)?r=a?[o(e[0]),o(e[1])]:[o(e),o(e)]:-1!==n.SET_OPS.indexOf(t)&&(r=a?e.map(o):[o(e)]),r}function o(t){return function(e){e=a(t,e);var r=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return{start:r,end:n,size:n-r}}}function s(t){return function(e){return{start:e=a(t,e),end:1/0,size:1/0}}}e.exports={"[]":o("[]"),"][":o("]["),">":s(">"),"<":s("<"),"=":s("=")}},{"../../constants/filter_ops":697,"fast-isnumeric":140}],937:[function(t,e,r){"use strict";e.exports=function(t,e,r,n){var i=n("contours.start"),a=n("contours.end"),o=!1===i||!1===a,s=r("contours.size");!(o?e.autocontour=!0:r("autocontour",!1))&&s||r("ncontours")}},{}],938:[function(t,e,r){"use strict";var n=t("../../lib");function i(t){return n.extendFlat({},t,{edgepaths:n.extendDeep([],t.edgepaths),paths:n.extendDeep([],t.paths)})}e.exports=function(t,e){var r,a,o,s=function(t){return t.reverse()},l=function(t){return t};switch(e){case"=":case"<":return t;case">":for(1!==t.length&&n.warn("Contour data invalid for the specified inequality operation."),a=t[0],r=0;r1e3){n.warn("Too many contours, clipping at 1000",t);break}return l}},{"../../lib":724,"./constraint_mapping":936,"./end_plus":941}],941:[function(t,e,r){"use strict";e.exports=function(t){return t.end+t.size/1e6}},{}],942:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("./constants");function a(t,e,r,n){return Math.abs(t[0]-e[0])20&&e?208===t||1114===t?n=0===r[0]?1:-1:a=0===r[1]?1:-1:-1!==i.BOTTOMSTART.indexOf(t)?a=1:-1!==i.LEFTSTART.indexOf(t)?n=1:-1!==i.TOPSTART.indexOf(t)?a=-1:n=-1;return[n,a]}(h,r,e),p=[s(t,e,[-d[0],-d[1]])],m=d.join(","),v=t.z.length,g=t.z[0].length;for(c=0;c<1e4;c++){if(h>20?(h=i.CHOOSESADDLE[h][(d[0]||d[1])<0?0:1],t.crossings[f]=i.SADDLEREMAINDER[h]):delete t.crossings[f],!(d=i.NEWDELTA[h])){n.log("Found bad marching index:",h,e,t.level);break}p.push(s(t,e,d)),e[0]+=d[0],e[1]+=d[1],a(p[p.length-1],p[p.length-2],o,l)&&p.pop(),f=e.join(",");var y=d[0]&&(e[0]<0||e[0]>g-2)||d[1]&&(e[1]<0||e[1]>v-2);if(f===u&&d.join(",")===m||r&&y)break;h=t.crossings[f]}1e4===c&&n.log("Infinite loop in contour?");var b,x,_,w,M,k,A,T,E,S,L,C,P,z,O,D=a(p[0],p[p.length-1],o,l),I=0,R=.2*t.smoothing,N=[],F=0;for(c=1;c=F;c--)if((b=N[c])=F&&b+N[x]T&&E--,t.edgepaths[E]=L.concat(p,S));break}V||(t.edgepaths[T]=p.concat(S))}for(T=0;Tt?0:1)+(e[0][1]>t?0:2)+(e[1][1]>t?0:4)+(e[1][0]>t?0:8);return 5===r||10===r?t>(e[0][0]+e[0][1]+e[1][0]+e[1][1])/4?5===r?713:1114:5===r?104:208:15===r?0:r}e.exports=function(t){var e,r,a,o,s,l,c,u,f,h=t[0].z,d=h.length,p=h[0].length,m=2===d||2===p;for(r=0;rt.level}return r?"M"+e.join("L")+"Z":""}(t,e),h=0,d=t.edgepaths.map(function(t,e){return e}),p=!0;function m(t){return Math.abs(t[1]-e[2][1])<.01}function v(t){return Math.abs(t[0]-e[0][0])<.01}function g(t){return Math.abs(t[0]-e[2][0])<.01}for(;d.length;){for(c=a.smoothopen(t.edgepaths[h],t.smoothing),f+=p?c:c.replace(/^M/,"L"),d.splice(d.indexOf(h),1),r=t.edgepaths[h][t.edgepaths[h].length-1],s=-1,o=0;o<4;o++){if(!r){i.log("Missing end?",h,t);break}for(u=r,Math.abs(u[1]-e[0][1])<.01&&!g(r)?n=e[1]:v(r)?n=e[0]:m(r)?n=e[3]:g(r)&&(n=e[2]),l=0;l=0&&(n=y,s=l):Math.abs(r[1]-n[1])<.01?Math.abs(r[1]-y[1])<.01&&(y[0]-r[0])*(n[0]-y[0])>=0&&(n=y,s=l):i.log("endpt to newendpt is not vert. or horz.",r,n,y)}if(r=n,s>=0)break;f+="L"+n}if(s===t.edgepaths.length){i.log("unclosed perimeter path");break}h=s,(p=-1===d.indexOf(h))&&(h=d[0],f+="Z")}for(h=0;hn.center?n.right-s:s-n.left)/(u+Math.abs(Math.sin(c)*o)),d=(l>n.middle?n.bottom-l:l-n.top)/(Math.abs(f)+Math.cos(c)*o);if(h<1||d<1)return 1/0;var p=v.EDGECOST*(1/(h-1)+1/(d-1));p+=v.ANGLECOST*c*c;for(var m=s-u,g=l-f,y=s+u,b=l+f,x=0;x2*v.MAXCOST)break;d&&(s/=2),l=(o=c-s/2)+1.5*s}if(h<=v.MAXCOST)return u},r.addLabelData=function(t,e,r,n){var i=e.width/2,a=e.height/2,o=t.x,s=t.y,l=t.theta,c=Math.sin(l),u=Math.cos(l),f=i*u,h=a*c,d=i*c,p=-a*u,m=[[o-f-h,s-d-p],[o+f-h,s+d-p],[o+f+h,s+d+p],[o-f+h,s-d+p]];r.push({text:e.text,x:o,y:s,dy:e.dy,theta:l,level:e.level,width:e.width,height:e.height}),n.push(m)},r.drawLabels=function(t,e,r,i,a){var s=t.selectAll("text").data(e,function(t){return t.text+","+t.x+","+t.y+","+t.theta});if(s.exit().remove(),s.enter().append("text").attr({"data-notex":1,"text-anchor":"middle"}).each(function(t){var e=t.x+Math.sin(t.theta)*t.dy,i=t.y-Math.cos(t.theta)*t.dy;n.select(this).text(t.text).attr({x:e,y:i,transform:"rotate("+180*t.theta/Math.PI+" "+e+" "+i+")"}).call(o.convertToTspans,r)}),a){for(var l="",c=0;ce.end&&(e.start=e.end=(e.start+e.end)/2),t._input.contours||(t._input.contours={}),i(t._input.contours,{start:e.start,end:e.end,size:e.size}),t._input.autocontour=!0}else if("constraint"!==e.type){var o,s=e.start,l=e.end,c=t._input.contours;if(s>l&&(e.start=c.start=l,l=e.end=c.end=s,s=e.start),!(e.size>0))o=s===l?1:a(s,l,t.ncontours).dtick,c.size=e.size=o}}},{"../../lib":724,"../../plots/cartesian/axes":770}],950:[function(t,e,r){"use strict";var n=t("d3"),i=t("../../components/drawing"),a=t("../heatmap/style"),o=t("./make_color_map");e.exports=function(t){var e=n.select(t).selectAll("g.contour");e.style("opacity",function(t){return t.trace.opacity}),e.each(function(t){var e=n.select(this),r=t.trace,a=r.contours,s=r.line,l=a.size||1,c=a.start,u="constraint"===a.type,f=!u&&"lines"===a.coloring,h=!u&&"fill"===a.coloring,d=f||h?o(r):null;e.selectAll("g.contourlevel").each(function(t){n.select(this).selectAll("path").call(i.lineGroupStyle,s.width,f?d(t.level):s.color,s.dash)});var p=a.labelfont;if(e.selectAll("g.contourlabels text").each(function(t){i.font(n.select(this),{family:p.family,size:p.size,color:p.color||(f?d(t.level):s.color)})}),u)e.selectAll("g.contourfill path").style("fill",r.fillcolor);else if(h){var m;e.selectAll("g.contourfill path").style("fill",function(t){return void 0===m&&(m=t.level),d(t.level+.5*l)}),void 0===m&&(m=c),e.selectAll("g.contourbg path").style("fill",d(m-.5*l))}}),a(t)}},{"../../components/drawing":623,"../heatmap/style":973,"./make_color_map":946,d3:128}],951:[function(t,e,r){"use strict";var n=t("../../components/colorscale/defaults"),i=t("./label_defaults");e.exports=function(t,e,r,a,o){var s,l=r("contours.coloring"),c="";"fill"===l&&(s=r("contours.showlines")),!1!==s&&("lines"!==l&&(c=r("line.color","#000")),r("line.width",.5),r("line.dash")),"none"!==l&&n(t,e,a,r,{prefix:"",cLetter:"z"}),r("line.smoothing"),i(r,a,c,o)}},{"../../components/colorscale/defaults":608,"./label_defaults":945}],952:[function(t,e,r){"use strict";var n=t("../heatmap/attributes"),i=t("../contour/attributes"),a=i.contours,o=t("../scatter/attributes"),s=t("../../components/colorscale/attributes"),l=t("../../components/colorbar/attributes"),c=t("../../lib/extend").extendFlat,u=o.line;e.exports=c({},{carpet:{valType:"string",editType:"calc"},z:n.z,a:n.x,a0:n.x0,da:n.dx,b:n.y,b0:n.y0,db:n.dy,text:n.text,transpose:n.transpose,atype:n.xtype,btype:n.ytype,fillcolor:i.fillcolor,autocontour:i.autocontour,ncontours:i.ncontours,contours:{type:a.type,start:a.start,end:a.end,size:a.size,coloring:{valType:"enumerated",values:["fill","lines","none"],dflt:"fill",editType:"calc"},showlines:a.showlines,showlabels:a.showlabels,labelfont:a.labelfont,labelformat:a.labelformat,operation:a.operation,value:a.value,editType:"calc",impliedEdits:{autocontour:!1}},line:{color:c({},u.color,{}),width:u.width,dash:u.dash,smoothing:c({},u.smoothing,{}),editType:"plot"}},s,{autocolorscale:c({},s.autocolorscale,{dflt:!1})},{colorbar:l})},{"../../components/colorbar/attributes":599,"../../components/colorscale/attributes":604,"../../lib/extend":713,"../contour/attributes":930,"../heatmap/attributes":959,"../scatter/attributes":1048}],953:[function(t,e,r){"use strict";var n=t("../../components/colorscale/calc"),i=t("../heatmap/has_columns"),a=t("../heatmap/convert_column_xyz"),o=t("../heatmap/clean_2d_array"),s=t("../heatmap/max_row_length"),l=t("../heatmap/interp2d"),c=t("../heatmap/find_empties"),u=t("../heatmap/make_bound_array"),f=t("./defaults"),h=t("../carpet/lookup_carpetid"),d=t("../contour/set_contours");e.exports=function(t,e){var r=e.carpetTrace=h(t,e);if(r&&r.visible&&"legendonly"!==r.visible){if(!e.a||!e.b){var p=t.data[r.index],m=t.data[e.index];m.a||(m.a=p.a),m.b||(m.b=p.b),f(m,e,e._defaultColor,t._fullLayout)}var v=function(t,e){var r,f,h,d,p,m,v,g=e.carpetTrace,y=g.aaxis,b=g.baxis;y._minDtick=0,b._minDtick=0,i(e)&&a(e,y,b,"a","b",["z"]);r=e.a?y.makeCalcdata(e,"a"):[],d=e.b?b.makeCalcdata(e,"b"):[],f=e.a0||0,h=e.da||1,p=e.b0||0,m=e.db||1,v=o(e.z,e.transpose),e._emptypoints=c(v),e._interpz=l(v,e._emptypoints,e._interpz);var x=s(v),_="scaled"===e.xtype?"":r,w=u(e,_,f,h,x,y),M="scaled"===e.ytype?"":d,k=u(e,M,p,m,v.length,b),A={a:w,b:k,z:v};"levels"===e.contours.type&&n(e,v,"","z");return[A]}(0,e);return d(e),v}}},{"../../components/colorscale/calc":605,"../carpet/lookup_carpetid":912,"../contour/set_contours":949,"../heatmap/clean_2d_array":961,"../heatmap/convert_column_xyz":963,"../heatmap/find_empties":965,"../heatmap/has_columns":966,"../heatmap/interp2d":969,"../heatmap/make_bound_array":970,"../heatmap/max_row_length":971,"./defaults":954}],954:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("../heatmap/xyz_defaults"),a=t("./attributes"),o=t("../contour/constraint_defaults"),s=t("../contour/contours_defaults"),l=t("../contour/style_defaults");e.exports=function(t,e,r,c){function u(r,i){return n.coerce(t,e,a,r,i)}if(u("carpet"),t.a&&t.b){if(!i(t,e,u,c,"a","b"))return void(e.visible=!1);u("text");var f="constraint"===u("contours.type");f||delete e.showlegend,f?o(t,e,u,c,r,{hasHover:!1}):(s(t,e,u,function(r){return n.coerce2(t,e,a,r)}),l(t,e,u,c,{hasHover:!1}))}else e._defaultColor=r}},{"../../lib":724,"../contour/constraint_defaults":935,"../contour/contours_defaults":937,"../contour/style_defaults":951,"../heatmap/xyz_defaults":975,"./attributes":952}],955:[function(t,e,r){"use strict";var n={};n.attributes=t("./attributes"),n.supplyDefaults=t("./defaults"),n.colorbar=t("../contour/colorbar"),n.calc=t("./calc"),n.plot=t("./plot"),n.style=t("../contour/style"),n.moduleType="trace",n.name="contourcarpet",n.basePlotModule=t("../../plots/cartesian"),n.categories=["cartesian","carpet","contour","symbols","showLegend","hasLines","carpetDependent"],n.meta={},e.exports=n},{"../../plots/cartesian":781,"../contour/colorbar":933,"../contour/style":950,"./attributes":952,"./calc":953,"./defaults":954,"./plot":958}],956:[function(t,e,r){"use strict";var n=t("../../components/drawing"),i=t("../carpet/axis_aligned_line"),a=t("../../lib");e.exports=function(t,e,r,o,s,l,c,u){var f,h,d,p,m,v,g,y="",b=e.edgepaths.map(function(t,e){return e}),x=!0,_=1e-4*Math.abs(r[0][0]-r[2][0]),w=1e-4*Math.abs(r[0][1]-r[2][1]);function M(t){return Math.abs(t[1]-r[0][1])=0&&(d=L,m=v):Math.abs(h[1]-d[1])=0&&(d=L,m=v):a.log("endpt to newendpt is not vert. or horz.",h,d,L)}if(m>=0)break;y+=E(h,d),h=d}if(m===e.edgepaths.length){a.log("unclosed perimeter path");break}f=m,(x=-1===b.indexOf(f))&&(f=b[0],y+=E(h,d)+"Z",h=null)}for(f=0;f=0;q--)B=M.clipsegments[q],U=i([],B.x,S.c2p),V=i([],B.y,L.c2p),U.reverse(),V.reverse(),G.push(a(U,V,B.bicubic));var Y="M"+G.join("L")+"Z";!function(t,e,r,n,o,s){var l,c,u,f,h=t.selectAll("g.contourbg").data([0]);h.enter().append("g").classed("contourbg",!0);var d=h.selectAll("path").data("fill"!==s||o?[]:[0]);d.enter().append("path"),d.exit().remove();var p=[];for(f=0;fv&&(n.max=v);n.len=n.max-n.min}(this,r,t,n,c,e.height),!(n.len<(e.width+e.height)*f.LABELMIN)))for(var i=Math.min(Math.ceil(n.len/z),f.LABELMAX),a=0;aP){L("x scale is not linear");break}}if(g.length&&"fast"===S){var z=(g[g.length-1]-g[0])/(g.length-1),O=Math.abs(z/100);for(_=0;_O){L("y scale is not linear");break}}}var D=u(x),I="scaled"===e.xtype?"":r,R=p(e,I,m,v,D,M),N="scaled"===e.ytype?"":g,F=p(e,N,y,b,x.length,k);E||(a.expand(M,R),a.expand(k,F));var j={x:R,y:F,z:x,text:e.text};if(I&&I.length===R.length-1&&(j.xCenter=I),N&&N.length===F.length-1&&(j.yCenter=N),T&&(j.xRanges=w.xRanges,j.yRanges=w.yRanges,j.pts=w.pts),A&&"constraint"===e.contours.type||s(e,x,"","z"),A&&e.contours&&"heatmap"===e.contours.coloring){var B={type:"contour"===e.type?"heatmap":"histogram2d",xcalendar:e.xcalendar,ycalendar:e.ycalendar};j.xfill=p(B,I,m,v,D,M),j.yfill=p(B,N,y,b,x.length,k)}return[j]}},{"../../components/colorscale/calc":605,"../../lib":724,"../../plots/cartesian/axes":770,"../../registry":854,"../histogram2d/calc":992,"./clean_2d_array":961,"./convert_column_xyz":963,"./find_empties":965,"./has_columns":966,"./interp2d":969,"./make_bound_array":970,"./max_row_length":971}],961:[function(t,e,r){"use strict";var n=t("fast-isnumeric");e.exports=function(t,e){var r,i,a,o,s,l;function c(t){if(n(t))return+t}if(e){for(r=0,s=0;s=0;o--)(s=((f[[(r=(a=h[o])[0])-1,i=a[1]]]||m)[2]+(f[[r+1,i]]||m)[2]+(f[[r,i-1]]||m)[2]+(f[[r,i+1]]||m)[2])/20)&&(l[a]=[r,i,s],h.splice(o,1),c=!0);if(!c)throw"findEmpties iterated with no new neighbors";for(a in l)f[a]=l[a],u.push(l[a])}return u.sort(function(t,e){return e[2]-t[2]})}},{"./max_row_length":971}],966:[function(t,e,r){"use strict";e.exports=function(t){return!Array.isArray(t.z[0])}},{}],967:[function(t,e,r){"use strict";var n=t("../../components/fx"),i=t("../../lib"),a=t("../../plots/cartesian/axes"),o=n.constants.MAXDIST;e.exports=function(t,e,r,s,l,c){if(!(t.distance=x[0].length||d<0||d>x.length)return}else{if(n.inbox(e-y[0],e-y[y.length-1])>o||n.inbox(r-b[0],r-b[b.length-1])>o)return;if(c){var S;for(T=[2*y[0]-y[1]],S=1;Sm&&(g=Math.max(g,Math.abs(t[a][o]-p)/(v-m))))}return g}e.exports=function(t,e,r){var i,s,l=1;if(Array.isArray(r))for(i=0;i.01;i++)l=o(t,e,a(l));return l>.01&&n.log("interp2d didn't converge quickly",l),t}},{"../../lib":724}],970:[function(t,e,r){"use strict";var n=t("../../registry");e.exports=function(t,e,r,i,a,o){var s,l,c,u=[],f=n.traceIs(t,"contour"),h=n.traceIs(t,"histogram"),d=n.traceIs(t,"gl2d");if(Array.isArray(e)&&e.length>1&&!h&&"category"!==o.type){var p=e.length;if(!(p<=a))return f?e.slice(0,a):e.slice(0,a+1);if(f||d)u=e.slice(0,a);else if(1===a)u=[e[0]-.5,e[0]+.5];else{for(u=[1.5*e[0]-.5*e[1]],c=1;c0;)x=m.c2p(T[k]),k--;for(x0;)M=v.c2p(E[k]),k--;if(M0&&(i=!0);for(var s=0;sa){var o=a-r[t];return r[t]=a,o}}return 0},max:function(t,e,r,i){var a=i[e];if(n(a)){if(a=Number(a),!n(r[t]))return r[t]=a,a;if(r[t]c?t>o?t>1.1*i?i:t>1.1*a?a:o:t>s?s:t>l?l:c:Math.pow(10,Math.floor(Math.log(t)/Math.LN10))}function d(t,e,r,n,a,s){if(n&&t>o){var l=p(e,a,s),c=p(r,a,s),u=t===i?0:1;return l[u]!==c[u]}return Math.floor(r/t)-Math.floor(e/t)>.1}function p(t,e,r){var n=e.c2d(t,i,r).split("-");return""===n[0]&&(n.unshift(),n[0]="-"+n[0]),n}e.exports=function(t,e,r,n,a){var s,l,c=-1.1*e,h=-.1*e,d=t-h,p=r[0],m=r[1],v=Math.min(f(p+h,p+d,n,a),f(m+h,m+d,n,a)),g=Math.min(f(p+c,p+h,n,a),f(m+c,m+h,n,a));if(v>g&&go){var y=s===i?1:6,b=s===i?"M12":"M1";return function(e,r){var o=n.c2d(e,i,a),s=o.indexOf("-",y);s>0&&(o=o.substr(0,s));var c=n.d2c(o,0,a);if(cu.size/1.9?u.size:u.size/Math.ceil(u.size/b);var A=u.start+(u.size-b)/2;x=A-b*Math.ceil((A-x)/b)}for(s=0;s=0&&w=0;n--)s(n);else if("increasing"===e){for(n=1;n=0;n--)t[n]+=t[n+1];"exclude"===r&&(t.push(0),t.shift())}}(p,b.direction,b.currentbin);var Z=Math.min(f.length,p.length),J=[],K=0,Q=Z-1;for(r=0;r=K;r--)if(p[r]){Q=r;break}for(r=K;r<=Q;r++)if(n(f[r])&&n(p[r])){var $={p:f[r],s:p[r],b:0};b.enabled||($.pts=P[r],H?$.p0=$.p1=P[r].length?A[P[r][0]]:f[r]:($.p0=V(E[r]),$.p1=V(E[r+1],!0))),J.push($)}return 1===J.length&&(J[0].width1=a.tickIncrement(J[0].p,k.size,!1,y)-J[0].p),o(J,e),Array.isArray(e.selectedpoints)&&i.tagSelected(J,e,W),J}}},{"../../constants/numerical":702,"../../lib":724,"../../plots/cartesian/axes":770,"../bar/arrays_to_calcdata":863,"./average":980,"./bin_functions":982,"./bin_label_vals":983,"./clean_bins":985,"./norm_functions":990,"fast-isnumeric":140}],985:[function(t,e,r){"use strict";var n=t("fast-isnumeric"),i=t("../../lib").cleanDate,a=t("../../constants/numerical"),o=a.ONEDAY,s=a.BADNUM;e.exports=function(t,e,r){var a=e.type,l=r+"bins",c=t[l];c||(c=t[l]={});var u="date"===a?function(t){return t||0===t?i(t,s,c.calendar):null}:function(t){return n(t)?Number(t):null};c.start=u(c.start),c.end=u(c.end);var f="date"===a?o:1,h=c.size;if(n(h))c.size=h>0?Number(h):f;else if("string"!=typeof h)c.size=f;else{var d=h.charAt(0),p=h.substr(1);((p=n(p)?Number(p):0)<=0||"date"!==a||"M"!==d||p!==Math.round(p))&&(c.size=f)}var m="autobin"+r;"boolean"!=typeof t[m]&&(t[m]=t._fullInput[m]=t._input[m]=!((c.start||0===c.start)&&(c.end||0===c.end))),t[m]||(delete t["nbins"+r],delete t._fullInput["nbins"+r])}},{"../../constants/numerical":702,"../../lib":724,"fast-isnumeric":140}],986:[function(t,e,r){"use strict";var n=t("../../registry"),i=t("../../lib"),a=t("../../components/color"),o=t("./bin_defaults"),s=t("../bar/style_defaults"),l=t("../../components/errorbars/defaults"),c=t("./attributes");e.exports=function(t,e,r,u){function f(r,n){return i.coerce(t,e,c,r,n)}var h=f("x"),d=f("y");f("cumulative.enabled")&&(f("cumulative.direction"),f("cumulative.currentbin")),f("text");var p=f("orientation",d&&!h?"h":"v"),m=e["v"===p?"x":"y"];m&&m.length?(n.getComponentMethod("calendars","handleTraceDefaults")(t,e,["x","y"],u),e["h"===p?"x":"y"]&&f("histfunc"),o(t,e,f,"h"===p?["y"]:["x"]),s(t,e,f,r,u),l(t,e,a.defaultLine,{axis:"y"}),l(t,e,a.defaultLine,{axis:"x",inherit:"y"}),i.coerceSelectionMarkerOpacity(e,f)):e.visible=!1}},{"../../components/color":598,"../../components/errorbars/defaults":628,"../../lib":724,"../../registry":854,"../bar/style_defaults":876,"./attributes":979,"./bin_defaults":981}],987:[function(t,e,r){"use strict";e.exports=function(t,e,r,n,i){if(t.x="xVal"in e?e.xVal:e.x,t.y="yVal"in e?e.yVal:e.y,e.xa&&(t.xaxis=e.xa),e.ya&&(t.yaxis=e.ya),!(r.cumulative||{}).enabled){var a,o=Array.isArray(i)?n[0].pts[i[0]][i[1]]:n[i].pts;if(t.pointNumbers=o,t.binNumber=t.pointNumber,delete t.pointNumber,delete t.pointIndex,r._indexToPoints){a=[];for(var s=0;sA&&v.splice(A,v.length-A),y.length>A&&y.splice(A,y.length-A),u(e,"x",v,m,_,M,b),u(e,"y",y,g,w,k,x);var T=[],E=[],S=[],L="string"==typeof e.xbins.size,C="string"==typeof e.ybins.size,P=[],z=[],O=L?P:e.xbins,D=C?z:e.ybins,I=0,R=[],N=[],F=e.histnorm,j=e.histfunc,B=-1!==F.indexOf("density"),U="max"===j||"min"===j?null:0,V=a.count,q=o[F],H=!1,G=[],Y=[],W="z"in e?e.z:"marker"in e&&Array.isArray(e.marker.color)?e.marker.color:"";W&&"count"!==j&&(H="avg"===j,V=a[j]);var X=e.xbins,Z=_(X.start),J=_(X.end)+(Z-i.tickIncrement(Z,X.size,!1,b))/1e6;for(r=Z;r=0&&c=0&&p0)c=o(t.alphahull,u);else{var d=["x","y","z"].indexOf(t.delaunayaxis);c=a(u.map(function(t){return[t[(d+1)%3],t[(d+2)%3]]}))}var p={positions:u,cells:c,lightPosition:[t.lightposition.x,t.lightposition.y,t.lightposition.z],ambient:t.lighting.ambient,diffuse:t.lighting.diffuse,specular:t.lighting.specular,roughness:t.lighting.roughness,fresnel:t.lighting.fresnel,vertexNormalsEpsilon:t.lighting.vertexnormalsepsilon,faceNormalsEpsilon:t.lighting.facenormalsepsilon,opacity:t.opacity,contourEnable:t.contour.show,contourColor:l(t.contour.color).slice(0,3),contourWidth:t.contour.width,useFacetNormals:t.flatshading};t.intensity?(this.color="#fff",p.vertexIntensity=t.intensity,p.vertexIntensityBounds=[t.cmin,t.cmax],p.colormap=t.colorscale.map(function(t){var e=t[0],r=i(t[1]).toRgb();return{index:e,rgb:[r.r,r.g,r.b,1]}})):t.vertexcolor?(this.color=t.vertexcolor[0],p.vertexColors=f(t.vertexcolor)):t.facecolor?(this.color=t.facecolor[0],p.cellColors=f(t.facecolor)):(this.color=t.color,p.meshColor=l(t.color)),this.mesh.update(p)},u.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()},e.exports=function(t,e){var r=t.glplot.gl,i=n({gl:r}),a=new c(t,i,e.uid);return i._trace=a,a.update(e),t.glplot.add(i),a}},{"../../lib/str2rgbarray":746,"alpha-shape":47,"convex-hull":109,"delaunay-triangulate":130,"gl-mesh3d":201,tinycolor2:526}],1004:[function(t,e,r){"use strict";var n=t("../../registry"),i=t("../../lib"),a=t("../../components/colorscale/defaults"),o=t("./attributes");e.exports=function(t,e,r,s){function l(r,n){return i.coerce(t,e,o,r,n)}function c(t){var e=t.map(function(t){var e=l(t);return e&&Array.isArray(e)?e:null});return e.every(function(t){return t&&t.length===e[0].length})&&e}var u=c(["x","y","z"]),f=c(["i","j","k"]);u?(f&&f.forEach(function(t){for(var e=0;er?e=!0:n1)){var f=i.simpleMap(u.x,e.d2c,0,r.xcalendar),h=i.distinctVals(f).minDiff;o=Math.min(o,h)}}for(o===1/0&&(o=1),s=0;s");E.push(o,o,o,o,o,o,null)},B=0;Bs&&(n.log("parcoords traces support up to "+s+" dimensions at the moment"),l.splice(s)),o=0;o0)&&(f("label"),f("tickvals"),f("ticktext"),f("tickformat"),f("range"),f("constraintrange"),u=Math.min(u,a.values.length)),a._index=o,c.push(a));if(isFinite(u))for(o=0;ou&&(a.values=a.values.slice(0,u));return c}(t,e);!function(t,e,r,i,s){s("line.color",r),a(t,"line")&&n.isArray(t.line.color)?(s("line.colorscale"),o(t,e,i,s,{prefix:"line.",cLetter:"c"})):s("line.color",r)}(t,e,r,l,c),c("domain.x"),c("domain.y"),Array.isArray(u)&&u.length||(e.visible=!1);var f={family:l.font.family,size:Math.round(l.font.size*(10/12)),color:l.font.color};n.coerceFont(c,"labelfont",f),n.coerceFont(c,"tickfont",f),n.coerceFont(c,"rangefont",f)}},{"../../components/colorscale/defaults":608,"../../components/colorscale/has_colorscale":612,"../../lib":724,"./attributes":1013,"./constants":1017}],1019:[function(t,e,r){"use strict";var n={};n.attributes=t("./attributes"),n.supplyDefaults=t("./defaults"),n.calc=t("./calc"),n.plot=t("./plot"),n.colorbar=t("./colorbar"),n.moduleType="trace",n.name="parcoords",n.basePlotModule=t("./base_plot"),n.categories=["gl","regl","noOpacity"],n.meta={},e.exports=n},{"./attributes":1013,"./base_plot":1014,"./calc":1015,"./colorbar":1016,"./defaults":1018,"./plot":1022}],1020:[function(t,e,r){"use strict";var n=t("glslify"),i=t("./constants"),a=n(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec4 p0, p1, p2, p3,\n p4, p5, p6, p7,\n p8, p9, pa, pb,\n pc, pd, pe;\n\nattribute vec4 pf;\n\nuniform mat4 dim1A, dim2A, dim1B, dim2B, dim1C, dim2C, dim1D, dim2D,\n loA, hiA, loB, hiB, loC, hiC, loD, hiD;\n\nuniform vec2 resolution,\n viewBoxPosition,\n viewBoxSize;\n\nuniform sampler2D palette;\n\nuniform vec2 colorClamp;\n\nuniform float scatter;\n\nvarying vec4 fragColor;\n\nvec4 zero = vec4(0, 0, 0, 0);\nvec4 unit = vec4(1, 1, 1, 1);\nvec2 xyProjection = vec2(1, 1);\n\nmat4 mclamp(mat4 m, mat4 lo, mat4 hi) {\n return mat4(clamp(m[0], lo[0], hi[0]),\n clamp(m[1], lo[1], hi[1]),\n clamp(m[2], lo[2], hi[2]),\n clamp(m[3], lo[3], hi[3]));\n}\n\nbool mshow(mat4 p, mat4 lo, mat4 hi) {\n return mclamp(p, lo, hi) == p;\n}\n\nfloat val(mat4 p, mat4 v) {\n return dot(matrixCompMult(p, v) * unit, unit);\n}\n\nvoid main() {\n\n float x = 0.5 * sign(pf[3]) + 0.5;\n float prominence = abs(pf[3]);\n float depth = 1.0 - prominence;\n\n mat4 pA = mat4(p0, p1, p2, p3);\n mat4 pB = mat4(p4, p5, p6, p7);\n mat4 pC = mat4(p8, p9, pa, pb);\n mat4 pD = mat4(pc, pd, pe, abs(pf));\n\n float show = float(mshow(pA, loA, hiA) &&\n mshow(pB, loB, hiB) &&\n mshow(pC, loC, hiC) &&\n mshow(pD, loD, hiD));\n\n vec2 yy = show * vec2(val(pA, dim2A) + val(pB, dim2B) + val(pC, dim2C) + val(pD, dim2D),\n val(pA, dim1A) + val(pB, dim1B) + val(pC, dim1C) + val(pD, dim1D));\n\n vec2 dimensionToggle = vec2(x, 1.0 - x);\n\n vec2 scatterToggle = vec2(scatter, 1.0 - scatter);\n\n float y = dot(yy, dimensionToggle);\n mat2 xy = mat2(viewBoxSize * yy + dimensionToggle, viewBoxSize * vec2(x, y));\n\n vec2 viewBoxXY = viewBoxPosition + xy * scatterToggle;\n\n float depthOrHide = depth + 2.0 * (1.0 - show);\n\n gl_Position = vec4(\n xyProjection * (2.0 * viewBoxXY / resolution - 1.0),\n depthOrHide,\n 1.0\n );\n\n // visible coloring\n float clampedColorIndex = clamp((prominence - colorClamp[0]) / (colorClamp[1] - colorClamp[0]), 0.0, 1.0);\n fragColor = texture2D(palette, vec2((clampedColorIndex * 255.0 + 0.5) / 256.0, 0.5));\n}\n"]),o=n(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec4 p0, p1, p2, p3,\n p4, p5, p6, p7,\n p8, p9, pa, pb,\n pc, pd, pe;\n\nattribute vec4 pf;\n\nuniform mat4 dim1A, dim2A, dim1B, dim2B, dim1C, dim2C, dim1D, dim2D,\n loA, hiA, loB, hiB, loC, hiC, loD, hiD;\n\nuniform vec2 resolution,\n viewBoxPosition,\n viewBoxSize;\n\nuniform sampler2D palette;\n\nuniform vec2 colorClamp;\n\nuniform float scatter;\n\nvarying vec4 fragColor;\n\nvec4 zero = vec4(0, 0, 0, 0);\nvec4 unit = vec4(1, 1, 1, 1);\nvec2 xyProjection = vec2(1, 1);\n\nmat4 mclamp(mat4 m, mat4 lo, mat4 hi) {\n return mat4(clamp(m[0], lo[0], hi[0]),\n clamp(m[1], lo[1], hi[1]),\n clamp(m[2], lo[2], hi[2]),\n clamp(m[3], lo[3], hi[3]));\n}\n\nbool mshow(mat4 p, mat4 lo, mat4 hi) {\n return mclamp(p, lo, hi) == p;\n}\n\nfloat val(mat4 p, mat4 v) {\n return dot(matrixCompMult(p, v) * unit, unit);\n}\n\nvoid main() {\n\n float x = 0.5 * sign(pf[3]) + 0.5;\n float prominence = abs(pf[3]);\n float depth = 1.0 - prominence;\n\n mat4 pA = mat4(p0, p1, p2, p3);\n mat4 pB = mat4(p4, p5, p6, p7);\n mat4 pC = mat4(p8, p9, pa, pb);\n mat4 pD = mat4(pc, pd, pe, abs(pf));\n\n float show = float(mshow(pA, loA, hiA) &&\n mshow(pB, loB, hiB) &&\n mshow(pC, loC, hiC) &&\n mshow(pD, loD, hiD));\n\n vec2 yy = show * vec2(val(pA, dim2A) + val(pB, dim2B) + val(pC, dim2C) + val(pD, dim2D),\n val(pA, dim1A) + val(pB, dim1B) + val(pC, dim1C) + val(pD, dim1D));\n\n vec2 dimensionToggle = vec2(x, 1.0 - x);\n\n vec2 scatterToggle = vec2(scatter, 1.0 - scatter);\n\n float y = dot(yy, dimensionToggle);\n mat2 xy = mat2(viewBoxSize * yy + dimensionToggle, viewBoxSize * vec2(x, y));\n\n vec2 viewBoxXY = viewBoxPosition + xy * scatterToggle;\n\n float depthOrHide = depth + 2.0 * (1.0 - show);\n\n gl_Position = vec4(\n xyProjection * (2.0 * viewBoxXY / resolution - 1.0),\n depthOrHide,\n 1.0\n );\n\n // pick coloring\n fragColor = vec4(pf.rgb, 1.0);\n}\n"]),s=n(["precision lowp float;\n#define GLSLIFY 1\n\nvarying vec4 fragColor;\n\nvoid main() {\n gl_FragColor = fragColor;\n}\n"]),l=1e-6,c=64,u=2,f=4,h=[119,119,119],d=new Uint8Array(4),p=new Uint8Array(4);function m(t,e,r,n,i){var a=t._gl;a.enable(a.SCISSOR_TEST),a.scissor(e,r,n,i),t.clear({color:[0,0,0,0],depth:1})}function v(t,e,r,n,i,a){var o=a.key;r.drawCompleted||(!function(t){t.read({x:0,y:0,width:1,height:1,data:d})}(t),r.drawCompleted=!0),function s(l){var c;c=Math.min(n,i-l*n),a.offset=u*l*n,a.count=u*c,0===l&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],m(t,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),r.clearOnly||(e(a),l*n+c>>8*e)%256/255}function y(t,e){var r={};return[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15].map(function(r){return function(t,e,r){var n,i,a,o=[];for(i=0;i=c-4?g(o,c-2-s):.5);return a}(C,L,S,z),N=y(C,R),F=e.regl,j=F.texture({shape:[256,1],format:"rgba",type:"uint8",mag:"nearest",min:"nearest",data:function(t,e,r){for(var n=[],i=0;i<256;i++){var a=t(i/255);n.push((e?h:a).concat(r))}return n}(k,A,Math.round(255*(A?O:1)))}),B=F({profile:!1,blend:{enable:P,func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:1,dstAlpha:1},equation:{rgb:"add",alpha:"add"},color:[0,0,0,0]},depth:{enable:!P,mask:!0,func:"less",range:[0,1]},cull:{enable:!0,face:"back"},scissor:{enable:!0,box:{x:F.prop("scissorX"),y:F.prop("scissorY"),width:F.prop("scissorWidth"),height:F.prop("scissorHeight")}},viewport:{x:F.prop("viewportX"),y:F.prop("viewportY"),width:F.prop("viewportWidth"),height:F.prop("viewportHeight")},dither:!1,vert:T?o:a,frag:s,primitive:"lines",lineWidth:1,attributes:N,uniforms:{resolution:F.prop("resolution"),viewBoxPosition:F.prop("viewBoxPosition"),viewBoxSize:F.prop("viewBoxSize"),dim1A:F.prop("dim1A"),dim2A:F.prop("dim2A"),dim1B:F.prop("dim1B"),dim2B:F.prop("dim2B"),dim1C:F.prop("dim1C"),dim2C:F.prop("dim2C"),dim1D:F.prop("dim1D"),dim2D:F.prop("dim2D"),loA:F.prop("loA"),hiA:F.prop("hiA"),loB:F.prop("loB"),hiB:F.prop("hiB"),loC:F.prop("loC"),hiC:F.prop("hiC"),loD:F.prop("loD"),hiD:F.prop("hiD"),palette:j,colorClamp:F.prop("colorClamp"),scatter:F.prop("scatter")},offset:F.prop("offset"),count:F.prop("count")}),U=[0,1];var V=[];function q(t,e,r,a,o,s,l,c,u,h,d){var p,m,v,g,y=[t,e],w=i.verticalPadding/s,M=[0,1].map(function(){return[0,1,2,3].map(function(){return new Float32Array(16)})}),k=[0,1].map(function(){return[0,1,2,3].map(function(){return new Float32Array(16)})});for(p=0;p<2;p++)for(g=y[p],m=0;m<4;m++)for(v=0;v<16;v++){var T=v+16*m;M[p][m][v]=v+16*m===g?1:0,k[p][m][v]=(!A&&b(v,16*m,I)?S[0===T?0:1+(T-1)%(S.length-1)].filter[p]:p)+(2*p-1)*w}return{key:l,resolution:[x,_],viewBoxPosition:[r+D,a],viewBoxSize:[o,s],i:t,ii:e,dim1A:M[0][0],dim1B:M[0][1],dim1C:M[0][2],dim1D:M[0][3],dim2A:M[1][0],dim2B:M[1][1],dim2C:M[1][2],dim2D:M[1][3],loA:k[0][0],loB:k[0][1],loC:k[0][2],loD:k[0][3],hiA:k[1][0],hiB:k[1][1],hiC:k[1][2],hiD:k[1][3],colorClamp:U,scatter:c||0,scissorX:(u===h?0:r+D)+(n.pad.l-D)+n.layoutWidth*f.x[0],scissorWidth:(u===d?x-r+D:o+.5)+(u===h?r+D:0),scissorY:a+n.pad.b+n.layoutHeight*f.y[0],scissorHeight:s,viewportX:n.pad.l-D+n.layoutWidth*f.x[0],viewportY:n.pad.b+n.layoutHeight*f.y[0],viewportWidth:x,viewportHeight:_}}return{setColorDomain:function(t){U[0]=t[0],U[1]=t[1]},render:function(t,e,n){var i,a,o,s=1/0,l=-1/0;for(i=0;il&&(l=t[i].dim2.canvasX,o=i),t[i].dim1.canvasXi)return a;i=o,a=n[r]}return n[n.length-1]}function p(t){return o.scale.linear().domain(h(t))}function m(t,e,r){var n=u(e),s=n.trace,l=n.lineColor,c=n.cscale,h=s.line,d=s.domain,m=s.dimensions,v=t.width,g=s.labelfont,y=s.tickfont,b=s.rangefont,x=a.extendDeep({},h,{color:l.map(p({values:l,range:[h.cmin,h.cmax]})),blockLineCount:i.blockLineCount,canvasOverdrag:i.overdrag*i.canvasPixelRatio}),_=Math.floor(v*(d.x[1]-d.x[0])),w=Math.floor(t.height*(d.y[1]-d.y[0])),M=t.margin||{l:80,r:80,t:100,b:80},k=_,A=w;return{key:r,colCount:m.filter(f).length,dimensions:m,tickDistance:i.tickDistance,unitToColor:function(t){var e=t.map(function(t){return t[0]}),r=t.map(function(t){return t[1]}).map(function(t){return o.rgb(t)}),n="rgb".split("").map(function(t){return o.scale.linear().clamp(!0).domain(e).range(r.map((n=t,function(t){return t[n]})));var n});return function(t){return n.map(function(e){return e(t)})}}(c),lines:x,labelFont:g,tickFont:y,rangeFont:b,layoutWidth:v,layoutHeight:t.height,domain:d,translateX:d.x[0]*v,translateY:t.height-d.y[1]*t.height,pad:M,canvasWidth:k*i.canvasPixelRatio+2*x.canvasOverdrag,canvasHeight:A*i.canvasPixelRatio,width:k,height:A,canvasPixelRatio:i.canvasPixelRatio}}function v(t){var e=t.width,r=t.height,n=t.dimensions,a=t.canvasPixelRatio,s=function(r){return e*r/Math.max(1,t.colCount-1)},l=i.verticalPadding/(r*a),c=1-2*l,u=function(t){return l+c*t},d={key:t.key,xScale:s,model:t},m={};return d.dimensions=n.filter(f).map(function(e,n){var l=p(e),c=m[e.label];return m[e.label]=(c||0)+1,{key:e.label+(c?"__"+c:""),label:e.label,tickFormat:e.tickformat,tickvals:e.tickvals,ticktext:e.ticktext,ordinal:!!e.tickvals,scatter:i.scatter||e.scatter,xIndex:n,crossfilterDimensionIndex:n,visibleIndex:e._index,height:r,values:e.values,paddedUnitValues:e.values.map(l).map(u),xScale:s,x:s(n),canvasX:s(n)*a,unitScale:function(t,e){return o.scale.linear().range([t-e,e])}(r,i.verticalPadding),domainScale:function(t,e,r){var n=h(r),i=r.ticktext;return r.tickvals?o.scale.ordinal().domain(r.tickvals.map(function(t,e){return function(r,n){if(e){var i=e[n];return null===i||void 0===i?t(r):i}return t(r)}}(o.format(r.tickformat),i))).range(r.tickvals.map(function(t){return(t-n[0])/(n[1]-n[0])}).map(function(r){return t-e+r*(e-(t-e))})):o.scale.linear().domain(n).range([t-e,e])}(r,i.verticalPadding,e),ordinalScale:function(t){var e=h(t);return t.tickvals&&o.scale.ordinal().domain(t.tickvals).range(t.tickvals.map(function(t){return(t-e[0])/(e[1]-e[0])}))}(e),domainToUnitScale:l,filter:e.constraintrange?e.constraintrange.map(l):[0,1],parent:d,model:t}}),d}function g(t){t.classed(i.cn.axisExtentText,!0).attr("text-anchor","middle").style("cursor","default").style("user-select","none")}e.exports=function(t,e,r,f,h,p){var y=!1,b=!0;var x=f.filter(function(t){return u(t).trace.visible}).map(m.bind(0,h)).map(v);r.each(function(t,e){return a.extendFlat(t,x[e])});var _=r.selectAll(".gl-canvas").each(function(t){t.viewModel=x[0],t.model=t.viewModel?t.viewModel.model:null}),w={renderers:[],dimensions:[]},M=null;_.filter(function(t){return t.pick}).style("pointer-events","auto").on("mousemove",function(t){if(b&&t.lineLayer&&p&&p.hover){var e=o.event,r=this.width,n=this.height,i=o.mouse(this),a=i[0],s=i[1];if(a<0||s<0||a>=r||s>=n)return;var l=t.lineLayer.readPixel(a,n-1-s),c=0!==l[3],u=c?l[2]+256*(l[1]+256*l[0]):null,f={x:a,y:s,clientX:e.clientX,clientY:e.clientY,dataIndex:t.model.key,curveNumber:u};u!==M&&(c?p.hover(f):p.unhover&&p.unhover(f),M=u)}}),_.style("opacity",function(t){return t.pick?.01:1}),e.style("background","rgba(255, 255, 255, 0)");var k=e.selectAll("."+i.cn.parcoords).data(x,l);k.exit().remove(),k.enter().append("g").classed(i.cn.parcoords,!0).attr("overflow","visible").style("box-sizing","content-box").style("position","absolute").style("left",0).style("overflow","visible").style("shape-rendering","crispEdges").style("pointer-events","none").call(function(t){var e=t.selectAll("defs").data(c,l);e.enter().append("defs");var r=e.selectAll("#"+i.id.filterBarPattern).data(c,l);r.enter().append("pattern").attr("id",i.id.filterBarPattern).attr("patternUnits","userSpaceOnUse"),r.attr("x",-i.bar.width).attr("width",i.bar.capturewidth).attr("height",function(t){return t.model.height});var n=r.selectAll("rect").data(c,l);n.enter().append("rect").attr("shape-rendering","crispEdges"),n.attr("height",function(t){return t.model.height}).attr("width",i.bar.width).attr("x",i.bar.width/2).attr("fill",i.bar.fillcolor).attr("fill-opacity",i.bar.fillopacity).attr("stroke",i.bar.strokecolor).attr("stroke-opacity",i.bar.strokeopacity).attr("stroke-width",i.bar.strokewidth)}),k.attr("width",function(t){return t.model.width+t.model.pad.l+t.model.pad.r}).attr("height",function(t){return t.model.height+t.model.pad.t+t.model.pad.b}).attr("transform",function(t){return"translate("+t.model.translateX+","+t.model.translateY+")"});var A=k.selectAll("."+i.cn.parcoordsControlView).data(c,l);A.enter().append("g").classed(i.cn.parcoordsControlView,!0).style("box-sizing","content-box"),A.attr("transform",function(t){return"translate("+t.model.pad.l+","+t.model.pad.t+")"});var T=A.selectAll("."+i.cn.yAxis).data(function(t){return t.dimensions},l);function E(t){return t.dimensions.some(function(t){return 0!==t.filter[0]||1!==t.filter[1]})}function S(t,e){return(i.scatter?function(t,e){for(var r=e.panels||(e.panels=[]),n=t.each(function(t){return t})[e.key].map(function(t){return t.__data__}),i=n.length-1,a=i,o=0;oline").attr("fill","none").attr("stroke","black").attr("stroke-opacity",.25).attr("stroke-width","1px"),C.selectAll("text").style("text-shadow","1px 1px 1px #fff, -1px -1px 1px #fff, 1px -1px 1px #fff, -1px 1px 1px #fff").style("cursor","default").style("user-select","none");var P=L.selectAll("."+i.cn.axisHeading).data(c,l);P.enter().append("g").classed(i.cn.axisHeading,!0);var z=P.selectAll("."+i.cn.axisTitle).data(c,l);z.enter().append("text").classed(i.cn.axisTitle,!0).attr("text-anchor","middle").style("cursor","ew-resize").style("user-select","none").style("pointer-events","auto"),z.attr("transform","translate(0,"+-i.axisTitleOffset+")").text(function(t){return t.label}).each(function(t){s.font(z,t.model.labelFont)});var O=L.selectAll("."+i.cn.axisExtent).data(c,l);O.enter().append("g").classed(i.cn.axisExtent,!0);var D=O.selectAll("."+i.cn.axisExtentTop).data(c,l);D.enter().append("g").classed(i.cn.axisExtentTop,!0),D.attr("transform","translate(0,"+-i.axisExtentOffset+")");var I=D.selectAll("."+i.cn.axisExtentTopText).data(c,l);function R(t){return t.ordinal?function(){return""}:o.format(t.tickFormat)}I.enter().append("text").classed(i.cn.axisExtentTopText,!0).call(g),I.text(function(t){return R(t)(t.domainScale.domain().slice(-1)[0])}).each(function(t){s.font(I,t.model.rangeFont)});var N=O.selectAll("."+i.cn.axisExtentBottom).data(c,l);N.enter().append("g").classed(i.cn.axisExtentBottom,!0),N.attr("transform",function(t){return"translate(0,"+(t.model.height+i.axisExtentOffset)+")"});var F=N.selectAll("."+i.cn.axisExtentBottomText).data(c,l);F.enter().append("text").classed(i.cn.axisExtentBottomText,!0).attr("dy","0.75em").call(g),F.text(function(t){return R(t)(t.domainScale.domain()[0])}).each(function(t){s.font(F,t.model.rangeFont)});var j=L.selectAll("."+i.cn.axisBrush).data(c,l),B=j.enter().append("g").classed(i.cn.axisBrush,!0);j.each(function(t){t.brush||(t.brush=o.svg.brush().y(t.unitScale).on("brushstart",q).on("brush",H).on("brushend",G),0===t.filter[0]&&1===t.filter[1]||t.brush.extent(t.filter),o.select(this).call(t.brush))}),B.selectAll("rect").attr("x",-i.bar.capturewidth/2).attr("width",i.bar.capturewidth),B.selectAll("rect.extent").attr("fill","url(#"+i.id.filterBarPattern+")").style("cursor","ns-resize").filter(function(t){return 0===t.filter[0]&&1===t.filter[1]}).attr("y",-100),B.selectAll(".resize rect").attr("height",i.bar.handleheight).attr("opacity",0).style("visibility","visible"),B.selectAll(".resize.n rect").style("cursor","n-resize").attr("y",i.bar.handleoverlap-i.bar.handleheight),B.selectAll(".resize.s rect").style("cursor","s-resize").attr("y",i.bar.handleoverlap);var U=!1,V=!1;function q(){U=!0,y=!0}function H(t){b=!1;var e=t.parent,r=t.brush.extent(),n=e.dimensions,i=n[t.xIndex].filter,a=U&&r[0]===r[1];a&&(t.brush.clear(),o.select(this).select("rect.extent").attr("y",-100));var s=a?[0,1]:r.slice();if(s[0]!==i[0]||s[1]!==i[1]){n[t.xIndex].filter=s,e.focusLayer&&e.focusLayer.render(e.panels,!0);var l=E(e);!V&&l?(e.contextLayer&&e.contextLayer.render(e.panels,!0),V=!0):V&&!l&&(e.contextLayer&&e.contextLayer.render(e.panels,!0,!0),V=!1)}U=!1}function G(t){var e=t.parent,r=t.brush.extent(),n=r[0]===r[1],i=e.dimensions[t.xIndex].filter;if(!n&&t.ordinal&&(i[0]=d(t.ordinalScale,i[0]),i[1]=d(t.ordinalScale,i[1]),i[0]===i[1]&&(i[0]=Math.max(0,i[0]-.05),i[1]=Math.min(1,i[1]+.05)),o.select(this).transition().duration(150).call(t.brush.extent(i)),e.focusLayer.render(e.panels,!0)),e.pickLayer&&e.pickLayer.render(e.panels,!0),b=!0,y="ending",p&&p.filterChanged){var a=t.domainToUnitScale.invert,s=i.map(a);p.filterChanged(e.key,t.visibleIndex,s)}}return w}},{"../../components/drawing":623,"../../lib":724,"../../lib/gup":721,"./constants":1017,"./lines":1020,d3:128}],1022:[function(t,e,r){(function(r){"use strict";var n=t("./parcoords"),i=t("regl");e.exports=function(t,e){var a=t._fullLayout,o=a._toppaper,s=a._paperdiv,l=a._glcontainer;a._glcanvas.each(function(e){e.regl||(e.regl=i({canvas:this,attributes:{antialias:!e.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||r.devicePixelRatio}))});var c={},u={},f=a._size;e.forEach(function(e,r){c[r]=t.data[r].dimensions,u[r]=t.data[r].dimensions.slice()});n(s,o,l,e,{width:f.w,height:f.h,margin:{t:f.t,r:f.r,b:f.b,l:f.l}},{filterChanged:function(e,r,n){var i=u[e][r],a=i.constraintrange;a&&2===a.length||(a=i.constraintrange=[]),a[0]=n[0],a[1]=n[1],t.emit("plotly_restyle")},hover:function(e){t.emit("plotly_hover",e)},unhover:function(e){t.emit("plotly_unhover",e)},axesMoved:function(e,r){function n(t){return!("visible"in t)||t.visible}function i(t,e,r){var n=e.indexOf(r),i=t.indexOf(n);return-1===i&&(i+=e.length),i}var a=function(t){return function(e,n){return i(r,t,e)-i(r,t,n)}}(u[e].filter(n));c[e].sort(a),u[e].filter(function(t){return!n(t)}).sort(function(t){return u[e].indexOf(t)}).forEach(function(t){c[e].splice(c[e].indexOf(t),1),c[e].splice(u[e].indexOf(t),0,t)}),t.emit("plotly_restyle")}})}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./parcoords":1021,regl:486}],1023:[function(t,e,r){"use strict";var n=t("../../components/color/attributes"),i=t("../../plots/font_attributes"),a=t("../../plots/attributes"),o=t("../../plots/domain_attributes"),s=t("../../lib/extend").extendFlat,l=i({editType:"calc",colorEditType:"style"});e.exports={labels:{valType:"data_array",editType:"calc"},label0:{valType:"number",dflt:0,editType:"calc"},dlabel:{valType:"number",dflt:1,editType:"calc"},values:{valType:"data_array",editType:"calc"},marker:{colors:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:n.defaultLine,arrayOk:!0,editType:"style"},width:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"style"},editType:"calc"},editType:"calc"},text:{valType:"data_array",editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},scalegroup:{valType:"string",dflt:"",editType:"calc"},textinfo:{valType:"flaglist",flags:["label","text","value","percent"],extras:["none"],editType:"calc"},hoverinfo:s({},a.hoverinfo,{flags:["label","text","value","percent","name"]}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"calc"},textfont:s({},l,{}),insidetextfont:s({},l,{}),outsidetextfont:s({},l,{}),domain:o({name:"pie",trace:!0,editType:"calc"}),hole:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},sort:{valType:"boolean",dflt:!0,editType:"calc"},direction:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"number",min:-360,max:360,dflt:0,editType:"calc"},pull:{valType:"number",min:0,max:1,dflt:0,arrayOk:!0,editType:"calc"}}},{"../../components/color/attributes":597,"../../lib/extend":713,"../../plots/attributes":768,"../../plots/domain_attributes":796,"../../plots/font_attributes":797}],1024:[function(t,e,r){"use strict";var n=t("../../registry");r.name="pie",r.plot=function(t){var e=n.getModule("pie"),r=function(t,e){for(var r=[],n=0;n")}}return g}},{"../../components/color":598,"./helpers":1028,"fast-isnumeric":140,tinycolor2:526}],1026:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("./attributes");e.exports=function(t,e,r,a){function o(r,a){return n.coerce(t,e,i,r,a)}var s=n.coerceFont,l=o("values"),c=o("labels");if(!Array.isArray(c)){if(!Array.isArray(l)||!l.length)return void(e.visible=!1);o("label0"),o("dlabel")}o("marker.line.width")&&o("marker.line.color"),o("marker.colors"),o("scalegroup");var u=o("text"),f=o("textinfo",Array.isArray(u)?"text+percent":"percent");if(o("hovertext"),f&&"none"!==f){var h=o("textposition"),d=Array.isArray(h)||"auto"===h,p=d||"inside"===h,m=d||"outside"===h;if(p||m){var v=s(o,"textfont",a.font);p&&s(o,"insidetextfont",v),m&&s(o,"outsidetextfont",v)}}o("domain.x"),o("domain.y"),o("hole"),o("sort"),o("direction"),o("rotation"),o("pull")}},{"../../lib":724,"./attributes":1023}],1027:[function(t,e,r){"use strict";var n=t("../../components/fx/helpers").appendArrayMultiPointValues;e.exports=function(t,e){var r={curveNumber:e.index,pointNumbers:t.pts,data:e._input,fullData:e,label:t.label,color:t.color,value:t.v,v:t.v};return 1===t.pts.length&&(r.pointNumber=r.i=t.pts[0]),n(r,e,t.pts),r}},{"../../components/fx/helpers":637}],1028:[function(t,e,r){"use strict";var n=t("../../lib");r.formatPiePercent=function(t,e){var r=(100*t).toPrecision(3);return-1!==r.lastIndexOf(".")&&(r=r.replace(/[.]?0+$/,"")),n.numSeparate(r,e)+"%"},r.formatPieValue=function(t,e){var r=t.toPrecision(10);return-1!==r.lastIndexOf(".")&&(r=r.replace(/[.]?0+$/,"")),n.numSeparate(r,e)},r.getFirstFilled=function(t,e){if(Array.isArray(t))for(var r=0;r0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}e.exports=function(t,e){var r=t._fullLayout;!function(t,e){var r,n,i,a,o,s,l,c,u,f=[];for(i=0;il&&(l=s.pull[a]);o.r=Math.min(r,n)/(2+2*l),o.cx=e.l+e.w*(s.domain.x[1]+s.domain.x[0])/2,o.cy=e.t+e.h*(2-s.domain.y[1]-s.domain.y[0])/2,s.scalegroup&&-1===f.indexOf(s.scalegroup)&&f.push(s.scalegroup)}for(a=0;ai.vTotal/2?1:0)}(e),h.each(function(){var h=n.select(this).selectAll("g.slice").data(e);h.enter().append("g").classed("slice",!0),h.exit().remove();var m=[[[],[]],[[],[]]],v=!1;h.each(function(e){if(e.hidden)n.select(this).selectAll("path,g").remove();else{e.pointNumber=e.i,e.curveNumber=p.index,m[e.pxmid[1]<0?0:1][e.pxmid[0]<0?0:1].push(e);var a=d.cx,h=d.cy,g=n.select(this),y=g.selectAll("path.surface").data([e]),b=!1,x=!1;if(y.enter().append("path").classed("surface",!0).style({"pointer-events":"all"}),g.select("path.textline").remove(),g.on("mouseover",function(){var o=t._fullLayout,s=t._fullData[p.index];if(!t._dragging&&!1!==o.hovermode){var f=s.hoverinfo;if(Array.isArray(f)&&(f=i.castHoverinfo({hoverinfo:[l.castOption(f,e.pts)],_module:p._module},o,0)),"all"===f&&(f="label+text+value+percent+name"),"none"!==f&&"skip"!==f&&f){var m=u(e,d),v=a+e.pxmid[0]*(1-m),g=h+e.pxmid[1]*(1-m),y=r.separators,_=[];if(-1!==f.indexOf("label")&&_.push(e.label),-1!==f.indexOf("text")){var w=l.castOption(s.hovertext||s.text,e.pts);w&&_.push(w)}-1!==f.indexOf("value")&&_.push(l.formatPieValue(e.v,y)),-1!==f.indexOf("percent")&&_.push(l.formatPiePercent(e.v/d.vTotal,y));var M=p.hoverlabel,k=M.font;i.loneHover({x0:v-m*d.r,x1:v+m*d.r,y:g,text:_.join("
"),name:-1!==f.indexOf("name")?s.name:void 0,idealAlign:e.pxmid[0]<0?"left":"right",color:l.castOption(M.bgcolor,e.pts)||e.color,borderColor:l.castOption(M.bordercolor,e.pts),fontFamily:l.castOption(k.family,e.pts),fontSize:l.castOption(k.size,e.pts),fontColor:l.castOption(k.color,e.pts)},{container:o._hoverlayer.node(),outerContainer:o._paper.node(),gd:t}),b=!0}t.emit("plotly_hover",{points:[c(e,s)],event:n.event}),x=!0}}).on("mouseout",function(r){var a=t._fullLayout,o=t._fullData[p.index];x&&(r.originalEvent=n.event,t.emit("plotly_unhover",{points:[c(e,o)],event:n.event}),x=!1),b&&(i.loneUnhover(a._hoverlayer.node()),b=!1)}).on("click",function(){var r=t._fullLayout,a=t._fullData[p.index];t._dragging||!1===r.hovermode||(t._hoverdata=[c(e,a)],i.click(t,n.event))}),p.pull){var _=+l.castOption(p.pull,e.pts)||0;_>0&&(a+=_*e.pxmid[0],h+=_*e.pxmid[1])}e.cxFinal=a,e.cyFinal=h;var w=p.hole;if(e.v===d.vTotal){var M="M"+(a+e.px0[0])+","+(h+e.px0[1])+S(e.px0,e.pxmid,!0,1)+S(e.pxmid,e.px0,!0,1)+"Z";w?y.attr("d","M"+(a+w*e.px0[0])+","+(h+w*e.px0[1])+S(e.px0,e.pxmid,!1,w)+S(e.pxmid,e.px0,!1,w)+"Z"+M):y.attr("d",M)}else{var k=S(e.px0,e.px1,!0,1);if(w){var A=1-w;y.attr("d","M"+(a+w*e.px1[0])+","+(h+w*e.px1[1])+S(e.px1,e.px0,!1,w)+"l"+A*e.px0[0]+","+A*e.px0[1]+k+"Z")}else y.attr("d","M"+a+","+h+"l"+e.px0[0]+","+e.px0[1]+k+"Z")}var T=l.castOption(p.textposition,e.pts),E=g.selectAll("g.slicetext").data(e.text&&"none"!==T?[0]:[]);E.enter().append("g").classed("slicetext",!0),E.exit().remove(),E.each(function(){var r=n.select(this).selectAll("text").data([0]);r.enter().append("text").attr("data-notex",1),r.exit().remove(),r.text(e.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(o.font,"outside"===T?p.outsidetextfont:p.insidetextfont).call(s.convertToTspans,t);var i,l=o.bBox(r.node());"outside"===T?i=f(l,e):(i=function(t,e,r){var n=Math.sqrt(t.width*t.width+t.height*t.height),i=t.width/t.height,a=Math.PI*Math.min(e.v/r.vTotal,.5),o=1-r.trace.hole,s=u(e,r),l={scale:s*r.r*2/n,rCenter:1-s,rotate:0};if(l.scale>=1)return l;var c=i+1/(2*Math.tan(a)),f=r.r*Math.min(1/(Math.sqrt(c*c+.5)+c),o/(Math.sqrt(i*i+o/2)+i)),h={scale:2*f/t.height,rCenter:Math.cos(f/r.r)-f*i/r.r,rotate:(180/Math.PI*e.midangle+720)%180-90},d=1/i,p=d+1/(2*Math.tan(a)),m=r.r*Math.min(1/(Math.sqrt(p*p+.5)+p),o/(Math.sqrt(d*d+o/2)+d)),v={scale:2*m/t.width,rCenter:Math.cos(m/r.r)-m/i/r.r,rotate:(180/Math.PI*e.midangle+810)%180-90},g=v.scale>h.scale?v:h;return l.scale<1&&g.scale>l.scale?g:l}(l,e,d),"auto"===T&&i.scale<1&&(r.call(o.font,p.outsidetextfont),p.outsidetextfont.family===p.insidetextfont.family&&p.outsidetextfont.size===p.insidetextfont.size||(l=o.bBox(r.node())),i=f(l,e)));var c=a+e.pxmid[0]*i.rCenter+(i.x||0),m=h+e.pxmid[1]*i.rCenter+(i.y||0);i.outside&&(e.yLabelMin=m-l.height/2,e.yLabelMid=m,e.yLabelMax=m+l.height/2,e.labelExtraX=0,e.labelExtraY=0,v=!0),r.attr("transform","translate("+c+","+m+")"+(i.scale<1?"scale("+i.scale+")":"")+(i.rotate?"rotate("+i.rotate+")":"")+"translate("+-(l.left+l.right)/2+","+-(l.top+l.bottom)/2+")")})}function S(t,r,n,i){return"a"+i*d.r+","+i*d.r+" 0 "+e.largeArc+(n?" 1 ":" 0 ")+i*(r[0]-t[0])+","+i*(r[1]-t[1])}}),v&&function(t,e){var r,n,i,a,o,s,c,u,f,h,d,p,m;function v(t,e){return t.pxmid[1]-e.pxmid[1]}function g(t,e){return e.pxmid[1]-t.pxmid[1]}function y(t,r){r||(r={});var i,u,f,d,p,m,v=r.labelExtraY+(n?r.yLabelMax:r.yLabelMin),g=n?t.yLabelMin:t.yLabelMax,y=n?t.yLabelMax:t.yLabelMin,b=t.cyFinal+o(t.px0[1],t.px1[1]),x=v-g;if(x*c>0&&(t.labelExtraY=x),Array.isArray(e.pull))for(u=0;u=(l.castOption(e.pull,f.pts)||0)||((t.pxmid[1]-f.pxmid[1])*c>0?(d=f.cyFinal+o(f.px0[1],f.px1[1]),(x=d-g-t.labelExtraY)*c>0&&(t.labelExtraY+=x)):(y+t.labelExtraY-b)*c>0&&(i=3*s*Math.abs(u-h.indexOf(t)),p=f.cxFinal+a(f.px0[0],f.px1[0]),(m=p+i-(t.cxFinal+t.pxmid[0])-t.labelExtraX)*s>0&&(t.labelExtraX+=m)))}for(n=0;n<2;n++)for(i=n?v:g,o=n?Math.max:Math.min,c=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,(u=t[n][r]).sort(i),f=t[1-n][r],h=f.concat(u),p=[],d=0;dMath.abs(c)?o+="l"+c*t.pxmid[0]/t.pxmid[1]+","+c+"H"+(i+t.labelExtraX+s):o+="l"+t.labelExtraX+","+l+"v"+(c-l)+"h"+s}else o+="V"+(t.yLabelMid+t.labelExtraY)+"h"+s;e.append("path").classed("textline",!0).call(a.stroke,p.outsidetextfont.color).attr({"stroke-width":Math.min(2,p.outsidetextfont.size/8),d:o,fill:"none"})}})})}),setTimeout(function(){h.selectAll("tspan").each(function(){var t=n.select(this);t.attr("dy")&&t.attr("dy",t.attr("dy"))})},0)}},{"../../components/color":598,"../../components/drawing":623,"../../components/fx":640,"../../lib/svg_text_utils":747,"./event_data":1027,"./helpers":1028,d3:128}],1033:[function(t,e,r){"use strict";var n=t("d3"),i=t("./style_one");e.exports=function(t){t._fullLayout._pielayer.selectAll(".trace").each(function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll("path.surface").each(function(t){n.select(this).call(i,t,e)})})}},{"./style_one":1034,d3:128}],1034:[function(t,e,r){"use strict";var n=t("../../components/color"),i=t("./helpers").castOption;e.exports=function(t,e,r){var a=r.marker.line,o=i(a.color,e.pts)||n.defaultLine,s=i(a.width,e.pts)||0;t.style({"stroke-width":s}).call(n.fill,e.color).call(n.stroke,o)}},{"../../components/color":598,"./helpers":1028}],1035:[function(t,e,r){"use strict";var n=t("../scatter/attributes");e.exports={x:n.x,y:n.y,xy:{valType:"data_array",editType:"calc"},indices:{valType:"data_array",editType:"calc"},xbounds:{valType:"data_array",editType:"calc"},ybounds:{valType:"data_array",editType:"calc"},text:n.text,marker:{color:{valType:"color",arrayOk:!1,editType:"calc"},opacity:{valType:"number",min:0,max:1,dflt:1,arrayOk:!1,editType:"calc"},blend:{valType:"boolean",dflt:null,editType:"calc"},sizemin:{valType:"number",min:.1,max:2,dflt:.5,editType:"calc"},sizemax:{valType:"number",min:.1,dflt:20,editType:"calc"},border:{color:{valType:"color",arrayOk:!1,editType:"calc"},arearatio:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},editType:"calc"},editType:"calc"}}},{"../scatter/attributes":1048}],1036:[function(t,e,r){"use strict";var n=t("gl-pointcloud2d"),i=t("../../lib/str2rgbarray"),a=t("../scatter/get_trace_color"),o=["xaxis","yaxis"];function s(t,e){this.scene=t,this.uid=e,this.type="pointcloud",this.pickXData=[],this.pickYData=[],this.xData=[],this.yData=[],this.textLabels=[],this.color="rgb(0, 0, 0)",this.name="",this.hoverinfo="all",this.idToIndex=new Int32Array(0),this.bounds=[0,0,0,0],this.pointcloudOptions={positions:new Float32Array(0),idToIndex:this.idToIndex,sizemin:.5,sizemax:12,color:[0,0,0,1],areaRatio:1,borderColor:[0,0,0,1]},this.pointcloud=n(t.glplot,this.pointcloudOptions),this.pointcloud._trace=this}var l=s.prototype;l.handlePick=function(t){var e=this.idToIndex[t.pointId];return{trace:this,dataCoord:t.dataCoord,traceCoord:this.pickXYData?[this.pickXYData[2*e],this.pickXYData[2*e+1]]:[this.pickXData[e],this.pickYData[e]],textLabel:Array.isArray(this.textLabels)?this.textLabels[e]:this.textLabels,color:this.color,name:this.name,pointIndex:e,hoverinfo:this.hoverinfo}},l.update=function(t){this.index=t.index,this.textLabels=t.text,this.name=t.name,this.hoverinfo=t.hoverinfo,this.bounds=[1/0,1/0,-1/0,-1/0],this.updateFast(t),this.color=a(t,{})},l.updateFast=function(t){var e,r,n,a,o,s,l=this.xData=this.pickXData=t.x,c=this.yData=this.pickYData=t.y,u=this.pickXYData=t.xy,f=t.xbounds&&t.ybounds,h=t.indices,d=this.bounds;if(u){if(n=u,e=u.length>>>1,f)d[0]=t.xbounds[0],d[2]=t.xbounds[1],d[1]=t.ybounds[0],d[3]=t.ybounds[1];else for(s=0;sd[2]&&(d[2]=a),od[3]&&(d[3]=o);if(h)r=h;else for(r=new Int32Array(e),s=0;sd[2]&&(d[2]=a),od[3]&&(d[3]=o);this.idToIndex=r,this.pointcloudOptions.idToIndex=r,this.pointcloudOptions.positions=n;var p=i(t.marker.color),m=i(t.marker.border.color),v=t.opacity*t.marker.opacity;p[3]*=v,this.pointcloudOptions.color=p;var g=t.marker.blend;if(null===g){g=l.length<100||c.length<100}this.pointcloudOptions.blend=g,m[3]*=v,this.pointcloudOptions.borderColor=m;var y=t.marker.sizemin,b=Math.max(t.marker.sizemax,t.marker.sizemin);this.pointcloudOptions.sizeMin=y,this.pointcloudOptions.sizeMax=b,this.pointcloudOptions.areaRatio=t.marker.border.arearatio,this.pointcloud.update(this.pointcloudOptions),this.expandAxesFast(d,b/2)},l.expandAxesFast=function(t,e){for(var r,n,i,a=e||.5,s=0;s<2;s++)(n=(r=this.scene[o[s]])._min)||(n=[]),n.push({val:t[s],pad:a}),(i=r._max)||(i=[]),i.push({val:t[s+2],pad:a})},l.dispose=function(){this.pointcloud.dispose()},e.exports=function(t,e){var r=new s(t,e.uid);return r.update(e),r}},{"../../lib/str2rgbarray":746,"../scatter/get_trace_color":1058,"gl-pointcloud2d":212}],1037:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("./attributes");e.exports=function(t,e,r){function a(r,a){return n.coerce(t,e,i,r,a)}a("x"),a("y"),a("xbounds"),a("ybounds"),t.xy&&t.xy instanceof Float32Array&&(e.xy=t.xy),t.indices&&t.indices instanceof Int32Array&&(e.indices=t.indices),a("text"),a("marker.color",r),a("marker.opacity"),a("marker.blend"),a("marker.sizemin"),a("marker.sizemax"),a("marker.border.color",r),a("marker.border.arearatio")}},{"../../lib":724,"./attributes":1035}],1038:[function(t,e,r){"use strict";var n={};n.attributes=t("./attributes"),n.supplyDefaults=t("./defaults"),n.calc=t("../scatter3d/calc"),n.plot=t("./convert"),n.moduleType="trace",n.name="pointcloud",n.basePlotModule=t("../../plots/gl2d"),n.categories=["gl","gl2d","showLegend"],n.meta={},e.exports=n},{"../../plots/gl2d":810,"../scatter3d/calc":1074,"./attributes":1035,"./convert":1036,"./defaults":1037}],1039:[function(t,e,r){"use strict";var n=t("../../plots/font_attributes"),i=t("../../plots/attributes"),a=t("../../components/color/attributes"),o=t("../../components/fx/attributes"),s=t("../../plots/domain_attributes"),l=t("../../lib/extend").extendFlat,c=t("../../plot_api/edit_types").overrideAll;e.exports=c({hoverinfo:l({},i.hoverinfo,{flags:["label","text","value","percent","name"]}),hoverlabel:o.hoverlabel,domain:s({name:"sankey",trace:!0}),orientation:{valType:"enumerated",values:["v","h"],dflt:"h"},valueformat:{valType:"string",dflt:".3s"},valuesuffix:{valType:"string",dflt:""},arrangement:{valType:"enumerated",values:["snap","perpendicular","freeform","fixed"],dflt:"snap"},textfont:n({}),node:{label:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},line:{color:{valType:"color",dflt:a.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:.5,arrayOk:!0}},pad:{valType:"number",arrayOk:!1,min:0,dflt:20},thickness:{valType:"number",arrayOk:!1,min:1,dflt:20}},link:{label:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},line:{color:{valType:"color",dflt:a.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:0,arrayOk:!0}},source:{valType:"data_array",dflt:[]},target:{valType:"data_array",dflt:[]},value:{valType:"data_array",dflt:[]}}},"calc","nested")},{"../../components/color/attributes":597,"../../components/fx/attributes":632,"../../lib/extend":713,"../../plot_api/edit_types":754,"../../plots/attributes":768,"../../plots/domain_attributes":796,"../../plots/font_attributes":797}],1040:[function(t,e,r){"use strict";var n=t("../../plot_api/edit_types").overrideAll,i=t("../../plots/get_data").getModuleCalcData,a=t("./plot"),o=t("../../components/fx/layout_attributes");r.name="sankey",r.baseLayoutAttrOverrides=n({hoverlabel:o.hoverlabel},"plot","nested"),r.plot=function(t){var e=i(t.calcdata,"sankey");a(t,e)},r.clean=function(t,e,r,n){var i=n._has&&n._has("sankey"),a=e._has&&e._has("sankey");i&&!a&&n._paperdiv.selectAll(".sankey").remove()}},{"../../components/fx/layout_attributes":641,"../../plot_api/edit_types":754,"../../plots/get_data":807,"./plot":1045}],1041:[function(t,e,r){"use strict";var n=t("strongly-connected-components"),i=t("../../lib"),a=t("../../lib/gup").wrap;e.exports=function(t,e){return function(t,e,r){for(var i=t.map(function(){return[]}),a=0;a1})}(e.node.label,e.link.source,e.link.target)&&(i.error("Circularity is present in the Sankey data. Removing all nodes and links."),e.link.label=[],e.link.source=[],e.link.target=[],e.link.value=[],e.link.color=[],e.node.label=[],e.node.color=[]),a({link:e.link,node:e.node})}},{"../../lib":724,"../../lib/gup":721,"strongly-connected-components":517}],1042:[function(t,e,r){"use strict";e.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:"cubic-in-out",cn:{sankey:"sankey",sankeyLinks:"sankey-links",sankeyLink:"sankey-link",sankeyNodeSet:"sankey-node-set",sankeyNode:"sankey-node",nodeRect:"node-rect",nodeCapture:"node-capture",nodeCentered:"node-entered",nodeLabelGuide:"node-label-guide",nodeLabel:"node-label",nodeLabelTextPath:"node-label-text-path"}}},{}],1043:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("./attributes"),a=t("../../components/color"),o=t("tinycolor2");e.exports=function(t,e,r,s){function l(r,a){return n.coerce(t,e,i,r,a)}l("node.label"),l("node.pad"),l("node.thickness"),l("node.line.color"),l("node.line.width");var c=s.colorway;l("node.color",e.node.label.map(function(t,e){return a.addOpacity(function(t){return c[t%c.length]}(e),.8)})),l("link.label"),l("link.source"),l("link.target"),l("link.value"),l("link.line.color"),l("link.line.width"),l("link.color",e.link.value.map(function(){return o(s.paper_bgcolor).getLuminance()<.333?"rgba(255, 255, 255, 0.6)":"rgba(0, 0, 0, 0.2)"})),l("domain.x"),l("domain.y"),l("orientation"),l("valueformat"),l("valuesuffix"),l("arrangement"),n.coerceFont(l,"textfont",n.extendFlat({},s.font));e.node.label.some(function(t,r){return-1===e.link.source.indexOf(r)&&-1===e.link.target.indexOf(r)})&&n.warn("Some of the nodes are neither sources nor targets, they will not be displayed.")}},{"../../components/color":598,"../../lib":724,"./attributes":1039,tinycolor2:526}],1044:[function(t,e,r){"use strict";var n={};n.attributes=t("./attributes"),n.supplyDefaults=t("./defaults"),n.calc=t("./calc"),n.plot=t("./plot"),n.moduleType="trace",n.name="sankey",n.basePlotModule=t("./base_plot"),n.categories=["noOpacity"],n.meta={},e.exports=n},{"./attributes":1039,"./base_plot":1040,"./calc":1041,"./defaults":1043,"./plot":1045}],1045:[function(t,e,r){"use strict";var n=t("d3"),i=t("./render"),a=t("../../components/fx"),o=t("../../components/color"),s=t("../../lib"),l=t("./constants").cn,c=s._;function u(t){return""!==t}function f(t,e){return t.filter(function(t){return t.key===e.traceId})}function h(t,e){n.select(t).select("path").style("fill-opacity",e),n.select(t).select("rect").style("fill-opacity",e)}function d(t){n.select(t).select("text.name").style("fill","black")}function p(t){return function(e){return-1!==t.node.sourceLinks.indexOf(e.link)||-1!==t.node.targetLinks.indexOf(e.link)}}function m(t){return function(e){return-1!==e.node.sourceLinks.indexOf(t.link)||-1!==e.node.targetLinks.indexOf(t.link)}}function v(t,e,r){e&&r&&f(r,e).selectAll("."+l.sankeyLink).filter(p(e)).call(y.bind(0,e,r,!1))}function g(t,e,r){e&&r&&f(r,e).selectAll("."+l.sankeyLink).filter(p(e)).call(b.bind(0,e,r,!1))}function y(t,e,r,n){var i=n.datum().link.label;n.style("fill-opacity",.4),i&&f(e,t).selectAll("."+l.sankeyLink).filter(function(t){return t.link.label===i}).style("fill-opacity",.4),r&&f(e,t).selectAll("."+l.sankeyNode).filter(m(t)).call(v)}function b(t,e,r,n){var i=n.datum().link.label;n.style("fill-opacity",function(t){return t.tinyColorAlpha}),i&&f(e,t).selectAll("."+l.sankeyLink).filter(function(t){return t.link.label===i}).style("fill-opacity",function(t){return t.tinyColorAlpha}),r&&f(e,t).selectAll(l.sankeyNode).filter(m(t)).call(g)}function x(t,e){var r=t.hoverlabel||{},n=s.nestedProperty(r,e).get();return!Array.isArray(n)&&n}e.exports=function(t,e){var r=t._fullLayout,s=r._paper,f=r._size,p=c(t,"source:")+" ",m=c(t,"target:")+" ",_=c(t,"incoming flow count:")+" ",w=c(t,"outgoing flow count:")+" ";i(s,e,{width:f.w,height:f.h,margin:{t:f.t,r:f.r,b:f.b,l:f.l}},{linkEvents:{hover:function(e,r,i){n.select(e).call(y.bind(0,r,i,!0)),t.emit("plotly_hover",{event:n.event,points:[r.link]})},follow:function(e,i){var s=i.link.trace,l=t._fullLayout._paperdiv.node().getBoundingClientRect(),c=e.getBoundingClientRect(),f=c.left+c.width/2,v=c.top+c.height/2,g=a.loneHover({x:f-l.left,y:v-l.top,name:n.format(i.valueFormat)(i.link.value)+i.valueSuffix,text:[i.link.label||"",p+i.link.source.label,m+i.link.target.label].filter(u).join("
"),color:x(s,"bgcolor")||o.addOpacity(i.tinyColorHue,1),borderColor:x(s,"bordercolor"),fontFamily:x(s,"font.family"),fontSize:x(s,"font.size"),fontColor:x(s,"font.color"),idealAlign:n.event.x"),color:x(o,"bgcolor")||i.tinyColorHue,borderColor:x(o,"bordercolor"),fontFamily:x(o,"font.family"),fontSize:x(o,"font.size"),fontColor:x(o,"font.color"),idealAlign:"left"},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:t});h(g,.85),d(g)},unhover:function(e,i,o){n.select(e).call(g,i,o),t.emit("plotly_unhover",{event:n.event,points:[i.node]}),a.loneUnhover(r._hoverlayer.node())},select:function(e,r,i){var o=r.node;o.originalEvent=n.event,t._hoverdata=[o],n.select(e).call(g,r,i),a.click(t,{target:!0})}}})}},{"../../components/color":598,"../../components/fx":640,"../../lib":724,"./constants":1042,"./render":1046,d3:128}],1046:[function(t,e,r){"use strict";var n=t("./constants"),i=t("d3"),a=t("tinycolor2"),o=t("../../components/color"),s=t("../../components/drawing"),l=t("@plotly/d3-sankey").sankey,c=t("d3-force"),u=t("../../lib"),f=t("../../lib/gup").keyFun,h=t("../../lib/gup").repeat,d=t("../../lib/gup").unwrap;function p(t){t.lastDraggedX=t.x,t.lastDraggedY=t.y}function m(t){return function(e){return e.node.originalX===t.node.originalX}}function v(t){for(var e=0;e1||t.linkLineWidth>0}function M(t){return"translate("+t.translateX+","+t.translateY+")"+(t.horizontal?"matrix(1 0 0 1 0 0)":"matrix(0 1 1 0 0 0)")}function k(t){return"translate("+(t.horizontal?0:t.labelY)+" "+(t.horizontal?t.labelY:0)+")"}function A(t){return i.svg.line()([[t.horizontal?t.left?-t.sizeAcross:t.visibleWidth+n.nodeTextOffsetHorizontal:n.nodeTextOffsetHorizontal,0],[t.horizontal?t.left?-n.nodeTextOffsetHorizontal:t.sizeAcross:t.visibleHeight-n.nodeTextOffsetHorizontal,0]])}function T(t){return t.horizontal?"matrix(1 0 0 1 0 0)":"matrix(0 1 1 0 0 0)"}function E(t){return t.horizontal?"scale(1 1)":"scale(-1 1)"}function S(t){return t.darkBackground&&!t.horizontal?"rgb(255,255,255)":"rgb(0,0,0)"}function L(t){return t.horizontal&&t.left?"100%":"0%"}function C(t,e,r){t.on(".basic",null).on("mouseover.basic",function(t){t.interactionState.dragInProgress||(r.hover(this,t,e),t.interactionState.hovered=[this,t])}).on("mousemove.basic",function(t){t.interactionState.dragInProgress||(r.follow(this,t),t.interactionState.hovered=[this,t])}).on("mouseout.basic",function(t){t.interactionState.dragInProgress||(r.unhover(this,t,e),t.interactionState.hovered=!1)}).on("click.basic",function(t){t.interactionState.hovered&&(r.unhover(this,t,e),t.interactionState.hovered=!1),t.interactionState.dragInProgress||r.select(this,t,e)})}function P(t,e,r){var a=i.behavior.drag().origin(function(t){return t.node}).on("dragstart",function(i){if("fixed"!==i.arrangement&&(u.raiseToTop(this),i.interactionState.dragInProgress=i.node,p(i.node),i.interactionState.hovered&&(r.nodeEvents.unhover.apply(0,i.interactionState.hovered),i.interactionState.hovered=!1),"snap"===i.arrangement)){var a=i.traceId+"|"+Math.floor(i.node.originalX);i.forceLayouts[a]?i.forceLayouts[a].alpha(1):function(t,e,r){var i=r.sankey.nodes().filter(function(t){return t.originalX===r.node.originalX});r.forceLayouts[e]=c.forceSimulation(i).alphaDecay(0).force("collide",c.forceCollide().radius(function(t){return t.dy/2+r.nodePad/2}).strength(1).iterations(n.forceIterations)).force("constrain",function(t,e,r,i){return function(){for(var t=0,a=0;a0&&i.forceLayouts[e].alpha(0)}}(0,e,i,r)).stop()}(0,a,i),function(t,e,r,i){window.requestAnimationFrame(function a(){for(var o=0;o0&&window.requestAnimationFrame(a)})}(t,e,i,a)}}).on("drag",function(r){if("fixed"!==r.arrangement){var n=i.event.x,a=i.event.y;"snap"===r.arrangement?(r.node.x=n,r.node.y=a):("freeform"===r.arrangement&&(r.node.x=n),r.node.y=Math.max(r.node.dy/2,Math.min(r.size-r.node.dy/2,a))),p(r.node),"snap"!==r.arrangement&&(r.sankey.relayout(),x(t.filter(m(r)),e))}}).on("dragend",function(t){t.interactionState.dragInProgress=!1});t.on(".drag",null).call(a)}e.exports=function(t,e,r,i){var c=t.selectAll("."+n.cn.sankey).data(e.filter(function(t){return d(t).trace.visible}).map(function(t,e,r){for(var i,a=d(e).trace,o=a.domain,s=a.node,c=a.link,f=a.arrangement,h="h"===a.orientation,p=a.node.pad,m=a.node.thickness,g=a.node.line.color,y=a.node.line.width,b=a.link.line.color,x=a.link.line.width,_=a.valueformat,w=a.valuesuffix,M=a.textfont,k=t.width*(o.x[1]-o.x[0]),A=t.height*(o.y[1]-o.y[0]),T=s.label.map(function(t,e){return{pointNumber:e,label:t,color:u.isArray(s.color)?s.color[e]:s.color}}),E=c.value.map(function(t,e){return{pointNumber:e,label:c.label[e],color:u.isArray(c.color)?c.color[e]:c.color,source:c.source[e],target:c.target[e],value:t}}),S=l().size(h?[k,A]:[A,k]).nodeWidth(m).nodePadding(p).nodes(T).links(E).layout(n.sankeyIterations),L=S.nodes(),C=0;C5?t.node.label:""}).attr("text-anchor",function(t){return t.horizontal&&t.left?"end":"start"}),N.transition().ease(n.ease).duration(n.duration).attr("startOffset",L).style("fill",S)}},{"../../components/color":598,"../../components/drawing":623,"../../lib":724,"../../lib/gup":721,"./constants":1042,"@plotly/d3-sankey":41,d3:128,"d3-force":124,tinycolor2:526}],1047:[function(t,e,r){"use strict";var n=t("../../lib");e.exports=function(t,e){for(var r=0;r=0;i--){var a=t[i];if("scatter"===a.type&&a.xaxis===r.xaxis&&a.yaxis===r.yaxis){a.opacity=void 0;break}}}}}},{}],1052:[function(t,e,r){"use strict";var n=t("fast-isnumeric"),i=t("../../lib"),a=t("../../plots/plots"),o=t("../../components/colorscale"),s=t("../../components/colorbar/draw");e.exports=function(t,e){var r=e[0].trace,l=r.marker,c="cb"+r.uid;if(t._fullLayout._infolayer.selectAll("."+c).remove(),void 0!==l&&l.showscale){var u=l.color,f=l.cmin,h=l.cmax;n(f)||(f=i.aggNums(Math.min,null,u)),n(h)||(h=i.aggNums(Math.max,null,u));var d=e[0].t.cb=s(t,c),p=o.makeColorScaleFunc(o.extractScale(l.colorscale,f,h),{noNumericCheck:!0});d.fillcolor(p).filllevels({start:f,end:h,size:(h-f)/254}).options(l.colorbar)()}else a.autoMargin(t,c)}},{"../../components/colorbar/draw":602,"../../components/colorscale":613,"../../lib":724,"../../plots/plots":833,"fast-isnumeric":140}],1053:[function(t,e,r){"use strict";var n=t("../../components/colorscale/has_colorscale"),i=t("../../components/colorscale/calc"),a=t("./subtypes");e.exports=function(t){a.hasLines(t)&&n(t,"line")&&i(t,t.line.color,"line","c"),a.hasMarkers(t)&&(n(t,"marker")&&i(t,t.marker.color,"marker","c"),n(t,"marker.line")&&i(t,t.marker.line.color,"marker.line","c"))}},{"../../components/colorscale/calc":605,"../../components/colorscale/has_colorscale":612,"./subtypes":1070}],1054:[function(t,e,r){"use strict";e.exports={PTS_LINESONLY:20,minTolerance:.2,toleranceGrowth:10,maxScreensAway:20}},{}],1055:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("./attributes"),a=t("./constants"),o=t("./subtypes"),s=t("./xy_defaults"),l=t("./marker_defaults"),c=t("./line_defaults"),u=t("./line_shape_defaults"),f=t("./text_defaults"),h=t("./fillcolor_defaults"),d=t("../../components/errorbars/defaults");e.exports=function(t,e,r,p){function m(r,a){return n.coerce(t,e,i,r,a)}var v=s(t,e,p,m),g=vU!=(O=S[T][1])>=U&&(C=S[T-1][0],P=S[T][0],O-z&&(L=C+(P-C)*(U-z)/(O-z),N=Math.min(N,L),F=Math.max(F,L)));N=Math.max(N,0),F=Math.min(F,d._length);var V=s.defaultLine;return s.opacity(h.fillcolor)?V=h.fillcolor:s.opacity((h.line||{}).color)&&(V=h.line.color),n.extendFlat(t,{distance:c+10,x0:N,x1:F,y0:U,y1:U,color:V}),delete t.index,h.text&&!Array.isArray(h.text)?t.text=String(h.text):t.text=h.name,[t]}}}},{"../../components/color":598,"../../components/errorbars":629,"../../components/fx":640,"../../lib":724,"./fill_hover_text":1056,"./get_trace_color":1058}],1060:[function(t,e,r){"use strict";var n={},i=t("./subtypes");n.hasLines=i.hasLines,n.hasMarkers=i.hasMarkers,n.hasText=i.hasText,n.isBubble=i.isBubble,n.attributes=t("./attributes"),n.supplyDefaults=t("./defaults"),n.cleanData=t("./clean_data"),n.calc=t("./calc").calc,n.arraysToCalcdata=t("./arrays_to_calcdata"),n.plot=t("./plot"),n.colorbar=t("./colorbar"),n.style=t("./style").style,n.hoverPoints=t("./hover"),n.selectPoints=t("./select"),n.animatable=!0,n.moduleType="trace",n.name="scatter",n.basePlotModule=t("../../plots/cartesian"),n.categories=["cartesian","symbols","markerColorscale","errorBarsOK","showLegend","scatter-like"],n.meta={},e.exports=n},{"../../plots/cartesian":781,"./arrays_to_calcdata":1047,"./attributes":1048,"./calc":1049,"./clean_data":1051,"./colorbar":1052,"./defaults":1055,"./hover":1059,"./plot":1067,"./select":1068,"./style":1069,"./subtypes":1070}],1061:[function(t,e,r){"use strict";var n=t("../../components/colorscale/has_colorscale"),i=t("../../components/colorscale/defaults");e.exports=function(t,e,r,a,o,s){var l=(t.marker||{}).color;(o("line.color",r),n(t,"line"))?i(t,e,a,o,{prefix:"line.",cLetter:"c"}):o("line.color",!Array.isArray(l)&&l||r);o("line.width"),(s||{}).noDash||o("line.dash")}},{"../../components/colorscale/defaults":608,"../../components/colorscale/has_colorscale":612}],1062:[function(t,e,r){"use strict";var n=t("../../constants/numerical").BADNUM,i=t("../../lib"),a=i.segmentsIntersect,o=i.constrain,s=t("./constants");e.exports=function(t,e){var r,l,c,u,f,h,d,p,m,v,g,y,b,x,_,w,M=e.xaxis,k=e.yaxis,A=e.simplify,T=e.connectGaps,E=e.baseTolerance,S=e.shape,L="linear"===S,C=[],P=s.minTolerance,z=new Array(t.length),O=0;function D(e){var r=t[e],i=M.c2p(r.x),a=k.c2p(r.y);return i===n||a===n?r.intoCenter||!1:[i,a]}function I(t){var e=t[0]/M._length,r=t[1]/k._length;return(1+s.toleranceGrowth*Math.max(0,-e,e-1,-r,r-1))*E}function R(t,e){var r=t[0]-e[0],n=t[1]-e[1];return Math.sqrt(r*r+n*n)}A||(E=P=-1);var N,F,j,B,U,V,q,H=s.maxScreensAway,G=-M._length*H,Y=M._length*(1+H),W=-k._length*H,X=k._length*(1+H),Z=[[G,W,Y,W],[Y,W,Y,X],[Y,X,G,X],[G,X,G,W]];function J(t){if(t[0]Y||t[1]X)return[o(t[0],G,Y),o(t[1],W,X)]}function K(t,e){return t[0]===e[0]&&(t[0]===G||t[0]===Y)||(t[1]===e[1]&&(t[1]===W||t[1]===X)||void 0)}function Q(t,e,r){return function(n,a){var o=J(n),s=J(a),l=[];if(o&&s&&K(o,s))return l;o&&l.push(o),s&&l.push(s);var c=2*i.constrain((n[t]+a[t])/2,e,r)-((o||n)[t]+(s||a)[t]);c&&((o&&s?c>0==o[t]>s[t]?o:s:o||s)[t]+=c);return l}}function $(t){var e=t[0],r=t[1],n=e===z[O-1][0],i=r===z[O-1][1];if(!n||!i)if(O>1){var a=e===z[O-2][0],o=r===z[O-2][1];n&&(e===G||e===Y)&&a?o?O--:z[O-1]=t:i&&(r===W||r===X)&&o?a?O--:z[O-1]=t:z[O++]=t}else z[O++]=t}function tt(t){z[O-1][0]!==t[0]&&z[O-1][1]!==t[1]&&$([j,B]),$(t),U=null,j=B=0}function et(t){if(N=t[0]Y?Y:0,F=t[1]X?X:0,N||F){if(O)if(U){var e=q(U,t);e.length>1&&(tt(e[0]),z[O++]=e[1])}else V=q(z[O-1],t)[0],z[O++]=V;else z[O++]=[N||t[0],F||t[1]];var r=z[O-1];N&&F&&(r[0]!==N||r[1]!==F)?(U&&(j!==N&&B!==F?$(j&&B?(n=U,a=(i=t)[0]-n[0],o=(i[1]-n[1])/a,(n[1]*i[0]-i[1]*n[0])/a>0?[o>0?G:Y,X]:[o>0?Y:G,W]):[j||N,B||F]):j&&B&&$([j,B])),$([N,F])):j-N&&B-F&&$([N||j,F||B]),U=t,j=N,B=F}else U&&tt(q(U,t)[0]),z[O++]=t;var n,i,a,o}for("linear"===S||"spline"===S?q=function(t,e){for(var r=[],n=0,i=0;i<4;i++){var o=Z[i],s=a(t[0],t[1],e[0],e[1],o[0],o[1],o[2],o[3]);s&&(!n||Math.abs(s.x-r[0][0])>1||Math.abs(s.y-r[0][1])>1)&&(s=[s.x,s.y],n&&R(s,t)I(h))break;c=h,(b=m[0]*p[0]+m[1]*p[1])>g?(g=b,u=h,d=!1):b=t.length||!h)break;et(h),l=h}}else et(u)}U&&$([j||U[0],B||U[1]]),C.push(z.slice(0,O))}return C}},{"../../constants/numerical":702,"../../lib":724,"./constants":1054}],1063:[function(t,e,r){"use strict";e.exports=function(t,e,r){"spline"===r("line.shape")&&r("line.smoothing")}},{}],1064:[function(t,e,r){"use strict";e.exports=function(t,e,r){var n,i,a=null;for(i=0;i0?Math.max(e,i):0}}},{"fast-isnumeric":140}],1066:[function(t,e,r){"use strict";var n=t("../../components/color"),i=t("../../components/colorscale/has_colorscale"),a=t("../../components/colorscale/defaults"),o=t("./subtypes");e.exports=function(t,e,r,s,l,c){var u=o.isBubble(t),f=(t.line||{}).color;(c=c||{},f&&(r=f),l("marker.symbol"),l("marker.opacity",u?.7:1),l("marker.size"),l("marker.color",r),i(t,"marker")&&a(t,e,s,l,{prefix:"marker.",cLetter:"c"}),c.noSelect||(l("selected.marker.color"),l("unselected.marker.color"),l("selected.marker.size"),l("unselected.marker.size")),c.noLine||(l("marker.line.color",f&&!Array.isArray(f)&&e.marker.color!==f?f:u?n.background:n.defaultLine),i(t,"marker.line")&&a(t,e,s,l,{prefix:"marker.line.",cLetter:"c"}),l("marker.line.width",u?1:0)),u&&(l("marker.sizeref"),l("marker.sizemin"),l("marker.sizemode")),c.gradient)&&("none"!==l("marker.gradient.type")&&l("marker.gradient.color"))}},{"../../components/color":598,"../../components/colorscale/defaults":608,"../../components/colorscale/has_colorscale":612,"./subtypes":1070}],1067:[function(t,e,r){"use strict";var n=t("d3"),i=t("../../lib"),a=t("../../components/drawing"),o=t("../../components/errorbars"),s=t("./subtypes"),l=t("./line_points"),c=t("./link_traces"),u=t("../../lib/polygon").tester;function f(t,e,r,c,f,h,d){var p,m;!function(t,e,r,a,o){var l=r.xaxis,c=r.yaxis,u=n.extent(i.simpleMap(l.range,l.r2c)),f=n.extent(i.simpleMap(c.range,c.r2c)),h=a[0].trace;if(!s.hasMarkers(h))return;var d=h.marker.maxdisplayed;if(0===d)return;var p=a.filter(function(t){return t.x>=u[0]&&t.x<=u[1]&&t.y>=f[0]&&t.y<=f[1]}),m=Math.ceil(p.length/d),v=0;o.forEach(function(t,r){var n=t[0].trace;s.hasMarkers(n)&&n.marker.maxdisplayed>0&&r0;function g(t){return v?t.transition():t}var y=r.xaxis,b=r.yaxis,x=c[0].trace,_=x.line,w=n.select(h);if(w.call(o.plot,r,d),!0===x.visible){var M,k;g(w).style("opacity",x.opacity);var A=x.fill.charAt(x.fill.length-1);"x"!==A&&"y"!==A&&(A=""),c[0].node3=w;var T="",E=[],S=x._prevtrace;S&&(T=S._prevRevpath||"",k=S._nextFill,E=S._polygons);var L,C,P,z,O,D,I,R,N,F="",j="",B=[],U=i.noop;if(M=x._ownFill,s.hasLines(x)||"none"!==x.fill){for(k&&k.datum(c),-1!==["hv","vh","hvh","vhv"].indexOf(_.shape)?(P=a.steps(_.shape),z=a.steps(_.shape.split("").reverse().join(""))):P=z="spline"===_.shape?function(t){var e=t[t.length-1];return t.length>1&&t[0][0]===e[0]&&t[0][1]===e[1]?a.smoothclosed(t.slice(1),_.smoothing):a.smoothopen(t,_.smoothing)}:function(t){return"M"+t.join("L")},O=function(t){return z(t.reverse())},B=l(c,{xaxis:y,yaxis:b,connectGaps:x.connectgaps,baseTolerance:Math.max(_.width||1,3)/4,shape:_.shape,simplify:_.simplify}),N=x._polygons=new Array(B.length),m=0;m1){var r=n.select(this);if(r.datum(c),t)g(r.style("opacity",0).attr("d",L).call(a.lineGroupStyle)).style("opacity",1);else{var i=g(r);i.attr("d",L),a.singleLineStyle(c,i)}}}}}var V=w.selectAll(".js-line").data(B);g(V.exit()).style("opacity",0).remove(),V.each(U(!1)),V.enter().append("path").classed("js-line",!0).style("vector-effect","non-scaling-stroke").call(a.lineGroupStyle).each(U(!0)),a.setClipUrl(V,r.layerClipId),B.length?(M?D&&R&&(A?("y"===A?D[1]=R[1]=b.c2p(0,!0):"x"===A&&(D[0]=R[0]=y.c2p(0,!0)),g(M).attr("d","M"+R+"L"+D+"L"+F.substr(1)).call(a.singleFillStyle)):g(M).attr("d",F+"Z").call(a.singleFillStyle)):k&&("tonext"===x.fill.substr(0,6)&&F&&T?("tonext"===x.fill?g(k).attr("d",F+"Z"+T+"Z").call(a.singleFillStyle):g(k).attr("d",F+"L"+T.substr(1)+"Z").call(a.singleFillStyle),x._polygons=x._polygons.concat(E)):(H(k),x._polygons=null)),x._prevRevpath=j,x._prevPolygons=N):(M?H(M):k&&H(k),x._polygons=x._prevRevpath=x._prevPolygons=null);var q=w.selectAll(".points");p=q.data([c]),q.each(Z),p.enter().append("g").classed("points",!0).each(Z),p.exit().remove(),p.each(function(t){var e=!1===t[0].trace.cliponaxis;a.setClipUrl(n.select(this),e?null:r.layerClipId)})}function H(t){g(t).attr("d","M0,0Z")}function G(t){return t.filter(function(t){return t.vis})}function Y(t){return t.id}function W(t){if(t.ids)return Y}function X(){return!1}function Z(e){var o,l=e[0].trace,c=n.select(this),u=s.hasMarkers(l),f=s.hasText(l),h=W(l),d=X,p=X;u&&(d=l.marker.maxdisplayed||l._needsCull?G:i.identity),f&&(p=l.marker.maxdisplayed||l._needsCull?G:i.identity);var m=(o=c.selectAll("path.point").data(d,h)).enter().append("path").classed("point",!0);v&&m.call(a.pointStyle,l,t).call(a.translatePoints,y,b).style("opacity",0).transition().style("opacity",1);var x=u&&a.tryColorscale(l.marker,""),_=u&&a.tryColorscale(l.marker,"line");o.order(),o.each(function(e){var i=n.select(this),o=g(i);a.translatePoint(e,o,y,b)?(a.singlePointStyle(e,o,l,x,_,t),r.layerClipId&&a.hideOutsideRangePoint(e,o,y,b,l.xcalendar,l.ycalendar),l.customdata&&i.classed("plotly-customdata",null!==e.data&&void 0!==e.data)):o.remove()}),v?o.exit().transition().style("opacity",0).remove():o.exit().remove(),(o=c.selectAll("g").data(p,h)).enter().append("g").classed("textpoint",!0).append("text"),o.order(),o.each(function(t){var e=n.select(this),i=g(e.select("text"));a.translatePoint(t,i,y,b)?r.layerClipId&&a.hideOutsideRangePoint(t,e,y,b,l.xcalendar,l.ycalendar):e.remove()}),o.selectAll("text").call(a.textPointStyle,l,t).each(function(t){var e=y.c2p(t.x),r=b.c2p(t.y);n.select(this).selectAll("tspan.line").each(function(){g(n.select(this)).attr({x:e,y:r})})}),o.exit().remove()}}e.exports=function(t,e,r,i,o){var s,l,u,h,d=e.plot.select("g.scatterlayer"),p=!i,m=!!i&&i.duration>0;for((u=d.selectAll("g.trace").data(r,function(t){return t[0].trace.uid})).enter().append("g").attr("class",function(t){return"trace scatter trace"+t[0].trace.uid}).style("stroke-miterlimit",2),c(t,e,r),function(t,e,r){var i;e.selectAll("g.trace").each(function(t){var e=n.select(this);if((i=t[0].trace)._nexttrace){if(i._nextFill=e.select(".js-fill.js-tonext"),!i._nextFill.size()){var o=":first-child";e.select(".js-fill.js-tozero").size()&&(o+=" + *"),i._nextFill=e.insert("path",o).attr("class","js-fill js-tonext")}}else e.selectAll(".js-fill.js-tonext").remove(),i._nextFill=null;i.fill&&("tozero"===i.fill.substr(0,6)||"toself"===i.fill||"to"===i.fill.substr(0,2)&&!i._prevtrace)?(i._ownFill=e.select(".js-fill.js-tozero"),i._ownFill.size()||(i._ownFill=e.insert("path",":first-child").attr("class","js-fill js-tozero"))):(e.selectAll(".js-fill.js-tozero").remove(),i._ownFill=null),e.selectAll(".js-fill").call(a.setClipUrl,r.layerClipId)})}(0,d,e),s=0,l={};sl[e[0].trace.uid]?1:-1}),m)?(o&&(h=o()),n.transition().duration(i.duration).ease(i.easing).each("end",function(){h&&h()}).each("interrupt",function(){h&&h()}).each(function(){d.selectAll("g.trace").each(function(n,a){f(t,a,e,n,r,this,i)})})):d.selectAll("g.trace").each(function(n,a){f(t,a,e,n,r,this,i)});p&&u.exit().remove(),d.selectAll("path:not([d])").remove()}},{"../../components/drawing":623,"../../components/errorbars":629,"../../lib":724,"../../lib/polygon":736,"./line_points":1062,"./link_traces":1064,"./subtypes":1070,d3:128}],1068:[function(t,e,r){"use strict";var n=t("./subtypes");e.exports=function(t,e){var r,i,a,o,s=t.cd,l=t.xaxis,c=t.yaxis,u=[],f=s[0].trace;if(!n.hasMarkers(f)&&!n.hasText(f))return[];if(!1===e)for(r=0;r=0&&(d[1]+=1),h.indexOf("top")>=0&&(d[1]-=1),h.indexOf("left")>=0&&(d[0]-=1),h.indexOf("right")>=0&&(d[0]+=1),d)),r.textColor=u(e.textfont,1,L),r.textSize=b(e.textfont.size,L,l.identity,12),r.textFont=e.textfont.family,r.textAngle=0);var D=["x","y","z"];for(r.project=[!1,!1,!1],r.projectScale=[1,1,1],r.projectOpacity=[1,1,1],n=0;n<3;++n){var I=e.projection[D[n]];(r.project[n]=I.show)&&(r.projectOpacity[n]=I.opacity,r.projectScale[n]=I.scale)}r.errorBounds=p(e,x);var R=function(t){for(var e=[0,0,0],r=[[0,0,0],[0,0,0],[0,0,0]],n=[0,0,0],i=0;i<3;i++){var a=t[i];a&&!1!==a.copy_zstyle&&(a=t[2]),a&&(e[i]=a.width/2,r[i]=c(a.color),n=a.thickness)}return{capSize:e,color:r,lineWidth:n}}([e.error_x,e.error_y,e.error_z]);return r.errorColor=R.color,r.errorLineWidth=R.lineWidth,r.errorCapSize=R.capSize,r.delaunayAxis=e.surfaceaxis,r.delaunayColor=c(e.surfacecolor),r}function _(t){if(Array.isArray(t)){var e=t[0];return Array.isArray(e)&&(t=e),"rgb("+t.slice(0,3).map(function(t){return Math.round(255*t)})+")"}return null}v.handlePick=function(t){if(t.object&&(t.object===this.linePlot||t.object===this.delaunayMesh||t.object===this.textMarkers||t.object===this.scatterPlot)){t.object.highlight&&t.object.highlight(null),this.scatterPlot&&(t.object=this.scatterPlot,this.scatterPlot.highlight(t.data)),this.textLabels?void 0!==this.textLabels[t.data.index]?t.textLabel=this.textLabels[t.data.index]:t.textLabel=this.textLabels:t.textLabel="";var e=t.index=t.data.index;return t.traceCoordinate=[this.data.x[e],this.data.y[e],this.data.z[e]],!0}},v.update=function(t){var e,r,l,c,u=this.scene.glplot.gl,f=h.solid;this.data=t;var d=x(this.scene,t);"mode"in d&&(this.mode=d.mode),"lineDashes"in d&&d.lineDashes in h&&(f=h[d.lineDashes]),this.color=_(d.scatterColor)||_(d.lineColor),this.dataPoints=d.position,e={gl:u,position:d.position,color:d.lineColor,lineWidth:d.lineWidth||1,dashes:f[0],dashScale:f[1],opacity:t.opacity,connectGaps:t.connectgaps},-1!==this.mode.indexOf("lines")?this.linePlot?this.linePlot.update(e):(this.linePlot=n(e),this.linePlot._trace=this,this.scene.glplot.add(this.linePlot)):this.linePlot&&(this.scene.glplot.remove(this.linePlot),this.linePlot.dispose(),this.linePlot=null);var p=t.opacity;if(t.marker&&t.marker.opacity&&(p*=t.marker.opacity),r={gl:u,position:d.position,color:d.scatterColor,size:d.scatterSize,glyph:d.scatterMarker,opacity:p,orthographic:!0,lineWidth:d.scatterLineWidth,lineColor:d.scatterLineColor,project:d.project,projectScale:d.projectScale,projectOpacity:d.projectOpacity},-1!==this.mode.indexOf("markers")?this.scatterPlot?this.scatterPlot.update(r):(this.scatterPlot=i(r),this.scatterPlot._trace=this,this.scatterPlot.highlightScale=1,this.scene.glplot.add(this.scatterPlot)):this.scatterPlot&&(this.scene.glplot.remove(this.scatterPlot),this.scatterPlot.dispose(),this.scatterPlot=null),c={gl:u,position:d.position,glyph:d.text,color:d.textColor,size:d.textSize,angle:d.textAngle,alignment:d.textOffset,font:d.textFont,orthographic:!0,lineWidth:0,project:!1,opacity:t.opacity},this.textLabels=t.hovertext||t.text,-1!==this.mode.indexOf("text")?this.textMarkers?this.textMarkers.update(c):(this.textMarkers=i(c),this.textMarkers._trace=this,this.textMarkers.highlightScale=1,this.scene.glplot.add(this.textMarkers)):this.textMarkers&&(this.scene.glplot.remove(this.textMarkers),this.textMarkers.dispose(),this.textMarkers=null),l={gl:u,position:d.position,color:d.errorColor,error:d.errorBounds,lineWidth:d.errorLineWidth,capSize:d.errorCapSize,opacity:t.opacity},this.errorBars?d.errorBounds?this.errorBars.update(l):(this.scene.glplot.remove(this.errorBars),this.errorBars.dispose(),this.errorBars=null):d.errorBounds&&(this.errorBars=a(l),this.errorBars._trace=this,this.scene.glplot.add(this.errorBars)),d.delaunayAxis>=0){var m=function(t,e,r){var n,i=(r+1)%3,a=(r+2)%3,o=[],l=[];for(n=0;n=0&&h("surfacecolor",d||p);for(var m=["x","y","z"],v=0;v<3;++v){var g="projection."+m[v];h(g+".show")&&(h(g+".opacity"),h(g+".scale"))}c(t,e,r,{axis:"z"}),c(t,e,r,{axis:"y",inherit:"z"}),c(t,e,r,{axis:"x",inherit:"z"})}else e.visible=!1}},{"../../components/errorbars/defaults":628,"../../lib":724,"../../registry":854,"../scatter/line_defaults":1061,"../scatter/marker_defaults":1066,"../scatter/subtypes":1070,"../scatter/text_defaults":1071,"./attributes":1073}],1078:[function(t,e,r){"use strict";var n={};n.plot=t("./convert"),n.attributes=t("./attributes"),n.markerSymbols=t("../../constants/gl3d_markers"),n.supplyDefaults=t("./defaults"),n.colorbar=t("../scatter/colorbar"),n.calc=t("./calc"),n.moduleType="trace",n.name="scatter3d",n.basePlotModule=t("../../plots/gl3d"),n.categories=["gl3d","symbols","markerColorscale","showLegend"],n.meta={},e.exports=n},{"../../constants/gl3d_markers":700,"../../plots/gl3d":813,"../scatter/colorbar":1052,"./attributes":1073,"./calc":1074,"./convert":1076,"./defaults":1077}],1079:[function(t,e,r){"use strict";var n=t("../scatter/attributes"),i=t("../../plots/attributes"),a=t("../../components/colorscale/color_attributes"),o=t("../../components/colorbar/attributes"),s=t("../../lib/extend").extendFlat,l=n.marker,c=n.line,u=l.line;e.exports={carpet:{valType:"string",editType:"calc"},a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},mode:s({},n.mode,{dflt:"markers"}),text:s({},n.text,{}),line:{color:c.color,width:c.width,dash:c.dash,shape:s({},c.shape,{values:["linear","spline"]}),smoothing:c.smoothing,editType:"calc"},connectgaps:n.connectgaps,fill:s({},n.fill,{values:["none","toself","tonext"]}),fillcolor:n.fillcolor,marker:s({symbol:l.symbol,opacity:l.opacity,maxdisplayed:l.maxdisplayed,size:l.size,sizeref:l.sizeref,sizemin:l.sizemin,sizemode:l.sizemode,line:s({width:u.width,editType:"calc"},a("marker".line)),gradient:l.gradient,editType:"calc"},a("marker"),{showscale:l.showscale,colorbar:o}),textfont:n.textfont,textposition:n.textposition,selected:n.selected,unselected:n.unselected,hoverinfo:s({},i.hoverinfo,{flags:["a","b","text","name"]}),hoveron:n.hoveron}},{"../../components/colorbar/attributes":599,"../../components/colorscale/color_attributes":606,"../../lib/extend":713,"../../plots/attributes":768,"../scatter/attributes":1048}],1080:[function(t,e,r){"use strict";var n=t("fast-isnumeric"),i=t("../scatter/colorscale_calc"),a=t("../scatter/arrays_to_calcdata"),o=t("../scatter/calc_selection"),s=t("../scatter/calc").calcMarkerSize,l=t("../carpet/lookup_carpetid");e.exports=function(t,e){var r=e.carpetTrace=l(t,e);if(r&&r.visible&&"legendonly"!==r.visible){var c;e.xaxis=r.xaxis,e.yaxis=r.yaxis;var u,f,h=e.a.length,d=new Array(h),p=!1;for(c=0;c"),a}function w(t,e){var r;r=t.labelprefix&&t.labelprefix.length>0?t.labelprefix.replace(/ = $/,""):t._hovertitle,m.push(r+": "+e.toFixed(3)+t.labelsuffix)}}},{"../scatter/hover":1059}],1084:[function(t,e,r){"use strict";var n={};n.attributes=t("./attributes"),n.supplyDefaults=t("./defaults"),n.colorbar=t("../scatter/colorbar"),n.calc=t("./calc"),n.plot=t("./plot"),n.style=t("../scatter/style").style,n.hoverPoints=t("./hover"),n.selectPoints=t("../scatter/select"),n.eventData=t("./event_data"),n.moduleType="trace",n.name="scattercarpet",n.basePlotModule=t("../../plots/cartesian"),n.categories=["carpet","symbols","markerColorscale","showLegend","carpetDependent"],n.meta={},e.exports=n},{"../../plots/cartesian":781,"../scatter/colorbar":1052,"../scatter/select":1068,"../scatter/style":1069,"./attributes":1079,"./calc":1080,"./defaults":1081,"./event_data":1082,"./hover":1083,"./plot":1085}],1085:[function(t,e,r){"use strict";var n=t("../scatter/plot"),i=t("../../plots/cartesian/axes"),a=t("../../components/drawing");e.exports=function(t,e,r){var o,s,l,c=r[0][0].carpet,u={xaxis:i.getFromId(t,c.xaxis||"x"),yaxis:i.getFromId(t,c.yaxis||"y"),plot:e.plot};for(n(t,u,r),o=0;o")}(u,v,d.mockAxis,c[0].t.labels),[t]}}},{"../../components/fx":640,"../../constants/numerical":702,"../../plots/cartesian/axes":770,"../scatter/fill_hover_text":1056,"../scatter/get_trace_color":1058,"./attributes":1086}],1091:[function(t,e,r){"use strict";var n={};n.attributes=t("./attributes"),n.supplyDefaults=t("./defaults"),n.colorbar=t("../scatter/colorbar"),n.calc=t("./calc"),n.plot=t("./plot"),n.style=t("./style"),n.hoverPoints=t("./hover"),n.eventData=t("./event_data"),n.selectPoints=t("./select"),n.moduleType="trace",n.name="scattergeo",n.basePlotModule=t("../../plots/geo"),n.categories=["geo","symbols","markerColorscale","showLegend","scatter-like"],n.meta={},e.exports=n},{"../../plots/geo":801,"../scatter/colorbar":1052,"./attributes":1086,"./calc":1087,"./defaults":1088,"./event_data":1089,"./hover":1090,"./plot":1092,"./select":1093,"./style":1094}],1092:[function(t,e,r){"use strict";var n=t("d3"),i=t("../../lib"),a=t("../../constants/numerical").BADNUM,o=t("../../lib/topojson_utils").getTopojsonFeatures,s=t("../../lib/geo_location_utils").locationToFeature,l=t("../../lib/geojson_utils"),c=t("../scatter/subtypes"),u=t("./style");function f(t,e){var r=t[0].trace;if(Array.isArray(r.locations))for(var n=o(r,e),i=r.locationmode,l=0;l1,c=r.error_x&&!0===r.error_x.visible,f=r.error_y&&!0===r.error_y.visible,h=c||f,v=u.hasMarkers(r),g=!!r.fill&&"none"!==r.fill);var I=h?a.calcFromTrace(r,E):null;if(c){(_={}).positions=n;var N=new Float64Array(4*S);if("log"===O.type)for(i=0;iz?"rect":v?"rect":"round",B&&r.connectgaps){var U=T[0],V=T[1];for(i=0;iv?p.slice(0,v):p,y="log"===h.type||m.length>v?m.slice(0,v):m,b="log"===u.type?u.d2l:parseFloat,x="log"===h.type?h.d2l:parseFloat;for(r=new Array(2*v),n=0;ni&&(k[0]=i),k[1]a&&(T[0]=a),T[1]=0?Math.floor((e+180)/360):Math.ceil((e-180)/360)),h=e-f;if(n.getClosest(s,function(t){var e=t.lonlat;if(e[0]===o)return 1/0;var n=Math.abs(c.c2p(e)-c.c2p([h,e[1]])),i=Math.abs(u.c2p(e)-u.c2p([e[0],r])),a=Math.max(3,t.mrc||0);return Math.max(Math.sqrt(n*n+i*i)-a,1-3/a)},t),!1!==t.index){var d=s[t.index],p=d.lonlat,m=[p[0]+f,p[1]],v=c.c2p(m),g=u.c2p(m),y=d.mrc||1;return t.x0=v-y,t.x1=v+y,t.y0=g-y,t.y1=g+y,t.color=i(l,d),t.extraText=function(t,e,r){var n=(e.hi||t.hoverinfo).split("+"),i=-1!==n.indexOf("all"),o=-1!==n.indexOf("lon"),s=-1!==n.indexOf("lat"),l=e.lonlat,c=[];function u(t){return t+"\xb0"}i||o&&s?c.push("("+u(l[0])+", "+u(l[1])+")"):o?c.push(r.lon+u(l[0])):s&&c.push(r.lat+u(l[1]));(i||-1!==n.indexOf("text"))&&a(e,t,c);return c.join("
")}(l,d,s[0].t.labels),[t]}}},{"../../components/fx":640,"../../constants/numerical":702,"../scatter/fill_hover_text":1056,"../scatter/get_trace_color":1058}],1103:[function(t,e,r){"use strict";var n={};n.attributes=t("./attributes"),n.supplyDefaults=t("./defaults"),n.colorbar=t("../scatter/colorbar"),n.calc=t("../scattergeo/calc"),n.plot=t("./plot"),n.hoverPoints=t("./hover"),n.eventData=t("./event_data"),n.selectPoints=t("./select"),n.style=function(t,e){e&&e[0].trace._glTrace.update(e)},n.moduleType="trace",n.name="scattermapbox",n.basePlotModule=t("../../plots/mapbox"),n.categories=["mapbox","gl","symbols","markerColorscale","showLegend","scatterlike"],n.meta={},e.exports=n},{"../../plots/mapbox":827,"../scatter/colorbar":1052,"../scattergeo/calc":1087,"./attributes":1098,"./defaults":1100,"./event_data":1101,"./hover":1102,"./plot":1104,"./select":1105}],1104:[function(t,e,r){"use strict";var n=t("./convert");function i(t,e){this.mapbox=t,this.map=t.map,this.uid=e,this.idSourceFill=e+"-source-fill",this.idSourceLine=e+"-source-line",this.idSourceCircle=e+"-source-circle",this.idSourceSymbol=e+"-source-symbol",this.idLayerFill=e+"-layer-fill",this.idLayerLine=e+"-layer-line",this.idLayerCircle=e+"-layer-circle",this.idLayerSymbol=e+"-layer-symbol",this.mapbox.initSource(this.idSourceFill),this.mapbox.initSource(this.idSourceLine),this.mapbox.initSource(this.idSourceCircle),this.mapbox.initSource(this.idSourceSymbol),this.map.addLayer({id:this.idLayerFill,source:this.idSourceFill,type:"fill"}),this.map.addLayer({id:this.idLayerLine,source:this.idSourceLine,type:"line"}),this.map.addLayer({id:this.idLayerCircle,source:this.idSourceCircle,type:"circle"}),this.map.addLayer({id:this.idLayerSymbol,source:this.idSourceSymbol,type:"symbol"})}var a=i.prototype;function o(t){return"visible"===t.layout.visibility}a.update=function(t){var e=this.mapbox,r=n(t);e.setOptions(this.idLayerFill,"setLayoutProperty",r.fill.layout),e.setOptions(this.idLayerLine,"setLayoutProperty",r.line.layout),e.setOptions(this.idLayerCircle,"setLayoutProperty",r.circle.layout),e.setOptions(this.idLayerSymbol,"setLayoutProperty",r.symbol.layout),o(r.fill)&&(e.setSourceData(this.idSourceFill,r.fill.geojson),e.setOptions(this.idLayerFill,"setPaintProperty",r.fill.paint)),o(r.line)&&(e.setSourceData(this.idSourceLine,r.line.geojson),e.setOptions(this.idLayerLine,"setPaintProperty",r.line.paint)),o(r.circle)&&(e.setSourceData(this.idSourceCircle,r.circle.geojson),e.setOptions(this.idLayerCircle,"setPaintProperty",r.circle.paint)),o(r.symbol)&&(e.setSourceData(this.idSourceSymbol,r.symbol.geojson),e.setOptions(this.idLayerSymbol,"setPaintProperty",r.symbol.paint)),t[0].trace._glTrace=this},a.dispose=function(){var t=this.map;t.removeLayer(this.idLayerFill),t.removeLayer(this.idLayerLine),t.removeLayer(this.idLayerCircle),t.removeLayer(this.idLayerSymbol),t.removeSource(this.idSourceFill),t.removeSource(this.idSourceLine),t.removeSource(this.idSourceCircle),t.removeSource(this.idSourceSymbol)},e.exports=function(t,e){var r=new i(t,e[0].trace.uid);return r.update(e),r}},{"./convert":1099}],1105:[function(t,e,r){"use strict";var n=t("../scatter/subtypes");e.exports=function(t,e){var r,i,a,o,s,l=t.cd,c=t.xaxis,u=t.yaxis,f=[],h=l[0].trace;if(!n.hasMarkers(h))return[];if(!1===e)for(s=0;s")}e.exports={hoverPoints:function(t,e,r,i){var a=n(t,e,r,i);if(a&&!1!==a[0].index){var s=a[0];if(void 0===s.index)return a;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtWithinSector(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,s.extraText=o(c,u,l),a}},makeHoverPointText:o}},{"../../lib":724,"../../plots/cartesian/axes":770,"../scatter/hover":1059}],1110:[function(t,e,r){"use strict";e.exports={moduleType:"trace",name:"scatterpolar",basePlotModule:t("../../plots/polar"),categories:["polar","symbols","markerColorscale","showLegend","scatter-like"],attributes:t("./attributes"),supplyDefaults:t("./defaults"),calc:t("./calc"),plot:t("./plot"),style:t("../scatter/style").style,hoverPoints:t("./hover").hoverPoints,selectPoints:t("../scatter/select"),meta:{}}},{"../../plots/polar":836,"../scatter/select":1068,"../scatter/style":1069,"./attributes":1106,"./calc":1107,"./defaults":1108,"./hover":1109,"./plot":1111}],1111:[function(t,e,r){"use strict";var n=t("../scatter/plot"),i=t("../../constants/numerical").BADNUM;e.exports=function(t,e,r){var a,o,s,l={xaxis:e.xaxis,yaxis:e.yaxis,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.circle:null},c=e.radialAxis,u=c.range;for(s=u[0]>u[1]?function(t){return t<=0}:function(t){return t>=0},a=0;a=0?(m=o.c2r(p)-l[0],A=v,g=s.c2rad(A,b.thetaunit),S[d]=E[2*d]=m*Math.cos(g),L[d]=E[2*d+1]=m*Math.sin(g)):S[d]=L[d]=E[2*d]=E[2*d+1]=NaN;var C=a.sceneOptions(t,e,b,E);C.fill&&!u.fill2d&&(u.fill2d=!0),C.marker&&!u.scatter2d&&(u.scatter2d=!0),C.line&&!u.line2d&&(u.line2d=!0),!C.errorX&&!C.errorY||u.error2d||(u.error2d=!0),c.hasMarkers(b)&&(C.selected.positions=C.unselected.positions=C.marker.positions),u.lineOptions.push(C.line),u.errorXOptions.push(C.errorX),u.errorYOptions.push(C.errorY),u.fillOptions.push(C.fill),u.markerOptions.push(C.marker),u.selectedOptions.push(C.selected),u.unselectedOptions.push(C.unselected),u.count=r.length,x.scene=u,x.index=h,x.x=S,x.y=L,x.rawx=S,x.rawy=L,x.r=_,x.theta=w,x.positions=E,x.count=T,x.tree=n(E,512)}}),a.plot(t,e,r)},hoverPoints:function(t,e,r,n){var i=t.cd[0].t,o=i.r,s=i.theta,c=a.hoverPoints(t,e,r,n);if(c&&!1!==c[0].index){var u=c[0];if(void 0===u.index)return c;var f=t.subplot,h=f.angularAxis,d=u.cd[u.index],p=u.trace;if(d.r=o[u.index],d.theta=s[u.index],d.rad=h.c2rad(d.theta,p.thetaunit),f.isPtWithinSector(d))return u.xLabelVal=void 0,u.yLabelVal=void 0,u.extraText=l(d,p,f),c}},style:a.style,selectPoints:a.selectPoints,meta:{}}},{"../../plots/cartesian/axes":770,"../../plots/polar":836,"../scatter/colorscale_calc":1053,"../scatter/subtypes":1070,"../scattergl":1097,"../scatterpolar/hover":1109,"./attributes":1112,"./defaults":1113,"fast-isnumeric":140,kdgrass:272}],1115:[function(t,e,r){"use strict";var n=t("../scatter/attributes"),i=t("../../plots/attributes"),a=t("../../components/colorscale/color_attributes"),o=t("../../components/colorbar/attributes"),s=t("../../components/drawing/attributes").dash,l=t("../../lib/extend").extendFlat,c=n.marker,u=n.line,f=c.line;e.exports={a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},c:{valType:"data_array",editType:"calc"},sum:{valType:"number",dflt:0,min:0,editType:"calc"},mode:l({},n.mode,{dflt:"markers"}),text:l({},n.text,{}),hovertext:l({},n.hovertext,{}),line:{color:u.color,width:u.width,dash:s,shape:l({},u.shape,{values:["linear","spline"]}),smoothing:u.smoothing,editType:"calc"},connectgaps:n.connectgaps,cliponaxis:n.cliponaxis,fill:l({},n.fill,{values:["none","toself","tonext"]}),fillcolor:n.fillcolor,marker:l({symbol:c.symbol,opacity:c.opacity,maxdisplayed:c.maxdisplayed,size:c.size,sizeref:c.sizeref,sizemin:c.sizemin,sizemode:c.sizemode,line:l({width:f.width,editType:"calc"},a("marker.line")),gradient:c.gradient,editType:"calc"},a("marker"),{showscale:c.showscale,colorbar:o}),textfont:n.textfont,textposition:n.textposition,selected:n.selected,unselected:n.unselected,hoverinfo:l({},i.hoverinfo,{flags:["a","b","c","text","name"]}),hoveron:n.hoveron}},{"../../components/colorbar/attributes":599,"../../components/colorscale/color_attributes":606,"../../components/drawing/attributes":622,"../../lib/extend":713,"../../plots/attributes":768,"../scatter/attributes":1048}],1116:[function(t,e,r){"use strict";var n=t("fast-isnumeric"),i=t("../scatter/colorscale_calc"),a=t("../scatter/arrays_to_calcdata"),o=t("../scatter/calc_selection"),s=t("../scatter/calc").calcMarkerSize,l=["a","b","c"],c={a:["b","c"],b:["a","c"],c:["a","b"]};e.exports=function(t,e){var r,u,f,h,d,p,m=t._fullLayout[e.subplot].sum,v=e.sum||m,g={a:e.a,b:e.b,c:e.c};for(r=0;r"),o}function g(t,e){v.push(t._hovertitle+": "+i.tickText(t,e,"hover").text)}}},{"../../plots/cartesian/axes":770,"../scatter/hover":1059}],1120:[function(t,e,r){"use strict";var n={};n.attributes=t("./attributes"),n.supplyDefaults=t("./defaults"),n.colorbar=t("../scatter/colorbar"),n.calc=t("./calc"),n.plot=t("./plot"),n.style=t("../scatter/style").style,n.hoverPoints=t("./hover"),n.selectPoints=t("../scatter/select"),n.eventData=t("./event_data"),n.moduleType="trace",n.name="scatterternary",n.basePlotModule=t("../../plots/ternary"),n.categories=["ternary","symbols","markerColorscale","showLegend","scatter-like"],n.meta={},e.exports=n},{"../../plots/ternary":847,"../scatter/colorbar":1052,"../scatter/select":1068,"../scatter/style":1069,"./attributes":1115,"./calc":1116,"./defaults":1117,"./event_data":1118,"./hover":1119,"./plot":1121}],1121:[function(t,e,r){"use strict";var n=t("../scatter/plot");e.exports=function(t,e,r){var i=e.plotContainer;i.select(".scatterlayer").selectAll("*").remove();var a={xaxis:e.xaxis,yaxis:e.yaxis,plot:i,layerClipId:e._hasClipOnAxisFalse?e.clipIdRelative:null};n(t,a,r)}},{"../scatter/plot":1067}],1122:[function(t,e,r){"use strict";var n=t("../../components/color"),i=t("../../components/colorscale/attributes"),a=t("../../components/colorbar/attributes"),o=t("../../plots/attributes"),s=t("../../lib/extend").extendFlat,l=t("../../plot_api/edit_types").overrideAll;function c(t){return{show:{valType:"boolean",dflt:!1},project:{x:{valType:"boolean",dflt:!1},y:{valType:"boolean",dflt:!1},z:{valType:"boolean",dflt:!1}},color:{valType:"color",dflt:n.defaultLine},usecolormap:{valType:"boolean",dflt:!1},width:{valType:"number",min:1,max:16,dflt:2},highlight:{valType:"boolean",dflt:!0},highlightcolor:{valType:"color",dflt:n.defaultLine},highlightwidth:{valType:"number",min:1,max:16,dflt:2}}}var u=e.exports=l({z:{valType:"data_array"},x:{valType:"data_array"},y:{valType:"data_array"},text:{valType:"string",dflt:"",arrayOk:!0},surfacecolor:{valType:"data_array"},cauto:i.zauto,cmin:i.zmin,cmax:i.zmax,colorscale:i.colorscale,autocolorscale:s({},i.autocolorscale,{dflt:!1}),reversescale:i.reversescale,showscale:i.showscale,colorbar:a,contours:{x:c(),y:c(),z:c()},hidesurface:{valType:"boolean",dflt:!1},lightposition:{x:{valType:"number",min:-1e5,max:1e5,dflt:10},y:{valType:"number",min:-1e5,max:1e5,dflt:1e4},z:{valType:"number",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:"number",min:0,max:1,dflt:.8},diffuse:{valType:"number",min:0,max:1,dflt:.8},specular:{valType:"number",min:0,max:2,dflt:.05},roughness:{valType:"number",min:0,max:1,dflt:.5},fresnel:{valType:"number",min:0,max:5,dflt:.2}},opacity:{valType:"number",min:0,max:1,dflt:1},_deprecated:{zauto:s({},i.zauto,{}),zmin:s({},i.zmin,{}),zmax:s({},i.zmax,{})},hoverinfo:s({},o.hoverinfo)},"calc","nested");u.x.editType=u.y.editType=u.z.editType="calc+clearAxisTypes"},{"../../components/color":598,"../../components/colorbar/attributes":599,"../../components/colorscale/attributes":604,"../../lib/extend":713,"../../plot_api/edit_types":754,"../../plots/attributes":768}],1123:[function(t,e,r){"use strict";var n=t("../../components/colorscale/calc");e.exports=function(t,e){e.surfacecolor?n(e,e.surfacecolor,"","c"):n(e,e.z,"","c")}},{"../../components/colorscale/calc":605}],1124:[function(t,e,r){"use strict";var n=t("fast-isnumeric"),i=t("../../lib"),a=t("../../plots/plots"),o=t("../../components/colorscale"),s=t("../../components/colorbar/draw");e.exports=function(t,e){var r=e[0].trace,l="cb"+r.uid,c=r.cmin,u=r.cmax,f=r.surfacecolor||r.z;if(n(c)||(c=i.aggNums(Math.min,null,f)),n(u)||(u=i.aggNums(Math.max,null,f)),t._fullLayout._infolayer.selectAll("."+l).remove(),r.showscale){var h=e[0].t.cb=s(t,l),d=o.makeColorScaleFunc(o.extractScale(r.colorscale,c,u),{noNumericCheck:!0});h.fillcolor(d).filllevels({start:c,end:u,size:(u-c)/254}).options(r.colorbar)()}else a.autoMargin(t,l)}},{"../../components/colorbar/draw":602,"../../components/colorscale":613,"../../lib":724,"../../plots/plots":833,"fast-isnumeric":140}],1125:[function(t,e,r){"use strict";var n=t("gl-surface3d"),i=t("ndarray"),a=t("ndarray-homography"),o=t("ndarray-fill"),s=t("ndarray-ops"),l=t("tinycolor2"),c=t("../../lib/str2rgbarray"),u=128;function f(t,e,r){this.scene=t,this.uid=r,this.surface=e,this.data=null,this.showContour=[!1,!1,!1],this.dataScale=1}var h=f.prototype;function d(t){var e=t.shape,r=[e[0]+2,e[1]+2],n=i(new Float32Array(r[0]*r[1]),r);return s.assign(n.lo(1,1).hi(e[0],e[1]),t),s.assign(n.lo(1).hi(e[0],1),t.hi(e[0],1)),s.assign(n.lo(1,r[1]-1).hi(e[0],1),t.lo(0,e[1]-1).hi(e[0],1)),s.assign(n.lo(0,1).hi(1,e[1]),t.hi(1)),s.assign(n.lo(r[0]-1,1).hi(1,e[1]),t.lo(e[0]-1)),n.set(0,0,t.get(0,0)),n.set(0,r[1]-1,t.get(0,e[1]-1)),n.set(r[0]-1,0,t.get(e[0]-1,0)),n.set(r[0]-1,r[1]-1,t.get(e[0]-1,e[1]-1)),n}h.handlePick=function(t){if(t.object===this.surface){var e=t.index=[Math.min(0|Math.round(t.data.index[0]/this.dataScale-1),this.data.z[0].length-1),Math.min(0|Math.round(t.data.index[1]/this.dataScale-1),this.data.z.length-1)],r=[0,0,0];Array.isArray(this.data.x)?Array.isArray(this.data.x[0])?r[0]=this.data.x[e[1]][e[0]]:r[0]=this.data.x[e[0]]:r[0]=e[0],Array.isArray(this.data.y)?Array.isArray(this.data.y[0])?r[1]=this.data.y[e[1]][e[0]]:r[1]=this.data.y[e[1]]:r[1]=e[1],r[2]=this.data.z[e[1]][e[0]],t.traceCoordinate=r;var n=this.scene.fullSceneLayout;t.dataCoordinate=[n.xaxis.d2l(r[0],0,this.data.xcalendar)*this.scene.dataScale[0],n.yaxis.d2l(r[1],0,this.data.ycalendar)*this.scene.dataScale[1],n.zaxis.d2l(r[2],0,this.data.zcalendar)*this.scene.dataScale[2]];var i=this.data.text;return Array.isArray(i)&&i[e[1]]&&void 0!==i[e[1]][e[0]]?t.textLabel=i[e[1]][e[0]]:t.textLabel=i||"",t.data.dataCoordinate=t.dataCoordinate.slice(),this.surface.highlight(t.data),this.scene.glplot.spikes.position=t.dataCoordinate,!0}},h.setContourLevels=function(){for(var t=[[],[],[]],e=!1,r=0;r<3;++r)this.showContour[r]&&(e=!0,t[r]=this.scene.contourLevels[r]);e&&this.surface.update({levels:t})},h.update=function(t){var e,r=this.scene,n=r.fullSceneLayout,s=this.surface,f=t.opacity,h=function(t,e){return void 0===e&&(e=1),t.map(function(t){var r=t[0],n=l(t[1]).toRgb();return{index:r,rgb:[n.r,n.g,n.b,e]}})}(t.colorscale,f),p=t.z,m=t.x,v=t.y,g=n.xaxis,y=n.yaxis,b=n.zaxis,x=r.dataScale,_=p[0].length,w=t._ylength,M=[i(new Float32Array(_*w),[_,w]),i(new Float32Array(_*w),[_,w]),i(new Float32Array(_*w),[_,w])],k=M[0],A=M[1],T=r.contourLevels;this.data=t;var E=t.xcalendar,S=t.ycalendar,L=t.zcalendar;o(M[2],function(t,e){return b.d2l(p[e][t],0,L)*x[2]}),Array.isArray(m)?Array.isArray(m[0])?o(k,function(t,e){return g.d2l(m[e][t],0,E)*x[0]}):o(k,function(t){return g.d2l(m[t],0,E)*x[0]}):o(k,function(t){return g.d2l(t,0,E)*x[0]}),Array.isArray(m)?Array.isArray(v[0])?o(A,function(t,e){return y.d2l(v[e][t],0,S)*x[1]}):o(A,function(t,e){return y.d2l(v[e],0,S)*x[1]}):o(A,function(t,e){return y.d2l(e,0,E)*x[1]});var C={colormap:h,levels:[[],[],[]],showContour:[!0,!0,!0],showSurface:!t.hidesurface,contourProject:[[!1,!1,!1],[!1,!1,!1],[!1,!1,!1]],contourWidth:[1,1,1],contourColor:[[1,1,1,1],[1,1,1,1],[1,1,1,1]],contourTint:[1,1,1],dynamicColor:[[1,1,1,1],[1,1,1,1],[1,1,1,1]],dynamicWidth:[1,1,1],dynamicTint:[1,1,1],opacity:t.opacity};if(C.intensityBounds=[t.cmin,t.cmax],t.surfacecolor){var P=i(new Float32Array(_*w),[_,w]);o(P,function(e,r){return t.surfacecolor[r][e]}),M.push(P)}else C.intensityBounds[0]*=x[2],C.intensityBounds[1]*=x[2];this.dataScale=function(t){var e=Math.max(t[0].shape[0],t[0].shape[1]);if(e",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:"cubic-out",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:"cubic-out",uplift:5,wrapSpacer:" ",wrapSplitCharacter:" ",cn:{table:"table",tableControlView:"table-control-view",scrollBackground:"scroll-background",yColumn:"y-column",columnBlock:"column-block",scrollAreaClip:"scroll-area-clip",scrollAreaClipRect:"scroll-area-clip-rect",columnBoundary:"column-boundary",columnBoundaryClippath:"column-boundary-clippath",columnBoundaryRect:"column-boundary-rect",columnCells:"column-cells",columnCell:"column-cell",cellRect:"cell-rect",cellText:"cell-text",cellTextHolder:"cell-text-holder",scrollbarKit:"scrollbar-kit",scrollbar:"scrollbar",scrollbarSlider:"scrollbar-slider",scrollbarGlyph:"scrollbar-glyph",scrollbarCaptureZone:"scrollbar-capture-zone"}}},{}],1132:[function(t,e,r){"use strict";var n=t("./constants"),i=t("../../lib/extend").extendFlat,a=t("fast-isnumeric");function o(t){return t.calcdata.columns.reduce(function(e,r){return r.xIndex=e||c===t.length-1)&&(n[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=c,o={firstRowIndex:null,lastRowIndex:null,rows:[]},i+=a,s=c+1,a=0);return n}e.exports=function(t,e){var r=e.cells.values,c=function(t){return t.slice(e.header.values.length,t.length)},u=e.header.values.map(function(t){return Array.isArray(t)?t:[t]}).concat(c(r).map(function(){return[""]})),f=e.domain,h=Math.floor(t._fullLayout._size.w*(f.x[1]-f.x[0])),d=Math.floor(t._fullLayout._size.h*(f.y[1]-f.y[0])),p=e.header.values.length?u[0].map(function(){return e.header.height}):[n.emptyHeaderHeight],m=r.length?r[0].map(function(){return e.cells.height}):[],v=p.reduce(function(t,e){return t+e},0),g=l(m,d-v+n.uplift),y=s(l(p,v),[]),b=s(g,y),x={},_=e._fullInput.columnorder.concat(c(r.map(function(t,e){return e}))),w=u.map(function(t,r){var n=Array.isArray(e.columnwidth)?e.columnwidth[Math.min(r,e.columnwidth.length-1)]:e.columnwidth;return a(n)?Number(n):1}),M=w.reduce(function(t,e){return t+e},0);w=w.map(function(t){return t/M*h});var k={key:e.index,translateX:f.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-f.y[1]),size:t._fullLayout._size,width:h,height:d,columnOrder:_,groupHeight:d,rowBlocks:b,headerRowBlocks:y,scrollY:0,cells:e.cells,headerCells:i({},e.header,{values:u}),gdColumns:u.map(function(t){return t[0]}),gdColumnsOriginalOrder:u.map(function(t){return t[0]}),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:u.map(function(t,e){var r=x[t];return x[t]=(r||0)+1,{key:t+"__"+x[t],label:t,specIndex:e,xIndex:_[e],xScale:o,x:void 0,calcdata:void 0,columnWidth:w[e]}})};return k.columns.forEach(function(t){t.calcdata=k,t.x=o(t)}),k}},{"../../lib/extend":713,"./constants":1131,"fast-isnumeric":140}],1133:[function(t,e,r){"use strict";var n=t("../../lib/extend").extendFlat;r.splitToPanels=function(t){var e=[0,0],r=n({},t,{key:"header",type:"header",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!0,values:t.calcdata.headerCells.values[t.specIndex],rowBlocks:t.calcdata.headerRowBlocks,calcdata:n({},t.calcdata,{cells:t.calcdata.headerCells})});return[n({},t,{key:"cells1",type:"cells",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),n({},t,{key:"cells2",type:"cells",page:1,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),r]},r.splitToCells=function(t){var e=function(t){var e=t.rowBlocks[t.page],r=e?e.rows[0].rowIndex:0,n=e?r+e.rows.length:0;return[r,n]}(t);return(t.values||[]).slice(e[0],e[1]).map(function(r,n){return{keyWithinBlock:n+("string"==typeof r&&r.match(/[<$&> ]/)?"_keybuster_"+Math.random():""),key:e[0]+n,column:t,calcdata:t.calcdata,page:t.page,rowBlocks:t.rowBlocks,value:r}})}},{"../../lib/extend":713}],1134:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("./attributes");e.exports=function(t,e,r,a){function o(r,a){return n.coerce(t,e,i,r,a)}o("domain.x"),o("domain.y"),o("columnwidth"),o("header.values"),o("header.format"),o("header.align"),o("header.prefix"),o("header.suffix"),o("header.height"),o("header.line.width"),o("header.line.color"),o("header.fill.color"),n.coerceFont(o,"header.font",n.extendFlat({},a.font)),function(t,e){for(var r=t.columnorder||[],n=t.header.values.length,i=r.slice(0,n),a=i.slice().sort(function(t,e){return t-e}),o=i.map(function(t){return a.indexOf(t)}),s=o.length;s/i),l=!o||s;t.mayHaveMarkup=o&&a.match(/[<&>]/);var c,u="string"==typeof(c=a)&&c.match(n.latexCheck);t.latex=u;var f,h,d=u?"":x(t.calcdata.cells.prefix,e,r)||"",p=u?"":x(t.calcdata.cells.suffix,e,r)||"",m=u?null:x(t.calcdata.cells.format,e,r)||null,v=d+(m?i.format(m)(t.value):t.value)+p;if(t.wrappingNeeded=!t.wrapped&&!l&&!u&&(f=b(v)),t.cellHeightMayIncrease=s||u||t.mayHaveMarkup||(void 0===f?b(v):f),t.needsConvertToTspans=t.mayHaveMarkup||t.wrappingNeeded||t.latex,t.wrappingNeeded){var g=(" "===n.wrapSplitCharacter?v.replace(/i&&n.push(a),i+=l}return n}(i,l,s);1===c.length&&(c[0]===i.length-1?c.unshift(c[0]-1):c.push(c[0]+1)),c[0]%2&&c.reverse(),e.each(function(t,e){t.page=c[e],t.scrollY=l}),e.attr("transform",function(t){return"translate(0 "+(z(t.rowBlocks,t.page)-t.scrollY)+")"}),t&&(E(t,r,e,c,n.prevPages,n,0),E(t,r,e,c,n.prevPages,n,1),v(r,t))}}function T(t,e,r,a){return function(o){var s=o.calcdata?o.calcdata:o,l=e.filter(function(t){return s.key===t.key}),c=r||s.scrollbarState.dragMultiplier;s.scrollY=void 0===a?s.scrollY+c*i.event.dy:a;var u=l.selectAll("."+n.cn.yColumn).selectAll("."+n.cn.columnBlock).filter(w);A(t,u,l)}}function E(t,e,r,n,i,a,o){n[o]!==i[o]&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout(function(){var a=r.filter(function(t,e){return e===o&&n[e]!==i[e]});g(t,e,a,r),i[o]=n[o]}))}function S(t,e,r){return function(){var a=i.select(e.parentNode);a.each(function(t){var e=t.fragments;a.selectAll("tspan.line").each(function(t,r){e[r].width=this.getComputedTextLength()});var r,i,o=e[e.length-1].width,s=e.slice(0,-1),l=[],c=0,u=t.column.columnWidth-2*n.cellPad;for(t.value="";s.length;)c+(i=(r=s.shift()).width+o)>u&&(t.value+=l.join(n.wrapSpacer)+n.lineBreaker,l=[],c=0),l.push(r.text),c+=i;c&&(t.value+=l.join(n.wrapSpacer)),t.wrapped=!0}),a.selectAll("tspan.line").remove(),y(a.select("."+n.cn.cellText),r,t),i.select(e.parentNode.parentNode).call(P)}}function L(t,e,r,a,o){return function(){if(!o.settledY){var s=i.select(e.parentNode),l=I(o),c=o.key-l.firstRowIndex,u=l.rows[c].rowHeight,f=o.cellHeightMayIncrease?e.parentNode.getBoundingClientRect().height+2*n.cellPad:u,h=Math.max(f,u);h-l.rows[c].rowHeight&&(l.rows[c].rowHeight=h,t.selectAll("."+n.cn.columnCell).call(P),A(null,t.filter(w),0),v(r,a,!0)),s.attr("transform",function(){var t=this.parentNode.getBoundingClientRect(),e=i.select(this.parentNode).select("."+n.cn.cellRect).node().getBoundingClientRect(),r=this.transform.baseVal.consolidate(),a=e.top-t.top+(r?r.matrix.f:n.cellPad);return"translate("+C(o,i.select(this.parentNode).select("."+n.cn.cellTextHolder).node().getBoundingClientRect().width)+" "+a+")"}),o.settledY=!0}}}function C(t,e){switch(t.align){case"left":return n.cellPad;case"right":return t.column.columnWidth-(e||0)-n.cellPad;case"center":return(t.column.columnWidth-(e||0))/2;default:return n.cellPad}}function P(t){t.attr("transform",function(t){var e=t.rowBlocks[0].auxiliaryBlocks.reduce(function(t,e){return t+O(e,1/0)},0);return"translate(0 "+(O(I(t),t.key)+e)+")"}).selectAll("."+n.cn.cellRect).attr("height",function(t){return(e=I(t),r=t.key,e.rows[r-e.firstRowIndex]).rowHeight;var e,r})}function z(t,e){for(var r=0,n=e-1;n>=0;n--)r+=D(t[n]);return r}function O(t,e){for(var r=0,n=0;n0){var y,b,x,_,w,M=t.xa,k=t.ya;"h"===h.orientation?(w=e,y="y",x=k,b="x",_=M):(w=r,y="x",x=M,b="y",_=k);var A=f[t.index];if(w>=A.span[0]&&w<=A.span[1]){var T=n.extendFlat({},t),E=_.c2p(w,!0),S=o.getKdeValue(A,h,w),L=o.getPositionOnKdePath(A,h,E),C=x._offset,P=x._length;T[y+"0"]=L[0],T[y+"1"]=L[1],T[b+"0"]=T[b+"1"]=E,T[b+"Label"]=b+": "+i.hoverLabelText(_,w)+", "+f[0].t.labels.kde+" "+S.toFixed(3),v.push(T),(u={stroke:t.color})[y+"1"]=n.constrain(C+L[0],C,C+P),u[y+"2"]=n.constrain(C+L[1],C,C+P),u[b+"1"]=u[b+"2"]=_._offset+E}}}-1!==d.indexOf("points")&&(c=a.hoverOnPoints(t,e,r));var z=l.selectAll(".violinline-"+h.uid).data(u?[0]:[]);return z.enter().append("line").classed("violinline-"+h.uid,!0).attr("stroke-width",1.5),z.exit().remove(),z.attr(u),"closest"===s?c?[c]:v:c?(v.push(c),v):v}},{"../../lib":724,"../../plots/cartesian/axes":770,"../box/hover":880,"./helpers":1140}],1142:[function(t,e,r){"use strict";e.exports={attributes:t("./attributes"),layoutAttributes:t("./layout_attributes"),supplyDefaults:t("./defaults"),supplyLayoutDefaults:t("./layout_defaults"),calc:t("./calc"),setPositions:t("./set_positions"),plot:t("./plot"),style:t("./style"),hoverPoints:t("./hover"),selectPoints:t("../box/select"),moduleType:"trace",name:"violin",basePlotModule:t("../../plots/cartesian"),categories:["cartesian","symbols","oriented","box-violin","showLegend"],meta:{}}},{"../../plots/cartesian":781,"../box/select":885,"./attributes":1137,"./calc":1138,"./defaults":1139,"./hover":1141,"./layout_attributes":1143,"./layout_defaults":1144,"./plot":1145,"./set_positions":1146,"./style":1147}],1143:[function(t,e,r){"use strict";var n=t("../box/layout_attributes"),i=t("../../lib").extendFlat;e.exports={violinmode:i({},n.boxmode,{}),violingap:i({},n.boxgap,{}),violingroupgap:i({},n.boxgroupgap,{})}},{"../../lib":724,"../box/layout_attributes":882}],1144:[function(t,e,r){"use strict";var n=t("../../lib"),i=t("./layout_attributes"),a=t("../box/layout_defaults");e.exports=function(t,e,r){a._supply(t,e,r,function(r,a){return n.coerce(t,e,i,r,a)},"violin")}},{"../../lib":724,"../box/layout_defaults":883,"./layout_attributes":1143}],1145:[function(t,e,r){"use strict";var n=t("d3"),i=t("../../lib"),a=t("../../components/drawing"),o=t("../box/plot"),s=t("../scatter/line_points"),l=t("./helpers");e.exports=function(t,e,r){var c=t._fullLayout,u=e.xaxis,f=e.yaxis;function h(t){var e=s(t,{xaxis:u,yaxis:f,connectGaps:!0,baseTolerance:.75,shape:"spline",simplify:!0});return a.smoothopen(e[0],1)}e.plot.select(".violinlayer").selectAll("g.trace.violins").data(r).enter().append("g").attr("class","trace violins").each(function(t){var r=t[0],a=r.t,s=r.trace,d=r.node3=n.select(this),p=c._numViolins,m="group"===c.violinmode&&p>1,v=a.bdPos=a.dPos*(1-c.violingap)*(1-c.violingroupgap)/(m?p:1),g=a.bPos=m?2*a.dPos*((a.num+.5)/p-.5)*(1-c.violingap):0;if(!0!==s.visible||a.empty)n.select(this).remove();else{var y=e[a.valLetter+"axis"],b=e[a.posLetter+"axis"],x="both"===s.side,_=x||"positive"===s.side,w=x||"negative"===s.side,M=s.box&&s.box.visible,k=s.meanline&&s.meanline.visible,A=c._violinScaleGroupStats[s.scalegroup];if(d.selectAll("path.violin").data(i.identity).enter().append("path").style("vector-effect","non-scaling-stroke").attr("class","violin").each(function(t){var e,r,i,o,l,c,u,f,d=n.select(this),p=t.density,m=p.length,M=t.pos+g,k=b.c2p(M);switch(s.scalemode){case"width":e=A.maxWidth/v;break;case"count":e=A.maxWidth/v*(A.maxCount/t.pts.length)}if(_){for(u=new Array(m),l=0;la&&(a=u,o=c)}}return a?i(o):s};case"rms":return function(t,e){for(var r=0,a=0,o=0;o":return function(t){return h(t)>s};case">=":return function(t){return h(t)>=s};case"[]":return function(t){var e=h(t);return e>=s[0]&&e<=s[1]};case"()":return function(t){var e=h(t);return e>s[0]&&e=s[0]&&es[0]&&e<=s[1]};case"][":return function(t){var e=h(t);return e<=s[0]||e>=s[1]};case")(":return function(t){var e=h(t);return es[1]};case"](":return function(t){var e=h(t);return e<=s[0]||e>s[1]};case")[":return function(t){var e=h(t);return e=s[1]};case"{}":return function(t){return-1!==s.indexOf(h(t))};case"}{":return function(t){return-1===s.indexOf(h(t))}}}(r,a.getDataToCoordFunc(t,e,s,i),h),y={},b={},x=0;r.preservegaps?(m=function(t){y[t.astr]=n.extendDeep([],t.get()),t.set(new Array(f))},v=function(t,e){var r=y[t.astr][e];t.get()[e]=r}):(m=function(t){y[t.astr]=n.extendDeep([],t.get()),t.set([])},v=function(t,e){var r=y[t.astr][e];t.get().push(r)}),M(m);for(var _=o(e.transforms,r),w=0;w1?"%{group} (%{trace})":"%{group}");var l=t.styles,c=o.styles=[];if(l)for(a=0;a. + +from time import sleep + +import datetime +import math +import os +import platform +import re +import sys + +try: + from urllib import urlencode # Python2 +except ImportError: + import urllib + from urllib.parse import urlencode # Python3 + +try: + import urllib.request as urllib2 +except ImportError: + import urllib2 + +from sickbeard import logger +from sickbeard.helpers import getURL, tryInt + +try: + from lxml import etree +except ImportError: + try: + import xml.etree.cElementTree as etree + except ImportError: + import xml.etree.ElementTree as etree + + +class Plex: + def __init__(self, settings=None): + + settings = settings or {} + self._plex_host = settings.get('plex_host') or '127.0.0.1' + self.plex_port = settings.get('plex_port') or '32400' + + self.username = settings.get('username', '') + self.password = settings.get('password', '') + self.token = settings.get('token', '') + + self.device_name = settings.get('device_name', '') + self.client_id = settings.get('client_id') or '5369636B47656172' + self.machine_client_identifier = '' + + self.default_home_users = settings.get('default_home_users', '') + + # Progress percentage to consider video as watched + # if set to anything > 0, videos with watch progress greater than this will be considered watched + self.default_progress_as_watched = settings.get('default_progress_as_watched', 0) + + # Sections to scan. If empty all sections will be looked at, + # the section id should be used which is the number found be in the url on PlexWeb after /section/[ID] + self.section_list = settings.get('section_list', []) + + # Sections to skip scanning, for use when Settings['section_list'] is not specified, + # the same as section_list, the section id should be used + self.ignore_sections = settings.get('ignore_sections', []) + + # Filter sections by paths that are in this array + self.section_filter_path = settings.get('section_filter_path', []) + + # Results + self.show_states = {} + self.file_count = 0 + + # Conf + self.config_version = 2.0 + self.use_logger = False + self.test = None + self.home_user_tokens = {} + + if self.username and '' == self.token: + self.token = self.get_token(self.username, self.password) + + @property + def plex_host(self): + + if not self._plex_host.startswith('http'): + return 'http://%s' % self.plex_host + return self._plex_host + + @plex_host.setter + def plex_host(self, value): + + self._plex_host = value + + def log(self, msg, debug=True): + + try: + if self.use_logger: + msg = 'Plex:: ' + msg + if debug: + logger.log(msg, logger.DEBUG) + else: + logger.log(msg) + # else: + # print(msg.encode('ascii', 'replace').decode()) + except (StandardError, Exception): + pass + + def get_token(self, user, passw): + + auth = '' + try: + auth = getURL('https://plex.tv/users/sign_in.json', + headers={'X-Plex-Device-Name': 'SickGear', + 'X-Plex-Platform': platform.system(), 'X-Plex-Device': platform.system(), + 'X-Plex-Platform-Version': platform.release(), + 'X-Plex-Provides': 'Python', 'X-Plex-Product': 'Python', + 'X-Plex-Client-Identifier': self.client_id, + 'X-Plex-Version': str(self.config_version), + 'X-Plex-Username': user + }, + json=True, + data=urlencode({b'user[login]': user, b'user[password]': passw}).encode('utf-8') + )['user']['authentication_token'] + except IndexError: + self.log('Error getting Plex Token') + + return auth + + def get_access_token(self, token): + + resources = self.get_url_x('https://plex.tv/api/resources?includeHttps=1', token=token) + if None is resources: + return '' + + devices = resources.findall('Device') + for device in devices: + if 1 == len(devices) \ + or self.machine_client_identifier == device.get('clientIdentifier') \ + or (self.device_name + and (self.device_name.lower() in device.get('name').lower() + or self.device_name.lower() in device.get('clientIdentifier').lower()) + ): + access_token = device.get('accessToken') + if not access_token: + return '' + return access_token + + connections = device.findall('Connection') + for connection in connections: + if self.plex_host == connection.get('address'): + access_token = device.get('accessToken') + if not access_token: + return '' + uri = connection.get('uri') + match = re.compile('(http[s]?://.*?):(\d*)').match(uri) + if match: + self.plex_host = match.group(1) + self.plex_port = match.group(2) + return access_token + return '' + + def get_plex_home_user_tokens(self): + + user_tokens = {} + + # check Plex is contactable + home_users = self.get_url_x('https://plex.tv/api/home/users') + if None is not home_users: + for user in home_users.findall('User'): + user_id = user.get('id') + # use empty byte data to force POST + switch_page = self.get_url_x('https://plex.tv/api/home/users/%s/switch' % user_id, data=b'') + if None is not switch_page: + home_token = 'user' == switch_page.tag and switch_page.get('authenticationToken') + if home_token: + username = switch_page.get('title') + user_tokens[username] = self.get_access_token(home_token) + return user_tokens + + def get_url_x(self, url, token=None, **kwargs): + + if not token: + token = self.token + if not url.startswith('http'): + url = 'http://' + url + + for x in range(0, 3): + if 0 < x: + sleep(0.5) + try: + headers = {'X-Plex-Device-Name': 'SickGear', + 'X-Plex-Platform': platform.system(), 'X-Plex-Device': platform.system(), + 'X-Plex-Platform-Version': platform.release(), + 'X-Plex-Provides': 'controller', 'X-Plex-Product': 'Python', + 'X-Plex-Client-Identifier': self.client_id, + 'X-Plex-Version': str(self.config_version), + 'X-Plex-Token': token, + 'Accept': 'application/xml' + } + if self.username: + headers.update({'X-Plex-Username': self.username}) + page = getURL(url, headers=headers, **kwargs) + if page: + parsed = etree.fromstring(page) + if None is not parsed and len(parsed): + return parsed + return None + + except Exception as e: + self.log('Error requesting page: %s' % e) + continue + return None + + # uses the Plex API to delete files instead of system functions, useful for remote installations + def delete_file(self, media_id=0): + + try: + endpoint = ('/library/metadata/%s' % str(media_id)) + req = urllib2.Request('%s:%s%s' % (self.plex_host, self.plex_port, endpoint), + None, {'X-Plex-Token': self.token}) + req.get_method = lambda: 'DELETE' + urllib2.urlopen(req) + except (StandardError, Exception): + return False + return True + + @staticmethod + def get_media_info(video_node): + + progress = 0 + if None is not video_node.get('viewOffset') and None is not video_node.get('duration'): + progress = tryInt(video_node.get('viewOffset')) * 100 / tryInt(video_node.get('duration')) + + for media in video_node.findall('Media'): + for part in media.findall('Part'): + file_name = part.get('file') + # if '3' > sys.version: # remove HTML quoted characters, only works in python < 3 + # file_name = urllib2.unquote(file_name.encode('utf-8', errors='replace')) + # else: + file_name = urllib2.unquote(file_name) + + return {'path_file': file_name, 'media_id': video_node.get('ratingKey'), + 'played': int(video_node.get('viewCount') or 0), 'progress': progress} + + def check_users_watched(self, users, media_id): + + if not self.home_user_tokens: + self.home_user_tokens = self.get_plex_home_user_tokens() + + result = {} + if 'all' in users: + users = self.home_user_tokens.keys() + + for user in users: + user_media_page = self.get_url_pms('/library/metadata/%s' % media_id, token=self.home_user_tokens[user]) + if None is not user_media_page: + video_node = user_media_page.find('Video') + + progress = 0 + if None is not video_node.get('viewOffset') and None is not video_node.get('duration'): + progress = tryInt(video_node.get('viewOffset')) * 100 / tryInt(video_node.get('duration')) + + played = int(video_node.get('viewCount') or 0) + if not progress and not played: + continue + + date_watched = 0 + if (0 < tryInt(video_node.get('viewCount'))) or (0 < self.default_progress_as_watched < progress): + last_viewed_at = video_node.get('lastViewedAt') + if last_viewed_at and last_viewed_at not in ('', '0'): + date_watched = last_viewed_at + + if date_watched: + result[user] = dict(played=played, progress=progress, date_watched=date_watched) + else: + self.log('Do not have the token for %s.' % user) + + return result + + def get_url_pms(self, endpoint=None, **kwargs): + + return endpoint and self.get_url_x( + '%s:%s%s' % (self.plex_host, self.plex_port, endpoint), **kwargs) + + # parse episode information from season pages + def stat_show(self, node): + + episodes = [] + if 'directory' == node.tag.lower() and 'show' == node.get('type'): + show = self.get_url_pms(node.get('key')) + if None is show: # Check if show page is None or empty + self.log('Failed to load show page. Skipping...') + return None + + for season_node in show.findall('Directory'): # Each directory is a season + if 'season' != season_node.get('type'): # skips Specials + continue + + season_key = season_node.get('key') + season = self.get_url_pms(season_key) + if None is not season: + episodes += [season] + + elif 'mediacontainer' == node.tag.lower() and 'episode' == node.get('viewGroup'): + episodes = [node] + + check_users = [] + if self.default_home_users: + check_users = self.default_home_users.strip(' ,').lower().split(',') + for k in range(0, len(check_users)): # Remove extra spaces and commas + check_users[k] = check_users[k].strip(', ') + + for episode_node in episodes: + for video_node in episode_node.findall('Video'): + + media_info = self.get_media_info(video_node) + + if check_users: + user_info = self.check_users_watched(check_users, media_info['media_id']) + for user_name, user_media_info in user_info.items(): + self.show_states.update({len(self.show_states): dict( + path_file=media_info['path_file'], + media_id=media_info['media_id'], + played=(100 * user_media_info['played']) or user_media_info['progress'] or 0, + label=user_name, + date_watched=user_media_info['date_watched'])}) + else: + self.show_states.update({len(self.show_states): dict( + path_file=media_info['path_file'], + media_id=media_info['media_id'], + played=(100 * media_info['played']) or media_info['progress'] or 0, + label=self.username, + date_watched=video_node.get('lastViewedAt'))}) + + self.file_count += 1 + + return True + + def fetch_show_states(self, fetch_all=False): + + error_log = [] + self.show_states = {} + + server_check = self.get_url_pms('/') + if None is server_check or 'MediaContainer' != server_check.tag: + error_log.append('Cannot reach server!') + + else: + if not self.device_name: + self.device_name = server_check.get('friendlyName') + + if not self.machine_client_identifier: + self.machine_client_identifier = server_check.get('machineIdentifier') + + access_token = None + if self.token: + access_token = self.get_access_token(self.token) + if access_token: + self.token = access_token + if not self.home_user_tokens: + self.home_user_tokens = self.get_plex_home_user_tokens() + else: + error_log.append('Access Token not found') + + resp_sections = None + if None is access_token or len(access_token): + resp_sections = self.get_url_pms('/library/sections/') + + if None is not resp_sections: + + unpather = [] + for loc in self.section_filter_path: + loc = re.sub(r'[/\\]+', '/', loc.lower()) + loc = re.sub(r'^(.{,2})[/\\]', '', loc) + unpather.append(loc) + self.section_filter_path = unpather + + for section in resp_sections.findall('Directory'): + if 'show' != section.get('type') or not section.findall('Location'): + continue + + section_path = re.sub(r'[/\\]+', '/', section.find('Location').get('path').lower()) + section_path = re.sub(r'^(.{,2})[/\\]', '', section_path) + if not any([section_path in path for path in self.section_filter_path]): + continue + + if section.get('key') not in self.ignore_sections \ + and section.get('title') not in self.ignore_sections: + section_key = section.get('key') + + for (user, token) in (self.home_user_tokens or {'': None}).iteritems(): + self.username = user + + resp_section = self.get_url_pms('/library/sections/%s/%s' % ( + section_key, ('recentlyViewed', 'all')[fetch_all]), token=token) + if None is not resp_section: + view_group = 'MediaContainer' == resp_section.tag and \ + resp_section.get('viewGroup') or '' + if 'show' == view_group and fetch_all: + for DirectoryNode in resp_section.findall('Directory'): + self.stat_show(DirectoryNode) + elif 'episode' == view_group and not fetch_all: + self.stat_show(resp_section) + + if 0 < len(error_log): + self.log('Library errors...') + for item in error_log: + self.log(item) + + return 0 < len(error_log) diff --git a/readme.md b/readme.md index 28b9c29c..f2f1ce95 100644 --- a/readme.md +++ b/readme.md @@ -1,57 +1,76 @@
SickGear
-**SickGear**, a usenet and bittorrent PVR +*SickGear*, a usenet and bittorrent PVR
-_Please note you should know how to use git and setup basic requirements in order to run this software._ -SickGear provides management of TV shows and/or Anime, it can detect new episodes, link to downloader apps, and more. SickGear is a proud descendant of Sick Beard and is humbled to have been endorsed by one of its former lead developers. +SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more. -Why SickGear? -* SickGear maintains perfect uptime with the longest track record of being stable, reliable and trusted to work -* SickGear delivers quality from active development with a wealth of options on a dark or light themed interface +#### Why SickGear? +* SickGear maintains a perfect uptime with the longest track record of being stable, reliable and trusted to work +* SickGear delivers valued quality from active development with a wealth of options on a dark or light themed interface + +#### What now? +* [Install guides](https://github.com/SickGear/SickGear/wiki/Installation-Instructions) for many platforms * [Migrating](https://github.com/SickGear/SickGear/wiki/Install-SickGear-%5B0%5D-Migrate) to a hassle free and feature rich set up is super simple -## Features include +Or read more below... + +## Some innovative SickGear features +* Ideas of shows to add from Trakt, IMDb, and AniDB categories; anticipating, new seasons, new shows, popular, and more +* Advanced add show finder that near always returns results sorted A-Z, Aired, or Relevancy, with known shows separated +* Releases can be searched during adding a show (e.g. optionally fetch oldest and/or newest without further effort) +* Advanced automated search that always works to prevent you wasting time manually scanning result lists +* Choose to delete watched episodes from a list built directly from played media at Kodi, Emby, and/or Plex (No Trakt!) +* Smart custom qualities selector system that helps achieve an optimal quality selection for automated episode search +* Choose to have episodes upgraded in quality, or keep existing archive quality, and upgrade future episodes either way +* Natively use a most powerful regex pattern matching system for superior information handling +* Select a UI style anytime; Regular, Proview I, or Proview II - independently for Episode View, and for Display Show +* Smart fanart system allows you to rate avoid/prefer. UI can be moved or toggled off/on to fully appreciate a fanart +* Episode View Layout "Day by Day" displays a fanart background from randomly selected imminent releases +* Configure from 0 to 500 fanart images to cache per show, default is 3. +* Provider server failure charts display what failed, when and why +* Provider server failure handler that pauses connecting the more a server fails +* Provider server activity graph and stats display how each are performing +* Built-in providers that have proved over time to deliver leading durability among its application class and third parties +* Built-in Kodi repository service to maintain SickGear add-ons, the first add-on is Watched State Updater +* Separate Plex server and Plex client settings, multiple LAN Plex server support, and Plex Home multiple user support +* Intelligent library updates target the actual Plex server that carries the show of an episode (multi LAN server) +* Communicate directly with NZBGet using a dedicated integration script +* Communicate directly with qBittorrent/Deluge/Transmission etc. using a dedicated integration script +* Proxy auto-config (PAC) support to define when a proxy is used instead of using one for every system request +* Change file date, to the date that the episode aired (yup, the feature was first created here for XBMC file sorting) +* Visual percentage progress of managed episodes +* Configure an episode status for removed media files +* Configurable default home page + +Features above link to the UI; innovations also exist in core, we often inspire imitators, but you can [get the real deal!](https://github.com/SickGear/SickGear/wiki/Installation-Instructions) + +Other features and worthy points; * Stable, quality assured testing and development cycle -* Innovations that inspire imitators -* Compatible with any platform via a familiar web interface * Most comprehensive selection of usenet and torrent sources +* Compatible with any platform via a familiar web interface * Episode management + * Group shows into personalised sections * View missed and upcoming shows at a glance with "day by day" and other layouts - * Group shows into personalised sections in a full show list view - * Automatic and manual search for availability of wanted episodes - * Set what episodes you want and how to receive them - * Uses well known established index sites to gather show information - * Searches for known alternatively named shows with a fallback to user edited names - * Searches for known alternatively numbered episodes with a fallback to user edited numbers - * Searches for known alternatively numbered seasons with a fallback to user edited numbers - * Forward search results to a downloader (e.g. NZBGet, SABNZBd, uTorrent, and others) - * Save search results to a "blackhole" folder that can be periodically scanned for taking action - * Post-process downloaded episodes into customisable layouts, with or without extra metadata - * Advanced Failed Download Handling (FDH) - * Overview of seasons, episodes, rating, version, airdate, episode status ([their meaning](https://github.com/SickGear/SickGear/wiki/Status-Modes)) -* Processing nzb/torrents with your downloader application at your chosen qualities -* Subtitle management + * Automatic and manual search for availability of episodes you want + * Well known established sources are used to gather reliable show information + * Known and user added alternative show names can be searched + * Known and user added alternative numbered seasons and/or episodes can be searched + * Forward search results directly to clients like NZBGet, SABNZBd, qBitTorrent, Deluge and others + * Save search results to a "blackhole" folder, a place designated for clients to auto scan + * Built-in post processing of episodes, with renaming to custom folder and/or file names + * Fetch metadata like fanart, poster and banner images, nfo's for clients like Kodi, Plex and many more + * Native advanced automated handling of failed downloads to ensure a success after failure + * Overview of episodes, rating, version, airdate, episode status ([their meaning](https://github.com/SickGear/SickGear/wiki/Status-Modes)) + * Support for specials and multi episode media files +* Automated subtitle management * Notification - * Home Theater/NAS (Emby, Kodi, Plex, Syno, Tivo, and more) + * Home Theater/NAS (Emby, Kodi, Plex, Syno, Tivo, and more) can be notified to update their library * Social notifiers (Trakt, Slack, Gitter, Discord, E-mail, and more) * Device notifiers (Boxcar2, Notify My Android, Growl, Prowl, and more) -* Server friendly with minimal number of calls (e.g. one request per chosen snatch, not per result) -* Can recommend trendy and/or personally tailored shows from Trakt, IMDb, AniDB +* Server friendly with minimal number of API calls using both active and passive search tech * Automated alternative show names and episode numbering from XEM -Some of our innovative features; -* Automated search after adding a show -* Desktop notifications -* Enhanced Anime features when adding shows -* Visual percentage progress of managed episodes -* Separate Plex server and Plex client settings -* Intelligent library updates that target Plex servers that list the show of an episode -* Configurable episode status for removed media files -* Configurable default home page -* Source providers -* User Interface - ## Screenies @@ -103,15 +122,15 @@ If your pull request is a new feature, please try explaining its function to a l ## Contributors #### To core -MidgetSpy, zoggy, 1337, Tolstyak, Mr_Orange, Bricky, JackDandy, Prinz23, Supremicus, adam111316, and zanaga +MidgetSpy, zoggy, 1337, Tolstyak, Mr_Orange, Bricky, JackDandy, Prinz23, Supremicus, adam111316, and zanaga #### In other areas, testers and QA -Warm thanks to tehspede, CtrlAltDefeat, Mike, vergessen (betrayed), and Rawh for their keen eye, all around help, and making sure all manner of things work as expected +Warm thanks to tehspede, CtrlAltDefeat, Mike, vergessen (betrayed), and Rawh for their keen eye, all around help, and making sure all manner of things work as expected #### Provider code -Thanks also, to unsung heroes that added source providers; Idan Gutman, Daniel Heimans, jkaberg, and Seedboy +Thanks also, to unsung heroes that added source providers; Idan Gutman, Daniel Heimans, jkaberg, and Seedboy -Finally, a massive thanks to all those that remain in the shadows, the quiet ones who welcome folk to special places, we salute you for your hospitality and for tirelessly keeping up operations. +Finally, a massive thanks to all those that remain in the shadows, the quiet ones who welcome folk to special places, we salute you for your hospitality and for tirelessly keeping up operations. ## Community * web based (most likely one on one with a dev) diff --git a/sickbeard/__init__.py b/sickbeard/__init__.py index 76a5d88b..5faa22b3 100755 --- a/sickbeard/__init__.py +++ b/sickbeard/__init__.py @@ -37,12 +37,14 @@ sys.path.insert(1, os.path.abspath('../lib')) from sickbeard import helpers, encodingKludge as ek from sickbeard import db, image_cache, logger, naming, metadata, providers, scene_exceptions, scene_numbering, \ scheduler, auto_post_processer, search_queue, search_propers, search_recent, search_backlog, \ - show_queue, show_updater, subtitles, traktChecker, version_checker, indexermapper, classes, properFinder -from sickbeard.config import CheckSection, check_setting_int, check_setting_str, ConfigMigrator, minimax + show_queue, show_updater, subtitles, traktChecker, version_checker, indexermapper, classes, properFinder, \ + watchedstate_queue +from sickbeard.config import check_section, check_setting_int, check_setting_str, ConfigMigrator, minimax from sickbeard.common import SD, SKIPPED from sickbeard.databases import mainDB, cache_db, failed_db from sickbeard.exceptions import ex from sickbeard.providers.generic import GenericProvider +from sickbeard.watchedstate import EmbyWatchedStateUpdater, PlexWatchedStateUpdater from indexers.indexer_config import INDEXER_TVDB from indexers.indexer_api import indexerApi from indexers.indexer_exceptions import indexer_shownotfound, indexer_exception, indexer_error, \ @@ -85,6 +87,9 @@ autoPostProcesserScheduler = None subtitlesFinderScheduler = None # traktCheckerScheduler = None background_mapping_task = None +embyWatchedStateScheduler = None +plexWatchedStateScheduler = None +watchedStateQueueScheduler = None provider_ping_thread_pool = {} @@ -226,12 +231,15 @@ DEFAULT_AUTOPOSTPROCESSER_FREQUENCY = 10 DEFAULT_RECENTSEARCH_FREQUENCY = 40 DEFAULT_BACKLOG_FREQUENCY = 21 DEFAULT_UPDATE_FREQUENCY = 1 +DEFAULT_WATCHEDSTATE_FREQUENCY = 10 MIN_AUTOPOSTPROCESSER_FREQUENCY = 1 MIN_RECENTSEARCH_FREQUENCY = 10 MIN_BACKLOG_FREQUENCY = 7 MAX_BACKLOG_FREQUENCY = 42 MIN_UPDATE_FREQUENCY = 1 +MIN_WATCHEDSTATE_FREQUENCY = 10 +MAX_WATCHEDSTATE_FREQUENCY = 60 BACKLOG_DAYS = 7 SEARCH_UNAIRED = False @@ -279,6 +287,8 @@ USE_EMBY = False EMBY_UPDATE_LIBRARY = False EMBY_HOST = None EMBY_APIKEY = None +EMBY_WATCHEDSTATE_SCHEDULED = False +EMBY_WATCHEDSTATE_FREQUENCY = None USE_KODI = False KODI_ALWAYS_ON = True @@ -301,6 +311,8 @@ PLEX_SERVER_HOST = None PLEX_HOST = None PLEX_USERNAME = None PLEX_PASSWORD = None +PLEX_WATCHEDSTATE_SCHEDULED = False +PLEX_WATCHEDSTATE_FREQUENCY = None USE_XBMC = False XBMC_ALWAYS_ON = True @@ -566,8 +578,10 @@ def initialize(console_logging=True): # global traktCheckerScheduler global recentSearchScheduler, backlogSearchScheduler, showUpdateScheduler, \ versionCheckScheduler, showQueueScheduler, searchQueueScheduler, \ - properFinderScheduler, autoPostProcesserScheduler, subtitlesFinderScheduler, background_mapping_task, \ - provider_ping_thread_pool + properFinderScheduler, autoPostProcesserScheduler, subtitlesFinderScheduler, \ + background_mapping_task, provider_ping_thread_pool, \ + embyWatchedStateScheduler, plexWatchedStateScheduler, watchedStateQueueScheduler, \ + MIN_WATCHEDSTATE_FREQUENCY, MAX_WATCHEDSTATE_FREQUENCY, DEFAULT_WATCHEDSTATE_FREQUENCY # Add Show Search global RESULTS_SORTBY # Add Show Defaults @@ -626,6 +640,7 @@ def initialize(console_logging=True): METADATA_PS3, METADATA_TIVO, METADATA_WDTV, METADATA_XBMC_12PLUS # Notification Settings/HT and NAS global USE_EMBY, EMBY_UPDATE_LIBRARY, EMBY_HOST, EMBY_APIKEY, \ + EMBY_WATCHEDSTATE_SCHEDULED, EMBY_WATCHEDSTATE_FREQUENCY, \ USE_KODI, KODI_ALWAYS_ON, KODI_UPDATE_LIBRARY, KODI_UPDATE_FULL, KODI_UPDATE_ONLYFIRST, \ KODI_HOST, KODI_USERNAME, KODI_PASSWORD, KODI_NOTIFY_ONSNATCH, \ KODI_NOTIFY_ONDOWNLOAD, KODI_NOTIFY_ONSUBTITLEDOWNLOAD, \ @@ -633,6 +648,7 @@ def initialize(console_logging=True): XBMC_UPDATE_LIBRARY, XBMC_UPDATE_FULL, XBMC_UPDATE_ONLYFIRST, XBMC_HOST, XBMC_USERNAME, XBMC_PASSWORD, \ USE_PLEX, PLEX_USERNAME, PLEX_PASSWORD, PLEX_UPDATE_LIBRARY, PLEX_SERVER_HOST, \ PLEX_NOTIFY_ONSNATCH, PLEX_NOTIFY_ONDOWNLOAD, PLEX_NOTIFY_ONSUBTITLEDOWNLOAD, PLEX_HOST, \ + PLEX_WATCHEDSTATE_SCHEDULED, PLEX_WATCHEDSTATE_FREQUENCY, \ USE_NMJ, NMJ_HOST, NMJ_DATABASE, NMJ_MOUNT, \ USE_NMJv2, NMJv2_HOST, NMJv2_DATABASE, NMJv2_DBLOC, \ USE_SYNOINDEX, \ @@ -680,7 +696,7 @@ def initialize(console_logging=True): 'Growl', 'Prowl', 'Twitter', 'Slack', 'Discordapp', 'Boxcar2', 'NMJ', 'NMJv2', 'Synology', 'SynologyNotifier', 'pyTivo', 'NMA', 'Pushalot', 'Pushbullet', 'Subtitles'): - CheckSection(CFG, stanza) + check_section(CFG, stanza) update_config = False @@ -933,6 +949,10 @@ def initialize(console_logging=True): EMBY_UPDATE_LIBRARY = bool(check_setting_int(CFG, 'Emby', 'emby_update_library', 0)) EMBY_HOST = check_setting_str(CFG, 'Emby', 'emby_host', '') EMBY_APIKEY = check_setting_str(CFG, 'Emby', 'emby_apikey', '') + EMBY_WATCHEDSTATE_SCHEDULED = bool(check_setting_int(CFG, 'Emby', 'emby_watchedstate_scheduled', 0)) + EMBY_WATCHEDSTATE_FREQUENCY = minimax(check_setting_int( + CFG, 'Emby', 'emby_watchedstate_frequency', DEFAULT_WATCHEDSTATE_FREQUENCY), + DEFAULT_WATCHEDSTATE_FREQUENCY, MIN_WATCHEDSTATE_FREQUENCY, MAX_WATCHEDSTATE_FREQUENCY) USE_KODI = bool(check_setting_int(CFG, 'Kodi', 'use_kodi', 0)) KODI_ALWAYS_ON = bool(check_setting_int(CFG, 'Kodi', 'kodi_always_on', 1)) @@ -967,6 +987,10 @@ def initialize(console_logging=True): PLEX_HOST = check_setting_str(CFG, 'Plex', 'plex_host', '') PLEX_USERNAME = check_setting_str(CFG, 'Plex', 'plex_username', '') PLEX_PASSWORD = check_setting_str(CFG, 'Plex', 'plex_password', '') + PLEX_WATCHEDSTATE_SCHEDULED = bool(check_setting_int(CFG, 'Plex', 'plex_watchedstate_scheduled', 0)) + PLEX_WATCHEDSTATE_FREQUENCY = minimax(check_setting_int( + CFG, 'Plex', 'plex_watchedstate_frequency', DEFAULT_WATCHEDSTATE_FREQUENCY), + DEFAULT_WATCHEDSTATE_FREQUENCY, MIN_WATCHEDSTATE_FREQUENCY, MAX_WATCHEDSTATE_FREQUENCY) USE_GROWL = bool(check_setting_int(CFG, 'Growl', 'use_growl', 0)) GROWL_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Growl', 'growl_notify_onsnatch', 0)) @@ -1049,7 +1073,6 @@ def initialize(console_logging=True): TRAKT_ACCOUNTS = TraktAPI.read_config_string(check_setting_str(CFG, 'Trakt', 'trakt_accounts', '')) TRAKT_MRU = check_setting_str(CFG, 'Trakt', 'trakt_mru', '') - CheckSection(CFG, 'pyTivo') USE_PYTIVO = bool(check_setting_int(CFG, 'pyTivo', 'use_pytivo', 0)) PYTIVO_HOST = check_setting_str(CFG, 'pyTivo', 'pytivo_host', '') PYTIVO_SHARE_NAME = check_setting_str(CFG, 'pyTivo', 'pytivo_share_name', '') @@ -1418,6 +1441,23 @@ def initialize(console_logging=True): background_mapping_task = threading.Thread(name='LOAD-MAPPINGS', target=indexermapper.load_mapped_ids) + watchedStateQueueScheduler = scheduler.Scheduler( + watchedstate_queue.WatchedStateQueue(), + cycleTime=datetime.timedelta(seconds=3), + threadName='WATCHEDSTATEQUEUE') + + embyWatchedStateScheduler = scheduler.Scheduler( + EmbyWatchedStateUpdater(), + cycleTime=datetime.timedelta(minutes=EMBY_WATCHEDSTATE_FREQUENCY), + run_delay=datetime.timedelta(minutes=5), + threadName='EMBYWATCHEDSTATE') + + plexWatchedStateScheduler = scheduler.Scheduler( + PlexWatchedStateUpdater(), + cycleTime=datetime.timedelta(minutes=PLEX_WATCHEDSTATE_FREQUENCY), + run_delay=datetime.timedelta(minutes=5), + threadName='PLEXWATCHEDSTATE') + __INITIALIZED__ = True return True @@ -1427,7 +1467,8 @@ def enabled_schedulers(is_init=False): for s in ([], [events])[is_init] + \ [recentSearchScheduler, backlogSearchScheduler, showUpdateScheduler, versionCheckScheduler, showQueueScheduler, searchQueueScheduler, properFinderScheduler, - autoPostProcesserScheduler, subtitlesFinderScheduler] + \ + autoPostProcesserScheduler, subtitlesFinderScheduler, + embyWatchedStateScheduler, plexWatchedStateScheduler, watchedStateQueueScheduler] + \ ([events], [])[is_init]: yield s @@ -1737,6 +1778,8 @@ def save_config(): new_config['Emby']['emby_update_library'] = int(EMBY_UPDATE_LIBRARY) new_config['Emby']['emby_host'] = EMBY_HOST new_config['Emby']['emby_apikey'] = EMBY_APIKEY + new_config['Emby']['emby_watchedstate_scheduled'] = int(EMBY_WATCHEDSTATE_SCHEDULED) + new_config['Emby']['emby_watchedstate_frequency'] = int(EMBY_WATCHEDSTATE_FREQUENCY) new_config['Kodi'] = {} new_config['Kodi']['use_kodi'] = int(USE_KODI) @@ -1761,6 +1804,8 @@ def save_config(): new_config['Plex']['plex_notify_ondownload'] = int(PLEX_NOTIFY_ONDOWNLOAD) new_config['Plex']['plex_notify_onsubtitledownload'] = int(PLEX_NOTIFY_ONSUBTITLEDOWNLOAD) new_config['Plex']['plex_host'] = PLEX_HOST + new_config['Plex']['plex_watchedstate_scheduled'] = int(PLEX_WATCHEDSTATE_SCHEDULED) + new_config['Plex']['plex_watchedstate_frequency'] = int(PLEX_WATCHEDSTATE_FREQUENCY) new_config['XBMC'] = {} new_config['XBMC']['use_xbmc'] = int(USE_XBMC) diff --git a/sickbeard/auto_post_processer.py b/sickbeard/auto_post_processer.py index 90bec256..541ca69f 100644 --- a/sickbeard/auto_post_processer.py +++ b/sickbeard/auto_post_processer.py @@ -23,21 +23,22 @@ from sickbeard import logger, processTV from sickbeard import encodingKludge as ek -class PostProcesser(): +class PostProcesser: def __init__(self): self.amActive = False @staticmethod - def check_paused(): - if sickbeard.PROCESS_AUTOMATICALLY: - return False - return True + def is_enabled(): + return sickbeard.PROCESS_AUTOMATICALLY def run(self): - if not sickbeard.PROCESS_AUTOMATICALLY: - return + if self.is_enabled(): + self.amActive = True + self._main() + self.amActive = False - self.amActive = True + @staticmethod + def _main(): if not ek.ek(os.path.isdir, sickbeard.TV_DOWNLOAD_DIR): logger.log(u"Automatic post-processing attempted but dir %s doesn't exist" % sickbeard.TV_DOWNLOAD_DIR, @@ -50,5 +51,3 @@ class PostProcesser(): return processTV.processDir(sickbeard.TV_DOWNLOAD_DIR, is_basedir=True) - - self.amActive = False diff --git a/sickbeard/classes.py b/sickbeard/classes.py index 0102b76e..aef64b96 100644 --- a/sickbeard/classes.py +++ b/sickbeard/classes.py @@ -17,6 +17,7 @@ # along with SickGear. If not, see . import re import datetime +import os import sickbeard from sickbeard.common import Quality @@ -379,3 +380,48 @@ class ImageUrlList(list): if self._is_cache_item(x) and url == x[0]: super(ImageUrlList, self).remove(x) break + + +if 'nt' == os.name: + import ctypes + + class WinEnv: + def __init__(self): + pass + + @staticmethod + def get_environment_variable(name): + name = unicode(name) # ensures string argument is unicode + n = ctypes.windll.kernel32.GetEnvironmentVariableW(name, None, 0) + result = None + if n: + buf = ctypes.create_unicode_buffer(u'\0'*n) + ctypes.windll.kernel32.GetEnvironmentVariableW(name, buf, n) + result = buf.value + return result + + def __getitem__(self, key): + return self.get_environment_variable(key) + + def get(self, key, default=None): + r = self.get_environment_variable(key) + return r if r is not None else default + + sickbeard.ENV = WinEnv() +else: + class LinuxEnv(object): + def __init__(self, environ): + self.environ = environ + + def __getitem__(self, key): + v = self.environ.get(key) + try: + return v.decode(SYS_ENCODING) if isinstance(v, str) else v + except (UnicodeDecodeError, UnicodeEncodeError): + return v + + def get(self, key, default=None): + v = self[key] + return v if v is not None else default + + sickbeard.ENV = LinuxEnv(os.environ) diff --git a/sickbeard/clients/kodi/repository.sickgear/icon.png b/sickbeard/clients/kodi/repository.sickgear/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5119217a226ca09299ef5a5a771b600e7ec74ba8 GIT binary patch literal 58898 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

4T_tGCQ}rB*`9d;i)&y>nCL$s;m&NEs?~`Mssi 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

f(Ufj84jIDEu+> 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 + + + + + + + + + executable + + +

SickGear Watched State Updater + This Add-on notifies SickGear when an episode watched state is changed in Kodi + all + en + + + + https://github.com/sickgear/sickgear + + true + https://github.com/sickgear/sickgear + + icon.png + + [B]1.0.0[/B] (2017-10-04) +- Initial release +[B]1.0.2[/B] (2017-11-15) +- Devel release for an SG API change +[B]1.0.3[/B] (2018-02-28) +- Add episodeid to payload + + + diff --git a/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/changelog.txt b/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/changelog.txt new file mode 100644 index 00000000..71e2443b --- /dev/null +++ b/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/changelog.txt @@ -0,0 +1,2 @@ +[B]1.0.0[/B] (2017-10-04) +- Initial release diff --git a/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/fanart.jpg b/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/fanart.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ecc2e151ec33eec03ce73d54489c768a1322f37d GIT binary patch literal 318720 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
`N8CHw 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
83gC)sRGsUg%V=>7YLB@G1 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Ǝk!p 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ⅈ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
oyH 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 literal 0 HcmV?d00001 diff --git a/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/icon.png b/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1039156b45cb81261dc5c9017c14f02cecde616c GIT binary patch literal 29247 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 O1jx%Mf2;r-2mK#pyZX!k literal 0 HcmV?d00001 diff --git a/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/icon-black-sm.png b/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/icon-black-sm.png new file mode 100644 index 0000000000000000000000000000000000000000..fcdeae984604a883866bd512855dae4deb98232b GIT binary patch literal 2337 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 Y0pA|d&tOqG8~^|S07*qoM6N<$f-y{QZvX%Q literal 0 HcmV?d00001 diff --git a/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/icon-green-sm.png b/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/icon-green-sm.png new file mode 100644 index 0000000000000000000000000000000000000000..87992ada333a2adf34a24e4dc43b5350057a0974 GIT binary patch literal 2339 zcmV+;3EcLHP)B^S z7Fs3}TP++}D;HZQD^)5TS}Yh`C=^{U9$PILT`3=2E+AYl7hf~a zU@RVCEhk?rBw#WiV=gFREhb_#GG90%WiTjXH7R5^C1)}#W;iQpEppUaW6(|MK^OXI&eowZAUnCGCguhI(9Tma7sROOFnlm zKXpt&dND$GPE2%CNqRFwd^1FPP)B`JNq{g|d00t*RZN02QGQlUgfvfpTw8ryRfINC zf?r*KUQ>uMV1Zy%g<)KYG**i=VuNB=h-6=kH)MunS&L?DhGt`qGF^}}VvA^GkTYbB zYG#r(WshrbjB#m{IA@S;agK9rmNRLRZ)%iqbCGs$nKf;eb8(wDYL|I-lzDQOdv=~P zZJK;~n0$DkHFcVPe3^cFqc?<_fqtBUeWf~ipMr*+gMgVF3ys4xVOn42&E7r5)5g!=KFZ-g(BVMR;zG&T%hTgS)#N(S*v;4FJlN(v&D+k|=s(fl(%tJq z)8Wc<^?eFaA^X~HW@c8=oyJ-d^00001VoOIv0Eh)0 zNB{r;32;bRa{vGf6951U69E94oEQKA1-wZ_K~zY`%~oqr6IT>Y1ZuHXr4~pc*~ze% zjbS!-u(KhHf+%7|Dk={}R8WgWN5l$_k-;KLL1}RiExwRiQ4kb$)Kt_UBJxNX8DNZ1 z#RLX7W@aHSf{$uzZ8rfSL9F<%=hvQ_`{g^2@7{Acod1JyN4UvmPTIyXlT^10T}Omr zw=AkF%Q)2fD9$(We%i=*j?^x7K%C~q^Q2B>>Dl*UMsYZoip0n?l5|H%f^`JiJmoSH@QRAx$8#x<2MCF?2og}pmk=aCO0(aS$9V)oVR+6drBYdt z86t$FJFMIIE*{hBzAIv>1ZFjNF-D`2p_>&VmS<+mx_8DlR&@p-5I@>OQ96@R3>EE6 zki6;D`L@GgOzmjN0D$E0VD!3v({`6EkU#V$iuVH#RDU~QU`Xbch_ zy!h71Z`V5if}0Z_xBx9+bQY$kl_EKmxs6}ZI%z0kQ#lYrubhy`{yg58Q5_i;4WZN_ zv2qB@r>!#qDcGToz1FQa81!v@`zgJFrV28v!X+}&sXW+PCI>QHNX$?Dq|tC!tJP67 zW29*#)1}wl)!$G*KQ54yNX#WG61zHoKnTNbD6_r^3iv8AVXv~PUR`xLR}mQ)5FVSG zgUblQt;OCF5?myO1Rd694 zCX?Z~1eeKVW(UdxLgWza*=z~PPn<{)=yE1O(2s$h*KW*s^NsB|RT6-K!~>R);`oUK zzBT=-67Sn47e-Uew*tA@!QoYnW&;M|3N5>Nf`y=2MykEvZV`Pqs`dCn}W|~gN zKuobEBs^oV1OJFUO{`C+w|SLQ0Ts}#`?4*{|MNYVL9FUE`_5A#c&kEFbG8= zfhebkIVgc7h$*y&c$WiHaqvvTlW3vDZ?;f`iZCGz@xw(q&$DoxAd#e>ti^A42b!xZ ziB@mn2VJc%P{hWr-F8{?s~@&a!JbPNl6ZK?5xeCtHOomj)layA?lw|%4`ncR*9W0c z1X-z(;>9kOAS;nvgkgS<9f@K3j}T~P=+eH zjP&wPcJ&yWBl-knV&Tob?>*SdQJfPg2ti2w7mEQfNp}~m^brPBQ3|2FU(HBr>c=rR zM-P&Gaa+t@^dPDwb^lB$$zo=EK{-CdbcvCK)P?W>4tXt6<4(^X%tRF*x=<{2^Z(=T z*R_BrWh>WLKRCr55zkE_$))Z~E_B8;%o>!~g`}rTT$0FXHH&7cYW;l?L`LxJ$JfE>m8?_qV)yElI357fDLjx-{p{J<-+d?U`HmO! zvVE|bw&&WLig=w3yf4daI2`-!6%YQY^^cpkIy9=GY5V7P>-UiUQAtj|k6s)bGXUwV zOpc3xwR3#TVe{>L{oSj`HD^LARD&yT{?C?k?w50H>@S0d z8TqQt8rR`ie&}6hIv(5+zi+sl32Qzw|H}QKw-Wb5-&Z!){=er#Vx^2poFo7M002ov JPDHLkV1iL#G%o-E literal 0 HcmV?d00001 diff --git a/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/icon-green.png b/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/icon-green.png new file mode 100644 index 0000000000000000000000000000000000000000..f8e09dbcc8f0d510855b9ed7ac2bafda5aa84394 GIT binary patch literal 13861 zcmV+=HrmOFP)jbQ7;`$91Bw*4^k@)RUsr! zBM(+05LY7;RxT(}ClXjB6Idk`S1%MFCJSh z8C@wYS1cb~E+AYl8(u0GUoatEFfdv!B3>~aU@RkFF(+RvC15f$T`?eIE+=9%Dq=4q zWiT^fIVWZ-DP=Y#XEH8kGCW~CDrhY%XE-xxE-Y&=D{4V5YCAw?Krd}FF>F09Z9_z9 zLo;wRG;csPaW64&MmcXrICC*Qa6w3IMm%y!I(0KXbW1;XFHCYvKz2<+dNNFOQ$l!7 zM13?=byZA#HAZ|=Nq{g{d00<Hn-o|?3umbamyzC5F~ zqMf&*qrg9=!8oV6rlGs0sl_{_zNxIoKB~Q`u*x{6!K|*qt+UNLv%$5i#jvr&u&>3p zw$MMe#JIWAIJL;MxyQS-$-BGMI=y3fJG+c?78LB-rT%iB7< z(!|EyI>XV$$KE^4-8{(OJc2LeJLA$=J)&<3rWt zI@IJu*X2CT+t1kNJ=5CH+v-8q-O|wC($nG8+TqsN;@#Wj;NIxs;Ogb)>E`0>=jHF} z>+b6A@a^dG?eFsL^7Qfa_w)An_4xYt`TY3%{rdd>`~Ls@X$y`?00001VoOIv0Eh)0 zNB{r;32;bRa{vGf6951U69E94oEQKAAOJ~3K~#9!?Oh90Q)jjY>szK6lXzBEj(HIL zS6HqDCa9$&bX|m6v0hOsildzlceJ=DEiVYY~;9c;~pR0 z@$W$V-_&<&?>JaY_wUqxxMIR@^BoU?RsQ&l^@qN$udlED{Jj?^;CCGui1{D6{yN)* z9GBjm1i$c`VjuVnc>Ki=>+f{%*?jrX^CMsZJpM8HckAuO#$O!HpIu%*&bc&xGyLQK zPkpnth3!twpU%Nz`2_xY>(sW)w6v8wPhNF?sP-?zep@1#wCP$K*LNGPT)BAVhLg|6 zzmMM!e}0=8Dd6$>d@6E&?x`mD&b?g|e?#n#e*K(tdpDfgyJqS9dGi;hZ8_Nh-)X9C z#$U@~f~ZinQjHMB7sRYN)e1kVU-X;Ne+#}Q95vT&dm$!7K!{IA{^`K2wncF)DhR3D zDOA9V*+R79o%O#BlQ`}@qWSKfS`$lCv^>nor;--P)4wD9*UuEFyHEt8=!M7c;~%u_ z8vPqk{&VVyj;~#*4&qBu7e)~k6k7)RFEhC7w}GU=VQ&zf@%6Mv+8$!|N36dIj9lLq z8^o9QU{fs*io_E5NKQxe{0S29UN{B6cxk~SYz**&PdEgYz2*2~syF+v--BY$Hl_u0 z{6tL$#U2I;G`#pI8^am3gooS+9mSk7nj3%>)<2SN^3XQ{>^1F- z;v==UB&RX~5j4O32m*qkn*ie7SSzK~K9F3HewB5wEpHBS`csdN`X9Lqw*UDwzEAvv zF<1;ZqV>&3Yz>S)1pJ?x7vv-VAc1)xftE)L7CZSrIWtJA_L-zXi!Xv6c$BQ+NW%XY zu|c6~KaiB42Iln6qvIS7`;ff=R?z`1FU zgkLap6WITM$5U$mk(^osn6UQu54{8eG5_HH9FGk~eiVS34qkH`U-tC)ha3(J33zNh zy#JH&L4M_5t)}?7aN$ozKI|J{1>nE4GyS9gyAq$?3#w)Rh=<(&1OMmZ{Gbqj^RHI& zqab|5ZhEMit%|1mSm<92b>vJAj{wKln-CpZ5!l6b;CK3sSBC$fH(L5O)2NeCp6it{+ zjK3{b^d$uTp8ybDdRXDW_^{+yF?0B;v_Q8SfOAYOD1%X8Vtr zY_=Z>*=?pXRoc?sIm>2i#A4(|0yK}nflo(2gaRNA(EYt~0r%n;OX6NGsHisD?F?hJ zm`!zcMq>?-(O6e!GFutjkBqVEXnsZl61&+56txACOov83bP^ara-9EC^Ela;h~u)3 zRAbgn27{iPY79p6_cm*F>BeLvaV-MA@}q|m4vg64%<=KK9vz9oU;d}gW~tNnMKwk< zW3Jc`CzQE_1H72yaI0M-9zy<)$8z#75hoQ?F=o9^-w)F1>lkB6idfc9brGM-b5$MeJikD>)*Lq;yS+WZr61O0*BLMavocmuqd1KWD zv)&WZne3ITkV|Wz zIQ5?>?tQCS?+w-2OX6Hx!;s*}y$~K~e)rd|pcwW#N&g>=;(GsTar6$0S?84i^kz#Q za;*pvFLcZ8c17@O!v90$J?x3#%>PNkw;H|WU$3`SE)lxJg!Ia*L=i0b6$4-k$o6l1 z199SiG0M>!^kbN%pNNBIRz+;s=K7TxGh2P*UvIMHhl{7A&XyrJx#QT6Ko2_}Y(?Ruk4dHP4{IZMF2bKklu>E% zk$=5`sYn_dT~ZS5MipTFn@e8Cms1~{_FF^>e{Ua1q+DkIg|kZ;ov#AWn`&~#YL5Jr zhum2MnsOGL{xIhO@jrY$QU0}=a)HvtGpS_Z`NkUG1)yV!HE7?@)mb8U)7f*d9qu3i1<-EAtBW~;B_>Z z|A}9d%Gb42kn7|Jk|Z3l8}xn=m=UkvZ2WdJJ*G5?DoEpcyWB)_-zLo!9X1Z1*}Mzh{O zWH1%vRad5Iu_=G6mZ3h*_jf%$LBrF*-6sxV<(QDL+~G&c;1QVMi+Mxe$Exel{fpuXe=bjO?otJI0*rcp6LaE^5~NmX!cn^zxIKe(fW@B=gkLc9J=kB{ zXs*zQC_LY8-{6emB2jXM)!=slm}|0R2x(I1D%5Dok_1-{A}v@4O^2HXKmern=KyEu zM}~4tKUXA+z!0irs;!n9o!DgB}5~YWXe9qFaQG3Th3$%ku1lQEtV;=nQGU_ke7zlKOVthyPyJdL^3M5&jGYrc)^6PwEp+7; zJc}{0<4u1CKu19G@7pM@_CA$lZn@o9_m9b|s{YAHnl?@@y_pKlx6T zWdQld_c)U=HrrIEvs9K;*6EBjIj+LxQr;H)$e)eyQ~AV8Ei8L+9u>hA`VnWF$fh^y z3bIN}17iTYgh)%HleAX7&Sb3tY*_q+#Fbk({~GoRr~5|$!vO>Blya88N~RRIX?|iPs9Kpt#MwegW!^O#(5#~A?yEWTzLd^>{;x)Kj#ktOuWpp zH_|xkztrLSs2D@tk#y76z$$okY9kQaCcF0X+>p~!Dz)lGuIjVQ7s3& zo2|_EmYOPjseSJk6y)b`&Cf3=+*eXwX)wY~%y1nYQxfOODGZ_afLH8~@ZjoJmOZX^ zl>k3sBMI;t{KPiKTy>&k$A+xbq-UPcsGNNPD$Nsd3CXEhIqwt}musudHk;LKbYm)@ zUe?OktY@@G|CyhYwPbD_zLc}C0)_t}E-CeI8}f@wwR-#!quyGc>@rd+cn$A?ul*1h z8HQD0^E!SQcLDS&z0C-P&UUL_TUxjwBRNik#3GSIB9SQ+GC~pwd_#t&#LZ33+E91| z9-c9p>uL-&-559E6;F8AS03G$mz6p@Ivih0441;!Qo!ZlN@ApXDj{`MerctN`AMJQ zs*o&#n)L$)FVp~NqB$5zszSUj~3;v`t$5)HGH_^Qf+U!?Me!eiRzg@=M-tH zvR%~@Mo7c39cX#ccLA&i6zpOIfMW87;=+QwRm?J+Uf0T-9gO5BU)Jh4ARvDa*66b2e_=n3KKg<<#Va z=&n~%^?e;!Q*I*V{Paew1V;Mm2v54qI_l$HjX*)r`GlXjzkOewtwRclNQen52fVeR zjYxd&+r_$H#&Iaw>U0w;4)9%CP!g;3NM- zcd@J^moHU6dW0y5jQ!om9We59mTgSqxoQJd5Y6|H5`PWG@Vkcir~)owBN*>u3=UF9 z$AybU532+OFEp@@FNgcK1)jUZvR_2FPyr}x)scd%*$UaOyVOapOws!_Q1L&oj?3eH zPX`^KT{HqJ&}O@(sys^}QT>YC6W$R=x{!`MiTCexpYwq&u5=)V=y^tq<-#|AQy_08 z0GLLt4)^xgky?XNvZf$KT=tS)p0QMpv0&5lJ_%q1b_8yv2fJtmMv9!8I-S9;T`u!h z43i2B>A(>+@aB!a(AetIT@6;X*}< z#5)Nn!joUlSiUS-R2{3O{07B@+JCb|RstHb#Oi_gTk!p9JuGFapo=T$Mw% zCBlvNqBxN^3@E~~wbfOXmD>C`uhx(_t12s{>O!7EywPsR=qUgtf6YB?2Yqt|FSG1- zv3yq#Ak!3BASTWjvP9mjVsUEa1+&>=vD@AWmw2;&3Yp>(vu#IM*!vf(d8o%DC`nlC zkWWQpGq5jwDn{T6h9i-)Bf?}WP>Vf&{&0n+!0HVA*|aG_&zFFBZUuwANlPJ$E4AB7 zo)Y)m0%^Bc_EVqA=oerZaGVncAkyV7nNkETfi?EhIM4BrN|bz}t&+fG+#vCI2_Z?A z&I~2>g($VsXgiu9>h76@30}bdpl?X%c?>2GD>(#!qL(E|P&g8%R>Bfs+_yKmG9uYV zlT!f3AOAVU<0T|f1C^AhXRXM0tdB|J757?-R)dw9Z*6NJe6;@qcRq?VOXmCIU zkXmVHs&}WV$D*x9lipw_r8^#Cpp2@HmKqaNpz=_H3UM~n1H7<%S?ov?9^wAW;u>;~tojD1e zj$B6feQ82Z0sPxn0T3&orZ@z!4Bop=S7UKz#thcdXG9)u;XhY0T}z+}!^NKc{*p>( zSGu9DO#nyyzXAXU9OJ+N&Mn}~i8}K`@G6EeMyXJb8gBm9}oZF~&TPqHE&GyStZTajk%_urKFRa%kE$ zmOabi3jhx2UJRqNRwRj3o}iclyQzEeL&aQi|1W?1a2of%<>|Rc#t21x(Ah3eOt8_j3QmrLV^$@_b=Y1`hoOF(5 zFD7!t1H{qAJ?jCPebJKeew%lWom!zfC|6AYE!QwFw0hTe*+_7!c=X~rWB?~(@g+KkbawGKk>;O z9{w@Q{_-kEcR1F;rXHQaM(b83>gN&=CY5tklv}>Z5Gne#22>K&j-HLl2J`0b735+3 zm5>mjiaRi!@;@zf`cju#`UboGU--z z56t-^Bo?q5L%|O?YNWXu!%WtVsDF=-HgXr#neDqZ{n^o!%wcW^+$( zgo=Uu`0srazyz>^vp7a1VI-&R^%||FJk*B-!oHHu(o&em%}%J=%bC&#+W5g?)LfpNsy9b&RE+QPpkgv-Q|w$c|;2_qAWQC!CRRrY=iR;gj^x{{of zXs9S_zlK60mZ%dlc2_bCS4p;++1fKVNJpK-Mqs+H0>E0(MUj+Bl%nNo5UerVY}H5e zS1n11o~&-G{t2HFm$W>uwA#k>uc4@pu^Y9;c^S!ZQ#9df{QHxm6H>Ca9zA1YOx)H( zo7zKlMo{xEVpqt=@_@jA5udV-TWK72P_0sE@~xaLqBT&?Ypg8YSFkmY(AI+YODd`@ zjIsayR5j-B8Edt+WM4u4*3DbxYK1dn|j9 zOAF#95bk0LbgJZ zKf#!dMl1#REW`9`4uQ^O+1P6WZ3H!|o@KB3VUj}Nhb-H))5R6txL{)rro7!HN6NL;bylmnrq4bTrX;R+IFd?h z^iRJ)zzRr^(jhL8ZAKN-7xy(5##DK9--e9j1Z>qb;hMOVtb(JJCdOFP&Kj_P=IGX} zl!WMT(qy2}M90le&B`mTs5Uc}8n+^_R4(W6pQyD>EW6(yBXy?V043mJXqp6V{@(2p zFqpAHEZMkh_7sIkNKTUwi$y|7_-qUdsw|Az(1xDQ?8{2Pj*>2MEGuKXta@Rl3rC*ea3AH$gZ?^= z1mc2CYj`dT=9iJ)VHYj`RYh3|YR-aUXn9a2{B^h1VzXDhlOS{D0OHSy&@;>PD{7cJ zj*Vcr@D1nOQ5w=>cll~1)kRd|d6vEGpCJk}AS~ue2>>GA%so5V#1tn8C1EOe ztf^(fDa%q-GWWHjAS;n1xulmTp|daroV7JdYH5St28oRSfwT_0PICOAkZX3LfjK(& zcYUYKkwn<95<4Uwn^fLoNV(3){FA#nE0lT_8-Wk~GiY@fX&a*4M0pa5Iaa5+CR^OE zFnND-q7q?`Fr?04E1fIiOs7fdTnEc;^3&}7H!-N*PKUaYz}zDjdbz1g`CPGITM3Y` zdqx)XUy&l@PAAgx?O1cY?x*<)&^?WnK!lq|OFnwR*fXl}zDA+;EApQsR~9PKeg*}!b|cQ=h#)3qeP^ixHu%S;*tu29n=KMhcT z0Rp!(DYwZUN%E2I(Jq56&)))&Xm)f8!2HvRRM*;*iaF)K0SWUdM!Q+K-H^vRy?_| zeO!gvQk*1mU6O> zdaEHnPUxnb1o2^p$mwzZ62R!MVU7|N(pT9|NXAi{r9%LlyFEWv6HZ@Hf%*mp*cT-E zB}KQY8}XAxUfcU#|QaQi#PlUZ_Uz@#kG( zVV0J^1TdkVWv|ZX_d~0zkXVy-#ALVBFr^6{ff|)K;iz5LHWtV9y-{0|4^tO38kh_c zu2yL@lc#7VYc!hKIi)&_#i%>uG$%TPb#q6&6A3d+KWjH8$Ykoi6seLQU++gVIK&wg z$qeq-QNlGkSh#y%Q4vH--``hm zuv?8?2F=u1wyN8$JrXagC`^*|tDu%@i--722Lx_n+55S?es<9#p=kETQl@%Iy8xg) zis_y_GZ`71jbx5&4EbAI3dmg3BSW^iQvfJBNh9oEX9}fuP7n$7lK=u2FvGJ;l@v3{u#Ap#fzMbrJp0bF}vb}9G3aih7i{AfjG4fi~DvndaG8(8G0 z-(p$E>IaVmT}1y^)o^7`%$AajgoL?&-f)z25!gNKr0Na@4!}`}i~J%0GD%_~&-(}u zwgV;h-nl)ay=3lKp-3bYCzslK=U9#QttyGv_Z0jm_6OL@GkhPe>+}Xs^~)P{?IEO| z=ymv@!C0CsMiBpz2s6IvRRC|Y7svUKT2S)IX%qER{V-k_X6k()rF{^9S|NG4vPY4) z&I-o~s+>wfv(;?snfR?p7Wxualv3;N;s-xH(Ps&a{1WTHHI&?^n66Bbt?%)Yt-Cvh zq9RGJ%%80)L*`ptnWneghr<@e`zis*57*D6!+d%gwMf0Orfc#j1$Dz~>27 zJhT(mz%JjW%TBrmL1953DyMHt0AqK$r~zmc>=Zz_cy2kd==JOX`gb~X=Xu;JEP=T&NfHXdL{+OA^GMyp{k-JZ# zE-AI!%yo5jMw?|vw4{3gA-U8}Lh1(Q!oFycSDT(9E z3+4L#QqP{dy4?2)EjUh@U>?HA5xIX%=4Ge@Og z%=I2N`#NG6k-7Tp9!g5Z9{Y&QKaum-wzBMpLp>LOGZ4TYj}*9%z;1zqi0`#tjE_3c zHZC5ug{_YisDCAj;HQHJR2E7Ja@mG?F#I8e58L9)(ca{VV2;l1^kDb7XzC3B+}Kt| zWwx-_5<|aW?_~ys4j_|A9_l6*29rbBuOfru>)~7gycCtZg$-n?n&$$5&RMq1Iaxc@ zRY(vCV1h9VvnLN={TsXR7Ir_B)Ih#wno^?BZZTkGm-n#+1DEe&#z4aWbUP^pqvqf6 zQUFjVeSKjNzIsF`9Tny3WUDlC=rh}p`vc2fd3GEA>)n<7ft$A+8nrTw?pCj&?7Acb z^RM8?m>GP4Ab0_it7G@Jk`TGaI$#23$gz{Wd5TK^VoL~jR8%nUDiJ_SBR0Xe_MT^1 zU*kuv7r&AKkF)iOOVdzD2m5JT5<837NHFl$VgW$HtMhqO;^B+;9BivMR^Uytt_85H zBDXYlJ!e5FRd$7fnCB*^9>C^+d?js0{;rb?BZgf`J$s!!+t4}T3egAH16}r9aQZE_ zc?}H$Xvz$twvz|?Y_#Y6kH3W3d5co25r5`!%-43ReFZ2ZXGL}{K{B`R@+WuLu2dV( zSJVETO0T37*UXe-1+WFc-o=^i(`}$l`c_(J%$gJjY?mG;cpxb3IC&gzd;y3Aeiutc zApU%EruEtmI6y5tytuQUn8xsjy*%eHpVoi2zqW;SoZEF7Vu%!PUZPUzr=<^f=0|<; z-Ap<(2n^=uGsYY?}vc$yt_93_|8x%c2Iq{h;lwQXEc8s zdpLv+B8RHN0gy3mE}u$}d7Hh_W!w=I$XtxgC0-E~fdz2GtH?0)%Y7G5sd;U8yqef9 zfKb7n)-H)M8r-dpG#uEP5nw(W&$ph8q~#P%`Kk(}^7KqK9lZEf>&oDusAKT@@4|$q z_KDBbf7Ii5-T6RL!8W!vlQ;#ZkouIDCvCt%)6KbpP+EGxDe;pXT8E0Q@4DpZ2pC(} zEe{DJsWDxdA1q(_ucbb&0XhHGTenvRMI2|ZCyt6e&N|pTpI;}fY^X~r_~OitO^Jf% zU1tx!0D+Ke@dyOq%}6?9--|qyDRb z{b8o_Nu5SPDfM(gkdm+CyjNS6@>|3+0lAVBG4jr4D z9)d!pD-WmB{qq$=m57STTq=kMXw`bRmA!qqp71|i5=tHFzj9Z!V#v(7sO za6dN)k|SQkgBCThj-?&{*{(?fYq{TXuyjQrj4h%c}II#c3WrQQcAyt z-+t{)&>i!y6JOYyih!kK4qQ8c*|>xaLhHJ=AV+XKS%)7jiub@S4um!h7!R>J6lF@HDe9pn%zqEQ-z%YDaNB0hv(BRCw zY+2`_fT1+r6RoE)>pw(B)q6fz(^(ySCFG1x(@C4$vS3d{`6;ip9x`oN7l5bTB1V{)@2gq+R%x z4FCO#H(#2BVaC)3@KFU3ZIU8?z$vR|V>{kS7=^bQd-;-sZCp&@HGFrGr&|E40QMM7 zz!ZCV6PDx`QH0?T-cn)}o7Z;gVCU>kj)65J7HoQV(eRg`;RcOa2Rr%XVxq>&u$SO; z=%qvo#J82lPq>gi!n_F(~>b8Ra4p&f1BM3xBZCWq!3VW(c=#q~8 z7QeKwo3S%91_D-Z2YTTMZiyri@Y3@zV0y39cnOFGWWo99@P-6SvBmv-IENx}f+8%w z^RfJc@H+3F0^`hnz*pi$x_uTUpZ{8{R35W13Nuc<+I$_%1=g~AZ=Z@>1Iz#B{)v-T zteDnag?)(4(pt*7Y346fgCN6r82TKPcB(}>67RK!kFf z_4VTe--S0$IW^!qr-5}oYFi|loN49yT3_OYxKRCVr>EF@Ja_4s_$!TzgV5o|^kBi- zYdbNn1eXTzERFVJ)KLaY<-_S5g?=OJ$qsNvA`ZVwhFhRuyfD{wso{~T@eaDN2{!Vx zQP4>4VR8_21_RKjDXRqONjvZGwa*D-Og#lh}zc5wz?_DdJp3CF;_bU;Am}3 z6MV!rzAy$q+gm}{U%R)CPeVBOY>YrIXp=F1YR)-O({8eD+ntt|)jvyt5|Q)%o4o@k z!^+!GmK=*L2_dPy!Z30YG&b;Vge;D6( z(g@Lk6qvx~27J|Ron@mmOm4jH#?Jf&!WTclY`fvpUYtG$`$-K8;rx@PHKS%;Wosj# z)19qP9F_SC`0s)bh_~lpZ@$gFZ#RLHhSes*?%}nz6T$gW-?0a2Y?*Tp%y%vcXdZ5U z9%4Gbq{TNlV4#dAdJxWAZ#>oH97qVmqz>a{>oWZ);&s#?nLw;AMGlLBP9k<(Oj*fa;zI02<}6CL#%?fWLzgkjvE( z(nt*Yn>Jx*|JwY{dI5f)So5X3ghl5u$bgW4AgjD}I|!gL{a;S`Y=iM{*PeX~kfWOl z*AbsO*c)klHHBTW^YMZXXQ**uumGN@4$iph{rCRHs9KdP3VC z-iG%Y;?Ku#=k%g;poBVhK$rmXB5r3DJoeJ*8#ilTcXBo1Qin1;D2TtpwtUy%{MW6s zSWPq?I15YHUCG*K_;vnCKzzitZAU@!v86i|HHM@_Zl?=S8xR6)0`|Q5b}M^lfrq}p zoX;DZ8$KcP2;YY3$`n#6gEO&&-vgCUrj~aa0T|oX$3gESr%fN-wG|t$uNDZ`#9nbS zfBNfoq1?y1qJDH=0(c>qm)6)Z^C>uJt-WIed$okV^h^if&yJY! z{Pf}Npr~aFC5ZoE&v6IqSh2zZIuLbMV8DGnC_x#q>C(MBU%v~-n8ik2bZUp^V2pbQ zy&2f207gZ91-^b*TM!h#nA|Z@XPp@dyf_6)h(i$5JRJg>j#^&|=i&76JrpmO_+&Sq z!+PbH&XFRa)R@=s?LYCLE`7*^1#?D1*sx(R~fj~~f+YH-P z^%Z$LpN#()PNQ!ZfIKEMHWsV2>r*{hT|oFUx0bHOBK>+gF?YkKJ~v_b#MS#ZEpU%o zhkcB#z*2OUZCpwsH1go5za=4Ck_sZHM27|uEb;Mh?A5{Dh7S+$sa6zH#AVd80OcHC zPaFoW-$JTA^s@B&$ry||?t4&}A2?(PR++Gna?6~R3ju*0k2kc>nnnQTEC2Khdw?XW zq+{YCOvrv08Beh0)rCAIZx)E8VLD+tkf`S&zSPQs`*}7Z4U6IQb0Y&rW2=6CmJ@$q z2#Pnx7iG;}obvr5#?LpfK5g*y3=Ej`d-fE2b$$@m08;)uvh%U)x{myLDn>v@9m6*K z-iiP}^-TthhR)%{m7wbIza~Piz1{OB)h8I+JKv*cU=v@*;c##BxvQ3(W^)gm1xr)u zPBqHzRXN?%GNpjZy$_M2$Na@V3GMunjsdmf^)_GRR7@KTpyh|1_pkSSe(h=kk1l(z zo;QJ`e03f+_fl%jjkcIkZsL_Txi}SopQcE4mI-`tpp|Wb*F61BM|1=WKn-$tG@tfj zZrjl357pQ1@?!EaOOs9Sh*B(}!$YGX{J!_7#8f zPh2B{*P!lx!gXiLu&pHlfc*X;e$zMoU698kq!AQJTHbj+VA|ad4Ar!96gb}Xqy2l! z1t4km8iCUz$u#Zo1aOHm@B8 z&gCY*vX38f>f4`v`QFsF2p2Y89YBa8$y#>*hzGX-9>*a1N}>P-lg7Ze1M%}c{@$gg zrrH&6H$yTGugR9@{eRn$quczwA^W>d*F)5-vz@N)10nFI{~d*m;Ah}Ck0dW>=)^^f z#s|EJ@yH%HV60*KKt90hV0Gmkspz0*0e0P-_P_)H-uZSZ9h{D#e`7c617`u0&HK*B z{)j$lP7?$#>Gn>UC>pS+e|l8=wIO#w36_8Y7Z?Ty59wCb<~W;%jb!bF0o{YAAuT{A z?$ZKFx$d(q$69?p(8vSZ3C>U^kGHtN0SU>#E~;w8r`RYSzD_0x4In|~fU}KK8b6=n zZ6{uG^K%bM0N@TcrUj7#-Ab|Sa&X@A%UuSQmlY+$46CaokbVh{<+&SF~?kuQncC=hxF?4{R z0p>|u%#06(Jn^*y*d4pO-~mEGhzG25W;}ZXmhmsX`S(c!`~X9U8e|)e|LaCaS?K71 z2S+Qg%H1jV`5ZByfFT^n+=ZH6dXV>@ffxU=#9G#IX+prSC4mvU+DcX$>hG{EmtJ}7 zLEe5eI3wGx`)fdmcQpK^PaB$>Z+^XC+=BHlO?;rfAaRCTZnyf|pg zD-Bd3lPxX}Rw5EqEfH5E6jm-1SS1x#FBDlO7FaMAS|%J>DEND3^YA&8eM=okRn@LA5Z80)!J}_@HFK$GiO-eOzFF9^SGI2+uP)#^< zF+FlgI(9TabxS{ZFr-*mLU>O}dNV_OGemk&s9amBUR_FnF-U$?O@3RhVPH&yGf{q4 ztYuxvUaV(nQ;0EBgkW5WG**i=SBPX^j5oAya9N9HU63V?Cduo??ah7_#f_`n9e0QHTyn}^xntro~ zg}8==dZRbNh>3iqIkJt3d7pxSr!;=2JA9#p#EXo;j*Ww=H=UY{fTf7Uk&%b4JBg=@ z$dr`6n3IgLHj=20kExW7vp9{bkH?yr%$b;%sg{qmI+wLPjjx!+pPI{_o071Uv8S7x zxHp%voRPDfow_-gygARJpUR}4(4(M~wV$87JI1G=ysDtZsHc{+}=wXnmluf(>s&pp?(M8(BVMf(96=|Ldn<5)8j+i)6CW6I?>q8*XBIV+|SwQKHBL((cshJ+uGjjL)qZf z;qE)w;@#@xhAFE>GSUK^YHld@%Z}pcW(CC z?vA}@VCH(d17SGzAWV-J6MRWbUhH6m8#wV4)YB63C5VV9wFD`WXt2^WF*Uoa3q7@> zQ?V@X3}&~P)^j@%-^$+GJrM7ZeEG}Y%~(`9065kh``~_YfIh`c!zt zJ4frs+$oas`Ob=UXU^p(m`|178B*DqF2=@9G0D_Y)ZTn2Nb?4O#UZT%LrAN_UTVHQ z^5HrurqO9o3=-}@wxRxZNOP?WAf-eO5yT}*gaFoFeru%i4Gcm&qiR!2YfFR8h(n}+ z&N;V2mTd!SCA4*WIl7YT1`0vM#~`e@oC7|qey5`<)N2dYIQBPk~; z06>y5j`0kd+t+ARLWF_ZBcn$`7CBSLQ5qu6#d?OU$JIECgh(YdeK+=Iq;4BH~tL5(VM_V*FPk=zadVC-6B=3pGxjdNtCWkVSKfO+>YWc2AofbcR$-Yy@* zThGAvG{dlTgUz0y)M%w0lY)^I6&ND*j!RvP+wJzyET3Wi@-iMbV|QGs!*yCLXLAq| zdQfnZW^b`&8x6^s1*=-^4u^efO;KjDAtSG*iqasYIu#a(On5~N5z_HOA(cucN#I0$ zvLT*-_`5g(DTqM(_&}tzLIz{-ygCgJ3Z~Iel#YbO>``L|)_( z!p6B>@#Mh3Bx^aYPCnp;i0x+C#lw+u>o`cvXBoEOLBS1_WOnz^Kg^O)f)h!J@PYv5 z@<3$9Isi$%n`Rwpltd!IGaRhj%^sdb@@+WJ#ZPTA32LVWB2ll$DInFrxfxeYNkK^s z-Pc3+Fc-MS#S0cT@cy{<6a@Rn1|p(QgsIH%Fzz1i!UbkmL#xN@?OI>c(#2iz@d|Kf z;1C`c1qo))6M#?VVvcdsT?KlbMrX9GG3X$QHLmLJVSGynsCfM2V2u?n1^kqeRX)aB zB#{#&MUW&3pFX`jDGY14D5YnX6QGrOcg|FJ`#B{)yB|h6r*w%R5V5dt4m5Cr`wchvS-mn|U zLtg?O0a@Q#R|_%m;)#ViDqbjJ{GTus1H`o_vm%=&+(6n)si`1Zm3aBDzdM0U&1Y^P ze=u5sfg}skrYq97oXz?A(IF)2EpvZ5X3@rdn(|0n=fngI%;1QLV*X=uQ?r~$iX%ejtVD@f7HPt{t1pBPAwTaf%rX73G&1Ko z|8L&kocpKK*?Yd@a&D-9$y(G_>vHwc&-$Z=1~w+Fxc1nOv&Gf{<%Nqvrhaw4GIu+_ zuZTn;_1m(N4)ty^RYw#CBspYKf9dnH6+bN-D(^GfhMIG}nR4dZ?@b?s2MZ>wG^{#5 zazo)rM}uPPz6sOb?Jd1|f0@ygy1(saKoqjEb|XLbUnh;Qi)}x*XT$@@qW-DE^0=F0 g&*&MU_uz2#A6tVq13E;}xBvhE07*qoM6N<$g1YQSZ2$lO literal 0 HcmV?d00001 diff --git a/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/icon-red.png b/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/icon-red.png new file mode 100644 index 0000000000000000000000000000000000000000..a5c5c4823942f0b04fff9e5918fb8100bbaa61da GIT binary patch literal 34768 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%0ADRj)t#F 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 literal 0 HcmV?d00001 diff --git a/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/language/English/strings.xml b/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/language/English/strings.xml new file mode 100644 index 00000000..04185026 --- /dev/null +++ b/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/language/English/strings.xml @@ -0,0 +1,18 @@ + + + General + Action Notifications + Error Notifications + Verbose Logs + + Servers + SickGear IP + SickGear Port + Kodi IP + Kodi JSON RPC Port + + The following required Kodi settings should already be enabled: + At "System / Service(s) settings / Control (aka Remote control)" + * Allow remote control from/by applications/programs on this system + * Allow remote control from/by applications/programs on other systems + diff --git a/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/settings.xml b/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/settings.xml new file mode 100644 index 00000000..ab523307 --- /dev/null +++ b/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/resources/settings.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/service.py b/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/service.py new file mode 100644 index 00000000..534fb141 --- /dev/null +++ b/sickbeard/clients/kodi/service.sickgear.watchedstate.updater/service.py @@ -0,0 +1,361 @@ +# coding=utf-8 +# +# This file is part of SickGear. +# +# SickGear is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# SickGear is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with SickGear. If not, see . + +try: + import json as json +except (StandardError, Exception): + import simplejson as json +from os import path, sep +import datetime +import socket +import time +import traceback +import urllib +import urllib2 +import xbmc +import xbmcaddon +import xbmcgui +import xbmcvfs + + +class SickGearWatchedStateUpdater: + + def __init__(self): + self.wait_onstartup = 4000 + + icon_size = '%s' + try: + if 1350 > xbmcgui.Window.getWidth(xbmcgui.Window()): + icon_size += '-sm' + except (StandardError, Exception): + pass + icon = 'special://home/addons/service.sickgear.watchedstate.updater/resources/icon-%s.png' % icon_size + + self.addon = xbmcaddon.Addon() + self.red_logo = icon % 'red' + self.green_logo = icon % 'green' + self.black_logo = icon % 'black' + self.addon_name = self.addon.getAddonInfo('name') + self.kodi_ip = self.addon.getSetting('kodi_ip') + self.kodi_port = int(self.addon.getSetting('kodi_port')) + + self.kodi_events = None + self.sock_kodi = None + + def run(self): + """ + Main start + + :return: + :rtype: + """ + + if not self.enable_kodi_allow_remote(): + return + + self.sock_kodi = socket.socket() + self.sock_kodi.setblocking(True) + xbmc.sleep(self.wait_onstartup) + try: + self.sock_kodi.connect((self.kodi_ip, self.kodi_port)) + except (StandardError, Exception) as e: + return self.report_contact_fail(e) + + self.log('Started') + self.notify('Started in background') + + self.kodi_events = xbmc.Monitor() + + sock_buffer, depth, methods, method = '', 0, {'VideoLibrary.OnUpdate': self.video_library_on_update}, None + + # socks listener parsing Kodi json output into action to perform + while not self.kodi_events.abortRequested(): + chunk = self.sock_kodi.recv(1) + sock_buffer += chunk + if chunk in '{}': + if '{' == chunk: + depth += 1 + else: + depth -= 1 + if not depth: + json_msg = json.loads(sock_buffer) + try: + method = json_msg.get('method') + method_handler = methods[method] + method_handler(json_msg) + except KeyError: + if 'System.OnQuit' == method: + break + if __dev__: + self.log('pass on event: %s' % json_msg.get('method')) + + sock_buffer = '' + + self.sock_kodi.close() + del self.kodi_events + self.log('Stopped') + + def is_enabled(self, name): + """ + Return state of an Add-on setting as Boolean + + :param name: Name of Addon setting + :type name: String + :return: Success as True if addon setting is enabled, else False + :rtype: Bool + """ + return 'true' == self.addon.getSetting(name) + + def log(self, msg, error=False): + """ + Add a message to the Kodi logging system (provided setting allows it) + + :param msg: Text to add to log file + :type msg: String + :param error: Specify whether text indicates an error or action + :type error: Boolean + :return: + :rtype: + """ + if self.is_enabled('verbose_log'): + xbmc.log('[%s]:: %s' % (self.addon_name, msg), (xbmc.LOGNOTICE, xbmc.LOGERROR)[error]) + + def notify(self, msg, period=4, error=None): + """ + Invoke the Kodi onscreen notification panel with a message (provided setting allows it) + + :param msg: Text to display in panel + :type msg: String + :param period: Wait seconds before closing dialog + :type period: Integer + :param error: Specify whether text indicates an error or action + :type error: Boolean + :return: + :rtype: + """ + if not error and self.is_enabled('action_notification') or (error and self.is_enabled('error_notification')): + xbmc.executebuiltin('Notification(%s, "%s", %s, %s)' % ( + self.addon_name, msg, 1000 * period, + ((self.green_logo, self.red_logo)[any([error])], self.black_logo)[None is error])) + + @staticmethod + def ex(e): + return '\n'.join(['\nEXCEPTION Raised: --> Python callback/script returned the following error <--', + 'Error type: ', + 'Error content: {1!r}', + '{2}', + '--> End of Python script error report <--\n' + ]).format(type(e).__name__, e.args, traceback.format_exc()) + + def report_contact_fail(self, e): + msg = 'Failed to contact Kodi at %s:%s' % (self.kodi_ip, self.kodi_port) + self.log('%s %s' % (msg, self.ex(e)), error=True) + self.notify(msg, period=20, error=True) + + def kodi_request(self, params): + params.update(dict(jsonrpc='2.0', id='SickGear')) + try: + response = xbmc.executeJSONRPC(json.dumps(params)) + except (StandardError, Exception) as e: + return self.report_contact_fail(e) + try: + return json.loads(response) + except UnicodeDecodeError: + return json.loads(response.decode('utf-8', 'ignore')) + + def video_library_on_update(self, json_msg): + """ + Actions to perform for: Kodi Notifications / VideoLibrary/ VideoLibrary.OnUpdate + invoked in Kodi when: A video item has been updated + source: http://kodi.wiki/view/JSON-RPC_API/v8#VideoLibrary.OnUpdate + + :param json_msg: A JSON parsed from socks + :type json_msg: String + :return: + :rtype: + """ + try: + # note: this is called multiple times when a season is marked as un-/watched + if 'episode' == json_msg['params']['data']['item']['type']: + media_id = json_msg['params']['data']['item']['id'] + play_count = json_msg['params']['data']['playcount'] + + json_resp = self.kodi_request(dict( + method='Profiles.GetCurrentProfile')) + current_profile = json_resp['result']['label'] + + json_resp = self.kodi_request(dict( + method='VideoLibrary.GetEpisodeDetails', + params=dict(episodeid=media_id, properties=['file']))) + path_file = json_resp['result']['episodedetails']['file'].encode('utf-8') + + self.update_sickgear(media_id, path_file, play_count, current_profile) + except (StandardError, Exception): + pass + + def update_sickgear(self, media_id, path_file, play_count, profile): + + self.notify('Update sent to SickGear') + + url = 'http://%s:%s/update_watched_state_kodi/' % ( + self.addon.getSetting('sickgear_ip'), self.addon.getSetting('sickgear_port')) + self.log('Notify state to %s with path_file=%s' % (url, path_file)) + + msg_bad = 'Failed to contact SickGear on port %s at %s' % ( + self.addon.getSetting('sickgear_port'), self.addon.getSetting('sickgear_ip')) + + payload_json = self.payload_prep(dict(media_id=media_id, path_file=path_file, played=play_count, label=profile)) + if payload_json: + payload = urllib.urlencode(dict(payload=payload_json)) + try: + rq = urllib2.Request(url, data=payload) + r = urllib2.urlopen(rq) + response = json.load(r) + r.close() + if 'OK' == r.msg: + self.payload_prep(response) + if not all(response.values()): + msg = 'Success, watched state updated' + else: + msg = 'Success, %s/%s watched stated updated' % ( + len([v for v in response.values() if v]), len(response.values())) + self.log(msg) + self.notify(msg, error=False) + else: + msg_bad = 'Failed to update watched state' + self.log(msg_bad) + self.notify(msg_bad, error=True) + except (urllib2.URLError, IOError) as e: + self.log(u'Couldn\'t contact SickGear %s' % self.ex(e), error=True) + self.notify(msg_bad, error=True, period=15) + except (StandardError, Exception) as e: + self.log(u'Couldn\'t contact SickGear %s' % self.ex(e), error=True) + self.notify(msg_bad, error=True, period=15) + + @staticmethod + def payload_prep(payload): + + name = 'sickgear_buffer.txt' + # try to locate /temp at parent location + path_temp = path.join(path.dirname(path.dirname(path.realpath(__file__))), 'temp') + path_data = path.join(path_temp, name) + + data_pool = {} + if xbmcvfs.exists(path_data): + fh = None + try: + fh = xbmcvfs.File(path_data) + data_pool = json.load(fh) + except (StandardError, Exception): + pass + fh and fh.close() + + temp_ok = True + if not any([data_pool]): + temp_ok = xbmcvfs.exists(path_temp) or xbmcvfs.exists(path.join(path_temp, sep)) + if not temp_ok: + temp_ok = xbmcvfs.mkdirs(path_temp) + + response_data = False + for k, v in payload.items(): + if response_data or k in data_pool: + response_data = True + if not v: + # whether no fail response or bad input, remove this from data + data_pool.pop(k) + elif isinstance(v, basestring): + # error so retry next time + continue + if not response_data: + ts_now = time.mktime(datetime.datetime.now().timetuple()) + timeout = 100 + while ts_now in data_pool and timeout: + ts_now = time.mktime(datetime.datetime.now().timetuple()) + timeout -= 1 + + max_payload = 50-1 + for k in list(data_pool.keys())[max_payload:]: + data_pool.pop(k) + payload.update(dict(date_watched=ts_now)) + data_pool.update({ts_now: payload}) + + output = json.dumps(data_pool) + if temp_ok: + fh = None + try: + fh = xbmcvfs.File(path_data, 'w') + fh.write(output) + except (StandardError, Exception): + pass + fh and fh.close() + + return output + + def enable_kodi_allow_remote(self): + try: + # setting esenabled: allow remote control by programs on this system + # setting esallinterfaces: allow remote control by programs on other systems + settings = [dict(esenabled=True), dict(esallinterfaces=True)] + for setting in settings: + if not self.kodi_request(dict( + method='Settings.SetSettingValue', + params=dict(setting='services.%s' % setting.keys()[0], value=setting.values()[0]) + )).get('result', {}): + settings[setting] = self.kodi_request(dict( + method='Settings.GetSettingValue', + params=dict(setting='services.%s' % setting.keys()[0]) + )).get('result', {}).get('value') + except (StandardError, Exception): + return + + setting_states = [setting.values()[0] for setting in settings] + if not all(setting_states): + if not (any(setting_states)): + msg = 'Please enable *all* Kodi settings to allow remote control by programs...' + else: + msg = 'Please enable Kodi setting to allow remote control by programs on other systems' + msg = 'Failed startup. %s in system service/remote control' % msg + self.log(msg, error=True) + self.notify(msg, period=20, error=True) + return + return True + + +__dev__ = True +if __dev__: + try: + # noinspection PyProtectedMember + import _devenv as devenv + except ImportError: + __dev__ = False + + +if 1 < len(sys.argv): + if __dev__: + devenv.setup_devenv(False) + if sys.argv[2].endswith('send_all'): + print('>>>>>> TESTTESTTEST') + +elif __name__ == '__main__': + if __dev__: + devenv.setup_devenv(True) + WSU = SickGearWatchedStateUpdater() + WSU.run() + del WSU + +if __dev__: + devenv.stop() diff --git a/sickbeard/common.py b/sickbeard/common.py index 88c68317..382d1331 100644 --- a/sickbeard/common.py +++ b/sickbeard/common.py @@ -41,19 +41,6 @@ cpu_presets = {'DISABLED': 0, 'LOW': 0.01, 'NORMAL': 0.05, 'HIGH': 0.1} MULTI_EP_RESULT = -1 SEASON_RESULT = -2 -# Notification Types -NOTIFY_SNATCH = 1 -NOTIFY_DOWNLOAD = 2 -NOTIFY_SUBTITLE_DOWNLOAD = 3 -NOTIFY_GIT_UPDATE = 4 -NOTIFY_GIT_UPDATE_TEXT = 5 - -notifyStrings = {NOTIFY_SNATCH: 'Started Download', - NOTIFY_DOWNLOAD: 'Download Finished', - NOTIFY_SUBTITLE_DOWNLOAD: 'Subtitle Download Finished', - NOTIFY_GIT_UPDATE: 'SickGear Updated', - NOTIFY_GIT_UPDATE_TEXT: 'SickGear Updated To Commit#: '} - # Episode statuses UNKNOWN = -1 # should never happen UNAIRED = 1 # episodes that haven't aired yet diff --git a/sickbeard/config.py b/sickbeard/config.py index 4e7573f8..352fc5c6 100644 --- a/sickbeard/config.py +++ b/sickbeard/config.py @@ -49,7 +49,7 @@ naming_sep_type = (' - ', ' ') naming_sep_type_text = (' - ', 'space') -def change_HTTPS_CERT(https_cert): +def change_https_cert(https_cert): if https_cert == '': sickbeard.HTTPS_CERT = '' return True @@ -64,7 +64,7 @@ def change_HTTPS_CERT(https_cert): return True -def change_HTTPS_KEY(https_key): +def change_https_key(https_key): if https_key == '': sickbeard.HTTPS_KEY = '' return True @@ -79,7 +79,7 @@ def change_HTTPS_KEY(https_key): return True -def change_LOG_DIR(log_dir, web_log): +def change_log_dir(log_dir, web_log): log_dir_changed = False abs_log_dir = os.path.normpath(os.path.join(sickbeard.DATA_DIR, log_dir)) web_log_value = checkbox_to_value(web_log) @@ -102,7 +102,7 @@ def change_LOG_DIR(log_dir, web_log): return True -def change_NZB_DIR(nzb_dir): +def change_nzb_dir(nzb_dir): if nzb_dir == '': sickbeard.NZB_DIR = '' return True @@ -117,7 +117,7 @@ def change_NZB_DIR(nzb_dir): return True -def change_TORRENT_DIR(torrent_dir): +def change_torrent_dir(torrent_dir): if torrent_dir == '': sickbeard.TORRENT_DIR = '' return True @@ -132,7 +132,7 @@ def change_TORRENT_DIR(torrent_dir): return True -def change_TV_DOWNLOAD_DIR(tv_download_dir): +def change_tv_download_dir(tv_download_dir): if tv_download_dir == '': sickbeard.TV_DOWNLOAD_DIR = '' return True @@ -147,16 +147,17 @@ def change_TV_DOWNLOAD_DIR(tv_download_dir): return True -def change_AUTOPOSTPROCESSER_FREQUENCY(freq): +def schedule_autopostprocesser(freq): sickbeard.AUTOPOSTPROCESSER_FREQUENCY = to_int(freq, default=sickbeard.DEFAULT_AUTOPOSTPROCESSER_FREQUENCY) if sickbeard.AUTOPOSTPROCESSER_FREQUENCY < sickbeard.MIN_AUTOPOSTPROCESSER_FREQUENCY: sickbeard.AUTOPOSTPROCESSER_FREQUENCY = sickbeard.MIN_AUTOPOSTPROCESSER_FREQUENCY sickbeard.autoPostProcesserScheduler.cycleTime = datetime.timedelta(minutes=sickbeard.AUTOPOSTPROCESSER_FREQUENCY) + sickbeard.autoPostProcesserScheduler.set_paused_state() -def change_RECENTSEARCH_FREQUENCY(freq): +def schedule_recentsearch(freq): sickbeard.RECENTSEARCH_FREQUENCY = to_int(freq, default=sickbeard.DEFAULT_RECENTSEARCH_FREQUENCY) if sickbeard.RECENTSEARCH_FREQUENCY < sickbeard.MIN_RECENTSEARCH_FREQUENCY: @@ -165,13 +166,14 @@ def change_RECENTSEARCH_FREQUENCY(freq): sickbeard.recentSearchScheduler.cycleTime = datetime.timedelta(minutes=sickbeard.RECENTSEARCH_FREQUENCY) -def change_BACKLOG_FREQUENCY(freq): - sickbeard.BACKLOG_FREQUENCY = minimax(freq, sickbeard.DEFAULT_BACKLOG_FREQUENCY, sickbeard.MIN_BACKLOG_FREQUENCY, sickbeard.MAX_BACKLOG_FREQUENCY) +def schedule_backlog(freq): + sickbeard.BACKLOG_FREQUENCY = minimax(freq, sickbeard.DEFAULT_BACKLOG_FREQUENCY, + sickbeard.MIN_BACKLOG_FREQUENCY, sickbeard.MAX_BACKLOG_FREQUENCY) sickbeard.backlogSearchScheduler.action.cycleTime = sickbeard.BACKLOG_FREQUENCY -def change_UPDATE_FREQUENCY(freq): +def schedule_update(freq): sickbeard.UPDATE_FREQUENCY = to_int(freq, default=sickbeard.DEFAULT_UPDATE_FREQUENCY) if sickbeard.UPDATE_FREQUENCY < sickbeard.MIN_UPDATE_FREQUENCY: @@ -180,27 +182,25 @@ def change_UPDATE_FREQUENCY(freq): sickbeard.versionCheckScheduler.cycleTime = datetime.timedelta(hours=sickbeard.UPDATE_FREQUENCY) -def change_VERSION_NOTIFY(version_notify): - oldSetting = sickbeard.VERSION_NOTIFY +def schedule_version_notify(version_notify): + old_setting = sickbeard.VERSION_NOTIFY sickbeard.VERSION_NOTIFY = version_notify if not version_notify: sickbeard.NEWEST_VERSION_STRING = None - if not oldSetting and version_notify: + if not old_setting and version_notify: sickbeard.versionCheckScheduler.action.run() -def change_DOWNLOAD_PROPERS(download_propers): - if sickbeard.DOWNLOAD_PROPERS == download_propers: - return - - sickbeard.DOWNLOAD_PROPERS = download_propers - sickbeard.properFinderScheduler.check_paused() +def schedule_download_propers(download_propers): + if sickbeard.DOWNLOAD_PROPERS != download_propers: + sickbeard.DOWNLOAD_PROPERS = download_propers + sickbeard.properFinderScheduler.set_paused_state() -def change_USE_TRAKT(use_trakt): +def schedule_trakt(use_trakt): if sickbeard.USE_TRAKT == use_trakt: return @@ -216,22 +216,40 @@ def change_USE_TRAKT(use_trakt): # pass -def change_USE_SUBTITLES(use_subtitles): - if sickbeard.USE_SUBTITLES == use_subtitles: - return - - sickbeard.USE_SUBTITLES = use_subtitles - sickbeard.subtitlesFinderScheduler.check_paused() +def schedule_subtitles(use_subtitles): + if sickbeard.USE_SUBTITLES != use_subtitles: + sickbeard.USE_SUBTITLES = use_subtitles + sickbeard.subtitlesFinderScheduler.set_paused_state() -def CheckSection(CFG, sec): +def schedule_emby_watched(emby_watched_interval): + emby_watched_freq = minimax(emby_watched_interval, sickbeard.DEFAULT_WATCHEDSTATE_FREQUENCY, + 0, sickbeard.MAX_WATCHEDSTATE_FREQUENCY) + if emby_watched_freq and emby_watched_freq != sickbeard.EMBY_WATCHEDSTATE_FREQUENCY: + sickbeard.EMBY_WATCHEDSTATE_FREQUENCY = emby_watched_freq + sickbeard.embyWatchedStateScheduler.cycleTime = datetime.timedelta(minutes=emby_watched_freq) + + sickbeard.EMBY_WATCHEDSTATE_SCHEDULED = bool(emby_watched_freq) + sickbeard.embyWatchedStateScheduler.set_paused_state() + + +def schedule_plex_watched(plex_watched_interval): + plex_watched_freq = minimax(plex_watched_interval, sickbeard.DEFAULT_WATCHEDSTATE_FREQUENCY, + 0, sickbeard.MAX_WATCHEDSTATE_FREQUENCY) + if plex_watched_freq and plex_watched_freq != sickbeard.PLEX_WATCHEDSTATE_FREQUENCY: + sickbeard.PLEX_WATCHEDSTATE_FREQUENCY = plex_watched_freq + sickbeard.plexWatchedStateScheduler.cycleTime = datetime.timedelta(minutes=plex_watched_freq) + + sickbeard.PLEX_WATCHEDSTATE_SCHEDULED = bool(plex_watched_freq) + sickbeard.plexWatchedStateScheduler.set_paused_state() + + +def check_section(cfg, section): """ Check if INI section exists, if not create it """ - try: - CFG[sec] - return True - except: - CFG[sec] = {} + if section not in cfg: + cfg[section] = {} return False + return True def checkbox_to_value(option, value_on=1, value_off=0): @@ -284,7 +302,7 @@ def clean_host(host, default_port=None): def clean_hosts(hosts, default_port=None): cleaned_hosts = [] - for cur_host in [x.strip() for x in hosts.split(',')]: + for cur_host in [host.strip() for host in hosts.split(',')]: if cur_host: cleaned_host = clean_host(cur_host, default_port) if cleaned_host: @@ -329,7 +347,7 @@ def to_int(val, default=0): try: val = int(val) - except: + except(StandardError, Exception): val = default return val @@ -351,11 +369,11 @@ def minimax(val, default, low, high): def check_setting_int(config, cfg_name, item_name, def_val): try: my_val = int(config[cfg_name][item_name]) - except: + except(StandardError, Exception): my_val = def_val try: config[cfg_name][item_name] = my_val - except: + except(StandardError, Exception): config[cfg_name] = {} config[cfg_name][item_name] = my_val logger.log('%s -> %s' % (item_name, my_val), logger.DEBUG) @@ -365,11 +383,11 @@ def check_setting_int(config, cfg_name, item_name, def_val): def check_setting_float(config, cfg_name, item_name, def_val): try: my_val = float(config[cfg_name][item_name]) - except: + except(StandardError, Exception): my_val = def_val try: config[cfg_name][item_name] = my_val - except: + except(StandardError, Exception): config[cfg_name] = {} config[cfg_name][item_name] = my_val @@ -391,11 +409,11 @@ def check_setting_str(config, cfg_name, item_name, def_val, log=True): try: my_val = helpers.decrypt(config[cfg_name][item_name], encryption_version) - except: + except(StandardError, Exception): my_val = def_val try: config[cfg_name][item_name] = helpers.encrypt(my_val, encryption_version) - except: + except(StandardError, Exception): config[cfg_name] = {} config[cfg_name][item_name] = helpers.encrypt(my_val, encryption_version) @@ -407,7 +425,7 @@ def check_setting_str(config, cfg_name, item_name, def_val, log=True): return (my_val, def_val)['None' == my_val] -class ConfigMigrator(): +class ConfigMigrator: def __init__(self, config_obj): """ Initializes a config migrator that can take the config from the version indicated in the config @@ -491,8 +509,8 @@ class ConfigMigrator(): sickbeard.NAMING_MULTI_EP = int(check_setting_int(self.config_obj, 'General', 'naming_multi_ep_type', 1)) # see if any of their shows used season folders - myDB = db.DBConnection() - season_folder_shows = myDB.select('SELECT * FROM tv_shows WHERE flatten_folders = 0') + my_db = db.DBConnection() + season_folder_shows = my_db.select('SELECT * FROM tv_shows WHERE flatten_folders = 0') # if any shows had season folders on then prepend season folder to the pattern if season_folder_shows: @@ -518,7 +536,7 @@ class ConfigMigrator(): logger.log(u'No shows were using season folders before so I am disabling flattening on all shows') # don't flatten any shows at all - myDB.action('UPDATE tv_shows SET flatten_folders = 0') + my_db.action('UPDATE tv_shows SET flatten_folders = 0') sickbeard.NAMING_FORCE_FOLDERS = naming.check_force_season_folders() @@ -534,11 +552,11 @@ class ConfigMigrator(): use_ep_name = bool(check_setting_int(self.config_obj, 'General', 'naming_ep_name', 1)) # make the presets into templates - naming_ep_type = ('%Sx%0E', + naming_ep_tmpl = ('%Sx%0E', 's%0Se%0E', 'S%0SE%0E', '%0Sx%0E') - naming_sep_type = (' - ', ' ') + naming_sep_tmpl = (' - ', ' ') # set up our data to use if use_periods: @@ -555,29 +573,29 @@ class ConfigMigrator(): if abd: ep_string = abd_string else: - ep_string = naming_ep_type[ep_type] + ep_string = naming_ep_tmpl[ep_type] - finalName = '' + final_name = '' # start with the show name if use_show_name: - finalName += show_name + naming_sep_type[sep_type] + final_name += show_name + naming_sep_tmpl[sep_type] # add the season/ep stuff - finalName += ep_string + final_name += ep_string # add the episode name if use_ep_name: - finalName += naming_sep_type[sep_type] + ep_name + final_name += naming_sep_tmpl[sep_type] + ep_name # add the quality if use_quality: - finalName += naming_sep_type[sep_type] + ep_quality + final_name += naming_sep_tmpl[sep_type] + ep_quality if use_periods: - finalName = re.sub('\s+', '.', finalName) + final_name = re.sub('\s+', '.', final_name) - return finalName + return final_name # Migration v2: Dummy migration to sync backup number with config version number def _migrate_v2(self): @@ -589,7 +607,8 @@ class ConfigMigrator(): Reads in the old naming settings from your config and generates a new config template from them. """ # get the old settings from the file and store them in the new variable names - for prov in [curProvider for curProvider in sickbeard.providers.sortedProviderList() if curProvider.name == 'omgwtfnzbs']: + for prov in [curProvider for curProvider in sickbeard.providers.sortedProviderList() + if 'omgwtfnzbs' == curProvider.name]: prov.username = check_setting_str(self.config_obj, 'omgwtfnzbs', 'omgwtfnzbs_uid', '') prov.api_key = check_setting_str(self.config_obj, 'omgwtfnzbs', 'omgwtfnzbs_key', '') @@ -662,7 +681,7 @@ class ConfigMigrator(): use_banner = bool(check_setting_int(self.config_obj, 'General', 'use_banner', 0)) - def _migrate_metadata(metadata, metadata_name, use_banner): + def _migrate_metadata(metadata, metadata_name, banner): cur_metadata = metadata.split('|') # if target has the old number of values, do upgrade if len(cur_metadata) == 6: @@ -673,9 +692,9 @@ class ConfigMigrator(): cur_metadata.append('0') # swap show fanart, show poster cur_metadata[3], cur_metadata[2] = cur_metadata[2], cur_metadata[3] - # if user was using use_banner to override the poster, + # if user was using banner to override the poster, # instead enable the banner option and deactivate poster - if metadata_name == 'XBMC' and use_banner: + if 'XBMC' == metadata_name and banner: cur_metadata[4], cur_metadata[3] = cur_metadata[3], '0' # write new format metadata = '|'.join(cur_metadata) @@ -723,7 +742,8 @@ class ConfigMigrator(): check_setting_int(self.config_obj, 'GUI', 'coming_eps_display_paused', 0)) sickbeard.EPISODE_VIEW_MISSED_RANGE = check_setting_int(self.config_obj, 'GUI', 'coming_eps_missed_range', 7) - def _migrate_v8(self): + @staticmethod + def _migrate_v8(): # removing settings from gui and making it a hidden debug option sickbeard.RECENTSEARCH_STARTUP = False @@ -731,7 +751,8 @@ class ConfigMigrator(): sickbeard.PUSHBULLET_ACCESS_TOKEN = check_setting_str(self.config_obj, 'Pushbullet', 'pushbullet_api', '') sickbeard.PUSHBULLET_DEVICE_IDEN = check_setting_str(self.config_obj, 'Pushbullet', 'pushbullet_device', '') - def _migrate_v10(self): + @staticmethod + def _migrate_v10(): # reset backlog frequency to default sickbeard.BACKLOG_FREQUENCY = sickbeard.DEFAULT_BACKLOG_FREQUENCY @@ -741,9 +762,11 @@ class ConfigMigrator(): else: sickbeard.SHOWLIST_TAGVIEW = 'default' - def _migrate_v12(self): + @staticmethod + def _migrate_v12(): # add words to ignore list and insert spaces to improve the ui config readability - words_to_add = ['hevc', 'reenc', 'x265', 'danish', 'deutsch', 'flemish', 'italian', 'nordic', 'norwegian', 'portuguese', 'spanish', 'turkish'] + words_to_add = ['hevc', 'reenc', 'x265', 'danish', 'deutsch', 'flemish', 'italian', + 'nordic', 'norwegian', 'portuguese', 'spanish', 'turkish'] config_words = sickbeard.IGNORE_WORDS.split(',') new_list = [] for new_word in words_to_add: @@ -759,7 +782,8 @@ class ConfigMigrator(): sickbeard.IGNORE_WORDS = ', '.join(sorted(new_list)) - def _migrate_v13(self): + @staticmethod + def _migrate_v13(): # change dereferrer.org urls to blank, but leave any other url untouched if sickbeard.ANON_REDIRECT == 'http://dereferer.org/?': sickbeard.ANON_REDIRECT = '' diff --git a/sickbeard/databases/mainDB.py b/sickbeard/databases/mainDB.py index b49da757..28a44da2 100644 --- a/sickbeard/databases/mainDB.py +++ b/sickbeard/databases/mainDB.py @@ -27,7 +27,7 @@ from sickbeard import encodingKludge as ek from sickbeard.name_parser.parser import NameParser, InvalidNameException, InvalidShowException MIN_DB_VERSION = 9 # oldest db version we support migrating from -MAX_DB_VERSION = 20008 +MAX_DB_VERSION = 20009 TEST_BASE_VERSION = None # the base production db version, only needed for TEST db versions (>=100000) @@ -44,12 +44,13 @@ class MainSanityCheck(db.DBSanityCheck): def fix_duplicate_shows(self, column='indexer_id'): sql_results = self.connection.select( - 'SELECT show_id, ' + column + ', COUNT(' + column + ') as count FROM tv_shows GROUP BY ' + column + ' HAVING count > 1') + 'SELECT show_id, %(col)s, COUNT(%(col)s) as count FROM tv_shows GROUP BY %(col)s HAVING count > 1' + % {'col': column}) for cur_duplicate in sql_results: - logger.log(u'Duplicate show detected! %s: %s count: %s' % (column, cur_duplicate[column], - cur_duplicate['count']), logger.DEBUG) + logger.log(u'Duplicate show detected! %s: %s count: %s' % ( + column, cur_duplicate[column], cur_duplicate['count']), logger.DEBUG) cur_dupe_results = self.connection.select( 'SELECT show_id, ' + column + ' FROM tv_shows WHERE ' + column + ' = ? LIMIT ?', @@ -58,9 +59,8 @@ class MainSanityCheck(db.DBSanityCheck): cl = [] for cur_dupe_id in cur_dupe_results: - logger.log( - u'Deleting duplicate show with %s: %s show_id: %s' % (column, cur_dupe_id[column], - cur_dupe_id['show_id'])) + logger.log(u'Deleting duplicate show with %s: %s show_id: %s' % ( + column, cur_dupe_id[column], cur_dupe_id['show_id'])) cl.append(['DELETE FROM tv_shows WHERE show_id = ?', [cur_dupe_id['show_id']]]) if 0 < len(cl): @@ -72,7 +72,10 @@ class MainSanityCheck(db.DBSanityCheck): def fix_duplicate_episodes(self): sql_results = self.connection.select( - 'SELECT showid, season, episode, COUNT(showid) as count FROM tv_episodes GROUP BY showid, season, episode HAVING count > 1') + 'SELECT showid, season, episode, COUNT(showid) as count' + ' FROM tv_episodes' + ' GROUP BY showid, season, episode' + ' HAVING count > 1') for cur_duplicate in sql_results: @@ -81,7 +84,10 @@ class MainSanityCheck(db.DBSanityCheck): cur_duplicate['count']), logger.DEBUG) cur_dupe_results = self.connection.select( - 'SELECT episode_id FROM tv_episodes WHERE showid = ? AND season = ? and episode = ? ORDER BY episode_id DESC LIMIT ?', + 'SELECT episode_id' + ' FROM tv_episodes' + ' WHERE showid = ? AND season = ? and episode = ?' + ' ORDER BY episode_id DESC LIMIT ?', [cur_duplicate['showid'], cur_duplicate['season'], cur_duplicate['episode'], int(cur_duplicate['count']) - 1] ) @@ -100,12 +106,15 @@ class MainSanityCheck(db.DBSanityCheck): def fix_orphan_episodes(self): sql_results = self.connection.select( - 'SELECT episode_id, showid, tv_shows.indexer_id FROM tv_episodes LEFT JOIN tv_shows ON tv_episodes.showid=tv_shows.indexer_id WHERE tv_shows.indexer_id is NULL') + 'SELECT episode_id, showid, tv_shows.indexer_id' + ' FROM tv_episodes' + ' LEFT JOIN tv_shows ON tv_episodes.showid=tv_shows.indexer_id' + ' WHERE tv_shows.indexer_id is NULL') cl = [] for cur_orphan in sql_results: - logger.log(u'Orphan episode detected! episode_id: %s showid: %s' % (cur_orphan['episode_id'], - cur_orphan['showid']), logger.DEBUG) + logger.log(u'Orphan episode detected! episode_id: %s showid: %s' % ( + cur_orphan['episode_id'], cur_orphan['showid']), logger.DEBUG) logger.log(u'Deleting orphan episode with episode_id: %s' % cur_orphan['episode_id']) cl.append(['DELETE FROM tv_episodes WHERE episode_id = ?', [cur_orphan['episode_id']]]) @@ -150,15 +159,15 @@ class MainSanityCheck(db.DBSanityCheck): sql_results = self.connection.select( 'SELECT episode_id, showid FROM tv_episodes WHERE status = ? or ( airdate > ? AND status in (?,?) ) or ' - '( airdate <= 1 AND status = ? )', ['', cur_date.toordinal(), common.SKIPPED, common.WANTED, common.WANTED]) + '(airdate <= 1 AND status = ? )', ['', cur_date.toordinal(), common.SKIPPED, common.WANTED, common.WANTED]) cl = [] for cur_unaired in sql_results: - logger.log(u'UNAIRED episode detected! episode_id: %s showid: %s' % (cur_unaired['episode_id'], - cur_unaired['showid']), logger.DEBUG) + logger.log(u'UNAIRED episode detected! episode_id: %s showid: %s' % ( + cur_unaired['episode_id'], cur_unaired['showid']), logger.DEBUG) logger.log(u'Fixing unaired episode status with episode_id: %s' % cur_unaired['episode_id']) cl.append(['UPDATE tv_episodes SET status = ? WHERE episode_id = ?', - [common.UNAIRED, cur_unaired['episode_id']]]) + [common.UNAIRED, cur_unaired['episode_id']]]) if 0 < len(cl): self.connection.mass_action(cl) @@ -176,42 +185,90 @@ class MainSanityCheck(db.DBSanityCheck): self.connection.action('UPDATE scene_exceptions SET season = -1 WHERE season = "null"') def fix_orphan_not_found_show(self): - sql_result = self.connection.action('DELETE FROM tv_shows_not_found WHERE NOT EXISTS (SELECT NULL FROM ' - 'tv_shows WHERE tv_shows_not_found.indexer == tv_shows.indexer AND ' - 'tv_shows_not_found.indexer_id == tv_shows.indexer_id)') + sql_result = self.connection.action( + 'DELETE FROM tv_shows_not_found' + ' WHERE NOT EXISTS (SELECT NULL FROM tv_shows WHERE tv_shows_not_found.indexer == tv_shows.indexer AND' + ' tv_shows_not_found.indexer_id == tv_shows.indexer_id)') if sql_result.rowcount: logger.log('Fixed orphaned not found shows') -# ====================== -# = Main DB Migrations = -# ====================== -# Add new migrations at the bottom of the list; subclass the previous migration. -# 0 -> 20003 + class InitialSchema(db.SchemaUpgrade): + # ====================== + # = Main DB Migrations = + # ====================== + # Add new migrations at the bottom of the list; subclass the previous migration. + # 0 -> 20007 def execute(self): db.backup_database('sickbeard.db', self.checkDBVersion()) if not self.hasTable('tv_shows') and not self.hasTable('db_version'): queries = [ - # original sick beard tables - 'CREATE TABLE db_version (db_version INTEGER);', - 'CREATE TABLE history (action NUMERIC, date NUMERIC, showid NUMERIC, season NUMERIC, episode NUMERIC, quality NUMERIC, resource TEXT, provider TEXT, version NUMERIC)', - 'CREATE TABLE info (last_backlog NUMERIC, last_indexer NUMERIC, last_proper_search NUMERIC)', - 'CREATE TABLE tv_episodes (episode_id INTEGER PRIMARY KEY, showid NUMERIC, indexerid NUMERIC, indexer NUMERIC, name TEXT, season NUMERIC, episode NUMERIC, description TEXT, airdate NUMERIC, hasnfo NUMERIC, hastbn NUMERIC, status NUMERIC, location TEXT, file_size NUMERIC, release_name TEXT, subtitles TEXT, subtitles_searchcount NUMERIC, subtitles_lastsearch TIMESTAMP, is_proper NUMERIC, scene_season NUMERIC, scene_episode NUMERIC, absolute_number NUMERIC, scene_absolute_number NUMERIC, version NUMERIC, release_group TEXT, trakt_watched NUMERIC)', - 'CREATE TABLE tv_shows (show_id INTEGER PRIMARY KEY, indexer_id NUMERIC, indexer NUMERIC, show_name TEXT, location TEXT, network TEXT, genre TEXT, classification TEXT, runtime NUMERIC, quality NUMERIC, airs TEXT, status TEXT, flatten_folders NUMERIC, paused NUMERIC, startyear NUMERIC, air_by_date NUMERIC, lang TEXT, subtitles NUMERIC, notify_list TEXT, imdb_id TEXT, last_update_indexer NUMERIC, dvdorder NUMERIC, archive_firstmatch NUMERIC, rls_require_words TEXT, rls_ignore_words TEXT, sports NUMERIC, anime NUMERIC, scene NUMERIC, overview TEXT, tag TEXT)', - 'CREATE INDEX idx_showid ON tv_episodes (showid)', - 'CREATE INDEX idx_tv_episodes_showid_airdate ON tv_episodes (showid,airdate)', + # blacklist 'CREATE TABLE blacklist (show_id INTEGER, range TEXT, keyword TEXT)', - 'CREATE TABLE indexer_mapping (indexer_id INTEGER, indexer NUMERIC, mindexer_id INTEGER, mindexer NUMERIC, PRIMARY KEY (indexer_id, indexer))', - 'CREATE TABLE imdb_info (indexer_id INTEGER PRIMARY KEY, imdb_id TEXT, title TEXT, year NUMERIC, akas TEXT, runtimes NUMERIC, genres TEXT, countries TEXT, country_codes TEXT, certificates TEXT, rating TEXT, votes INTEGER, last_update NUMERIC)', - 'CREATE TABLE scene_numbering (indexer TEXT, indexer_id INTEGER, season INTEGER, episode INTEGER, scene_season INTEGER, scene_episode INTEGER, absolute_number NUMERIC, scene_absolute_number NUMERIC, PRIMARY KEY (indexer_id, season, episode))', - 'CREATE TABLE whitelist (show_id INTEGER, range TEXT, keyword TEXT)', - 'CREATE TABLE xem_refresh (indexer TEXT, indexer_id INTEGER PRIMARY KEY, last_refreshed INTEGER)', + # db_version + 'CREATE TABLE db_version (db_version INTEGER)', + 'INSERT INTO db_version (db_version) VALUES (20008)', + # flags + 'CREATE TABLE flags (flag PRIMARY KEY NOT NULL)', + # history + 'CREATE TABLE history (action NUMERIC, date NUMERIC, showid NUMERIC, season NUMERIC, episode NUMERIC,' + ' quality NUMERIC, resource TEXT, provider TEXT, version NUMERIC)', + # imdb_info + 'CREATE TABLE imdb_info (indexer_id INTEGER PRIMARY KEY, imdb_id TEXT, title TEXT, year NUMERIC,' + ' akas TEXT, runtimes NUMERIC, genres TEXT, countries TEXT, country_codes TEXT, certificates TEXT,' + ' rating TEXT, votes INTEGER, last_update NUMERIC)', + # indexer_mapping + 'CREATE TABLE indexer_mapping (indexer_id INTEGER, indexer NUMERIC, mindexer_id INTEGER NOT NULL,' + ' mindexer NUMERIC, date NUMERIC NOT NULL DEFAULT 0, status INTEGER NOT NULL DEFAULT 0,' + ' PRIMARY KEY (indexer_id, indexer, mindexer))', + 'CREATE INDEX idx_mapping ON indexer_mapping (indexer_id, indexer)', + # info + 'CREATE TABLE info (last_backlog NUMERIC, last_indexer NUMERIC, last_proper_search NUMERIC,' + ' last_run_backlog NUMERIC NOT NULL DEFAULT 1)', + # scene_exceptions + 'CREATE TABLE scene_exceptions (exception_id INTEGER PRIMARY KEY, indexer_id INTEGER KEY,' + ' show_name TEXT, season NUMERIC, custom NUMERIC)', + # scene_exceptions_refresh + 'CREATE TABLE scene_exceptions_refresh (list TEXT PRIMARY KEY, last_refreshed INTEGER)', + # scene_numbering + 'CREATE TABLE scene_numbering (indexer TEXT, indexer_id INTEGER, season INTEGER, episode INTEGER,' + ' scene_season INTEGER, scene_episode INTEGER, absolute_number NUMERIC, scene_absolute_number NUMERIC,' + ' PRIMARY KEY (indexer_id, season, episode))', + # tv_episodes + 'CREATE TABLE tv_episodes (episode_id INTEGER PRIMARY KEY, showid NUMERIC, indexerid NUMERIC,' + ' indexer NUMERIC, name TEXT, season NUMERIC, episode NUMERIC, description TEXT, airdate NUMERIC,' + ' hasnfo NUMERIC, hastbn NUMERIC, status NUMERIC, location TEXT, file_size NUMERIC, release_name TEXT,' + ' subtitles TEXT, subtitles_searchcount NUMERIC, subtitles_lastsearch TIMESTAMP, is_proper NUMERIC,' + ' scene_season NUMERIC, scene_episode NUMERIC, absolute_number NUMERIC, scene_absolute_number NUMERIC,' + ' version NUMERIC, release_group TEXT, trakt_watched NUMERIC)', + 'CREATE INDEX idx_showid ON tv_episodes (showid)', + 'CREATE INDEX idx_tv_episodes_showid_airdate ON tv_episodes (showid, airdate)', + 'CREATE INDEX idx_sta_epi_air ON tv_episodes (status, episode, airdate)', + 'CREATE INDEX idx_sta_epi_sta_air ON tv_episodes (season, episode, status, airdate)', + 'CREATE INDEX idx_status ON tv_episodes (status, season, episode, airdate)', + # tv_episodes_watched + 'CREATE TABLE tv_episodes_watched (tvep_id NUMERIC NOT NULL, clientep_id TEXT, label TEXT,' + ' played NUMERIC DEFAULT 0 NOT NULL, date_watched NUMERIC NOT NULL, date_added NUMERIC,' + ' status NUMERIC, location TEXT, file_size NUMERIC, hide INT default 0 not null)', + # tv_shows + 'CREATE TABLE tv_shows (show_id INTEGER PRIMARY KEY, indexer_id NUMERIC, indexer NUMERIC,' + ' show_name TEXT, location TEXT, network TEXT, genre TEXT, classification TEXT, runtime NUMERIC,' + ' quality NUMERIC, airs TEXT, status TEXT, flatten_folders NUMERIC, paused NUMERIC, startyear NUMERIC,' + ' air_by_date NUMERIC, lang TEXT, subtitles NUMERIC, notify_list TEXT, imdb_id TEXT,' + ' last_update_indexer NUMERIC, dvdorder NUMERIC, archive_firstmatch NUMERIC, rls_require_words TEXT,' + ' rls_ignore_words TEXT, sports NUMERIC, anime NUMERIC, scene NUMERIC, overview TEXT, tag TEXT)', 'CREATE UNIQUE INDEX idx_indexer_id ON tv_shows (indexer_id)', - 'CREATE INDEX idx_sta_epi_air ON tv_episodes (status,episode, airdate)', - 'CREATE INDEX idx_sta_epi_sta_air ON tv_episodes (season,episode, status, airdate)', - 'CREATE INDEX idx_status ON tv_episodes (status,season,episode,airdate)', - 'INSERT INTO db_version (db_version) VALUES (20003)' + # tv_shows_not_found + 'CREATE TABLE tv_shows_not_found (indexer NUMERIC NOT NULL, indexer_id NUMERIC NOT NULL,' + ' fail_count NUMERIC NOT NULL DEFAULT 0, last_check NUMERIC NOT NULL, last_success NUMERIC,' + ' PRIMARY KEY (indexer_id, indexer))', + # webdl_types + 'CREATE TABLE webdl_types (dname TEXT NOT NULL, regex TEXT NOT NULL)', + # whitelist + 'CREATE TABLE whitelist (show_id INTEGER, range TEXT, keyword TEXT)', + # xem_refresh + 'CREATE TABLE xem_refresh (indexer TEXT, indexer_id INTEGER PRIMARY KEY, last_refreshed INTEGER)', ] for query in queries: self.connection.action(query) @@ -220,20 +277,22 @@ class InitialSchema(db.SchemaUpgrade): cur_db_version = self.checkDBVersion() if cur_db_version < MIN_DB_VERSION: - logger.log_error_and_exit(u'Your database version (' - + str(cur_db_version) - + ') is too old to migrate from what this version of SickGear supports (' - + str(MIN_DB_VERSION) + ').' + "\n" - + 'Upgrade using a previous version (tag) build 496 to build 501 of SickGear first or remove database file to begin fresh.' - ) + logger.log_error_and_exit( + u'Your database version (' + str(cur_db_version) + + ') is too old to migrate from what this version of SickGear supports (' + + str(MIN_DB_VERSION) + ').' + "\n" + + 'Upgrade using a previous version (tag) build 496 to build 501 of SickGear' + ' first or remove database file to begin fresh.' + ) if cur_db_version > MAX_DB_VERSION: - logger.log_error_and_exit(u'Your database version (' - + str(cur_db_version) - + ') has been incremented past what this version of SickGear supports (' - + str(MAX_DB_VERSION) + ').' + "\n" - + 'If you have used other forks of SickGear, your database may be unusable due to their modifications.' - ) + logger.log_error_and_exit( + u'Your database version (' + str(cur_db_version) + + ') has been incremented past what this version of SickGear supports (' + + str(MAX_DB_VERSION) + ').\n' + + 'If you have used other forks of SickGear,' + ' your database may be unusable due to their modifications.' + ) return self.checkDBVersion() @@ -270,7 +329,9 @@ class AddSizeAndSceneNameFields(db.SchemaUpgrade): for cur_result in history_results: # find the associated download, if there isn't one then ignore it download_results = self.connection.select( - 'SELECT resource FROM history WHERE provider = -1 AND showid = ? AND season = ? AND episode = ? AND date > ?', + 'SELECT resource' + ' FROM history' + ' WHERE provider = -1 AND showid = ? AND season = ? AND episode = ? AND date > ?', [cur_result['showid'], cur_result['season'], cur_result['episode'], cur_result['date']]) if not download_results: logger.log(u'Found a snatch in the history for ' + cur_result[ @@ -286,7 +347,9 @@ class AddSizeAndSceneNameFields(db.SchemaUpgrade): # find the associated episode on disk ep_results = self.connection.select( - 'SELECT episode_id, status FROM tv_episodes WHERE showid = ? AND season = ? AND episode = ? AND location != ""', + 'SELECT episode_id, status' + ' FROM tv_episodes' + ' WHERE showid = ? AND season = ? AND episode = ? AND location != ""', [cur_result['showid'], cur_result['season'], cur_result['episode']]) if not ep_results: logger.log( @@ -358,8 +421,14 @@ class RenameSeasonFolders(db.SchemaUpgrade): # rename the column self.connection.action('ALTER TABLE tv_shows RENAME TO tmp_tv_shows') self.connection.action( - 'CREATE TABLE tv_shows (show_id INTEGER PRIMARY KEY, location TEXT, show_name TEXT, tvdb_id NUMERIC, network TEXT, genre TEXT, runtime NUMERIC, quality NUMERIC, airs TEXT, status TEXT, flatten_folders NUMERIC, paused NUMERIC, startyear NUMERIC, tvr_id NUMERIC, tvr_name TEXT, air_by_date NUMERIC, lang TEXT)') - sql = 'INSERT INTO tv_shows(show_id, location, show_name, tvdb_id, network, genre, runtime, quality, airs, status, flatten_folders, paused, startyear, tvr_id, tvr_name, air_by_date, lang) SELECT show_id, location, show_name, tvdb_id, network, genre, runtime, quality, airs, status, seasonfolders, paused, startyear, tvr_id, tvr_name, air_by_date, lang FROM tmp_tv_shows' + 'CREATE TABLE tv_shows (show_id INTEGER PRIMARY KEY, location TEXT, show_name TEXT, tvdb_id NUMERIC,' + ' network TEXT, genre TEXT, runtime NUMERIC, quality NUMERIC, airs TEXT, status TEXT,' + ' flatten_folders NUMERIC, paused NUMERIC, startyear NUMERIC, tvr_id NUMERIC, tvr_name TEXT,' + ' air_by_date NUMERIC, lang TEXT)') + sql = 'INSERT INTO tv_shows(show_id, location, show_name, tvdb_id, network, genre, runtime,' \ + ' quality, airs, status, flatten_folders, paused, startyear, tvr_id, tvr_name, air_by_date, lang)' \ + ' SELECT show_id, location, show_name, tvdb_id, network, genre, runtime, quality, airs, status,' \ + ' seasonfolders, paused, startyear, tvr_id, tvr_name, air_by_date, lang FROM tmp_tv_shows' self.connection.action(sql) # flip the values to be opposite of what they were before @@ -419,13 +488,13 @@ class Add1080pAndRawHDQualities(db.SchemaUpgrade): return result def _update_composite_qualities(self, status): - ''' + """ Unpack, Update, Return new quality values Unpack the composite archive/initial values. Update either qualities if needed. Then return the new compsite quality value. - ''' + """ best = (status & (0xffff << 16)) >> 16 initial = status & 0xffff @@ -449,7 +518,8 @@ class Add1080pAndRawHDQualities(db.SchemaUpgrade): new_hd = common.Quality.combineQualities([common.Quality.HDTV, common.Quality.HDWEBDL, common.Quality.HDBLURAY], []) - # update ANY -- shift existing qualities and add new 1080p qualities, note that rawHD was not added to the ANY template + # update ANY -- shift existing qualities and add new 1080p qualities, + # note that rawHD was not added to the ANY template old_any = common.Quality.combineQualities( [common.Quality.SDTV, common.Quality.SDDVD, common.Quality.HDTV, common.Quality.HDWEBDL >> 2, common.Quality.HDBLURAY >> 3, common.Quality.UNKNOWN], []) @@ -472,7 +542,8 @@ class Add1080pAndRawHDQualities(db.SchemaUpgrade): cl.append(['UPDATE tv_shows SET quality = ? WHERE show_id = ?', [new_quality, cur_show['show_id']]]) self.connection.mass_action(cl) - # update status that are are within the old hdwebdl (1<<3 which is 8) and better -- exclude unknown (1<<15 which is 32768) + # update status that are are within the old hdwebdl + # (1<<3 which is 8) and better -- exclude unknown (1<<15 which is 32768) logger.log(u'[2/4] Updating the status for the episodes within each show...', logger.MESSAGE) cl = [] episodes = self.connection.select('SELECT * FROM tv_episodes WHERE status < 3276800 AND status >= 800') @@ -481,7 +552,8 @@ class Add1080pAndRawHDQualities(db.SchemaUpgrade): [self._update_status(cur_episode['status']), cur_episode['episode_id']]]) self.connection.mass_action(cl) - # make two seperate passes through the history since snatched and downloaded (action & quality) may not always coordinate together + # make two seperate passes through the history since snatched and downloaded (action & quality) + # may not always coordinate together # update previous history so it shows the correct action logger.log(u'[3/4] Updating history to reflect the correct action...', logger.MESSAGE) @@ -564,7 +636,9 @@ class AddIMDbInfo(db.SchemaUpgrade): db.backup_database('sickbeard.db', self.checkDBVersion()) db_backed_up = True self.connection.action( - 'CREATE TABLE imdb_info (tvdb_id INTEGER PRIMARY KEY, imdb_id TEXT, title TEXT, year NUMERIC, akas TEXT, runtimes NUMERIC, genres TEXT, countries TEXT, country_codes TEXT, certificates TEXT, rating TEXT, votes INTEGER, last_update NUMERIC)') + 'CREATE TABLE imdb_info (tvdb_id INTEGER PRIMARY KEY, imdb_id TEXT, title TEXT, year NUMERIC,' + ' akas TEXT, runtimes NUMERIC, genres TEXT, countries TEXT, country_codes TEXT, certificates TEXT,' + ' rating TEXT, votes INTEGER, last_update NUMERIC)') if not self.hasColumn('tv_shows', 'imdb_id'): logger.log(u'Adding IMDb column imdb_id to tv_shows') @@ -680,9 +754,18 @@ class ConvertTVShowsToIndexerScheme(db.SchemaUpgrade): self.connection.action('ALTER TABLE tv_shows RENAME TO tmp_tv_shows') self.connection.action( - 'CREATE TABLE tv_shows (show_id INTEGER PRIMARY KEY, indexer_id NUMERIC, indexer NUMERIC, show_name TEXT, location TEXT, network TEXT, genre TEXT, classification TEXT, runtime NUMERIC, quality NUMERIC, airs TEXT, status TEXT, flatten_folders NUMERIC, paused NUMERIC, startyear NUMERIC, air_by_date NUMERIC, lang TEXT, subtitles NUMERIC, notify_list TEXT, imdb_id TEXT, last_update_indexer NUMERIC, dvdorder NUMERIC)') + 'CREATE TABLE tv_shows (show_id INTEGER PRIMARY KEY, indexer_id NUMERIC, indexer NUMERIC, show_name TEXT,' + ' location TEXT, network TEXT, genre TEXT, classification TEXT, runtime NUMERIC, quality NUMERIC,' + ' airs TEXT, status TEXT, flatten_folders NUMERIC, paused NUMERIC, startyear NUMERIC, air_by_date NUMERIC,' + ' lang TEXT, subtitles NUMERIC, notify_list TEXT, imdb_id TEXT,' + ' last_update_indexer NUMERIC, dvdorder NUMERIC)') self.connection.action( - 'INSERT INTO tv_shows(show_id, indexer_id, show_name, location, network, genre, runtime, quality, airs, status, flatten_folders, paused, startyear, air_by_date, lang, subtitles, notify_list, imdb_id, last_update_indexer, dvdorder) SELECT show_id, tvdb_id, show_name, location, network, genre, runtime, quality, airs, status, flatten_folders, paused, startyear, air_by_date, lang, subtitles, notify_list, imdb_id, last_update_tvdb, dvdorder FROM tmp_tv_shows') + 'INSERT INTO tv_shows(show_id, indexer_id, show_name, location, network, genre, runtime, quality, airs,' + ' status, flatten_folders, paused, startyear, air_by_date, lang, subtitles, notify_list, imdb_id,' + ' last_update_indexer, dvdorder)' + ' SELECT show_id, tvdb_id, show_name, location, network, genre, runtime,' + ' quality, airs, status, flatten_folders, paused, startyear, air_by_date, lang, subtitles, notify_list,' + ' imdb_id, last_update_tvdb, dvdorder FROM tmp_tv_shows') self.connection.action('DROP TABLE tmp_tv_shows') self.connection.action('CREATE UNIQUE INDEX idx_indexer_id ON tv_shows (indexer_id);') @@ -707,9 +790,16 @@ class ConvertTVEpisodesToIndexerScheme(db.SchemaUpgrade): self.connection.action('ALTER TABLE tv_episodes RENAME TO tmp_tv_episodes') self.connection.action( - 'CREATE TABLE tv_episodes (episode_id INTEGER PRIMARY KEY, showid NUMERIC, indexerid NUMERIC, indexer NUMERIC, name TEXT, season NUMERIC, episode NUMERIC, description TEXT, airdate NUMERIC, hasnfo NUMERIC, hastbn NUMERIC, status NUMERIC, location TEXT, file_size NUMERIC, release_name TEXT, subtitles TEXT, subtitles_searchcount NUMERIC, subtitles_lastsearch TIMESTAMP, is_proper NUMERIC)') + 'CREATE TABLE tv_episodes (episode_id INTEGER PRIMARY KEY, showid NUMERIC, indexerid NUMERIC,' + ' indexer NUMERIC, name TEXT, season NUMERIC, episode NUMERIC, description TEXT, airdate NUMERIC,' + ' hasnfo NUMERIC, hastbn NUMERIC, status NUMERIC, location TEXT, file_size NUMERIC, release_name TEXT,' + ' subtitles TEXT, subtitles_searchcount NUMERIC, subtitles_lastsearch TIMESTAMP, is_proper NUMERIC)') self.connection.action( - 'INSERT INTO tv_episodes(episode_id, showid, indexerid, name, season, episode, description, airdate, hasnfo, hastbn, status, location, file_size, release_name, subtitles, subtitles_searchcount, subtitles_lastsearch, is_proper) SELECT episode_id, showid, tvdbid, name, season, episode, description, airdate, hasnfo, hastbn, status, location, file_size, release_name, subtitles, subtitles_searchcount, subtitles_lastsearch, is_proper FROM tmp_tv_episodes') + 'INSERT INTO tv_episodes(episode_id, showid, indexerid, name, season, episode, description, airdate,' + ' hasnfo, hastbn, status, location, file_size, release_name, subtitles, subtitles_searchcount,' + ' subtitles_lastsearch, is_proper) SELECT episode_id, showid, tvdbid, name, season, episode, description,' + ' airdate, hasnfo, hastbn, status, location, file_size, release_name, subtitles, subtitles_searchcount,' + ' subtitles_lastsearch, is_proper FROM tmp_tv_episodes') self.connection.action('DROP TABLE tmp_tv_episodes') self.connection.action('CREATE INDEX idx_tv_episodes_showid_airdate ON tv_episodes(showid,airdate);') @@ -737,9 +827,13 @@ class ConvertIMDBInfoToIndexerScheme(db.SchemaUpgrade): self.connection.action('ALTER TABLE imdb_info RENAME TO tmp_imdb_info') self.connection.action( - 'CREATE TABLE imdb_info (indexer_id INTEGER PRIMARY KEY, imdb_id TEXT, title TEXT, year NUMERIC, akas TEXT, runtimes NUMERIC, genres TEXT, countries TEXT, country_codes TEXT, certificates TEXT, rating TEXT, votes INTEGER, last_update NUMERIC)') + 'CREATE TABLE imdb_info (indexer_id INTEGER PRIMARY KEY, imdb_id TEXT, title TEXT, year NUMERIC, akas TEXT,' + ' runtimes NUMERIC, genres TEXT, countries TEXT, country_codes TEXT, certificates TEXT, rating TEXT,' + ' votes INTEGER, last_update NUMERIC)') self.connection.action( - 'INSERT INTO imdb_info(indexer_id, imdb_id, title, year, akas, runtimes, genres, countries, country_codes, certificates, rating, votes, last_update) SELECT tvdb_id, imdb_id, title, year, akas, runtimes, genres, countries, country_codes, certificates, rating, votes, last_update FROM tmp_imdb_info') + 'INSERT INTO imdb_info(indexer_id, imdb_id, title, year, akas, runtimes, genres, countries, country_codes,' + ' certificates, rating, votes, last_update) SELECT tvdb_id, imdb_id, title, year, akas, runtimes, genres,' + ' countries, country_codes, certificates, rating, votes, last_update FROM tmp_imdb_info') self.connection.action('DROP TABLE tmp_imdb_info') self.incDBVersion() @@ -761,7 +855,8 @@ class ConvertInfoToIndexerScheme(db.SchemaUpgrade): self.connection.action( 'CREATE TABLE info (last_backlog NUMERIC, last_indexer NUMERIC, last_proper_search NUMERIC)') self.connection.action( - 'INSERT INTO info(last_backlog, last_indexer, last_proper_search) SELECT last_backlog, last_tvdb, last_proper_search FROM tmp_info') + 'INSERT INTO info(last_backlog, last_indexer, last_proper_search)' + ' SELECT last_backlog, last_tvdb, last_proper_search FROM tmp_info') self.connection.action('DROP TABLE tmp_info') self.incDBVersion() @@ -791,7 +886,9 @@ class AddSceneNumbering(db.SchemaUpgrade): logger.log(u'Upgrading table scene_numbering ...', logger.MESSAGE) self.connection.action( - 'CREATE TABLE scene_numbering (indexer TEXT, indexer_id INTEGER, season INTEGER, episode INTEGER, scene_season INTEGER, scene_episode INTEGER, PRIMARY KEY (indexer_id,season,episode))') + 'CREATE TABLE scene_numbering (indexer TEXT, indexer_id INTEGER, season INTEGER, episode INTEGER,' + ' scene_season INTEGER, scene_episode INTEGER,' + ' PRIMARY KEY (indexer_id,season,episode))') self.incDBVersion() return self.checkDBVersion() @@ -981,7 +1078,8 @@ class AddIndexerMapping(db.SchemaUpgrade): logger.log(u'Adding table indexer_mapping') self.connection.action( - 'CREATE TABLE indexer_mapping (indexer_id INTEGER, indexer NUMERIC, mindexer_id INTEGER, mindexer NUMERIC, PRIMARY KEY (indexer_id, indexer))') + 'CREATE TABLE indexer_mapping (indexer_id INTEGER, indexer NUMERIC, mindexer_id INTEGER, mindexer NUMERIC,' + ' PRIMARY KEY (indexer_id, indexer))') self.incDBVersion() return self.checkDBVersion() @@ -1190,7 +1288,9 @@ class ChangeMapIndexer(db.SchemaUpgrade): logger.log(u'Changing table indexer_mapping') self.connection.action( - 'CREATE TABLE indexer_mapping (indexer_id INTEGER, indexer NUMERIC, mindexer_id INTEGER NOT NULL, mindexer NUMERIC, date NUMERIC NOT NULL DEFAULT 0, status INTEGER NOT NULL DEFAULT 0, PRIMARY KEY (indexer_id, indexer, mindexer))') + 'CREATE TABLE indexer_mapping (indexer_id INTEGER, indexer NUMERIC, mindexer_id INTEGER NOT NULL,' + ' mindexer NUMERIC, date NUMERIC NOT NULL DEFAULT 0, status INTEGER NOT NULL DEFAULT 0,' + ' PRIMARY KEY (indexer_id, indexer, mindexer))') self.connection.action('CREATE INDEX IF NOT EXISTS idx_mapping ON indexer_mapping (indexer_id, indexer)') @@ -1204,21 +1304,23 @@ class ChangeMapIndexer(db.SchemaUpgrade): self.connection.action('CREATE TABLE scene_exceptions_refresh (list TEXT PRIMARY KEY, last_refreshed INTEGER)') if self.hasTable('scene_exceptions'): self.connection.action('DROP TABLE scene_exceptions') - self.connection.action('CREATE TABLE scene_exceptions (exception_id INTEGER PRIMARY KEY, indexer_id INTEGER KEY, show_name TEXT, season NUMERIC, custom NUMERIC)') + self.connection.action('CREATE TABLE scene_exceptions (exception_id INTEGER PRIMARY KEY,' + ' indexer_id INTEGER KEY, show_name TEXT, season NUMERIC, custom NUMERIC)') try: cachedb = db.DBConnection(filename='cache.db') if cachedb.hasTable('scene_exceptions'): - sqlResults = cachedb.action('SELECT * FROM scene_exceptions') + sql_results = cachedb.action('SELECT * FROM scene_exceptions') cs = [] - for r in sqlResults: - cs.append(['INSERT OR REPLACE INTO scene_exceptions (exception_id, indexer_id, show_name, season, custom)' - ' VALUES (?,?,?,?,?)', [r['exception_id'], r['indexer_id'], r['show_name'], - r['season'], r['custom']]]) + for r in sql_results: + cs.append( + ['INSERT OR REPLACE INTO scene_exceptions (exception_id, indexer_id, show_name, season, custom)' + ' VALUES (?,?,?,?,?)', + [r['exception_id'], r['indexer_id'], r['show_name'], r['season'], r['custom']]]) - if len(cs) > 0: + if 0 < len(cs): self.connection.mass_action(cs) - except: + except (StandardError, Exception): pass keep_tables = {'scene_exceptions', 'scene_exceptions_refresh', 'info', 'indexer_mapping', 'blacklist', @@ -1242,7 +1344,10 @@ class AddShowNotFoundCounter(db.SchemaUpgrade): logger.log(u'Adding table tv_shows_not_found') db.backup_database('sickbeard.db', self.checkDBVersion()) - self.connection.action('CREATE TABLE tv_shows_not_found (indexer NUMERIC NOT NULL, indexer_id NUMERIC NOT NULL, fail_count NUMERIC NOT NULL DEFAULT 0, last_check NUMERIC NOT NULL, last_success NUMERIC, PRIMARY KEY (indexer_id, indexer))') + self.connection.action( + 'CREATE TABLE tv_shows_not_found (indexer NUMERIC NOT NULL, indexer_id NUMERIC NOT NULL,' + ' fail_count NUMERIC NOT NULL DEFAULT 0, last_check NUMERIC NOT NULL, last_success NUMERIC,' + ' PRIMARY KEY (indexer_id, indexer))') self.setDBVersion(20005) return self.checkDBVersion() @@ -1255,7 +1360,7 @@ class AddFlagTable(db.SchemaUpgrade): logger.log(u'Adding table flags') db.backup_database('sickbeard.db', self.checkDBVersion()) - self.connection.action('CREATE TABLE flags (flag PRIMARY KEY NOT NULL )') + self.connection.action('CREATE TABLE flags (flag PRIMARY KEY NOT NULL)') self.setDBVersion(20006) return self.checkDBVersion() @@ -1275,7 +1380,29 @@ class DBIncreaseTo20007(db.SchemaUpgrade): class AddWebdlTypesTable(db.SchemaUpgrade): def execute(self): db.backup_database('sickbeard.db', self.checkDBVersion()) - self.connection.action('CREATE TABLE webdl_types (dname TEXT NOT NULL , regex TEXT NOT NULL )') + self.connection.action('CREATE TABLE webdl_types (dname TEXT NOT NULL, regex TEXT NOT NULL)') self.setDBVersion(20008) return self.checkDBVersion() + + +# 20008 -> 20009 +class AddWatched(db.SchemaUpgrade): + def execute(self): + # remove old table from version 20007 + if self.hasTable('tv_episodes_watched') and not self.hasColumn('tv_episodes_watched', 'clientep_id'): + self.connection.action('DROP TABLE tv_episodes_watched') + self.connection.action('VACUUM') + + if not self.hasTable('tv_episodes_watched'): + logger.log(u'Adding table tv_episodes_watched') + + db.backup_database('sickbeard.db', self.checkDBVersion()) + self.connection.action( + 'CREATE TABLE tv_episodes_watched (tvep_id NUMERIC NOT NULL, clientep_id TEXT, label TEXT,' + ' played NUMERIC DEFAULT 0 NOT NULL, date_watched NUMERIC NOT NULL, date_added NUMERIC,' + ' status NUMERIC, location TEXT, file_size NUMERIC, hide INT default 0 not null)' + ) + + self.setDBVersion(20009) + return self.checkDBVersion() diff --git a/sickbeard/db.py b/sickbeard/db.py index fa439faa..622a8fce 100644 --- a/sickbeard/db.py +++ b/sickbeard/db.py @@ -47,26 +47,35 @@ def dbFilename(filename='sickbeard.db', suffix=None): return ek.ek(os.path.join, sickbeard.DATA_DIR, filename) -def mass_upsert_sql(tableName, valueDict, keyDict): - +def mass_upsert_sql(table_name, value_dict, key_dict, sanitise=True): """ use with cl.extend(mass_upsert_sql(tableName, valueDict, keyDict)) - :param tableName: table name - :param valueDict: dict of values to be set {'table_fieldname': value} - :param keyDict: dict of restrains for update {'table_fieldname': value} + :param table_name: table name + :param value_dict: dict of values to be set {'table_fieldname': value} + :param key_dict: dict of restrains for update {'table_fieldname': value} + :param sanitise: True to remove k, v pairs in keyDict from valueDict as they must not exist in both. + This option has a performance hit so it's best to remove key_dict keys from value_dict and set this False instead. + :type sanitise: Boolean :return: list of 2 sql command """ cl = [] - genParams = lambda myDict: [x + ' = ?' for x in myDict.keys()] + gen_params = (lambda my_dict: [x + ' = ?' for x in my_dict.keys()]) - cl.append(['UPDATE [%s] SET %s WHERE %s' % ( - tableName, ', '.join(genParams(valueDict)), ' AND '.join(genParams(keyDict))), valueDict.values() + keyDict.values()]) + # sanity: remove k, v pairs in keyDict from valueDict + if sanitise: + value_dict = dict(filter(lambda (k, _): k not in key_dict.keys(), value_dict.items())) + cl.append(['UPDATE [%s] SET %s WHERE %s' % + (table_name, ', '.join(gen_params(value_dict)), ' AND '.join(gen_params(key_dict))), + value_dict.values() + key_dict.values()]) - cl.append(['INSERT INTO [' + tableName + '] (' + ', '.join(["'%s'" % ('%s' % v).replace("'", "''") for v in valueDict.keys() + keyDict.keys()]) + ')' + - ' SELECT ' + ', '.join(["'%s'" % ('%s' % v).replace("'", "''") for v in valueDict.values() + keyDict.values()]) + ' WHERE changes() = 0']) + cl.append(['INSERT INTO [' + table_name + '] (' + + ', '.join(["'%s'" % ('%s' % v).replace("'", "''") for v in value_dict.keys() + key_dict.keys()]) + ')' + + ' SELECT ' + + ', '.join(["'%s'" % ('%s' % v).replace("'", "''") for v in value_dict.values() + key_dict.values()]) + + ' WHERE changes() = 0']) return cl @@ -261,12 +270,41 @@ class DBConnection(object): return False def add_flag(self, flag_name): - if not self.has_flag(flag_name): + has_flag = self.has_flag(flag_name) + if not has_flag: self.action('INSERT INTO flags (flag) VALUES (?)', [flag_name]) + return not has_flag def remove_flag(self, flag_name): - if self.has_flag(flag_name): + has_flag = self.has_flag(flag_name) + if has_flag: self.action('DELETE FROM flags WHERE flag = ?', [flag_name]) + return has_flag + + def toggle_flag(self, flag_name): + """ + Add or remove a flag + :param flag_name: Name of flag + :type flag_name: String + :return: True if this call added the flag, False if flag is removed + :rtype: Boolean + """ + if self.remove_flag(flag_name): + return False + self.add_flag(flag_name) + return True + + def set_flag(self, flag_name, state=True): + """ + Set state of flag + :param flag_name: Name of flag + :type flag_name: String + :param state: If true, create flag otherwise remove flag + :type state: Boolean + :return: Previous state of flag + :rtype: Boolean + """ + return (self.add_flag, self.remove_flag)[not bool(state)](flag_name) def close(self): """Close database connection""" @@ -515,6 +553,7 @@ def MigrationCode(myDB): 20005: sickbeard.mainDB.AddFlagTable, 20006: sickbeard.mainDB.DBIncreaseTo20007, 20007: sickbeard.mainDB.AddWebdlTypesTable, + 20008: sickbeard.mainDB.AddWatched, # 20002: sickbeard.mainDB.AddCoolSickGearFeature3, } @@ -532,6 +571,9 @@ def MigrationCode(myDB): else: while db_version < sickbeard.mainDB.MAX_DB_VERSION: + if None is schema[db_version]: # skip placeholders used when multi PRs are updating DB + db_version += 1 + continue try: update = schema[db_version](myDB) db_version = update.execute() diff --git a/sickbeard/notifiers/emby.py b/sickbeard/notifiers/emby.py index ff1e75b3..28ed9c51 100644 --- a/sickbeard/notifiers/emby.py +++ b/sickbeard/notifiers/emby.py @@ -122,7 +122,7 @@ class EmbyNotifier(Notifier): else: new_keys += [key] - apikeys = (new_keys, [x.strip() for x in sickbeard.EMBY_APIKEY.split(',') if x.strip()] + new_keys)[has_old_key] + apikeys = has_old_key and [x.strip() for x in sickbeard.EMBY_APIKEY.split(',') if x.strip()] or [] + new_keys if len(hosts) != len(apikeys): message = ('Not enough Api keys for hosts', 'More Api keys than hosts')[len(apikeys) > len(hosts)] @@ -178,5 +178,10 @@ class EmbyNotifier(Notifier): def discover_server(self): return self._discover_server() + def check_config(self, hosts=None, apikeys=None): + + self._testing = True # ensure _choose() uses passed args + return self._check_config(hosts, apikeys) + notifier = EmbyNotifier diff --git a/sickbeard/providers/generic.py b/sickbeard/providers/generic.py index 1a20c138..f5fbf17b 100644 --- a/sickbeard/providers/generic.py +++ b/sickbeard/providers/generic.py @@ -100,7 +100,8 @@ class ProviderFailList(object): fail_hour = e.fail_time.time().hour date_time = datetime.datetime.combine(fail_date, datetime.time(hour=fail_hour)) if ProviderFailTypes.names[e.fail_type] not in fail_dict.get(date_time, {}): - default = {'date': str(fail_date), 'date_time': date_time, 'multirow': False} + default = {'date': str(fail_date), 'date_time': date_time, + 'timestamp': helpers.tryInt(sbdatetime.totimestamp(e.fail_time)), 'multirow': False} for et in ProviderFailTypes.names.itervalues(): default[et] = b_d.copy() fail_dict.setdefault(date_time, default)[ProviderFailTypes.names[e.fail_type]]['count'] = 1 @@ -502,8 +503,10 @@ class GenericProvider(object): kwargs['raise_exceptions'] = True kwargs['raise_status_code'] = True - for k, v in dict(headers=self.headers, hooks=dict(response=self.cb_response), session=self.session).items(): + for k, v in dict(headers=self.headers, hooks=dict(response=self.cb_response)).items(): kwargs.setdefault(k, v) + if 'nzbs.in' not in url: # this provider returns 503's 3 out of 4 requests with the persistent session system + kwargs.setdefault('session', self.session) post_data = kwargs.get('post_data') post_json = kwargs.get('post_json') diff --git a/sickbeard/scheduler.py b/sickbeard/scheduler.py index 7724a6b8..ebdfc047 100644 --- a/sickbeard/scheduler.py +++ b/sickbeard/scheduler.py @@ -55,14 +55,13 @@ class Scheduler(threading.Thread): self._stop.set() self.unpause() - def check_paused(self): - if hasattr(self.action, 'check_paused'): - if self.action.check_paused(): + def set_paused_state(self): + if hasattr(self.action, 'is_enabled'): + self.silent = not self.action.is_enabled() + if self.silent: self.pause() - self.silent = True else: self.unpause() - self.silent = False def timeLeft(self): return self.cycleTime - (datetime.datetime.now() - self.lastRun) @@ -74,55 +73,60 @@ class Scheduler(threading.Thread): return False def run(self): - self.check_paused() + self.set_paused_state() # if self._unpause Event() is NOT set the loop pauses while self._unpause.wait() and not self._stop.is_set(): - try: - current_time = datetime.datetime.now() - should_run = False - - # check if interval has passed - if current_time - self.lastRun >= self.cycleTime: - # check if wanting to start around certain time taking interval into account - if self.start_time: - hour_diff = current_time.time().hour - self.start_time.hour - if not hour_diff < 0 and hour_diff < self.cycleTime.seconds / 3600: - should_run = True - else: - # set lastRun to only check start_time after another cycleTime - self.lastRun = current_time - else: - should_run = True - - if self.force: - should_run = True - - if should_run and self.prevent_cycle_run is not None and self.prevent_cycle_run(): - logger.log(u'%s skipping this cycleTime' % self.name, logger.WARNING) - # set lastRun to only check start_time after another cycleTime - self.lastRun = current_time + if getattr(self.action, 'is_enabled', True): + try: + current_time = datetime.datetime.now() should_run = False - if should_run: - self.lastRun = current_time + # check if interval has passed + if current_time - self.lastRun >= self.cycleTime: + # check if wanting to start around certain time taking interval into account + if self.start_time: + hour_diff = current_time.time().hour - self.start_time.hour + if not hour_diff < 0 and hour_diff < self.cycleTime.seconds / 3600: + should_run = True + else: + # set lastRun to only check start_time after another cycleTime + self.lastRun = current_time + else: + should_run = True - try: - if not self.silent: - logger.log(u"Starting new thread: " + self.name, logger.DEBUG) + if self.force: + should_run = True - self.action.run() - except Exception as e: - logger.log(u"Exception generated in thread " + self.name + ": " + ex(e), logger.ERROR) - logger.log(repr(traceback.format_exc()), logger.ERROR) + if should_run and ((self.prevent_cycle_run is not None and self.prevent_cycle_run()) or + getattr(self.action, 'prevent_run', False)): + logger.log(u'%s skipping this cycleTime' % self.name, logger.WARNING) + # set lastRun to only check start_time after another cycleTime + self.lastRun = current_time + should_run = False - finally: - if self.force: - self.force = False + if should_run: + self.lastRun = current_time + + try: + if not self.silent: + logger.log(u"Starting new thread: " + self.name, logger.DEBUG) + + self.action.run() + except Exception as e: + logger.log(u"Exception generated in thread " + self.name + ": " + ex(e), logger.ERROR) + logger.log(repr(traceback.format_exc()), logger.ERROR) + + finally: + if self.force: + self.force = False + else: + # disabled schedulers will only be rechecked every 30 seconds until enabled + time.sleep(30) time.sleep(1) # exiting thread self._stop.clear() - self._unpause.clear() \ No newline at end of file + self._unpause.clear() diff --git a/sickbeard/search_propers.py b/sickbeard/search_propers.py index 51b57054..8c36337b 100644 --- a/sickbeard/search_propers.py +++ b/sickbeard/search_propers.py @@ -28,10 +28,8 @@ class ProperSearcher: self.amActive = False @staticmethod - def check_paused(): - if sickbeard.DOWNLOAD_PROPERS: - return False - return True + def is_enabled(): + return sickbeard.DOWNLOAD_PROPERS def run(self): diff --git a/sickbeard/subtitles.py b/sickbeard/subtitles.py index 1989c0c9..9ce797fa 100644 --- a/sickbeard/subtitles.py +++ b/sickbeard/subtitles.py @@ -49,10 +49,10 @@ def sortedServiceList(): newList.append(curServiceDict) return newList - + def getEnabledServiceList(): return [x['name'] for x in sortedServiceList() if x['enabled']] - + def isValidLanguage(language): return subliminal.language.language_list(language) @@ -81,18 +81,26 @@ def subtitlesLanguages(video_path): def subtitleLanguageFilter(): return [language for language in subliminal.language.LANGUAGES if language[2] != ""] -class SubtitlesFinder(): + +class SubtitlesFinder: """ The SubtitlesFinder will be executed every hour but will not necessarly search and download subtitles. Only if the defined rule is true """ - @staticmethod - def check_paused(): - if sickbeard.USE_SUBTITLES: - return False - return True + def __init__(self): + self.amActive = False - def run(self, force=False): + @staticmethod + def is_enabled(): + return sickbeard.USE_SUBTITLES + + def run(self): + if self.is_enabled(): + self.amActive = True + self._main() + self.amActive = False + + def _main(self): if len(sickbeard.subtitles.getEnabledServiceList()) < 1: logger.log(u'Not enough services selected. At least 1 service is required to search subtitles in the background', logger.ERROR) return @@ -100,7 +108,7 @@ class SubtitlesFinder(): logger.log(u'Checking for subtitles', logger.MESSAGE) # get episodes on which we want subtitles - # criteria is: + # criteria is: # - show subtitles = 1 # - episode subtitles != config wanted languages or SINGLE (depends on config multi) # - search count < 2 and diff(airdate, now) > 1 week : now -> 1d @@ -114,7 +122,7 @@ class SubtitlesFinder(): if len(sqlResults) == 0: logger.log('No subtitles to download', logger.MESSAGE) return - + rules = self._getRules() now = datetime.datetime.now() for epToSub in sqlResults: @@ -122,26 +130,26 @@ class SubtitlesFinder(): if not ek.ek(os.path.isfile, epToSub['location']): logger.log('Episode file does not exist, cannot download subtitles for episode %dx%d of show %s' % (epToSub['season'], epToSub['episode'], epToSub['show_name']), logger.DEBUG) continue - + # Old shows rule throwaway = datetime.datetime.strptime('20110101', '%Y%m%d') if ((epToSub['airdate_daydiff'] > 7 and epToSub['searchcount'] < 2 and now - datetime.datetime.strptime(epToSub['lastsearch'], '%Y-%m-%d %H:%M:%S') > datetime.timedelta(hours=rules['old'][epToSub['searchcount']])) or - # Recent shows rule + # Recent shows rule (epToSub['airdate_daydiff'] <= 7 and epToSub['searchcount'] < 7 and now - datetime.datetime.strptime(epToSub['lastsearch'], '%Y-%m-%d %H:%M:%S') > datetime.timedelta(hours=rules['new'][epToSub['searchcount']]))): logger.log('Downloading subtitles for episode %dx%d of show %s' % (epToSub['season'], epToSub['episode'], epToSub['show_name']), logger.DEBUG) - + showObj = helpers.findCertainShow(sickbeard.showList, int(epToSub['showid'])) if not showObj: logger.log(u'Show not found', logger.DEBUG) return - + epObj = showObj.getEpisode(int(epToSub["season"]), int(epToSub["episode"])) if isinstance(epObj, str): logger.log(u'Episode not found', logger.DEBUG) return - + previous_subtitles = epObj.subtitles - + try: subtitles = epObj.downloadSubtitles() except: diff --git a/sickbeard/watchedstate.py b/sickbeard/watchedstate.py new file mode 100644 index 00000000..a32fc8bb --- /dev/null +++ b/sickbeard/watchedstate.py @@ -0,0 +1,60 @@ +# +# This file is part of SickGear. +# +# SickGear is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# SickGear is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with SickGear. If not, see . + +import threading + +import sickbeard +from sickbeard import watchedstate_queue + + +class WatchedStateUpdater(object): + def __init__(self, name, queue_item): + + self.amActive = False + self.lock = threading.Lock() + self.name = name + self.queue_item = queue_item + + @property + def prevent_run(self): + return sickbeard.watchedStateQueueScheduler.action.is_in_queue(self.queue_item) + + def run(self): + if self.is_enabled(): + self.amActive = True + new_item = self.queue_item() + sickbeard.watchedStateQueueScheduler.action.add_item(new_item) + self.amActive = False + + +class EmbyWatchedStateUpdater(WatchedStateUpdater): + + def __init__(self): + super(EmbyWatchedStateUpdater, self).__init__('Emby', watchedstate_queue.EmbyWatchedStateQueueItem) + + @staticmethod + def is_enabled(): + return sickbeard.USE_EMBY and sickbeard.EMBY_WATCHEDSTATE_SCHEDULED + + +class PlexWatchedStateUpdater(WatchedStateUpdater): + + def __init__(self): + super(PlexWatchedStateUpdater, self).__init__('Plex', watchedstate_queue.PlexWatchedStateQueueItem) + + @staticmethod + def is_enabled(): + return sickbeard.USE_PLEX and sickbeard.PLEX_WATCHEDSTATE_SCHEDULED diff --git a/sickbeard/watchedstate_queue.py b/sickbeard/watchedstate_queue.py new file mode 100644 index 00000000..2df9ceae --- /dev/null +++ b/sickbeard/watchedstate_queue.py @@ -0,0 +1,83 @@ +# +# This file is part of SickGear. +# +# SickGear is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# SickGear is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with SickGear. If not, see . + +from __future__ import with_statement + +from sickbeard import generic_queue, logger +from sickbeard.webserve import History + +EMBYWATCHEDSTATE = 10 +PLEXWATCHEDSTATE = 20 + + +class WatchedStateQueue(generic_queue.GenericQueue): + def __init__(self): + super(WatchedStateQueue, self).__init__() + # self.queue_name = 'WATCHEDSTATEQUEUE' + self.queue_name = 'Q' + + def is_in_queue(self, itemtype): + with self.lock: + for cur_item in self.queue + [self.currentItem]: + if isinstance(cur_item, itemtype): + return True + return False + + # method for possible UI usage, can be removed if not used + def queue_length(self): + length = {'emby': 0, 'plex': 0} + with self.lock: + for cur_item in [self.currentItem] + self.queue: + if isinstance(cur_item, EmbyWatchedStateQueueItem): + length['emby'] += 1 + elif isinstance(cur_item, PlexWatchedStateQueueItem): + length['plex'] += 1 + + return length + + def add_item(self, item): + if isinstance(item, EmbyWatchedStateQueueItem) and not self.is_in_queue(EmbyWatchedStateQueueItem): + # emby watched state item + generic_queue.GenericQueue.add_item(self, item) + elif isinstance(item, PlexWatchedStateQueueItem) and not self.is_in_queue(PlexWatchedStateQueueItem): + # plex watched state item + generic_queue.GenericQueue.add_item(self, item) + else: + logger.log(u'Not adding item, it\'s already in the queue', logger.DEBUG) + + +class EmbyWatchedStateQueueItem(generic_queue.QueueItem): + def __init__(self): + super(EmbyWatchedStateQueueItem, self).__init__('Emby Watched', EMBYWATCHEDSTATE) + + def run(self): + super(EmbyWatchedStateQueueItem, self).run() + try: + History.update_watched_state_emby() + finally: + self.finish() + + +class PlexWatchedStateQueueItem(generic_queue.QueueItem): + def __init__(self): + super(PlexWatchedStateQueueItem, self).__init__('Plex Watched', PLEXWATCHEDSTATE) + + def run(self): + super(PlexWatchedStateQueueItem, self).run() + try: + History.update_watched_state_plex() + finally: + self.finish() diff --git a/sickbeard/webapi.py b/sickbeard/webapi.py index f2171e20..979de401 100644 --- a/sickbeard/webapi.py +++ b/sickbeard/webapi.py @@ -105,13 +105,26 @@ class Api(webserve.BaseHandler): self.set_header('X-Application', 'SickGear') self.set_header('X-API-Version', Api.version) + def prepare(self): + # Incorporate request JSON into arguments dictionary. + if self.request.body: + try: + json_data = {'payloadjson': json.loads(self.request.body)} + self.request.arguments.update(json_data) + except (StandardError, Exception): + raise ApiError('Unable to parse JSON.') + super(Api, self).prepare() + + def post(self, route, *args, **kwargs): + return self.get(route, *args, **kwargs) + @gen.coroutine def get(self, route, *args, **kwargs): route = route.strip('/') or 'index' kwargs = self.request.arguments for arg, value in kwargs.items(): - if len(value) == 1: + if not isinstance(value, dict) and len(value) == 1: kwargs[arg] = value[0] args = args[1:] @@ -475,6 +488,11 @@ class ApiCall(object): value = li else: value = value.split("|") + elif type == "dict": + if isinstance(value, dict): + value = value + else: + error = True elif type == "string": pass elif type == "ignore": @@ -2857,6 +2875,33 @@ class CMD_SickGearSetRequrieWords(ApiCall): return _responds(RESULT_SUCCESS, data=return_data, msg="%s set requried words" % return_type) +class CMD_SickGearUpdateWatchedState(ApiCall): + _help = {"desc": "Update db with details of media file that is watched or unwatched", + "requiredParameters": { + "payloadjson": { + "desc": "Payload is a dict of dicts transmitted as JSON via POST request"}, + }} + + def __init__(self, handler, args, kwargs): + # required + self.payloadjson, args = self.check_params(args, kwargs, "payloadjson", None, True, "dict", []) + # optional + # super, missing, help + ApiCall.__init__(self, handler, args, kwargs) + + def run(self): + """ Update db with details of media file that is watched or unwatched """ + payload = self.payloadjson.copy() + + from webserve import MainHandler + MainHandler.update_watched_state(payload, as_json=False) + + if not payload: + return _responds(RESULT_FAILURE, msg='Request made to SickGear with invalid payload') + + return _responds(RESULT_SUCCESS, payload) + + class CMD_SickGearShow(ApiCall): _help = {"desc": "display information for a given show", "requiredParameters": {"indexer": {"desc": "indexer of a show"}, @@ -4305,12 +4350,12 @@ class CMD_SickGearShowsStats(ApiCall): return _responds(RESULT_SUCCESS, stats) - +# WARNING: never define a cmd call string that contains a "_" (underscore) class CMD_ShowsStats(CMD_SickGearShowsStats): _help = {"desc": "display the global thetvdb.com shows and episode stats", "SickGearCommand": "sg.shows.stats", } - +# this is reserved for cmd indexes used while cmd chaining def __init__(self, handler, args, kwargs): # required # optional @@ -4318,8 +4363,8 @@ class CMD_ShowsStats(CMD_SickGearShowsStats): self.sickbeard_call = True CMD_SickGearShowsStats.__init__(self, handler, args, kwargs) - -# WARNING: never define a cmd call string that contains a "_" (underscore) +# WARNING: never define a param name that contains a "." (dot) +# this is reserved for cmd namspaces used while cmd chaining # this is reserved for cmd indexes used while cmd chaining # WARNING: never define a param name that contains a "." (dot) @@ -4389,6 +4434,7 @@ _functionMaper = {"help": CMD_Help, "sg.setignorewords": CMD_SickGearSetIgnoreWords, "sg.listrequiredwords": CMD_SickGearListRequireWords, "sg.setrequiredwords": CMD_SickGearSetRequrieWords, + "sg.updatewatchedstate": CMD_SickGearUpdateWatchedState, "show": CMD_Show, "sg.show": CMD_SickGearShow, "show.addexisting": CMD_ShowAddExisting, diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index 46845f07..99549348 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -23,7 +23,9 @@ import base64 import datetime import dateutil.parser import glob +import hashlib import itertools +import io import os import random import re @@ -32,6 +34,7 @@ import time import traceback import urllib import threading +import zipfile from mimetypes import MimeTypes from Cheetah.Template import Template @@ -71,9 +74,11 @@ from lib.libtrakt.exceptions import TraktException, TraktAuthException from lib.libtrakt.indexerapiinterface import TraktSearchTypes from trakt_helpers import build_config, trakt_collection_remove_account from sickbeard.bs4_parser import BS4Parser + +from lib.fuzzywuzzy import fuzz +from lib.send2trash import send2trash from lib.tmdb_api import TMDB from lib.tvdb_api.tvdb_exceptions import tvdb_exception -from lib.fuzzywuzzy import fuzz try: import json @@ -287,6 +292,253 @@ class CalendarHandler(BaseHandler): return ical + 'END:VCALENDAR' +class RepoHandler(BaseStaticFileHandler): + + def get(self, path, include_body=True, *args, **kwargs): + super(RepoHandler, self).get(path, include_body) + logger.log('Kodi req... get(path): %s' % path, logger.DEBUG) + + def set_extra_headers(self, *args, **kwargs): + super(RepoHandler, self).set_extra_headers(*args, **kwargs) + self.set_header('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0') + + def initialize(self, *args, **kwargs): + super(RepoHandler, self).initialize(*args, **kwargs) + + logger.log('Kodi req... initialize(path): %s' % kwargs['path'], logger.DEBUG) + cache_client = ek.ek(os.path.join, sickbeard.CACHE_DIR, 'clients') + cache_client_kodi = ek.ek(os.path.join, cache_client, 'kodi') + cache_client_kodi_watchedstate = ek.ek(os.path.join, cache_client_kodi, 'service.sickgear.watchedstate.updater') + for folder in (cache_client, + cache_client_kodi, + ek.ek(os.path.join, cache_client_kodi, 'repository.sickgear'), + cache_client_kodi_watchedstate, + ek.ek(os.path.join, cache_client_kodi_watchedstate, 'resources'), + ek.ek(os.path.join, cache_client_kodi_watchedstate, 'resources', 'language'), + ek.ek(os.path.join, cache_client_kodi_watchedstate, 'resources', 'language', 'English'), + ): + if not ek.ek(os.path.exists, folder): + ek.ek(os.mkdir, folder) + + with io.open(ek.ek(os.path.join, cache_client_kodi, 'index.html'), 'w') as fh: + fh.write(self.render_kodi_index()) + with io.open(ek.ek(os.path.join, cache_client_kodi, 'repository.sickgear', 'index.html'), 'w') as fh: + fh.write(self.render_kodi_repository_sickgear_index()) + with io.open(ek.ek(os.path.join, cache_client_kodi_watchedstate, 'index.html'), 'w') as fh: + fh.write(self.render_kodi_service_sickgear_watchedstate_updater_index()) + with io.open(ek.ek(os.path.join, cache_client_kodi_watchedstate, 'resources', 'index.html'), 'w') as fh: + fh.write(self.render_kodi_service_sickgear_watchedstate_updater_resources_index()) + with io.open(ek.ek( + os.path.join, + cache_client_kodi_watchedstate, 'resources', 'language', 'index.html'), 'w') as fh: + fh.write(self.render_kodi_service_sickgear_watchedstate_updater_resources_language_index()) + with io.open(ek.ek( + os.path.join, + cache_client_kodi_watchedstate, 'resources', 'language', 'English', 'index.html'), 'w') as fh: + fh.write(self.render_kodi_service_sickgear_watchedstate_updater_resources_language_english_index()) + + ''' + + if add-on rendered md5 changes, update its zip and then flag to update repo addon + if repo rendered md5 changes or flag is true, update the repo addon, where repo version *must* be increased + + ''' + repo_md5_file = ek.ek(os.path.join, cache_client_kodi, 'addons.xml.md5') + saved_md5 = None + try: + with io.open(repo_md5_file, 'r') as fh: + saved_md5 = fh.readline() + except(StandardError, Exception): + pass + rendered_md5 = self.render_kodi_repo_addons_xml_md5() + if saved_md5 != rendered_md5: + with io.open(ek.ek(os.path.join, cache_client_kodi, 'repository.sickgear', 'addon.xml'), 'w') as fh: + fh.write(self.render_kodi_repo_addon_xml()) + with io.open(ek.ek(os.path.join, cache_client_kodi_watchedstate, 'addon.xml'), 'w') as fh: + fh.write(self.get_watchedstate_updater_addon_xml()) + with io.open(ek.ek(os.path.join, cache_client_kodi, 'addons.xml'), 'w') as fh: + fh.write(self.render_kodi_repo_addons_xml()) + with io.open(ek.ek(os.path.join, cache_client_kodi, 'addons.xml.md5'), 'w') as fh: + fh.write(rendered_md5) + + def save_zip(name, version, zip_path, zip_method): + zip_name = '%s-%s.zip' % (name, version) + zip_file = ek.ek(os.path.join, zip_path, zip_name) + for f in helpers.scantree(zip_path, ['resources']): + if f.is_file(follow_symlinks=False) and f.name[-4:] in ('.zip', '.md5'): + try: + ek.ek(os.remove, f.path) + except OSError: + logger.log('Unable to delete %s: %r / %s' % (f.path, e, str(e)), logger.WARNING) + zip_data = zip_method() + with io.open(zip_file, 'wb') as zh: + zh.write(zip_data) + + # Force a UNIX line ending, like the md5sum utility. + with io.open(ek.ek(os.path.join, zip_path, '%s.md5' % zip_name), 'w', newline='\n') as zh: + zh.write(u'%s *%s\n' % (self.md5ify(zip_data), zip_name)) + + aid, ver = self.repo_sickgear_details() + save_zip(aid, ver, ek.ek(os.path.join, cache_client_kodi, 'repository.sickgear'), + self.kodi_repository_sickgear_zip) + + aid, ver = self.addon_watchedstate_details() + save_zip(aid, ver, cache_client_kodi_watchedstate, + self.kodi_service_sickgear_watchedstate_updater_zip) + + for (src, dst) in ( + (('repository.sickgear', 'icon.png'), + (cache_client_kodi, 'repository.sickgear', 'icon.png')), + (('service.sickgear.watchedstate.updater', 'icon.png'), + (cache_client_kodi_watchedstate, 'icon.png')), + (('service.sickgear.watchedstate.updater', 'resources', 'settings.xml'), + (cache_client_kodi_watchedstate, 'resources', 'settings.xml')), + (('service.sickgear.watchedstate.updater', 'resources', 'language', 'English', 'strings.xml'), + (cache_client_kodi_watchedstate, 'resources', 'language', 'English', 'strings.xml')), + ): + helpers.copyFile(ek.ek( + os.path.join, *(sickbeard.PROG_DIR, 'sickbeard', 'clients', 'kodi') + src), ek.ek(os.path.join, *dst)) + + def get_content_type(self): + if '.md5' == self.absolute_path[-4:]: + return 'text/plain' + return super(RepoHandler, self).get_content_type() + + def index(self, basepath, filelist): + t = PageTemplate(headers=self.request.headers, file='repo_index.tmpl') + t.basepath = basepath + t.filelist = filelist + return t.respond() + + def render_kodi_index(self): + return self.index('/kodi/', + ['repository.sickgear/', + 'service.sickgear.watchedstate.updater/', + 'addons.xml', + 'addons.xml.md5', + ]) + + def render_kodi_repository_sickgear_index(self): + aid, version = self.repo_sickgear_details() + return self.index('/kodi/repository.sickgear/', + ['addon.xml', + 'icon.png', + '%s-%s.zip' % (aid, version), + '%s-%s.zip.md5' % (aid, version), + ]) + + def render_kodi_service_sickgear_watchedstate_updater_index(self): + aid, version = self.addon_watchedstate_details() + return self.index('/kodi/service.sickgear.watchedstate.updater/', + ['resources/', + 'addon.xml', + 'icon.png', + '%s-%s.zip' % (aid, version), + '%s-%s.zip.md5' % (aid, version), + ]) + + def render_kodi_service_sickgear_watchedstate_updater_resources_index(self): + return self.index('/kodi/service.sickgear.watchedstate.updater/resources', + ['language/', + 'settings.xml', + 'icon.png', + ]) + + def render_kodi_service_sickgear_watchedstate_updater_resources_language_index(self): + return self.index('/kodi/service.sickgear.watchedstate.updater/resources/language', + ['English/', + ]) + + def render_kodi_service_sickgear_watchedstate_updater_resources_language_english_index(self): + return self.index('/kodi/service.sickgear.watchedstate.updater/resources/language/English', + ['strings.xml', + ]) + + def repo_sickgear_details(self): + return re.findall('(?si)addon\sid="(repository\.[^"]+)[^>]+version="([^"]+)', + self.render_kodi_repo_addon_xml())[0] + + def addon_watchedstate_details(self): + return re.findall('(?si)addon\sid="([^"]+)[^>]+version="([^"]+)', + self.get_watchedstate_updater_addon_xml())[0] + + @staticmethod + def get_watchedstate_updater_addon_xml(): + with io.open(ek.ek(os.path.join, sickbeard.PROG_DIR, 'sickbeard', 'clients', + 'kodi', 'service.sickgear.watchedstate.updater', 'addon.xml'), 'r') as fh: + return fh.read().strip() + + def render_kodi_repo_addon_xml(self): + t = PageTemplate(headers=self.request.headers, file='repo_kodi_addon.tmpl') + return t.respond().strip() + + def render_kodi_repo_addons_xml(self): + t = PageTemplate(headers=self.request.headers, file='repo_kodi_addons.tmpl') + t.watchedstate_updater_addon_xml = re.sub( + '(?m)^([\s]*<)', r'\t\1', + '\n'.join(self.get_watchedstate_updater_addon_xml().split('\n')[1:])) # skip xml header + + t.repo_xml = re.sub( + '(?m)^([\s]*<)', r'\t\1', + '\n'.join(self.render_kodi_repo_addon_xml().split('\n')[1:])) + + return t.respond() + + def render_kodi_repo_addons_xml_md5(self): + return self.md5ify('\n'.join(self.render_kodi_repo_addons_xml().split('\n')[1:])) + + @staticmethod + def md5ify(string): + return u'%s' % hashlib.new('md5', string).hexdigest() + + def kodi_repository_sickgear_zip(self): + bfr = io.BytesIO() + + try: + with zipfile.ZipFile(bfr, 'w') as zh: + zh.writestr('repository.sickgear/addon.xml', self.render_kodi_repo_addon_xml(), zipfile.ZIP_DEFLATED) + + with io.open(ek.ek(os.path.join, sickbeard.PROG_DIR, + 'sickbeard', 'clients', 'kodi', 'repository.sickgear', 'icon.png'), 'rb') as fh: + infile = fh.read() + zh.writestr('repository.sickgear/icon.png', infile, zipfile.ZIP_DEFLATED) + except OSError as e: + logger.log('Unable to zip %s: %r / %s' % (f.path, e, str(e)), logger.WARNING) + + zip_data = bfr.getvalue() + bfr.close() + return zip_data + + @staticmethod + def kodi_service_sickgear_watchedstate_updater_zip(): + bfr = io.BytesIO() + + basepath = ek.ek(os.path.join, sickbeard.PROG_DIR, 'sickbeard', 'clients', 'kodi') + + zip_path = ek.ek(os.path.join, basepath, 'service.sickgear.watchedstate.updater') + devenv_src = ek.ek(os.path.join, sickbeard.PROG_DIR, 'tests', '_devenv.py') + devenv_dst = ek.ek(os.path.join, zip_path, '_devenv.py') + if sickbeard.ENV.get('DEVENV') and ek.ek(os.path.exists, devenv_src): + helpers.copyFile(devenv_src, devenv_dst) + else: + helpers.remove_file_failed(devenv_dst) + + for f in helpers.scantree(zip_path): + if f.is_file(follow_symlinks=False) and f.name[-4:] not in '.xcf': + try: + with io.open(f.path, 'rb') as fh: + infile = fh.read() + + with zipfile.ZipFile(bfr, 'a') as zh: + zh.writestr(ek.ek(os.path.relpath, f.path, basepath), infile, zipfile.ZIP_DEFLATED) + except OSError as e: + logger.log('Unable to zip %s: %r / %s' % (f.path, e, str(e)), logger.WARNING) + + zip_data = bfr.getvalue() + bfr.close() + return zip_data + + class IsAliveHandler(BaseHandler): def get(self, *args, **kwargs): kwargs = self.request.arguments @@ -614,6 +866,23 @@ class MainHandler(WebHandler): sickbeard.save_config() + def update_watched_state_kodi(self, payload=None, as_json=True): + + data = {} + try: + data = json.loads(payload) + except (StandardError, Exception): + pass + + for k, d in data.iteritems(): + d['label'] = '%s%s{Kodi}' % (d['label'], bool(d['label']) and ' ' or '') + try: + d['played'] = 100 * int(d['played']) + except (StandardError, Exception): + d['played'] = 0 + + return self.update_watched_state(data, as_json) + @staticmethod def getFooterTime(change_layout=True, json_dump=True, *args, **kwargs): @@ -648,6 +917,128 @@ class MainHandler(WebHandler): return next_event + @staticmethod + def update_watched_state(payload=None, as_json=True): + """ + Update db with details of media file that is watched or unwatched + + :param payload: Payload is a dict of dicts + :type payload: JSON or Dict + Each dict key in payload is an arbitrary value used to return its associated success or fail response. + Each dict value in payload comprises a dict of key value pairs where, + key: path_file: Path and filename of media, required for media to be found. + type: path_file: String + key: played: Optional default=100. Percentage times media has played. If 0, show is set as unwatched. + type: played: String + key: label: Optional default=''. Profile name or label in use while playing media. + type: label: String + key: date_watched: Optional default=current time. Datetime stamp that episode changed state. + type: date_watched: Timestamp + + Example: + dict( + key01=dict(path_file='\\media\\path\\', played=100, label='Bob', date_watched=1509850398.0), + key02=dict(path_file='\\media\\path\\file-played1.mkv', played=100, label='Sue', date_watched=1509850398.0), + key03=dict(path_file='\\media\\path\\file-played2.mkv', played=0, label='Rita', date_watched=1509850398.0) + ) + JSON: '{"key01": {"path_file": "\\media\\path\\file_played1.mkv", "played": 100, "label": "Bob", "date_watched": 1509850398.0}}' + :param as_json: True returns result as JSON otherwise Dict + :type as_json: Boolean + :return: if OK, the value of each dict is '' else fail reason string else None if payload is invalid. + :rtype: JSON if as_json is True otherwise None but with payload dict modified + Example: + Dict: {'key123': {''}} : on success + As JSON: '{"key123": {""}}' : on success + Dict: {'key123': {'error reason'}} + As JSON: '{"key123": {"error reason"}}' + Dict: {'error': {'error reason'}} : 'error' used as default key when bad key, value, or json + JSON: '{"error": {"error reason"}}' : 'error' used as default key when bad key, value, or json + +Example case code using API endpoint, copy/paste, edit to suit, save, then run with: python sg_watched.py +``` +import json +import urllib2 + +# SickGear APIkey +sg_apikey = '0123456789abcdef' +# SickGear server detail +sg_host = 'http://localhost:8081' + +url = '%s/api/%s/?cmd=sg.updatewatchedstate' % (sg_host, sg_apikey) +payload = json.dumps(dict( + key01=dict(path_file='\\media\\path\\', played=100, label='Bob', date_watched=1509850398.0), + key02=dict(path_file='\\media\\path\\file-played1.mkv', played=100, label='Sue', date_watched=1509850398.0), + key03=dict(path_file='\\media\\path\\file-played2.mkv', played=0, label='Rita', date_watched=1509850398.0) +)) +# payload is POST'ed to SG +rq = urllib2.Request(url, data=payload) +r = urllib2.urlopen(rq) +print json.load(r) +r.close() +``` + """ + try: + data = json.loads(payload) + except ValueError: + payload = {} + data = payload + except TypeError: + data = payload + + sql_results = None + if data: + my_db = db.DBConnection(row_type='dict') + + media_paths = map(lambda (_, d): ek.ek(os.path.basename, d['path_file']), data.iteritems()) + sql_results = my_db.select( + 'SELECT episode_id, status, location, file_size FROM tv_episodes WHERE file_size > 0 AND (%s)' % + ' OR '.join(['location LIKE "%%%s"' % x for x in media_paths])) + + if sql_results: + cl = [] + + ep_results = {} + map(lambda r: ep_results.update({'%s' % ek.ek(os.path.basename, r['location']).lower(): dict( + episode_id=r['episode_id'], status=r['status'], location=r['location'], file_size=r['file_size'])}), + sql_results) + + for (k, v) in iteritems(data): + + bname = (ek.ek(os.path.basename, v.get('path_file')) or '').lower() + if not bname: + msg = 'Missing media file name provided' + data[k] = msg + logger.log('Update watched state skipped an item: %s' % msg, logger.WARNING) + continue + + if bname in ep_results: + date_watched = now = sbdatetime.sbdatetime.now().totimestamp(default=0) + if 1500000000 < date_watched: + date_watched = sickbeard.helpers.tryInt(float(v.get('date_watched'))) + + ep_data = ep_results[bname] + # using label and location with upsert to list multi-client items at same location + # can omit label to have the latest scanned client upsert an existing client row based on location + cl.extend(db.mass_upsert_sql( + 'tv_episodes_watched', + dict(tvep_id=ep_data['episode_id'], clientep_id=v.get('media_id', '') or '', + played=v.get('played', 1), + date_watched=date_watched, date_added=now, + status=ep_data['status'], file_size=ep_data['file_size']), + dict(location=ep_data['location'], label=v.get('label', '')), sanitise=False)) + + data[k] = '' + + if cl: + my_db.mass_action(cl) + + if as_json: + if not data: + data = dict(error='Request made to SickGear with invalid payload') + logger.log('Update watched state failed: %s' % data['error'], logger.WARNING) + + return json.dumps(data) + def toggleDisplayShowSpecials(self, show): sickbeard.DISPLAY_SHOW_SPECIALS = not sickbeard.DISPLAY_SHOW_SPECIALS @@ -656,7 +1047,8 @@ class MainHandler(WebHandler): def setHistoryLayout(self, layout): - if layout not in ('compact', 'detailed'): + if layout not in ('compact', 'detailed', 'compact_watched', 'detailed_watched', + 'compact_stats', 'graph_stats', 'provider_failures'): layout = 'detailed' sickbeard.HISTORY_LAYOUT = layout @@ -4550,7 +4942,7 @@ class Manage(MainHandler): for release in toRemove: item = re.sub('_{3,}', '%', release) - myDB.action('DELETE FROM failed WHERE release like ?', [item]) + myDB.action('DELETE FROM failed WHERE `release` like ?', [item]) if toRemove: return self.redirect('/manage/failedDownloads/') @@ -4576,12 +4968,6 @@ class ManageSearches(Manage): t.recent_search_status = sickbeard.searchQueueScheduler.action.is_recentsearch_in_progress() t.find_propers_status = sickbeard.searchQueueScheduler.action.is_propersearch_in_progress() t.queue_length = sickbeard.searchQueueScheduler.action.queue_length() - t.provider_fail_stats = filter(lambda stat: len(stat['fails']), [{ - 'active': p.is_active(), 'name': p.name, 'prov_id': p.get_id(), 'prov_img': p.image_name(), - 'fails': p.fails.fails_sorted, 'tmr_limit_time': p.tmr_limit_time, - 'next_try': p.get_next_try_time, 'has_limit': getattr(p, 'has_limit', False)} - for p in sickbeard.providerList + sickbeard.newznabProviderList]) - t.provider_fails = 0 < len([p for p in t.provider_fail_stats if len(p['fails'])]) t.submenu = self.ManageMenu('Search') @@ -4705,73 +5091,168 @@ class showProcesses(Manage): class History(MainHandler): + + flagname_help_watched = 'ui_history_help_watched_supported_clients' + flagname_wdf = 'ui_history_watched_delete_files' + flagname_wdr = 'ui_history_watched_delete_records' + + def toggle_help(self): + db.DBConnection().toggle_flag(self.flagname_help_watched) + def index(self, limit=100): - # sqlResults = myDB.select('SELECT h.*, show_name, name FROM history h, tv_shows s, tv_episodes e WHERE h.showid=s.indexer_id AND h.showid=e.showid AND h.season=e.season AND h.episode=e.episode ORDER BY date DESC LIMIT '+str(numPerPage*(p-1))+', '+str(numPerPage)) - myDB = db.DBConnection() - if limit == '0': - sqlResults = myDB.select( - 'SELECT h.*, show_name FROM history h, tv_shows s WHERE h.showid=s.indexer_id ORDER BY date DESC') - else: - sqlResults = myDB.select( - 'SELECT h.*, show_name FROM history h, tv_shows s WHERE h.showid=s.indexer_id ORDER BY date DESC LIMIT ?', - [limit]) - - history = {'show_id': 0, 'season': 0, 'episode': 0, 'quality': 0, - 'actions': [{'time': '', 'action': '', 'provider': ''}]} - compact = [] - - for sql_result in sqlResults: - - if not any((history['show_id'] == sql_result['showid'] - and history['season'] == sql_result['season'] - and history['episode'] == sql_result['episode'] - and history['quality'] == sql_result['quality']) - for history in compact): - - history = {} - history['show_id'] = sql_result['showid'] - history['season'] = sql_result['season'] - history['episode'] = sql_result['episode'] - history['quality'] = sql_result['quality'] - history['show_name'] = sql_result['show_name'] - history['resource'] = sql_result['resource'] - - action = {} - history['actions'] = [] - - action['time'] = sql_result['date'] - action['action'] = sql_result['action'] - action['provider'] = sql_result['provider'] - action['resource'] = sql_result['resource'] - history['actions'].append(action) - history['actions'].sort(key=lambda x: x['time']) - compact.append(history) - else: - index = [i for i, dict in enumerate(compact) \ - if dict['show_id'] == sql_result['showid'] \ - and dict['season'] == sql_result['season'] \ - and dict['episode'] == sql_result['episode'] - and dict['quality'] == sql_result['quality']][0] - - action = {} - history = compact[index] - - action['time'] = sql_result['date'] - action['action'] = sql_result['action'] - action['provider'] = sql_result['provider'] - action['resource'] = sql_result['resource'] - history['actions'].append(action) - history['actions'].sort(key=lambda x: x['time'], reverse=True) - t = PageTemplate(headers=self.request.headers, file='history.tmpl') - t.historyResults = sqlResults - t.compactResults = compact t.limit = limit - t.submenu = [ - {'title': 'Clear History', 'path': 'history/clearHistory'}, - {'title': 'Trim History', 'path': 'history/trimHistory'}, - ] + + my_db = db.DBConnection(row_type='dict') + + result_sets = [] + if sickbeard.HISTORY_LAYOUT in ('compact', 'detailed'): + + # sqlResults = myDB.select('SELECT h.*, show_name, name FROM history h, tv_shows s, tv_episodes e + # WHERE h.showid=s.indexer_id AND h.showid=e.showid AND h.season=e.season AND h.episode=e.episode + # ORDER BY date DESC LIMIT '+str(numPerPage*(p-1))+', '+str(numPerPage)) + sql = 'SELECT h.*, show_name' \ + ' FROM history h, tv_shows s' \ + ' WHERE h.showid=s.indexer_id' \ + ' ORDER BY date DESC%s' % (' LIMIT %s' % limit, '')['0' == limit] + sql_results = my_db.select(sql) + + compact = [] + + for sql_result in sql_results: + + action = dict(time=sql_result['date'], action=sql_result['action'], + provider=sql_result['provider'], resource=sql_result['resource']) + + if not any((record['show_id'] == sql_result['showid'] + and record['season'] == sql_result['season'] + and record['episode'] == sql_result['episode'] + and record['quality'] == sql_result['quality']) for record in compact): + + cur_res = dict(show_id=sql_result['showid'], show_name=sql_result['show_name'], + season=sql_result['season'], episode=sql_result['episode'], + quality=sql_result['quality'], resource=sql_result['resource'], actions=[]) + + cur_res['actions'].append(action) + cur_res['actions'].sort(key=lambda x: x['time']) + + compact.append(cur_res) + else: + index = [i for i, record in enumerate(compact) + if record['show_id'] == sql_result['showid'] + and record['season'] == sql_result['season'] + and record['episode'] == sql_result['episode'] + and record['quality'] == sql_result['quality']][0] + + cur_res = compact[index] + + cur_res['actions'].append(action) + cur_res['actions'].sort(key=lambda x: x['time'], reverse=True) + + t.compact_results = compact + t.history_results = sql_results + t.submenu = [{'title': 'Clear History', 'path': 'history/clearHistory'}, + {'title': 'Trim History', 'path': 'history/trimHistory'}] + + result_sets = ['compact_results', 'history_results'] + + elif 'watched' in sickbeard.HISTORY_LAYOUT: + + t.hide_watched_help = my_db.has_flag(self.flagname_help_watched) + + t.results = my_db.select( + 'SELECT tvs.show_name, ' + ' tve.indexer, tve.showid, tve.season, tve.episode, tve.status, tve.file_size,' + ' tvew.rowid, tvew.tvep_id, tvew.label, tvew.played, tvew.date_watched,' + ' tvew.status as status_w, tvew.location, tvew.file_size as file_size_w, tvew.hide' + ' FROM [tv_shows] AS tvs' + ' INNER JOIN [tv_episodes] AS tve ON (tvs.indexer == tve.indexer AND tvs.indexer_id == tve.showid)' + ' INNER JOIN [tv_episodes_watched] AS tvew ON (tve.episode_id == tvew.tvep_id)' + ' WHERE 0 = hide' + ' ORDER BY tvew.date_watched DESC' + '%s' % (' LIMIT %s' % limit, '')['0' == limit]) + + mru_count = {} + t.mru_row_ids = [] + for r in t.results: + r['deleted'] = False + no_file = not helpers.get_size(r['location']) + if no_file or not r['file_size']: # if not filesize, possible file recovered so restore known size + if no_file: + # file no longer available, can be due to upgrade, so use known details + r['deleted'] = True + r['status'] = r['status_w'] + r['file_size'] = r['file_size_w'] + + r['status'], r['quality'] = Quality.splitCompositeStatus(helpers.tryInt(r['status'])) + r['season'], r['episode'] = '%02i' % r['season'], '%02i' % r['episode'] + if r['tvep_id'] not in mru_count: + # depends on SELECT ORDER BY date_watched DESC to determine mru_count + mru_count.update({r['tvep_id']: r['played']}) + t.mru_row_ids += [r['rowid']] + r['mru_count'] = mru_count[r['tvep_id']] + + result_sets = ['results'] + + # restore state of delete dialog + t.last_delete_files = my_db.has_flag(self.flagname_wdf) + t.last_delete_records = my_db.has_flag(self.flagname_wdr) + + elif 'stats' in sickbeard.HISTORY_LAYOUT: + + prov_list = [p.name for p in (sickbeard.providerList + + sickbeard.newznabProviderList + + sickbeard.torrentRssProviderList)] + sql = 'SELECT COUNT(1) as count,' \ + ' MIN(DISTINCT date) as earliest,' \ + ' MAX(DISTINCT date) as latest,' \ + ' provider ' \ + 'FROM ' \ + '(SELECT * FROM history h, tv_shows s' \ + ' WHERE h.showid=s.indexer_id' \ + ' AND h.provider in ("%s")' % '","'.join(prov_list) + \ + ' AND h.action in ("%s")' % '","'.join([str(x) for x in Quality.SNATCHED_ANY]) + \ + ' ORDER BY date DESC%s)' % (' LIMIT %s' % limit, '')['0' == limit] + \ + ' GROUP BY provider' \ + ' ORDER BY count DESC' + t.stat_results = my_db.select(sql) + + t.earliest = 0 + t.latest = 0 + for r in t.stat_results: + if r['latest'] > t.latest or not t.latest: + t.latest = r['latest'] + if r['earliest'] < t.earliest or not t.earliest: + t.earliest = r['earliest'] + + elif 'failures' in sickbeard.HISTORY_LAYOUT: + + t.provider_fail_stats = filter(lambda stat: len(stat['fails']), [{ + 'active': p.is_active(), 'name': p.name, 'prov_id': p.get_id(), 'prov_img': p.image_name(), + 'fails': p.fails.fails_sorted, 'tmr_limit_time': p.tmr_limit_time, + 'next_try': p.get_next_try_time, 'has_limit': getattr(p, 'has_limit', False)} + for p in sickbeard.providerList + sickbeard.newznabProviderList]) + t.provider_fail_stats = sorted([item for item in t.provider_fail_stats], + key=lambda y: y.get('fails')[0].get('timestamp'), + reverse=True) + t.provider_fail_stats = sorted([item for item in t.provider_fail_stats], + key=lambda y: y.get('next_try') or datetime.timedelta(weeks=65535), + reverse=False) + + t.provider_fails = 0 < len([p for p in t.provider_fail_stats if len(p['fails'])]) + + article_match = '^((?:A(?!\s+to)n?)|The)\s+(.*)$' + for rs in [getattr(t, name, []) for name in result_sets]: + for r in rs: + r['name1'] = '' + r['name2'] = r['data_name'] = r['show_name'] + if not sickbeard.SORT_ARTICLE: + try: + r['name1'], r['name2'] = re.findall(article_match, r['show_name'])[0] + r['data_name'] = r['name2'] + except (StandardError, Exception): + pass return t.respond() @@ -4792,6 +5273,218 @@ class History(MainHandler): ui.notifications.message('Removed history entries greater than 30 days old') self.redirect('/history/') + @staticmethod + def update_watched_state_emby(): + + import sickbeard.notifiers.emby as emby + + client = emby.EmbyNotifier() + hosts, keys, message = client.check_config(sickbeard.EMBY_HOST, sickbeard.EMBY_APIKEY) + + if sickbeard.USE_EMBY and hosts: + logger.log('Beginning Emby update watched episode states') + + rd = sickbeard.ROOT_DIRS.split('|')[1:] + rootpaths = sorted(['%s%s' % (ek.ek(os.path.splitdrive, x)[1], os.path.sep) for x in rd], + key=len, reverse=True) + rootdirs = sorted([x for x in rd], key=len, reverse=True) + headers = {'Content-type': 'application/json'} + states = {} + idx = 0 + for i, cur_host in enumerate(hosts): + base_url = 'http://%s/emby/Users' % cur_host + headers.update({'X-MediaBrowser-Token': keys[i]}) + + users = sickbeard.helpers.getURL(base_url, headers=headers, + params=dict(format='json'), timeout=10, json=True) + + for user_id in [u.get('Id') for u in users if u.get('Id')]: + user_url = '%s/%s' % (base_url, user_id) + user = sickbeard.helpers.getURL(user_url, headers=headers, + params=dict(format='json'), timeout=10, json=True) + + for folder_id in user.get('Policy', {}).get('EnabledFolders') or []: + folder = sickbeard.helpers.getURL('%s/Items/%s' % (user_url, folder_id), headers=headers, + params=dict(format='json'), timeout=10, json=True) + + if 'tvshows' != folder.get('CollectionType', ''): + continue + + items = sickbeard.helpers.getURL('%s/Items' % user_url, headers=headers, + params=dict(SortBy='DatePlayed,SeriesSortName,SortName', + SortOrder='Descending', + IncludeItemTypes='Episode', + Recursive='true', + Fields='Path,UserData', + IsMissing='false', + IsVirtualUnaired='false', + StartIndex='0', Limit='100', + ParentId=folder_id, + Filters='IsPlayed', + format='json'), timeout=10, json=True) + for d in filter(lambda item: 'Episode' == item.get('Type', ''), items.get('Items')): + try: + root_dir_found = False + path_file = d.get('Path') + if not path_file: + continue + for index, p in enumerate(rootpaths): + if p in path_file: + path_file = ek.ek(os.path.join, rootdirs[index], + re.sub('.*?%s' % re.escape(p), '', path_file)) + root_dir_found = True + break + if not root_dir_found: + continue + states[idx] = dict( + path_file=path_file, + media_id=d['Id'], + played=(d.get('UserData', {}).get('PlayedPercentage') or + (d.get('UserData', {}).get('Played') and + d.get('UserData', {}).get('PlayCount') * 100) or 0), + label='%s%s{Emby}' % (user.get('Name', ''), bool(user.get('Name')) and ' ' or ''), + date_watched=sickbeard.sbdatetime.sbdatetime.totimestamp( + dateutil.parser.parse(d.get('UserData', {}).get('LastPlayedDate')))) + idx += 1 + except(StandardError, Exception): + continue + + if states: + # Prune user removed items that are no longer being returned by API + my_db = db.DBConnection(row_type='dict') + media_paths = map(lambda (_, s): ek.ek(os.path.basename, s['path_file']), states.iteritems()) + my_db.select('DELETE FROM tv_episodes_watched WHERE hide=1 AND label LIKE "%%{Emby}" AND %s' % + ' AND '.join(['location NOT LIKE "%%%s"' % x for x in media_paths])) + + MainHandler.update_watched_state(states, False) + + logger.log('Finished Emby update watched episode states') + + @staticmethod + def update_watched_state_plex(): + + hosts = [x.strip().lower() for x in sickbeard.PLEX_SERVER_HOST.split(',')] + if sickbeard.USE_PLEX and hosts: + logger.log('Beginning Plex update watched episode states') + + from plex import Plex + import urllib2 + + plex = Plex(dict(username=sickbeard.PLEX_USERNAME, password=sickbeard.PLEX_PASSWORD, + section_filter_path=sickbeard.ROOT_DIRS.split('|')[1:])) + + states = {} + idx = 0 + for cur_host in hosts: + parts = urllib2.splitport(cur_host) + if parts[0]: + plex.plex_host = parts[0] + if None is not parts[1]: + plex.plex_port = parts[1] + + plex.fetch_show_states() + + for k, v in plex.show_states.iteritems(): + if 0 < v.get('played') or 0: + states[idx] = v + states[idx]['label'] = '%s%s{Plex}' % (v['label'], bool(v['label']) and ' ' or '') + idx += 1 + + if states: + # Prune user removed items that are no longer being returned by API + my_db = db.DBConnection(row_type='dict') + media_paths = map(lambda (_, s): ek.ek(os.path.basename, s['path_file']), states.iteritems()) + my_db.select('DELETE FROM tv_episodes_watched WHERE hide=1 AND label LIKE "%%{Plex}" AND %s' % + ' AND '.join(['location NOT LIKE "%%%s"' % x for x in media_paths])) + + MainHandler.update_watched_state(states, False) + + logger.log('Finished Plex update watched episode states') + + def watched(self, tvew_id=None, files=None, records=None): + + my_db = db.DBConnection(row_type='dict') + + # remember state of dialog + my_db.set_flag(self.flagname_wdf, files) + my_db.set_flag(self.flagname_wdr, records) + + ids = tvew_id.split('|') + if not (ids and any([files, records])): + return + + row_show_ids = {} + for show_detail in ids: + rowid, tvid, shoid = show_detail.split('-') + row_show_ids.update({int(rowid): {int(tvid): int(shoid)}}) + + sql_results = my_db.select( + 'SELECT rowid, label, location' + ' FROM [tv_episodes_watched] WHERE `rowid` in (%s)' % ','.join([str(k) for k in row_show_ids.keys()]) + ) + + h_records = [] + removed = [] + deleted = [] + attempted = [] + refresh = [] + for r in sql_results: + if files and r['location'] not in attempted and 0 < helpers.get_size(r['location'])\ + and ek.ek(os.path.isfile, r['location']): + # locations repeat with watch events but attempt to delete once + attempted += [r['location']] + + try: + if sickbeard.TRASH_REMOVE_SHOW: + ek.ek(send2trash, r['location']) + else: + ek.ek(os.remove, r['location']) + except OSError as e: + logger.log(u'Unable to delete file %s: %s' % (r['location'], str(e.strerror))) + + if not ek.ek(os.path.isfile, r['location']): + logger.log(u'Deleted file %s' % r['location']) + + deleted += [r['location']] + if row_show_ids[r['rowid']] not in refresh: + # schedule a show for one refresh after deleting an arbitrary number of locations + refresh += [row_show_ids[r['rowid']]] + + if records: + if not r['label'].endswith('{Emby}') and not r['label'].endswith('{Plex}'): + r_del = my_db.action('DELETE FROM [tv_episodes_watched] WHERE `rowid` == ?', [r['rowid']]) + if 1 == r_del.rowcount: + h_records += ['%s-%s-%s' % (r['rowid'], k, v) for k, v in row_show_ids[r['rowid']].iteritems()] + else: + r_del = my_db.action('UPDATE [tv_episodes_watched] SET hide=1 WHERE `rowid` == ?', [r['rowid']]) + if 1 == r_del.rowcount: + removed += ['%s-%s-%s' % (r['rowid'], k, v) for k, v in row_show_ids[r['rowid']].iteritems()] + + for tvid_shoid_dict in refresh: + try: + sickbeard.showQueueScheduler.action.refreshShow( + helpers.find_show_by_id(sickbeard.showList, tvid_shoid_dict)) + except (StandardError, Exception): + pass + + if not any([removed, h_records, len(deleted)]): + msg = 'No items removed, removed, or files deleted' + else: + msg = [] + if deleted: + msg += ['%s %s media file%s' % ( + ('Permanently deleted', 'Trashed')[sickbeard.TRASH_REMOVE_SHOW], + len(deleted), helpers.maybe_plural(len(deleted)))] + elif removed: + msg += ['Removed %s watched history item%s' % (len(removed), helpers.maybe_plural(len(removed)))] + else: + msg += ['Deleted %s watched history item%s' % (len(h_records), helpers.maybe_plural(len(h_records)))] + msg = '
'.join(msg) + + ui.notifications.message('History : Watch', msg) + + return json.dumps(dict(success=h_records)) + class Config(MainHandler): @staticmethod @@ -4906,7 +5599,7 @@ class ConfigGeneral(Config): logger.log('Could not change Show Update Scheduler time: %s' % ex(e), logger.ERROR) sickbeard.TRASH_REMOVE_SHOW = config.checkbox_to_value(trash_remove_show) sickbeard.TRASH_ROTATE_LOGS = config.checkbox_to_value(trash_rotate_logs) - if not config.change_LOG_DIR(log_dir, web_log): + if not config.change_log_dir(log_dir, web_log): results += ['Unable to create directory ' + os.path.normpath(log_dir) + ', log directory not changed.'] if indexer_default: sickbeard.INDEXER_DEFAULT = config.to_int(indexer_default) @@ -4916,9 +5609,9 @@ class ConfigGeneral(Config): sickbeard.INDEXER_TIMEOUT = config.to_int(indexer_timeout) # Updates - config.change_VERSION_NOTIFY(config.checkbox_to_value(version_notify)) + config.schedule_version_notify(config.checkbox_to_value(version_notify)) sickbeard.AUTO_UPDATE = config.checkbox_to_value(auto_update) - config.change_UPDATE_FREQUENCY(update_frequency) + config.schedule_update(update_frequency) sickbeard.NOTIFY_ON_UPDATE = config.checkbox_to_value(notify_on_update) # Interface @@ -4967,13 +5660,13 @@ class ConfigGeneral(Config): sickbeard.USE_API = config.checkbox_to_value(use_api) sickbeard.API_KEY = api_key sickbeard.WEB_PORT = config.to_int(web_port) - # sickbeard.WEB_LOG is set in config.change_LOG_DIR() + # sickbeard.WEB_LOG is set in config.change_log_dir() sickbeard.ENABLE_HTTPS = config.checkbox_to_value(enable_https) - if not config.change_HTTPS_CERT(https_cert): + if not config.change_https_cert(https_cert): results += [ 'Unable to create directory ' + os.path.normpath(https_cert) + ', https cert directory not changed.'] - if not config.change_HTTPS_KEY(https_key): + if not config.change_https_key(https_key): results += [ 'Unable to create directory ' + os.path.normpath(https_key) + ', https key directory not changed.'] @@ -4991,7 +5684,7 @@ class ConfigGeneral(Config): sickbeard.PROXY_SETTING = proxy_setting sickbeard.PROXY_INDEXERS = config.checkbox_to_value(proxy_indexers) sickbeard.FILE_LOGGING_PRESET = file_logging_preset - # sickbeard.LOG_DIR is set in config.change_LOG_DIR() + # sickbeard.LOG_DIR is set in config.change_log_dir() logger.log_set_level() @@ -5066,16 +5759,16 @@ class ConfigSearch(Config): results = [] - if not config.change_NZB_DIR(nzb_dir): + if not config.change_nzb_dir(nzb_dir): results += ['Unable to create directory ' + os.path.normpath(nzb_dir) + ', dir not changed.'] - if not config.change_TORRENT_DIR(torrent_dir): + if not config.change_torrent_dir(torrent_dir): results += ['Unable to create directory ' + os.path.normpath(torrent_dir) + ', dir not changed.'] - config.change_RECENTSEARCH_FREQUENCY(recentsearch_frequency) + config.schedule_recentsearch(recentsearch_frequency) old_backlog_frequency = sickbeard.BACKLOG_FREQUENCY - config.change_BACKLOG_FREQUENCY(backlog_frequency) + config.schedule_backlog(backlog_frequency) sickbeard.search_backlog.BacklogSearcher.change_backlog_parts(old_backlog_frequency, sickbeard.BACKLOG_FREQUENCY) sickbeard.BACKLOG_DAYS = config.to_int(backlog_days, default=7) @@ -5094,7 +5787,7 @@ class ConfigSearch(Config): sickbeard.IGNORE_WORDS = ignore_words if ignore_words else '' sickbeard.REQUIRE_WORDS = require_words if require_words else '' - config.change_DOWNLOAD_PROPERS(config.checkbox_to_value(download_propers)) + config.schedule_download_propers(config.checkbox_to_value(download_propers)) sickbeard.PROPERS_WEBDL_ONEGRP = config.checkbox_to_value(propers_webdl_onegrp) sickbeard.SEARCH_UNAIRED = bool(config.checkbox_to_value(search_unaired)) @@ -5165,14 +5858,12 @@ class ConfigPostProcessing(Config): results = [] - if not config.change_TV_DOWNLOAD_DIR(tv_download_dir): + if not config.change_tv_download_dir(tv_download_dir): results += ['Unable to create directory ' + os.path.normpath(tv_download_dir) + ', dir not changed.'] new_val = config.checkbox_to_value(process_automatically) sickbeard.PROCESS_AUTOMATICALLY = new_val - sickbeard.autoPostProcesserScheduler.check_paused() - - config.change_AUTOPOSTPROCESSER_FREQUENCY(autopostprocesser_frequency) + config.schedule_autopostprocesser(autopostprocesser_frequency) if unpack: if self.isRarSupported() != 'not supported': @@ -5729,11 +6420,12 @@ class ConfigNotifications(Config): def save_notifications( self, - use_emby=None, emby_update_library=None, emby_host=None, emby_apikey=None, + use_emby=None, emby_update_library=None, emby_watched_interval=None, emby_host=None, emby_apikey=None, use_kodi=None, kodi_always_on=None, kodi_update_library=None, kodi_update_full=None, kodi_update_onlyfirst=None, kodi_host=None, kodi_username=None, kodi_password=None, kodi_notify_onsnatch=None, kodi_notify_ondownload=None, kodi_notify_onsubtitledownload=None, - use_plex=None, plex_update_library=None, plex_username=None, plex_password=None, plex_server_host=None, + use_plex=None, plex_update_library=None, plex_watched_interval=None, + plex_username=None, plex_password=None, plex_server_host=None, plex_notify_onsnatch=None, plex_notify_ondownload=None, plex_notify_onsubtitledownload=None, plex_host=None, # use_xbmc=None, xbmc_always_on=None, xbmc_notify_onsnatch=None, xbmc_notify_ondownload=None, # xbmc_notify_onsubtitledownload=None, xbmc_update_onlyfirst=None, @@ -5841,6 +6533,8 @@ class ConfigNotifications(Config): sickbeard.PLEX_USERNAME = plex_username if set('*') != set(plex_password): sickbeard.PLEX_PASSWORD = plex_password + config.schedule_emby_watched(emby_watched_interval) + config.schedule_plex_watched(plex_watched_interval) sickbeard.USE_GROWL = config.checkbox_to_value(use_growl) sickbeard.GROWL_NOTIFY_ONSNATCH = config.checkbox_to_value(growl_notify_onsnatch) @@ -6011,14 +6705,14 @@ class ConfigSubtitles(Config): t.submenu = self.ConfigMenu('Subtitle') return t.respond() - def saveSubtitles(self, use_subtitles=None, subtitles_plugins=None, subtitles_languages=None, subtitles_dir=None, + def saveSubtitles(self, use_subtitles=None, subtitles_languages=None, subtitles_dir=None, service_order=None, subtitles_history=None, subtitles_finder_frequency=None): results = [] if subtitles_finder_frequency == '' or subtitles_finder_frequency is None: subtitles_finder_frequency = 1 - config.change_USE_SUBTITLES(config.checkbox_to_value(use_subtitles)) + config.schedule_subtitles(config.checkbox_to_value(use_subtitles)) sickbeard.SUBTITLES_LANGUAGES = [lang.alpha2 for lang in subtitles.isValidLanguage( subtitles_languages.replace(' ', '').split(','))] if subtitles_languages != '' else '' sickbeard.SUBTITLES_DIR = subtitles_dir diff --git a/sickbeard/webserveInit.py b/sickbeard/webserveInit.py index 9613082e..348de4e8 100644 --- a/sickbeard/webserveInit.py +++ b/sickbeard/webserveInit.py @@ -93,6 +93,10 @@ class WebServer(threading.Thread): # javascript (r'%s/js/(.*)' % self.options['web_root'], webserve.BaseStaticFileHandler, {'path': os.path.join(self.options['data_root'], 'js')}), + + (r'%s/kodi/(.*)' % self.options['web_root'], webserve.RepoHandler, + {'path': os.path.join(sickbeard.CACHE_DIR, 'clients', 'kodi'), + 'default_filename': 'index.html'}), ]) # Main Handler