summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstuebinm2022-02-10 18:12:06 +0100
committerstuebinm2022-02-11 22:25:09 +0100
commita50ad3901377b30c5188ff3ebd519f8b0457c5eb (patch)
tree568c45f71cb047d5f50d82e3452998b9d2dd8dec
parent485af1d460be0979b7093da307f379ef088a98db (diff)
server: present lint results in pretty html
(this is mostly a rewrite / translation of the django templates built into rc3's hub)
-rw-r--r--package.yaml1
-rw-r--r--server/Orphans.hs160
-rw-r--r--server/Server.hs11
-rwxr-xr-xstatic/bootstrap.min.css7
-rw-r--r--static/d3-graphviz.js2198
-rw-r--r--static/d3-graphviz.js.map1
-rw-r--r--static/d3.js2
-rw-r--r--static/dot-wasm.js1
-rw-r--r--static/graphvizlib.wasmbin0 -> 926921 bytes
-rw-r--r--static/style.css24
-rw-r--r--walint.cabal1
11 files changed, 2359 insertions, 47 deletions
diff --git a/package.yaml b/package.yaml
index 6a3abc0..8da74b1 100644
--- a/package.yaml
+++ b/package.yaml
@@ -77,3 +77,4 @@ executables:
- tomland
- lucid
- servant-lucid
+ - dotgen
diff --git a/server/Orphans.hs b/server/Orphans.hs
index b46f728..c307520 100644
--- a/server/Orphans.hs
+++ b/server/Orphans.hs
@@ -1,57 +1,133 @@
-
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
+-- the ToHtml class also provides a method without escaping which we don't use,
+-- so it's safe to never define it
+{-# OPTIONS_GHC -Wno-missing-methods #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+
+-- | Module containing orphan instances of Lucid's ToHtml, used for rendering
+-- linter results as html
+module Orphans () where
+
+
+import CheckDir (DirResult (..), MissingAsset (MissingAsset),
+ MissingDep (..), maximumLintLevel)
+import CheckMap (MapResult (..))
+import Control.Monad (forM_, unless)
+import Data.Functor ((<&>))
+import Data.List (intersperse)
+import Data.List.Extra (escapeJSON)
+import qualified Data.Map as M
+import Data.Text (Text)
+import qualified Data.Text as T
+import Lucid (HtmlT, ToHtml)
+import Lucid.Base (ToHtml (toHtml))
+import Lucid.Html5 (class_, code_, div_, h2_, h3_, h4_, h5_, id_,
+ li_, p_, script_, span_, src_, ul_)
+import Text.Dot (showDot)
+import Types (Hint (Hint), Level (..))
-module Orphans where
-import Control.Monad (forM_, unless)
-import qualified Data.Map as M
-import Data.Text (Text)
-import Lucid (ToHtml)
-import Lucid.Base (ToHtml (toHtml))
-import Lucid.Html5
+badge :: Monad m => Level -> HtmlT m () -> HtmlT m ()
+badge level = span_ [class_ badgetype]
+ where badgetype = case level of
+ Info -> "badge badge-info"
+ Suggestion -> "badge badge-info"
+ Warning -> "badge badge-warning"
+ Forbidden -> "badge badge-danger"
+ Error -> "badge badge-danger"
+ Fatal -> "badge badge-danger"
-import CheckDir
-import CheckMap
-import Types
-import Util (prettyprint)
+-- | Lint Levels directly render into badges
+instance ToHtml Level where
+ toHtml level = badge level (toHtml $ show level)
+-- | Hints are just text with a level
instance ToHtml Hint where
- toHtml (Hint l m) = do
- span_ [class_ "level"] $ toHtml (show l)
- toHtml m
+ toHtml (Hint level msg) = do
+ toHtml level; " "; toHtml msg
+headerText :: Monad m => Level -> HtmlT m ()
+headerText = \case
+ Info -> "Couldn't find a thing to complain about. Congratulations!"
+ Suggestion -> "There's a couple smaller nitpicks; maybe take a look at those?"
+ Warning -> "The map is fine, but some things look like they might be mistakes; \
+ \perhaps you want to take a look at those?"
+ Forbidden -> "The map is fine in principle, but contains things that are not\
+ \allowed at this event"
+ Error -> "Your map currently contains errors and should probably be fixed"
+ Fatal -> "Something broke while linting; if you're not sure why or how to make \
+ \it work, feel free to tell an admin about it"
+
+
+-- | The fully monky
instance ToHtml DirResult where
toHtml res@DirResult { .. } = do
- h3_ $ toHtml (show $ maximumLintLevel res)
- unless (null dirresultMissingAssets && null dirresultDeps) $ do
- h2_ "Dependencies"
- ul_ $ do
- forM_ dirresultMissingAssets $ \(MissingAsset missing) -> do
- li_ $ toHtml (prettyprint missing)
- forM_ dirresultDeps $ \missing -> do
- li_ $ toHtml (prettyprint missing)
+
+ p_ $ do badge maxlevel "Linted:"; " "; headerText maxlevel
+
+ h2_ "Exits"
+ unless (null dirresultDeps) $ ul_ $
+ forM_ dirresultDeps $ \missing -> do
+ li_ $ do
+ -- TODO: the whole Maybe Bool thing is annoying; I think that was a
+ -- remnant of talking to python stuff and can probably be removed?
+ if depFatal missing == Just True
+ then do { toHtml Error; "Map " }
+ else do { toHtml Warning; "Entrypoint " }
+ code_ $ toHtml (entrypoint missing)
+ " does not exist"
+ unless (depFatal missing /= Just True) $ do
+ " (no layer with that name is a "; mono "startLayer"; ")"
+ ", but is used as "; mono "exitUrl"; " in "
+ placeList (neededBy missing); "."
+
+ -- the exit graph thing
+ script_ [ src_ "/dot-wasm.js" ] (""::Text)
+ script_ [ src_ "/d3.js" ] (""::Text)
+ script_ [ src_ "/d3-graphviz.js" ] (""::Text)
+ div_ [ id_ "exitGraph" ] ""
+ script_ $
+ "\
+ \d3.select(\"#exitGraph\")\n\
+ \ .graphviz()\n\
+ \ .dot(\"" <> T.pack (escapeJSON $ showDot dirresultGraph) <> "\")\n\
+ \ .render()\n\
+ \"
+
+ unless (null dirresultMissingAssets) $ do
+ h2_ [class_ "border-bottom"] "Assets"
+ ul_ $ forM_ dirresultMissingAssets $
+ \(MissingAsset MissingDep { .. }) -> li_ $ do
+ toHtml Error; "File "; mono $ toHtml entrypoint
+ " does not exist, but is referenced in "; placeList neededBy; ")"
+
unless (null dirresultMaps) $ do
- h2_ "Maps"
+ h3_ "Maps"
flip M.foldMapWithKey dirresultMaps $ \name MapResult { .. } -> do
- h3_ (toHtml name)
- ul_ $ do
- forM_ mapresultGeneral $ \lint ->
- li_ (toHtml lint)
- flip M.foldMapWithKey mapresultLayer $ \lint layers ->
- li_ $ do
- toHtml lint
- toHtml ("(in layer" :: Text)
- forM_ layers $ \layer ->
- span_ [class_ "layer"] (toHtml layer)
- toHtml (")" :: Text)
- flip M.foldMapWithKey mapresultTileset $ \lint tilesets ->
- li_ $ do
- toHtml lint
- toHtml ("( in layer" :: Text)
- forM_ tilesets $ \tileset ->
- span_ [class_ "tileset"] (toHtml tileset)
- toHtml (")" :: Text)
+ h4_ (toHtml name)
+ forM_ mapresultGeneral $ \lint ->
+ li_ (toHtml lint)
+ h5_ "Layers"
+ ul_ (listMapWithKey mapresultLayer)
+ h5_ "Tilesets"
+ ul_ (listMapWithKey mapresultTileset)
+
+ where
+ maxlevel = maximumLintLevel res
+
+ mono text = code_ [class_ "small text-muted"] text
+
+ placeList :: (Monad m, ToHtml a) => [a] -> HtmlT m ()
+ placeList occurances =
+ sequence_ . intersperse ", " $ occurances <&> \place ->
+ code_ [class_ "small text-muted"] (toHtml place)
+
+ listMapWithKey map =
+ flip M.foldMapWithKey map $ \lint places ->
+ li_ $ do toHtml lint; " (in "; placeList places; ")"
diff --git a/server/Server.hs b/server/Server.hs
index 536350f..ac79237 100644
--- a/server/Server.hs
+++ b/server/Server.hs
@@ -75,16 +75,17 @@ instance ToHtml JobStatus where
toHtml status = html_ $ do
head_ $ do
title_ "Job Status"
- link_ [rel_ "stylesheet", type_ "text/css", href_ "/styles.css"]
- body_ $ div_ [class_ "main-content"] $ case status of
+ link_ [rel_ "stylesheet", type_ "text/css", href_ "/bootstrap.min.css" ]
+ link_ [rel_ "stylesheet", type_ "text/css", href_ "/style.css" ]
+ body_ $ main_ [class_ "main-content"] $ case status of
Pending -> do
- h2_ "Pending …"
+ h1_ "Pending …"
p_ "(please note that this site won't auto-reload, you'll have to refresh it yourself)"
Linted res -> do
- p_ "Linted"
+ h1_ "Linter Result"
toHtml res
Failed err -> do
- h2_ "System Error"
+ h1_ "System Error"
p_ $ "error: " <> toHtml err
p_ "you should probably ping an admin about this or sth"
diff --git a/static/bootstrap.min.css b/static/bootstrap.min.css
new file mode 100755
index 0000000..6561b6f
--- /dev/null
+++ b/static/bootstrap.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v4.0.0 (https://getbootstrap.com)
+ * Copyright 2011-2018 The Bootstrap Authors
+ * Copyright 2011-2018 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-append>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label::before,.was-validated .custom-file-input:valid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label::before,.was-validated .custom-file-input:invalid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled).active,.btn:not(:disabled):not(.disabled):active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file:focus,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 5px rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width .6s ease}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-muted{color:#6c757d!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}
+/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file
diff --git a/static/d3-graphviz.js b/static/d3-graphviz.js
new file mode 100644
index 0000000..6f6082b
--- /dev/null
+++ b/static/d3-graphviz.js
@@ -0,0 +1,2198 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-selection'), require('d3-dispatch'), require('d3-transition'), require('d3-timer'), require('d3-interpolate'), require('d3-zoom'), require('@hpcc-js/wasm'), require('d3-format'), require('d3-path')) :
+ typeof define === 'function' && define.amd ? define(['exports', 'd3-selection', 'd3-dispatch', 'd3-transition', 'd3-timer', 'd3-interpolate', 'd3-zoom', '@hpcc-js/wasm', 'd3-format', 'd3-path'], factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['d3-graphviz'] = {}, global.d3, global.d3, global.d3, global.d3, global.d3, global.d3, global['@hpcc-js/wasm'], global.d3, global.d3));
+}(this, (function (exports, d3, d3Dispatch, d3Transition, d3Timer, d3Interpolate, d3Zoom, wasm, d3Format, d3Path) { 'use strict';
+
+ function _interopNamespace(e) {
+ if (e && e.__esModule) return e;
+ var n = Object.create(null);
+ if (e) {
+ Object.keys(e).forEach(function (k) {
+ if (k !== 'default') {
+ var d = Object.getOwnPropertyDescriptor(e, k);
+ Object.defineProperty(n, k, d.get ? d : {
+ enumerable: true,
+ get: function () {
+ return e[k];
+ }
+ });
+ }
+ });
+ }
+ n['default'] = e;
+ return Object.freeze(n);
+ }
+
+ var d3__namespace = /*#__PURE__*/_interopNamespace(d3);
+
+ function extractElementData(element) {
+
+ var datum = {};
+ var tag = element.node().nodeName;
+ datum.tag = tag;
+ if (tag == '#text') {
+ datum.text = element.text();
+ } else if (tag == '#comment') {
+ datum.comment = element.text();
+ }
+ datum.attributes = {};
+ var attributes = element.node().attributes;
+ if (attributes) {
+ for (var i = 0; i < attributes.length; i++) {
+ var attribute = attributes[i];
+ var name = attribute.name;
+ var value = attribute.value;
+ datum.attributes[name] = value;
+ }
+ }
+ var transform = element.node().transform;
+ if (transform && transform.baseVal.numberOfItems != 0) {
+ var matrix = transform.baseVal.consolidate().matrix;
+ datum.translation = {x: matrix.e, y: matrix.f};
+ datum.scale = matrix.a;
+ }
+ if (tag == 'ellipse') {
+ datum.center = {
+ x: datum.attributes.cx,
+ y: datum.attributes.cy,
+ };
+ }
+ if (tag == 'polygon') {
+ var points = element.attr('points').split(' ');
+ var x = points.map(function(p) {return p.split(',')[0]});
+ var y = points.map(function(p) {return p.split(',')[1]});
+ var xmin = Math.min.apply(null, x);
+ var xmax = Math.max.apply(null, x);
+ var ymin = Math.min.apply(null, y);
+ var ymax = Math.max.apply(null, y);
+ var bbox = {
+ x: xmin,
+ y: ymin,
+ width: xmax - xmin,
+ height: ymax - ymin,
+ };
+ datum.bbox = bbox;
+ datum.center = {
+ x: (xmin + xmax) / 2,
+ y: (ymin + ymax) / 2,
+ };
+ }
+ if (tag == 'path') {
+ var d = element.attr('d');
+ var points = d.split(/[A-Z ]/);
+ points.shift();
+ var x = points.map(function(p) {return +p.split(',')[0]});
+ var y = points.map(function(p) {return +p.split(',')[1]});
+ var xmin = Math.min.apply(null, x);
+ var xmax = Math.max.apply(null, x);
+ var ymin = Math.min.apply(null, y);
+ var ymax = Math.max.apply(null, y);
+ var bbox = {
+ x: xmin,
+ y: ymin,
+ width: xmax - xmin,
+ height: ymax - ymin,
+ };
+ datum.bbox = bbox;
+ datum.center = {
+ x: (xmin + xmax) / 2,
+ y: (ymin + ymax) / 2,
+ };
+ datum.totalLength = element.node().getTotalLength();
+ }
+ if (tag == 'text') {
+ datum.center = {
+ x: element.attr('x'),
+ y: element.attr('y'),
+ };
+ }
+ if (tag == '#text') {
+ datum.text = element.text();
+ } else if (tag == '#comment') {
+ datum.comment = element.text();
+ }
+ return datum
+ }
+
+ function extractAllElementsData(element) {
+
+ var datum = extractElementData(element);
+ datum.children = [];
+ var children = d3__namespace.selectAll(element.node().childNodes);
+ children.each(function () {
+ var childData = extractAllElementsData(d3__namespace.select(this));
+ childData.parent = datum;
+ datum.children.push(childData);
+ });
+ return datum;
+ }
+
+ function createElement(data) {
+
+ if (data.tag == '#text') {
+ return document.createTextNode("");
+ } else if (data.tag == '#comment') {
+ return document.createComment(data.comment);
+ } else {
+ return document.createElementNS('http://www.w3.org/2000/svg', data.tag);
+ }
+ }
+
+ function createElementWithAttributes(data) {
+
+ var elementNode = createElement(data);
+ var element = d3__namespace.select(elementNode);
+ var attributes = data.attributes;
+ for (var attributeName of Object.keys(attributes)) {
+ var attributeValue = attributes[attributeName];
+ element.attr(attributeName, attributeValue);
+ }
+ return elementNode;
+ }
+
+ function replaceElement(element, data) {
+ var parent = d3__namespace.select(element.node().parentNode);
+ var newElementNode = createElementWithAttributes(data);
+ var newElement = parent.insert(function () {
+ return newElementNode;
+ }, function () {
+ return element.node();
+ });
+ element.remove();
+ return newElement;
+ }
+
+ function insertElementData(element, datum) {
+ element.datum(datum);
+ element.data([datum], function (d) {
+ return d.key;
+ });
+ }
+
+ function insertAllElementsData(element, datum) {
+ insertElementData(element, datum);
+ var children = d3__namespace.selectAll(element.node().childNodes);
+ children.each(function (d, i) {
+ insertAllElementsData(d3__namespace.select(this), datum.children[i]);
+ });
+ }
+
+ function insertChildren(element, index) {
+ var children = element.selectAll(function () {
+ return element.node().childNodes;
+ });
+
+ children = children
+ .data(function (d) {
+ return d.children;
+ }, function (d) {
+ return d.tag + '-' + index;
+ });
+ var childrenEnter = children
+ .enter()
+ .append(function(d) {
+ return createElement(d);
+ });
+
+ var childrenExit = children
+ .exit();
+ childrenExit = childrenExit
+ .remove();
+ children = childrenEnter
+ .merge(children);
+ var childTagIndexes = {};
+ children.each(function(childData) {
+ var childTag = childData.tag;
+ if (childTagIndexes[childTag] == null) {
+ childTagIndexes[childTag] = 0;
+ }
+ var childIndex = childTagIndexes[childTag]++;
+ attributeElement.call(this, childData, childIndex);
+ });
+ }
+
+ function attributeElement(data, index=0) {
+ var element = d3__namespace.select(this);
+ data.tag;
+ var attributes = data.attributes;
+ var currentAttributes = element.node().attributes;
+ if (currentAttributes) {
+ for (var i = 0; i < currentAttributes.length; i++) {
+ var currentAttribute = currentAttributes[i];
+ var name = currentAttribute.name;
+ if (name.split(':')[0] != 'xmlns' && currentAttribute.namespaceURI) {
+ var namespaceURIParts = currentAttribute.namespaceURI.split('/');
+ var namespace = namespaceURIParts[namespaceURIParts.length - 1];
+ name = namespace + ':' + name;
+ }
+ if (!(name in attributes)) {
+ attributes[name] = null;
+ }
+ }
+ }
+ for (var attributeName of Object.keys(attributes)) {
+ element
+ .attr(attributeName, attributes[attributeName]);
+ }
+ if (data.text) {
+ element
+ .text(data.text);
+ }
+ insertChildren(element, index);
+ }
+
+ function shallowCopyObject(obj) {
+ return Object.assign({}, obj);
+ }
+
+ function roundTo2Decimals(x) {
+ return Math.round(x * 100.0) / 100.0
+ }
+
+ function zoom(enable) {
+
+ this._options.zoom = enable;
+
+ if (this._options.zoom && !this._zoomBehavior) {
+ createZoomBehavior.call(this);
+ } else if (!this._options.zoom && this._zoomBehavior) {
+ this._zoomSelection.on(".zoom", null);
+ this._zoomBehavior = null;
+ }
+
+ return this;
+ }
+
+ function createZoomBehavior() {
+
+ function zoomed(event) {
+ var g = d3__namespace.select(svg.node().querySelector("g"));
+ g.attr('transform', event.transform);
+ }
+
+ var root = this._selection;
+ var svg = d3__namespace.select(root.node().querySelector("svg"));
+ if (svg.size() == 0) {
+ return this;
+ }
+ this._zoomSelection = svg;
+ var zoomBehavior = d3Zoom.zoom()
+ .scaleExtent(this._options.zoomScaleExtent)
+ .translateExtent(this._options.zoomTranslateExtent)
+ .interpolate(d3Interpolate.interpolate)
+ .on("zoom", zoomed);
+ this._zoomBehavior = zoomBehavior;
+ var g = d3__namespace.select(svg.node().querySelector("g"));
+ svg.call(zoomBehavior);
+ if (!this._active) {
+ translateZoomBehaviorTransform.call(this, g);
+ }
+ this._originalTransform = d3Zoom.zoomTransform(svg.node());
+
+ return this;
+ }
+ function getTranslatedZoomTransform(selection) {
+
+ // Get the current zoom transform for the top level svg and
+ // translate it uniformly with the given selection, using the
+ // difference between the translation specified in the selection's
+ // data and it's saved previous translation. The selection is
+ // normally the top level g element of the graph.
+ var oldTranslation = this._translation;
+ var oldScale = this._scale;
+ var newTranslation = selection.datum().translation;
+ var newScale = selection.datum().scale;
+ var t = d3Zoom.zoomTransform(this._zoomSelection.node());
+ if (oldTranslation) {
+ t = t.scale(1 / oldScale);
+ t = t.translate(-oldTranslation.x, -oldTranslation.y);
+ }
+ t = t.translate(newTranslation.x, newTranslation.y);
+ t = t.scale(newScale);
+ return t;
+ }
+
+ function translateZoomBehaviorTransform(selection) {
+
+ // Translate the current zoom transform for the top level svg
+ // uniformly with the given selection, using the difference
+ // between the translation specified in the selection's data and
+ // it's saved previous translation. The selection is normally the
+ // top level g element of the graph.
+ this._zoomBehavior.transform(this._zoomSelection, getTranslatedZoomTransform.call(this, selection));
+
+ // Save the selections's new translation and scale.
+ this._translation = selection.datum().translation;
+ this._scale = selection.datum().scale;
+
+ // Set the original zoom transform to the translation and scale specified in
+ // the selection's data.
+ this._originalTransform = d3Zoom.zoomIdentity.translate(selection.datum().translation.x, selection.datum().translation.y).scale(selection.datum().scale);
+ }
+
+ function resetZoom(transition) {
+
+ // Reset the zoom transform to the original zoom transform.
+ var selection = this._zoomSelection;
+ if (transition) {
+ selection = selection
+ .transition(transition);
+ }
+ selection
+ .call(this._zoomBehavior.transform, this._originalTransform);
+
+ return this;
+ }
+
+ function zoomScaleExtent(extent) {
+
+ this._options.zoomScaleExtent = extent;
+
+ return this;
+ }
+
+ function zoomTranslateExtent(extent) {
+
+ this._options.zoomTranslateExtent = extent;
+
+ return this;
+ }
+
+ function zoomBehavior() {
+ return this._zoomBehavior || null;
+ }
+
+ function zoomSelection() {
+ return this._zoomSelection || null;
+ }
+
+ function pathTween(points, d1) {
+ return function() {
+ const pointInterpolators = points.map(function(p) {
+ return d3Interpolate.interpolate([p[0][0], p[0][1]], [p[1][0], p[1][1]]);
+ });
+ return function(t) {
+ return t < 1 ? "M" + pointInterpolators.map(function(p) { return p(t); }).join("L") : d1;
+ };
+ };
+ }
+
+ function pathTweenPoints(node, d1, precision, precisionIsRelative) {
+ const path0 = node;
+ const path1 = path0.cloneNode();
+ const n0 = path0.getTotalLength();
+ const n1 = (path1.setAttribute("d", d1), path1).getTotalLength();
+
+ // Uniform sampling of distance based on specified precision.
+ const distances = [0];
+ let i = 0;
+ const dt = precisionIsRelative ? precision : precision / Math.max(n0, n1);
+ while ((i += dt) < 1) {
+ distances.push(i);
+ }
+ distances.push(1);
+
+ // Compute point-interpolators at each distance.
+ const points = distances.map(function(t) {
+ const p0 = path0.getPointAtLength(t * n0);
+ const p1 = path1.getPointAtLength(t * n1);
+ return ([[p0.x, p0.y], [p1.x, p1.y]]);
+ });
+ return points;
+ }
+
+ function data() {
+ return this._data || null;
+ }
+
+ function isEdgeElementParent(datum) {
+ return (datum.attributes.class == 'edge' || (
+ datum.tag == 'a' &&
+ datum.parent.tag == 'g' &&
+ datum.parent.parent.attributes.class == 'edge'
+ ));
+ }
+
+ function isEdgeElement(datum) {
+ return datum.parent && isEdgeElementParent(datum.parent);
+ }
+
+ function getEdgeGroup(datum) {
+ if (datum.parent.attributes.class == 'edge') {
+ return datum.parent;
+ } else { // datum.parent.tag == 'g' && datum.parent.parent.tag == 'g' && datum.parent.parent.parent.attributes.class == 'edge'
+ return datum.parent.parent.parent;
+ }
+ }
+
+ function getEdgeTitle(datum) {
+ return getEdgeGroup(datum).children.find(function (e) {
+ return e.tag == 'title';
+ });
+ }
+
+ function render(callback) {
+
+ if (this._busy) {
+ this._queue.push(this.render.bind(this, callback));
+ return this;
+ }
+ this._dispatch.call('renderStart', this);
+
+ if (this._transitionFactory) {
+ d3Timer.timeout(function () { // Decouple from time spent. See https://github.com/d3/d3-timer/issues/27
+ this._transition = d3Transition.transition(this._transitionFactory());
+ _render.call(this, callback);
+ }.bind(this), 0);
+ } else {
+ _render.call(this, callback);
+ }
+ return this;
+ }
+
+ function _render(callback) {
+
+ var transitionInstance = this._transition;
+ var fade = this._options.fade && transitionInstance != null;
+ var tweenPaths = this._options.tweenPaths;
+ var tweenShapes = this._options.tweenShapes;
+ var convertEqualSidedPolygons = this._options.convertEqualSidedPolygons;
+ var growEnteringEdges = this._options.growEnteringEdges && transitionInstance != null;
+ var attributer = this._attributer;
+ var graphvizInstance = this;
+
+ function insertChildren(element) {
+ var children = element.selectAll(function () {
+ return element.node().childNodes;
+ });
+
+ children = children
+ .data(function (d) {
+ return d.children;
+ }, function (d) {
+ return d.key;
+ });
+ var childrenEnter = children
+ .enter()
+ .append(function(d) {
+ var element = createElement(d);
+ if (d.tag == '#text' && fade) {
+ element.nodeValue = d.text;
+ }
+ return element;
+ });
+
+ if (fade || (growEnteringEdges && isEdgeElementParent(element.datum()))) {
+ var childElementsEnter = childrenEnter
+ .filter(function(d) {
+ return d.tag[0] == '#' ? null : this;
+ })
+ .each(function (d) {
+ var childEnter = d3__namespace.select(this);
+ for (var attributeName of Object.keys(d.attributes)) {
+ var attributeValue = d.attributes[attributeName];
+ childEnter
+ .attr(attributeName, attributeValue);
+ }
+ });
+ childElementsEnter
+ .filter(function(d) {
+ return d.tag == 'svg' || d.tag == 'g' ? null : this;
+ })
+ .style("opacity", 0.0);
+ }
+ var childrenExit = children
+ .exit();
+ if (attributer) {
+ childrenExit.each(attributer);
+ }
+ if (transitionInstance) {
+ childrenExit = childrenExit
+ .transition(transitionInstance);
+ if (fade) {
+ childrenExit
+ .filter(function(d) {
+ return d.tag[0] == '#' ? null : this;
+ })
+ .style("opacity", 0.0);
+ }
+ }
+ childrenExit = childrenExit
+ .remove();
+ children = childrenEnter
+ .merge(children);
+ children.each(attributeElement);
+ }
+
+ function attributeElement(data) {
+ var element = d3__namespace.select(this);
+ if (data.tag == "svg") {
+ var options = graphvizInstance._options;
+ if (options.width != null || options.height != null) {
+ var width = options.width;
+ var height = options.height;
+ if (width == null) {
+ width = data.attributes.width.replace('pt', '') * 4 / 3;
+ } else {
+ element
+ .attr("width", width);
+ data.attributes.width = width;
+ }
+ if (height == null) {
+ height = data.attributes.height.replace('pt', '') * 4 / 3;
+ } else {
+ element
+ .attr("height", height);
+ data.attributes.height = height;
+ }
+ if (!options.fit) {
+ element
+ .attr("viewBox", `0 0 ${width * 3 / 4 / options.scale} ${height * 3 / 4 / options.scale}`);
+ data.attributes.viewBox = `0 0 ${width * 3 / 4 / options.scale} ${height * 3 / 4 / options.scale}`;
+ }
+ }
+ if (options.scale != 1 && (options.fit || (options.width == null && options.height == null))) {
+ width = data.attributes.viewBox.split(' ')[2];
+ height = data.attributes.viewBox.split(' ')[3];
+ element
+ .attr("viewBox", `0 0 ${width / options.scale} ${height / options.scale}`);
+ data.attributes.viewBox = `0 0 ${width / options.scale} ${height / options.scale}`;
+ }
+ }
+ if (attributer) {
+ element.each(attributer);
+ }
+ var tag = data.tag;
+ var attributes = data.attributes;
+ var currentAttributes = element.node().attributes;
+ if (currentAttributes) {
+ for (var i = 0; i < currentAttributes.length; i++) {
+ var currentAttribute = currentAttributes[i];
+ var name = currentAttribute.name;
+ if (name.split(':')[0] != 'xmlns' && currentAttribute.namespaceURI) {
+ var namespaceURIParts = currentAttribute.namespaceURI.split('/');
+ var namespace = namespaceURIParts[namespaceURIParts.length - 1];
+ name = namespace + ':' + name;
+ }
+ if (!(name in attributes)) {
+ attributes[name] = null;
+ }
+ }
+ }
+ var convertShape = false;
+ var convertPrevShape = false;
+ if (tweenShapes && transitionInstance) {
+ if ((this.nodeName == 'polygon' || this.nodeName == 'ellipse') && data.alternativeOld) {
+ convertPrevShape = true;
+ }
+ if ((tag == 'polygon' || tag == 'ellipse') && data.alternativeNew) {
+ convertShape = true;
+ }
+ if (this.nodeName == 'polygon' && tag == 'polygon' && data.alternativeOld) {
+ var prevData = extractElementData(element);
+ var prevPoints = prevData.attributes.points;
+ if (!convertEqualSidedPolygons) {
+ var nPrevPoints = prevPoints.split(' ').length;
+ var points = data.attributes.points;
+ var nPoints = points.split(' ').length;
+ if (nPoints == nPrevPoints) {
+ convertShape = false;
+ convertPrevShape = false;
+ }
+ }
+ }
+ if (convertPrevShape) {
+ var prevPathData = data.alternativeOld;
+ var pathElement = replaceElement(element, prevPathData);
+ pathElement.data([data], function () {
+ return data.key;
+ });
+ element = pathElement;
+ }
+ if (convertShape) {
+ var newPathData = data.alternativeNew;
+ tag = 'path';
+ attributes = newPathData.attributes;
+ }
+ }
+ var elementTransition = element;
+ if (transitionInstance) {
+ elementTransition = elementTransition
+ .transition(transitionInstance);
+ if (fade) {
+ elementTransition
+ .filter(function(d) {
+ return d.tag[0] == '#' ? null : this;
+ })
+ .style("opacity", 1.0);
+ }
+ elementTransition
+ .filter(function(d) {
+ return d.tag[0] == '#' ? null : this;
+ })
+ .on("end", function(d) {
+ d3__namespace.select(this)
+ .attr('style', (d && d.attributes && d.attributes.style) || null);
+ });
+ }
+ var growThisPath = growEnteringEdges && tag == 'path' && data.offset;
+ if (growThisPath) {
+ var totalLength = data.totalLength;
+ element
+ .attr("stroke-dasharray", totalLength + " " + totalLength)
+ .attr("stroke-dashoffset", totalLength)
+ .attr('transform', 'translate(' + data.offset.x + ',' + data.offset.y + ')');
+ attributes["stroke-dashoffset"] = 0;
+ attributes['transform'] = 'translate(0,0)';
+ elementTransition
+ .attr("stroke-dashoffset", attributes["stroke-dashoffset"])
+ .attr('transform', attributes['transform'])
+ .on("start", function() {
+ d3__namespace.select(this)
+ .style('opacity', null);
+ })
+ .on("end", function() {
+ d3__namespace.select(this)
+ .attr('stroke-dashoffset', null)
+ .attr('stroke-dasharray', null)
+ .attr('transform', null);
+ });
+ }
+ var moveThisPolygon = growEnteringEdges && tag == 'polygon' && isEdgeElement(data) && data.offset && data.parent.children[3].tag == 'path';
+ if (moveThisPolygon) {
+ var edgePath = d3__namespace.select(element.node().parentNode.querySelector("path"));
+ var p0 = edgePath.node().getPointAtLength(0);
+ var p1 = edgePath.node().getPointAtLength(data.totalLength);
+ var p2 = edgePath.node().getPointAtLength(data.totalLength - 1);
+ var angle1 = Math.atan2(p1.y - p2.y, p1.x - p2.x) * 180 / Math.PI;
+ var x = p0.x - p1.x + data.offset.x;
+ var y = p0.y - p1.y + data.offset.y;
+ element
+ .attr('transform', 'translate(' + x + ',' + y + ')');
+ elementTransition
+ .attrTween("transform", function () {
+ return function (t) {
+ var p = edgePath.node().getPointAtLength(data.totalLength * t);
+ var p2 = edgePath.node().getPointAtLength(data.totalLength * t + 1);
+ var angle = Math.atan2(p2.y - p.y, p2.x - p.x) * 180 / Math.PI - angle1;
+ x = p.x - p1.x + data.offset.x * (1 - t);
+ y = p.y - p1.y + data.offset.y * (1 - t);
+ return 'translate(' + x + ',' + y + ') rotate(' + angle + ' ' + p1.x + ' ' + p1.y + ')';
+ }
+ })
+ .on("start", function() {
+ d3__namespace.select(this)
+ .style('opacity', null);
+ })
+ .on("end", function() {
+ d3__namespace.select(this).attr('transform', null);
+ });
+ }
+ var tweenThisPath = tweenPaths && transitionInstance && tag == 'path' && element.attr('d') != null;
+ for (var attributeName of Object.keys(attributes)) {
+ var attributeValue = attributes[attributeName];
+ if (tweenThisPath && attributeName == 'd') {
+ var points = (data.alternativeOld || data).points;
+ if (points) {
+ elementTransition
+ .attrTween("d", pathTween(points, attributeValue));
+ }
+ } else {
+ if (attributeName == 'transform' && data.translation) {
+ if (transitionInstance) {
+ var onEnd = elementTransition.on("end");
+ elementTransition
+ .on("start", function () {
+ if (graphvizInstance._zoomBehavior) {
+ // Update the transform to transition to, just before the transition starts
+ // in order to catch changes between the transition scheduling to its start.
+ elementTransition
+ .tween("attr.transform", function() {
+ var node = this;
+ return function(t) {
+ node.setAttribute("transform", d3Interpolate.interpolateTransformSvg(d3Zoom.zoomTransform(graphvizInstance._zoomSelection.node()).toString(), getTranslatedZoomTransform.call(graphvizInstance, element).toString())(t));
+ };
+ });
+ }
+ })
+ .on("end", function () {
+ onEnd.call(this);
+ // Update the zoom transform to the new translated transform
+ if (graphvizInstance._zoomBehavior) {
+ translateZoomBehaviorTransform.call(graphvizInstance, element);
+ }
+ });
+ } else {
+ if (graphvizInstance._zoomBehavior) {
+ // Update the transform attribute to set with the current pan translation
+ translateZoomBehaviorTransform.call(graphvizInstance, element);
+ attributeValue = getTranslatedZoomTransform.call(graphvizInstance, element).toString();
+ }
+ }
+ }
+ elementTransition
+ .attr(attributeName, attributeValue);
+ }
+ }
+ if (convertShape) {
+ elementTransition
+ .on("end", function (d, i, nodes) {
+ pathElement = d3__namespace.select(this);
+ var newElement = replaceElement(pathElement, d);
+ newElement.data([d], function () {
+ return d.key;
+ });
+ });
+ }
+ if (data.text) {
+ elementTransition
+ .text(data.text);
+ }
+ insertChildren(element);
+ }
+
+ var root = this._selection;
+
+ if (transitionInstance != null) {
+ // Ensure original SVG shape elements are restored after transition before rendering new graph
+ var jobs = this._jobs;
+ if (graphvizInstance._active) {
+ jobs.push(null);
+ return this;
+ } else {
+ root
+ .transition(transitionInstance)
+ .transition()
+ .duration(0)
+ .on("end" , function () {
+ graphvizInstance._active = false;
+ if (jobs.length != 0) {
+ jobs.shift();
+ graphvizInstance.render();
+ }
+ });
+ this._active = true;
+ }
+ }
+
+ if (transitionInstance != null) {
+ root
+ .transition(transitionInstance)
+ .on("start" , function () {
+ graphvizInstance._dispatch.call('transitionStart', graphvizInstance);
+ })
+ .on("end" , function () {
+ graphvizInstance._dispatch.call('transitionEnd', graphvizInstance);
+ })
+ .transition()
+ .duration(0)
+ .on("start" , function () {
+ graphvizInstance._dispatch.call('restoreEnd', graphvizInstance);
+ graphvizInstance._dispatch.call('end', graphvizInstance);
+ if (callback) {
+ callback.call(graphvizInstance);
+ }
+ });
+ }
+
+ var data = this._data;
+
+ var svg = root
+ .selectAll("svg")
+ .data([data], function (d) {return d.key});
+ svg = svg
+ .enter()
+ .append("svg")
+ .merge(svg);
+
+ attributeElement.call(svg.node(), data);
+
+
+ if (this._options.zoom && !this._zoomBehavior) {
+ createZoomBehavior.call(this);
+ }
+
+ graphvizInstance._dispatch.call('renderEnd', graphvizInstance);
+
+ if (transitionInstance == null) {
+ this._dispatch.call('end', this);
+ if (callback) {
+ callback.call(this);
+ }
+ }
+
+ return this;
+ }
+
+ function convertToPathData(originalData, guideData) {
+ if (originalData.tag == 'polygon') {
+ var newData = shallowCopyObject(originalData);
+ newData.tag = 'path';
+ var originalAttributes = originalData.attributes;
+ var newAttributes = shallowCopyObject(originalAttributes);
+ var newPointsString = originalAttributes.points;
+ if (guideData.tag == 'polygon') {
+ var bbox = originalData.bbox;
+ bbox.cx = bbox.x + bbox.width / 2;
+ bbox.cy = bbox.y + bbox.height / 2;
+ var pointsString = originalAttributes.points;
+ var pointStrings = pointsString.split(' ');
+ var normPoints = pointStrings.map(function(p) {var xy = p.split(','); return [xy[0] - bbox.cx, xy[1] - bbox.cy]});
+ var x0 = normPoints[normPoints.length - 1][0];
+ var y0 = normPoints[normPoints.length - 1][1];
+ for (var i = 0; i < normPoints.length; i++, x0 = x1, y0 = y1) {
+ var x1 = normPoints[i][0];
+ var y1 = normPoints[i][1];
+ var dx = x1 - x0;
+ var dy = y1 - y0;
+ if (dy == 0) {
+ continue;
+ } else {
+ var x2 = x0 - y0 * dx / dy;
+ }
+ if (0 <= x2 && x2 < Infinity && ((x0 <= x2 && x2 <= x1) || (x1 <= x2 && x2 <= x0))) {
+ break;
+ }
+ }
+ var newPointStrings = [[bbox.cx + x2, bbox.cy + 0].join(',')];
+ newPointStrings = newPointStrings.concat(pointStrings.slice(i));
+ newPointStrings = newPointStrings.concat(pointStrings.slice(0, i));
+ newPointsString = newPointStrings.join(' ');
+ }
+ newAttributes['d'] = 'M' + newPointsString + 'z';
+ delete newAttributes.points;
+ newData.attributes = newAttributes;
+ } else /* if (originalData.tag == 'ellipse') */ {
+ var newData = shallowCopyObject(originalData);
+ newData.tag = 'path';
+ var originalAttributes = originalData.attributes;
+ var newAttributes = shallowCopyObject(originalAttributes);
+ var cx = originalAttributes.cx;
+ var cy = originalAttributes.cy;
+ var rx = originalAttributes.rx;
+ var ry = originalAttributes.ry;
+ if (guideData.tag == 'polygon') {
+ var bbox = guideData.bbox;
+ bbox.cx = bbox.x + bbox.width / 2;
+ bbox.cy = bbox.y + bbox.height / 2;
+ var p = guideData.attributes.points.split(' ')[0].split(',');
+ var sx = p[0];
+ var sy = p[1];
+ var dx = sx - bbox.cx;
+ var dy = sy - bbox.cy;
+ var l = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));
+ var cosA = dx / l;
+ var sinA = -dy / l;
+ } else { // if (guideData.tag == 'path') {
+ // FIXME: add support for getting start position from path
+ var cosA = 1;
+ var sinA = 0;
+ }
+ var x1 = rx * cosA;
+ var y1 = -ry * sinA;
+ var x2 = rx * (-cosA);
+ var y2 = -ry * (-sinA);
+ var dx = x2 - x1;
+ var dy = y2 - y1;
+ newAttributes['d'] = 'M ' + cx + ' ' + cy + ' m ' + x1 + ',' + y1 + ' a ' + rx + ',' + ry + ' 0 1,0 ' + dx + ',' + dy + ' a ' + rx + ',' + ry + ' 0 1,0 ' + -dx + ',' + -dy + 'z';
+ delete newAttributes.cx;
+ delete newAttributes.cy;
+ delete newAttributes.rx;
+ delete newAttributes.ry;
+ newData.attributes = newAttributes;
+ }
+ return newData;
+ }
+
+ function translatePointsAttribute(pointsString, x, y) {
+ var pointStrings = pointsString.split(' ');
+ var points = pointStrings.map(function(p) {return p.split(',')});
+ var points = pointStrings.map(function(p) {return [roundTo2Decimals(+x + +p.split(',')[0]), roundTo2Decimals(+y + +p.split(',')[1])]});
+ var pointStrings = points.map(function(p) {return p.join(',')});
+ var pointsString = pointStrings.join(' ');
+ return pointsString;
+ }
+
+ function translateDAttribute(d, x, y) {
+ var pointStrings = d.split(/[A-Z ]/);
+ pointStrings.shift();
+ var commands = d.split(/[^[A-Z ]+/);
+ var points = pointStrings.map(function(p) {return p.split(',')});
+ var points = pointStrings.map(function(p) {return [roundTo2Decimals(+x + +p.split(',')[0]), roundTo2Decimals(+y + +p.split(',')[1])]});
+ var pointStrings = points.map(function(p) {return p.join(',')});
+ d = commands.reduce(function(arr, v, i) {
+ return arr.concat(v, pointStrings[i]);
+ }, []).join('');
+ return d;
+ }
+
+ function initViz() {
+
+ // force JIT compilation of Viz.js
+ try {
+ wasm.graphviz.layout("", "svg", "dot").then(() => {
+ wasm.graphvizSync().then((graphviz1) => {
+ this.layoutSync = graphviz1.layout.bind(graphviz1);
+ if (this._worker == null) {
+ this._dispatch.call("initEnd", this);
+ }
+ if (this._afterInit) {
+ this._afterInit();
+ }
+ });
+ });
+ } catch(error) {
+ }
+ if (this._worker != null) {
+ var vizURL = this._vizURL;
+ var graphvizInstance = this;
+ this._workerPort.onmessage = function(event) {
+ var callback = graphvizInstance._workerCallbacks.shift();
+ callback.call(graphvizInstance, event);
+ };
+ if (!vizURL.match(/^https?:\/\/|^\/\//i)) {
+ // Local URL. Prepend with local domain to be usable in web worker
+ vizURL = (new window.URL(vizURL, document.location.href)).href;
+ }
+ postMessage.call(this, {dot: "", engine: 'dot', vizURL: vizURL}, function(event) {
+ switch (event.data.type) {
+ case "init":
+ graphvizInstance._dispatch.call("initEnd", this);
+ break;
+ }
+ });
+ }
+ }
+
+ function postMessage(message, callback) {
+ this._workerCallbacks.push(callback);
+ this._workerPort.postMessage(message);
+ }
+
+ function layout(src, engine, vizOptions, callback) {
+ this._worker;
+ if (this._worker) {
+ postMessage.call(this, {
+ dot: src,
+ engine: engine,
+ options: vizOptions,
+ }, function (event) {
+ callback.call(this, event.data);
+ });
+ } else {
+ try {
+ var svgDoc = this.layoutSync(src, "svg", engine, vizOptions);
+ callback.call(this, {type: 'done', svg: svgDoc});
+ }
+ catch(error) {
+ callback.call(this, {type: 'error', error: error.message});
+ }
+ }
+ }
+
+ function dot(src, callback) {
+
+ var graphvizInstance = this;
+ this._worker;
+ var engine = this._options.engine;
+ var images = this._images;
+
+ this._dispatch.call("start", this);
+ this._busy = true;
+ this._dispatch.call("layoutStart", this);
+ var vizOptions = {
+ images: images,
+ };
+ if (!this._worker && this.layoutSync == null) {
+ this._afterInit = this.dot.bind(this, src, callback);
+ return this;
+ }
+ this.layout(src, engine, vizOptions, function (data) {
+ switch (data.type) {
+ case "error":
+ if (graphvizInstance._onerror) {
+ graphvizInstance._onerror(data.error);
+ } else {
+ throw data.error.message
+ }
+ break;
+ case "done":
+ var svgDoc = data.svg;
+ layoutDone.call(this, svgDoc, callback);
+ break;
+ }
+ });
+
+ return this;
+ }
+ function layoutDone(svgDoc, callback) {
+ var keyMode = this._options.keyMode;
+ var tweenPaths = this._options.tweenPaths;
+ var tweenShapes = this._options.tweenShapes;
+ if (typeof this._options.tweenPrecision == 'string' && this._options.tweenPrecision.includes('%')) {
+ var tweenPrecision = +this._options.tweenPrecision.split('%')[0] / 100;
+ var tweenPrecisionIsRelative = this._options.tweenPrecision.includes('%');
+ } else {
+ var tweenPrecision = this._options.tweenPrecision;
+ var tweenPrecisionIsRelative = false;
+ }
+ var growEnteringEdges = this._options.growEnteringEdges;
+ var dictionary = {};
+ var prevDictionary = this._dictionary || {};
+ var nodeDictionary = {};
+ var prevNodeDictionary = this._nodeDictionary || {};
+
+ function setKey(datum, index) {
+ var tag = datum.tag;
+ if (keyMode == 'index') {
+ datum.key = index;
+ } else if (tag[0] != '#') {
+ if (keyMode == 'id') {
+ datum.key = datum.attributes.id;
+ } else if (keyMode == 'title') {
+ var title = datum.children.find(function (childData) {
+ return childData.tag == 'title';
+ });
+ if (title) {
+ if (title.children.length > 0) {
+ datum.key = title.children[0].text;
+ } else {
+ datum.key = '';
+ }
+ }
+ }
+ }
+ if (datum.key == null) {
+ if (tweenShapes) {
+ if (tag == 'ellipse' || tag == 'polygon') {
+ tag = 'path';
+ }
+ }
+ datum.key = tag + '-' + index;
+ }
+ }
+
+ function setId(datum, parentData) {
+ var id = (parentData ? parentData.id + '.' : '') + datum.key;
+ datum.id = id;
+ }
+
+ function addToDictionary(datum) {
+ dictionary[datum.id] = datum;
+ }
+
+ function calculateAlternativeShapeData(datum, prevDatum) {
+ if (tweenShapes && datum.id in prevDictionary) {
+ if ((prevDatum.tag == 'polygon' || prevDatum.tag == 'ellipse' || prevDatum.tag == 'path') && (prevDatum.tag != datum.tag || datum.tag == 'polygon')) {
+ if (prevDatum.tag != 'path') {
+ datum.alternativeOld = convertToPathData(prevDatum, datum);
+ }
+ if (datum.tag != 'path') {
+ datum.alternativeNew = convertToPathData(datum, prevDatum);
+ }
+ }
+ }
+ }
+
+ function calculatePathTweenPoints(datum, prevDatum) {
+ if (tweenPaths && prevDatum && (prevDatum.tag == 'path' || (datum.alternativeOld && datum.alternativeOld.tag == 'path'))) {
+ var attribute_d = (datum.alternativeNew || datum).attributes.d;
+ if (datum.alternativeOld) {
+ var oldNode = createElementWithAttributes(datum.alternativeOld);
+ } else {
+ var oldNode = createElementWithAttributes(prevDatum);
+ }
+ (datum.alternativeOld || (datum.alternativeOld = {})).points = pathTweenPoints(oldNode, attribute_d, tweenPrecision, tweenPrecisionIsRelative);
+ }
+ }
+
+ function postProcessDataPass1Local(datum, index=0, parentData) {
+ setKey(datum, index);
+ setId(datum, parentData);
+ var id = datum.id;
+ var prevDatum = prevDictionary[id];
+ addToDictionary(datum);
+ calculateAlternativeShapeData(datum, prevDatum);
+ calculatePathTweenPoints(datum, prevDatum);
+ var childTagIndexes = {};
+ datum.children.forEach(function (childData) {
+ var childTag = childData.tag;
+ if (childTag == 'ellipse' || childTag == 'polygon') {
+ childTag = 'path';
+ }
+ if (childTagIndexes[childTag] == null) {
+ childTagIndexes[childTag] = 0;
+ }
+ var childIndex = childTagIndexes[childTag]++;
+ postProcessDataPass1Local(childData, childIndex, datum);
+ });
+ }
+
+ function addToNodeDictionary(datum) {
+ var tag = datum.tag;
+ if (growEnteringEdges && datum.parent) {
+ if (datum.parent.attributes.class == 'node') {
+ if (tag == 'title') {
+ if (datum.children.length > 0) {
+ var child = datum.children[0];
+ var nodeId = child.text;
+ } else {
+ var nodeId = '';
+ }
+ nodeDictionary[nodeId] = datum.parent;
+ }
+ }
+ }
+ }
+
+ function extractGrowingEdgesData(datum) {
+ var id = datum.id;
+ var tag = datum.tag;
+ var prevDatum = prevDictionary[id];
+ if (growEnteringEdges && !prevDatum && datum.parent) {
+ if (isEdgeElement(datum)) {
+ if (tag == 'path' || tag == 'polygon') {
+ if (tag == 'polygon') {
+ var path = datum.parent.children.find(function (e) {
+ return e.tag == 'path';
+ });
+ if (path) {
+ datum.totalLength = path.totalLength;
+ }
+ }
+ var title = getEdgeTitle(datum);
+ var child = title.children[0];
+ var nodeIds = child.text.split('->');
+ if (nodeIds.length != 2) {
+ nodeIds = child.text.split('--');
+ }
+ var startNodeId = nodeIds[0];
+ var startNode = nodeDictionary[startNodeId];
+ var prevStartNode = prevNodeDictionary[startNodeId];
+ if (prevStartNode) {
+ var i = startNode.children.findIndex(function (element, index) {
+ return element.tag == 'g';
+ });
+ if (i >= 0) {
+ var j = startNode.children[i].children.findIndex(function (element, index) {
+ return element.tag == 'a';
+ });
+ startNode = startNode.children[i].children[j];
+ }
+ var i = prevStartNode.children.findIndex(function (element, index) {
+ return element.tag == 'g';
+ });
+ if (i >= 0) {
+ var j = prevStartNode.children[i].children.findIndex(function (element, index) {
+ return element.tag == 'a';
+ });
+ prevStartNode = prevStartNode.children[i].children[j];
+ }
+ var startShapes = startNode.children;
+ for (var i = 0; i < startShapes.length; i++) {
+ if (startShapes[i].tag == 'polygon' || startShapes[i].tag == 'ellipse' || startShapes[i].tag == 'path' || startShapes[i].tag == 'text') {
+ var startShape = startShapes[i];
+ break;
+ }
+ }
+ var prevStartShapes = prevStartNode.children;
+ for (var i = 0; i < prevStartShapes.length; i++) {
+ if (prevStartShapes[i].tag == 'polygon' || prevStartShapes[i].tag == 'ellipse' || prevStartShapes[i].tag == 'path' || prevStartShapes[i].tag == 'text') {
+ var prevStartShape = prevStartShapes[i];
+ break;
+ }
+ }
+ if (prevStartShape && startShape) {
+ datum.offset = {
+ x: prevStartShape.center.x - startShape.center.x,
+ y: prevStartShape.center.y - startShape.center.y,
+ };
+ } else {
+ datum.offset = {x: 0, y: 0};
+ }
+ }
+ }
+ }
+ }
+ }
+
+ function postProcessDataPass2Global(datum) {
+ addToNodeDictionary(datum);
+ extractGrowingEdgesData(datum);
+ datum.children.forEach(function (childData) {
+ postProcessDataPass2Global(childData);
+ });
+ }
+
+ this._dispatch.call("layoutEnd", this);
+
+ var newDoc = d3__namespace.select(document.createDocumentFragment())
+ .append('div');
+
+ var parser = new window.DOMParser();
+ var doc = parser.parseFromString(svgDoc, "image/svg+xml");
+
+ newDoc
+ .append(function() {
+ return doc.documentElement;
+ });
+
+ var newSvg = newDoc
+ .select('svg');
+
+ var data = extractAllElementsData(newSvg);
+ this._dispatch.call('dataExtractEnd', this);
+ postProcessDataPass1Local(data);
+ this._dispatch.call('dataProcessPass1End', this);
+ postProcessDataPass2Global(data);
+ this._dispatch.call('dataProcessPass2End', this);
+ this._data = data;
+ this._dictionary = dictionary;
+ this._nodeDictionary = nodeDictionary;
+
+ this._extractData = function (element, childIndex, parentData) {
+ var data = extractAllElementsData(element);
+ postProcessDataPass1Local(data, childIndex, parentData);
+ postProcessDataPass2Global(data);
+ return data;
+ };
+ this._busy = false;
+ this._dispatch.call('dataProcessEnd', this);
+ if (callback) {
+ callback.call(this);
+ }
+ if (this._queue.length > 0) {
+ var job = this._queue.shift();
+ job.call(this);
+ }
+ }
+
+ function renderDot(src, callback) {
+
+ var graphvizInstance = this;
+
+ this
+ .dot(src, render);
+
+ function render() {
+ graphvizInstance
+ .render(callback);
+ }
+
+ return this;
+ }
+
+ function transition(name) {
+
+ if (name instanceof Function) {
+ this._transitionFactory = name;
+ } else {
+ this._transition = d3Transition.transition(name);
+ }
+
+ return this;
+ }
+ function active(name) {
+
+ var root = this._selection;
+ var svg = root.selectWithoutDataPropagation("svg");
+ if (svg.size() != 0) {
+ return d3Transition.active(svg.node(), name);
+ } else {
+ return null;
+ }
+ }
+
+ function options(options) {
+
+ if (typeof options == 'undefined') {
+ return Object.assign({}, this._options);
+ } else {
+ for (var option of Object.keys(options)) {
+ this._options[option] = options[option];
+ }
+ return this;
+ }
+ }
+
+ function width(width) {
+
+ this._options.width = width;
+
+ return this;
+ }
+
+ function height(height) {
+
+ this._options.height = height;
+
+ return this;
+ }
+
+ function scale(scale) {
+
+ this._options.scale = scale;
+
+ return this;
+ }
+
+ function fit(fit) {
+
+ this._options.fit = fit;
+
+ return this;
+ }
+
+ function attributer(callback) {
+
+ this._attributer = callback;
+
+ return this;
+ }
+
+ function engine(engine) {
+
+ this._options.engine = engine;
+
+ return this;
+ }
+
+ function images(path, width, height) {
+
+ this._images.push({path:path, width: width, height:height});
+
+ return this;
+ }
+
+ function keyMode(keyMode) {
+
+ if (!this._keyModes.has(keyMode)) {
+ throw Error('Illegal keyMode: ' + keyMode);
+ }
+ if (keyMode != this._options.keyMode && this._data != null) {
+ throw Error('Too late to change keyMode');
+ }
+ this._options.keyMode = keyMode;
+
+ return this;
+ }
+
+ function fade(enable) {
+
+ this._options.fade = enable;
+
+ return this;
+ }
+
+ function tweenPaths(enable) {
+
+ this._options.tweenPaths = enable;
+
+ return this;
+ }
+
+ function tweenShapes(enable) {
+
+ this._options.tweenShapes = enable;
+ if (enable) {
+ this._options.tweenPaths = true;
+ }
+
+ return this;
+ }
+
+ function convertEqualSidedPolygons(enable) {
+
+ this._options.convertEqualSidedPolygons = enable;
+
+ return this;
+ }
+
+ function tweenPrecision(precision) {
+
+ this._options.tweenPrecision = precision;
+
+ return this;
+ }
+
+ function growEnteringEdges(enable) {
+
+ this._options.growEnteringEdges = enable;
+
+ return this;
+ }
+
+ function on(typenames, callback) {
+
+ this._dispatch.on(typenames, callback);
+
+ return this;
+ }
+
+ function onerror(callback) {
+
+ this._onerror = callback;
+
+ return this;
+ }
+
+ function logEvents(enable) {
+
+ var t0 = Date.now();
+ var times = {};
+ var eventTypes = this._eventTypes;
+ var maxEventTypeLength = Math.max(...(eventTypes.map(eventType => eventType.length)));
+ for (let i = 0; i < eventTypes.length; i++) {
+ let eventType = eventTypes[i];
+ times[eventType] = [];
+ var graphvizInstance = this;
+ var expectedDelay;
+ var expectedDuration;
+ this
+ .on(eventType + '.log', enable ? function () {
+ var t = Date.now();
+ var seqNo = times[eventType].length;
+ times[eventType].push(t);
+ var string = '';
+ string += 'Event ';
+ string += d3Format.format(' >2')(i) + ' ';
+ string += eventType + ' '.repeat(maxEventTypeLength - eventType.length);
+ string += d3Format.format(' >5')(t - t0) + ' ';
+ if (eventType != 'initEnd') {
+ string += d3Format.format(' >5')(t - times['start'][seqNo]);
+ }
+ if (eventType == 'dataProcessEnd') {
+ string += ' prepare ' + d3Format.format(' >5')((t - times['layoutEnd'][seqNo]));
+ }
+ if (eventType == 'renderEnd' && graphvizInstance._transition) {
+ string += ' transition start margin ' + d3Format.format(' >5')(graphvizInstance._transition.delay() - (t - times['renderStart'][seqNo]));
+ expectedDelay = graphvizInstance._transition.delay();
+ expectedDuration = graphvizInstance._transition.duration();
+ }
+ if (eventType == 'transitionStart') {
+ var actualDelay = (t - times['renderStart'][seqNo]);
+ string += ' transition delay ' + d3Format.format(' >5')(t - times['renderStart'][seqNo]);
+ string += ' expected ' + d3Format.format(' >5')(expectedDelay);
+ string += ' diff ' + d3Format.format(' >5')(actualDelay - expectedDelay);
+ }
+ if (eventType == 'transitionEnd') {
+ var actualDuration = t - times['transitionStart'][seqNo];
+ string += ' transition duration ' + d3Format.format(' >5')(actualDuration);
+ string += ' expected ' + d3Format.format(' >5')(expectedDuration);
+ string += ' diff ' + d3Format.format(' >5')(actualDuration - expectedDuration);
+ }
+ console.log(string);
+ t0 = t;
+ } : null);
+ }
+ return this;
+ }
+
+ function destroy() {
+
+ delete this._selection.node().__graphviz__;
+ if (this._worker) {
+ this._workerPortClose();
+ }
+ return this;
+ }
+
+ function rotate(x, y, cosA, sinA) {
+ // (x + j * y) * (cosA + j * sinA) = x * cosA - y * sinA + j * (x * sinA + y * cosA)
+ y = -y;
+ sinA = -sinA;
+ [x, y] = [x * cosA - y * sinA, x * sinA + y * cosA];
+ y = -y;
+ return [x, y];
+ }
+
+ function drawEdge(x1, y1, x2, y2, attributes, options={}) {
+ attributes = Object.assign({}, attributes);
+ if (attributes.style && attributes.style.includes('invis')) {
+ var newEdge = d3__namespace.select(null);
+ } else {
+ var root = this._selection;
+ var svg = root.selectWithoutDataPropagation("svg");
+ var graph0 = svg.selectWithoutDataPropagation("g");
+ var newEdge0 = createEdge.call(this, attributes);
+ var edgeData = extractAllElementsData(newEdge0);
+ var newEdge = graph0.append('g')
+ .data([edgeData]);
+ attributeElement.call(newEdge.node(), edgeData);
+ _updateEdge.call(this, newEdge, x1, y1, x2, y2, attributes, options);
+ }
+ this._drawnEdge = {
+ g: newEdge,
+ x1: x1,
+ y1: y1,
+ x2: x2,
+ y2: y2,
+ attributes: attributes,
+ };
+
+ return this;
+ }
+
+ function updateDrawnEdge(x1, y1, x2, y2, attributes={}, options={}) {
+ if (!this._drawnEdge) {
+ throw Error('No edge has been drawn');
+ }
+ var edge = this._drawnEdge.g;
+ attributes = Object.assign(this._drawnEdge.attributes, attributes);
+ this._drawnEdge.x1 = x1;
+ this._drawnEdge.y1 = y1;
+ this._drawnEdge.x2 = x2;
+ this._drawnEdge.y2 = y2;
+ if (edge.empty() && !(attributes.style && attributes.style.includes('invis'))) {
+ var root = this._selection;
+ var svg = root.selectWithoutDataPropagation("svg");
+ var graph0 = svg.selectWithoutDataPropagation("g");
+ var edge = graph0.append('g');
+ this._drawnEdge.g = edge;
+ }
+ if (!edge.empty()) {
+ _updateEdge.call(this, edge, x1, y1, x2, y2, attributes, options);
+ }
+
+ return this;
+ }
+
+ function _updateEdge(edge, x1, y1, x2, y2, attributes, options) {
+
+ var newEdge = createEdge.call(this, attributes);
+ var edgeData = extractAllElementsData(newEdge);
+ edge.data([edgeData]);
+ attributeElement.call(edge.node(), edgeData);
+ _moveEdge(edge, x1, y1, x2, y2, attributes, options);
+ }
+
+ function _moveEdge(edge, x1, y1, x2, y2, attributes, options) {
+
+ var shortening = options.shortening || 0;
+ var arrowHeadLength = 10;
+ var arrowHeadWidth = 7;
+ var margin = 0.1;
+
+ var arrowHeadPoints = [
+ [0, -arrowHeadWidth / 2],
+ [arrowHeadLength, 0],
+ [0, arrowHeadWidth / 2],
+ [0, -arrowHeadWidth / 2],
+ ];
+
+ var dx = x2 - x1;
+ var dy = y2 - y1;
+ var length = Math.sqrt(dx * dx + dy * dy);
+ if (length == 0) {
+ var cosA = 1;
+ var sinA = 0;
+ } else {
+ var cosA = dx / length;
+ var sinA = dy / length;
+ }
+ x2 = x1 + (length - shortening - arrowHeadLength - margin) * cosA;
+ y2 = y1 + (length - shortening - arrowHeadLength - margin) * sinA;
+
+ if (attributes.URL || attributes.tooltip) {
+ var a = edge.selectWithoutDataPropagation("g").selectWithoutDataPropagation("a");
+ var line = a.selectWithoutDataPropagation("path");
+ var arrowHead = a.selectWithoutDataPropagation("polygon");
+ } else {
+ var line = edge.selectWithoutDataPropagation("path");
+ var arrowHead = edge.selectWithoutDataPropagation("polygon");
+ }
+
+ var path1 = d3Path.path();
+ path1.moveTo(x1, y1);
+ path1.lineTo(x2, y2);
+
+ line
+ .attr("d", path1);
+
+ x2 = x1 + (length - shortening - arrowHeadLength) * cosA;
+ y2 = y1 + (length - shortening - arrowHeadLength) * sinA;
+ for (var i = 0; i < arrowHeadPoints.length; i++) {
+ var point = arrowHeadPoints[i];
+ arrowHeadPoints[i] = rotate(point[0], point[1], cosA, sinA);
+ }
+ for (var i = 0; i < arrowHeadPoints.length; i++) {
+ var point = arrowHeadPoints[i];
+ arrowHeadPoints[i] = [x2 + point[0], y2 + point[1]];
+ }
+ var allPoints = [];
+ for (var i = 0; i < arrowHeadPoints.length; i++) {
+ var point = arrowHeadPoints[i];
+ allPoints.push(point.join(','));
+ }
+ var pointsAttr = allPoints.join(' ');
+
+ arrowHead
+ .attr("points", pointsAttr);
+
+ return this;
+ }
+
+ function moveDrawnEdgeEndPoint(x2, y2, options={}) {
+
+ if (!this._drawnEdge) {
+ throw Error('No edge has been drawn');
+ }
+ var edge = this._drawnEdge.g;
+ var x1 = this._drawnEdge.x1;
+ var y1 = this._drawnEdge.y1;
+ var attributes = this._drawnEdge.attributes;
+
+ this._drawnEdge.x2 = x2;
+ this._drawnEdge.y2 = y2;
+ _moveEdge(edge, x1, y1, x2, y2, attributes, options);
+
+ return this
+ }
+
+ function removeDrawnEdge() {
+
+ if (!this._drawnEdge) {
+ return this;
+ }
+
+ var edge = this._drawnEdge.g;
+
+ edge.remove();
+
+ this._drawnEdge = null;
+
+ return this
+ }
+
+ function insertDrawnEdge(name) {
+
+ if (!this._drawnEdge) {
+ throw Error('No edge has been drawn');
+ }
+
+ var edge = this._drawnEdge.g;
+ if (edge.empty()) {
+ return this;
+ }
+ this._drawnEdge.attributes;
+
+ var title = edge.selectWithoutDataPropagation("title");
+ title
+ .text(name);
+
+ var root = this._selection;
+ var svg = root.selectWithoutDataPropagation("svg");
+ var graph0 = svg.selectWithoutDataPropagation("g");
+ var graph0Datum = graph0.datum();
+ var edgeData = this._extractData(edge, graph0Datum.children.length, graph0.datum());
+ graph0Datum.children.push(edgeData);
+
+ insertAllElementsData(edge, edgeData);
+
+ this._drawnEdge = null;
+
+ return this
+
+ }
+
+ function drawnEdgeSelection() {
+
+ if (this._drawnEdge) {
+ return this._drawnEdge.g;
+ } else {
+ return d3__namespace.select(null);
+ }
+
+ }
+
+
+ function createEdge(attributes) {
+ var attributesString = '';
+ for (var name of Object.keys(attributes)) {
+ if (attributes[name] != null) {
+ attributesString += ' "' + name + '"="' + attributes[name] + '"';
+ }
+ }
+ var dotSrc = 'digraph {a -> b [' + attributesString + ']}';
+ var svgDoc = this.layoutSync(dotSrc, 'svg', 'dot');
+ var parser = new window.DOMParser();
+ var doc = parser.parseFromString(svgDoc, "image/svg+xml");
+ var newDoc = d3__namespace.select(document.createDocumentFragment())
+ .append(function() {
+ return doc.documentElement;
+ });
+ var edge = newDoc.select('.edge');
+
+ return edge;
+ }
+
+ function drawNode(x, y, nodeId, attributes={}, options={}) {
+ attributes = Object.assign({}, attributes);
+ if (attributes.style && attributes.style.includes('invis')) {
+ var newNode = d3__namespace.select(null);
+ } else {
+ var root = this._selection;
+ var svg = root.selectWithoutDataPropagation("svg");
+ var graph0 = svg.selectWithoutDataPropagation("g");
+ var newNode0 = createNode.call(this, nodeId, attributes);
+ var nodeData = extractAllElementsData(newNode0);
+ var newNode = graph0.append('g')
+ .data([nodeData]);
+ attributeElement.call(newNode.node(), nodeData);
+ _updateNode.call(this, newNode, x, y, nodeId, attributes, options);
+ }
+ this._drawnNode = {
+ g: newNode,
+ nodeId: nodeId,
+ x: x,
+ y: y,
+ attributes: attributes,
+ };
+
+ return this;
+ }
+
+ function updateDrawnNode(x, y, nodeId, attributes={}, options={}) {
+ if (!this._drawnNode) {
+ throw Error('No node has been drawn');
+ }
+
+ var node = this._drawnNode.g;
+ if (nodeId == null) {
+ nodeId = this._drawnNode.nodeId;
+ }
+ attributes = Object.assign(this._drawnNode.attributes, attributes);
+ this._drawnNode.nodeId = nodeId;
+ this._drawnNode.x = x;
+ this._drawnNode.y = y;
+ if (node.empty() && !(attributes.style && attributes.style.includes('invis'))) {
+ var root = this._selection;
+ var svg = root.selectWithoutDataPropagation("svg");
+ var graph0 = svg.selectWithoutDataPropagation("g");
+ var node = graph0.append('g');
+ this._drawnNode.g = node;
+ }
+ if (!node.empty()) {
+ _updateNode.call(this, node, x, y, nodeId, attributes, options);
+ }
+
+ return this;
+ }
+
+ function _updateNode(node, x, y, nodeId, attributes, options) {
+
+ var newNode = createNode.call(this, nodeId, attributes);
+ var nodeData = extractAllElementsData(newNode);
+ node.data([nodeData]);
+ attributeElement.call(node.node(), nodeData);
+ _moveNode(node, x, y, attributes);
+
+ return this;
+ }
+
+ function _moveNode(node, x, y, attributes, options) {
+ if (attributes.URL || attributes.tooltip) {
+ var subParent = node.selectWithoutDataPropagation("g").selectWithoutDataPropagation("a");
+ } else {
+ var subParent = node;
+ }
+ var svgElements = subParent.selectAll('ellipse,polygon,path,polyline');
+ var text = node.selectWithoutDataPropagation("text");
+
+ if (svgElements.size() != 0) {
+ var bbox = svgElements.node().getBBox();
+ bbox.cx = bbox.x + bbox.width / 2;
+ bbox.cy = bbox.y + bbox.height / 2;
+ } else if (text.size() != 0) {
+ bbox = {
+ x: +text.attr('x'),
+ y: +text.attr('y'),
+ width: 0,
+ height: 0,
+ cx: +text.attr('x'),
+ cy: +text.attr('y'),
+ };
+ }
+ svgElements.each(function(data, index) {
+ var svgElement = d3__namespace.select(this);
+ if (svgElement.attr("cx")) {
+ svgElement
+ .attr("cx", roundTo2Decimals(x))
+ .attr("cy", roundTo2Decimals(y));
+ } else if (svgElement.attr("points")) {
+ var pointsString = svgElement.attr('points').trim();
+ svgElement
+ .attr("points", translatePointsAttribute(pointsString, x - bbox.cx, y - bbox.cy));
+ } else {
+ var d = svgElement.attr('d');
+ svgElement
+ .attr("d", translateDAttribute(d, x - bbox.cx, y - bbox.cy));
+ }
+ });
+
+ if (text.size() != 0) {
+ text
+ .attr("x", roundTo2Decimals(+text.attr("x") + x - bbox.cx))
+ .attr("y", roundTo2Decimals(+text.attr("y") + y - bbox.cy));
+ }
+ return this;
+ }
+
+ function moveDrawnNode(x, y, options={}) {
+
+ if (!this._drawnNode) {
+ throw Error('No node has been drawn');
+ }
+ var node = this._drawnNode.g;
+ var attributes = this._drawnNode.attributes;
+
+ this._drawnNode.x = x;
+ this._drawnNode.y = y;
+
+ if (!node.empty()) {
+ _moveNode(node, x, y, attributes);
+ }
+
+ return this
+ }
+
+ function removeDrawnNode() {
+
+ if (!this._drawnNode) {
+ return this;
+ }
+
+ var node = this._drawnNode.g;
+
+ if (!node.empty()) {
+ node.remove();
+ }
+
+ this._drawnNode = null;
+
+ return this
+ }
+
+ function insertDrawnNode(nodeId) {
+
+ if (!this._drawnNode) {
+ throw Error('No node has been drawn');
+ }
+
+ if (nodeId == null) {
+ nodeId = this._drawnNode.nodeId;
+ }
+ var node = this._drawnNode.g;
+ if (node.empty()) {
+ return this;
+ }
+ var attributes = this._drawnNode.attributes;
+
+ var title = node.selectWithoutDataPropagation("title");
+ title
+ .text(nodeId);
+ if (attributes.URL || attributes.tooltip) {
+ var ga = node.selectWithoutDataPropagation("g");
+ var a = ga.selectWithoutDataPropagation("a");
+ a.selectWithoutDataPropagation('ellipse,polygon,path,polyline');
+ var text = a.selectWithoutDataPropagation('text');
+ } else {
+ node.selectWithoutDataPropagation('ellipse,polygon,path,polyline');
+ var text = node.selectWithoutDataPropagation('text');
+ }
+ text
+ .text(attributes.label || nodeId);
+
+ var root = this._selection;
+ var svg = root.selectWithoutDataPropagation("svg");
+ var graph0 = svg.selectWithoutDataPropagation("g");
+ var graph0Datum = graph0.datum();
+ var nodeData = this._extractData(node, graph0Datum.children.length, graph0.datum());
+ graph0Datum.children.push(nodeData);
+
+ insertAllElementsData(node, nodeData);
+
+ this._drawnNode = null;
+
+ return this
+
+ }
+
+ function drawnNodeSelection() {
+
+ if (this._drawnNode) {
+ return this._drawnNode.g;
+ } else {
+ return d3__namespace.select(null);
+ }
+
+ }
+
+ function createNode(nodeId, attributes) {
+ var attributesString = '';
+ for (var name of Object.keys(attributes)) {
+ if (attributes[name] != null) {
+ attributesString += ' "' + name + '"="' + attributes[name] + '"';
+ }
+ }
+ var dotSrc = 'graph {"' + nodeId + '" [' + attributesString + ']}';
+ var svgDoc = this.layoutSync(dotSrc, 'svg', 'dot');
+ var parser = new window.DOMParser();
+ var doc = parser.parseFromString(svgDoc, "image/svg+xml");
+ var newDoc = d3__namespace.select(document.createDocumentFragment())
+ .append(function() {
+ return doc.documentElement;
+ });
+ var node = newDoc.select('.node');
+
+ return node;
+ }
+
+ /* This file is excluded from coverage because the intrumented code
+ * translates "self" which gives a reference error.
+ */
+
+ /* istanbul ignore next */
+
+ function workerCodeBody(port) {
+
+ self.document = {}; // Workaround for "ReferenceError: document is not defined" in hpccWasm
+
+ port.addEventListener('message', function(event) {
+ let hpccWasm = self["@hpcc-js/wasm"];
+ if (hpccWasm == undefined && event.data.vizURL) {
+ importScripts(event.data.vizURL);
+ hpccWasm = self["@hpcc-js/wasm"];
+ hpccWasm.wasmFolder(event.data.vizURL.match(/.*\//)[0]);
+ // This is an alternative workaround where wasmFolder() is not needed
+ // document = {currentScript: {src: event.data.vizURL}};
+ }
+ hpccWasm.graphviz.layout(event.data.dot, "svg", event.data.engine, event.data.options).then((svg) => {
+ if (svg) {
+ port.postMessage({
+ type: "done",
+ svg: svg,
+ });
+ } else if (event.data.vizURL) {
+ port.postMessage({
+ type: "init",
+ });
+ } else {
+ port.postMessage({
+ type: "skip",
+ });
+ }
+ }).catch(error => {
+ port.postMessage({
+ type: "error",
+ error: error.message,
+ });
+ });
+ });
+ }
+
+ /* istanbul ignore next */
+
+ function workerCode() {
+
+ const port = self;
+ workerCodeBody(port);
+ }
+
+ /* istanbul ignore next */
+
+ function sharedWorkerCode() {
+ self.onconnect = function(e) {
+ const port = e.ports[0];
+ workerCodeBody(port);
+ port.start();
+ };
+ }
+
+ function Graphviz(selection, options) {
+ this._options = {
+ useWorker: true,
+ useSharedWorker: false,
+ engine: 'dot',
+ keyMode: 'title',
+ fade: true,
+ tweenPaths: true,
+ tweenShapes: true,
+ convertEqualSidedPolygons: true,
+ tweenPrecision: 1,
+ growEnteringEdges: true,
+ zoom: true,
+ zoomScaleExtent: [0.1, 10],
+ zoomTranslateExtent: [[-Infinity, -Infinity], [+Infinity, +Infinity]],
+ width: null,
+ height: null,
+ scale: 1,
+ fit: false,
+ };
+ if (options instanceof Object) {
+ for (var option of Object.keys(options)) {
+ this._options[option] = options[option];
+ }
+ } else if (typeof options == 'boolean') {
+ this._options.useWorker = options;
+ }
+ var useWorker = this._options.useWorker;
+ var useSharedWorker = this._options.useSharedWorker;
+ if (typeof Worker == 'undefined') {
+ useWorker = false;
+ }
+ if (typeof SharedWorker == 'undefined') {
+ useSharedWorker = false;
+ }
+ if (useWorker || useSharedWorker) {
+ var scripts = d3__namespace.selectAll('script');
+ var vizScript = scripts.filter(function() {
+ return d3__namespace.select(this).attr('type') == 'javascript/worker' || (d3__namespace.select(this).attr('src') && d3__namespace.select(this).attr('src').match(/.*\/@hpcc-js\/wasm/));
+ });
+ if (vizScript.size() == 0) {
+ console.warn('No script tag of type "javascript/worker" was found and "useWorker" is true. Not using web worker.');
+ useWorker = false;
+ useSharedWorker = false;
+ } else {
+ this._vizURL = vizScript.attr('src');
+ if (!this._vizURL) {
+ console.warn('No "src" attribute of was found on the "javascript/worker" script tag and "useWorker" is true. Not using web worker.');
+ useWorker = false;
+ useSharedWorker = false;
+ }
+ }
+ }
+ if (useSharedWorker) {
+ const url = 'data:application/javascript;base64,' + btoa(workerCodeBody.toString() + '(' + sharedWorkerCode.toString() + ')()');
+ this._worker = this._worker = new SharedWorker(url);
+ this._workerPort = this._worker.port;
+ this._workerPortClose = this._worker.port.close.bind(this._workerPort);
+ this._worker.port.start();
+ this._workerCallbacks = [];
+ }
+ else if (useWorker) {
+ var blob = new Blob([workerCodeBody.toString() + '(' + workerCode.toString() + ')()']);
+ var blobURL = window.URL.createObjectURL(blob);
+ this._worker = new Worker(blobURL);
+ this._workerPort = this._worker;
+ this._workerPortClose = this._worker.terminate.bind(this._worker);
+ this._workerCallbacks = [];
+ }
+ this._selection = selection;
+ this._active = false;
+ this._busy = false;
+ this._jobs = [];
+ this._queue = [];
+ this._keyModes = new Set([
+ 'title',
+ 'id',
+ 'tag-index',
+ 'index'
+ ]);
+ this._images = [];
+ this._translation = undefined;
+ this._scale = undefined;
+ this._eventTypes = [
+ 'initEnd',
+ 'start',
+ 'layoutStart',
+ 'layoutEnd',
+ 'dataExtractEnd',
+ 'dataProcessPass1End',
+ 'dataProcessPass2End',
+ 'dataProcessEnd',
+ 'renderStart',
+ 'renderEnd',
+ 'transitionStart',
+ 'transitionEnd',
+ 'restoreEnd',
+ 'end'
+ ];
+ this._dispatch = d3Dispatch.dispatch(...this._eventTypes);
+ initViz.call(this);
+ selection.node().__graphviz__ = this;
+ }
+
+ function graphviz(selector, options) {
+ var g = d3__namespace.select(selector).graphviz(options);
+ return g;
+ }
+
+ Graphviz.prototype = graphviz.prototype = {
+ constructor: Graphviz,
+ engine: engine,
+ addImage: images,
+ keyMode: keyMode,
+ fade: fade,
+ tweenPaths: tweenPaths,
+ tweenShapes: tweenShapes,
+ convertEqualSidedPolygons: convertEqualSidedPolygons,
+ tweenPrecision: tweenPrecision,
+ growEnteringEdges: growEnteringEdges,
+ zoom: zoom,
+ resetZoom: resetZoom,
+ zoomBehavior: zoomBehavior,
+ zoomSelection: zoomSelection,
+ zoomScaleExtent: zoomScaleExtent,
+ zoomTranslateExtent: zoomTranslateExtent,
+ render: render,
+ layout: layout,
+ dot: dot,
+ data: data,
+ renderDot: renderDot,
+ transition: transition,
+ active: active,
+ options: options,
+ width: width,
+ height: height,
+ scale: scale,
+ fit: fit,
+ attributer: attributer,
+ on: on,
+ onerror: onerror,
+ logEvents: logEvents,
+ destroy: destroy,
+ drawEdge: drawEdge,
+ updateDrawnEdge: updateDrawnEdge,
+ moveDrawnEdgeEndPoint,
+ insertDrawnEdge,
+ removeDrawnEdge, removeDrawnEdge,
+ drawnEdgeSelection, drawnEdgeSelection,
+ drawNode: drawNode,
+ updateDrawnNode: updateDrawnNode,
+ moveDrawnNode: moveDrawnNode,
+ insertDrawnNode,
+ removeDrawnNode, removeDrawnNode,
+ drawnNodeSelection, drawnNodeSelection,
+ };
+
+ function selection_graphviz(options) {
+
+ var g = this.node().__graphviz__;
+ if (g) {
+ g.options(options);
+ // Ensure a possible new initEnd event handler is attached before calling it
+ d3Timer.timeout(function () {
+ g._dispatch.call("initEnd", this);
+ }.bind(this), 0);
+ } else {
+ g = new Graphviz(this, options);
+ }
+ return g;
+ }
+
+ function selection_selectWithoutDataPropagation(name) {
+
+ return d3__namespace.select(this.size() > 0 ? this.node().querySelector(name) : null);
+ }
+
+ d3.selection.prototype.graphviz = selection_graphviz;
+ d3.selection.prototype.selectWithoutDataPropagation = selection_selectWithoutDataPropagation;
+
+ exports.graphviz = graphviz;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+})));
+//# sourceMappingURL=d3-graphviz.js.map
diff --git a/static/d3-graphviz.js.map b/static/d3-graphviz.js.map
new file mode 100644
index 0000000..0af5e75
--- /dev/null
+++ b/static/d3-graphviz.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"d3-graphviz.js","sources":["../src/element.js","../src/utils.js","../src/zoom.js","../src/tweening.js","../src/data.js","../src/render.js","../src/svg.js","../src/dot.js","../src/renderDot.js","../src/transition.js","../src/options.js","../src/width.js","../src/height.js","../src/scale.js","../src/fit.js","../src/attributer.js","../src/engine.js","../src/images.js","../src/keyMode.js","../src/fade.js","../src/tweenPaths.js","../src/tweenShapes.js","../src/convertEqualSidedPolygons.js","../src/tweenPrecision.js","../src/growEnteringEdges.js","../src/on.js","../src/onerror.js","../src/logEvents.js","../src/destroy.js","../src/geometry.js","../src/drawEdge.js","../src/drawNode.js","../src/workerCode.js","../src/graphviz.js","../src/selection/graphviz.js","../src/selection/selectWithoutDataPropagation.js","../src/selection/index.js"],"sourcesContent":["import * as d3 from \"d3-selection\";\n\nexport function extractElementData(element) {\n\n var datum = {};\n var tag = element.node().nodeName;\n datum.tag = tag;\n if (tag == '#text') {\n datum.text = element.text();\n } else if (tag == '#comment') {\n datum.comment = element.text();\n }\n datum.attributes = {};\n var attributes = element.node().attributes;\n if (attributes) {\n for (var i = 0; i < attributes.length; i++) {\n var attribute = attributes[i];\n var name = attribute.name;\n var value = attribute.value;\n datum.attributes[name] = value;\n }\n }\n var transform = element.node().transform;\n if (transform && transform.baseVal.numberOfItems != 0) {\n var matrix = transform.baseVal.consolidate().matrix;\n datum.translation = {x: matrix.e, y: matrix.f};\n datum.scale = matrix.a;\n }\n if (tag == 'ellipse') {\n datum.center = {\n x: datum.attributes.cx,\n y: datum.attributes.cy,\n };\n }\n if (tag == 'polygon') {\n var points = element.attr('points').split(' ');\n var x = points.map(function(p) {return p.split(',')[0]});\n var y = points.map(function(p) {return p.split(',')[1]});\n var xmin = Math.min.apply(null, x);\n var xmax = Math.max.apply(null, x);\n var ymin = Math.min.apply(null, y);\n var ymax = Math.max.apply(null, y);\n var bbox = {\n x: xmin,\n y: ymin,\n width: xmax - xmin,\n height: ymax - ymin,\n };\n datum.bbox = bbox;\n datum.center = {\n x: (xmin + xmax) / 2,\n y: (ymin + ymax) / 2,\n };\n }\n if (tag == 'path') {\n var d = element.attr('d');\n var points = d.split(/[A-Z ]/);\n points.shift();\n var x = points.map(function(p) {return +p.split(',')[0]});\n var y = points.map(function(p) {return +p.split(',')[1]});\n var xmin = Math.min.apply(null, x);\n var xmax = Math.max.apply(null, x);\n var ymin = Math.min.apply(null, y);\n var ymax = Math.max.apply(null, y);\n var bbox = {\n x: xmin,\n y: ymin,\n width: xmax - xmin,\n height: ymax - ymin,\n };\n datum.bbox = bbox;\n datum.center = {\n x: (xmin + xmax) / 2,\n y: (ymin + ymax) / 2,\n };\n datum.totalLength = element.node().getTotalLength();\n }\n if (tag == 'text') {\n datum.center = {\n x: element.attr('x'),\n y: element.attr('y'),\n };\n }\n if (tag == '#text') {\n datum.text = element.text();\n } else if (tag == '#comment') {\n datum.comment = element.text();\n }\n return datum\n}\n\nexport function extractAllElementsData(element) {\n\n var datum = extractElementData(element);\n datum.children = [];\n var children = d3.selectAll(element.node().childNodes);\n children.each(function () {\n var childData = extractAllElementsData(d3.select(this));\n childData.parent = datum;\n datum.children.push(childData);\n });\n return datum;\n}\n\nexport function createElement(data) {\n\n if (data.tag == '#text') {\n return document.createTextNode(\"\");\n } else if (data.tag == '#comment') {\n return document.createComment(data.comment);\n } else {\n return document.createElementNS('http://www.w3.org/2000/svg', data.tag);\n }\n}\n\nexport function createElementWithAttributes(data) {\n\n var elementNode = createElement(data);\n var element = d3.select(elementNode);\n var attributes = data.attributes;\n for (var attributeName of Object.keys(attributes)) {\n var attributeValue = attributes[attributeName];\n element.attr(attributeName, attributeValue);\n }\n return elementNode;\n}\n\nexport function replaceElement(element, data) {\n var parent = d3.select(element.node().parentNode);\n var newElementNode = createElementWithAttributes(data);\n var newElement = parent.insert(function () {\n return newElementNode;\n }, function () {\n return element.node();\n });\n element.remove();\n return newElement;\n}\n\nexport function insertElementData(element, datum) {\n element.datum(datum);\n element.data([datum], function (d) {\n return d.key;\n });\n}\n\nexport function insertAllElementsData(element, datum) {\n insertElementData(element, datum);\n var children = d3.selectAll(element.node().childNodes);\n children.each(function (d, i) {\n insertAllElementsData(d3.select(this), datum.children[i]);\n });\n}\n\nfunction insertChildren(element, index) {\n var children = element.selectAll(function () {\n return element.node().childNodes;\n });\n\n children = children\n .data(function (d) {\n return d.children;\n }, function (d) {\n return d.tag + '-' + index;\n });\n var childrenEnter = children\n .enter()\n .append(function(d) {\n return createElement(d);\n });\n\n var childrenExit = children\n .exit();\n childrenExit = childrenExit\n .remove()\n children = childrenEnter\n .merge(children);\n var childTagIndexes = {};\n children.each(function(childData) {\n var childTag = childData.tag;\n if (childTagIndexes[childTag] == null) {\n childTagIndexes[childTag] = 0;\n }\n var childIndex = childTagIndexes[childTag]++;\n attributeElement.call(this, childData, childIndex);\n });\n}\n\nexport function attributeElement(data, index=0) {\n var element = d3.select(this);\n var tag = data.tag;\n var attributes = data.attributes;\n var currentAttributes = element.node().attributes;\n if (currentAttributes) {\n for (var i = 0; i < currentAttributes.length; i++) {\n var currentAttribute = currentAttributes[i];\n var name = currentAttribute.name;\n if (name.split(':')[0] != 'xmlns' && currentAttribute.namespaceURI) {\n var namespaceURIParts = currentAttribute.namespaceURI.split('/');\n var namespace = namespaceURIParts[namespaceURIParts.length - 1];\n name = namespace + ':' + name;\n }\n if (!(name in attributes)) {\n attributes[name] = null;\n }\n }\n }\n for (var attributeName of Object.keys(attributes)) {\n element\n .attr(attributeName, attributes[attributeName]);\n }\n if (data.text) {\n element\n .text(data.text);\n }\n insertChildren(element, index);\n}\n","export function shallowCopyObject(obj) {\n return Object.assign({}, obj);\n}\n\nexport function roundTo2Decimals(x) {\n return Math.round(x * 100.0) / 100.0\n}\n","import * as d3 from \"d3-selection\";\nimport {zoom, zoomTransform, zoomIdentity} from \"d3-zoom\";\nimport {interpolate} from \"d3-interpolate\";\n\nexport default function(enable) {\n\n this._options.zoom = enable;\n\n if (this._options.zoom && !this._zoomBehavior) {\n createZoomBehavior.call(this);\n } else if (!this._options.zoom && this._zoomBehavior) {\n this._zoomSelection.on(\".zoom\", null);\n this._zoomBehavior = null;\n }\n\n return this;\n}\n\nexport function createZoomBehavior() {\n\n function zoomed(event) {\n var g = d3.select(svg.node().querySelector(\"g\"));\n g.attr('transform', event.transform);\n }\n\n var root = this._selection;\n var svg = d3.select(root.node().querySelector(\"svg\"));\n if (svg.size() == 0) {\n return this;\n }\n this._zoomSelection = svg;\n var zoomBehavior = zoom()\n .scaleExtent(this._options.zoomScaleExtent)\n .translateExtent(this._options.zoomTranslateExtent)\n .interpolate(interpolate)\n .on(\"zoom\", zoomed);\n this._zoomBehavior = zoomBehavior;\n var g = d3.select(svg.node().querySelector(\"g\"));\n svg.call(zoomBehavior);\n if (!this._active) {\n translateZoomBehaviorTransform.call(this, g);\n }\n this._originalTransform = zoomTransform(svg.node());\n\n return this;\n};\n\nexport function getTranslatedZoomTransform(selection) {\n\n // Get the current zoom transform for the top level svg and\n // translate it uniformly with the given selection, using the\n // difference between the translation specified in the selection's\n // data and it's saved previous translation. The selection is\n // normally the top level g element of the graph.\n var oldTranslation = this._translation;\n var oldScale = this._scale;\n var newTranslation = selection.datum().translation;\n var newScale = selection.datum().scale;\n var t = zoomTransform(this._zoomSelection.node());\n if (oldTranslation) {\n t = t.scale(1 / oldScale);\n t = t.translate(-oldTranslation.x, -oldTranslation.y);\n }\n t = t.translate(newTranslation.x, newTranslation.y);\n t = t.scale(newScale);\n return t;\n}\n\nexport function translateZoomBehaviorTransform(selection) {\n\n // Translate the current zoom transform for the top level svg\n // uniformly with the given selection, using the difference\n // between the translation specified in the selection's data and\n // it's saved previous translation. The selection is normally the\n // top level g element of the graph.\n this._zoomBehavior.transform(this._zoomSelection, getTranslatedZoomTransform.call(this, selection));\n\n // Save the selections's new translation and scale.\n this._translation = selection.datum().translation;\n this._scale = selection.datum().scale;\n\n // Set the original zoom transform to the translation and scale specified in\n // the selection's data.\n this._originalTransform = zoomIdentity.translate(selection.datum().translation.x, selection.datum().translation.y).scale(selection.datum().scale);\n}\n\nexport function resetZoom(transition) {\n\n // Reset the zoom transform to the original zoom transform.\n var selection = this._zoomSelection;\n if (transition) {\n selection = selection\n .transition(transition);\n }\n selection\n .call(this._zoomBehavior.transform, this._originalTransform);\n\n return this;\n}\n\nexport function zoomScaleExtent(extent) {\n\n this._options.zoomScaleExtent = extent;\n\n return this;\n}\n\nexport function zoomTranslateExtent(extent) {\n\n this._options.zoomTranslateExtent = extent;\n\n return this;\n}\n\nexport function zoomBehavior() {\n return this._zoomBehavior || null;\n}\n\nexport function zoomSelection() {\n return this._zoomSelection || null;\n}\n","import {interpolate} from \"d3-interpolate\";\n\nexport function pathTween(points, d1) {\n return function() {\n const pointInterpolators = points.map(function(p) {\n return interpolate([p[0][0], p[0][1]], [p[1][0], p[1][1]]);\n });\n return function(t) {\n return t < 1 ? \"M\" + pointInterpolators.map(function(p) { return p(t); }).join(\"L\") : d1;\n };\n };\n}\n\nexport function pathTweenPoints(node, d1, precision, precisionIsRelative) {\n const path0 = node;\n const path1 = path0.cloneNode();\n const n0 = path0.getTotalLength();\n const n1 = (path1.setAttribute(\"d\", d1), path1).getTotalLength();\n\n // Uniform sampling of distance based on specified precision.\n const distances = [0];\n let i = 0;\n const dt = precisionIsRelative ? precision : precision / Math.max(n0, n1);\n while ((i += dt) < 1) {\n distances.push(i);\n }\n distances.push(1);\n\n // Compute point-interpolators at each distance.\n const points = distances.map(function(t) {\n const p0 = path0.getPointAtLength(t * n0);\n const p1 = path1.getPointAtLength(t * n1);\n return ([[p0.x, p0.y], [p1.x, p1.y]]);\n });\n return points;\n}\n","export default function() {\n return this._data || null;\n}\n\nexport function isEdgeElementParent(datum) {\n return (datum.attributes.class == 'edge' || (\n datum.tag == 'a' &&\n datum.parent.tag == 'g' &&\n datum.parent.parent.attributes.class == 'edge'\n ));\n}\n\nexport function isEdgeElement(datum) {\n return datum.parent && isEdgeElementParent(datum.parent);\n}\n\nexport function getEdgeGroup(datum) {\n if (datum.parent.attributes.class == 'edge') {\n return datum.parent;\n } else { // datum.parent.tag == 'g' && datum.parent.parent.tag == 'g' && datum.parent.parent.parent.attributes.class == 'edge'\n return datum.parent.parent.parent;\n }\n}\n\nexport function getEdgeTitle(datum) {\n return getEdgeGroup(datum).children.find(function (e) {\n return e.tag == 'title';\n });\n}\n","import * as d3 from \"d3-selection\";\nimport {transition} from \"d3-transition\";\nimport {timeout} from \"d3-timer\";\nimport {interpolateTransformSvg} from \"d3-interpolate\";\nimport {zoomTransform} from \"d3-zoom\";\nimport {createElement, extractElementData, replaceElement} from \"./element\";\nimport {shallowCopyObject} from \"./utils\";\nimport {createZoomBehavior, getTranslatedZoomTransform, translateZoomBehaviorTransform} from \"./zoom\";\nimport {pathTween} from \"./tweening\";\nimport {isEdgeElement} from \"./data\";\nimport {isEdgeElementParent} from \"./data\";\n\nexport default function(callback) {\n\n if (this._busy) {\n this._queue.push(this.render.bind(this, callback));\n return this;\n }\n this._dispatch.call('renderStart', this);\n\n if (this._transitionFactory) {\n timeout(function () { // Decouple from time spent. See https://github.com/d3/d3-timer/issues/27\n this._transition = transition(this._transitionFactory());\n _render.call(this, callback);\n }.bind(this), 0);\n } else {\n _render.call(this, callback);\n }\n return this;\n}\n\nfunction _render(callback) {\n\n var transitionInstance = this._transition;\n var fade = this._options.fade && transitionInstance != null;\n var tweenPaths = this._options.tweenPaths;\n var tweenShapes = this._options.tweenShapes;\n var convertEqualSidedPolygons = this._options.convertEqualSidedPolygons;\n var growEnteringEdges = this._options.growEnteringEdges && transitionInstance != null;\n var attributer = this._attributer;\n var graphvizInstance = this;\n\n function insertChildren(element) {\n var children = element.selectAll(function () {\n return element.node().childNodes;\n });\n\n children = children\n .data(function (d) {\n return d.children;\n }, function (d) {\n return d.key;\n });\n var childrenEnter = children\n .enter()\n .append(function(d) {\n var element = createElement(d);\n if (d.tag == '#text' && fade) {\n element.nodeValue = d.text;\n }\n return element;\n });\n\n if (fade || (growEnteringEdges && isEdgeElementParent(element.datum()))) {\n var childElementsEnter = childrenEnter\n .filter(function(d) {\n return d.tag[0] == '#' ? null : this;\n })\n .each(function (d) {\n var childEnter = d3.select(this);\n for (var attributeName of Object.keys(d.attributes)) {\n var attributeValue = d.attributes[attributeName];\n childEnter\n .attr(attributeName, attributeValue);\n }\n });\n childElementsEnter\n .filter(function(d) {\n return d.tag == 'svg' || d.tag == 'g' ? null : this;\n })\n .style(\"opacity\", 0.0);\n }\n var childrenExit = children\n .exit();\n if (attributer) {\n childrenExit.each(attributer);\n }\n if (transitionInstance) {\n childrenExit = childrenExit\n .transition(transitionInstance);\n if (fade) {\n childrenExit\n .filter(function(d) {\n return d.tag[0] == '#' ? null : this;\n })\n .style(\"opacity\", 0.0);\n }\n }\n childrenExit = childrenExit\n .remove()\n children = childrenEnter\n .merge(children);\n children.each(attributeElement);\n }\n\n function attributeElement(data) {\n var element = d3.select(this);\n if (data.tag == \"svg\") {\n var options = graphvizInstance._options;\n if (options.width != null || options.height != null) {\n var width = options.width;\n var height = options.height;\n if (width == null) {\n width = data.attributes.width.replace('pt', '') * 4 / 3;\n } else {\n element\n .attr(\"width\", width);\n data.attributes.width = width;\n }\n if (height == null) {\n height = data.attributes.height.replace('pt', '') * 4 / 3;\n } else {\n element\n .attr(\"height\", height);\n data.attributes.height = height;\n }\n if (!options.fit) {\n element\n .attr(\"viewBox\", `0 0 ${width * 3 / 4 / options.scale} ${height * 3 / 4 / options.scale}`);\n data.attributes.viewBox = `0 0 ${width * 3 / 4 / options.scale} ${height * 3 / 4 / options.scale}`;\n }\n }\n if (options.scale != 1 && (options.fit || (options.width == null && options.height == null))) {\n width = data.attributes.viewBox.split(' ')[2];\n height = data.attributes.viewBox.split(' ')[3];\n element\n .attr(\"viewBox\", `0 0 ${width / options.scale} ${height / options.scale}`);\n data.attributes.viewBox = `0 0 ${width / options.scale} ${height / options.scale}`;\n }\n }\n if (attributer) {\n element.each(attributer);\n }\n var tag = data.tag;\n var attributes = data.attributes;\n var currentAttributes = element.node().attributes;\n if (currentAttributes) {\n for (var i = 0; i < currentAttributes.length; i++) {\n var currentAttribute = currentAttributes[i];\n var name = currentAttribute.name;\n if (name.split(':')[0] != 'xmlns' && currentAttribute.namespaceURI) {\n var namespaceURIParts = currentAttribute.namespaceURI.split('/');\n var namespace = namespaceURIParts[namespaceURIParts.length - 1];\n name = namespace + ':' + name;\n }\n if (!(name in attributes)) {\n attributes[name] = null;\n }\n }\n }\n var convertShape = false;\n var convertPrevShape = false;\n if (tweenShapes && transitionInstance) {\n if ((this.nodeName == 'polygon' || this.nodeName == 'ellipse') && data.alternativeOld) {\n convertPrevShape = true;\n }\n if ((tag == 'polygon' || tag == 'ellipse') && data.alternativeNew) {\n convertShape = true;\n }\n if (this.nodeName == 'polygon' && tag == 'polygon' && data.alternativeOld) {\n var prevData = extractElementData(element);\n var prevPoints = prevData.attributes.points;\n if (!convertEqualSidedPolygons) {\n var nPrevPoints = prevPoints.split(' ').length;\n var points = data.attributes.points;\n var nPoints = points.split(' ').length;\n if (nPoints == nPrevPoints) {\n convertShape = false;\n convertPrevShape = false;\n }\n }\n }\n if (convertPrevShape) {\n var prevPathData = data.alternativeOld;\n var pathElement = replaceElement(element, prevPathData);\n pathElement.data([data], function () {\n return data.key;\n });\n element = pathElement;\n }\n if (convertShape) {\n var newPathData = data.alternativeNew;\n tag = 'path';\n attributes = newPathData.attributes;\n }\n }\n var elementTransition = element;\n if (transitionInstance) {\n elementTransition = elementTransition\n .transition(transitionInstance);\n if (fade) {\n elementTransition\n .filter(function(d) {\n return d.tag[0] == '#' ? null : this;\n })\n .style(\"opacity\", 1.0);\n }\n elementTransition\n .filter(function(d) {\n return d.tag[0] == '#' ? null : this;\n })\n .on(\"end\", function(d) {\n d3.select(this)\n .attr('style', (d && d.attributes && d.attributes.style) || null);\n });\n }\n var growThisPath = growEnteringEdges && tag == 'path' && data.offset;\n if (growThisPath) {\n var totalLength = data.totalLength;\n element\n .attr(\"stroke-dasharray\", totalLength + \" \" + totalLength)\n .attr(\"stroke-dashoffset\", totalLength)\n .attr('transform', 'translate(' + data.offset.x + ',' + data.offset.y + ')');\n attributes[\"stroke-dashoffset\"] = 0;\n attributes['transform'] = 'translate(0,0)';\n elementTransition\n .attr(\"stroke-dashoffset\", attributes[\"stroke-dashoffset\"])\n .attr('transform', attributes['transform'])\n .on(\"start\", function() {\n d3.select(this)\n .style('opacity', null);\n })\n .on(\"end\", function() {\n d3.select(this)\n .attr('stroke-dashoffset', null)\n .attr('stroke-dasharray', null)\n .attr('transform', null);\n });\n }\n var moveThisPolygon = growEnteringEdges && tag == 'polygon' && isEdgeElement(data) && data.offset && data.parent.children[3].tag == 'path';\n if (moveThisPolygon) {\n var edgePath = d3.select(element.node().parentNode.querySelector(\"path\"));\n var p0 = edgePath.node().getPointAtLength(0);\n var p1 = edgePath.node().getPointAtLength(data.totalLength);\n var p2 = edgePath.node().getPointAtLength(data.totalLength - 1);\n var angle1 = Math.atan2(p1.y - p2.y, p1.x - p2.x) * 180 / Math.PI;\n var x = p0.x - p1.x + data.offset.x;\n var y = p0.y - p1.y + data.offset.y;\n element\n .attr('transform', 'translate(' + x + ',' + y + ')');\n elementTransition\n .attrTween(\"transform\", function () {\n return function (t) {\n var p = edgePath.node().getPointAtLength(data.totalLength * t);\n var p2 = edgePath.node().getPointAtLength(data.totalLength * t + 1);\n var angle = Math.atan2(p2.y - p.y, p2.x - p.x) * 180 / Math.PI - angle1;\n x = p.x - p1.x + data.offset.x * (1 - t);\n y = p.y - p1.y + data.offset.y * (1 - t);\n return 'translate(' + x + ',' + y + ') rotate(' + angle + ' ' + p1.x + ' ' + p1.y + ')';\n }\n })\n .on(\"start\", function() {\n d3.select(this)\n .style('opacity', null);\n })\n .on(\"end\", function() {\n d3.select(this).attr('transform', null);\n });\n }\n var tweenThisPath = tweenPaths && transitionInstance && tag == 'path' && element.attr('d') != null;\n for (var attributeName of Object.keys(attributes)) {\n var attributeValue = attributes[attributeName];\n if (tweenThisPath && attributeName == 'd') {\n var points = (data.alternativeOld || data).points;\n if (points) {\n elementTransition\n .attrTween(\"d\", pathTween(points, attributeValue));\n }\n } else {\n if (attributeName == 'transform' && data.translation) {\n if (transitionInstance) {\n var onEnd = elementTransition.on(\"end\");\n elementTransition\n .on(\"start\", function () {\n if (graphvizInstance._zoomBehavior) {\n // Update the transform to transition to, just before the transition starts\n // in order to catch changes between the transition scheduling to its start.\n elementTransition\n .tween(\"attr.transform\", function() {\n var node = this;\n return function(t) {\n node.setAttribute(\"transform\", interpolateTransformSvg(zoomTransform(graphvizInstance._zoomSelection.node()).toString(), getTranslatedZoomTransform.call(graphvizInstance, element).toString())(t));\n };\n });\n }\n })\n .on(\"end\", function () {\n onEnd.call(this);\n // Update the zoom transform to the new translated transform\n if (graphvizInstance._zoomBehavior) {\n translateZoomBehaviorTransform.call(graphvizInstance, element);\n }\n })\n } else {\n if (graphvizInstance._zoomBehavior) {\n // Update the transform attribute to set with the current pan translation\n translateZoomBehaviorTransform.call(graphvizInstance, element);\n attributeValue = getTranslatedZoomTransform.call(graphvizInstance, element).toString();\n }\n }\n }\n elementTransition\n .attr(attributeName, attributeValue);\n }\n }\n if (convertShape) {\n elementTransition\n .on(\"end\", function (d, i, nodes) {\n pathElement = d3.select(this);\n var newElement = replaceElement(pathElement, d);\n newElement.data([d], function () {\n return d.key;\n });\n })\n }\n if (data.text) {\n elementTransition\n .text(data.text);\n }\n insertChildren(element);\n }\n\n var root = this._selection;\n\n if (transitionInstance != null) {\n // Ensure original SVG shape elements are restored after transition before rendering new graph\n var jobs = this._jobs;\n if (graphvizInstance._active) {\n jobs.push(null);\n return this;\n } else {\n root\n .transition(transitionInstance)\n .transition()\n .duration(0)\n .on(\"end\" , function () {\n graphvizInstance._active = false;\n if (jobs.length != 0) {\n jobs.shift();\n graphvizInstance.render();\n }\n });\n this._active = true;\n }\n }\n\n if (transitionInstance != null) {\n root\n .transition(transitionInstance)\n .on(\"start\" , function () {\n graphvizInstance._dispatch.call('transitionStart', graphvizInstance);\n })\n .on(\"end\" , function () {\n graphvizInstance._dispatch.call('transitionEnd', graphvizInstance);\n })\n .transition()\n .duration(0)\n .on(\"start\" , function () {\n graphvizInstance._dispatch.call('restoreEnd', graphvizInstance);\n graphvizInstance._dispatch.call('end', graphvizInstance);\n if (callback) {\n callback.call(graphvizInstance);\n }\n });\n }\n\n var data = this._data;\n\n var svg = root\n .selectAll(\"svg\")\n .data([data], function (d) {return d.key});\n svg = svg\n .enter()\n .append(\"svg\")\n .merge(svg);\n\n attributeElement.call(svg.node(), data);\n\n\n if (this._options.zoom && !this._zoomBehavior) {\n createZoomBehavior.call(this);\n }\n\n graphvizInstance._dispatch.call('renderEnd', graphvizInstance);\n\n if (transitionInstance == null) {\n this._dispatch.call('end', this);\n if (callback) {\n callback.call(this);\n }\n }\n\n return this;\n};\n","import {shallowCopyObject} from \"./utils\";\nimport {roundTo2Decimals} from \"./utils\";\n\nexport function convertToPathData(originalData, guideData) {\n if (originalData.tag == 'polygon') {\n var newData = shallowCopyObject(originalData);\n newData.tag = 'path';\n var originalAttributes = originalData.attributes;\n var newAttributes = shallowCopyObject(originalAttributes);\n var newPointsString = originalAttributes.points;\n if (guideData.tag == 'polygon') {\n var bbox = originalData.bbox;\n bbox.cx = bbox.x + bbox.width / 2;\n bbox.cy = bbox.y + bbox.height / 2;\n var pointsString = originalAttributes.points;\n var pointStrings = pointsString.split(' ');\n var normPoints = pointStrings.map(function(p) {var xy = p.split(','); return [xy[0] - bbox.cx, xy[1] - bbox.cy]});\n var x0 = normPoints[normPoints.length - 1][0];\n var y0 = normPoints[normPoints.length - 1][1];\n for (var i = 0; i < normPoints.length; i++, x0 = x1, y0 = y1) {\n var x1 = normPoints[i][0];\n var y1 = normPoints[i][1];\n var dx = x1 - x0;\n var dy = y1 - y0;\n if (dy == 0) {\n continue;\n } else {\n var x2 = x0 - y0 * dx / dy;\n }\n if (0 <= x2 && x2 < Infinity && ((x0 <= x2 && x2 <= x1) || (x1 <= x2 && x2 <= x0))) {\n break;\n }\n }\n var newPointStrings = [[bbox.cx + x2, bbox.cy + 0].join(',')];\n newPointStrings = newPointStrings.concat(pointStrings.slice(i));\n newPointStrings = newPointStrings.concat(pointStrings.slice(0, i));\n newPointsString = newPointStrings.join(' ');\n }\n newAttributes['d'] = 'M' + newPointsString + 'z';\n delete newAttributes.points;\n newData.attributes = newAttributes;\n } else /* if (originalData.tag == 'ellipse') */ {\n var newData = shallowCopyObject(originalData);\n newData.tag = 'path';\n var originalAttributes = originalData.attributes;\n var newAttributes = shallowCopyObject(originalAttributes);\n var cx = originalAttributes.cx;\n var cy = originalAttributes.cy;\n var rx = originalAttributes.rx;\n var ry = originalAttributes.ry;\n if (guideData.tag == 'polygon') {\n var bbox = guideData.bbox;\n bbox.cx = bbox.x + bbox.width / 2;\n bbox.cy = bbox.y + bbox.height / 2;\n var p = guideData.attributes.points.split(' ')[0].split(',');\n var sx = p[0];\n var sy = p[1];\n var dx = sx - bbox.cx;\n var dy = sy - bbox.cy;\n var l = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n var cosA = dx / l;\n var sinA = -dy / l;\n } else { // if (guideData.tag == 'path') {\n // FIXME: add support for getting start position from path\n var cosA = 1;\n var sinA = 0;\n }\n var x1 = rx * cosA;\n var y1 = -ry * sinA;\n var x2 = rx * (-cosA);\n var y2 = -ry * (-sinA);\n var dx = x2 - x1;\n var dy = y2 - y1;\n newAttributes['d'] = 'M ' + cx + ' ' + cy + ' m ' + x1 + ',' + y1 + ' a ' + rx + ',' + ry + ' 0 1,0 ' + dx + ',' + dy + ' a ' + rx + ',' + ry + ' 0 1,0 ' + -dx + ',' + -dy + 'z';\n delete newAttributes.cx;\n delete newAttributes.cy;\n delete newAttributes.rx;\n delete newAttributes.ry;\n newData.attributes = newAttributes;\n }\n return newData;\n}\n\nexport function translatePointsAttribute(pointsString, x, y) {\n var pointStrings = pointsString.split(' ');\n var points = pointStrings.map(function(p) {return p.split(',')});\n var points = pointStrings.map(function(p) {return [roundTo2Decimals(+x + +p.split(',')[0]), roundTo2Decimals(+y + +p.split(',')[1])]});\n var pointStrings = points.map(function(p) {return p.join(',')});\n var pointsString = pointStrings.join(' ');\n return pointsString;\n}\n\nexport function translateDAttribute(d, x, y) {\n var pointStrings = d.split(/[A-Z ]/);\n pointStrings.shift();\n var commands = d.split(/[^[A-Z ]+/);\n var points = pointStrings.map(function(p) {return p.split(',')});\n var points = pointStrings.map(function(p) {return [roundTo2Decimals(+x + +p.split(',')[0]), roundTo2Decimals(+y + +p.split(',')[1])]});\n var pointStrings = points.map(function(p) {return p.join(',')});\n d = commands.reduce(function(arr, v, i) {\n return arr.concat(v, pointStrings[i]);\n }, []).join('');\n return d;\n}\n","import { graphviz } from \"@hpcc-js/wasm\";\nimport { graphvizSync } from \"@hpcc-js/wasm\";\nimport * as d3 from \"d3-selection\";\nimport {extractAllElementsData, extractElementData, createElementWithAttributes} from \"./element\";\nimport {convertToPathData} from \"./svg\";\nimport {pathTweenPoints} from \"./tweening\";\nimport {isEdgeElement} from \"./data\";\nimport {getEdgeTitle} from \"./data\";\n\n\nexport function initViz() {\n\n // force JIT compilation of Viz.js\n try {\n graphviz.layout(\"\", \"svg\", \"dot\").then(() => {\n graphvizSync().then((graphviz1) => {\n this.layoutSync = graphviz1.layout.bind(graphviz1);\n if (this._worker == null) {\n this._dispatch.call(\"initEnd\", this);\n }\n if (this._afterInit) {\n this._afterInit();\n }\n });\n });\n } catch(error) {\n }\n if (this._worker != null) {\n var vizURL = this._vizURL;\n var graphvizInstance = this;\n this._workerPort.onmessage = function(event) {\n var callback = graphvizInstance._workerCallbacks.shift();\n callback.call(graphvizInstance, event);\n }\n if (!vizURL.match(/^https?:\\/\\/|^\\/\\//i)) {\n // Local URL. Prepend with local domain to be usable in web worker\n vizURL = (new window.URL(vizURL, document.location.href)).href;\n }\n postMessage.call(this, {dot: \"\", engine: 'dot', vizURL: vizURL}, function(event) {\n switch (event.data.type) {\n case \"init\":\n graphvizInstance._dispatch.call(\"initEnd\", this);\n break;\n }\n });\n }\n}\n\nfunction postMessage(message, callback) {\n this._workerCallbacks.push(callback);\n this._workerPort.postMessage(message);\n}\n\nexport function layout(src, engine, vizOptions, callback) {\n var graphvizInstance = this;\n var worker = this._worker;\n if (this._worker) {\n postMessage.call(this, {\n dot: src,\n engine: engine,\n options: vizOptions,\n }, function (event) {\n callback.call(this, event.data);\n });\n } else {\n try {\n var svgDoc = this.layoutSync(src, \"svg\", engine, vizOptions);\n callback.call(this, {type: 'done', svg: svgDoc});\n }\n catch(error) {\n callback.call(this, {type: 'error', error: error.message});\n }\n }\n}\n\nexport default function(src, callback) {\n\n var graphvizInstance = this;\n var worker = this._worker;\n var engine = this._options.engine;\n var images = this._images;\n\n this._dispatch.call(\"start\", this);\n this._busy = true;\n this._dispatch.call(\"layoutStart\", this);\n var vizOptions = {\n images: images,\n };\n if (!this._worker && this.layoutSync == null) {\n this._afterInit = this.dot.bind(this, src, callback);\n return this;\n }\n this.layout(src, engine, vizOptions, function (data) {\n switch (data.type) {\n case \"error\":\n if (graphvizInstance._onerror) {\n graphvizInstance._onerror(data.error);\n } else {\n throw data.error.message\n }\n break;\n case \"done\":\n var svgDoc = data.svg;\n layoutDone.call(this, svgDoc, callback);\n break;\n }\n });\n\n return this;\n};\n\nfunction layoutDone(svgDoc, callback) {\n var keyMode = this._options.keyMode;\n var tweenPaths = this._options.tweenPaths;\n var tweenShapes = this._options.tweenShapes;\n if (typeof this._options.tweenPrecision == 'string' && this._options.tweenPrecision.includes('%')) {\n var tweenPrecision = +this._options.tweenPrecision.split('%')[0] / 100;\n var tweenPrecisionIsRelative = this._options.tweenPrecision.includes('%');\n } else {\n var tweenPrecision = this._options.tweenPrecision;\n var tweenPrecisionIsRelative = false;\n }\n var growEnteringEdges = this._options.growEnteringEdges;\n var dictionary = {};\n var prevDictionary = this._dictionary || {};\n var nodeDictionary = {};\n var prevNodeDictionary = this._nodeDictionary || {};\n\n function setKey(datum, index) {\n var tag = datum.tag;\n if (keyMode == 'index') {\n datum.key = index;\n } else if (tag[0] != '#') {\n if (keyMode == 'id') {\n datum.key = datum.attributes.id;\n } else if (keyMode == 'title') {\n var title = datum.children.find(function (childData) {\n return childData.tag == 'title';\n });\n if (title) {\n if (title.children.length > 0) {\n datum.key = title.children[0].text;\n } else {\n datum.key = '';\n }\n }\n }\n }\n if (datum.key == null) {\n if (tweenShapes) {\n if (tag == 'ellipse' || tag == 'polygon') {\n tag = 'path';\n }\n }\n datum.key = tag + '-' + index;\n }\n }\n\n function setId(datum, parentData) {\n var id = (parentData ? parentData.id + '.' : '') + datum.key;\n datum.id = id;\n }\n\n function addToDictionary(datum) {\n dictionary[datum.id] = datum;\n }\n\n function calculateAlternativeShapeData(datum, prevDatum) {\n if (tweenShapes && datum.id in prevDictionary) {\n if ((prevDatum.tag == 'polygon' || prevDatum.tag == 'ellipse' || prevDatum.tag == 'path') && (prevDatum.tag != datum.tag || datum.tag == 'polygon')) {\n if (prevDatum.tag != 'path') {\n datum.alternativeOld = convertToPathData(prevDatum, datum);\n }\n if (datum.tag != 'path') {\n datum.alternativeNew = convertToPathData(datum, prevDatum);\n }\n }\n }\n }\n\n function calculatePathTweenPoints(datum, prevDatum) {\n if (tweenPaths && prevDatum && (prevDatum.tag == 'path' || (datum.alternativeOld && datum.alternativeOld.tag == 'path'))) {\n var attribute_d = (datum.alternativeNew || datum).attributes.d;\n if (datum.alternativeOld) {\n var oldNode = createElementWithAttributes(datum.alternativeOld);\n } else {\n var oldNode = createElementWithAttributes(prevDatum);\n }\n (datum.alternativeOld || (datum.alternativeOld = {})).points = pathTweenPoints(oldNode, attribute_d, tweenPrecision, tweenPrecisionIsRelative);\n }\n }\n\n function postProcessDataPass1Local(datum, index=0, parentData) {\n setKey(datum, index);\n setId(datum, parentData);\n var id = datum.id;\n var prevDatum = prevDictionary[id];\n addToDictionary(datum);\n calculateAlternativeShapeData(datum, prevDatum);\n calculatePathTweenPoints(datum, prevDatum);\n var childTagIndexes = {};\n datum.children.forEach(function (childData) {\n var childTag = childData.tag;\n if (childTag == 'ellipse' || childTag == 'polygon') {\n childTag = 'path';\n }\n if (childTagIndexes[childTag] == null) {\n childTagIndexes[childTag] = 0;\n }\n var childIndex = childTagIndexes[childTag]++;\n postProcessDataPass1Local(childData, childIndex, datum);\n });\n }\n\n function addToNodeDictionary(datum) {\n var tag = datum.tag;\n if (growEnteringEdges && datum.parent) {\n if (datum.parent.attributes.class == 'node') {\n if (tag == 'title') {\n if (datum.children.length > 0) {\n var child = datum.children[0];\n var nodeId = child.text;\n } else {\n var nodeId = '';\n }\n nodeDictionary[nodeId] = datum.parent;\n }\n }\n }\n }\n\n function extractGrowingEdgesData(datum) {\n var id = datum.id;\n var tag = datum.tag;\n var prevDatum = prevDictionary[id];\n if (growEnteringEdges && !prevDatum && datum.parent) {\n if (isEdgeElement(datum)) {\n if (tag == 'path' || tag == 'polygon') {\n if (tag == 'polygon') {\n var path = datum.parent.children.find(function (e) {\n return e.tag == 'path';\n });\n if (path) {\n datum.totalLength = path.totalLength;\n }\n }\n var title = getEdgeTitle(datum);\n var child = title.children[0];\n var nodeIds = child.text.split('->');\n if (nodeIds.length != 2) {\n nodeIds = child.text.split('--');\n }\n var startNodeId = nodeIds[0];\n var startNode = nodeDictionary[startNodeId];\n var prevStartNode = prevNodeDictionary[startNodeId];\n if (prevStartNode) {\n var i = startNode.children.findIndex(function (element, index) {\n return element.tag == 'g';\n });\n if (i >= 0) {\n var j = startNode.children[i].children.findIndex(function (element, index) {\n return element.tag == 'a';\n });\n startNode = startNode.children[i].children[j];\n }\n var i = prevStartNode.children.findIndex(function (element, index) {\n return element.tag == 'g';\n });\n if (i >= 0) {\n var j = prevStartNode.children[i].children.findIndex(function (element, index) {\n return element.tag == 'a';\n });\n prevStartNode = prevStartNode.children[i].children[j];\n }\n var startShapes = startNode.children;\n for (var i = 0; i < startShapes.length; i++) {\n if (startShapes[i].tag == 'polygon' || startShapes[i].tag == 'ellipse' || startShapes[i].tag == 'path' || startShapes[i].tag == 'text') {\n var startShape = startShapes[i];\n break;\n }\n }\n var prevStartShapes = prevStartNode.children;\n for (var i = 0; i < prevStartShapes.length; i++) {\n if (prevStartShapes[i].tag == 'polygon' || prevStartShapes[i].tag == 'ellipse' || prevStartShapes[i].tag == 'path' || prevStartShapes[i].tag == 'text') {\n var prevStartShape = prevStartShapes[i];\n break;\n }\n }\n if (prevStartShape && startShape) {\n datum.offset = {\n x: prevStartShape.center.x - startShape.center.x,\n y: prevStartShape.center.y - startShape.center.y,\n }\n } else {\n datum.offset = {x: 0, y: 0};\n }\n }\n }\n }\n }\n }\n\n function postProcessDataPass2Global(datum) {\n addToNodeDictionary(datum);\n extractGrowingEdgesData(datum);\n datum.children.forEach(function (childData) {\n postProcessDataPass2Global(childData);\n });\n }\n\n this._dispatch.call(\"layoutEnd\", this);\n\n var newDoc = d3.select(document.createDocumentFragment())\n .append('div');\n\n var parser = new window.DOMParser();\n var doc = parser.parseFromString(svgDoc, \"image/svg+xml\");\n\n newDoc\n .append(function() {\n return doc.documentElement;\n });\n\n var newSvg = newDoc\n .select('svg');\n\n var data = extractAllElementsData(newSvg);\n this._dispatch.call('dataExtractEnd', this);\n postProcessDataPass1Local(data);\n this._dispatch.call('dataProcessPass1End', this);\n postProcessDataPass2Global(data);\n this._dispatch.call('dataProcessPass2End', this);\n this._data = data;\n this._dictionary = dictionary;\n this._nodeDictionary = nodeDictionary;\n\n this._extractData = function (element, childIndex, parentData) {\n var data = extractAllElementsData(element);\n postProcessDataPass1Local(data, childIndex, parentData);\n postProcessDataPass2Global(data);\n return data;\n }\n this._busy = false;\n this._dispatch.call('dataProcessEnd', this);\n if (callback) {\n callback.call(this);\n }\n if (this._queue.length > 0) {\n var job = this._queue.shift();\n job.call(this);\n }\n}\n","export default function(src, callback) {\n\n var graphvizInstance = this;\n\n this\n .dot(src, render);\n\n function render() {\n graphvizInstance\n .render(callback);\n }\n\n return this;\n};\n","import {transition} from \"d3-transition\";\nimport {active as d3_active} from \"d3-transition\";\n\nexport default function(name) {\n\n if (name instanceof Function) {\n this._transitionFactory = name;\n } else {\n this._transition = transition(name);\n }\n\n return this;\n};\n\nexport function active(name) {\n\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n if (svg.size() != 0) {\n return d3_active(svg.node(), name);\n } else {\n return null;\n }\n};\n","export default function(options) {\n\n if (typeof options == 'undefined') {\n return Object.assign({}, this._options);\n } else {\n for (var option of Object.keys(options)) {\n this._options[option] = options[option];\n }\n return this;\n }\n};\n","export default function(width) {\n\n this._options.width = width;\n\n return this;\n};\n","export default function(height) {\n\n this._options.height = height;\n\n return this;\n};\n","export default function(scale) {\n\n this._options.scale = scale;\n\n return this;\n};\n","export default function(fit) {\n\n this._options.fit = fit;\n\n return this;\n};\n","export default function(callback) {\n\n this._attributer = callback;\n\n return this;\n};\n","export default function(engine) {\n\n this._options.engine = engine;\n\n return this;\n};\n","export default function(path, width, height) {\n\n this._images.push({path:path, width: width, height:height})\n\n return this;\n};\n","export default function(keyMode) {\n\n if (!this._keyModes.has(keyMode)) {\n throw Error('Illegal keyMode: ' + keyMode);\n }\n if (keyMode != this._options.keyMode && this._data != null) {\n throw Error('Too late to change keyMode');\n }\n this._options.keyMode = keyMode;\n\n return this;\n};\n","export default function(enable) {\n\n this._options.fade = enable\n\n return this;\n};\n","export default function(enable) {\n\n this._options.tweenPaths = enable;\n\n return this;\n};\n","export default function(enable) {\n\n this._options.tweenShapes = enable;\n if (enable) {\n this._options.tweenPaths = true;\n }\n\n return this;\n};\n","export default function(enable) {\n\n this._options.convertEqualSidedPolygons = enable;\n\n return this;\n};\n","export default function(precision) {\n\n this._options.tweenPrecision = precision;\n\n return this;\n};\n","export default function(enable) {\n\n this._options.growEnteringEdges = enable;\n\n return this;\n};\n","export default function(typenames, callback) {\n\n this._dispatch.on(typenames, callback);\n\n return this;\n};\n","export default function(callback) {\n\n this._onerror = callback\n\n return this;\n};\n","import {format} from \"d3-format\";\n\nexport default function(enable) {\n\n var t0 = Date.now();\n var times = {};\n var eventTypes = this._eventTypes;\n var maxEventTypeLength = Math.max(...(eventTypes.map(eventType => eventType.length)));\n for (let i = 0; i < eventTypes.length; i++) {\n let eventType = eventTypes[i];\n times[eventType] = [];\n var graphvizInstance = this;\n var expectedDelay;\n var expectedDuration;\n this\n .on(eventType + '.log', enable ? function () {\n var t = Date.now();\n var seqNo = times[eventType].length;\n times[eventType].push(t);\n var string = '';\n string += 'Event ';\n string += format(' >2')(i) + ' ';\n string += eventType + ' '.repeat(maxEventTypeLength - eventType.length);\n string += format(' >5')(t - t0) + ' ';\n if (eventType != 'initEnd') {\n string += format(' >5')(t - times['start'][seqNo]);\n }\n if (eventType == 'dataProcessEnd') {\n string += ' prepare ' + format(' >5')((t - times['layoutEnd'][seqNo]));\n }\n if (eventType == 'renderEnd' && graphvizInstance._transition) {\n string += ' transition start margin ' + format(' >5')(graphvizInstance._transition.delay() - (t - times['renderStart'][seqNo]));\n expectedDelay = graphvizInstance._transition.delay();\n expectedDuration = graphvizInstance._transition.duration();\n }\n if (eventType == 'transitionStart') {\n var actualDelay = (t - times['renderStart'][seqNo])\n string += ' transition delay ' + format(' >5')(t - times['renderStart'][seqNo]);\n string += ' expected ' + format(' >5')(expectedDelay);\n string += ' diff ' + format(' >5')(actualDelay - expectedDelay);\n }\n if (eventType == 'transitionEnd') {\n var actualDuration = t - times['transitionStart'][seqNo]\n string += ' transition duration ' + format(' >5')(actualDuration);\n string += ' expected ' + format(' >5')(expectedDuration);\n string += ' diff ' + format(' >5')(actualDuration - expectedDuration);\n }\n console.log(string);\n t0 = t;\n } : null);\n }\n return this;\n}\n","export default function() {\n\n delete this._selection.node().__graphviz__;\n if (this._worker) {\n this._workerPortClose();\n }\n return this;\n};\n","export function rotate(x, y, cosA, sinA) {\n // (x + j * y) * (cosA + j * sinA) = x * cosA - y * sinA + j * (x * sinA + y * cosA)\n y = -y;\n sinA = -sinA;\n [x, y] = [x * cosA - y * sinA, x * sinA + y * cosA];\n y = -y;\n return [x, y];\n}\n","import * as d3 from \"d3-selection\";\nimport {path as d3_path} from \"d3-path\";\nimport {rotate} from \"./geometry\";\nimport {extractAllElementsData} from \"./element\";\nimport {attributeElement} from \"./element\";\nimport {insertAllElementsData} from \"./element\";\n\nexport function drawEdge(x1, y1, x2, y2, attributes, options={}) {\n attributes = Object.assign({}, attributes);\n if (attributes.style && attributes.style.includes('invis')) {\n var newEdge = d3.select(null);\n } else {\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var newEdge0 = createEdge.call(this, attributes);\n var edgeData = extractAllElementsData(newEdge0);\n var newEdge = graph0.append('g')\n .data([edgeData]);\n attributeElement.call(newEdge.node(), edgeData);\n _updateEdge.call(this, newEdge, x1, y1, x2, y2, attributes, options);\n }\n this._drawnEdge = {\n g: newEdge,\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n attributes: attributes,\n };\n\n return this;\n}\n\nexport function updateDrawnEdge(x1, y1, x2, y2, attributes={}, options={}) {\n if (!this._drawnEdge) {\n throw Error('No edge has been drawn');\n }\n var edge = this._drawnEdge.g\n attributes = Object.assign(this._drawnEdge.attributes, attributes);\n this._drawnEdge.x1 = x1;\n this._drawnEdge.y1 = y1;\n this._drawnEdge.x2 = x2;\n this._drawnEdge.y2 = y2;\n if (edge.empty() && !(attributes.style && attributes.style.includes('invis'))) {\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var edge = graph0.append('g');\n this._drawnEdge.g = edge;\n }\n if (!edge.empty()) {\n _updateEdge.call(this, edge, x1, y1, x2, y2, attributes, options);\n }\n\n return this;\n}\n\nfunction _updateEdge(edge, x1, y1, x2, y2, attributes, options) {\n\n var newEdge = createEdge.call(this, attributes);\n var edgeData = extractAllElementsData(newEdge);\n edge.data([edgeData]);\n attributeElement.call(edge.node(), edgeData);\n _moveEdge(edge, x1, y1, x2, y2, attributes, options);\n}\n\nfunction _moveEdge(edge, x1, y1, x2, y2, attributes, options) {\n\n var shortening = options.shortening || 0;\n var arrowHeadLength = 10;\n var arrowHeadWidth = 7;\n var margin = 0.1;\n\n var arrowHeadPoints = [\n [0, -arrowHeadWidth / 2],\n [arrowHeadLength, 0],\n [0, arrowHeadWidth / 2],\n [0, -arrowHeadWidth / 2],\n ];\n\n var dx = x2 - x1;\n var dy = y2 - y1;\n var length = Math.sqrt(dx * dx + dy * dy);\n if (length == 0) {\n var cosA = 1;\n var sinA = 0;\n } else {\n var cosA = dx / length;\n var sinA = dy / length;\n }\n x2 = x1 + (length - shortening - arrowHeadLength - margin) * cosA;\n y2 = y1 + (length - shortening - arrowHeadLength - margin) * sinA;\n\n if (attributes.URL || attributes.tooltip) {\n var a = edge.selectWithoutDataPropagation(\"g\").selectWithoutDataPropagation(\"a\");\n var line = a.selectWithoutDataPropagation(\"path\");\n var arrowHead = a.selectWithoutDataPropagation(\"polygon\");\n } else {\n var line = edge.selectWithoutDataPropagation(\"path\");\n var arrowHead = edge.selectWithoutDataPropagation(\"polygon\");\n }\n\n var path1 = d3_path();\n path1.moveTo(x1, y1);\n path1.lineTo(x2, y2);\n\n line\n .attr(\"d\", path1);\n\n x2 = x1 + (length - shortening - arrowHeadLength) * cosA;\n y2 = y1 + (length - shortening - arrowHeadLength) * sinA;\n for (var i = 0; i < arrowHeadPoints.length; i++) {\n var point = arrowHeadPoints[i];\n arrowHeadPoints[i] = rotate(point[0], point[1], cosA, sinA);\n }\n for (var i = 0; i < arrowHeadPoints.length; i++) {\n var point = arrowHeadPoints[i];\n arrowHeadPoints[i] = [x2 + point[0], y2 + point[1]];\n }\n var allPoints = [];\n for (var i = 0; i < arrowHeadPoints.length; i++) {\n var point = arrowHeadPoints[i];\n allPoints.push(point.join(','));\n }\n var pointsAttr = allPoints.join(' ');\n\n arrowHead\n .attr(\"points\", pointsAttr);\n\n return this;\n}\n\nexport function moveDrawnEdgeEndPoint(x2, y2, options={}) {\n\n if (!this._drawnEdge) {\n throw Error('No edge has been drawn');\n }\n var edge = this._drawnEdge.g;\n var x1 = this._drawnEdge.x1;\n var y1 = this._drawnEdge.y1;\n var attributes = this._drawnEdge.attributes;\n\n this._drawnEdge.x2 = x2;\n this._drawnEdge.y2 = y2;\n _moveEdge(edge, x1, y1, x2, y2, attributes, options);\n\n return this\n}\n\nexport function removeDrawnEdge() {\n\n if (!this._drawnEdge) {\n return this;\n }\n\n var edge = this._drawnEdge.g;\n\n edge.remove();\n\n this._drawnEdge = null;\n\n return this\n}\n\nexport function insertDrawnEdge(name) {\n\n if (!this._drawnEdge) {\n throw Error('No edge has been drawn');\n }\n\n var edge = this._drawnEdge.g;\n if (edge.empty()) {\n return this;\n }\n var attributes = this._drawnEdge.attributes;\n\n var title = edge.selectWithoutDataPropagation(\"title\");\n title\n .text(name);\n\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var graph0Datum = graph0.datum();\n var edgeData = this._extractData(edge, graph0Datum.children.length, graph0.datum());\n graph0Datum.children.push(edgeData);\n\n insertAllElementsData(edge, edgeData);\n\n this._drawnEdge = null;\n\n return this\n\n}\n\nexport function drawnEdgeSelection() {\n\n if (this._drawnEdge) {\n return this._drawnEdge.g;\n } else {\n return d3.select(null);\n }\n\n}\n\n\nfunction createEdge(attributes) {\n var attributesString = ''\n for (var name of Object.keys(attributes)) {\n if (attributes[name] != null) {\n attributesString += ' \"' + name + '\"=\"' + attributes[name] + '\"';\n }\n }\n var dotSrc = 'digraph {a -> b [' + attributesString + ']}';\n var svgDoc = this.layoutSync(dotSrc, 'svg', 'dot');\n var parser = new window.DOMParser();\n var doc = parser.parseFromString(svgDoc, \"image/svg+xml\");\n var newDoc = d3.select(document.createDocumentFragment())\n .append(function() {\n return doc.documentElement;\n });\n var edge = newDoc.select('.edge');\n\n return edge;\n}\n","import * as d3 from \"d3-selection\";\nimport {rotate} from \"./geometry\";\nimport {extractAllElementsData} from \"./element\";\nimport {translatePointsAttribute} from \"./svg\";\nimport {translateDAttribute} from \"./svg\";\nimport {insertAllElementsData} from \"./element\";\nimport {attributeElement} from \"./element\";\nimport {roundTo2Decimals} from \"./utils\";\n\nexport function drawNode(x, y, nodeId, attributes={}, options={}) {\n attributes = Object.assign({}, attributes);\n if (attributes.style && attributes.style.includes('invis')) {\n var newNode = d3.select(null);\n } else {\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var newNode0 = createNode.call(this, nodeId, attributes);\n var nodeData = extractAllElementsData(newNode0);\n var newNode = graph0.append('g')\n .data([nodeData]);\n attributeElement.call(newNode.node(), nodeData);\n _updateNode.call(this, newNode, x, y, nodeId, attributes, options);\n }\n this._drawnNode = {\n g: newNode,\n nodeId: nodeId,\n x: x,\n y: y,\n attributes: attributes,\n };\n\n return this;\n}\n\nexport function updateDrawnNode(x, y, nodeId, attributes={}, options={}) {\n if (!this._drawnNode) {\n throw Error('No node has been drawn');\n }\n\n var node = this._drawnNode.g\n if (nodeId == null) {\n nodeId = this._drawnNode.nodeId;\n }\n attributes = Object.assign(this._drawnNode.attributes, attributes);\n this._drawnNode.nodeId = nodeId;\n this._drawnNode.x = x;\n this._drawnNode.y = y;\n if (node.empty() && !(attributes.style && attributes.style.includes('invis'))) {\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var node = graph0.append('g');\n this._drawnNode.g = node;\n }\n if (!node.empty()) {\n _updateNode.call(this, node, x, y, nodeId, attributes, options);\n }\n\n return this;\n}\n\nfunction _updateNode(node, x, y, nodeId, attributes, options) {\n\n var newNode = createNode.call(this, nodeId, attributes);\n var nodeData = extractAllElementsData(newNode);\n node.data([nodeData]);\n attributeElement.call(node.node(), nodeData);\n _moveNode(node, x, y, attributes, options);\n\n return this;\n}\n\nfunction _moveNode(node, x, y, attributes, options) {\n if (attributes.URL || attributes.tooltip) {\n var subParent = node.selectWithoutDataPropagation(\"g\").selectWithoutDataPropagation(\"a\");\n } else {\n var subParent = node;\n }\n var svgElements = subParent.selectAll('ellipse,polygon,path,polyline');\n var text = node.selectWithoutDataPropagation(\"text\");\n\n if (svgElements.size() != 0) {\n var bbox = svgElements.node().getBBox();\n bbox.cx = bbox.x + bbox.width / 2;\n bbox.cy = bbox.y + bbox.height / 2;\n } else if (text.size() != 0) {\n bbox = {\n x: +text.attr('x'),\n y: +text.attr('y'),\n width: 0,\n height: 0,\n cx: +text.attr('x'),\n cy: +text.attr('y'),\n }\n }\n svgElements.each(function(data, index) {\n var svgElement = d3.select(this);\n if (svgElement.attr(\"cx\")) {\n svgElement\n .attr(\"cx\", roundTo2Decimals(x))\n .attr(\"cy\", roundTo2Decimals(y));\n } else if (svgElement.attr(\"points\")) {\n var pointsString = svgElement.attr('points').trim();\n svgElement\n .attr(\"points\", translatePointsAttribute(pointsString, x - bbox.cx, y - bbox.cy));\n } else {\n var d = svgElement.attr('d');\n svgElement\n .attr(\"d\", translateDAttribute(d, x - bbox.cx, y - bbox.cy));\n }\n });\n\n if (text.size() != 0) {\n text\n .attr(\"x\", roundTo2Decimals(+text.attr(\"x\") + x - bbox.cx))\n .attr(\"y\", roundTo2Decimals(+text.attr(\"y\") + y - bbox.cy));\n }\n return this;\n}\n\nexport function moveDrawnNode(x, y, options={}) {\n\n if (!this._drawnNode) {\n throw Error('No node has been drawn');\n }\n var node = this._drawnNode.g;\n var attributes = this._drawnNode.attributes;\n\n this._drawnNode.x = x;\n this._drawnNode.y = y;\n\n if (!node.empty()) {\n _moveNode(node, x, y, attributes, options);\n }\n\n return this\n}\n\nexport function removeDrawnNode() {\n\n if (!this._drawnNode) {\n return this;\n }\n\n var node = this._drawnNode.g;\n\n if (!node.empty()) {\n node.remove();\n }\n\n this._drawnNode = null;\n\n return this\n}\n\nexport function insertDrawnNode(nodeId) {\n\n if (!this._drawnNode) {\n throw Error('No node has been drawn');\n }\n\n if (nodeId == null) {\n nodeId = this._drawnNode.nodeId;\n }\n var node = this._drawnNode.g;\n if (node.empty()) {\n return this;\n }\n var attributes = this._drawnNode.attributes;\n\n var title = node.selectWithoutDataPropagation(\"title\");\n title\n .text(nodeId);\n if (attributes.URL || attributes.tooltip) {\n var ga = node.selectWithoutDataPropagation(\"g\");\n var a = ga.selectWithoutDataPropagation(\"a\");\n var svgElement = a.selectWithoutDataPropagation('ellipse,polygon,path,polyline');\n var text = a.selectWithoutDataPropagation('text');\n } else {\n var svgElement = node.selectWithoutDataPropagation('ellipse,polygon,path,polyline');\n var text = node.selectWithoutDataPropagation('text');\n }\n text\n .text(attributes.label || nodeId);\n\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var graph0Datum = graph0.datum();\n var nodeData = this._extractData(node, graph0Datum.children.length, graph0.datum());\n graph0Datum.children.push(nodeData);\n\n insertAllElementsData(node, nodeData);\n\n this._drawnNode = null;\n\n return this\n\n}\n\nexport function drawnNodeSelection() {\n\n if (this._drawnNode) {\n return this._drawnNode.g;\n } else {\n return d3.select(null);\n }\n\n}\n\nfunction createNode(nodeId, attributes) {\n var attributesString = ''\n for (var name of Object.keys(attributes)) {\n if (attributes[name] != null) {\n attributesString += ' \"' + name + '\"=\"' + attributes[name] + '\"';\n }\n }\n var dotSrc = 'graph {\"' + nodeId + '\" [' + attributesString + ']}';\n var svgDoc = this.layoutSync(dotSrc, 'svg', 'dot');\n var parser = new window.DOMParser();\n var doc = parser.parseFromString(svgDoc, \"image/svg+xml\");\n var newDoc = d3.select(document.createDocumentFragment())\n .append(function() {\n return doc.documentElement;\n });\n var node = newDoc.select('.node');\n\n return node;\n}\n","/* This file is excluded from coverage because the intrumented code\n * translates \"self\" which gives a reference error.\n */\n\n/* istanbul ignore next */\n\nexport function workerCodeBody(port) {\n\n self.document = {}; // Workaround for \"ReferenceError: document is not defined\" in hpccWasm\n\n port.addEventListener('message', function(event) {\n let hpccWasm = self[\"@hpcc-js/wasm\"];\n if (hpccWasm == undefined && event.data.vizURL) {\n importScripts(event.data.vizURL);\n hpccWasm = self[\"@hpcc-js/wasm\"];\n hpccWasm.wasmFolder(event.data.vizURL.match(/.*\\//)[0]);\n // This is an alternative workaround where wasmFolder() is not needed\n// document = {currentScript: {src: event.data.vizURL}};\n }\n hpccWasm.graphviz.layout(event.data.dot, \"svg\", event.data.engine, event.data.options).then((svg) => {\n if (svg) {\n port.postMessage({\n type: \"done\",\n svg: svg,\n });\n } else if (event.data.vizURL) {\n port.postMessage({\n type: \"init\",\n });\n } else {\n port.postMessage({\n type: \"skip\",\n });\n }\n }).catch(error => {\n port.postMessage({\n type: \"error\",\n error: error.message,\n });\n });\n });\n}\n\n/* istanbul ignore next */\n\nexport function workerCode() {\n\n const port = self;\n workerCodeBody(port);\n}\n\n/* istanbul ignore next */\n\nexport function sharedWorkerCode() {\n self.onconnect = function(e) {\n const port = e.ports[0];\n workerCodeBody(port);\n port.start();\n }\n}\n","import * as d3 from \"d3-selection\";\nimport {dispatch} from \"d3-dispatch\";\nimport render from \"./render\";\nimport {layout} from \"./dot\";\nimport dot from \"./dot\";\nimport data from \"./data\";\nimport {initViz} from \"./dot\";\nimport renderDot from \"./renderDot\";\nimport transition from \"./transition\";\nimport {active} from \"./transition\";\nimport options from \"./options\";\nimport width from \"./width\";\nimport height from \"./height\";\nimport scale from \"./scale\";\nimport fit from \"./fit\";\nimport attributer from \"./attributer\";\nimport engine from \"./engine\";\nimport images from \"./images\";\nimport keyMode from \"./keyMode\";\nimport fade from \"./fade\";\nimport tweenPaths from \"./tweenPaths\";\nimport tweenShapes from \"./tweenShapes\";\nimport convertEqualSidedPolygons from \"./convertEqualSidedPolygons\";\nimport tweenPrecision from \"./tweenPrecision\";\nimport growEnteringEdges from \"./growEnteringEdges\";\nimport zoom from \"./zoom\";\nimport {resetZoom} from \"./zoom\";\nimport {zoomBehavior} from \"./zoom\";\nimport {zoomSelection} from \"./zoom\";\nimport {zoomScaleExtent} from \"./zoom\";\nimport {zoomTranslateExtent} from \"./zoom\";\nimport on from \"./on\";\nimport onerror from \"./onerror\";\nimport logEvents from \"./logEvents\";\nimport destroy from \"./destroy\";\nimport {drawEdge} from \"./drawEdge\";\nimport {updateDrawnEdge} from \"./drawEdge\";\nimport {moveDrawnEdgeEndPoint} from \"./drawEdge\";\nimport {insertDrawnEdge} from \"./drawEdge\";\nimport {removeDrawnEdge} from \"./drawEdge\";\nimport {drawnEdgeSelection} from \"./drawEdge\";\nimport {drawNode} from \"./drawNode\";\nimport {updateDrawnNode} from \"./drawNode\";\nimport {moveDrawnNode} from \"./drawNode\";\nimport {insertDrawnNode} from \"./drawNode\";\nimport {removeDrawnNode} from \"./drawNode\";\nimport {drawnNodeSelection} from \"./drawNode\";\nimport {workerCode} from \"./workerCode\";\nimport {sharedWorkerCode} from \"./workerCode\";\nimport {workerCodeBody} from \"./workerCode\";\n\nexport function Graphviz(selection, options) {\n this._options = {\n useWorker: true,\n useSharedWorker: false,\n engine: 'dot',\n keyMode: 'title',\n fade: true,\n tweenPaths: true,\n tweenShapes: true,\n convertEqualSidedPolygons: true,\n tweenPrecision: 1,\n growEnteringEdges: true,\n zoom: true,\n zoomScaleExtent: [0.1, 10],\n zoomTranslateExtent: [[-Infinity, -Infinity], [+Infinity, +Infinity]],\n width: null,\n height: null,\n scale: 1,\n fit: false,\n };\n if (options instanceof Object) {\n for (var option of Object.keys(options)) {\n this._options[option] = options[option];\n }\n } else if (typeof options == 'boolean') {\n this._options.useWorker = options;\n }\n var useWorker = this._options.useWorker;\n var useSharedWorker = this._options.useSharedWorker;\n if (typeof Worker == 'undefined') {\n useWorker = false;\n }\n if (typeof SharedWorker == 'undefined') {\n useSharedWorker = false;\n }\n if (useWorker || useSharedWorker) {\n var scripts = d3.selectAll('script');\n var vizScript = scripts.filter(function() {\n return d3.select(this).attr('type') == 'javascript/worker' || (d3.select(this).attr('src') && d3.select(this).attr('src').match(/.*\\/@hpcc-js\\/wasm/));\n });\n if (vizScript.size() == 0) {\n console.warn('No script tag of type \"javascript/worker\" was found and \"useWorker\" is true. Not using web worker.');\n useWorker = false;\n useSharedWorker = false;\n } else {\n this._vizURL = vizScript.attr('src');\n if (!this._vizURL) {\n console.warn('No \"src\" attribute of was found on the \"javascript/worker\" script tag and \"useWorker\" is true. Not using web worker.');\n useWorker = false;\n useSharedWorker = false;\n }\n }\n }\n if (useSharedWorker) {\n const url = 'data:application/javascript;base64,' + btoa(workerCodeBody.toString() + '(' + sharedWorkerCode.toString() + ')()');\n this._worker = this._worker = new SharedWorker(url);\n this._workerPort = this._worker.port;\n this._workerPortClose = this._worker.port.close.bind(this._workerPort);\n this._worker.port.start();\n this._workerCallbacks = [];\n }\n else if (useWorker) {\n var blob = new Blob([workerCodeBody.toString() + '(' + workerCode.toString() + ')()']);\n var blobURL = window.URL.createObjectURL(blob);\n this._worker = new Worker(blobURL);\n this._workerPort = this._worker;\n this._workerPortClose = this._worker.terminate.bind(this._worker);\n this._workerCallbacks = [];\n }\n this._selection = selection;\n this._active = false;\n this._busy = false;\n this._jobs = [];\n this._queue = [];\n this._keyModes = new Set([\n 'title',\n 'id',\n 'tag-index',\n 'index'\n ]);\n this._images = [];\n this._translation = undefined;\n this._scale = undefined;\n this._eventTypes = [\n 'initEnd',\n 'start',\n 'layoutStart',\n 'layoutEnd',\n 'dataExtractEnd',\n 'dataProcessPass1End',\n 'dataProcessPass2End',\n 'dataProcessEnd',\n 'renderStart',\n 'renderEnd',\n 'transitionStart',\n 'transitionEnd',\n 'restoreEnd',\n 'end'\n ];\n this._dispatch = dispatch(...this._eventTypes);\n initViz.call(this);\n selection.node().__graphviz__ = this;\n}\n\nexport default function graphviz(selector, options) {\n var g = d3.select(selector).graphviz(options);\n return g;\n}\n\nGraphviz.prototype = graphviz.prototype = {\n constructor: Graphviz,\n engine: engine,\n addImage: images,\n keyMode: keyMode,\n fade: fade,\n tweenPaths: tweenPaths,\n tweenShapes: tweenShapes,\n convertEqualSidedPolygons: convertEqualSidedPolygons,\n tweenPrecision: tweenPrecision,\n growEnteringEdges: growEnteringEdges,\n zoom: zoom,\n resetZoom: resetZoom,\n zoomBehavior: zoomBehavior,\n zoomSelection: zoomSelection,\n zoomScaleExtent: zoomScaleExtent,\n zoomTranslateExtent: zoomTranslateExtent,\n render: render,\n layout: layout,\n dot: dot,\n data: data,\n renderDot: renderDot,\n transition: transition,\n active: active,\n options: options,\n width: width,\n height: height,\n scale: scale,\n fit: fit,\n attributer: attributer,\n on: on,\n onerror: onerror,\n logEvents: logEvents,\n destroy: destroy,\n drawEdge: drawEdge,\n updateDrawnEdge: updateDrawnEdge,\n moveDrawnEdgeEndPoint,\n insertDrawnEdge,\n removeDrawnEdge, removeDrawnEdge,\n drawnEdgeSelection, drawnEdgeSelection,\n drawNode: drawNode,\n updateDrawnNode: updateDrawnNode,\n moveDrawnNode: moveDrawnNode,\n insertDrawnNode,\n removeDrawnNode, removeDrawnNode,\n drawnNodeSelection, drawnNodeSelection,\n};\n","import {Graphviz} from \"../graphviz\";\nimport {timeout} from \"d3-timer\";\n\nexport default function(options) {\n\n var g = this.node().__graphviz__;\n if (g) {\n g.options(options);\n // Ensure a possible new initEnd event handler is attached before calling it\n timeout(function () {\n g._dispatch.call(\"initEnd\", this);\n }.bind(this), 0);\n } else {\n g = new Graphviz(this, options);\n }\n return g;\n}\n","import * as d3 from \"d3-selection\";\n\nexport default function(name) {\n\n return d3.select(this.size() > 0 ? this.node().querySelector(name) : null);\n}\n","import {selection} from \"d3-selection\";\nimport selection_graphviz from \"./graphviz\";\nimport selection_selectWithoutDataPropagation from \"./selectWithoutDataPropagation\";\n\nselection.prototype.graphviz = selection_graphviz;\nselection.prototype.selectWithoutDataPropagation = selection_selectWithoutDataPropagation;\n"],"names":["d3","zoom","interpolate","zoomTransform","zoomIdentity","timeout","transition","interpolateTransformSvg","graphviz","graphvizSync","d3_active","format","d3_path","dispatch","selection"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEO,SAAS,kBAAkB,CAAC,OAAO,EAAE;AAC5C;IACA,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;IACnB,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC;IACtC,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IACpB,IAAI,IAAI,GAAG,IAAI,OAAO,EAAE;IACxB,QAAQ,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE;IAClC,QAAQ,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACvC,KAAK;IACL,IAAI,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;IAC1B,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC;IAC/C,IAAI,IAAI,UAAU,EAAE;IACpB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACpD,YAAY,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1C,YAAY,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IACtC,YAAY,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IACxC,YAAY,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC3C,SAAS;IACT,KAAK;IACL,IAAI,IAAI,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC;IAC7C,IAAI,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,EAAE;IAC3D,QAAQ,IAAI,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;IAC5D,QAAQ,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACvD,QAAQ,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;IAC/B,KAAK;IACL,IAAI,IAAI,GAAG,IAAI,SAAS,EAAE;IAC1B,QAAQ,KAAK,CAAC,MAAM,GAAG;IACvB,YAAY,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;IAClC,YAAY,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;IAClC,SAAS,CAAC;IACV,KAAK;IACL,IAAI,IAAI,GAAG,IAAI,SAAS,EAAE;IAC1B,QAAQ,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,QAAQ,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,QAAQ,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,QAAQ,IAAI,IAAI,GAAG;IACnB,YAAY,CAAC,EAAE,IAAI;IACnB,YAAY,CAAC,EAAE,IAAI;IACnB,YAAY,KAAK,EAAE,IAAI,GAAG,IAAI;IAC9B,YAAY,MAAM,EAAE,IAAI,GAAG,IAAI;IAC/B,SAAS,CAAC;IACV,QAAQ,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,QAAQ,KAAK,CAAC,MAAM,GAAG;IACvB,YAAY,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC;IAChC,SAAS,CAAC;IACV,KAAK;IACL,IAAI,IAAI,GAAG,IAAI,MAAM,EAAE;IACvB,QAAQ,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvC,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,QAAQ,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,QAAQ,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,QAAQ,IAAI,IAAI,GAAG;IACnB,YAAY,CAAC,EAAE,IAAI;IACnB,YAAY,CAAC,EAAE,IAAI;IACnB,YAAY,KAAK,EAAE,IAAI,GAAG,IAAI;IAC9B,YAAY,MAAM,EAAE,IAAI,GAAG,IAAI;IAC/B,SAAS,CAAC;IACV,QAAQ,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,QAAQ,KAAK,CAAC,MAAM,GAAG;IACvB,YAAY,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC;IAChC,SAAS,CAAC;IACV,QAAQ,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,cAAc,EAAE,CAAC;IAC5D,KAAK;IACL,IAAI,IAAI,GAAG,IAAI,MAAM,EAAE;IACvB,QAAQ,KAAK,CAAC,MAAM,GAAG;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAChC,SAAS,CAAC;IACV,KAAK;IACL,IAAI,IAAI,GAAG,IAAI,OAAO,EAAE;IACxB,QAAQ,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE;IAClC,QAAQ,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACvC,KAAK;IACL,IAAI,OAAO,KAAK;IAChB,CAAC;AACD;IACO,SAAS,sBAAsB,CAAC,OAAO,EAAE;AAChD;IACA,IAAI,IAAI,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;IACxB,IAAI,IAAI,QAAQ,GAAGA,aAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY;IAC9B,QAAQ,IAAI,SAAS,GAAG,sBAAsB,CAACA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,QAAQ,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;IACjC,QAAQ,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,KAAK,CAAC,CAAC;IACP,IAAI,OAAO,KAAK,CAAC;IACjB,CAAC;AACD;IACO,SAAS,aAAa,CAAC,IAAI,EAAE;AACpC;IACA,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,OAAO,EAAE;IAC7B,QAAQ,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,UAAU,EAAE;IACvC,QAAQ,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,KAAK,MAAM;IACX,QAAQ,OAAO,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAChF,KAAK;IACL,CAAC;AACD;IACO,SAAS,2BAA2B,CAAC,IAAI,EAAE;AAClD;IACA,IAAI,IAAI,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,IAAI,OAAO,GAAGA,aAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACrC,IAAI,KAAK,IAAI,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IACvD,QAAQ,IAAI,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IACvD,QAAQ,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACpD,KAAK;IACL,IAAI,OAAO,WAAW,CAAC;IACvB,CAAC;AACD;IACO,SAAS,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE;IAC9C,IAAI,IAAI,MAAM,GAAGA,aAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,IAAI,cAAc,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY;IAC/C,QAAQ,OAAO,cAAc,CAAC;IAC9B,KAAK,EAAE,YAAY;IACnB,QAAQ,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9B,KAAK,CAAC,CAAC;IACP,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IACrB,IAAI,OAAO,UAAU,CAAC;IACtB,CAAC;AACD;IACO,SAAS,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE;IAClD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,EAAE;IACvC,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC;IACrB,KAAK,CAAC,CAAC;IACP,CAAC;AACD;IACO,SAAS,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE;IACtD,IAAI,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtC,IAAI,IAAI,QAAQ,GAAGA,aAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;IAClC,QAAQ,qBAAqB,CAACA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,KAAK,CAAC,CAAC;IACP,CAAC;AACD;IACA,SAAS,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE;IACxC,IAAI,IAAI,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY;IACjD,QAAQ,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC;IACzC,KAAK,CAAC,CAAC;AACP;IACA,IAAI,QAAQ,GAAG,QAAQ;IACvB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE;IACzB,UAAU,OAAO,CAAC,CAAC,QAAQ,CAAC;IAC5B,OAAO,EAAE,UAAU,CAAC,EAAE;IACtB,QAAQ,OAAO,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;IACnC,OAAO,CAAC,CAAC;IACT,IAAI,IAAI,aAAa,GAAG,QAAQ;IAChC,OAAO,KAAK,EAAE;IACd,OAAO,MAAM,CAAC,SAAS,CAAC,EAAE;IAC1B,UAAU,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,CAAC,CAAC;AACT;IACA,IAAI,IAAI,YAAY,GAAG,QAAQ;IAC/B,OAAO,IAAI,EAAE,CAAC;IACd,IAAI,YAAY,GAAG,YAAY;IAC/B,SAAS,MAAM,GAAE;IACjB,IAAI,QAAQ,GAAG,aAAa;IAC5B,SAAS,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzB,IAAI,IAAI,eAAe,GAAG,EAAE,CAAC;IAC7B,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,SAAS,EAAE;IACtC,QAAQ,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC;IACrC,QAAQ,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;IAC/C,UAAU,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxC,SAAS;IACT,QAAQ,IAAI,UAAU,GAAG,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrD,QAAQ,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC3D,KAAK,CAAC,CAAC;IACP,CAAC;AACD;IACO,SAAS,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;IAChD,IAAI,IAAI,OAAO,GAAGA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,IAAc,IAAI,CAAC,IAAI;IACvB,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACrC,IAAI,IAAI,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC;IACtD,IAAI,IAAI,iBAAiB,EAAE;IAC3B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC3D,YAAY,IAAI,gBAAgB,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACxD,YAAY,IAAI,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC;IAC7C,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI,gBAAgB,CAAC,YAAY,EAAE;IAChF,gBAAgB,IAAI,iBAAiB,GAAG,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjF,gBAAgB,IAAI,SAAS,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChF,gBAAgB,IAAI,GAAG,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;IAC9C,aAAa;IACb,YAAY,IAAI,EAAE,IAAI,IAAI,UAAU,CAAC,EAAE;IACvC,gBAAgB,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxC,aAAa;IACb,SAAS;IACT,KAAK;IACL,IAAI,KAAK,IAAI,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IACvD,QAAQ,OAAO;IACf,aAAa,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5D,KAAK;IACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;IACnB,QAAQ,OAAO;IACf,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,KAAK;IACL,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnC;;ICxNO,SAAS,iBAAiB,CAAC,GAAG,EAAE;IACvC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;AACD;IACO,SAAS,gBAAgB,CAAC,CAAC,EAAE;IACpC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK;IACxC;;ICFe,aAAQ,CAAC,MAAM,EAAE;AAChC;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC;AAChC;IACA,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IACnD,QAAQ,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;IAC1D,QAAQ,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9C,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAClC,KAAK;AACL;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;AACD;IACO,SAAS,kBAAkB,GAAG;AACrC;IACA,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE;IAC3B,QAAQ,IAAI,CAAC,GAAGA,aAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7C,KAAK;AACL;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;IAC/B,IAAI,IAAI,GAAG,GAAGA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;IACzB,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;IACL,IAAI,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;IAC9B,IAAI,IAAI,YAAY,GAAGC,WAAI,EAAE;IAC7B,SAAS,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;IACnD,SAAS,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC3D,SAAS,WAAW,CAACC,yBAAW,CAAC;IACjC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAI,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACtC,IAAI,IAAI,CAAC,GAAGF,aAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IACvB,QAAQ,8BAA8B,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrD,KAAK;IACL,IAAI,IAAI,CAAC,kBAAkB,GAAGG,oBAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACxD;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CACA;IACO,SAAS,0BAA0B,CAAC,SAAS,EAAE;AACtD;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC;IAC3C,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;IAC/B,IAAI,IAAI,cAAc,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC;IACvD,IAAI,IAAI,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;IAC3C,IAAI,IAAI,CAAC,GAAGA,oBAAa,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,IAAI,IAAI,cAAc,EAAE;IACxB,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAC9D,KAAK;IACL,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1B,IAAI,OAAO,CAAC,CAAC;IACb,CAAC;AACD;IACO,SAAS,8BAA8B,CAAC,SAAS,EAAE;AAC1D;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACxG;IACA;IACA,IAAI,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC;IACtD,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;AAC1C;IACA;IACA;IACA,IAAI,IAAI,CAAC,kBAAkB,GAAGC,mBAAY,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;IACtJ,CAAC;AACD;IACO,SAAS,SAAS,CAAC,UAAU,EAAE;AACtC;IACA;IACA,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;IACxC,IAAI,IAAI,UAAU,EAAE;IACpB,QAAQ,SAAS,GAAG,SAAS;IAC7B,aAAa,UAAU,CAAC,UAAU,CAAC,CAAC;IACpC,KAAK;IACL,IAAI,SAAS;IACb,SAAS,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACrE;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;AACD;IACO,SAAS,eAAe,CAAC,MAAM,EAAE;AACxC;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,MAAM,CAAC;AAC3C;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;AACD;IACO,SAAS,mBAAmB,CAAC,MAAM,EAAE;AAC5C;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,GAAG,MAAM,CAAC;AAC/C;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;AACD;IACO,SAAS,YAAY,GAAG;IAC/B,EAAE,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC;IACpC,CAAC;AACD;IACO,SAAS,aAAa,GAAG;IAChC,EAAE,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC;IACrC;;ICtHO,SAAS,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE;IACtC,IAAI,OAAO,WAAW;IACtB,QAAQ,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;IAC1D,YAAY,OAAOF,yBAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,SAAS,CAAC,CAAC;IACX,QAAQ,OAAO,SAAS,CAAC,EAAE;IAC3B,YAAY,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACrG,SAAS,CAAC;IACV,KAAK,CAAC;IACN,CAAC;AACD;IACO,SAAS,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE;IAC1E,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC;IACvB,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IACpC,IAAI,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IACtC,IAAI,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;AACrE;IACA;IACA,IAAI,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,EAAE,GAAG,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9E,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;IAC1B,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,KAAK;IACL,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB;IACA;IACA,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;IAC7C,QAAQ,MAAM,EAAE,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAClD,QAAQ,MAAM,EAAE,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAClD,QAAQ,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;IAC9C,KAAK,CAAC,CAAC;IACP,IAAI,OAAO,MAAM,CAAC;IAClB;;ICnCe,aAAQ,GAAG;IAC1B,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;IAC9B,CAAC;AACD;IACO,SAAS,mBAAmB,CAAC,KAAK,EAAE;IAC3C,IAAI,QAAQ,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,MAAM;IAC5C,QAAQ,KAAK,CAAC,GAAG,IAAI,GAAG;IACxB,YAAY,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG;IACnC,YAAY,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,MAAM;IAC1D,KAAK,EAAE;IACP,CAAC;AACD;IACO,SAAS,aAAa,CAAC,KAAK,EAAE;IACrC,IAAI,OAAO,KAAK,CAAC,MAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;AACD;IACO,SAAS,YAAY,CAAC,KAAK,EAAE;IACpC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,MAAM,EAAE;IACjD,QAAQ,OAAO,KAAK,CAAC,MAAM,CAAC;IAC5B,KAAK,MAAM;IACX,QAAQ,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1C,KAAK;IACL,CAAC;AACD;IACO,SAAS,YAAY,CAAC,KAAK,EAAE;IACpC,IAAI,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IAC1D,QAAQ,OAAO,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC;IAChC,KAAK,CAAC,CAAC;IACP;;IChBe,eAAQ,CAAC,QAAQ,EAAE;AAClC;IACA,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;IACpB,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3D,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;IACL,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAC7C;IACA,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;IACjC,QAAQG,eAAO,CAAC,YAAY;IAC5B,YAAY,IAAI,CAAC,WAAW,GAAGC,uBAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACrE,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,KAAK,MAAM;IACX,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,KAAK;IACL,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;AACD;IACA,SAAS,OAAO,CAAC,QAAQ,EAAE;AAC3B;IACA,IAAI,IAAI,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC;IAC9C,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,kBAAkB,IAAI,IAAI,CAAC;IAChE,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC9C,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IAChD,IAAI,IAAI,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC5E,IAAI,IAAI,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,IAAI,kBAAkB,IAAI,IAAI,CAAC;IAC1F,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;IACtC,IAAI,IAAI,gBAAgB,GAAG,IAAI,CAAC;AAChC;IACA,IAAI,SAAS,cAAc,CAAC,OAAO,EAAE;IACrC,QAAQ,IAAI,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY;IACrD,YAAY,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC;IAC7C,SAAS,CAAC,CAAC;AACX;IACA,QAAQ,QAAQ,GAAG,QAAQ;IAC3B,WAAW,IAAI,CAAC,UAAU,CAAC,EAAE;IAC7B,cAAc,OAAO,CAAC,CAAC,QAAQ,CAAC;IAChC,WAAW,EAAE,UAAU,CAAC,EAAE;IAC1B,cAAc,OAAO,CAAC,CAAC,GAAG,CAAC;IAC3B,WAAW,CAAC,CAAC;IACb,QAAQ,IAAI,aAAa,GAAG,QAAQ;IACpC,WAAW,KAAK,EAAE;IAClB,WAAW,MAAM,CAAC,SAAS,CAAC,EAAE;IAC9B,cAAc,IAAI,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC7C,cAAc,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,IAAI,IAAI,EAAE;IAC5C,kBAAkB,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC;IAC7C,eAAe;IACf,cAAc,OAAO,OAAO,CAAC;IAC7B,WAAW,CAAC,CAAC;AACb;IACA,QAAQ,IAAI,IAAI,KAAK,iBAAiB,IAAI,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;IACjF,YAAY,IAAI,kBAAkB,GAAG,aAAa;IAClD,iBAAiB,MAAM,CAAC,SAAS,CAAC,EAAE;IACpC,oBAAoB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;IACzD,iBAAiB,CAAC;IAClB,iBAAiB,IAAI,CAAC,UAAU,CAAC,EAAE;IACnC,oBAAoB,IAAI,UAAU,GAAGN,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrD,oBAAoB,KAAK,IAAI,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;IACzE,wBAAwB,IAAI,cAAc,GAAG,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACzE,wBAAwB,UAAU;IAClC,6BAA6B,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACjE,qBAAqB;IACrB,iBAAiB,CAAC,CAAC;IACnB,YAAY,kBAAkB;IAC9B,eAAe,MAAM,CAAC,SAAS,CAAC,EAAE;IAClC,oBAAoB,OAAO,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;IACxE,eAAe,CAAC;IAChB,iBAAiB,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACvC,SAAS;IACT,QAAQ,IAAI,YAAY,GAAG,QAAQ;IACnC,WAAW,IAAI,EAAE,CAAC;IAClB,QAAQ,IAAI,UAAU,EAAE;IACxB,YAAY,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,SAAS;IACT,QAAQ,IAAI,kBAAkB,EAAE;IAChC,YAAY,YAAY,GAAG,YAAY;IACvC,iBAAiB,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAChD,YAAY,IAAI,IAAI,EAAE;IACtB,gBAAgB,YAAY;IAC5B,mBAAmB,MAAM,CAAC,SAAS,CAAC,EAAE;IACtC,sBAAsB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3D,mBAAmB,CAAC;IACpB,qBAAqB,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC3C,aAAa;IACb,SAAS;IACT,QAAQ,YAAY,GAAG,YAAY;IACnC,aAAa,MAAM,GAAE;IACrB,QAAQ,QAAQ,GAAG,aAAa;IAChC,aAAa,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7B,QAAQ,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACxC,KAAK;AACL;IACA,IAAI,SAAS,gBAAgB,CAAC,IAAI,EAAE;IACpC,QAAQ,IAAI,OAAO,GAAGA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,QAAQ,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE;IAC/B,YAAY,IAAI,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC;IACpD,YAAY,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;IACjE,gBAAgB,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC1C,gBAAgB,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC5C,gBAAgB,IAAI,KAAK,IAAI,IAAI,EAAE;IACnC,oBAAoB,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5E,iBAAiB,MAAM;IACvB,oBAAoB,OAAO;IAC3B,yBAAyB,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9C,oBAAoB,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;IAClD,iBAAiB;IACjB,gBAAgB,IAAI,MAAM,IAAI,IAAI,EAAE;IACpC,oBAAoB,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9E,iBAAiB,MAAM;IACvB,oBAAoB,OAAO;IAC3B,yBAAyB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChD,oBAAoB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;IACpD,iBAAiB;IACjB,gBAAgB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IAClC,oBAAoB,OAAO;IAC3B,yBAAyB,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnH,oBAAoB,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACvH,iBAAiB;IACjB,aAAa;IACb,YAAY,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,EAAE;IAC1G,gBAAgB,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,gBAAgB,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,gBAAgB,OAAO;IACvB,qBAAqB,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/F,gBAAgB,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACnG,aAAa;IACb,SAAS;IACT,QAAQ,IAAI,UAAU,EAAE;IACxB,YAAY,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,SAAS;IACT,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IAC3B,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACzC,QAAQ,IAAI,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC;IAC1D,QAAQ,IAAI,iBAAiB,EAAE;IAC/B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC/D,gBAAgB,IAAI,gBAAgB,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC5D,gBAAgB,IAAI,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC;IACjD,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI,gBAAgB,CAAC,YAAY,EAAE;IACpF,oBAAoB,IAAI,iBAAiB,GAAG,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrF,oBAAoB,IAAI,SAAS,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpF,oBAAoB,IAAI,GAAG,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;IAClD,iBAAiB;IACjB,gBAAgB,IAAI,EAAE,IAAI,IAAI,UAAU,CAAC,EAAE;IAC3C,oBAAoB,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5C,iBAAiB;IACjB,aAAa;IACb,SAAS;IACT,QAAQ,IAAI,YAAY,GAAG,KAAK,CAAC;IACjC,QAAQ,IAAI,gBAAgB,GAAG,KAAK,CAAC;IACrC,QAAQ,IAAI,WAAW,IAAI,kBAAkB,EAAE;IAC/C,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,EAAE;IACnG,gBAAgB,gBAAgB,GAAG,IAAI,CAAC;IACxC,aAAa;IACb,YAAY,IAAI,CAAC,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,EAAE;IAC/E,gBAAgB,YAAY,GAAG,IAAI,CAAC;IACpC,aAAa;IACb,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE;IACvF,gBAAgB,IAAI,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3D,gBAAgB,IAAI,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;IAC5D,gBAAgB,IAAI,CAAC,yBAAyB,EAAE;IAChD,oBAAoB,IAAI,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnE,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACxD,oBAAoB,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3D,oBAAoB,IAAI,OAAO,IAAI,WAAW,EAAE;IAChD,wBAAwB,YAAY,GAAG,KAAK,CAAC;IAC7C,wBAAwB,gBAAgB,GAAG,KAAK,CAAC;IACjD,qBAAqB;IACrB,iBAAiB;IACjB,aAAa;IACb,YAAY,IAAI,gBAAgB,EAAE;IAClC,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;IACvD,gBAAgB,IAAI,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACxE,gBAAgB,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,YAAY;IACrD,oBAAoB,OAAO,IAAI,CAAC,GAAG,CAAC;IACpC,iBAAiB,CAAC,CAAC;IACnB,gBAAgB,OAAO,GAAG,WAAW,CAAC;IACtC,aAAa;IACb,YAAY,IAAI,YAAY,EAAE;IAC9B,gBAAgB,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;IACtD,gBAAgB,GAAG,GAAG,MAAM,CAAC;IAC7B,gBAAgB,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;IACpD,aAAa;IACb,SAAS;IACT,QAAQ,IAAI,iBAAiB,GAAG,OAAO,CAAC;IACxC,QAAQ,IAAI,kBAAkB,EAAE;IAChC,YAAY,iBAAiB,GAAG,iBAAiB;IACjD,iBAAiB,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAChD,YAAY,IAAI,IAAI,EAAE;IACtB,gBAAgB,iBAAiB;IACjC,mBAAmB,MAAM,CAAC,SAAS,CAAC,EAAE;IACtC,sBAAsB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3D,mBAAmB,CAAC;IACpB,qBAAqB,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC3C,aAAa;IACb,YAAY,iBAAiB;IAC7B,eAAe,MAAM,CAAC,SAAS,CAAC,EAAE;IAClC,kBAAkB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;IACvD,eAAe,CAAC;IAChB,iBAAiB,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;IACvC,oBAAoBA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC;IACnC,yBAAyB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IAC1F,iBAAiB,CAAC,CAAC;IACnB,SAAS;IACT,QAAQ,IAAI,YAAY,GAAG,iBAAiB,IAAI,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;IAC7E,QAAQ,IAAI,YAAY,EAAE;IAC1B,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAC/C,YAAY,OAAO;IACnB,iBAAiB,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,GAAG,GAAG,WAAW,CAAC;IAC1E,iBAAiB,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC;IACvD,iBAAiB,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7F,YAAY,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAChD,YAAY,UAAU,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAAC;IACvD,YAAY,iBAAiB;IAC7B,iBAAiB,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC3E,iBAAiB,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC3D,iBAAiB,EAAE,CAAC,OAAO,EAAE,WAAW;IACxC,oBAAoBA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC;IACnC,yBAAyB,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAChD,iBAAiB,CAAC;IAClB,iBAAiB,EAAE,CAAC,KAAK,EAAE,WAAW;IACtC,oBAAoBA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC;IACnC,yBAAyB,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC;IACxD,yBAAyB,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC;IACvD,yBAAyB,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACjD,iBAAiB,CAAC,CAAC;IACnB,SAAS;IACT,QAAQ,IAAI,eAAe,GAAG,iBAAiB,IAAI,GAAG,IAAI,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;IACnJ,QAAQ,IAAI,eAAe,EAAE;IAC7B,YAAY,IAAI,QAAQ,GAAGA,aAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IACtF,YAAY,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACzD,YAAY,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxE,YAAY,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IAC5E,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;IAC9E,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,YAAY,OAAO;IACnB,iBAAiB,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACrE,YAAY,iBAAiB;IAC7B,iBAAiB,SAAS,CAAC,WAAW,EAAE,YAAY;IACpD,oBAAoB,OAAO,UAAU,CAAC,EAAE;IACxC,wBAAwB,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IACvF,wBAAwB,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5F,wBAAwB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;IAChG,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,wBAAwB,OAAO,YAAY,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,WAAW,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;IAChH,qBAAqB;IACrB,iBAAiB,CAAC;IAClB,iBAAiB,EAAE,CAAC,OAAO,EAAE,WAAW;IACxC,oBAAoBA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC;IACnC,yBAAyB,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAChD,iBAAiB,CAAC;IAClB,iBAAiB,EAAE,CAAC,KAAK,EAAE,WAAW;IACtC,oBAAoBA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC5D,iBAAiB,CAAC,CAAC;IACnB,SAAS;IACT,QAAQ,IAAI,aAAa,GAAG,UAAU,IAAI,kBAAkB,IAAI,GAAG,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IAC3G,QAAQ,KAAK,IAAI,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IAC3D,YAAY,IAAI,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC3D,YAAY,IAAI,aAAa,IAAI,aAAa,IAAI,GAAG,EAAE;IACvD,gBAAgB,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,MAAM,CAAC;IAClE,gBAAgB,IAAI,MAAM,EAAE;IAC5B,oBAAoB,iBAAiB;IACrC,yBAAyB,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAC3E,iBAAiB;IACjB,aAAa,MAAM;IACnB,gBAAgB,IAAI,aAAa,IAAI,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE;IACtE,oBAAoB,IAAI,kBAAkB,EAAE;IAC5C,wBAAwB,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAChE,wBAAwB,iBAAiB;IACzC,6BAA6B,EAAE,CAAC,OAAO,EAAE,YAAY;IACrD,gCAAgC,IAAI,gBAAgB,CAAC,aAAa,EAAE;IACpE;IACA;IACA,oCAAoC,iBAAiB;IACrD,yCAAyC,KAAK,CAAC,gBAAgB,EAAE,WAAW;IAC5E,4CAA4C,IAAI,IAAI,GAAG,IAAI,CAAC;IAC5D,4CAA4C,OAAO,SAAS,CAAC,EAAE;IAC/D,gDAAgD,IAAI,CAAC,YAAY,CAAC,WAAW,EAAEO,qCAAuB,CAACJ,oBAAa,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,0BAA0B,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpP,6CAA6C,CAAC;IAC9C,yCAAyC,CAAC,CAAC;IAC3C,iCAAiC;IACjC,6BAA6B,CAAC;IAC9B,6BAA6B,EAAE,CAAC,KAAK,EAAE,YAAY;IACnD,gCAAgC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD;IACA,gCAAgC,IAAI,gBAAgB,CAAC,aAAa,EAAE;IACpE,oCAAoC,8BAA8B,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACnG,iCAAiC;IACjC,6BAA6B,EAAC;IAC9B,qBAAqB,MAAM;IAC3B,wBAAwB,IAAI,gBAAgB,CAAC,aAAa,EAAE;IAC5D;IACA,4BAA4B,8BAA8B,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC3F,4BAA4B,cAAc,GAAG,0BAA0B,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnH,yBAAyB;IACzB,qBAAqB;IACrB,iBAAiB;IACjB,gBAAgB,iBAAiB;IACjC,qBAAqB,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACzD,aAAa;IACb,SAAS;IACT,QAAQ,IAAI,YAAY,EAAE;IAC1B,YAAY,iBAAiB;IAC7B,iBAAiB,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;IAClD,oBAAoB,WAAW,GAAGH,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClD,oBAAoB,IAAI,UAAU,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACpE,oBAAoB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY;IACrD,wBAAwB,OAAO,CAAC,CAAC,GAAG,CAAC;IACrC,qBAAqB,CAAC,CAAC;IACvB,iBAAiB,EAAC;IAClB,SAAS;IACT,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE;IACvB,YAAY,iBAAiB;IAC7B,iBAAiB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,SAAS;IACT,QAAQ,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,KAAK;AACL;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;AAC/B;IACA,IAAI,IAAI,kBAAkB,IAAI,IAAI,EAAE;IACpC;IACA,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;IAC9B,QAAQ,IAAI,gBAAgB,CAAC,OAAO,EAAE;IACtC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,YAAY,OAAO,IAAI,CAAC;IACxB,SAAS,MAAM;IACf,YAAY,IAAI;IAChB,eAAe,UAAU,CAAC,kBAAkB,CAAC;IAC7C,eAAe,UAAU,EAAE;IAC3B,iBAAiB,QAAQ,CAAC,CAAC,CAAC;IAC5B,iBAAiB,EAAE,CAAC,KAAK,GAAG,YAAY;IACxC,oBAAoB,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;IACrD,oBAAoB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;IAC1C,wBAAwB,IAAI,CAAC,KAAK,EAAE,CAAC;IACrC,wBAAwB,gBAAgB,CAAC,MAAM,EAAE,CAAC;IAClD,qBAAqB;IACrB,iBAAiB,CAAC,CAAC;IACnB,YAAY,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IAChC,SAAS;IACT,KAAK;AACL;IACA,IAAI,IAAI,kBAAkB,IAAI,IAAI,EAAE;IACpC,QAAQ,IAAI;IACZ,WAAW,UAAU,CAAC,kBAAkB,CAAC;IACzC,aAAa,EAAE,CAAC,OAAO,GAAG,YAAY;IACtC,gBAAgB,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IACrF,aAAa,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,GAAG,YAAY;IACpC,gBAAgB,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACnF,aAAa,CAAC;IACd,WAAW,UAAU,EAAE;IACvB,aAAa,QAAQ,CAAC,CAAC,CAAC;IACxB,aAAa,EAAE,CAAC,OAAO,GAAG,YAAY;IACtC,gBAAgB,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAChF,gBAAgB,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACzE,gBAAgB,IAAI,QAAQ,EAAE;IAC9B,oBAAoB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpD,iBAAiB;IACjB,aAAa,CAAC,CAAC;IACf,KAAK;AACL;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAC1B;IACA,IAAI,IAAI,GAAG,GAAG,IAAI;IAClB,OAAO,SAAS,CAAC,KAAK,CAAC;IACvB,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,IAAI,GAAG,GAAG,GAAG;IACb,OAAO,KAAK,EAAE;IACd,OAAO,MAAM,CAAC,KAAK,CAAC;IACpB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AAClB;IACA,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5C;AACA;IACA,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IACnD,QAAQ,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,KAAK;AACL;IACA,IAAI,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;AACnE;IACA,IAAI,IAAI,kBAAkB,IAAI,IAAI,EAAE;IACpC,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzC,QAAQ,IAAI,QAAQ,EAAE;IACtB,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS;IACT,KAAK;AACL;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;IChZO,SAAS,iBAAiB,CAAC,YAAY,EAAE,SAAS,EAAE;IAC3D,IAAI,IAAI,YAAY,CAAC,GAAG,IAAI,SAAS,EAAE;IACvC,QAAQ,IAAI,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACtD,QAAQ,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC;IAC7B,QAAQ,IAAI,kBAAkB,GAAG,YAAY,CAAC,UAAU,CAAC;IACzD,QAAQ,IAAI,aAAa,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IAClE,QAAQ,IAAI,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACxD,QAAQ,IAAI,SAAS,CAAC,GAAG,IAAI,SAAS,EAAE;IACxC,YAAY,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;IACzC,YAAY,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAC9C,YAAY,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/C,YAAY,IAAI,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACzD,YAAY,IAAI,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,YAAY,IAAI,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9H,YAAY,IAAI,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,YAAY,IAAI,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;IAC1E,gBAAgB,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,gBAAgB,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,gBAAgB,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACjC,gBAAgB,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACjC,gBAAgB,IAAI,EAAE,IAAI,CAAC,EAAE;IAC7B,oBAAoB,SAAS;IAC7B,iBAAiB,MAAM;IACvB,oBAAoB,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC/C,iBAAiB;IACjB,gBAAgB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,QAAQ,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;IACpG,oBAAoB,MAAM;IAC1B,iBAAiB;IACjB,aAAa;IACb,YAAY,IAAI,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,YAAY,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,YAAY,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/E,YAAY,eAAe,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,SAAS;IACT,QAAQ,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,eAAe,GAAG,GAAG,CAAC;IACzD,QAAQ,OAAO,aAAa,CAAC,MAAM,CAAC;IACpC,QAAQ,OAAO,CAAC,UAAU,GAAG,aAAa,CAAC;IAC3C,KAAK,+CAA+C;IACpD,QAAQ,IAAI,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACtD,QAAQ,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC;IAC7B,QAAQ,IAAI,kBAAkB,GAAG,YAAY,CAAC,UAAU,CAAC;IACzD,QAAQ,IAAI,aAAa,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IAClE,QAAQ,IAAI,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC;IACvC,QAAQ,IAAI,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC;IACvC,QAAQ,IAAI,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC;IACvC,QAAQ,IAAI,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC;IACvC,QAAQ,IAAI,SAAS,CAAC,GAAG,IAAI,SAAS,EAAE;IACxC,YAAY,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IACtC,YAAY,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAC9C,YAAY,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/C,YAAY,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzE,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,YAAY,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IAClC,YAAY,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IAClC,YAAY,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,YAAY,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,YAAY,IAAI,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/B,SAAS,MAAM;IACf;IACA,YAAY,IAAI,IAAI,GAAG,CAAC,CAAC;IACzB,YAAY,IAAI,IAAI,GAAG,CAAC,CAAC;IACzB,SAAS;IACT,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC3B,QAAQ,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IAC5B,QAAQ,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACzB,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACzB,QAAQ,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,SAAS,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,SAAS,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;IAC5L,QAAQ,OAAO,aAAa,CAAC,EAAE,CAAC;IAChC,QAAQ,OAAO,aAAa,CAAC,EAAE,CAAC;IAChC,QAAQ,OAAO,aAAa,CAAC,EAAE,CAAC;IAChC,QAAQ,OAAO,aAAa,CAAC,EAAE,CAAC;IAChC,QAAQ,OAAO,CAAC,UAAU,GAAG,aAAa,CAAC;IAC3C,KAAK;IACL,IAAI,OAAO,OAAO,CAAC;IACnB,CAAC;AACD;IACO,SAAS,wBAAwB,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE;IAC7D,IAAI,IAAI,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3I,IAAI,IAAI,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,IAAI,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,OAAO,YAAY,CAAC;IACxB,CAAC;AACD;IACO,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC7C,IAAI,IAAI,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;IACzB,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3I,IAAI,IAAI,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;IAC5C,QAAQ,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,IAAI,OAAO,CAAC,CAAC;IACb;;IC7FO,SAAS,OAAO,GAAG;AAC1B;IACA;IACA,IAAI,IAAI;IACR,QAAQQ,aAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM;IACrD,YAAYC,iBAAY,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK;IAC/C,gBAAgB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnE,gBAAgB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;IAC1C,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACzD,iBAAiB;IACjB,gBAAgB,IAAI,IAAI,CAAC,UAAU,EAAE;IACrC,oBAAoB,IAAI,CAAC,UAAU,EAAE,CAAC;IACtC,iBAAiB;IACjB,aAAa,CAAC,CAAC;IACf,SAAS,CAAC,CAAC;IACX,KAAK,CAAC,MAAM,KAAK,EAAE;IACnB,KAAK;IACL,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;IAC9B,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;IAClC,QAAQ,IAAI,gBAAgB,GAAG,IAAI,CAAC;IACpC,QAAQ,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;IACrD,YAAY,IAAI,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACrE,YAAY,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACnD,UAAS;IACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE;IAClD;IACA,YAAY,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAC3E,SAAS;IACT,QAAQ,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,KAAK,EAAE;IACzF,YAAY,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI;IACnC,YAAY,KAAK,MAAM;IACvB,gBAAgB,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACjE,gBAAgB,MAAM;IACtB,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK;IACL,CAAC;AACD;IACA,SAAS,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE;IACxC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;AACD;IACO,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;IAE1D,IAAiB,IAAI,CAAC,QAAQ;IAC9B,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;IACtB,QAAQ,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;IAC/B,YAAY,GAAG,EAAE,GAAG;IACpB,YAAY,MAAM,EAAE,MAAM;IAC1B,YAAY,OAAO,EAAE,UAAU;IAC/B,SAAS,EAAE,UAAU,KAAK,EAAE;IAC5B,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,SAAS,CAAC,CAAC;IACX,KAAK,MAAM;IACX,QAAQ,IAAI;IACZ,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACzE,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,SAAS;IACT,QAAQ,MAAM,KAAK,EAAE;IACrB,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,SAAS;IACT,KAAK;IACL,CAAC;AACD;IACe,YAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE;AACvC;IACA,IAAI,IAAI,gBAAgB,GAAG,IAAI,CAAC;IAChC,IAAiB,IAAI,CAAC,QAAQ;IAC9B,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IACtC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC9B;IACA,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,IAAI,UAAU,GAAG;IACrB,QAAQ,MAAM,EAAE,MAAM;IACtB,KAAK,CAAC;IACN,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;IAClD,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC7D,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;IACL,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,IAAI,EAAE;IACzD,QAAQ,QAAQ,IAAI,CAAC,IAAI;IACzB,QAAQ,KAAK,OAAO;IACpB,YAAY,IAAI,gBAAgB,CAAC,QAAQ,EAAE;IAC3C,gBAAgB,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,aAAa,MAAM;IACnB,gBAAgB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO;IACxC,aAAa;IACb,YAAY,MAAM;IAClB,QAAQ,KAAK,MAAM;IACnB,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;IAClC,YAAY,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpD,YAAY,MAAM;IAClB,SAAS;IACT,KAAK,CAAC,CAAC;AACP;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CACA;IACA,SAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE;IACtC,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACxC,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC9C,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IAChD,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IACvG,QAAQ,IAAI,cAAc,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC/E,QAAQ,IAAI,wBAAwB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClF,KAAK,MAAM;IACX,QAAQ,IAAI,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;IAC1D,QAAQ,IAAI,wBAAwB,GAAG,KAAK,CAAC;IAC7C,KAAK;IACL,IAAI,IAAI,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,IAAI,IAAI,UAAU,GAAG,EAAE,CAAC;IACxB,IAAI,IAAI,cAAc,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;IAChD,IAAI,IAAI,cAAc,GAAG,EAAE,CAAC;IAC5B,IAAI,IAAI,kBAAkB,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;AACxD;IACA,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE;IAClC,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IAC5B,QAAQ,IAAI,OAAO,IAAI,OAAO,EAAE;IAChC,YAAY,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;IAC9B,SAAS,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;IAClC,YAAY,IAAI,OAAO,IAAI,IAAI,EAAE;IACjC,gBAAgB,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;IAChD,aAAa,MAAM,IAAI,OAAO,IAAI,OAAO,EAAE;IAC3C,gBAAgB,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,SAAS,EAAE;IACrE,oBAAoB,OAAO,SAAS,CAAC,GAAG,IAAI,OAAO,CAAC;IACpD,iBAAiB,CAAC,CAAC;IACnB,gBAAgB,IAAI,KAAK,EAAE;IAC3B,oBAAoB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;IACnD,wBAAwB,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,qBAAqB,MAAM;IAC3B,wBAAwB,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;IACvC,qBAAqB;IACrB,iBAAiB;IACjB,aAAa;IACb,SAAS;IACT,QAAQ,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;IAC/B,YAAY,IAAI,WAAW,EAAE;IAC7B,gBAAgB,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,EAAE;IAC1D,oBAAoB,GAAG,GAAG,MAAM,CAAC;IACjC,iBAAiB;IACjB,aAAa;IACb,YAAY,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;IAC1C,SAAS;IACT,KAAK;AACL;IACA,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE;IACtC,QAAQ,IAAI,EAAE,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC;IACrE,QAAQ,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;IACtB,KAAK;AACL;IACA,IAAI,SAAS,eAAe,CAAC,KAAK,EAAE;IACpC,QAAQ,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;IACrC,KAAK;AACL;IACA,IAAI,SAAS,6BAA6B,CAAC,KAAK,EAAE,SAAS,EAAE;IAC7D,QAAQ,IAAI,WAAW,IAAI,KAAK,CAAC,EAAE,IAAI,cAAc,EAAE;IACvD,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,SAAS,IAAI,SAAS,CAAC,GAAG,IAAI,SAAS,IAAI,SAAS,CAAC,GAAG,IAAI,MAAM,MAAM,SAAS,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,EAAE;IACjK,gBAAgB,IAAI,SAAS,CAAC,GAAG,IAAI,MAAM,EAAE;IAC7C,oBAAoB,KAAK,CAAC,cAAc,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/E,iBAAiB;IACjB,gBAAgB,IAAI,KAAK,CAAC,GAAG,IAAI,MAAM,EAAE;IACzC,oBAAoB,KAAK,CAAC,cAAc,GAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/E,iBAAiB;IACjB,aAAa;IACb,SAAS;IACT,KAAK;AACL;IACA,IAAI,SAAS,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE;IACxD,QAAQ,IAAI,UAAU,IAAI,SAAS,KAAK,SAAS,CAAC,GAAG,IAAI,MAAM,KAAK,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE;IAClI,YAAY,IAAI,WAAW,GAAG,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3E,YAAY,IAAI,KAAK,CAAC,cAAc,EAAE;IACtC,gBAAgB,IAAI,OAAO,GAAG,2BAA2B,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAChF,aAAa,MAAM;IACnB,gBAAgB,IAAI,OAAO,GAAG,2BAA2B,CAAC,SAAS,CAAC,CAAC;IACrE,aAAa;IACb,YAAY,CAAC,KAAK,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,wBAAwB,CAAC,CAAC;IAC3J,SAAS;IACT,KAAK;AACL;IACA,IAAI,SAAS,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,UAAU,EAAE;IACnE,QAAQ,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7B,QAAQ,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACjC,QAAQ,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAC1B,QAAQ,IAAI,SAAS,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IAC3C,QAAQ,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/B,QAAQ,6BAA6B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxD,QAAQ,wBAAwB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACnD,QAAQ,IAAI,eAAe,GAAG,EAAE,CAAC;IACjC,QAAQ,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,SAAS,EAAE;IACpD,YAAY,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC;IACzC,YAAY,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,EAAE;IAChE,gBAAgB,QAAQ,GAAG,MAAM,CAAC;IAClC,aAAa;IACb,YAAY,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;IACnD,gBAAgB,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9C,aAAa;IACb,YAAY,IAAI,UAAU,GAAG,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzD,YAAY,yBAAyB,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IACpE,SAAS,CAAC,CAAC;IACX,KAAK;AACL;IACA,IAAI,SAAS,mBAAmB,CAAC,KAAK,EAAE;IACxC,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IAC5B,QAAQ,IAAI,iBAAiB,IAAI,KAAK,CAAC,MAAM,EAAE;IAC/C,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,MAAM,EAAE;IACzD,gBAAgB,IAAI,GAAG,IAAI,OAAO,EAAE;IACpC,oBAAoB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;IACnD,sBAAsB,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpD,sBAAsB,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;IAC9C,qBAAqB,MAAM;IAC3B,sBAAsB,IAAI,MAAM,GAAG,EAAE,CAAC;IACtC,qBAAqB;IACrB,oBAAoB,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAC1D,iBAAiB;IACjB,aAAa;IACb,SAAS;IACT,KAAK;AACL;IACA,IAAI,SAAS,uBAAuB,CAAC,KAAK,EAAE;IAC5C,QAAQ,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAC1B,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IAC5B,QAAQ,IAAI,SAAS,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IAC3C,QAAQ,IAAI,iBAAiB,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE;IAC7D,YAAY,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;IACtC,gBAAgB,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,SAAS,EAAE;IACvD,oBAAoB,IAAI,GAAG,IAAI,SAAS,EAAE;IAC1C,wBAAwB,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IAC3E,4BAA4B,OAAO,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;IACnD,yBAAyB,CAAC,CAAC;IAC3B,wBAAwB,IAAI,IAAI,EAAE;IAClC,4BAA4B,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACjE,yBAAyB;IACzB,qBAAqB;IACrB,oBAAoB,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACpD,oBAAoB,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClD,oBAAoB,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,oBAAoB,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;IAC7C,wBAAwB,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,qBAAqB;IACrB,oBAAoB,IAAI,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,oBAAoB,IAAI,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAChE,oBAAoB,IAAI,aAAa,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACxE,oBAAoB,IAAI,aAAa,EAAE;IACvC,wBAAwB,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,OAAO,EAAE,KAAK,EAAE;IACvF,4BAA4B,OAAO,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;IACtD,yBAAyB,CAAC,CAAC;IAC3B,wBAAwB,IAAI,CAAC,IAAI,CAAC,EAAE;IACpC,4BAA4B,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,OAAO,EAAE,KAAK,EAAE;IACvG,gCAAgC,OAAO,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;IAC1D,6BAA6B,CAAC,CAAC;IAC/B,4BAA4B,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1E,yBAAyB;IACzB,wBAAwB,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,OAAO,EAAE,KAAK,EAAE;IAC3F,4BAA4B,OAAO,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;IACtD,yBAAyB,CAAC,CAAC;IAC3B,wBAAwB,IAAI,CAAC,IAAI,CAAC,EAAE;IACpC,4BAA4B,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,OAAO,EAAE,KAAK,EAAE;IAC3G,gCAAgC,OAAO,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;IAC1D,6BAA6B,CAAC,CAAC;IAC/B,4BAA4B,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClF,yBAAyB;IACzB,wBAAwB,IAAI,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;IAC7D,wBAAwB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACrE,4BAA4B,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,EAAE;IACpK,gCAAgC,IAAI,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAChE,gCAAgC,MAAM;IACtC,6BAA6B;IAC7B,yBAAyB;IACzB,wBAAwB,IAAI,eAAe,GAAG,aAAa,CAAC,QAAQ,CAAC;IACrE,wBAAwB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACzE,4BAA4B,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,EAAE;IACpL,gCAAgC,IAAI,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACxE,gCAAgC,MAAM;IACtC,6BAA6B;IAC7B,yBAAyB;IACzB,wBAAwB,IAAI,cAAc,IAAI,UAAU,EAAE;IAC1D,4BAA4B,KAAK,CAAC,MAAM,GAAG;IAC3C,gCAAgC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAChF,gCAAgC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAChF,8BAA6B;IAC7B,yBAAyB,MAAM;IAC/B,4BAA4B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,yBAAyB;IACzB,qBAAqB;IACrB,iBAAiB;IACjB,aAAa;IACb,SAAS;IACT,KAAK;AACL;IACA,IAAI,SAAS,0BAA0B,CAAC,KAAK,EAAE;IAC/C,QAAQ,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACnC,QAAQ,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACvC,QAAQ,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,SAAS,EAAE;IACpD,YAAY,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAClD,SAAS,CAAC,CAAC;IACX,KAAK;AACL;IACA,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC3C;IACA,IAAI,IAAI,MAAM,GAAGT,aAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;IAC7D,SAAS,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB;IACA,IAAI,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;IACxC,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAC9D;IACA,IAAI,MAAM;IACV,SAAS,MAAM,CAAC,WAAW;IAC3B,YAAY,OAAO,GAAG,CAAC,eAAe,CAAC;IACvC,SAAS,CAAC,CAAC;AACX;IACA,IAAI,IAAI,MAAM,GAAG,MAAM;IACvB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACrB;IACA,IAAI,IAAI,IAAI,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IACrD,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,IAAI,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AAC1C;IACA,IAAI,IAAI,CAAC,YAAY,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE;IACnE,QAAQ,IAAI,IAAI,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACnD,QAAQ,yBAAyB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAChE,QAAQ,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACzC,QAAQ,OAAO,IAAI,CAAC;IACpB,MAAK;IACL,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,IAAI,QAAQ,EAAE;IAClB,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK;IACL,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;IAChC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtC,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK;IACL;;IC/Ve,kBAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE;AACvC;IACA,IAAI,IAAI,gBAAgB,GAAG,IAAI,CAAC;AAChC;IACA,IAAI,IAAI;IACR,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC1B;IACA,IAAI,SAAS,MAAM,GAAG;IACtB,QAAQ,gBAAgB;IACxB,aAAa,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9B,KAAK;AACL;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICVe,mBAAQ,CAAC,IAAI,EAAE;AAC9B;IACA,IAAI,IAAI,IAAI,YAAY,QAAQ,EAAE;IAClC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACvC,KAAK,MAAM;IACX,QAAQ,IAAI,CAAC,WAAW,GAAGM,uBAAU,CAAC,IAAI,CAAC,CAAC;IAC5C,KAAK;AACL;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CACA;IACO,SAAS,MAAM,CAAC,IAAI,EAAE;AAC7B;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;IAC/B,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;IACzB,QAAQ,OAAOI,mBAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,KAAK,MAAM;IACX,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;IACL;;ICvBe,gBAAQ,CAAC,OAAO,EAAE;AACjC;IACA,IAAI,IAAI,OAAO,OAAO,IAAI,WAAW,EAAE;IACvC,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,KAAK,MAAM;IACX,QAAQ,KAAK,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;IACjD,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,SAAS;IACT,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;IACL;;ICVe,cAAQ,CAAC,KAAK,EAAE;AAC/B;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;AAChC;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICLe,eAAQ,CAAC,MAAM,EAAE;AAChC;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;AAClC;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICLe,cAAQ,CAAC,KAAK,EAAE;AAC/B;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;AAChC;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICLe,YAAQ,CAAC,GAAG,EAAE;AAC7B;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;AAC5B;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICLe,mBAAQ,CAAC,QAAQ,EAAE;AAClC;IACA,IAAI,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;AAChC;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICLe,eAAQ,CAAC,MAAM,EAAE;AAChC;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;AAClC;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICLe,eAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;AAC7C;IACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAC;AAC/D;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICLe,gBAAQ,CAAC,OAAO,EAAE;AACjC;IACA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;IACtC,QAAQ,MAAM,KAAK,CAAC,mBAAmB,GAAG,OAAO,CAAC,CAAC;IACnD,KAAK;IACL,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;IAChE,QAAQ,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAClD,KAAK;IACL,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;AACpC;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICXe,aAAQ,CAAC,MAAM,EAAE;AAChC;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAM;AAC/B;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICLe,mBAAQ,CAAC,MAAM,EAAE;AAChC;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC;AACtC;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICLe,oBAAQ,CAAC,MAAM,EAAE;AAChC;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC;IACvC,IAAI,IAAI,MAAM,EAAE;IAChB,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;IACxC,KAAK;AACL;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICRe,kCAAQ,CAAC,MAAM,EAAE;AAChC;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,yBAAyB,GAAG,MAAM,CAAC;AACrD;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICLe,uBAAQ,CAAC,SAAS,EAAE;AACnC;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,SAAS,CAAC;AAC7C;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICLe,0BAAQ,CAAC,MAAM,EAAE;AAChC;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,GAAG,MAAM,CAAC;AAC7C;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICLe,WAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE;AAC7C;IACA,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC3C;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICLe,gBAAQ,CAAC,QAAQ,EAAE;AAClC;IACA,IAAI,IAAI,CAAC,QAAQ,GAAG,SAAQ;AAC5B;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICHe,kBAAQ,CAAC,MAAM,EAAE;AAChC;IACA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACxB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;IACnB,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;IACtC,IAAI,IAAI,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1F,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChD,QAAQ,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACtC,QAAQ,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IAC9B,QAAQ,IAAI,gBAAgB,GAAG,IAAI,CAAC;IACpC,QAAQ,IAAI,aAAa,CAAC;IAC1B,QAAQ,IAAI,gBAAgB,CAAC;IAC7B,QAAQ,IAAI;IACZ,aAAa,EAAE,CAAC,SAAS,GAAG,MAAM,EAAE,MAAM,GAAG,YAAY;IACzD,gBAAgB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,gBAAgB,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;IACpD,gBAAgB,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,gBAAgB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChC,gBAAgB,MAAM,IAAI,QAAQ,CAAC;IACnC,gBAAgB,MAAM,IAAIC,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACjD,gBAAgB,MAAM,IAAI,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,kBAAkB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACxF,gBAAgB,MAAM,IAAIA,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;IACtD,gBAAgB,IAAI,SAAS,IAAI,SAAS,EAAE;IAC5C,oBAAoB,MAAM,IAAIA,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,iBAAiB;IACjB,gBAAgB,IAAI,SAAS,IAAI,gBAAgB,EAAE;IACnD,oBAAoB,MAAM,IAAI,2BAA2B,GAAGA,eAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;IAC3G,iBAAiB;IACjB,gBAAgB,IAAI,SAAS,IAAI,WAAW,IAAI,gBAAgB,CAAC,WAAW,EAAE;IAC9E,oBAAoB,MAAM,IAAI,2BAA2B,GAAGA,eAAM,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpJ,oBAAoB,aAAa,GAAG,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IACzE,oBAAoB,gBAAgB,GAAG,gBAAgB,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC/E,iBAAiB;IACjB,gBAAgB,IAAI,SAAS,IAAI,iBAAiB,EAAE;IACpD,oBAAoB,IAAI,WAAW,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,EAAC;IACvE,oBAAoB,MAAM,IAAI,2BAA2B,GAAGA,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3G,oBAAoB,MAAM,IAAI,YAAY,GAAGA,eAAM,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC;IAC1E,oBAAoB,MAAM,IAAI,QAAQ,GAAGA,eAAM,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC;IACpF,iBAAiB;IACjB,gBAAgB,IAAI,SAAS,IAAI,eAAe,EAAE;IAClD,oBAAoB,IAAI,cAAc,GAAG,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAC;IAC5E,oBAAoB,MAAM,IAAI,2BAA2B,GAAGA,eAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC;IAC1F,oBAAoB,MAAM,IAAI,YAAY,GAAGA,eAAM,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC7E,oBAAoB,MAAM,IAAI,QAAQ,GAAGA,eAAM,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,gBAAgB,CAAC,CAAC;IAC1F,iBAAiB;IACjB,gBAAgB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACvB,aAAa,GAAG,IAAI,CAAC,CAAC;IACtB,KAAK;IACL,IAAI,OAAO,IAAI,CAAC;IAChB;;ICpDe,gBAAQ,GAAG;AAC1B;IACA,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC;IAC/C,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;IACtB,QAAQ,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAChC,KAAK;IACL,IAAI,OAAO,IAAI,CAAC;IAChB;;ICPO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;IACzC;IACA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACX,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;IACjB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACX,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClB;;ICAO,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE;IACjE,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC/C,IAAI,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;IAChE,QAAQ,IAAI,OAAO,GAAGX,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,KAAK,MAAM;IACX,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC3D,QAAQ,IAAI,MAAM,GAAG,GAAG,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAC3D,QAAQ,IAAI,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzD,QAAQ,IAAI,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACxD,QAAQ,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;IACxC,aAAa,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9B,QAAQ,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACxD,QAAQ,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7E,KAAK;IACL,IAAI,IAAI,CAAC,UAAU,GAAG;IACtB,QAAQ,CAAC,EAAE,OAAO;IAClB,QAAQ,EAAE,EAAE,EAAE;IACd,QAAQ,EAAE,EAAE,EAAE;IACd,QAAQ,EAAE,EAAE,EAAE;IACd,QAAQ,EAAE,EAAE,EAAE;IACd,QAAQ,UAAU,EAAE,UAAU;IAC9B,KAAK,CAAC;AACN;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;AACD;IACO,SAAS,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;IAC3E,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG;IAC3B,QAAQ,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,KAAK;IACL,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,EAAC;IAChC,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACvE,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IAC5B,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE;IACnF,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC3D,QAAQ,IAAI,MAAM,GAAG,GAAG,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAC3D,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtC,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC;IACjC,KAAK;IACL,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG;IACxB,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACxE,KAAK;AACL;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;AACD;IACA,SAAS,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;AAChE;IACA,IAAI,IAAI,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACpD,IAAI,IAAI,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1B,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;AACD;IACA,SAAS,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;AAC9D;IACA,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IAC7C,IAAI,IAAI,eAAe,GAAG,EAAE,CAAC;IAC7B,IAAI,IAAI,cAAc,GAAG,CAAC,CAAC;IAC3B,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC;AACrB;IACA,IAAI,IAAI,eAAe,GAAG;IAC1B,QAAQ,CAAC,CAAC,EAAE,CAAC,cAAc,GAAG,CAAC,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5B,QAAQ,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC;IAC/B,QAAQ,CAAC,CAAC,EAAE,CAAC,cAAc,GAAG,CAAC,CAAC;IAChC,KAAK,CAAC;AACN;IACA,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACrB,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACrB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,IAAI,IAAI,MAAM,IAAI,CAAC,EAAE;IACrB,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC;IACrB,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM;IACX,QAAQ,IAAI,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC;IAC/B,QAAQ,IAAI,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC;IAC/B,KAAK;IACL,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,eAAe,GAAG,MAAM,IAAI,IAAI,CAAC;IACtE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,eAAe,GAAG,MAAM,IAAI,IAAI,CAAC;AACtE;IACA,IAAI,IAAI,UAAU,CAAC,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE;IAC9C,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IACzF,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAC1D,QAAQ,IAAI,SAAS,GAAG,CAAC,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC;IAClE,KAAK,MAAM;IACX,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAC7D,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC;IACrE,KAAK;AACL;IACA,IAAI,IAAI,KAAK,GAAGY,WAAO,EAAE,CAAC;IAC1B,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACzB,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACzB;IACA,IAAI,IAAI;IACR,SAAS,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1B;IACA,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,eAAe,IAAI,IAAI,CAAC;IAC7D,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,eAAe,IAAI,IAAI,CAAC;IAC7D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACrD,QAAQ,IAAI,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACvC,QAAQ,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpE,KAAK;IACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACrD,QAAQ,IAAI,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACvC,QAAQ,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,KAAK;IACL,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC;IACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACrD,QAAQ,IAAI,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACvC,QAAQ,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,KAAK;IACL,IAAI,IAAI,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC;IACA,IAAI,SAAS;IACb,SAAS,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpC;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;AACD;IACO,SAAS,qBAAqB,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;AAC1D;IACA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG;IAC3B,QAAQ,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,KAAK;IACL,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACjC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IAChC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IAChC,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAChD;IACA,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IAC5B,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACzD;IACA,IAAI,OAAO,IAAI;IACf,CAAC;AACD;IACO,SAAS,eAAe,GAAG;AAClC;IACA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG;IAC3B,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;AACL;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACjC;IACA,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB;IACA,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B;IACA,IAAI,OAAO,IAAI;IACf,CAAC;AACD;IACO,SAAS,eAAe,CAAC,IAAI,EAAE;AACtC;IACA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG;IAC3B,QAAQ,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,KAAK;AACL;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACjC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG;IACvB,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;IACL,IAAqB,IAAI,CAAC,UAAU,CAAC,WAAW;AAChD;IACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;IAC3D,IAAI,KAAK;IACT,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;IAC/B,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IACrC,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACxF,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC;IACA,IAAI,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1C;IACA,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B;IACA,IAAI,OAAO,IAAI;AACf;IACA,CAAC;AACD;IACO,SAAS,kBAAkB,GAAG;AACrC;IACA,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;IACvB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7B,GAAG,MAAM;IACT,IAAI,OAAOZ,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,GAAG;AACH;IACA,CAAC;AACD;AACA;IACA,SAAS,UAAU,CAAC,UAAU,EAAE;IAChC,IAAI,IAAI,gBAAgB,GAAG,GAAE;IAC7B,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IAC9C,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;IACtC,YAAY,gBAAgB,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAC7E,SAAS;IACT,KAAK;IACL,IAAI,IAAI,MAAM,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAC/D,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,IAAI,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;IACxC,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9D,IAAI,IAAI,MAAM,GAAGA,aAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;IAC7D,SAAS,MAAM,CAAC,WAAW;IAC3B,YAAY,OAAO,GAAG,CAAC,eAAe,CAAC;IACvC,SAAS,CAAC,CAAC;IACX,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtC;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICxNO,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;IAClE,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC/C,IAAI,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;IAChE,QAAQ,IAAI,OAAO,GAAGA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,KAAK,MAAM;IACX,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC3D,QAAQ,IAAI,MAAM,GAAG,GAAG,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAC3D,QAAQ,IAAI,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACjE,QAAQ,IAAI,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACxD,QAAQ,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;IACxC,aAAa,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9B,QAAQ,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACxD,QAAQ,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC3E,KAAK;IACL,IAAI,IAAI,CAAC,UAAU,GAAG;IACtB,QAAQ,CAAC,EAAE,OAAO;IAClB,QAAQ,MAAM,EAAE,MAAM;IACtB,QAAQ,CAAC,EAAE,CAAC;IACZ,QAAQ,CAAC,EAAE,CAAC;IACZ,QAAQ,UAAU,EAAE,UAAU;IAC9B,KAAK,CAAC;AACN;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;AACD;IACO,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;IACzE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG;IAC3B,QAAQ,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,KAAK;AACL;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,EAAC;IAChC,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;IACxB,QAAQ,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACxC,KAAK;IACL,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACvE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;IACpC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE;IACnF,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC3D,QAAQ,IAAI,MAAM,GAAG,GAAG,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAC3D,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtC,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC;IACjC,KAAK;IACL,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG;IACxB,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACtE,KAAK;AACL;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;AACD;IACA,SAAS,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE;AAC9D;IACA,IAAI,IAAI,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC5D,IAAI,IAAI,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1B,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,UAAmB,CAAC,CAAC;AAC/C;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;AACD;IACA,SAAS,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE;IACpD,IAAI,IAAI,UAAU,CAAC,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE;IAC9C,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IACjG,KAAK,MAAM;IACX,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC;IAC7B,KAAK;IACL,IAAI,IAAI,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;IAC3E,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACzD;IACA,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;IACjC,QAAQ,IAAI,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAChD,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1C,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;IACjC,QAAQ,IAAI,GAAG;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9B,YAAY,KAAK,EAAE,CAAC;IACpB,YAAY,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/B,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/B,UAAS;IACT,KAAK;IACL,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE;IAC3C,QAAQ,IAAI,UAAU,GAAGA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzC,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IACnC,YAAY,UAAU;IACtB,iBAAiB,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAChD,iBAAiB,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,SAAS,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;IAC9C,YAAY,IAAI,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAChE,YAAY,UAAU;IACtB,iBAAiB,IAAI,CAAC,QAAQ,EAAE,wBAAwB,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAClG,SAAS,MAAM;IACf,YAAY,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,YAAY,UAAU;IACtB,iBAAiB,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,SAAS;IACT,KAAK,CAAC,CAAC;AACP;IACA,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;IAC1B,QAAQ,IAAI;IACZ,aAAa,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACvE,aAAa,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACxE,KAAK;IACL,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;AACD;IACO,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE;AAChD;IACA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG;IAC3B,QAAQ,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,KAAK;IACL,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACjC,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAChD;IACA,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1B;IACA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG;IACxB,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,UAAmB,CAAC,CAAC;IACnD,KAAK;AACL;IACA,IAAI,OAAO,IAAI;IACf,CAAC;AACD;IACO,SAAS,eAAe,GAAG;AAClC;IACA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG;IAC3B,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;AACL;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACjC;IACA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG;IACxB,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;IACtB,KAAK;AACL;IACA,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B;IACA,IAAI,OAAO,IAAI;IACf,CAAC;AACD;IACO,SAAS,eAAe,CAAC,MAAM,EAAE;AACxC;IACA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG;IAC3B,QAAQ,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,KAAK;AACL;IACA,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;IACxB,QAAQ,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACxC,KAAK;IACL,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACjC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG;IACvB,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;IACL,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAChD;IACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;IAC3D,IAAI,KAAK;IACT,SAAS,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,IAAI,IAAI,UAAU,CAAC,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE;IAC9C,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IACxD,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IACrD,QAAyB,CAAC,CAAC,4BAA4B,CAAC,+BAA+B,EAAE;IACzF,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAC1D,KAAK,MAAM;IACX,QAAyB,IAAI,CAAC,4BAA4B,CAAC,+BAA+B,EAAE;IAC5F,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAC7D,KAAK;IACL,IAAI,IAAI;IACR,SAAS,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;AAC1C;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;IAC/B,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IACrC,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACxF,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC;IACA,IAAI,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1C;IACA,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B;IACA,IAAI,OAAO,IAAI;AACf;IACA,CAAC;AACD;IACO,SAAS,kBAAkB,GAAG;AACrC;IACA,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;IACvB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7B,GAAG,MAAM;IACT,IAAI,OAAOA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,GAAG;AACH;IACA,CAAC;AACD;IACA,SAAS,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE;IACxC,IAAI,IAAI,gBAAgB,GAAG,GAAE;IAC7B,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IAC9C,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;IACtC,YAAY,gBAAgB,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAC7E,SAAS;IACT,KAAK;IACL,IAAI,IAAI,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,gBAAgB,GAAG,IAAI,CAAC;IACvE,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,IAAI,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;IACxC,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9D,IAAI,IAAI,MAAM,GAAGA,aAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;IAC7D,SAAS,MAAM,CAAC,WAAW;IAC3B,YAAY,OAAO,GAAG,CAAC,eAAe,CAAC;IACvC,SAAS,CAAC,CAAC;IACX,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtC;IACA,IAAI,OAAO,IAAI,CAAC;IAChB;;ICrOA;IACA;IACA;AACA;IACA;AACA;IACO,SAAS,cAAc,CAAC,IAAI,EAAE;AACrC;IACA,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACvB;IACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,KAAK,EAAE;IACrD,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7C,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;IACxD,YAAY,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,YAAY,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7C,YAAY,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE;IACA;IACA,SAAS;IACT,QAAQ,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;IAC7G,YAAY,IAAI,GAAG,EAAE;IACrB,gBAAgB,IAAI,CAAC,WAAW,CAAC;IACjC,oBAAoB,IAAI,EAAE,MAAM;IAChC,oBAAoB,GAAG,EAAE,GAAG;IAC5B,iBAAiB,CAAC,CAAC;IACnB,aAAa,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;IAC1C,gBAAgB,IAAI,CAAC,WAAW,CAAC;IACjC,oBAAoB,IAAI,EAAE,MAAM;IAChC,iBAAiB,CAAC,CAAC;IACnB,aAAa,MAAM;IACnB,gBAAgB,IAAI,CAAC,WAAW,CAAC;IACjC,oBAAoB,IAAI,EAAE,MAAM;IAChC,iBAAiB,CAAC,CAAC;IACnB,aAAa;IACb,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI;IAC1B,YAAY,IAAI,CAAC,WAAW,CAAC;IAC7B,gBAAgB,IAAI,EAAE,OAAO;IAC7B,gBAAgB,KAAK,EAAE,KAAK,CAAC,OAAO;IACpC,aAAa,CAAC,CAAC;IACf,SAAS,CAAC,CAAC;IACX,KAAK,CAAC,CAAC;IACP,CAAC;AACD;IACA;AACA;IACO,SAAS,UAAU,GAAG;AAC7B;IACA,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;IACtB,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;AACD;IACA;AACA;IACO,SAAS,gBAAgB,GAAG;IACnC,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE;IACjC,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,QAAQ,cAAc,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,MAAK;IACL;;ICRO,SAAS,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE;IAC7C,IAAI,IAAI,CAAC,QAAQ,GAAG;IACpB,QAAQ,SAAS,EAAE,IAAI;IACvB,QAAQ,eAAe,EAAE,KAAK;IAC9B,QAAQ,MAAM,EAAE,KAAK;IACrB,QAAQ,OAAO,EAAE,OAAO;IACxB,QAAQ,IAAI,EAAE,IAAI;IAClB,QAAQ,UAAU,EAAE,IAAI;IACxB,QAAQ,WAAW,EAAE,IAAI;IACzB,QAAQ,yBAAyB,EAAE,IAAI;IACvC,QAAQ,cAAc,EAAE,CAAC;IACzB,QAAQ,iBAAiB,EAAE,IAAI;IAC/B,QAAQ,IAAI,EAAE,IAAI;IAClB,QAAQ,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;IAClC,QAAQ,mBAAmB,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC7E,QAAQ,KAAK,EAAE,IAAI;IACnB,QAAQ,MAAM,EAAE,IAAI;IACpB,QAAQ,KAAK,EAAE,CAAC;IAChB,QAAQ,GAAG,EAAE,KAAK;IAClB,KAAK,CAAC;IACN,IAAI,IAAI,OAAO,YAAY,MAAM,EAAE;IACnC,QAAQ,KAAK,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;IACjD,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,SAAS;IACT,KAAK,MAAM,IAAI,OAAO,OAAO,IAAI,SAAS,EAAE;IAC5C,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,OAAO,CAAC;IAC1C,KAAK;IACL,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC5C,IAAI,IAAI,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;IACxD,IAAI,IAAI,OAAO,MAAM,IAAI,WAAW,EAAE;IACtC,QAAQ,SAAS,GAAG,KAAK,CAAC;IAC1B,KAAK;IACL,IAAI,IAAI,OAAO,YAAY,IAAI,WAAW,EAAE;IAC5C,QAAQ,eAAe,GAAG,KAAK,CAAC;IAChC,KAAK;IACL,IAAI,IAAI,SAAS,IAAI,eAAe,EAAE;IACtC,QAAQ,IAAI,OAAO,GAAGA,aAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC7C,QAAQ,IAAI,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW;IAClD,YAAY,OAAOA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,mBAAmB,KAAKA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAIA,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACnK,SAAS,CAAC,CAAC;IACX,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;IACnC,YAAY,OAAO,CAAC,IAAI,CAAC,oGAAoG,CAAC,CAAC;IAC/H,YAAY,SAAS,GAAG,KAAK,CAAC;IAC9B,YAAY,eAAe,GAAG,KAAK,CAAC;IACpC,SAAS,MAAM;IACf,YAAY,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IAC/B,gBAAgB,OAAO,CAAC,IAAI,CAAC,sHAAsH,CAAC,CAAC;IACrJ,gBAAgB,SAAS,GAAG,KAAK,CAAC;IAClC,gBAAgB,eAAe,GAAG,KAAK,CAAC;IACxC,aAAa;IACb,SAAS;IACT,KAAK;IACL,IAAI,IAAI,eAAe,EAAE;IACzB,QAAQ,MAAM,GAAG,GAAG,qCAAqC,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,gBAAgB,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC;IACxI,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IAC5D,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/E,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAClC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;IACnC,KAAK;IACL,SAAS,IAAI,SAAS,EAAE;IACxB,QAAQ,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IAC/F,QAAQ,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACvD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;IACxC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1E,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;IACnC,KAAK;IACL,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChC,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IACpB,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACrB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC;IAC7B,QAAQ,OAAO;IACf,QAAQ,IAAI;IACZ,QAAQ,WAAW;IACnB,QAAQ,OAAO;IACf,KAAK,CAAC,CAAC;IACP,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,IAAI,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAClC,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,IAAI,CAAC,WAAW,GAAG;IACvB,QAAQ,SAAS;IACjB,QAAQ,OAAO;IACf,QAAQ,aAAa;IACrB,QAAQ,WAAW;IACnB,QAAQ,gBAAgB;IACxB,QAAQ,qBAAqB;IAC7B,QAAQ,qBAAqB;IAC7B,QAAQ,gBAAgB;IACxB,QAAQ,aAAa;IACrB,QAAQ,WAAW;IACnB,QAAQ,iBAAiB;IACzB,QAAQ,eAAe;IACvB,QAAQ,YAAY;IACpB,QAAQ,KAAK;IACb,KAAK,CAAC;IACN,IAAI,IAAI,CAAC,SAAS,GAAGa,mBAAQ,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC;IACzC,CAAC;AACD;IACe,SAAS,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE;IACpD,IAAI,IAAI,CAAC,GAAGb,aAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,CAAC;IACb,CAAC;AACD;IACA,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,GAAG;IAC1C,IAAI,WAAW,EAAE,QAAQ;IACzB,IAAI,MAAM,EAAE,MAAM;IAClB,IAAI,QAAQ,EAAE,MAAM;IACpB,IAAI,OAAO,EAAE,OAAO;IACpB,IAAI,IAAI,EAAE,IAAI;IACd,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,WAAW,EAAE,WAAW;IAC5B,IAAI,yBAAyB,EAAE,yBAAyB;IACxD,IAAI,cAAc,EAAE,cAAc;IAClC,IAAI,iBAAiB,EAAE,iBAAiB;IACxC,IAAI,IAAI,EAAE,IAAI;IACd,IAAI,SAAS,EAAE,SAAS;IACxB,IAAI,YAAY,EAAE,YAAY;IAC9B,IAAI,aAAa,EAAE,aAAa;IAChC,IAAI,eAAe,EAAE,eAAe;IACpC,IAAI,mBAAmB,EAAE,mBAAmB;IAC5C,IAAI,MAAM,EAAE,MAAM;IAClB,IAAI,MAAM,EAAE,MAAM;IAClB,IAAI,GAAG,EAAE,GAAG;IACZ,IAAI,IAAI,EAAE,IAAI;IACd,IAAI,SAAS,EAAE,SAAS;IACxB,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,MAAM,EAAE,MAAM;IAClB,IAAI,OAAO,EAAE,OAAO;IACpB,IAAI,KAAK,EAAE,KAAK;IAChB,IAAI,MAAM,EAAE,MAAM;IAClB,IAAI,KAAK,EAAE,KAAK;IAChB,IAAI,GAAG,EAAE,GAAG;IACZ,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,EAAE,EAAE,EAAE;IACV,IAAI,OAAO,EAAE,OAAO;IACpB,IAAI,SAAS,EAAE,SAAS;IACxB,IAAI,OAAO,EAAE,OAAO;IACpB,IAAI,QAAQ,EAAE,QAAQ;IACtB,IAAI,eAAe,EAAE,eAAe;IACpC,IAAI,qBAAqB;IACzB,IAAI,eAAe;IACnB,IAAI,eAAe,EAAE,eAAe;IACpC,IAAI,kBAAkB,EAAE,kBAAkB;IAC1C,IAAI,QAAQ,EAAE,QAAQ;IACtB,IAAI,eAAe,EAAE,eAAe;IACpC,IAAI,aAAa,EAAE,aAAa;IAChC,IAAI,eAAe;IACnB,IAAI,eAAe,EAAE,eAAe;IACpC,IAAI,kBAAkB,EAAE,kBAAkB;IAC1C,CAAC;;IC3Mc,2BAAQ,CAAC,OAAO,EAAE;AACjC;IACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC;IACrC,IAAI,IAAI,CAAC,EAAE;IACX,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B;IACA,QAAQK,eAAO,CAAC,YAAY;IAC5B,YAAY,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,KAAK,MAAM;IACX,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,KAAK;IACL,IAAI,OAAO,CAAC,CAAC;IACb;;ICde,+CAAQ,CAAC,IAAI,EAAE;AAC9B;IACA,IAAI,OAAOL,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/E;;ACDAc,gBAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,kBAAkB,CAAC;AAClDA,gBAAS,CAAC,SAAS,CAAC,4BAA4B,GAAG,sCAAsC;;;;;;;;;;"} \ No newline at end of file
diff --git a/static/d3.js b/static/d3.js
new file mode 100644
index 0000000..59213ea
--- /dev/null
+++ b/static/d3.js
@@ -0,0 +1,2 @@
+// https://d3js.org v7.2.1 Copyright 2010-2021 Mike Bostock
+!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).d3=t.d3||{})}(this,(function(t){"use strict";function n(t,n){return null==t||null==n?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function e(t){let e=t,r=t,i=t;function o(t,n,e=0,o=t.length){if(e<o){if(0!==r(n,n))return o;do{const r=e+o>>>1;i(t[r],n)<0?e=r+1:o=r}while(e<o)}return e}return 2!==t.length&&(e=(n,e)=>t(n)-e,r=n,i=(e,r)=>n(t(e),r)),{left:o,center:function(t,n,r=0,i=t.length){const a=o(t,n,r,i-1);return a>r&&e(t[a-1],n)>-e(t[a],n)?a-1:a},right:function(t,n,e=0,o=t.length){if(e<o){if(0!==r(n,n))return o;do{const r=e+o>>>1;i(t[r],n)<=0?e=r+1:o=r}while(e<o)}return e}}}function r(t){return null===t?NaN:+t}const i=e(n),o=i.right,a=i.left,u=e(r).center;var c=o;function f(t,n){let e=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&++e;else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(i=+i)>=i&&++e}return e}function s(t){return 0|t.length}function l(t){return!(t>0)}function h(t){return"object"!=typeof t||"length"in t?t:Array.from(t)}function d(t,n){let e,r=0,i=0,o=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(e=n-i,i+=e/++r,o+=e*(n-i));else{let a=-1;for(let u of t)null!=(u=n(u,++a,t))&&(u=+u)>=u&&(e=u-i,i+=e/++r,o+=e*(u-i))}if(r>1)return o/(r-1)}function p(t,n){const e=d(t,n);return e?Math.sqrt(e):e}function g(t,n){let e,r;if(void 0===n)for(const n of t)null!=n&&(void 0===e?n>=n&&(e=r=n):(e>n&&(e=n),r<n&&(r=n)));else{let i=-1;for(let o of t)null!=(o=n(o,++i,t))&&(void 0===e?o>=o&&(e=r=o):(e>o&&(e=o),r<o&&(r=o)))}return[e,r]}class y{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){const n=this._partials;let e=0;for(let r=0;r<this._n&&r<32;r++){const i=n[r],o=t+i,a=Math.abs(t)<Math.abs(i)?t-(o-i):i-(o-t);a&&(n[e++]=a),t=o}return n[e]=t,this._n=e+1,this}valueOf(){const t=this._partials;let n,e,r,i=this._n,o=0;if(i>0){for(o=t[--i];i>0&&(n=o,e=t[--i],o=n+e,r=e-(o-n),!r););i>0&&(r<0&&t[i-1]<0||r>0&&t[i-1]>0)&&(e=2*r,n=o+e,e==n-o&&(o=n))}return o}}class InternMap extends Map{constructor(t,n=m){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const[n,e]of t)this.set(n,e)}get(t){return super.get(v(this,t))}has(t){return super.has(v(this,t))}set(t,n){return super.set(_(this,t),n)}delete(t){return super.delete(b(this,t))}}class InternSet extends Set{constructor(t,n=m){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const n of t)this.add(n)}has(t){return super.has(v(this,t))}add(t){return super.add(_(this,t))}delete(t){return super.delete(b(this,t))}}function v({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):e}function _({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):(t.set(r,e),e)}function b({_intern:t,_key:n},e){const r=n(e);return t.has(r)&&(e=t.get(r),t.delete(r)),e}function m(t){return null!==t&&"object"==typeof t?t.valueOf():t}function x(t){return t}function w(t,...n){return k(t,x,x,n)}function M(t,...n){return k(t,Array.from,x,n)}function A(t,n){for(let e=1,r=n.length;e<r;++e)t=t.flatMap((t=>t.pop().map((([n,e])=>[...t,n,e]))));return t}function T(t,n,...e){return k(t,x,n,e)}function S(t,n,...e){return k(t,Array.from,n,e)}function E(t){if(1!==t.length)throw new Error("duplicate key");return t[0]}function k(t,n,e,r){return function t(i,o){if(o>=r.length)return e(i);const a=new InternMap,u=r[o++];let c=-1;for(const t of i){const n=u(t,++c,i),e=a.get(n);e?e.push(t):a.set(n,[t])}for(const[n,e]of a)a.set(n,t(e,o));return n(a)}(t,0)}function N(t,n){return Array.from(n,(n=>t[n]))}function C(t,...n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");t=Array.from(t);let[e]=n;if(e&&2!==e.length||n.length>1){const r=Uint32Array.from(t,((t,n)=>n));return n.length>1?(n=n.map((n=>t.map(n))),r.sort(((t,e)=>{for(const r of n){const n=z(r[t],r[e]);if(n)return n}}))):(e=t.map(e),r.sort(((t,n)=>z(e[t],e[n])))),N(t,r)}return t.sort(P(e))}function P(t=n){if(t===n)return z;if("function"!=typeof t)throw new TypeError("compare is not a function");return(n,e)=>{const r=t(n,e);return r||0===r?r:(0===t(e,e))-(0===t(n,n))}}function z(t,n){return(null==t||!(t>=t))-(null==n||!(n>=n))||(t<n?-1:t>n?1:0)}var D=Array.prototype.slice;function q(t){return()=>t}var R=Math.sqrt(50),F=Math.sqrt(10),O=Math.sqrt(2);function U(t,n,e){var r,i,o,a,u=-1;if(e=+e,(t=+t)===(n=+n)&&e>0)return[t];if((r=n<t)&&(i=t,t=n,n=i),0===(a=I(t,n,e))||!isFinite(a))return[];if(a>0){let e=Math.round(t/a),r=Math.round(n/a);for(e*a<t&&++e,r*a>n&&--r,o=new Array(i=r-e+1);++u<i;)o[u]=(e+u)*a}else{a=-a;let e=Math.round(t*a),r=Math.round(n*a);for(e/a<t&&++e,r/a>n&&--r,o=new Array(i=r-e+1);++u<i;)o[u]=(e+u)/a}return r&&o.reverse(),o}function I(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=R?10:o>=F?5:o>=O?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=R?10:o>=F?5:o>=O?2:1)}function B(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=R?i*=10:o>=F?i*=5:o>=O&&(i*=2),n<t?-i:i}function Y(t,n,e){let r;for(;;){const i=I(t,n,e);if(i===r||0===i||!isFinite(i))return[t,n];i>0?(t=Math.floor(t/i)*i,n=Math.ceil(n/i)*i):i<0&&(t=Math.ceil(t*i)/i,n=Math.floor(n*i)/i),r=i}}function L(t){return Math.ceil(Math.log(f(t))/Math.LN2)+1}function j(){var t=x,n=g,e=L;function r(r){Array.isArray(r)||(r=Array.from(r));var i,o,a=r.length,u=new Array(a);for(i=0;i<a;++i)u[i]=t(r[i],i,r);var f=n(u),s=f[0],l=f[1],h=e(u,s,l);if(!Array.isArray(h)){const t=l,e=+h;if(n===g&&([s,l]=Y(s,l,e)),(h=U(s,l,e))[h.length-1]>=l)if(t>=l&&n===g){const t=I(s,l,e);isFinite(t)&&(t>0?l=(Math.floor(l/t)+1)*t:t<0&&(l=(Math.ceil(l*-t)+1)/-t))}else h.pop()}for(var d=h.length;h[0]<=s;)h.shift(),--d;for(;h[d-1]>l;)h.pop(),--d;var p,y=new Array(d+1);for(i=0;i<=d;++i)(p=y[i]=[]).x0=i>0?h[i-1]:s,p.x1=i<d?h[i]:l;for(i=0;i<a;++i)null!=(o=u[i])&&s<=o&&o<=l&&y[c(h,o,0,d)].push(r[i]);return y}return r.value=function(n){return arguments.length?(t="function"==typeof n?n:q(n),r):t},r.domain=function(t){return arguments.length?(n="function"==typeof t?t:q([t[0],t[1]]),r):n},r.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?q(D.call(t)):q(t),r):e},r}function H(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e<n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e<i||void 0===e&&i>=i)&&(e=i)}return e}function X(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e>n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e>i||void 0===e&&i>=i)&&(e=i)}return e}function G(t,n,e=0,r=t.length-1,i){for(i=void 0===i?z:P(i);r>e;){if(r-e>600){const o=r-e+1,a=n-e+1,u=Math.log(o),c=.5*Math.exp(2*u/3),f=.5*Math.sqrt(u*c*(o-c)/o)*(a-o/2<0?-1:1);G(t,n,Math.max(e,Math.floor(n-a*c/o+f)),Math.min(r,Math.floor(n+(o-a)*c/o+f)),i)}const o=t[n];let a=e,u=r;for(V(t,e,n),i(t[r],o)>0&&V(t,e,r);a<u;){for(V(t,a,u),++a,--u;i(t[a],o)<0;)++a;for(;i(t[u],o)>0;)--u}0===i(t[e],o)?V(t,e,u):(++u,V(t,u,r)),u<=n&&(e=u+1),n<=u&&(r=u-1)}return t}function V(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function $(t,n,e){if(t=Float64Array.from(function*(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)null!=(r=n(r,++e,t))&&(r=+r)>=r&&(yield r)}}(t,e)),r=t.length){if((n=+n)<=0||r<2)return X(t);if(n>=1)return H(t);var r,i=(r-1)*n,o=Math.floor(i),a=H(G(t,o).subarray(0,o+1));return a+(X(t.subarray(o+1))-a)*(i-o)}}function W(t,n,e=r){if(i=t.length){if((n=+n)<=0||i<2)return+e(t[0],0,t);if(n>=1)return+e(t[i-1],i-1,t);var i,o=(i-1)*n,a=Math.floor(o),u=+e(t[a],a,t);return u+(+e(t[a+1],a+1,t)-u)*(o-a)}}function Z(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e<n||void 0===e&&n>=n)&&(e=n,r=i);else for(let o of t)null!=(o=n(o,++i,t))&&(e<o||void 0===e&&o>=o)&&(e=o,r=i);return r}function K(t){return Array.from(function*(t){for(const n of t)yield*n}(t))}function Q(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e>n||void 0===e&&n>=n)&&(e=n,r=i);else for(let o of t)null!=(o=n(o,++i,t))&&(e>o||void 0===e&&o>=o)&&(e=o,r=i);return r}function J(t,n){return[t,n]}function tt(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r<i;)o[r]=t+r*e;return o}function nt(t,e=n){if(1===e.length)return Q(t,e);let r,i=-1,o=-1;for(const n of t)++o,(i<0?0===e(n,n):e(n,r)<0)&&(r=n,i=o);return i}var et=rt(Math.random);function rt(t){return function(n,e=0,r=n.length){let i=r-(e=+e);for(;i;){const r=t()*i--|0,o=n[i+e];n[i+e]=n[r+e],n[r+e]=o}return n}}function it(t){if(!(i=t.length))return[];for(var n=-1,e=X(t,ot),r=new Array(e);++n<e;)for(var i,o=-1,a=r[n]=new Array(i);++o<i;)a[o]=t[o][n];return r}function ot(t){return t.length}function at(t){return t instanceof InternSet?t:new InternSet(t)}function ut(t,n){const e=t[Symbol.iterator](),r=new Set;for(const t of n){const n=ct(t);if(r.has(n))continue;let i,o;for(;({value:i,done:o}=e.next());){if(o)return!1;const t=ct(i);if(r.add(t),Object.is(n,t))break}}return!0}function ct(t){return null!==t&&"object"==typeof t?t.valueOf():t}function ft(t){return t}var st=1e-6;function lt(t){return"translate("+t+",0)"}function ht(t){return"translate(0,"+t+")"}function dt(t){return n=>+t(n)}function pt(t,n){return n=Math.max(0,t.bandwidth()-2*n)/2,t.round()&&(n=Math.round(n)),e=>+t(e)+n}function gt(){return!this.__axis}function yt(t,n){var e=[],r=null,i=null,o=6,a=6,u=3,c="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,f=1===t||4===t?-1:1,s=4===t||2===t?"x":"y",l=1===t||3===t?lt:ht;function h(h){var d=null==r?n.ticks?n.ticks.apply(n,e):n.domain():r,p=null==i?n.tickFormat?n.tickFormat.apply(n,e):ft:i,g=Math.max(o,0)+u,y=n.range(),v=+y[0]+c,_=+y[y.length-1]+c,b=(n.bandwidth?pt:dt)(n.copy(),c),m=h.selection?h.selection():h,x=m.selectAll(".domain").data([null]),w=m.selectAll(".tick").data(d,n).order(),M=w.exit(),A=w.enter().append("g").attr("class","tick"),T=w.select("line"),S=w.select("text");x=x.merge(x.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),w=w.merge(A),T=T.merge(A.append("line").attr("stroke","currentColor").attr(s+"2",f*o)),S=S.merge(A.append("text").attr("fill","currentColor").attr(s,f*g).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),h!==m&&(x=x.transition(h),w=w.transition(h),T=T.transition(h),S=S.transition(h),M=M.transition(h).attr("opacity",st).attr("transform",(function(t){return isFinite(t=b(t))?l(t+c):this.getAttribute("transform")})),A.attr("opacity",st).attr("transform",(function(t){var n=this.parentNode.__axis;return l((n&&isFinite(n=n(t))?n:b(t))+c)}))),M.remove(),x.attr("d",4===t||2===t?a?"M"+f*a+","+v+"H"+c+"V"+_+"H"+f*a:"M"+c+","+v+"V"+_:a?"M"+v+","+f*a+"V"+c+"H"+_+"V"+f*a:"M"+v+","+c+"H"+_),w.attr("opacity",1).attr("transform",(function(t){return l(b(t)+c)})),T.attr(s+"2",f*o),S.attr(s,f*g).text(p),m.filter(gt).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),m.each((function(){this.__axis=b}))}return h.scale=function(t){return arguments.length?(n=t,h):n},h.ticks=function(){return e=Array.from(arguments),h},h.tickArguments=function(t){return arguments.length?(e=null==t?[]:Array.from(t),h):e.slice()},h.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),h):r&&r.slice()},h.tickFormat=function(t){return arguments.length?(i=t,h):i},h.tickSize=function(t){return arguments.length?(o=a=+t,h):o},h.tickSizeInner=function(t){return arguments.length?(o=+t,h):o},h.tickSizeOuter=function(t){return arguments.length?(a=+t,h):a},h.tickPadding=function(t){return arguments.length?(u=+t,h):u},h.offset=function(t){return arguments.length?(c=+t,h):c},h}var vt={value:()=>{}};function _t(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new bt(r)}function bt(t){this._=t}function mt(t,n){return t.trim().split(/^|\s+/).map((function(t){var e="",r=t.indexOf(".");if(r>=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}}))}function xt(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function wt(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=vt,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}bt.prototype=_t.prototype={constructor:bt,on:function(t,n){var e,r=this._,i=mt(t+"",r),o=-1,a=i.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++o<a;)if(e=(t=i[o]).type)r[e]=wt(r[e],t.name,n);else if(null==n)for(e in r)r[e]=wt(r[e],t.name,null);return this}for(;++o<a;)if((e=(t=i[o]).type)&&(e=xt(r[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new bt(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),o=0;o<e;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,e=(r=this._[t]).length;o<e;++o)r[o].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};var Mt="http://www.w3.org/1999/xhtml",At={svg:"http://www.w3.org/2000/svg",xhtml:Mt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Tt(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),At.hasOwnProperty(n)?{space:At[n],local:t}:t}function St(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===Mt&&n.documentElement.namespaceURI===Mt?n.createElement(t):n.createElementNS(e,t)}}function Et(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function kt(t){var n=Tt(t);return(n.local?Et:St)(n)}function Nt(){}function Ct(t){return null==t?Nt:function(){return this.querySelector(t)}}function Pt(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function zt(){return[]}function Dt(t){return null==t?zt:function(){return this.querySelectorAll(t)}}function qt(t){return function(){return this.matches(t)}}function Rt(t){return function(n){return n.matches(t)}}var Ft=Array.prototype.find;function Ot(){return this.firstElementChild}var Ut=Array.prototype.filter;function It(){return Array.from(this.children)}function Bt(t){return new Array(t.length)}function Yt(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function Lt(t){return function(){return t}}function jt(t,n,e,r,i,o){for(var a,u=0,c=n.length,f=o.length;u<f;++u)(a=n[u])?(a.__data__=o[u],r[u]=a):e[u]=new Yt(t,o[u]);for(;u<c;++u)(a=n[u])&&(i[u]=a)}function Ht(t,n,e,r,i,o,a){var u,c,f,s=new Map,l=n.length,h=o.length,d=new Array(l);for(u=0;u<l;++u)(c=n[u])&&(d[u]=f=a.call(c,c.__data__,u,n)+"",s.has(f)?i[u]=c:s.set(f,c));for(u=0;u<h;++u)f=a.call(t,o[u],u,o)+"",(c=s.get(f))?(r[u]=c,c.__data__=o[u],s.delete(f)):e[u]=new Yt(t,o[u]);for(u=0;u<l;++u)(c=n[u])&&s.get(d[u])===c&&(i[u]=c)}function Xt(t){return t.__data__}function Gt(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function Vt(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function $t(t){return function(){this.removeAttribute(t)}}function Wt(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Zt(t,n){return function(){this.setAttribute(t,n)}}function Kt(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function Qt(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function Jt(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function tn(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function nn(t){return function(){this.style.removeProperty(t)}}function en(t,n,e){return function(){this.style.setProperty(t,n,e)}}function rn(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function on(t,n){return t.style.getPropertyValue(n)||tn(t).getComputedStyle(t,null).getPropertyValue(n)}function an(t){return function(){delete this[t]}}function un(t,n){return function(){this[t]=n}}function cn(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function fn(t){return t.trim().split(/^|\s+/)}function sn(t){return t.classList||new ln(t)}function ln(t){this._node=t,this._names=fn(t.getAttribute("class")||"")}function hn(t,n){for(var e=sn(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function dn(t,n){for(var e=sn(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function pn(t){return function(){hn(this,t)}}function gn(t){return function(){dn(this,t)}}function yn(t,n){return function(){(n.apply(this,arguments)?hn:dn)(this,t)}}function vn(){this.textContent=""}function _n(t){return function(){this.textContent=t}}function bn(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}function mn(){this.innerHTML=""}function xn(t){return function(){this.innerHTML=t}}function wn(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}function Mn(){this.nextSibling&&this.parentNode.appendChild(this)}function An(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Tn(){return null}function Sn(){var t=this.parentNode;t&&t.removeChild(this)}function En(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function kn(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function Nn(t){return t.trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}function Cn(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.options);++i?n.length=i:delete this.__on}}}function Pn(t,n,e){return function(){var r,i=this.__on,o=function(t){return function(n){t.call(this,n,this.__data__)}}(n);if(i)for(var a=0,u=i.length;a<u;++a)if((r=i[a]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=e),void(r.value=n);this.addEventListener(t.type,o,e),r={type:t.type,name:t.name,value:n,listener:o,options:e},i?i.push(r):this.__on=[r]}}function zn(t,n,e){var r=tn(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function Dn(t,n){return function(){return zn(this,t,n)}}function qn(t,n){return function(){return zn(this,t,n.apply(this,arguments))}}Yt.prototype={constructor:Yt,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}},ln.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Rn=[null];function Fn(t,n){this._groups=t,this._parents=n}function On(){return new Fn([[document.documentElement]],Rn)}function Un(t){return"string"==typeof t?new Fn([[document.querySelector(t)]],[document.documentElement]):new Fn([[t]],Rn)}Fn.prototype=On.prototype={constructor:Fn,select:function(t){"function"!=typeof t&&(t=Ct(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a,u=n[i],c=u.length,f=r[i]=new Array(c),s=0;s<c;++s)(o=u[s])&&(a=t.call(o,o.__data__,s,u))&&("__data__"in o&&(a.__data__=o.__data__),f[s]=a);return new Fn(r,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return Pt(t.apply(this,arguments))}}(t):Dt(t);for(var n=this._groups,e=n.length,r=[],i=[],o=0;o<e;++o)for(var a,u=n[o],c=u.length,f=0;f<c;++f)(a=u[f])&&(r.push(t.call(a,a.__data__,f,u)),i.push(a));return new Fn(r,i)},selectChild:function(t){return this.select(null==t?Ot:function(t){return function(){return Ft.call(this.children,t)}}("function"==typeof t?t:Rt(t)))},selectChildren:function(t){return this.selectAll(null==t?It:function(t){return function(){return Ut.call(this.children,t)}}("function"==typeof t?t:Rt(t)))},filter:function(t){"function"!=typeof t&&(t=qt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new Fn(r,this._parents)},data:function(t,n){if(!arguments.length)return Array.from(this,Xt);var e=n?Ht:jt,r=this._parents,i=this._groups;"function"!=typeof t&&(t=Lt(t));for(var o=i.length,a=new Array(o),u=new Array(o),c=new Array(o),f=0;f<o;++f){var s=r[f],l=i[f],h=l.length,d=Gt(t.call(s,s&&s.__data__,f,r)),p=d.length,g=u[f]=new Array(p),y=a[f]=new Array(p),v=c[f]=new Array(h);e(s,l,g,y,v,d,n);for(var _,b,m=0,x=0;m<p;++m)if(_=g[m]){for(m>=x&&(x=m+1);!(b=y[x])&&++x<p;);_._next=b||null}}return(a=new Fn(a,r))._enter=u,a._exit=c,a},enter:function(){return new Fn(this._enter||this._groups.map(Bt),this._parents)},exit:function(){return new Fn(this._exit||this._groups.map(Bt),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=n&&(i=n(i))&&(i=i.selection()),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,a=Math.min(i,o),u=new Array(i),c=0;c<a;++c)for(var f,s=e[c],l=r[c],h=s.length,d=u[c]=new Array(h),p=0;p<h;++p)(f=s[p]||l[p])&&(d[p]=f);for(;c<i;++c)u[c]=e[c];return new Fn(u,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=Vt);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var a,u=e[o],c=u.length,f=i[o]=new Array(c),s=0;s<c;++s)(a=u[s])&&(f[s]=a);f.sort(n)}return new Fn(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null},size:function(){let t=0;for(const n of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],a=0,u=o.length;a<u;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this},attr:function(t,n){var e=Tt(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?Wt:$t:"function"==typeof n?e.local?Jt:Qt:e.local?Kt:Zt)(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?nn:"function"==typeof n?rn:en)(t,n,null==e?"":e)):on(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?an:"function"==typeof n?cn:un)(t,n)):this.node()[t]},classed:function(t,n){var e=fn(t+"");if(arguments.length<2){for(var r=sn(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?yn:n?pn:gn)(e,n))},text:function(t){return arguments.length?this.each(null==t?vn:("function"==typeof t?bn:_n)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?mn:("function"==typeof t?wn:xn)(t)):this.node().innerHTML},raise:function(){return this.each(Mn)},lower:function(){return this.each(An)},append:function(t){var n="function"==typeof t?t:kt(t);return this.select((function(){return this.appendChild(n.apply(this,arguments))}))},insert:function(t,n){var e="function"==typeof t?t:kt(t),r=null==n?Tn:"function"==typeof n?n:Ct(n);return this.select((function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(Sn)},clone:function(t){return this.select(t?kn:En)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,o=Nn(t+""),a=o.length;if(!(arguments.length<2)){for(u=n?Pn:Cn,r=0;r<a;++r)this.each(u(o[r],n,e));return this}var u=this.node().__on;if(u)for(var c,f=0,s=u.length;f<s;++f)for(r=0,c=u[f];r<a;++r)if((i=o[r]).type===c.type&&i.name===c.name)return c.value},dispatch:function(t,n){return this.each(("function"==typeof n?qn:Dn)(t,n))},[Symbol.iterator]:function*(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r,i=t[n],o=0,a=i.length;o<a;++o)(r=i[o])&&(yield r)}};var In=0;function Bn(){return new Yn}function Yn(){this._="@"+(++In).toString(36)}function Ln(t){let n;for(;n=t.sourceEvent;)t=n;return t}function jn(t,n){if(t=Ln(t),void 0===n&&(n=t.currentTarget),n){var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,[(r=r.matrixTransform(n.getScreenCTM().inverse())).x,r.y]}if(n.getBoundingClientRect){var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}}return[t.pageX,t.pageY]}Yn.prototype=Bn.prototype={constructor:Yn,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};const Hn={passive:!1},Xn={capture:!0,passive:!1};function Gn(t){t.stopImmediatePropagation()}function Vn(t){t.preventDefault(),t.stopImmediatePropagation()}function $n(t){var n=t.document.documentElement,e=Un(t).on("dragstart.drag",Vn,Xn);"onselectstart"in n?e.on("selectstart.drag",Vn,Xn):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}function Wn(t,n){var e=t.document.documentElement,r=Un(t).on("dragstart.drag",null);n&&(r.on("click.drag",Vn,Xn),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in e?r.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}var Zn=t=>()=>t;function Kn(t,{sourceEvent:n,subject:e,target:r,identifier:i,active:o,x:a,y:u,dx:c,dy:f,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:e,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:u,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:f,enumerable:!0,configurable:!0},_:{value:s}})}function Qn(t){return!t.ctrlKey&&!t.button}function Jn(){return this.parentNode}function te(t,n){return null==n?{x:t.x,y:t.y}:n}function ne(){return navigator.maxTouchPoints||"ontouchstart"in this}function ee(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function re(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function ie(){}Kn.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var oe=.7,ae=1/oe,ue="\\s*([+-]?\\d+)\\s*",ce="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",fe="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",se=/^#([0-9a-f]{3,8})$/,le=new RegExp("^rgb\\("+[ue,ue,ue]+"\\)$"),he=new RegExp("^rgb\\("+[fe,fe,fe]+"\\)$"),de=new RegExp("^rgba\\("+[ue,ue,ue,ce]+"\\)$"),pe=new RegExp("^rgba\\("+[fe,fe,fe,ce]+"\\)$"),ge=new RegExp("^hsl\\("+[ce,fe,fe]+"\\)$"),ye=new RegExp("^hsla\\("+[ce,fe,fe,ce]+"\\)$"),ve={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 _e(){return this.rgb().formatHex()}function be(){return this.rgb().formatRgb()}function me(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=se.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?xe(n):3===e?new Te(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?we(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?we(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=le.exec(t))?new Te(n[1],n[2],n[3],1):(n=he.exec(t))?new Te(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=de.exec(t))?we(n[1],n[2],n[3],n[4]):(n=pe.exec(t))?we(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=ge.exec(t))?Ne(n[1],n[2]/100,n[3]/100,1):(n=ye.exec(t))?Ne(n[1],n[2]/100,n[3]/100,n[4]):ve.hasOwnProperty(t)?xe(ve[t]):"transparent"===t?new Te(NaN,NaN,NaN,0):null}function xe(t){return new Te(t>>16&255,t>>8&255,255&t,1)}function we(t,n,e,r){return r<=0&&(t=n=e=NaN),new Te(t,n,e,r)}function Me(t){return t instanceof ie||(t=me(t)),t?new Te((t=t.rgb()).r,t.g,t.b,t.opacity):new Te}function Ae(t,n,e,r){return 1===arguments.length?Me(t):new Te(t,n,e,null==r?1:r)}function Te(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Se(){return"#"+ke(this.r)+ke(this.g)+ke(this.b)}function Ee(){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+")")}function ke(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Ne(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new ze(t,n,e,r)}function Ce(t){if(t instanceof ze)return new ze(t.h,t.s,t.l,t.opacity);if(t instanceof ie||(t=me(t)),!t)return new ze;if(t instanceof ze)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e<r):e===o?(r-n)/u+2:(n-e)/u+4,u/=c<.5?o+i:2-o-i,a*=60):u=c>0&&c<1?0:a,new ze(a,u,c,t.opacity)}function Pe(t,n,e,r){return 1===arguments.length?Ce(t):new ze(t,n,e,null==r?1:r)}function ze(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function De(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}ee(ie,me,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:_e,formatHex:_e,formatHsl:function(){return Ce(this).formatHsl()},formatRgb:be,toString:be}),ee(Te,Ae,re(ie,{brighter:function(t){return t=null==t?ae:Math.pow(ae,t),new Te(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?oe:Math.pow(oe,t),new Te(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Se,formatHex:Se,formatRgb:Ee,toString:Ee})),ee(ze,Pe,re(ie,{brighter:function(t){return t=null==t?ae:Math.pow(ae,t),new ze(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?oe:Math.pow(oe,t),new ze(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new Te(De(t>=240?t-240:t+120,i,r),De(t,i,r),De(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const qe=Math.PI/180,Re=180/Math.PI,Fe=.96422,Oe=.82521,Ue=4/29,Ie=6/29,Be=3*Ie*Ie;function Ye(t){if(t instanceof je)return new je(t.l,t.a,t.b,t.opacity);if(t instanceof Ze)return Ke(t);t instanceof Te||(t=Me(t));var n,e,r=Ve(t.r),i=Ve(t.g),o=Ve(t.b),a=He((.2225045*r+.7168786*i+.0606169*o)/1);return r===i&&i===o?n=e=a:(n=He((.4360747*r+.3850649*i+.1430804*o)/Fe),e=He((.0139322*r+.0971045*i+.7141733*o)/Oe)),new je(116*a-16,500*(n-a),200*(a-e),t.opacity)}function Le(t,n,e,r){return 1===arguments.length?Ye(t):new je(t,n,e,null==r?1:r)}function je(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function He(t){return t>.008856451679035631?Math.pow(t,1/3):t/Be+Ue}function Xe(t){return t>Ie?t*t*t:Be*(t-Ue)}function Ge(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ve(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function $e(t){if(t instanceof Ze)return new Ze(t.h,t.c,t.l,t.opacity);if(t instanceof je||(t=Ye(t)),0===t.a&&0===t.b)return new Ze(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var n=Math.atan2(t.b,t.a)*Re;return new Ze(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function We(t,n,e,r){return 1===arguments.length?$e(t):new Ze(t,n,e,null==r?1:r)}function Ze(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function Ke(t){if(isNaN(t.h))return new je(t.l,0,0,t.opacity);var n=t.h*qe;return new je(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}ee(je,Le,re(ie,{brighter:function(t){return new je(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new je(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return new Te(Ge(3.1338561*(n=Fe*Xe(n))-1.6168667*(t=1*Xe(t))-.4906146*(e=Oe*Xe(e))),Ge(-.9787684*n+1.9161415*t+.033454*e),Ge(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}})),ee(Ze,We,re(ie,{brighter:function(t){return new Ze(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new Ze(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Ke(this).rgb()}}));var Qe=-.14861,Je=1.78277,tr=-.29227,nr=-.90649,er=1.97294,rr=er*nr,ir=er*Je,or=Je*tr-nr*Qe;function ar(t){if(t instanceof cr)return new cr(t.h,t.s,t.l,t.opacity);t instanceof Te||(t=Me(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(or*r+rr*n-ir*e)/(or+rr-ir),o=r-i,a=(er*(e-i)-tr*o)/nr,u=Math.sqrt(a*a+o*o)/(er*i*(1-i)),c=u?Math.atan2(a,o)*Re-120:NaN;return new cr(c<0?c+360:c,u,i,t.opacity)}function ur(t,n,e,r){return 1===arguments.length?ar(t):new cr(t,n,e,null==r?1:r)}function cr(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function fr(t,n,e,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*n+(4-6*o+3*a)*e+(1+3*t+3*o-3*a)*r+a*i)/6}function sr(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r<n-1?t[r+2]:2*o-i;return fr((e-r/n)*n,a,i,o,u)}}function lr(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],a=t[(r+1)%n],u=t[(r+2)%n];return fr((e-r/n)*n,i,o,a,u)}}ee(cr,ur,re(ie,{brighter:function(t){return t=null==t?ae:Math.pow(ae,t),new cr(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?oe:Math.pow(oe,t),new cr(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*qe,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new Te(255*(n+e*(Qe*r+Je*i)),255*(n+e*(tr*r+nr*i)),255*(n+e*(er*r)),this.opacity)}}));var hr=t=>()=>t;function dr(t,n){return function(e){return t+e*n}}function pr(t,n){var e=n-t;return e?dr(t,e>180||e<-180?e-360*Math.round(e/360):e):hr(isNaN(t)?n:t)}function gr(t){return 1==(t=+t)?yr:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):hr(isNaN(n)?e:n)}}function yr(t,n){var e=n-t;return e?dr(t,e):hr(isNaN(t)?n:t)}var vr=function t(n){var e=gr(n);function r(t,n){var r=e((t=Ae(t)).r,(n=Ae(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=yr(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function _r(t){return function(n){var e,r,i=n.length,o=new Array(i),a=new Array(i),u=new Array(i);for(e=0;e<i;++e)r=Ae(n[e]),o[e]=r.r||0,a[e]=r.g||0,u[e]=r.b||0;return o=t(o),a=t(a),u=t(u),r.opacity=1,function(t){return r.r=o(t),r.g=a(t),r.b=u(t),r+""}}}var br=_r(sr),mr=_r(lr);function xr(t,n){n||(n=[]);var e,r=t?Math.min(n.length,t.length):0,i=n.slice();return function(o){for(e=0;e<r;++e)i[e]=t[e]*(1-o)+n[e]*o;return i}}function wr(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Mr(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),a=new Array(r);for(e=0;e<i;++e)o[e]=Cr(t[e],n[e]);for(;e<r;++e)a[e]=n[e];return function(t){for(e=0;e<i;++e)a[e]=o[e](t);return a}}function Ar(t,n){var e=new Date;return t=+t,n=+n,function(r){return e.setTime(t*(1-r)+n*r),e}}function Tr(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}function Sr(t,n){var e,r={},i={};for(e in null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={}),n)e in t?r[e]=Cr(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}}var Er=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,kr=new RegExp(Er.source,"g");function Nr(t,n){var e,r,i,o=Er.lastIndex=kr.lastIndex=0,a=-1,u=[],c=[];for(t+="",n+="";(e=Er.exec(t))&&(r=kr.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:Tr(e,r)})),o=kr.lastIndex;return o<n.length&&(i=n.slice(o),u[a]?u[a]+=i:u[++a]=i),u.length<2?c[0]?function(t){return function(n){return t(n)+""}}(c[0].x):function(t){return function(){return t}}(n):(n=c.length,function(t){for(var e,r=0;r<n;++r)u[(e=c[r]).i]=e.x(t);return u.join("")})}function Cr(t,n){var e,r=typeof n;return null==n||"boolean"===r?hr(n):("number"===r?Tr:"string"===r?(e=me(n))?(n=e,vr):Nr:n instanceof me?vr:n instanceof Date?Ar:wr(n)?xr:Array.isArray(n)?Mr:"function"!=typeof n.valueOf&&"function"!=typeof n.toString||isNaN(n)?Sr:Tr)(t,n)}function Pr(t,n){return t=+t,n=+n,function(e){return Math.round(t*(1-e)+n*e)}}var zr,Dr=180/Math.PI,qr={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Rr(t,n,e,r,i,o){var a,u,c;return(a=Math.sqrt(t*t+n*n))&&(t/=a,n/=a),(c=t*e+n*r)&&(e-=t*c,r-=n*c),(u=Math.sqrt(e*e+r*r))&&(e/=u,r/=u,c/=u),t*r<n*e&&(t=-t,n=-n,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Dr,skewX:Math.atan(c)*Dr,scaleX:a,scaleY:u}}function Fr(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,a){var u=[],c=[];return o=t(o),a=t(a),function(t,r,i,o,a,u){if(t!==i||r!==o){var c=a.push("translate(",null,n,null,e);u.push({i:c-4,x:Tr(t,i)},{i:c-2,x:Tr(r,o)})}else(i||o)&&a.push("translate("+i+n+o+e)}(o.translateX,o.translateY,a.translateX,a.translateY,u,c),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Tr(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,u,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Tr(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,u,c),function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:Tr(t,e)},{i:u-2,x:Tr(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var n,e=-1,r=c.length;++e<r;)u[(n=c[e]).i]=n.x(t);return u.join("")}}}var Or=Fr((function(t){const n=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?qr:Rr(n.a,n.b,n.c,n.d,n.e,n.f)}),"px, ","px)","deg)"),Ur=Fr((function(t){return null==t?qr:(zr||(zr=document.createElementNS("http://www.w3.org/2000/svg","g")),zr.setAttribute("transform",t),(t=zr.transform.baseVal.consolidate())?Rr((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):qr)}),", ",")",")");function Ir(t){return((t=Math.exp(t))+1/t)/2}var Br=function t(n,e,r){function i(t,i){var o,a,u=t[0],c=t[1],f=t[2],s=i[0],l=i[1],h=i[2],d=s-u,p=l-c,g=d*d+p*p;if(g<1e-12)a=Math.log(h/f)/n,o=function(t){return[u+t*d,c+t*p,f*Math.exp(n*t*a)]};else{var y=Math.sqrt(g),v=(h*h-f*f+r*g)/(2*f*e*y),_=(h*h-f*f-r*g)/(2*h*e*y),b=Math.log(Math.sqrt(v*v+1)-v),m=Math.log(Math.sqrt(_*_+1)-_);a=(m-b)/n,o=function(t){var r=t*a,i=Ir(b),o=f/(e*y)*(i*function(t){return((t=Math.exp(2*t))-1)/(t+1)}(n*r+b)-function(t){return((t=Math.exp(t))-1/t)/2}(b));return[u+o*d,c+o*p,f*i/Ir(n*r+b)]}}return o.duration=1e3*a*n/Math.SQRT2,o}return i.rho=function(n){var e=Math.max(.001,+n),r=e*e;return t(e,r,r*r)},i}(Math.SQRT2,2,4);function Yr(t){return function(n,e){var r=t((n=Pe(n)).h,(e=Pe(e)).h),i=yr(n.s,e.s),o=yr(n.l,e.l),a=yr(n.opacity,e.opacity);return function(t){return n.h=r(t),n.s=i(t),n.l=o(t),n.opacity=a(t),n+""}}}var Lr=Yr(pr),jr=Yr(yr);function Hr(t){return function(n,e){var r=t((n=We(n)).h,(e=We(e)).h),i=yr(n.c,e.c),o=yr(n.l,e.l),a=yr(n.opacity,e.opacity);return function(t){return n.h=r(t),n.c=i(t),n.l=o(t),n.opacity=a(t),n+""}}}var Xr=Hr(pr),Gr=Hr(yr);function Vr(t){return function n(e){function r(n,r){var i=t((n=ur(n)).h,(r=ur(r)).h),o=yr(n.s,r.s),a=yr(n.l,r.l),u=yr(n.opacity,r.opacity);return function(t){return n.h=i(t),n.s=o(t),n.l=a(Math.pow(t,e)),n.opacity=u(t),n+""}}return e=+e,r.gamma=n,r}(1)}var $r=Vr(pr),Wr=Vr(yr);function Zr(t,n){void 0===n&&(n=t,t=Cr);for(var e=0,r=n.length-1,i=n[0],o=new Array(r<0?0:r);e<r;)o[e]=t(i,i=n[++e]);return function(t){var n=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return o[n](t-n)}}var Kr,Qr,Jr=0,ti=0,ni=0,ei=0,ri=0,ii=0,oi="object"==typeof performance&&performance.now?performance:Date,ai="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function ui(){return ri||(ai(ci),ri=oi.now()+ii)}function ci(){ri=0}function fi(){this._call=this._time=this._next=null}function si(t,n,e){var r=new fi;return r.restart(t,n,e),r}function li(){ui(),++Jr;for(var t,n=Kr;n;)(t=ri-n._time)>=0&&n._call.call(void 0,t),n=n._next;--Jr}function hi(){ri=(ei=oi.now())+ii,Jr=ti=0;try{li()}finally{Jr=0,function(){var t,n,e=Kr,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Kr=n);Qr=t,pi(r)}(),ri=0}}function di(){var t=oi.now(),n=t-ei;n>1e3&&(ii-=n,ei=t)}function pi(t){Jr||(ti&&(ti=clearTimeout(ti)),t-ri>24?(t<1/0&&(ti=setTimeout(hi,t-oi.now()-ii)),ni&&(ni=clearInterval(ni))):(ni||(ei=oi.now(),ni=setInterval(di,1e3)),Jr=1,ai(hi)))}function gi(t,n,e){var r=new fi;return n=null==n?0:+n,r.restart((e=>{r.stop(),t(e+n)}),n,e),r}fi.prototype=si.prototype={constructor:fi,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?ui():+e)+(null==n?0:+n),this._next||Qr===this||(Qr?Qr._next=this:Kr=this,Qr=this),this._call=t,this._time=e,pi()},stop:function(){this._call&&(this._call=null,this._time=1/0,pi())}};var yi=_t("start","end","cancel","interrupt"),vi=[];function _i(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=1,e.timer.restart(a,e.delay,e.time),e.delay<=t&&a(t-e.delay)}function a(o){var f,s,l,h;if(1!==e.state)return c();for(f in i)if((h=i[f]).name===e.name){if(3===h.state)return gi(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[f]):+f<n&&(h.state=6,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete i[f])}if(gi((function(){3===e.state&&(e.state=4,e.timer.restart(u,e.delay,e.time),u(o))})),e.state=2,e.on.call("start",t,t.__data__,e.index,e.group),2===e.state){for(e.state=3,r=new Array(l=e.tween.length),f=0,s=-1;f<l;++f)(h=e.tween[f].value.call(t,t.__data__,e.index,e.group))&&(r[++s]=h);r.length=s+1}}function u(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(c),e.state=5,1),o=-1,a=r.length;++o<a;)r[o].call(t,i);5===e.state&&(e.on.call("end",t,t.__data__,e.index,e.group),c())}function c(){for(var r in e.state=6,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=si(o,0,e.time)}(t,e,{name:n,index:r,group:i,on:yi,tween:vi,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:0})}function bi(t,n){var e=xi(t,n);if(e.state>0)throw new Error("too late; already scheduled");return e}function mi(t,n){var e=xi(t,n);if(e.state>3)throw new Error("too late; already running");return e}function xi(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function wi(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>2&&e.state<5,e.state=6,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):a=!1;a&&delete t.__transition}}function Mi(t,n){var e,r;return function(){var i=mi(this,t),o=i.tween;if(o!==e)for(var a=0,u=(r=e=o).length;a<u;++a)if(r[a].name===n){(r=r.slice()).splice(a,1);break}i.tween=r}}function Ai(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=mi(this,t),a=o.tween;if(a!==r){i=(r=a).slice();for(var u={name:n,value:e},c=0,f=i.length;c<f;++c)if(i[c].name===n){i[c]=u;break}c===f&&i.push(u)}o.tween=i}}function Ti(t,n,e){var r=t._id;return t.each((function(){var t=mi(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)})),function(t){return xi(t,r).value[n]}}function Si(t,n){var e;return("number"==typeof n?Tr:n instanceof me?vr:(e=me(n))?(n=e,vr):Nr)(t,n)}function Ei(t){return function(){this.removeAttribute(t)}}function ki(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Ni(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttribute(t);return a===o?null:a===r?i:i=n(r=a,e)}}function Ci(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===r?i:i=n(r=a,e)}}function Pi(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttribute(t))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttribute(t)}}function zi(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttributeNS(t.space,t.local))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttributeNS(t.space,t.local)}}function Di(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}function qi(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}function Ri(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&qi(t,i)),e}return i._value=n,i}function Fi(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&Di(t,i)),e}return i._value=n,i}function Oi(t,n){return function(){bi(this,t).delay=+n.apply(this,arguments)}}function Ui(t,n){return n=+n,function(){bi(this,t).delay=n}}function Ii(t,n){return function(){mi(this,t).duration=+n.apply(this,arguments)}}function Bi(t,n){return n=+n,function(){mi(this,t).duration=n}}function Yi(t,n){if("function"!=typeof n)throw new Error;return function(){mi(this,t).ease=n}}function Li(t,n,e){var r,i,o=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?bi:mi;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}var ji=On.prototype.constructor;function Hi(t){return function(){this.style.removeProperty(t)}}function Xi(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function Gi(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&Xi(t,o,e)),r}return o._value=n,o}function Vi(t){return function(n){this.textContent=t.call(this,n)}}function $i(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&Vi(r)),n}return r._value=t,r}var Wi=0;function Zi(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function Ki(t){return On().transition(t)}function Qi(){return++Wi}var Ji=On.prototype;Zi.prototype=Ki.prototype={constructor:Zi,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=Ct(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;a<i;++a)for(var u,c,f=r[a],s=f.length,l=o[a]=new Array(s),h=0;h<s;++h)(u=f[h])&&(c=t.call(u,u.__data__,h,f))&&("__data__"in u&&(c.__data__=u.__data__),l[h]=c,_i(l[h],n,e,h,l,xi(u,e)));return new Zi(o,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=Dt(t));for(var r=this._groups,i=r.length,o=[],a=[],u=0;u<i;++u)for(var c,f=r[u],s=f.length,l=0;l<s;++l)if(c=f[l]){for(var h,d=t.call(c,c.__data__,l,f),p=xi(c,e),g=0,y=d.length;g<y;++g)(h=d[g])&&_i(h,n,e,g,d,p);o.push(d),a.push(c)}return new Zi(o,a,n,e)},selectChild:Ji.selectChild,selectChildren:Ji.selectChildren,filter:function(t){"function"!=typeof t&&(t=qt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new Zi(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),a=new Array(r),u=0;u<o;++u)for(var c,f=n[u],s=e[u],l=f.length,h=a[u]=new Array(l),d=0;d<l;++d)(c=f[d]||s[d])&&(h[d]=c);for(;u<r;++u)a[u]=n[u];return new Zi(a,this._parents,this._name,this._id)},selection:function(){return new ji(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=Qi(),r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)if(a=u[f]){var s=xi(a,n);_i(a,t,e,f,u,{time:s.time+s.delay+s.duration,delay:0,duration:s.duration,ease:s.ease})}return new Zi(r,this._parents,t,e)},call:Ji.call,nodes:Ji.nodes,node:Ji.node,size:Ji.size,empty:Ji.empty,each:Ji.each,on:function(t,n){var e=this._id;return arguments.length<2?xi(this.node(),e).on.on(t):this.each(Li(e,t,n))},attr:function(t,n){var e=Tt(t),r="transform"===e?Ur:Si;return this.attrTween(t,"function"==typeof n?(e.local?zi:Pi)(e,r,Ti(this,"attr."+t,n)):null==n?(e.local?ki:Ei)(e):(e.local?Ci:Ni)(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=Tt(t);return this.tween(e,(r.local?Ri:Fi)(r,n))},style:function(t,n,e){var r="transform"==(t+="")?Or:Si;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=on(this,t),a=(this.style.removeProperty(t),on(this,t));return o===a?null:o===e&&a===r?i:i=n(e=o,r=a)}}(t,r)).on("end.style."+t,Hi(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var a=on(this,t),u=e(this),c=u+"";return null==u&&(this.style.removeProperty(t),c=u=on(this,t)),a===c?null:a===r&&c===i?o:(i=c,o=n(r=a,u))}}(t,r,Ti(this,"style."+t,n))).each(function(t,n){var e,r,i,o,a="style."+n,u="end."+a;return function(){var c=mi(this,t),f=c.on,s=null==c.value[a]?o||(o=Hi(n)):void 0;f===e&&i===s||(r=(e=f).copy()).on(u,i=s),c.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var a=on(this,t);return a===o?null:a===r?i:i=n(r=a,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,Gi(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(Ti(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,$i(t))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=xi(this.node(),e).tween,o=0,a=i.length;o<a;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?Mi:Ai)(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?Oi:Ui)(n,t)):xi(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?Ii:Bi)(n,t)):xi(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(Yi(n,t)):xi(this.node(),n).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,n){return function(){var e=n.apply(this,arguments);if("function"!=typeof e)throw new Error;mi(this,t).ease=e}}(this._id,t))},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise((function(o,a){var u={value:a},c={value:function(){0==--i&&o()}};e.each((function(){var e=mi(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(u),n._.interrupt.push(u),n._.end.push(c)),e.on=n})),0===i&&o()}))},[Symbol.iterator]:Ji[Symbol.iterator]};function to(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function no(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var eo=function t(n){function e(t){return Math.pow(t,n)}return n=+n,e.exponent=t,e}(3),ro=function t(n){function e(t){return 1-Math.pow(1-t,n)}return n=+n,e.exponent=t,e}(3),io=function t(n){function e(t){return((t*=2)<=1?Math.pow(t,n):2-Math.pow(2-t,n))/2}return n=+n,e.exponent=t,e}(3),oo=Math.PI,ao=oo/2;function uo(t){return(1-Math.cos(oo*t))/2}function co(t){return 1.0009775171065494*(Math.pow(2,-10*t)-.0009765625)}function fo(t){return((t*=2)<=1?co(1-t):2-co(t-1))/2}function so(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var lo=4/11,ho=7.5625;function po(t){return(t=+t)<lo?ho*t*t:t<.7272727272727273?ho*(t-=.5454545454545454)*t+.75:t<.9090909090909091?ho*(t-=.8181818181818182)*t+.9375:ho*(t-=.9545454545454546)*t+.984375}var go=1.70158,yo=function t(n){function e(t){return(t=+t)*t*(n*(t-1)+t)}return n=+n,e.overshoot=t,e}(go),vo=function t(n){function e(t){return--t*t*((t+1)*n+t)+1}return n=+n,e.overshoot=t,e}(go),_o=function t(n){function e(t){return((t*=2)<1?t*t*((n+1)*t-n):(t-=2)*t*((n+1)*t+n)+2)/2}return n=+n,e.overshoot=t,e}(go),bo=2*Math.PI,mo=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=bo);function i(t){return n*co(- --t)*Math.sin((r-t)/e)}return i.amplitude=function(n){return t(n,e*bo)},i.period=function(e){return t(n,e)},i}(1,.3),xo=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=bo);function i(t){return 1-n*co(t=+t)*Math.sin((t+r)/e)}return i.amplitude=function(n){return t(n,e*bo)},i.period=function(e){return t(n,e)},i}(1,.3),wo=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=bo);function i(t){return((t=2*t-1)<0?n*co(-t)*Math.sin((r-t)/e):2-n*co(t)*Math.sin((r+t)/e))/2}return i.amplitude=function(n){return t(n,e*bo)},i.period=function(e){return t(n,e)},i}(1,.3),Mo={time:null,delay:0,duration:250,ease:no};function Ao(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}On.prototype.interrupt=function(t){return this.each((function(){wi(this,t)}))},On.prototype.transition=function(t){var n,e;t instanceof Zi?(n=t._id,t=t._name):(n=Qi(),(e=Mo).time=ui(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)(a=u[f])&&_i(a,t,n,f,u,e||Ao(a,n));return new Zi(r,this._parents,t,n)};var To=[null];var So=t=>()=>t;function Eo(t,{sourceEvent:n,target:e,selection:r,mode:i,dispatch:o}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},selection:{value:r,enumerable:!0,configurable:!0},mode:{value:i,enumerable:!0,configurable:!0},_:{value:o}})}function ko(t){t.stopImmediatePropagation()}function No(t){t.preventDefault(),t.stopImmediatePropagation()}var Co={name:"drag"},Po={name:"space"},zo={name:"handle"},Do={name:"center"};const{abs:qo,max:Ro,min:Fo}=Math;function Oo(t){return[+t[0],+t[1]]}function Uo(t){return[Oo(t[0]),Oo(t[1])]}var Io={name:"x",handles:["w","e"].map(Vo),input:function(t,n){return null==t?null:[[+t[0],n[0][1]],[+t[1],n[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},Bo={name:"y",handles:["n","s"].map(Vo),input:function(t,n){return null==t?null:[[n[0][0],+t[0]],[n[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},Yo={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(Vo),input:function(t){return null==t?null:Uo(t)},output:function(t){return t}},Lo={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},jo={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},Ho={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},Xo={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},Go={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function Vo(t){return{type:t}}function $o(t){return!t.ctrlKey&&!t.button}function Wo(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function Zo(){return navigator.maxTouchPoints||"ontouchstart"in this}function Ko(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function Qo(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function Jo(t){var n,e=Wo,r=$o,i=Zo,o=!0,a=_t("start","brush","end"),u=6;function c(n){var e=n.property("__brush",g).selectAll(".overlay").data([Vo("overlay")]);e.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",Lo.overlay).merge(e).each((function(){var t=Ko(this).extent;Un(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),n.selectAll(".selection").data([Vo("selection")]).enter().append("rect").attr("class","selection").attr("cursor",Lo.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=n.selectAll(".handle").data(t.handles,(function(t){return t.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return Lo[t.type]})),n.each(f).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",h).filter(i).on("touchstart.brush",h).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function f(){var t=Un(this),n=Ko(this).selection;n?(t.selectAll(".selection").style("display",null).attr("x",n[0][0]).attr("y",n[0][1]).attr("width",n[1][0]-n[0][0]).attr("height",n[1][1]-n[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?n[1][0]-u/2:n[0][0]-u/2})).attr("y",(function(t){return"s"===t.type[0]?n[1][1]-u/2:n[0][1]-u/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?n[1][0]-n[0][0]+u:u})).attr("height",(function(t){return"e"===t.type||"w"===t.type?n[1][1]-n[0][1]+u:u}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function s(t,n,e){var r=t.__brush.emitter;return!r||e&&r.clean?new l(t,n,e):r}function l(t,n,e){this.that=t,this.args=n,this.state=t.__brush,this.active=0,this.clean=e}function h(e){if((!n||e.touches)&&r.apply(this,arguments)){var i,a,u,c,l,h,d,p,g,y,v,_=this,b=e.target.__data__.type,m="selection"===(o&&e.metaKey?b="overlay":b)?Co:o&&e.altKey?Do:zo,x=t===Bo?null:Xo[b],w=t===Io?null:Go[b],M=Ko(_),A=M.extent,T=M.selection,S=A[0][0],E=A[0][1],k=A[1][0],N=A[1][1],C=0,P=0,z=x&&w&&o&&e.shiftKey,D=Array.from(e.touches||[e],(t=>{const n=t.identifier;return(t=jn(t,_)).point0=t.slice(),t.identifier=n,t}));wi(_);var q=s(_,arguments,!0).beforestart();if("overlay"===b){T&&(g=!0);const n=[D[0],D[1]||D[0]];M.selection=T=[[i=t===Bo?S:Fo(n[0][0],n[1][0]),u=t===Io?E:Fo(n[0][1],n[1][1])],[l=t===Bo?k:Ro(n[0][0],n[1][0]),d=t===Io?N:Ro(n[0][1],n[1][1])]],D.length>1&&I(e)}else i=T[0][0],u=T[0][1],l=T[1][0],d=T[1][1];a=i,c=u,h=l,p=d;var R=Un(_).attr("pointer-events","none"),F=R.selectAll(".overlay").attr("cursor",Lo[b]);if(e.touches)q.moved=U,q.ended=B;else{var O=Un(e.view).on("mousemove.brush",U,!0).on("mouseup.brush",B,!0);o&&O.on("keydown.brush",Y,!0).on("keyup.brush",L,!0),$n(e.view)}f.call(_),q.start(e,m.name)}function U(t){for(const n of t.changedTouches||[t])for(const t of D)t.identifier===n.identifier&&(t.cur=jn(n,_));if(z&&!y&&!v&&1===D.length){const t=D[0];qo(t.cur[0]-t[0])>qo(t.cur[1]-t[1])?v=!0:y=!0}for(const t of D)t.cur&&(t[0]=t.cur[0],t[1]=t.cur[1]);g=!0,No(t),I(t)}function I(t){const n=D[0],e=n.point0;var r;switch(C=n[0]-e[0],P=n[1]-e[1],m){case Po:case Co:x&&(C=Ro(S-i,Fo(k-l,C)),a=i+C,h=l+C),w&&(P=Ro(E-u,Fo(N-d,P)),c=u+P,p=d+P);break;case zo:D[1]?(x&&(a=Ro(S,Fo(k,D[0][0])),h=Ro(S,Fo(k,D[1][0])),x=1),w&&(c=Ro(E,Fo(N,D[0][1])),p=Ro(E,Fo(N,D[1][1])),w=1)):(x<0?(C=Ro(S-i,Fo(k-i,C)),a=i+C,h=l):x>0&&(C=Ro(S-l,Fo(k-l,C)),a=i,h=l+C),w<0?(P=Ro(E-u,Fo(N-u,P)),c=u+P,p=d):w>0&&(P=Ro(E-d,Fo(N-d,P)),c=u,p=d+P));break;case Do:x&&(a=Ro(S,Fo(k,i-C*x)),h=Ro(S,Fo(k,l+C*x))),w&&(c=Ro(E,Fo(N,u-P*w)),p=Ro(E,Fo(N,d+P*w)))}h<a&&(x*=-1,r=i,i=l,l=r,r=a,a=h,h=r,b in jo&&F.attr("cursor",Lo[b=jo[b]])),p<c&&(w*=-1,r=u,u=d,d=r,r=c,c=p,p=r,b in Ho&&F.attr("cursor",Lo[b=Ho[b]])),M.selection&&(T=M.selection),y&&(a=T[0][0],h=T[1][0]),v&&(c=T[0][1],p=T[1][1]),T[0][0]===a&&T[0][1]===c&&T[1][0]===h&&T[1][1]===p||(M.selection=[[a,c],[h,p]],f.call(_),q.brush(t,m.name))}function B(t){if(ko(t),t.touches){if(t.touches.length)return;n&&clearTimeout(n),n=setTimeout((function(){n=null}),500)}else Wn(t.view,g),O.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);R.attr("pointer-events","all"),F.attr("cursor",Lo.overlay),M.selection&&(T=M.selection),Qo(T)&&(M.selection=null,f.call(_)),q.end(t,m.name)}function Y(t){switch(t.keyCode){case 16:z=x&&w;break;case 18:m===zo&&(x&&(l=h-C*x,i=a+C*x),w&&(d=p-P*w,u=c+P*w),m=Do,I(t));break;case 32:m!==zo&&m!==Do||(x<0?l=h-C:x>0&&(i=a-C),w<0?d=p-P:w>0&&(u=c-P),m=Po,F.attr("cursor",Lo.selection),I(t));break;default:return}No(t)}function L(t){switch(t.keyCode){case 16:z&&(y=v=z=!1,I(t));break;case 18:m===Do&&(x<0?l=h:x>0&&(i=a),w<0?d=p:w>0&&(u=c),m=zo,I(t));break;case 32:m===Po&&(t.altKey?(x&&(l=h-C*x,i=a+C*x),w&&(d=p-P*w,u=c+P*w),m=Do):(x<0?l=h:x>0&&(i=a),w<0?d=p:w>0&&(u=c),m=zo),F.attr("cursor",Lo[b]),I(t));break;default:return}No(t)}}function d(t){s(this,arguments).moved(t)}function p(t){s(this,arguments).ended(t)}function g(){var n=this.__brush||{selection:null};return n.extent=Uo(e.apply(this,arguments)),n.dim=t,n}return c.move=function(n,e,r){n.tween?n.on("start.brush",(function(t){s(this,arguments).beforestart().start(t)})).on("interrupt.brush end.brush",(function(t){s(this,arguments).end(t)})).tween("brush",(function(){var n=this,r=n.__brush,i=s(n,arguments),o=r.selection,a=t.input("function"==typeof e?e.apply(this,arguments):e,r.extent),u=Cr(o,a);function c(t){r.selection=1===t&&null===a?null:u(t),f.call(n),i.brush()}return null!==o&&null!==a?c:c(1)})):n.each((function(){var n=this,i=arguments,o=n.__brush,a=t.input("function"==typeof e?e.apply(n,i):e,o.extent),u=s(n,i).beforestart();wi(n),o.selection=null===a?null:a,f.call(n),u.start(r).brush(r).end(r)}))},c.clear=function(t,n){c.move(t,null,n)},l.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(t,n){return this.starting?(this.starting=!1,this.emit("start",t,n)):this.emit("brush",t),this},brush:function(t,n){return this.emit("brush",t,n),this},end:function(t,n){return 0==--this.active&&(delete this.state.emitter,this.emit("end",t,n)),this},emit:function(n,e,r){var i=Un(this.that).datum();a.call(n,this.that,new Eo(n,{sourceEvent:e,target:c,selection:t.output(this.state.selection),mode:r,dispatch:a}),i)}},c.extent=function(t){return arguments.length?(e="function"==typeof t?t:So(Uo(t)),c):e},c.filter=function(t){return arguments.length?(r="function"==typeof t?t:So(!!t),c):r},c.touchable=function(t){return arguments.length?(i="function"==typeof t?t:So(!!t),c):i},c.handleSize=function(t){return arguments.length?(u=+t,c):u},c.keyModifiers=function(t){return arguments.length?(o=!!t,c):o},c.on=function(){var t=a.on.apply(a,arguments);return t===a?c:t},c}var ta=Math.abs,na=Math.cos,ea=Math.sin,ra=Math.PI,ia=ra/2,oa=2*ra,aa=Math.max,ua=1e-12;function ca(t,n){return Array.from({length:n-t},((n,e)=>t+e))}function fa(t){return function(n,e){return t(n.source.value+n.target.value,e.source.value+e.target.value)}}function sa(t,n){var e=0,r=null,i=null,o=null;function a(a){var u,c=a.length,f=new Array(c),s=ca(0,c),l=new Array(c*c),h=new Array(c),d=0;a=Float64Array.from({length:c*c},n?(t,n)=>a[n%c][n/c|0]:(t,n)=>a[n/c|0][n%c]);for(let n=0;n<c;++n){let e=0;for(let r=0;r<c;++r)e+=a[n*c+r]+t*a[r*c+n];d+=f[n]=e}u=(d=aa(0,oa-e*c)/d)?e:oa/c;{let n=0;r&&s.sort(((t,n)=>r(f[t],f[n])));for(const e of s){const r=n;if(t){const t=ca(1+~c,c).filter((t=>t<0?a[~t*c+e]:a[e*c+t]));i&&t.sort(((t,n)=>i(t<0?-a[~t*c+e]:a[e*c+t],n<0?-a[~n*c+e]:a[e*c+n])));for(const r of t)if(r<0){(l[~r*c+e]||(l[~r*c+e]={source:null,target:null})).target={index:e,startAngle:n,endAngle:n+=a[~r*c+e]*d,value:a[~r*c+e]}}else{(l[e*c+r]||(l[e*c+r]={source:null,target:null})).source={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]}}h[e]={index:e,startAngle:r,endAngle:n,value:f[e]}}else{const t=ca(0,c).filter((t=>a[e*c+t]||a[t*c+e]));i&&t.sort(((t,n)=>i(a[e*c+t],a[e*c+n])));for(const r of t){let t;if(e<r?(t=l[e*c+r]||(l[e*c+r]={source:null,target:null}),t.source={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]}):(t=l[r*c+e]||(l[r*c+e]={source:null,target:null}),t.target={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]},e===r&&(t.source=t.target)),t.source&&t.target&&t.source.value<t.target.value){const n=t.source;t.source=t.target,t.target=n}}h[e]={index:e,startAngle:r,endAngle:n,value:f[e]}}n+=u}}return(l=Object.values(l)).groups=h,o?l.sort(o):l}return a.padAngle=function(t){return arguments.length?(e=aa(0,t),a):e},a.sortGroups=function(t){return arguments.length?(r=t,a):r},a.sortSubgroups=function(t){return arguments.length?(i=t,a):i},a.sortChords=function(t){return arguments.length?(null==t?o=null:(o=fa(t))._=t,a):o&&o._},a}const la=Math.PI,ha=2*la,da=1e-6,pa=ha-da;function ga(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function ya(){return new ga}ga.prototype=ya.prototype={constructor:ga,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,r){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+r)},bezierCurveTo:function(t,n,e,r,i,o){this._+="C"+ +t+","+ +n+","+ +e+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(t,n,e,r,i){t=+t,n=+n,e=+e,r=+r,i=+i;var o=this._x1,a=this._y1,u=e-t,c=r-n,f=o-t,s=a-n,l=f*f+s*s;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(l>da)if(Math.abs(s*u-c*f)>da&&i){var h=e-o,d=r-a,p=u*u+c*c,g=h*h+d*d,y=Math.sqrt(p),v=Math.sqrt(l),_=i*Math.tan((la-Math.acos((p+l-g)/(2*y*v)))/2),b=_/v,m=_/y;Math.abs(b-1)>da&&(this._+="L"+(t+b*f)+","+(n+b*s)),this._+="A"+i+","+i+",0,0,"+ +(s*h>f*d)+","+(this._x1=t+m*u)+","+(this._y1=n+m*c)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n,o=!!o;var a=(e=+e)*Math.cos(r),u=e*Math.sin(r),c=t+a,f=n+u,s=1^o,l=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+c+","+f:(Math.abs(this._x1-c)>da||Math.abs(this._y1-f)>da)&&(this._+="L"+c+","+f),e&&(l<0&&(l=l%ha+ha),l>pa?this._+="A"+e+","+e+",0,1,"+s+","+(t-a)+","+(n-u)+"A"+e+","+e+",0,1,"+s+","+(this._x1=c)+","+(this._y1=f):l>da&&(this._+="A"+e+","+e+",0,"+ +(l>=la)+","+s+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};var va=Array.prototype.slice;function _a(t){return function(){return t}}function ba(t){return t.source}function ma(t){return t.target}function xa(t){return t.radius}function wa(t){return t.startAngle}function Ma(t){return t.endAngle}function Aa(){return 0}function Ta(){return 10}function Sa(t){var n=ba,e=ma,r=xa,i=xa,o=wa,a=Ma,u=Aa,c=null;function f(){var f,s=n.apply(this,arguments),l=e.apply(this,arguments),h=u.apply(this,arguments)/2,d=va.call(arguments),p=+r.apply(this,(d[0]=s,d)),g=o.apply(this,d)-ia,y=a.apply(this,d)-ia,v=+i.apply(this,(d[0]=l,d)),_=o.apply(this,d)-ia,b=a.apply(this,d)-ia;if(c||(c=f=ya()),h>ua&&(ta(y-g)>2*h+ua?y>g?(g+=h,y-=h):(g-=h,y+=h):g=y=(g+y)/2,ta(b-_)>2*h+ua?b>_?(_+=h,b-=h):(_-=h,b+=h):_=b=(_+b)/2),c.moveTo(p*na(g),p*ea(g)),c.arc(0,0,p,g,y),g!==_||y!==b)if(t){var m=+t.apply(this,arguments),x=v-m,w=(_+b)/2;c.quadraticCurveTo(0,0,x*na(_),x*ea(_)),c.lineTo(v*na(w),v*ea(w)),c.lineTo(x*na(b),x*ea(b))}else c.quadraticCurveTo(0,0,v*na(_),v*ea(_)),c.arc(0,0,v,_,b);if(c.quadraticCurveTo(0,0,p*na(g),p*ea(g)),c.closePath(),f)return c=null,f+""||null}return t&&(f.headRadius=function(n){return arguments.length?(t="function"==typeof n?n:_a(+n),f):t}),f.radius=function(t){return arguments.length?(r=i="function"==typeof t?t:_a(+t),f):r},f.sourceRadius=function(t){return arguments.length?(r="function"==typeof t?t:_a(+t),f):r},f.targetRadius=function(t){return arguments.length?(i="function"==typeof t?t:_a(+t),f):i},f.startAngle=function(t){return arguments.length?(o="function"==typeof t?t:_a(+t),f):o},f.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:_a(+t),f):a},f.padAngle=function(t){return arguments.length?(u="function"==typeof t?t:_a(+t),f):u},f.source=function(t){return arguments.length?(n=t,f):n},f.target=function(t){return arguments.length?(e=t,f):e},f.context=function(t){return arguments.length?(c=null==t?null:t,f):c},f}var Ea=Array.prototype.slice;function ka(t,n){return t-n}var Na=t=>()=>t;function Ca(t,n){for(var e,r=-1,i=n.length;++r<i;)if(e=Pa(t,n[r]))return e;return 0}function Pa(t,n){for(var e=n[0],r=n[1],i=-1,o=0,a=t.length,u=a-1;o<a;u=o++){var c=t[o],f=c[0],s=c[1],l=t[u],h=l[0],d=l[1];if(za(c,l,n))return 0;s>r!=d>r&&e<(h-f)*(r-s)/(d-s)+f&&(i=-i)}return i}function za(t,n,e){var r,i,o,a;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],o=e[r],a=n[r],i<=o&&o<=a||a<=o&&o<=i)}function Da(){}var qa=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function Ra(){var t=1,n=1,e=L,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(ka);else{const e=g(t),r=B(e[0],e[1],n);n=U(Math.floor(e[0]/r)*r,Math.floor(e[1]/r-1)*r,n)}return n.map((n=>o(t,n)))}function o(e,i){var o=[],u=[];return function(e,r,i){var o,u,c,f,s,l,h=new Array,d=new Array;o=u=-1,f=e[0]>=r,qa[f<<1].forEach(p);for(;++o<t-1;)c=f,f=e[o+1]>=r,qa[c|f<<1].forEach(p);qa[f<<0].forEach(p);for(;++u<n-1;){for(o=-1,f=e[u*t+t]>=r,s=e[u*t]>=r,qa[f<<1|s<<2].forEach(p);++o<t-1;)c=f,f=e[u*t+t+o+1]>=r,l=s,s=e[u*t+o+1]>=r,qa[c|f<<1|s<<2|l<<3].forEach(p);qa[f|s<<3].forEach(p)}o=-1,s=e[u*t]>=r,qa[s<<2].forEach(p);for(;++o<t-1;)l=s,s=e[u*t+o+1]>=r,qa[s<<2|l<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+o,t[0][1]+u],c=[t[1][0]+o,t[1][1]+u],f=a(r),s=a(c);(n=d[f])?(e=h[s])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(c),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(c),d[n.end=s]=n):(n=h[s])?(e=d[f])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(c),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=f]=n):h[f]=d[s]={start:f,end:s,ring:[r,c]}}qa[s<<3].forEach(p)}(e,i,(function(t){r(t,e,i),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n<e;)r+=t[n-1][1]*t[n][0]-t[n-1][0]*t[n][1];return r}(t)>0?o.push([t]):u.push(t)})),u.forEach((function(t){for(var n,e=0,r=o.length;e<r;++e)if(-1!==Ca((n=o[e])[0],t))return void n.push(t)})),{type:"MultiPolygon",value:i,coordinates:o}}function a(n){return 2*n[0]+n[1]*(t+1)*4}function u(e,r,i){e.forEach((function(e){var o,a=e[0],u=e[1],c=0|a,f=0|u,s=r[f*t+c];a>0&&a<t&&c===a&&(o=r[f*t+c-1],e[0]=a+(i-o)/(s-o)-.5),u>0&&u<n&&f===u&&(o=r[(f-1)*t+c],e[1]=u+(i-o)/(s-o)-.5)}))}return i.contour=o,i.size=function(e){if(!arguments.length)return[t,n];var r=Math.floor(e[0]),o=Math.floor(e[1]);if(!(r>=0&&o>=0))throw new Error("invalid size");return t=r,n=o,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?Na(Ea.call(t)):Na(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:Da,i):r===u},i}function Fa(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a<i;++a)for(var u=0,c=0;u<r+e;++u)u<r&&(c+=t.data[u+a*r]),u>=e&&(u>=o&&(c-=t.data[u-o+a*r]),n.data[u-e+a*r]=c/Math.min(u+1,r-1+o-u,o))}function Oa(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a<r;++a)for(var u=0,c=0;u<i+e;++u)u<i&&(c+=t.data[a+u*r]),u>=e&&(u>=o&&(c-=t.data[a+(u-o)*r]),n.data[a+(u-e)*r]=c/Math.min(u+1,i-1+o-u,o))}function Ua(t){return t[0]}function Ia(t){return t[1]}function Ba(){return 1}const Ya=134217729;function La(t,n,e,r,i){let o,a,u,c,f=n[0],s=r[0],l=0,h=0;s>f==s>-f?(o=f,f=n[++l]):(o=s,s=r[++h]);let d=0;if(l<t&&h<e)for(s>f==s>-f?(a=f+o,u=o-(a-f),f=n[++l]):(a=s+o,u=o-(a-s),s=r[++h]),o=a,0!==u&&(i[d++]=u);l<t&&h<e;)s>f==s>-f?(a=o+f,c=a-o,u=o-(a-c)+(f-c),f=n[++l]):(a=o+s,c=a-o,u=o-(a-c)+(s-c),s=r[++h]),o=a,0!==u&&(i[d++]=u);for(;l<t;)a=o+f,c=a-o,u=o-(a-c)+(f-c),f=n[++l],o=a,0!==u&&(i[d++]=u);for(;h<e;)a=o+s,c=a-o,u=o-(a-c)+(s-c),s=r[++h],o=a,0!==u&&(i[d++]=u);return 0===o&&0!==d||(i[d++]=o),d}function ja(t){return new Float64Array(t)}const Ha=ja(4),Xa=ja(8),Ga=ja(12),Va=ja(16),$a=ja(4);function Wa(t,n,e,r,i,o){const a=(n-o)*(e-i),u=(t-i)*(r-o),c=a-u;if(0===a||0===u||a>0!=u>0)return c;const f=Math.abs(a+u);return Math.abs(c)>=33306690738754716e-32*f?c:-function(t,n,e,r,i,o,a){let u,c,f,s,l,h,d,p,g,y,v,_,b,m,x,w,M,A;const T=t-i,S=e-i,E=n-o,k=r-o;m=T*k,h=Ya*T,d=h-(h-T),p=T-d,h=Ya*k,g=h-(h-k),y=k-g,x=p*y-(m-d*g-p*g-d*y),w=E*S,h=Ya*E,d=h-(h-E),p=E-d,h=Ya*S,g=h-(h-S),y=S-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,Ha[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,Ha[1]=b-(v+l)+(l-w),A=_+v,l=A-_,Ha[2]=_-(A-l)+(v-l),Ha[3]=A;let N=function(t,n){let e=n[0];for(let r=1;r<t;r++)e+=n[r];return e}(4,Ha),C=22204460492503146e-32*a;if(N>=C||-N>=C)return N;if(l=t-T,u=t-(T+l)+(l-i),l=e-S,f=e-(S+l)+(l-i),l=n-E,c=n-(E+l)+(l-o),l=r-k,s=r-(k+l)+(l-o),0===u&&0===c&&0===f&&0===s)return N;if(C=11093356479670487e-47*a+33306690738754706e-32*Math.abs(N),N+=T*s+k*u-(E*f+S*c),N>=C||-N>=C)return N;m=u*k,h=Ya*u,d=h-(h-u),p=u-d,h=Ya*k,g=h-(h-k),y=k-g,x=p*y-(m-d*g-p*g-d*y),w=c*S,h=Ya*c,d=h-(h-c),p=c-d,h=Ya*S,g=h-(h-S),y=S-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,$a[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,$a[1]=b-(v+l)+(l-w),A=_+v,l=A-_,$a[2]=_-(A-l)+(v-l),$a[3]=A;const P=La(4,Ha,4,$a,Xa);m=T*s,h=Ya*T,d=h-(h-T),p=T-d,h=Ya*s,g=h-(h-s),y=s-g,x=p*y-(m-d*g-p*g-d*y),w=E*f,h=Ya*E,d=h-(h-E),p=E-d,h=Ya*f,g=h-(h-f),y=f-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,$a[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,$a[1]=b-(v+l)+(l-w),A=_+v,l=A-_,$a[2]=_-(A-l)+(v-l),$a[3]=A;const z=La(P,Xa,4,$a,Ga);m=u*s,h=Ya*u,d=h-(h-u),p=u-d,h=Ya*s,g=h-(h-s),y=s-g,x=p*y-(m-d*g-p*g-d*y),w=c*f,h=Ya*c,d=h-(h-c),p=c-d,h=Ya*f,g=h-(h-f),y=f-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,$a[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,$a[1]=b-(v+l)+(l-w),A=_+v,l=A-_,$a[2]=_-(A-l)+(v-l),$a[3]=A;const D=La(z,Ga,4,$a,Va);return Va[D-1]}(t,n,e,r,i,o,f)}const Za=Math.pow(2,-52),Ka=new Uint32Array(512);class Qa{static from(t,n=iu,e=ou){const r=t.length,i=new Float64Array(2*r);for(let o=0;o<r;o++){const r=t[o];i[2*o]=n(r),i[2*o+1]=e(r)}return new Qa(i)}constructor(t){const n=t.length>>1;if(n>0&&"number"!=typeof t[0])throw new Error("Expected coords to contain numbers.");this.coords=t;const e=Math.max(2*n-5,0);this._triangles=new Uint32Array(3*e),this._halfedges=new Int32Array(3*e),this._hashSize=Math.ceil(Math.sqrt(n)),this._hullPrev=new Uint32Array(n),this._hullNext=new Uint32Array(n),this._hullTri=new Uint32Array(n),this._hullHash=new Int32Array(this._hashSize).fill(-1),this._ids=new Uint32Array(n),this._dists=new Float64Array(n),this.update()}update(){const{coords:t,_hullPrev:n,_hullNext:e,_hullTri:r,_hullHash:i}=this,o=t.length>>1;let a=1/0,u=1/0,c=-1/0,f=-1/0;for(let n=0;n<o;n++){const e=t[2*n],r=t[2*n+1];e<a&&(a=e),r<u&&(u=r),e>c&&(c=e),r>f&&(f=r),this._ids[n]=n}const s=(a+c)/2,l=(u+f)/2;let h,d,p,g=1/0;for(let n=0;n<o;n++){const e=Ja(s,l,t[2*n],t[2*n+1]);e<g&&(h=n,g=e)}const y=t[2*h],v=t[2*h+1];g=1/0;for(let n=0;n<o;n++){if(n===h)continue;const e=Ja(y,v,t[2*n],t[2*n+1]);e<g&&e>0&&(d=n,g=e)}let _=t[2*d],b=t[2*d+1],m=1/0;for(let n=0;n<o;n++){if(n===h||n===d)continue;const e=nu(y,v,_,b,t[2*n],t[2*n+1]);e<m&&(p=n,m=e)}let x=t[2*p],w=t[2*p+1];if(m===1/0){for(let n=0;n<o;n++)this._dists[n]=t[2*n]-t[0]||t[2*n+1]-t[1];eu(this._ids,this._dists,0,o-1);const n=new Uint32Array(o);let e=0;for(let t=0,r=-1/0;t<o;t++){const i=this._ids[t];this._dists[i]>r&&(n[e++]=i,r=this._dists[i])}return this.hull=n.subarray(0,e),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(Wa(y,v,_,b,x,w)<0){const t=d,n=_,e=b;d=p,_=x,b=w,p=t,x=n,w=e}const M=function(t,n,e,r,i,o){const a=e-t,u=r-n,c=i-t,f=o-n,s=a*a+u*u,l=c*c+f*f,h=.5/(a*f-u*c);return{x:t+(f*s-u*l)*h,y:n+(a*l-c*s)*h}}(y,v,_,b,x,w);this._cx=M.x,this._cy=M.y;for(let n=0;n<o;n++)this._dists[n]=Ja(t[2*n],t[2*n+1],M.x,M.y);eu(this._ids,this._dists,0,o-1),this._hullStart=h;let A=3;e[h]=n[p]=d,e[d]=n[h]=p,e[p]=n[d]=h,r[h]=0,r[d]=1,r[p]=2,i.fill(-1),i[this._hashKey(y,v)]=h,i[this._hashKey(_,b)]=d,i[this._hashKey(x,w)]=p,this.trianglesLen=0,this._addTriangle(h,d,p,-1,-1,-1);for(let o,a,u=0;u<this._ids.length;u++){const c=this._ids[u],f=t[2*c],s=t[2*c+1];if(u>0&&Math.abs(f-o)<=Za&&Math.abs(s-a)<=Za)continue;if(o=f,a=s,c===h||c===d||c===p)continue;let l=0;for(let t=0,n=this._hashKey(f,s);t<this._hashSize&&(l=i[(n+t)%this._hashSize],-1===l||l===e[l]);t++);l=n[l];let g,y=l;for(;g=e[y],Wa(f,s,t[2*y],t[2*y+1],t[2*g],t[2*g+1])>=0;)if(y=g,y===l){y=-1;break}if(-1===y)continue;let v=this._addTriangle(y,c,e[y],-1,-1,r[y]);r[c]=this._legalize(v+2),r[y]=v,A++;let _=e[y];for(;g=e[_],Wa(f,s,t[2*_],t[2*_+1],t[2*g],t[2*g+1])<0;)v=this._addTriangle(_,c,g,r[c],-1,r[_]),r[c]=this._legalize(v+2),e[_]=_,A--,_=g;if(y===l)for(;g=n[y],Wa(f,s,t[2*g],t[2*g+1],t[2*y],t[2*y+1])<0;)v=this._addTriangle(g,c,y,-1,r[y],r[g]),this._legalize(v+2),r[g]=v,e[y]=y,A--,y=g;this._hullStart=n[c]=y,e[y]=n[_]=c,e[c]=_,i[this._hashKey(f,s)]=c,i[this._hashKey(t[2*y],t[2*y+1])]=y}this.hull=new Uint32Array(A);for(let t=0,n=this._hullStart;t<A;t++)this.hull[t]=n,n=e[n];this.triangles=this._triangles.subarray(0,this.trianglesLen),this.halfedges=this._halfedges.subarray(0,this.trianglesLen)}_hashKey(t,n){return Math.floor(function(t,n){const e=t/(Math.abs(t)+Math.abs(n));return(n>0?3-e:1+e)/4}(t-this._cx,n-this._cy)*this._hashSize)%this._hashSize}_legalize(t){const{_triangles:n,_halfedges:e,coords:r}=this;let i=0,o=0;for(;;){const a=e[t],u=t-t%3;if(o=u+(t+2)%3,-1===a){if(0===i)break;t=Ka[--i];continue}const c=a-a%3,f=u+(t+1)%3,s=c+(a+2)%3,l=n[o],h=n[t],d=n[f],p=n[s];if(tu(r[2*l],r[2*l+1],r[2*h],r[2*h+1],r[2*d],r[2*d+1],r[2*p],r[2*p+1])){n[t]=p,n[a]=l;const r=e[s];if(-1===r){let n=this._hullStart;do{if(this._hullTri[n]===s){this._hullTri[n]=t;break}n=this._hullPrev[n]}while(n!==this._hullStart)}this._link(t,r),this._link(a,e[o]),this._link(o,s);const u=c+(a+1)%3;i<Ka.length&&(Ka[i++]=u)}else{if(0===i)break;t=Ka[--i]}}return o}_link(t,n){this._halfedges[t]=n,-1!==n&&(this._halfedges[n]=t)}_addTriangle(t,n,e,r,i,o){const a=this.trianglesLen;return this._triangles[a]=t,this._triangles[a+1]=n,this._triangles[a+2]=e,this._link(a,r),this._link(a+1,i),this._link(a+2,o),this.trianglesLen+=3,a}}function Ja(t,n,e,r){const i=t-e,o=n-r;return i*i+o*o}function tu(t,n,e,r,i,o,a,u){const c=t-a,f=n-u,s=e-a,l=r-u,h=i-a,d=o-u,p=s*s+l*l,g=h*h+d*d;return c*(l*g-p*d)-f*(s*g-p*h)+(c*c+f*f)*(s*d-l*h)<0}function nu(t,n,e,r,i,o){const a=e-t,u=r-n,c=i-t,f=o-n,s=a*a+u*u,l=c*c+f*f,h=.5/(a*f-u*c),d=(f*s-u*l)*h,p=(a*l-c*s)*h;return d*d+p*p}function eu(t,n,e,r){if(r-e<=20)for(let i=e+1;i<=r;i++){const r=t[i],o=n[r];let a=i-1;for(;a>=e&&n[t[a]]>o;)t[a+1]=t[a--];t[a+1]=r}else{let i=e+1,o=r;ru(t,e+r>>1,i),n[t[e]]>n[t[r]]&&ru(t,e,r),n[t[i]]>n[t[r]]&&ru(t,i,r),n[t[e]]>n[t[i]]&&ru(t,e,i);const a=t[i],u=n[a];for(;;){do{i++}while(n[t[i]]<u);do{o--}while(n[t[o]]>u);if(o<i)break;ru(t,i,o)}t[e+1]=t[o],t[o]=a,r-i+1>=o-e?(eu(t,n,i,r),eu(t,n,e,o-1)):(eu(t,n,e,o-1),eu(t,n,i,r))}}function ru(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function iu(t){return t[0]}function ou(t){return t[1]}const au=1e-6;class uu{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(t,n){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(t,n){this._+=`L${this._x1=+t},${this._y1=+n}`}arc(t,n,e){const r=(t=+t)+(e=+e),i=n=+n;if(e<0)throw new Error("negative radius");null===this._x1?this._+=`M${r},${i}`:(Math.abs(this._x1-r)>au||Math.abs(this._y1-i)>au)&&(this._+="L"+r+","+i),e&&(this._+=`A${e},${e},0,1,1,${t-e},${n}A${e},${e},0,1,1,${this._x1=r},${this._y1=i}`)}rect(t,n,e,r){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${+e}v${+r}h${-e}Z`}value(){return this._||null}}class cu{constructor(){this._=[]}moveTo(t,n){this._.push([t,n])}closePath(){this._.push(this._[0].slice())}lineTo(t,n){this._.push([t,n])}value(){return this._.length?this._:null}}class fu{constructor(t,[n,e,r,i]=[0,0,960,500]){if(!((r=+r)>=(n=+n)&&(i=+i)>=(e=+e)))throw new Error("invalid bounds");this.delaunay=t,this._circumcenters=new Float64Array(2*t.points.length),this.vectors=new Float64Array(2*t.points.length),this.xmax=r,this.xmin=n,this.ymax=i,this.ymin=e,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:t,hull:n,triangles:e},vectors:r}=this,i=this.circumcenters=this._circumcenters.subarray(0,e.length/3*2);for(let n,r,o=0,a=0,u=e.length;o<u;o+=3,a+=2){const u=2*e[o],c=2*e[o+1],f=2*e[o+2],s=t[u],l=t[u+1],h=t[c],d=t[c+1],p=t[f],g=t[f+1],y=h-s,v=d-l,_=p-s,b=g-l,m=2*(y*b-v*_);if(Math.abs(m)<1e-9){let i=1e9;const o=2*e[0];i*=Math.sign((t[o]-s)*b-(t[o+1]-l)*_),n=(s+p)/2-i*b,r=(l+g)/2+i*_}else{const t=1/m,e=y*y+v*v,i=_*_+b*b;n=s+(b*e-v*i)*t,r=l+(y*i-_*e)*t}i[a]=n,i[a+1]=r}let o,a,u,c=n[n.length-1],f=4*c,s=t[2*c],l=t[2*c+1];r.fill(0);for(let e=0;e<n.length;++e)c=n[e],o=f,a=s,u=l,f=4*c,s=t[2*c],l=t[2*c+1],r[o+2]=r[f]=u-l,r[o+3]=r[f+1]=s-a}render(t){const n=null==t?t=new uu:void 0,{delaunay:{halfedges:e,inedges:r,hull:i},circumcenters:o,vectors:a}=this;if(i.length<=1)return null;for(let n=0,r=e.length;n<r;++n){const r=e[n];if(r<n)continue;const i=2*Math.floor(n/3),a=2*Math.floor(r/3),u=o[i],c=o[i+1],f=o[a],s=o[a+1];this._renderSegment(u,c,f,s,t)}let u,c=i[i.length-1];for(let n=0;n<i.length;++n){u=c,c=i[n];const e=2*Math.floor(r[c]/3),f=o[e],s=o[e+1],l=4*u,h=this._project(f,s,a[l+2],a[l+3]);h&&this._renderSegment(f,s,h[0],h[1],t)}return n&&n.value()}renderBounds(t){const n=null==t?t=new uu:void 0;return t.rect(this.xmin,this.ymin,this.xmax-this.xmin,this.ymax-this.ymin),n&&n.value()}renderCell(t,n){const e=null==n?n=new uu:void 0,r=this._clip(t);if(null===r||!r.length)return;n.moveTo(r[0],r[1]);let i=r.length;for(;r[0]===r[i-2]&&r[1]===r[i-1]&&i>1;)i-=2;for(let t=2;t<i;t+=2)r[t]===r[t-2]&&r[t+1]===r[t-1]||n.lineTo(r[t],r[t+1]);return n.closePath(),e&&e.value()}*cellPolygons(){const{delaunay:{points:t}}=this;for(let n=0,e=t.length/2;n<e;++n){const t=this.cellPolygon(n);t&&(t.index=n,yield t)}}cellPolygon(t){const n=new cu;return this.renderCell(t,n),n.value()}_renderSegment(t,n,e,r,i){let o;const a=this._regioncode(t,n),u=this._regioncode(e,r);0===a&&0===u?(i.moveTo(t,n),i.lineTo(e,r)):(o=this._clipSegment(t,n,e,r,a,u))&&(i.moveTo(o[0],o[1]),i.lineTo(o[2],o[3]))}contains(t,n,e){return(n=+n)==n&&(e=+e)==e&&this.delaunay._step(t,n,e)===t}*neighbors(t){const n=this._clip(t);if(n)for(const e of this.delaunay.neighbors(t)){const t=this._clip(e);if(t)t:for(let r=0,i=n.length;r<i;r+=2)for(let o=0,a=t.length;o<a;o+=2)if(n[r]==t[o]&&n[r+1]==t[o+1]&&n[(r+2)%i]==t[(o+a-2)%a]&&n[(r+3)%i]==t[(o+a-1)%a]){yield e;break t}}}_cell(t){const{circumcenters:n,delaunay:{inedges:e,halfedges:r,triangles:i}}=this,o=e[t];if(-1===o)return null;const a=[];let u=o;do{const e=Math.floor(u/3);if(a.push(n[2*e],n[2*e+1]),u=u%3==2?u-2:u+1,i[u]!==t)break;u=r[u]}while(u!==o&&-1!==u);return a}_clip(t){if(0===t&&1===this.delaunay.hull.length)return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];const n=this._cell(t);if(null===n)return null;const{vectors:e}=this,r=4*t;return e[r]||e[r+1]?this._clipInfinite(t,n,e[r],e[r+1],e[r+2],e[r+3]):this._clipFinite(t,n)}_clipFinite(t,n){const e=n.length;let r,i,o,a,u=null,c=n[e-2],f=n[e-1],s=this._regioncode(c,f),l=0;for(let h=0;h<e;h+=2)if(r=c,i=f,c=n[h],f=n[h+1],o=s,s=this._regioncode(c,f),0===o&&0===s)a=l,l=0,u?u.push(c,f):u=[c,f];else{let n,e,h,d,p;if(0===o){if(null===(n=this._clipSegment(r,i,c,f,o,s)))continue;[e,h,d,p]=n}else{if(null===(n=this._clipSegment(c,f,r,i,s,o)))continue;[d,p,e,h]=n,a=l,l=this._edgecode(e,h),a&&l&&this._edge(t,a,l,u,u.length),u?u.push(e,h):u=[e,h]}a=l,l=this._edgecode(d,p),a&&l&&this._edge(t,a,l,u,u.length),u?u.push(d,p):u=[d,p]}if(u)a=l,l=this._edgecode(u[0],u[1]),a&&l&&this._edge(t,a,l,u,u.length);else if(this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2))return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];return u}_clipSegment(t,n,e,r,i,o){for(;;){if(0===i&&0===o)return[t,n,e,r];if(i&o)return null;let a,u,c=i||o;8&c?(a=t+(e-t)*(this.ymax-n)/(r-n),u=this.ymax):4&c?(a=t+(e-t)*(this.ymin-n)/(r-n),u=this.ymin):2&c?(u=n+(r-n)*(this.xmax-t)/(e-t),a=this.xmax):(u=n+(r-n)*(this.xmin-t)/(e-t),a=this.xmin),i?(t=a,n=u,i=this._regioncode(t,n)):(e=a,r=u,o=this._regioncode(e,r))}}_clipInfinite(t,n,e,r,i,o){let a,u=Array.from(n);if((a=this._project(u[0],u[1],e,r))&&u.unshift(a[0],a[1]),(a=this._project(u[u.length-2],u[u.length-1],i,o))&&u.push(a[0],a[1]),u=this._clipFinite(t,u))for(let n,e=0,r=u.length,i=this._edgecode(u[r-2],u[r-1]);e<r;e+=2)n=i,i=this._edgecode(u[e],u[e+1]),n&&i&&(e=this._edge(t,n,i,u,e),r=u.length);else this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2)&&(u=[this.xmin,this.ymin,this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax]);return u}_edge(t,n,e,r,i){for(;n!==e;){let e,o;switch(n){case 5:n=4;continue;case 4:n=6,e=this.xmax,o=this.ymin;break;case 6:n=2;continue;case 2:n=10,e=this.xmax,o=this.ymax;break;case 10:n=8;continue;case 8:n=9,e=this.xmin,o=this.ymax;break;case 9:n=1;continue;case 1:n=5,e=this.xmin,o=this.ymin}r[i]===e&&r[i+1]===o||!this.contains(t,e,o)||(r.splice(i,0,e,o),i+=2)}if(r.length>4)for(let t=0;t<r.length;t+=2){const n=(t+2)%r.length,e=(t+4)%r.length;(r[t]===r[n]&&r[n]===r[e]||r[t+1]===r[n+1]&&r[n+1]===r[e+1])&&(r.splice(n,2),t-=2)}return i}_project(t,n,e,r){let i,o,a,u=1/0;if(r<0){if(n<=this.ymin)return null;(i=(this.ymin-n)/r)<u&&(a=this.ymin,o=t+(u=i)*e)}else if(r>0){if(n>=this.ymax)return null;(i=(this.ymax-n)/r)<u&&(a=this.ymax,o=t+(u=i)*e)}if(e>0){if(t>=this.xmax)return null;(i=(this.xmax-t)/e)<u&&(o=this.xmax,a=n+(u=i)*r)}else if(e<0){if(t<=this.xmin)return null;(i=(this.xmin-t)/e)<u&&(o=this.xmin,a=n+(u=i)*r)}return[o,a]}_edgecode(t,n){return(t===this.xmin?1:t===this.xmax?2:0)|(n===this.ymin?4:n===this.ymax?8:0)}_regioncode(t,n){return(t<this.xmin?1:t>this.xmax?2:0)|(n<this.ymin?4:n>this.ymax?8:0)}}const su=2*Math.PI,lu=Math.pow;function hu(t){return t[0]}function du(t){return t[1]}function pu(t,n,e){return[t+Math.sin(t+n)*e,n+Math.cos(t-n)*e]}class gu{static from(t,n=hu,e=du,r){return new gu("length"in t?function(t,n,e,r){const i=t.length,o=new Float64Array(2*i);for(let a=0;a<i;++a){const i=t[a];o[2*a]=n.call(r,i,a,t),o[2*a+1]=e.call(r,i,a,t)}return o}(t,n,e,r):Float64Array.from(function*(t,n,e,r){let i=0;for(const o of t)yield n.call(r,o,i,t),yield e.call(r,o,i,t),++i}(t,n,e,r)))}constructor(t){this._delaunator=new Qa(t),this.inedges=new Int32Array(t.length/2),this._hullIndex=new Int32Array(t.length/2),this.points=this._delaunator.coords,this._init()}update(){return this._delaunator.update(),this._init(),this}_init(){const t=this._delaunator,n=this.points;if(t.hull&&t.hull.length>2&&function(t){const{triangles:n,coords:e}=t;for(let t=0;t<n.length;t+=3){const r=2*n[t],i=2*n[t+1],o=2*n[t+2];if((e[o]-e[r])*(e[i+1]-e[r+1])-(e[i]-e[r])*(e[o+1]-e[r+1])>1e-10)return!1}return!0}(t)){this.collinear=Int32Array.from({length:n.length/2},((t,n)=>n)).sort(((t,e)=>n[2*t]-n[2*e]||n[2*t+1]-n[2*e+1]));const t=this.collinear[0],e=this.collinear[this.collinear.length-1],r=[n[2*t],n[2*t+1],n[2*e],n[2*e+1]],i=1e-8*Math.hypot(r[3]-r[1],r[2]-r[0]);for(let t=0,e=n.length/2;t<e;++t){const e=pu(n[2*t],n[2*t+1],i);n[2*t]=e[0],n[2*t+1]=e[1]}this._delaunator=new Qa(n)}else delete this.collinear;const e=this.halfedges=this._delaunator.halfedges,r=this.hull=this._delaunator.hull,i=this.triangles=this._delaunator.triangles,o=this.inedges.fill(-1),a=this._hullIndex.fill(-1);for(let t=0,n=e.length;t<n;++t){const n=i[t%3==2?t-2:t+1];-1!==e[t]&&-1!==o[n]||(o[n]=t)}for(let t=0,n=r.length;t<n;++t)a[r[t]]=t;r.length<=2&&r.length>0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=r[0],o[r[0]]=1,2===r.length&&(o[r[1]]=0,this.triangles[1]=r[1],this.triangles[2]=r[1]))}voronoi(t){return new fu(this,t)}*neighbors(t){const{inedges:n,hull:e,_hullIndex:r,halfedges:i,triangles:o,collinear:a}=this;if(a){const n=a.indexOf(t);return n>0&&(yield a[n-1]),void(n<a.length-1&&(yield a[n+1]))}const u=n[t];if(-1===u)return;let c=u,f=-1;do{if(yield f=o[c],c=c%3==2?c-2:c+1,o[c]!==t)return;if(c=i[c],-1===c){const n=e[(r[t]+1)%e.length];return void(n!==f&&(yield n))}}while(c!==u)}find(t,n,e=0){if((t=+t)!=t||(n=+n)!=n)return-1;const r=e;let i;for(;(i=this._step(e,t,n))>=0&&i!==e&&i!==r;)e=i;return i}_step(t,n,e){const{inedges:r,hull:i,_hullIndex:o,halfedges:a,triangles:u,points:c}=this;if(-1===r[t]||!c.length)return(t+1)%(c.length>>1);let f=t,s=lu(n-c[2*t],2)+lu(e-c[2*t+1],2);const l=r[t];let h=l;do{let r=u[h];const l=lu(n-c[2*r],2)+lu(e-c[2*r+1],2);if(l<s&&(s=l,f=r),h=h%3==2?h-2:h+1,u[h]!==t)break;if(h=a[h],-1===h){if(h=i[(o[t]+1)%i.length],h!==r&&lu(n-c[2*h],2)+lu(e-c[2*h+1],2)<s)return h;break}}while(h!==l);return f}render(t){const n=null==t?t=new uu:void 0,{points:e,halfedges:r,triangles:i}=this;for(let n=0,o=r.length;n<o;++n){const o=r[n];if(o<n)continue;const a=2*i[n],u=2*i[o];t.moveTo(e[a],e[a+1]),t.lineTo(e[u],e[u+1])}return this.renderHull(t),n&&n.value()}renderPoints(t,n){void 0!==n||t&&"function"==typeof t.moveTo||(n=t,t=null),n=null==n?2:+n;const e=null==t?t=new uu:void 0,{points:r}=this;for(let e=0,i=r.length;e<i;e+=2){const i=r[e],o=r[e+1];t.moveTo(i+n,o),t.arc(i,o,n,0,su)}return e&&e.value()}renderHull(t){const n=null==t?t=new uu:void 0,{hull:e,points:r}=this,i=2*e[0],o=e.length;t.moveTo(r[i],r[i+1]);for(let n=1;n<o;++n){const i=2*e[n];t.lineTo(r[i],r[i+1])}return t.closePath(),n&&n.value()}hullPolygon(){const t=new cu;return this.renderHull(t),t.value()}renderTriangle(t,n){const e=null==n?n=new uu:void 0,{points:r,triangles:i}=this,o=2*i[t*=3],a=2*i[t+1],u=2*i[t+2];return n.moveTo(r[o],r[o+1]),n.lineTo(r[a],r[a+1]),n.lineTo(r[u],r[u+1]),n.closePath(),e&&e.value()}*trianglePolygons(){const{triangles:t}=this;for(let n=0,e=t.length/3;n<e;++n)yield this.trianglePolygon(n)}trianglePolygon(t){const n=new cu;return this.renderTriangle(t,n),n.value()}}var yu={},vu={};function _u(t){return new Function("d","return {"+t.map((function(t,n){return JSON.stringify(t)+": d["+n+'] || ""'})).join(",")+"}")}function bu(t){var n=Object.create(null),e=[];return t.forEach((function(t){for(var r in t)r in n||e.push(n[r]=r)})),e}function mu(t,n){var e=t+"",r=e.length;return r<n?new Array(n-r+1).join(0)+e:e}function xu(t){var n=t.getUTCHours(),e=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":function(t){return t<0?"-"+mu(-t,6):t>9999?"+"+mu(t,6):mu(t,4)}(t.getUTCFullYear())+"-"+mu(t.getUTCMonth()+1,2)+"-"+mu(t.getUTCDate(),2)+(i?"T"+mu(n,2)+":"+mu(e,2)+":"+mu(r,2)+"."+mu(i,3)+"Z":r?"T"+mu(n,2)+":"+mu(e,2)+":"+mu(r,2)+"Z":e||n?"T"+mu(n,2)+":"+mu(e,2)+"Z":"")}function wu(t){var n=new RegExp('["'+t+"\n\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],o=t.length,a=0,u=0,c=o<=0,f=!1;function s(){if(c)return vu;if(f)return f=!1,yu;var n,r,i=a;if(34===t.charCodeAt(i)){for(;a++<o&&34!==t.charCodeAt(a)||34===t.charCodeAt(++a););return(n=a)>=o?c=!0:10===(r=t.charCodeAt(a++))?f=!0:13===r&&(f=!0,10===t.charCodeAt(a)&&++a),t.slice(i+1,n-1).replace(/""/g,'"')}for(;a<o;){if(10===(r=t.charCodeAt(n=a++)))f=!0;else if(13===r)f=!0,10===t.charCodeAt(a)&&++a;else if(r!==e)continue;return t.slice(i,n)}return c=!0,t.slice(i,o)}for(10===t.charCodeAt(o-1)&&--o,13===t.charCodeAt(o-1)&&--o;(r=s())!==vu;){for(var l=[];r!==yu&&r!==vu;)l.push(r),r=s();n&&null==(l=n(l,u++))||i.push(l)}return i}function i(n,e){return n.map((function(n){return e.map((function(t){return a(n[t])})).join(t)}))}function o(n){return n.map(a).join(t)}function a(t){return null==t?"":t instanceof Date?xu(t):n.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,n){var e,i,o=r(t,(function(t,r){if(e)return e(t,r-1);i=t,e=n?function(t,n){var e=_u(t);return function(r,i){return n(e(r),i,t)}}(t,n):_u(t)}));return o.columns=i||[],o},parseRows:r,format:function(n,e){return null==e&&(e=bu(n)),[e.map(a).join(t)].concat(i(n,e)).join("\n")},formatBody:function(t,n){return null==n&&(n=bu(t)),i(t,n).join("\n")},formatRows:function(t){return t.map(o).join("\n")},formatRow:o,formatValue:a}}var Mu=wu(","),Au=Mu.parse,Tu=Mu.parseRows,Su=Mu.format,Eu=Mu.formatBody,ku=Mu.formatRows,Nu=Mu.formatRow,Cu=Mu.formatValue,Pu=wu("\t"),zu=Pu.parse,Du=Pu.parseRows,qu=Pu.format,Ru=Pu.formatBody,Fu=Pu.formatRows,Ou=Pu.formatRow,Uu=Pu.formatValue;const Iu=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function Bu(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.blob()}function Yu(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.arrayBuffer()}function Lu(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}function ju(t,n){return fetch(t,n).then(Lu)}function Hu(t){return function(n,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=void 0),ju(n,e).then((function(n){return t(n,r)}))}}var Xu=Hu(Au),Gu=Hu(zu);function Vu(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);if(204!==t.status&&205!==t.status)return t.json()}function $u(t){return(n,e)=>ju(n,e).then((n=>(new DOMParser).parseFromString(n,t)))}var Wu=$u("application/xml"),Zu=$u("text/html"),Ku=$u("image/svg+xml");function Qu(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o,a,u,c,f,s,l,h,d=t._root,p={data:r},g=t._x0,y=t._y0,v=t._x1,_=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((f=n>=(o=(g+v)/2))?g=o:v=o,(s=e>=(a=(y+_)/2))?y=a:_=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(u=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===u&&e===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(o=(g+v)/2))?g=o:v=o,(s=e>=(a=(y+_)/2))?y=a:_=a}while((l=s<<1|f)==(h=(c>=a)<<1|u>=o));return i[h]=d,i[l]=p,t}function Ju(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function tc(t){return t[0]}function nc(t){return t[1]}function ec(t,n,e){var r=new rc(null==n?tc:n,null==e?nc:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function rc(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function ic(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var oc=ec.prototype=rc.prototype;function ac(t){return function(){return t}}function uc(t){return 1e-6*(t()-.5)}function cc(t){return t.x+t.vx}function fc(t){return t.y+t.vy}function sc(t){return t.index}function lc(t,n){var e=t.get(n);if(!e)throw new Error("node not found: "+n);return e}oc.copy=function(){var t,n,e=new rc(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=ic(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=ic(n));return e},oc.add=function(t){const n=+this._x.call(null,t),e=+this._y.call(null,t);return Qu(this.cover(n,e),n,e,t)},oc.addAll=function(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,f=1/0,s=-1/0,l=-1/0;for(e=0;e<o;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(i=+this._y.call(null,n))||(a[e]=r,u[e]=i,r<c&&(c=r),r>s&&(s=r),i<f&&(f=i),i>l&&(l=i));if(c>s||f>l)return this;for(this.cover(c,f).cover(s,l),e=0;e<o;++e)Qu(this,a[e],u[e],t[e]);return this},oc.cover=function(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,o=(r=Math.floor(n))+1;else{for(var a,u,c=i-e||1,f=this._root;e>t||t>=i||r>n||n>=o;)switch(u=(n<r)<<1|t<e,(a=new Array(4))[u]=f,f=a,c*=2,u){case 0:i=e+c,o=r+c;break;case 1:e=i-c,o=r+c;break;case 2:i=e+c,r=o-c;break;case 3:e=i-c,r=o-c}this._root&&this._root.length&&(this._root=f)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},oc.data=function(){var t=[];return this.visit((function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)})),t},oc.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]]},oc.find=function(t,n,e){var r,i,o,a,u,c,f,s=this._x0,l=this._y0,h=this._x1,d=this._y1,p=[],g=this._root;for(g&&p.push(new Ju(g,s,l,h,d)),null==e?e=1/0:(s=t-e,l=n-e,h=t+e,d=n+e,e*=e);c=p.pop();)if(!(!(g=c.node)||(i=c.x0)>h||(o=c.y0)>d||(a=c.x1)<s||(u=c.y1)<l))if(g.length){var y=(i+a)/2,v=(o+u)/2;p.push(new Ju(g[3],y,v,a,u),new Ju(g[2],i,v,y,u),new Ju(g[1],y,o,a,v),new Ju(g[0],i,o,y,v)),(f=(n>=v)<<1|t>=y)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=c)}else{var _=t-+this._x.call(null,g.data),b=n-+this._y.call(null,g.data),m=_*_+b*b;if(m<e){var x=Math.sqrt(e=m);s=t-x,l=n-x,h=t+x,d=n+x,r=g.data}}return r},oc.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t)))return this;var n,e,r,i,o,a,u,c,f,s,l,h,d=this._root,p=this._x0,g=this._y0,y=this._x1,v=this._y1;if(!d)return this;if(d.length)for(;;){if((f=o>=(u=(p+y)/2))?p=u:y=u,(s=a>=(c=(g+v)/2))?g=c:v=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},oc.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},oc.root=function(){return this._root},oc.size=function(){var t=0;return this.visit((function(n){if(!n.length)do{++t}while(n=n.next)})),t},oc.visit=function(t){var n,e,r,i,o,a,u=[],c=this._root;for(c&&u.push(new Ju(c,this._x0,this._y0,this._x1,this._y1));n=u.pop();)if(!t(c=n.node,r=n.x0,i=n.y0,o=n.x1,a=n.y1)&&c.length){var f=(r+o)/2,s=(i+a)/2;(e=c[3])&&u.push(new Ju(e,f,s,o,a)),(e=c[2])&&u.push(new Ju(e,r,s,f,a)),(e=c[1])&&u.push(new Ju(e,f,i,o,s)),(e=c[0])&&u.push(new Ju(e,r,i,f,s))}return this},oc.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new Ju(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var o,a=n.x0,u=n.y0,c=n.x1,f=n.y1,s=(a+c)/2,l=(u+f)/2;(o=i[0])&&e.push(new Ju(o,a,u,s,l)),(o=i[1])&&e.push(new Ju(o,s,u,c,l)),(o=i[2])&&e.push(new Ju(o,a,l,s,f)),(o=i[3])&&e.push(new Ju(o,s,l,c,f))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},oc.x=function(t){return arguments.length?(this._x=t,this):this._x},oc.y=function(t){return arguments.length?(this._y=t,this):this._y};const hc=4294967296;function dc(t){return t.x}function pc(t){return t.y}var gc=Math.PI*(3-Math.sqrt(5));function yc(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function vc(t){return(t=yc(Math.abs(t)))?t[1]:NaN}var _c,bc=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function mc(t){if(!(n=bc.exec(t)))throw new Error("invalid format: "+t);var n;return new xc({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function xc(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function wc(t,n){var e=yc(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}mc.prototype=xc.prototype,xc.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Mc={"%":(t,n)=>(100*t).toFixed(n),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,n)=>t.toExponential(n),f:(t,n)=>t.toFixed(n),g:(t,n)=>t.toPrecision(n),o:t=>Math.round(t).toString(8),p:(t,n)=>wc(100*t,n),r:wc,s:function(t,n){var e=yc(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(_c=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+yc(t,Math.max(0,n+o-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Ac(t){return t}var Tc,Sc=Array.prototype.map,Ec=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function kc(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?Ac:(n=Sc.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(t.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?Ac:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(Sc.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",f=void 0===t.minus?"−":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function l(t){var n=(t=mc(t)).fill,e=t.align,l=t.sign,h=t.symbol,d=t.zero,p=t.width,g=t.comma,y=t.precision,v=t.trim,_=t.type;"n"===_?(g=!0,_="g"):Mc[_]||(void 0===y&&(y=12),v=!0,_="g"),(d||"0"===n&&"="===e)&&(d=!0,n="0",e="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(_)?"0"+_.toLowerCase():"",m="$"===h?o:/[%p]/.test(_)?c:"",x=Mc[_],w=/[defgprs%]/.test(_);function M(t){var i,o,c,h=b,M=m;if("c"===_)M=x(t)+M,t="";else{var A=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:x(Math.abs(t),y),v&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r<e;++r)switch(t[r]){case".":i=n=r;break;case"0":0===i&&(i=r),n=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),A&&0==+t&&"+"!==l&&(A=!1),h=(A?"("===l?l:f:"-"===l||"("===l?"":l)+h,M=("s"===_?Ec[8+_c/3]:"")+M+(A&&"("===l?")":""),w)for(i=-1,o=t.length;++i<o;)if(48>(c=t.charCodeAt(i))||c>57){M=(46===c?a+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}g&&!d&&(t=r(t,1/0));var T=h.length+t.length+M.length,S=T<p?new Array(p-T+1).join(n):"";switch(g&&d&&(t=r(S+t,S.length?p-M.length:1/0),S=""),e){case"<":t=h+t+M+S;break;case"=":t=h+S+t+M;break;case"^":t=S.slice(0,T=S.length>>1)+h+t+M+S.slice(T);break;default:t=S+h+t+M}return u(t)}return y=void 0===y?6:/[gprs]/.test(_)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),M.toString=function(){return t+""},M}return{format:l,formatPrefix:function(t,n){var e=l(((t=mc(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(vc(n)/3))),i=Math.pow(10,-r),o=Ec[8+r/3];return function(t){return e(i*t)+o}}}}function Nc(n){return Tc=kc(n),t.format=Tc.format,t.formatPrefix=Tc.formatPrefix,Tc}function Cc(t){return Math.max(0,-vc(Math.abs(t)))}function Pc(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(vc(n)/3)))-vc(Math.abs(t)))}function zc(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,vc(n)-vc(t))+1}t.format=void 0,t.formatPrefix=void 0,Nc({thousands:",",grouping:[3],currency:["$",""]});var Dc=1e-6,qc=1e-12,Rc=Math.PI,Fc=Rc/2,Oc=Rc/4,Uc=2*Rc,Ic=180/Rc,Bc=Rc/180,Yc=Math.abs,Lc=Math.atan,jc=Math.atan2,Hc=Math.cos,Xc=Math.ceil,Gc=Math.exp,Vc=Math.hypot,$c=Math.log,Wc=Math.pow,Zc=Math.sin,Kc=Math.sign||function(t){return t>0?1:t<0?-1:0},Qc=Math.sqrt,Jc=Math.tan;function tf(t){return t>1?0:t<-1?Rc:Math.acos(t)}function nf(t){return t>1?Fc:t<-1?-Fc:Math.asin(t)}function ef(t){return(t=Zc(t/2))*t}function rf(){}function of(t,n){t&&uf.hasOwnProperty(t.type)&&uf[t.type](t,n)}var af={Feature:function(t,n){of(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)of(e[r].geometry,n)}},uf={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)t=e[r],n.point(t[0],t[1],t[2])},LineString:function(t,n){cf(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)cf(e[r],n,0)},Polygon:function(t,n){ff(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)ff(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)of(e[r],n)}};function cf(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i<o;)r=t[i],n.point(r[0],r[1],r[2]);n.lineEnd()}function ff(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)cf(t[e],n,1);n.polygonEnd()}function sf(t,n){t&&af.hasOwnProperty(t.type)?af[t.type](t,n):of(t,n)}var lf,hf,df,pf,gf,yf,vf,_f,bf,mf,xf,wf,Mf,Af,Tf,Sf,Ef=new y,kf=new y,Nf={point:rf,lineStart:rf,lineEnd:rf,polygonStart:function(){Ef=new y,Nf.lineStart=Cf,Nf.lineEnd=Pf},polygonEnd:function(){var t=+Ef;kf.add(t<0?Uc+t:t),this.lineStart=this.lineEnd=this.point=rf},sphere:function(){kf.add(Uc)}};function Cf(){Nf.point=zf}function Pf(){Df(lf,hf)}function zf(t,n){Nf.point=Df,lf=t,hf=n,df=t*=Bc,pf=Hc(n=(n*=Bc)/2+Oc),gf=Zc(n)}function Df(t,n){var e=(t*=Bc)-df,r=e>=0?1:-1,i=r*e,o=Hc(n=(n*=Bc)/2+Oc),a=Zc(n),u=gf*a,c=pf*o+u*Hc(i),f=u*r*Zc(i);Ef.add(jc(f,c)),df=t,pf=o,gf=a}function qf(t){return[jc(t[1],t[0]),nf(t[2])]}function Rf(t){var n=t[0],e=t[1],r=Hc(e);return[r*Hc(n),r*Zc(n),Zc(e)]}function Ff(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function Of(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function Uf(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function If(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function Bf(t){var n=Qc(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var Yf,Lf,jf,Hf,Xf,Gf,Vf,$f,Wf,Zf,Kf,Qf,Jf,ts,ns,es,rs={point:is,lineStart:as,lineEnd:us,polygonStart:function(){rs.point=cs,rs.lineStart=fs,rs.lineEnd=ss,Af=new y,Nf.polygonStart()},polygonEnd:function(){Nf.polygonEnd(),rs.point=is,rs.lineStart=as,rs.lineEnd=us,Ef<0?(yf=-(_f=180),vf=-(bf=90)):Af>Dc?bf=90:Af<-1e-6&&(vf=-90),Sf[0]=yf,Sf[1]=_f},sphere:function(){yf=-(_f=180),vf=-(bf=90)}};function is(t,n){Tf.push(Sf=[yf=t,_f=t]),n<vf&&(vf=n),n>bf&&(bf=n)}function os(t,n){var e=Rf([t*Bc,n*Bc]);if(Mf){var r=Of(Mf,e),i=Of([r[1],-r[0],0],r);Bf(i),i=qf(i);var o,a=t-mf,u=a>0?1:-1,c=i[0]*Ic*u,f=Yc(a)>180;f^(u*mf<c&&c<u*t)?(o=i[1]*Ic)>bf&&(bf=o):f^(u*mf<(c=(c+360)%360-180)&&c<u*t)?(o=-i[1]*Ic)<vf&&(vf=o):(n<vf&&(vf=n),n>bf&&(bf=n)),f?t<mf?ls(yf,t)>ls(yf,_f)&&(_f=t):ls(t,_f)>ls(yf,_f)&&(yf=t):_f>=yf?(t<yf&&(yf=t),t>_f&&(_f=t)):t>mf?ls(yf,t)>ls(yf,_f)&&(_f=t):ls(t,_f)>ls(yf,_f)&&(yf=t)}else Tf.push(Sf=[yf=t,_f=t]);n<vf&&(vf=n),n>bf&&(bf=n),Mf=e,mf=t}function as(){rs.point=os}function us(){Sf[0]=yf,Sf[1]=_f,rs.point=is,Mf=null}function cs(t,n){if(Mf){var e=t-mf;Af.add(Yc(e)>180?e+(e>0?360:-360):e)}else xf=t,wf=n;Nf.point(t,n),os(t,n)}function fs(){Nf.lineStart()}function ss(){cs(xf,wf),Nf.lineEnd(),Yc(Af)>Dc&&(yf=-(_f=180)),Sf[0]=yf,Sf[1]=_f,Mf=null}function ls(t,n){return(n-=t)<0?n+360:n}function hs(t,n){return t[0]-n[0]}function ds(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var ps={sphere:rf,point:gs,lineStart:vs,lineEnd:ms,polygonStart:function(){ps.lineStart=xs,ps.lineEnd=ws},polygonEnd:function(){ps.lineStart=vs,ps.lineEnd=ms}};function gs(t,n){t*=Bc;var e=Hc(n*=Bc);ys(e*Hc(t),e*Zc(t),Zc(n))}function ys(t,n,e){++Yf,jf+=(t-jf)/Yf,Hf+=(n-Hf)/Yf,Xf+=(e-Xf)/Yf}function vs(){ps.point=_s}function _s(t,n){t*=Bc;var e=Hc(n*=Bc);ts=e*Hc(t),ns=e*Zc(t),es=Zc(n),ps.point=bs,ys(ts,ns,es)}function bs(t,n){t*=Bc;var e=Hc(n*=Bc),r=e*Hc(t),i=e*Zc(t),o=Zc(n),a=jc(Qc((a=ns*o-es*i)*a+(a=es*r-ts*o)*a+(a=ts*i-ns*r)*a),ts*r+ns*i+es*o);Lf+=a,Gf+=a*(ts+(ts=r)),Vf+=a*(ns+(ns=i)),$f+=a*(es+(es=o)),ys(ts,ns,es)}function ms(){ps.point=gs}function xs(){ps.point=Ms}function ws(){As(Qf,Jf),ps.point=gs}function Ms(t,n){Qf=t,Jf=n,t*=Bc,n*=Bc,ps.point=As;var e=Hc(n);ts=e*Hc(t),ns=e*Zc(t),es=Zc(n),ys(ts,ns,es)}function As(t,n){t*=Bc;var e=Hc(n*=Bc),r=e*Hc(t),i=e*Zc(t),o=Zc(n),a=ns*o-es*i,u=es*r-ts*o,c=ts*i-ns*r,f=Vc(a,u,c),s=nf(f),l=f&&-s/f;Wf.add(l*a),Zf.add(l*u),Kf.add(l*c),Lf+=s,Gf+=s*(ts+(ts=r)),Vf+=s*(ns+(ns=i)),$f+=s*(es+(es=o)),ys(ts,ns,es)}function Ts(t){return function(){return t}}function Ss(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e}function Es(t,n){return[Yc(t)>Rc?t+Math.round(-t/Uc)*Uc:t,n]}function ks(t,n,e){return(t%=Uc)?n||e?Ss(Cs(t),Ps(n,e)):Cs(t):n||e?Ps(n,e):Es}function Ns(t){return function(n,e){return[(n+=t)>Rc?n-Uc:n<-Rc?n+Uc:n,e]}}function Cs(t){var n=Ns(t);return n.invert=Ns(-t),n}function Ps(t,n){var e=Hc(t),r=Zc(t),i=Hc(n),o=Zc(n);function a(t,n){var a=Hc(n),u=Hc(t)*a,c=Zc(t)*a,f=Zc(n),s=f*e+u*r;return[jc(c*i-s*o,u*e-f*r),nf(s*i+c*o)]}return a.invert=function(t,n){var a=Hc(n),u=Hc(t)*a,c=Zc(t)*a,f=Zc(n),s=f*i-c*o;return[jc(c*i+f*o,u*e+s*r),nf(s*e-u*r)]},a}function zs(t){function n(n){return(n=t(n[0]*Bc,n[1]*Bc))[0]*=Ic,n[1]*=Ic,n}return t=ks(t[0]*Bc,t[1]*Bc,t.length>2?t[2]*Bc:0),n.invert=function(n){return(n=t.invert(n[0]*Bc,n[1]*Bc))[0]*=Ic,n[1]*=Ic,n},n}function Ds(t,n,e,r,i,o){if(e){var a=Hc(n),u=Zc(n),c=r*e;null==i?(i=n+r*Uc,o=n-c/2):(i=qs(a,i),o=qs(a,o),(r>0?i<o:i>o)&&(i+=r*Uc));for(var f,s=i;r>0?s>o:s<o;s-=c)f=qf([a,-u*Hc(s),-u*Zc(s)]),t.point(f[0],f[1])}}function qs(t,n){(n=Rf(n))[0]-=t,Bf(n);var e=tf(-n[1]);return((-n[2]<0?-e:e)+Uc-Dc)%Uc}function Rs(){var t,n=[];return{point:function(n,e,r){t.push([n,e,r])},lineStart:function(){n.push(t=[])},lineEnd:rf,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function Fs(t,n){return Yc(t[0]-n[0])<Dc&&Yc(t[1]-n[1])<Dc}function Os(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Us(t,n,e,r,i){var o,a,u=[],c=[];if(t.forEach((function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],a=t[n];if(Fs(r,a)){if(!r[2]&&!a[2]){for(i.lineStart(),o=0;o<n;++o)i.point((r=t[o])[0],r[1]);return void i.lineEnd()}a[0]+=2e-6}u.push(e=new Os(r,t,null,!0)),c.push(e.o=new Os(r,null,e,!1)),u.push(e=new Os(a,t,null,!1)),c.push(e.o=new Os(a,null,e,!0))}})),u.length){for(c.sort(n),Is(u),Is(c),o=0,a=c.length;o<a;++o)c[o].e=e=!e;for(var f,s,l=u[0];;){for(var h=l,d=!0;h.v;)if((h=h.n)===l)return;f=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(o=0,a=f.length;o<a;++o)i.point((s=f[o])[0],s[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(d)for(f=h.p.z,o=f.length-1;o>=0;--o)i.point((s=f[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}f=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function Is(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r<n;)i.n=e=t[r],e.p=i,i=e;i.n=e=t[0],e.p=i}}function Bs(t){return Yc(t[0])<=Rc?t[0]:Kc(t[0])*((Yc(t[0])+Rc)%Uc-Rc)}function Ys(t,n){var e=Bs(n),r=n[1],i=Zc(r),o=[Zc(e),-Hc(e),0],a=0,u=0,c=new y;1===i?r=Fc+Dc:-1===i&&(r=-Fc-Dc);for(var f=0,s=t.length;f<s;++f)if(h=(l=t[f]).length)for(var l,h,d=l[h-1],p=Bs(d),g=d[1]/2+Oc,v=Zc(g),_=Hc(g),b=0;b<h;++b,p=x,v=M,_=A,d=m){var m=l[b],x=Bs(m),w=m[1]/2+Oc,M=Zc(w),A=Hc(w),T=x-p,S=T>=0?1:-1,E=S*T,k=E>Rc,N=v*M;if(c.add(jc(N*S*Zc(E),_*A+N*Hc(E))),a+=k?T+S*Uc:T,k^p>=e^x>=e){var C=Of(Rf(d),Rf(m));Bf(C);var P=Of(o,C);Bf(P);var z=(k^T>=0?-1:1)*nf(P[2]);(r>z||r===z&&(C[0]||C[1]))&&(u+=k^T>=0?1:-1)}}return(a<-1e-6||a<Dc&&c<-1e-12)^1&u}function Ls(t,n,e,r){return function(i){var o,a,u,c=n(i),f=Rs(),s=n(f),l=!1,h={point:d,lineStart:g,lineEnd:y,polygonStart:function(){h.point=v,h.lineStart=_,h.lineEnd=b,a=[],o=[]},polygonEnd:function(){h.point=d,h.lineStart=g,h.lineEnd=y,a=K(a);var t=Ys(o,r);a.length?(l||(i.polygonStart(),l=!0),Us(a,Hs,t,e,i)):t&&(l||(i.polygonStart(),l=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),l&&(i.polygonEnd(),l=!1),a=o=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(n,e){t(n,e)&&i.point(n,e)}function p(t,n){c.point(t,n)}function g(){h.point=p,c.lineStart()}function y(){h.point=d,c.lineEnd()}function v(t,n){u.push([t,n]),s.point(t,n)}function _(){s.lineStart(),u=[]}function b(){v(u[0][0],u[0][1]),s.lineEnd();var t,n,e,r,c=s.clean(),h=f.result(),d=h.length;if(u.pop(),o.push(u),u=null,d)if(1&c){if((n=(e=h[0]).length-1)>0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t<n;++t)i.point((r=e[t])[0],r[1]);i.lineEnd()}}else d>1&&2&c&&h.push(h.pop().concat(h.shift())),a.push(h.filter(js))}return h}}function js(t){return t.length>1}function Hs(t,n){return((t=t.x)[0]<0?t[1]-Fc-Dc:Fc-t[1])-((n=n.x)[0]<0?n[1]-Fc-Dc:Fc-n[1])}Es.invert=Es;var Xs=Ls((function(){return!0}),(function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,a){var u=o>0?Rc:-Rc,c=Yc(o-e);Yc(c-Rc)<Dc?(t.point(e,r=(r+a)/2>0?Fc:-Fc),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),n=0):i!==u&&c>=Rc&&(Yc(e-i)<Dc&&(e-=i*Dc),Yc(o-u)<Dc&&(o-=u*Dc),r=function(t,n,e,r){var i,o,a=Zc(t-e);return Yc(a)>Dc?Lc((Zc(n)*(o=Hc(r))*Zc(e)-Zc(r)*(i=Hc(n))*Zc(t))/(i*o*a)):(n+r)/2}(e,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=o,r=a),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}}),(function(t,n,e,r){var i;if(null==t)i=e*Fc,r.point(-Rc,i),r.point(0,i),r.point(Rc,i),r.point(Rc,0),r.point(Rc,-i),r.point(0,-i),r.point(-Rc,-i),r.point(-Rc,0),r.point(-Rc,i);else if(Yc(t[0]-n[0])>Dc){var o=t[0]<n[0]?Rc:-Rc;i=e*o/2,r.point(-o,i),r.point(0,i),r.point(o,i)}else r.point(n[0],n[1])}),[-Rc,-Fc]);function Gs(t){var n=Hc(t),e=6*Bc,r=n>0,i=Yc(n)>Dc;function o(t,e){return Hc(t)*Hc(e)>n}function a(t,e,r){var i=[1,0,0],o=Of(Rf(t),Rf(e)),a=Ff(o,o),u=o[0],c=a-u*u;if(!c)return!r&&t;var f=n*a/c,s=-n*u/c,l=Of(i,o),h=If(i,f);Uf(h,If(o,s));var d=l,p=Ff(h,d),g=Ff(d,d),y=p*p-g*(Ff(h,h)-1);if(!(y<0)){var v=Qc(y),_=If(d,(-p-v)/g);if(Uf(_,h),_=qf(_),!r)return _;var b,m=t[0],x=e[0],w=t[1],M=e[1];x<m&&(b=m,m=x,x=b);var A=x-m,T=Yc(A-Rc)<Dc;if(!T&&M<w&&(b=w,w=M,M=b),T||A<Dc?T?w+M>0^_[1]<(Yc(_[0]-m)<Dc?w:M):w<=_[1]&&_[1]<=M:A>Rc^(m<=_[0]&&_[0]<=x)){var S=If(d,(-p+v)/g);return Uf(S,h),[_,qf(S)]}}}function u(n,e){var i=r?t:Rc-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return Ls(o,(function(t){var n,e,c,f,s;return{lineStart:function(){f=c=!1,s=1},point:function(l,h){var d,p=[l,h],g=o(l,h),y=r?g?0:u(l,h):g?u(l+(l<0?Rc:-Rc),h):0;if(!n&&(f=c=g)&&t.lineStart(),g!==c&&(!(d=a(n,p))||Fs(n,d)||Fs(p,d))&&(p[2]=1),g!==c)s=0,g?(t.lineStart(),d=a(p,n),t.point(d[0],d[1])):(d=a(n,p),t.point(d[0],d[1],2),t.lineEnd()),n=d;else if(i&&n&&r^g){var v;y&e||!(v=a(p,n,!0))||(s=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1],3)))}!g||n&&Fs(n,p)||t.point(p[0],p[1]),n=p,c=g,e=y},lineEnd:function(){c&&t.lineEnd(),n=null},clean:function(){return s|(f&&c)<<1}}}),(function(n,r,i,o){Ds(o,t,e,i,n,r)}),r?[0,-t]:[-Rc,t-Rc])}var Vs,$s,Ws,Zs,Ks=1e9,Qs=-Ks;function Js(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,u,f){var s=0,l=0;if(null==i||(s=a(i,u))!==(l=a(o,u))||c(i,o)<0^u>0)do{f.point(0===s||3===s?t:e,s>1?r:n)}while((s=(s+u+4)%4)!==l);else f.point(o[0],o[1])}function a(r,i){return Yc(r[0]-t)<Dc?i>0?0:3:Yc(r[0]-e)<Dc?i>0?2:1:Yc(r[1]-n)<Dc?i>0?1:0:i>0?3:2}function u(t,n){return c(t.x,n.x)}function c(t,n){var e=a(t,1),r=a(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(a){var c,f,s,l,h,d,p,g,y,v,_,b=a,m=Rs(),x={point:w,lineStart:function(){x.point=M,f&&f.push(s=[]);v=!0,y=!1,p=g=NaN},lineEnd:function(){c&&(M(l,h),d&&y&&m.rejoin(),c.push(m.result()));x.point=w,y&&b.lineEnd()},polygonStart:function(){b=m,c=[],f=[],_=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=f.length;e<i;++e)for(var o,a,u=f[e],c=1,s=u.length,l=u[0],h=l[0],d=l[1];c<s;++c)o=h,a=d,h=(l=u[c])[0],d=l[1],a<=r?d>r&&(h-o)*(r-a)>(d-a)*(t-o)&&++n:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--n;return n}(),e=_&&n,i=(c=K(c)).length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&Us(c,u,n,o,a),a.polygonEnd());b=a,c=f=s=null}};function w(t,n){i(t,n)&&b.point(t,n)}function M(o,a){var u=i(o,a);if(f&&s.push([o,a]),v)l=o,h=a,d=u,v=!1,u&&(b.lineStart(),b.point(o,a));else if(u&&y)b.point(o,a);else{var c=[p=Math.max(Qs,Math.min(Ks,p)),g=Math.max(Qs,Math.min(Ks,g))],m=[o=Math.max(Qs,Math.min(Ks,o)),a=Math.max(Qs,Math.min(Ks,a))];!function(t,n,e,r,i,o){var a,u=t[0],c=t[1],f=0,s=1,l=n[0]-u,h=n[1]-c;if(a=e-u,l||!(a>0)){if(a/=l,l<0){if(a<f)return;a<s&&(s=a)}else if(l>0){if(a>s)return;a>f&&(f=a)}if(a=i-u,l||!(a<0)){if(a/=l,l<0){if(a>s)return;a>f&&(f=a)}else if(l>0){if(a<f)return;a<s&&(s=a)}if(a=r-c,h||!(a>0)){if(a/=h,h<0){if(a<f)return;a<s&&(s=a)}else if(h>0){if(a>s)return;a>f&&(f=a)}if(a=o-c,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>f&&(f=a)}else if(h>0){if(a<f)return;a<s&&(s=a)}return f>0&&(t[0]=u+f*l,t[1]=c+f*h),s<1&&(n[0]=u+s*l,n[1]=c+s*h),!0}}}}}(c,m,t,n,e,r)?u&&(b.lineStart(),b.point(o,a),_=!1):(y||(b.lineStart(),b.point(c[0],c[1])),b.point(m[0],m[1]),u||b.lineEnd(),_=!1)}p=o,g=a,y=u}return x}}var tl={sphere:rf,point:rf,lineStart:function(){tl.point=el,tl.lineEnd=nl},lineEnd:rf,polygonStart:rf,polygonEnd:rf};function nl(){tl.point=tl.lineEnd=rf}function el(t,n){$s=t*=Bc,Ws=Zc(n*=Bc),Zs=Hc(n),tl.point=rl}function rl(t,n){t*=Bc;var e=Zc(n*=Bc),r=Hc(n),i=Yc(t-$s),o=Hc(i),a=r*Zc(i),u=Zs*e-Ws*r*o,c=Ws*e+Zs*r*o;Vs.add(jc(Qc(a*a+u*u),c)),$s=t,Ws=e,Zs=r}function il(t){return Vs=new y,sf(t,tl),+Vs}var ol=[null,null],al={type:"LineString",coordinates:ol};function ul(t,n){return ol[0]=t,ol[1]=n,il(al)}var cl={Feature:function(t,n){return sl(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)if(sl(e[r].geometry,n))return!0;return!1}},fl={Sphere:function(){return!0},Point:function(t,n){return ll(t.coordinates,n)},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(ll(e[r],n))return!0;return!1},LineString:function(t,n){return hl(t.coordinates,n)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(hl(e[r],n))return!0;return!1},Polygon:function(t,n){return dl(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(dl(e[r],n))return!0;return!1},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)if(sl(e[r],n))return!0;return!1}};function sl(t,n){return!(!t||!fl.hasOwnProperty(t.type))&&fl[t.type](t,n)}function ll(t,n){return 0===ul(t,n)}function hl(t,n){for(var e,r,i,o=0,a=t.length;o<a;o++){if(0===(r=ul(t[o],n)))return!0;if(o>0&&(i=ul(t[o],t[o-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))<qc*i)return!0;e=r}return!1}function dl(t,n){return!!Ys(t.map(pl),gl(n))}function pl(t){return(t=t.map(gl)).pop(),t}function gl(t){return[t[0]*Bc,t[1]*Bc]}function yl(t,n,e){var r=tt(t,n-Dc,e).concat(n);return function(t){return r.map((function(n){return[t,n]}))}}function vl(t,n,e){var r=tt(t,n-Dc,e).concat(n);return function(t){return r.map((function(n){return[n,t]}))}}function _l(){var t,n,e,r,i,o,a,u,c,f,s,l,h=10,d=h,p=90,g=360,y=2.5;function v(){return{type:"MultiLineString",coordinates:_()}}function _(){return tt(Xc(r/p)*p,e,p).map(s).concat(tt(Xc(u/g)*g,a,g).map(l)).concat(tt(Xc(n/h)*h,t,h).filter((function(t){return Yc(t%p)>Dc})).map(c)).concat(tt(Xc(o/d)*d,i,d).filter((function(t){return Yc(t%g)>Dc})).map(f))}return v.lines=function(){return _().map((function(t){return{type:"LineString",coordinates:t}}))},v.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(l(a).slice(1),s(e).reverse().slice(1),l(u).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),u>a&&(t=u,u=a,a=t),v.precision(y)):[[r,u],[e,a]]},v.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),o>i&&(e=o,o=i,i=e),v.precision(y)):[[n,o],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],v):[h,d]},v.precision=function(h){return arguments.length?(y=+h,c=yl(o,i,90),f=vl(n,t,y),s=yl(u,a,90),l=vl(r,e,y),v):y},v.extentMajor([[-180,-89.999999],[180,89.999999]]).extentMinor([[-180,-80.000001],[180,80.000001]])}var bl,ml,xl,wl,Ml=t=>t,Al=new y,Tl=new y,Sl={point:rf,lineStart:rf,lineEnd:rf,polygonStart:function(){Sl.lineStart=El,Sl.lineEnd=Cl},polygonEnd:function(){Sl.lineStart=Sl.lineEnd=Sl.point=rf,Al.add(Yc(Tl)),Tl=new y},result:function(){var t=Al/2;return Al=new y,t}};function El(){Sl.point=kl}function kl(t,n){Sl.point=Nl,bl=xl=t,ml=wl=n}function Nl(t,n){Tl.add(wl*t-xl*n),xl=t,wl=n}function Cl(){Nl(bl,ml)}var Pl=Sl,zl=1/0,Dl=zl,ql=-zl,Rl=ql,Fl={point:function(t,n){t<zl&&(zl=t);t>ql&&(ql=t);n<Dl&&(Dl=n);n>Rl&&(Rl=n)},lineStart:rf,lineEnd:rf,polygonStart:rf,polygonEnd:rf,result:function(){var t=[[zl,Dl],[ql,Rl]];return ql=Rl=-(Dl=zl=1/0),t}};var Ol,Ul,Il,Bl,Yl=Fl,Ll=0,jl=0,Hl=0,Xl=0,Gl=0,Vl=0,$l=0,Wl=0,Zl=0,Kl={point:Ql,lineStart:Jl,lineEnd:eh,polygonStart:function(){Kl.lineStart=rh,Kl.lineEnd=ih},polygonEnd:function(){Kl.point=Ql,Kl.lineStart=Jl,Kl.lineEnd=eh},result:function(){var t=Zl?[$l/Zl,Wl/Zl]:Vl?[Xl/Vl,Gl/Vl]:Hl?[Ll/Hl,jl/Hl]:[NaN,NaN];return Ll=jl=Hl=Xl=Gl=Vl=$l=Wl=Zl=0,t}};function Ql(t,n){Ll+=t,jl+=n,++Hl}function Jl(){Kl.point=th}function th(t,n){Kl.point=nh,Ql(Il=t,Bl=n)}function nh(t,n){var e=t-Il,r=n-Bl,i=Qc(e*e+r*r);Xl+=i*(Il+t)/2,Gl+=i*(Bl+n)/2,Vl+=i,Ql(Il=t,Bl=n)}function eh(){Kl.point=Ql}function rh(){Kl.point=oh}function ih(){ah(Ol,Ul)}function oh(t,n){Kl.point=ah,Ql(Ol=Il=t,Ul=Bl=n)}function ah(t,n){var e=t-Il,r=n-Bl,i=Qc(e*e+r*r);Xl+=i*(Il+t)/2,Gl+=i*(Bl+n)/2,Vl+=i,$l+=(i=Bl*t-Il*n)*(Il+t),Wl+=i*(Bl+n),Zl+=3*i,Ql(Il=t,Bl=n)}var uh=Kl;function ch(t){this._context=t}ch.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,Uc)}},result:rf};var fh,sh,lh,hh,dh,ph=new y,gh={point:rf,lineStart:function(){gh.point=yh},lineEnd:function(){fh&&vh(sh,lh),gh.point=rf},polygonStart:function(){fh=!0},polygonEnd:function(){fh=null},result:function(){var t=+ph;return ph=new y,t}};function yh(t,n){gh.point=vh,sh=hh=t,lh=dh=n}function vh(t,n){hh-=t,dh-=n,ph.add(Qc(hh*hh+dh*dh)),hh=t,dh=n}var _h=gh;function bh(){this._string=[]}function mh(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function xh(t){return function(n){var e=new wh;for(var r in t)e[r]=t[r];return e.stream=n,e}}function wh(){}function Mh(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),sf(e,t.stream(Yl)),n(Yl.result()),null!=r&&t.clipExtent(r),t}function Ah(t,n,e){return Mh(t,(function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),a=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,u=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([a,u])}),e)}function Th(t,n,e){return Ah(t,[[0,0],n],e)}function Sh(t,n,e){return Mh(t,(function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,a=-i*e[0][1];t.scale(150*i).translate([o,a])}),e)}function Eh(t,n,e){return Mh(t,(function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],a=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,a])}),e)}bh.prototype={_radius:4.5,_circle:mh(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push("M",t,",",n),this._point=1;break;case 1:this._string.push("L",t,",",n);break;default:null==this._circle&&(this._circle=mh(this._radius)),this._string.push("M",t,",",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},wh.prototype={constructor:wh,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var kh=Hc(30*Bc);function Nh(t,n){return+n?function(t,n){function e(r,i,o,a,u,c,f,s,l,h,d,p,g,y){var v=f-r,_=s-i,b=v*v+_*_;if(b>4*n&&g--){var m=a+h,x=u+d,w=c+p,M=Qc(m*m+x*x+w*w),A=nf(w/=M),T=Yc(Yc(w)-1)<Dc||Yc(o-l)<Dc?(o+l)/2:jc(x,m),S=t(T,A),E=S[0],k=S[1],N=E-r,C=k-i,P=_*N-v*C;(P*P/b>n||Yc((v*N+_*C)/b-.5)>.3||a*h+u*d+c*p<kh)&&(e(r,i,o,a,u,c,E,k,T,m/=M,x/=M,w,g,y),y.point(E,k),e(E,k,T,m,x,w,f,s,l,h,d,p,g,y))}}return function(n){var r,i,o,a,u,c,f,s,l,h,d,p,g={point:y,lineStart:v,lineEnd:b,polygonStart:function(){n.polygonStart(),g.lineStart=m},polygonEnd:function(){n.polygonEnd(),g.lineStart=v}};function y(e,r){e=t(e,r),n.point(e[0],e[1])}function v(){s=NaN,g.point=_,n.lineStart()}function _(r,i){var o=Rf([r,i]),a=t(r,i);e(s,l,f,h,d,p,s=a[0],l=a[1],f=r,h=o[0],d=o[1],p=o[2],16,n),n.point(s,l)}function b(){g.point=y,n.lineEnd()}function m(){v(),g.point=x,g.lineEnd=w}function x(t,n){_(r=t,n),i=s,o=l,a=h,u=d,c=p,g.point=_}function w(){e(s,l,f,h,d,p,i,o,r,a,u,c,16,n),g.lineEnd=b,b()}return g}}(t,n):function(t){return xh({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}(t)}var Ch=xh({point:function(t,n){this.stream.point(t*Bc,n*Bc)}});function Ph(t,n,e,r,i,o){if(!o)return function(t,n,e,r,i){function o(o,a){return[n+t*(o*=r),e-t*(a*=i)]}return o.invert=function(o,a){return[(o-n)/t*r,(e-a)/t*i]},o}(t,n,e,r,i);var a=Hc(o),u=Zc(o),c=a*t,f=u*t,s=a/t,l=u/t,h=(u*e-a*n)/t,d=(u*n+a*e)/t;function p(t,o){return[c*(t*=r)-f*(o*=i)+n,e-f*t-c*o]}return p.invert=function(t,n){return[r*(s*t-l*n+h),i*(d-l*t-s*n)]},p}function zh(t){return Dh((function(){return t}))()}function Dh(t){var n,e,r,i,o,a,u,c,f,s,l=150,h=480,d=250,p=0,g=0,y=0,v=0,_=0,b=0,m=1,x=1,w=null,M=Xs,A=null,T=Ml,S=.5;function E(t){return c(t[0]*Bc,t[1]*Bc)}function k(t){return(t=c.invert(t[0],t[1]))&&[t[0]*Ic,t[1]*Ic]}function N(){var t=Ph(l,0,0,m,x,b).apply(null,n(p,g)),r=Ph(l,h-t[0],d-t[1],m,x,b);return e=ks(y,v,_),u=Ss(n,r),c=Ss(e,u),a=Nh(u,S),C()}function C(){return f=s=null,E}return E.stream=function(t){return f&&s===t?f:f=Ch(function(t){return xh({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}(e)(M(a(T(s=t)))))},E.preclip=function(t){return arguments.length?(M=t,w=void 0,C()):M},E.postclip=function(t){return arguments.length?(T=t,A=r=i=o=null,C()):T},E.clipAngle=function(t){return arguments.length?(M=+t?Gs(w=t*Bc):(w=null,Xs),C()):w*Ic},E.clipExtent=function(t){return arguments.length?(T=null==t?(A=r=i=o=null,Ml):Js(A=+t[0][0],r=+t[0][1],i=+t[1][0],o=+t[1][1]),C()):null==A?null:[[A,r],[i,o]]},E.scale=function(t){return arguments.length?(l=+t,N()):l},E.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],N()):[h,d]},E.center=function(t){return arguments.length?(p=t[0]%360*Bc,g=t[1]%360*Bc,N()):[p*Ic,g*Ic]},E.rotate=function(t){return arguments.length?(y=t[0]%360*Bc,v=t[1]%360*Bc,_=t.length>2?t[2]%360*Bc:0,N()):[y*Ic,v*Ic,_*Ic]},E.angle=function(t){return arguments.length?(b=t%360*Bc,N()):b*Ic},E.reflectX=function(t){return arguments.length?(m=t?-1:1,N()):m<0},E.reflectY=function(t){return arguments.length?(x=t?-1:1,N()):x<0},E.precision=function(t){return arguments.length?(a=Nh(u,S=t*t),C()):Qc(S)},E.fitExtent=function(t,n){return Ah(E,t,n)},E.fitSize=function(t,n){return Th(E,t,n)},E.fitWidth=function(t,n){return Sh(E,t,n)},E.fitHeight=function(t,n){return Eh(E,t,n)},function(){return n=t.apply(this,arguments),E.invert=n.invert&&k,N()}}function qh(t){var n=0,e=Rc/3,r=Dh(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*Bc,e=t[1]*Bc):[n*Ic,e*Ic]},i}function Rh(t,n){var e=Zc(t),r=(e+Zc(n))/2;if(Yc(r)<Dc)return function(t){var n=Hc(t);function e(t,e){return[t*n,Zc(e)/n]}return e.invert=function(t,e){return[t/n,nf(e*n)]},e}(t);var i=1+e*(2*r-e),o=Qc(i)/r;function a(t,n){var e=Qc(i-2*r*Zc(n))/r;return[e*Zc(t*=r),o-e*Hc(t)]}return a.invert=function(t,n){var e=o-n,a=jc(t,Yc(e))*Kc(e);return e*r<0&&(a-=Rc*Kc(t)*Kc(e)),[a/r,nf((i-(t*t+e*e)*r*r)/(2*r))]},a}function Fh(){return qh(Rh).scale(155.424).center([0,33.6442])}function Oh(){return Fh().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Uh(t){return function(n,e){var r=Hc(n),i=Hc(e),o=t(r*i);return o===1/0?[2,0]:[o*i*Zc(n),o*Zc(e)]}}function Ih(t){return function(n,e){var r=Qc(n*n+e*e),i=t(r),o=Zc(i),a=Hc(i);return[jc(n*o,r*a),nf(r&&e*o/r)]}}var Bh=Uh((function(t){return Qc(2/(1+t))}));Bh.invert=Ih((function(t){return 2*nf(t/2)}));var Yh=Uh((function(t){return(t=tf(t))&&t/Zc(t)}));function Lh(t,n){return[t,$c(Jc((Fc+n)/2))]}function jh(t){var n,e,r,i=zh(t),o=i.center,a=i.scale,u=i.translate,c=i.clipExtent,f=null;function s(){var o=Rc*a(),u=i(zs(i.rotate()).invert([0,0]));return c(null==f?[[u[0]-o,u[1]-o],[u[0]+o,u[1]+o]]:t===Lh?[[Math.max(u[0]-o,f),n],[Math.min(u[0]+o,e),r]]:[[f,Math.max(u[1]-o,n)],[e,Math.min(u[1]+o,r)]])}return i.scale=function(t){return arguments.length?(a(t),s()):a()},i.translate=function(t){return arguments.length?(u(t),s()):u()},i.center=function(t){return arguments.length?(o(t),s()):o()},i.clipExtent=function(t){return arguments.length?(null==t?f=n=e=r=null:(f=+t[0][0],n=+t[0][1],e=+t[1][0],r=+t[1][1]),s()):null==f?null:[[f,n],[e,r]]},s()}function Hh(t){return Jc((Fc+t)/2)}function Xh(t,n){var e=Hc(t),r=t===n?Zc(t):$c(e/Hc(n))/$c(Hh(n)/Hh(t)),i=e*Wc(Hh(t),r)/r;if(!r)return Lh;function o(t,n){i>0?n<-Fc+Dc&&(n=-Fc+Dc):n>Fc-Dc&&(n=Fc-Dc);var e=i/Wc(Hh(n),r);return[e*Zc(r*t),i-e*Hc(r*t)]}return o.invert=function(t,n){var e=i-n,o=Kc(r)*Qc(t*t+e*e),a=jc(t,Yc(e))*Kc(e);return e*r<0&&(a-=Rc*Kc(t)*Kc(e)),[a/r,2*Lc(Wc(i/o,1/r))-Fc]},o}function Gh(t,n){return[t,n]}function Vh(t,n){var e=Hc(t),r=t===n?Zc(t):(e-Hc(n))/(n-t),i=e/r+t;if(Yc(r)<Dc)return Gh;function o(t,n){var e=i-n,o=r*t;return[e*Zc(o),i-e*Hc(o)]}return o.invert=function(t,n){var e=i-n,o=jc(t,Yc(e))*Kc(e);return e*r<0&&(o-=Rc*Kc(t)*Kc(e)),[o/r,i-Kc(r)*Qc(t*t+e*e)]},o}Yh.invert=Ih((function(t){return t})),Lh.invert=function(t,n){return[t,2*Lc(Gc(n))-Fc]},Gh.invert=Gh;var $h=1.340264,Wh=-.081106,Zh=893e-6,Kh=.003796,Qh=Qc(3)/2;function Jh(t,n){var e=nf(Qh*Zc(n)),r=e*e,i=r*r*r;return[t*Hc(e)/(Qh*($h+3*Wh*r+i*(7*Zh+9*Kh*r))),e*($h+Wh*r+i*(Zh+Kh*r))]}function td(t,n){var e=Hc(n),r=Hc(t)*e;return[e*Zc(t)/r,Zc(n)/r]}function nd(t,n){var e=n*n,r=e*e;return[t*(.8707-.131979*e+r*(r*(.003971*e-.001529*r)-.013791)),n*(1.007226+e*(.015085+r*(.028874*e-.044475-.005916*r)))]}function ed(t,n){return[Hc(n)*Zc(t),Zc(n)]}function rd(t,n){var e=Hc(n),r=1+Hc(t)*e;return[e*Zc(t)/r,Zc(n)/r]}function id(t,n){return[$c(Jc((Fc+n)/2)),-t]}function od(t,n){return t.parent===n.parent?1:2}function ad(t,n){return t+n.x}function ud(t,n){return Math.max(t,n.y)}function cd(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function fd(t,n){t instanceof Map?(t=[void 0,t],void 0===n&&(n=ld)):void 0===n&&(n=sd);for(var e,r,i,o,a,u=new pd(t),c=[u];e=c.pop();)if((i=n(e.data))&&(a=(i=Array.from(i)).length))for(e.children=i,o=a-1;o>=0;--o)c.push(r=i[o]=new pd(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(dd)}function sd(t){return t.children}function ld(t){return Array.isArray(t)?t[1]:null}function hd(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function dd(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function pd(t){this.data=t,this.depth=this.height=0,this.parent=null}function gd(t){for(var n,e,r=0,i=(t=function(t){for(var n,e,r=t.length;r;)e=Math.random()*r--|0,n=t[r],t[r]=t[e],t[e]=n;return t}(Array.from(t))).length,o=[];r<i;)n=t[r],e&&_d(e,n)?++r:(e=md(o=yd(o,n)),r=0);return e}function yd(t,n){var e,r;if(bd(n,t))return[n];for(e=0;e<t.length;++e)if(vd(n,t[e])&&bd(xd(t[e],n),t))return[t[e],n];for(e=0;e<t.length-1;++e)for(r=e+1;r<t.length;++r)if(vd(xd(t[e],t[r]),n)&&vd(xd(t[e],n),t[r])&&vd(xd(t[r],n),t[e])&&bd(wd(t[e],t[r],n),t))return[t[e],t[r],n];throw new Error}function vd(t,n){var e=t.r-n.r,r=n.x-t.x,i=n.y-t.y;return e<0||e*e<r*r+i*i}function _d(t,n){var e=t.r-n.r+1e-9*Math.max(t.r,n.r,1),r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function bd(t,n){for(var e=0;e<n.length;++e)if(!_d(t,n[e]))return!1;return!0}function md(t){switch(t.length){case 1:return function(t){return{x:t.x,y:t.y,r:t.r}}(t[0]);case 2:return xd(t[0],t[1]);case 3:return wd(t[0],t[1],t[2])}}function xd(t,n){var e=t.x,r=t.y,i=t.r,o=n.x,a=n.y,u=n.r,c=o-e,f=a-r,s=u-i,l=Math.sqrt(c*c+f*f);return{x:(e+o+c/l*s)/2,y:(r+a+f/l*s)/2,r:(l+i+u)/2}}function wd(t,n,e){var r=t.x,i=t.y,o=t.r,a=n.x,u=n.y,c=n.r,f=e.x,s=e.y,l=e.r,h=r-a,d=r-f,p=i-u,g=i-s,y=c-o,v=l-o,_=r*r+i*i-o*o,b=_-a*a-u*u+c*c,m=_-f*f-s*s+l*l,x=d*p-h*g,w=(p*m-g*b)/(2*x)-r,M=(g*y-p*v)/x,A=(d*b-h*m)/(2*x)-i,T=(h*v-d*y)/x,S=M*M+T*T-1,E=2*(o+w*M+A*T),k=w*w+A*A-o*o,N=-(S?(E+Math.sqrt(E*E-4*S*k))/(2*S):k/E);return{x:r+w+M*N,y:i+A+T*N,r:N}}function Md(t,n,e){var r,i,o,a,u=t.x-n.x,c=t.y-n.y,f=u*u+c*c;f?(i=n.r+e.r,i*=i,a=t.r+e.r,i>(a*=a)?(r=(f+a-i)/(2*f),o=Math.sqrt(Math.max(0,a/f-r*r)),e.x=t.x-r*u-o*c,e.y=t.y-r*c+o*u):(r=(f+i-a)/(2*f),o=Math.sqrt(Math.max(0,i/f-r*r)),e.x=n.x+r*u-o*c,e.y=n.y+r*c+o*u)):(e.x=n.x+e.r,e.y=n.y)}function Ad(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function Td(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function Sd(t){this._=t,this.next=null,this.previous=null}function Ed(t){if(!(i=(t=function(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}(t)).length))return 0;var n,e,r,i,o,a,u,c,f,s,l;if((n=t[0]).x=0,n.y=0,!(i>1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;Md(e,n,r=t[2]),n=new Sd(n),e=new Sd(e),r=new Sd(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(u=3;u<i;++u){Md(n._,e._,r=t[u]),r=new Sd(r),c=e.next,f=n.previous,s=e._.r,l=n._.r;do{if(s<=l){if(Ad(c._,r._)){e=c,n.next=e,e.previous=n,--u;continue t}s+=c._.r,c=c.next}else{if(Ad(f._,r._)){(n=f).next=e,e.previous=n,--u;continue t}l+=f._.r,f=f.previous}}while(c!==f.next);for(r.previous=n,r.next=e,n.next=e.previous=e=r,o=Td(n);(r=r.next)!==e;)(a=Td(r))<o&&(n=r,o=a);e=n.next}for(n=[e._],r=e;(r=r.next)!==e;)n.push(r._);for(r=gd(n),u=0;u<i;++u)(n=t[u]).x-=r.x,n.y-=r.y;return r.r}function kd(t){return null==t?null:Nd(t)}function Nd(t){if("function"!=typeof t)throw new Error;return t}function Cd(){return 0}function Pd(t){return function(){return t}}function zd(t){return Math.sqrt(t.value)}function Dd(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function qd(t,n){return function(e){if(r=e.children){var r,i,o,a=r.length,u=t(e)*n||0;if(u)for(i=0;i<a;++i)r[i].r+=u;if(o=Ed(r),u)for(i=0;i<a;++i)r[i].r-=u;e.r=o+u}}}function Rd(t){return function(n){var e=n.parent;n.r*=t,e&&(n.x=e.x+t*n.x,n.y=e.y+t*n.y)}}function Fd(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function Od(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(r-n)/t.value;++u<c;)(o=a[u]).y0=e,o.y1=i,o.x0=n,o.x1=n+=o.value*f}Jh.invert=function(t,n){for(var e,r=n,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=e=(r*($h+Wh*i+o*(Zh+Kh*i))-n)/($h+3*Wh*i+o*(7*Zh+9*Kh*i)))*r)*i*i,!(Yc(e)<qc));++a);return[Qh*t*($h+3*Wh*i+o*(7*Zh+9*Kh*i))/Hc(r),nf(Zc(r)/Qh)]},td.invert=Ih(Lc),nd.invert=function(t,n){var e,r=n,i=25;do{var o=r*r,a=o*o;r-=e=(r*(1.007226+o*(.015085+a*(.028874*o-.044475-.005916*a)))-n)/(1.007226+o*(.045255+a*(.259866*o-.311325-.005916*11*a)))}while(Yc(e)>Dc&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},ed.invert=Ih(nf),rd.invert=Ih((function(t){return 2*Lc(t)})),id.invert=function(t,n){return[-n,2*Lc(Gc(t))-Fc]},pd.prototype=fd.prototype={constructor:pd,count:function(){return this.eachAfter(cd)},each:function(t,n){let e=-1;for(const r of this)t.call(n,r,++e,this);return this},eachAfter:function(t,n){for(var e,r,i,o=this,a=[o],u=[],c=-1;o=a.pop();)if(u.push(o),e=o.children)for(r=0,i=e.length;r<i;++r)a.push(e[r]);for(;o=u.pop();)t.call(n,o,++c,this);return this},eachBefore:function(t,n){for(var e,r,i=this,o=[i],a=-1;i=o.pop();)if(t.call(n,i,++a,this),e=i.children)for(r=e.length-1;r>=0;--r)o.push(e[r]);return this},find:function(t,n){let e=-1;for(const r of this)if(t.call(n,r,++e,this))return r},sum:function(t){return this.eachAfter((function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e}))},sort:function(t){return this.eachBefore((function(n){n.children&&n.children.sort(t)}))},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;t=e.pop(),n=r.pop();for(;t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(n){n.children||t.push(n)})),t},links:function(){var t=this,n=[];return t.each((function(e){e!==t&&n.push({source:e.parent,target:e})})),n},copy:function(){return fd(this).eachBefore(hd)},[Symbol.iterator]:function*(){var t,n,e,r,i=this,o=[i];do{for(t=o.reverse(),o=[];i=t.pop();)if(yield i,n=i.children)for(e=0,r=n.length;e<r;++e)o.push(n[e])}while(o.length)}};var Ud={depth:-1},Id={},Bd={};function Yd(t){return t.id}function Ld(t){return t.parentId}function jd(t){let n=t.length;if(n<2)return"";for(;--n>1&&!Hd(t,n););return t.slice(0,n)}function Hd(t,n){if("/"===t[n]){let e=0;for(;n>0&&"\\"===t[--n];)++e;if(0==(1&e))return!0}return!1}function Xd(t,n){return t.parent===n.parent?1:2}function Gd(t){var n=t.children;return n?n[0]:t.t}function Vd(t){var n=t.children;return n?n[n.length-1]:t.t}function $d(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function Wd(t,n,e){return t.a.parent===n.parent?t.a:e}function Zd(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function Kd(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(i-e)/t.value;++u<c;)(o=a[u]).x0=n,o.x1=r,o.y0=e,o.y1=e+=o.value*f}Zd.prototype=Object.create(pd.prototype);var Qd=(1+Math.sqrt(5))/2;function Jd(t,n,e,r,i,o){for(var a,u,c,f,s,l,h,d,p,g,y,v=[],_=n.children,b=0,m=0,x=_.length,w=n.value;b<x;){c=i-e,f=o-r;do{s=_[m++].value}while(!s&&m<x);for(l=h=s,y=s*s*(g=Math.max(f/c,c/f)/(w*t)),p=Math.max(h/y,y/l);m<x;++m){if(s+=u=_[m].value,u<l&&(l=u),u>h&&(h=u),y=s*s*g,(d=Math.max(h/y,y/l))>p){s-=u;break}p=d}v.push(a={value:s,dice:c<f,children:_.slice(b,m)}),a.dice?Od(a,e,r,i,w?r+=f*s/w:o):Kd(a,e,r,w?e+=c*s/w:i,o),w-=s,b=m}return v}var tp=function t(n){function e(t,e,r,i,o){Jd(n,t,e,r,i,o)}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Qd);var np=function t(n){function e(t,e,r,i,o){if((a=t._squarify)&&a.ratio===n)for(var a,u,c,f,s,l=-1,h=a.length,d=t.value;++l<h;){for(c=(u=a[l]).children,f=u.value=0,s=c.length;f<s;++f)u.value+=c[f].value;u.dice?Od(u,e,r,i,d?r+=(o-r)*u.value/d:o):Kd(u,e,r,d?e+=(i-e)*u.value/d:i,o),d-=u.value}else t._squarify=a=Jd(n,t,e,r,i,o),a.ratio=n}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Qd);function ep(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function rp(t,n){return t[0]-n[0]||t[1]-n[1]}function ip(t){const n=t.length,e=[0,1];let r,i=2;for(r=2;r<n;++r){for(;i>1&&ep(t[e[i-2]],t[e[i-1]],t[r])<=0;)--i;e[i++]=r}return e.slice(0,i)}var op=Math.random,ap=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(op),up=function t(n){function e(t,e){return arguments.length<2&&(e=t,t=0),t=Math.floor(t),e=Math.floor(e)-t,function(){return Math.floor(n()*e+t)}}return e.source=t,e}(op),cp=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(op),fp=function t(n){var e=cp.source(n);function r(){var t=e.apply(this,arguments);return function(){return Math.exp(t())}}return r.source=t,r}(op),sp=function t(n){function e(t){return(t=+t)<=0?()=>0:function(){for(var e=0,r=t;r>1;--r)e+=n();return e+r*n()}}return e.source=t,e}(op),lp=function t(n){var e=sp.source(n);function r(t){if(0==(t=+t))return n;var r=e(t);return function(){return r()/t}}return r.source=t,r}(op),hp=function t(n){function e(t){return function(){return-Math.log1p(-n())/t}}return e.source=t,e}(op),dp=function t(n){function e(t){if((t=+t)<0)throw new RangeError("invalid alpha");return t=1/-t,function(){return Math.pow(1-n(),t)}}return e.source=t,e}(op),pp=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return function(){return Math.floor(n()+t)}}return e.source=t,e}(op),gp=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return 0===t?()=>1/0:1===t?()=>1:(t=Math.log1p(-t),function(){return 1+Math.floor(Math.log1p(-n())/t)})}return e.source=t,e}(op),yp=function t(n){var e=cp.source(n)();function r(t,r){if((t=+t)<0)throw new RangeError("invalid k");if(0===t)return()=>0;if(r=null==r?1:+r,1===t)return()=>-Math.log1p(-n())*r;var i=(t<1?t+1:t)-1/3,o=1/(3*Math.sqrt(i)),a=t<1?()=>Math.pow(n(),1/t):()=>1;return function(){do{do{var t=e(),u=1+o*t}while(u<=0);u*=u*u;var c=1-n()}while(c>=1-.0331*t*t*t*t&&Math.log(c)>=.5*t*t+i*(1-u+Math.log(u)));return i*u*a()*r}}return r.source=t,r}(op),vp=function t(n){var e=yp.source(n);function r(t,n){var r=e(t),i=e(n);return function(){var t=r();return 0===t?0:t/(t+i())}}return r.source=t,r}(op),_p=function t(n){var e=gp.source(n),r=vp.source(n);function i(t,n){return t=+t,(n=+n)>=1?()=>t:n<=0?()=>0:function(){for(var i=0,o=t,a=n;o*a>16&&o*(1-a)>16;){var u=Math.floor((o+1)*a),c=r(u,o-u+1)();c<=a?(i+=u,o-=u,a=(a-c)/(1-c)):(o=u-1,a/=c)}for(var f=a<.5,s=e(f?a:1-a),l=s(),h=0;l<=o;++h)l+=s();return i+(f?h:o-h)}}return i.source=t,i}(op),bp=function t(n){function e(t,e,r){var i;return 0==(t=+t)?i=t=>-Math.log(t):(t=1/t,i=n=>Math.pow(n,t)),e=null==e?0:+e,r=null==r?1:+r,function(){return e+r*i(-Math.log1p(-n()))}}return e.source=t,e}(op),mp=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){return t+e*Math.tan(Math.PI*n())}}return e.source=t,e}(op),xp=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){var r=n();return t+e*Math.log(r/(1-r))}}return e.source=t,e}(op),wp=function t(n){var e=yp.source(n),r=_p.source(n);function i(t){return function(){for(var i=0,o=t;o>16;){var a=Math.floor(.875*o),u=e(a)();if(u>o)return i+r(a-1,o/u)();i+=a,o-=u}for(var c=-Math.log1p(-n()),f=0;c<=o;++f)c-=Math.log1p(-n());return i+f}}return i.source=t,i}(op);const Mp=1/4294967296;function Ap(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function Tp(t,n){switch(arguments.length){case 0:break;case 1:"function"==typeof t?this.interpolator(t):this.range(t);break;default:this.domain(t),"function"==typeof n?this.interpolator(n):this.range(n)}return this}const Sp=Symbol("implicit");function Ep(){var t=new InternMap,n=[],e=[],r=Sp;function i(i){let o=t.get(i);if(void 0===o){if(r!==Sp)return r;t.set(i,o=n.push(i)-1)}return e[o%e.length]}return i.domain=function(e){if(!arguments.length)return n.slice();n=[],t=new InternMap;for(const r of e)t.has(r)||t.set(r,n.push(r)-1);return i},i.range=function(t){return arguments.length?(e=Array.from(t),i):e.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return Ep(n,e).unknown(r)},Ap.apply(i,arguments),i}function kp(){var t,n,e=Ep().unknown(void 0),r=e.domain,i=e.range,o=0,a=1,u=!1,c=0,f=0,s=.5;function l(){var e=r().length,l=a<o,h=l?a:o,d=l?o:a;t=(d-h)/Math.max(1,e-c+2*f),u&&(t=Math.floor(t)),h+=(d-h-t*(e-c))*s,n=t*(1-c),u&&(h=Math.round(h),n=Math.round(n));var p=tt(e).map((function(n){return h+t*n}));return i(l?p.reverse():p)}return delete e.unknown,e.domain=function(t){return arguments.length?(r(t),l()):r()},e.range=function(t){return arguments.length?([o,a]=t,o=+o,a=+a,l()):[o,a]},e.rangeRound=function(t){return[o,a]=t,o=+o,a=+a,u=!0,l()},e.bandwidth=function(){return n},e.step=function(){return t},e.round=function(t){return arguments.length?(u=!!t,l()):u},e.padding=function(t){return arguments.length?(c=Math.min(1,f=+t),l()):c},e.paddingInner=function(t){return arguments.length?(c=Math.min(1,t),l()):c},e.paddingOuter=function(t){return arguments.length?(f=+t,l()):f},e.align=function(t){return arguments.length?(s=Math.max(0,Math.min(1,t)),l()):s},e.copy=function(){return kp(r(),[o,a]).round(u).paddingInner(c).paddingOuter(f).align(s)},Ap.apply(l(),arguments)}function Np(t){var n=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=function(){return Np(n())},t}function Cp(t){return+t}var Pp=[0,1];function zp(t){return t}function Dp(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:function(t){return function(){return t}}(isNaN(n)?NaN:.5)}function qp(t,n,e){var r=t[0],i=t[1],o=n[0],a=n[1];return i<r?(r=Dp(i,r),o=e(a,o)):(r=Dp(r,i),o=e(o,a)),function(t){return o(r(t))}}function Rp(t,n,e){var r=Math.min(t.length,n.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++a<r;)i[a]=Dp(t[a],t[a+1]),o[a]=e(n[a],n[a+1]);return function(n){var e=c(t,n,1,r)-1;return o[e](i[e](n))}}function Fp(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Op(){var t,n,e,r,i,o,a=Pp,u=Pp,c=Cr,f=zp;function s(){var t=Math.min(a.length,u.length);return f!==zp&&(f=function(t,n){var e;return t>n&&(e=t,t=n,n=e),function(e){return Math.max(t,Math.min(n,e))}}(a[0],a[t-1])),r=t>2?Rp:qp,i=o=null,l}function l(n){return null==n||isNaN(n=+n)?e:(i||(i=r(a.map(t),u,c)))(t(f(n)))}return l.invert=function(e){return f(n((o||(o=r(u,a.map(t),Tr)))(e)))},l.domain=function(t){return arguments.length?(a=Array.from(t,Cp),s()):a.slice()},l.range=function(t){return arguments.length?(u=Array.from(t),s()):u.slice()},l.rangeRound=function(t){return u=Array.from(t),c=Pr,s()},l.clamp=function(t){return arguments.length?(f=!!t||zp,s()):f!==zp},l.interpolate=function(t){return arguments.length?(c=t,s()):c},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,r){return t=e,n=r,s()}}function Up(){return Op()(zp,zp)}function Ip(n,e,r,i){var o,a=B(n,e,r);switch((i=mc(null==i?",f":i)).type){case"s":var u=Math.max(Math.abs(n),Math.abs(e));return null!=i.precision||isNaN(o=Pc(a,u))||(i.precision=o),t.formatPrefix(i,u);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=zc(a,Math.max(Math.abs(n),Math.abs(e))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=Cc(a))||(i.precision=o-2*("%"===i.type))}return t.format(i)}function Bp(t){var n=t.domain;return t.ticks=function(t){var e=n();return U(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return Ip(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i,o=n(),a=0,u=o.length-1,c=o[a],f=o[u],s=10;for(f<c&&(i=c,c=f,f=i,i=a,a=u,u=i);s-- >0;){if((i=I(c,f,e))===r)return o[a]=c,o[u]=f,n(o);if(i>0)c=Math.floor(c/i)*i,f=Math.ceil(f/i)*i;else{if(!(i<0))break;c=Math.ceil(c*i)/i,f=Math.floor(f*i)/i}r=i}return t},t}function Yp(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a<o&&(e=r,r=i,i=e,e=o,o=a,a=e),t[r]=n.floor(o),t[i]=n.ceil(a),t}function Lp(t){return Math.log(t)}function jp(t){return Math.exp(t)}function Hp(t){return-Math.log(-t)}function Xp(t){return-Math.exp(-t)}function Gp(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Vp(t){return(n,e)=>-t(-n,e)}function $p(n){const e=n(Lp,jp),r=e.domain;let i,o,a=10;function u(){return i=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),n=>Math.log(n)/t)}(a),o=function(t){return 10===t?Gp:t===Math.E?Math.exp:n=>Math.pow(t,n)}(a),r()[0]<0?(i=Vp(i),o=Vp(o),n(Hp,Xp)):n(Lp,jp),e}return e.base=function(t){return arguments.length?(a=+t,u()):a},e.domain=function(t){return arguments.length?(r(t),u()):r()},e.ticks=t=>{const n=r();let e=n[0],u=n[n.length-1];const c=u<e;c&&([e,u]=[u,e]);let f,s,l=i(e),h=i(u);const d=null==t?10:+t;let p=[];if(!(a%1)&&h-l<d){if(l=Math.floor(l),h=Math.ceil(h),e>0){for(;l<=h;++l)for(f=1;f<a;++f)if(s=l<0?f/o(-l):f*o(l),!(s<e)){if(s>u)break;p.push(s)}}else for(;l<=h;++l)for(f=a-1;f>=1;--f)if(s=l>0?f/o(-l):f*o(l),!(s<e)){if(s>u)break;p.push(s)}2*p.length<d&&(p=U(e,u,d))}else p=U(l,h,Math.min(h-l,d)).map(o);return c?p.reverse():p},e.tickFormat=(n,r)=>{if(null==n&&(n=10),null==r&&(r=10===a?"s":","),"function"!=typeof r&&(a%1||null!=(r=mc(r)).precision||(r.trim=!0),r=t.format(r)),n===1/0)return r;const u=Math.max(1,a*n/e.ticks().length);return t=>{let n=t/o(Math.round(i(t)));return n*a<a-.5&&(n*=a),n<=u?r(t):""}},e.nice=()=>r(Yp(r(),{floor:t=>o(Math.floor(i(t))),ceil:t=>o(Math.ceil(i(t)))})),e}function Wp(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function Zp(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function Kp(t){var n=1,e=t(Wp(n),Zp(n));return e.constant=function(e){return arguments.length?t(Wp(n=+e),Zp(n)):n},Bp(e)}function Qp(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function Jp(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function tg(t){return t<0?-t*t:t*t}function ng(t){var n=t(zp,zp),e=1;function r(){return 1===e?t(zp,zp):.5===e?t(Jp,tg):t(Qp(e),Qp(1/e))}return n.exponent=function(t){return arguments.length?(e=+t,r()):e},Bp(n)}function eg(){var t=ng(Op());return t.copy=function(){return Fp(t,eg()).exponent(t.exponent())},Ap.apply(t,arguments),t}function rg(t){return Math.sign(t)*t*t}function ig(t){return Math.sign(t)*Math.sqrt(Math.abs(t))}var og=new Date,ag=new Date;function ug(t,n,e,r){function i(n){return t(n=0===arguments.length?new Date:new Date(+n)),n}return i.floor=function(n){return t(n=new Date(+n)),n},i.ceil=function(e){return t(e=new Date(e-1)),n(e,1),t(e),e},i.round=function(t){var n=i(t),e=i.ceil(t);return t-n<e-t?n:e},i.offset=function(t,e){return n(t=new Date(+t),null==e?1:Math.floor(e)),t},i.range=function(e,r,o){var a,u=[];if(e=i.ceil(e),o=null==o?1:Math.floor(o),!(e<r&&o>0))return u;do{u.push(a=new Date(+e)),n(e,o),t(e)}while(a<e&&e<r);return u},i.filter=function(e){return ug((function(n){if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););}))},e&&(i.count=function(n,r){return og.setTime(+n),ag.setTime(+r),t(og),t(ag),Math.floor(e(og,ag))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}var cg=ug((function(){}),(function(t,n){t.setTime(+t+n)}),(function(t,n){return n-t}));cg.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?ug((function(n){n.setTime(Math.floor(n/t)*t)}),(function(n,e){n.setTime(+n+e*t)}),(function(n,e){return(e-n)/t})):cg:null};var fg=cg,sg=cg.range;const lg=1e3,hg=6e4,dg=36e5,pg=864e5,gg=6048e5,yg=2592e6,vg=31536e6;var _g=ug((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,n){t.setTime(+t+n*lg)}),(function(t,n){return(n-t)/lg}),(function(t){return t.getUTCSeconds()})),bg=_g,mg=_g.range,xg=ug((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*lg)}),(function(t,n){t.setTime(+t+n*hg)}),(function(t,n){return(n-t)/hg}),(function(t){return t.getMinutes()})),wg=xg,Mg=xg.range,Ag=ug((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*lg-t.getMinutes()*hg)}),(function(t,n){t.setTime(+t+n*dg)}),(function(t,n){return(n-t)/dg}),(function(t){return t.getHours()})),Tg=Ag,Sg=Ag.range,Eg=ug((t=>t.setHours(0,0,0,0)),((t,n)=>t.setDate(t.getDate()+n)),((t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*hg)/pg),(t=>t.getDate()-1)),kg=Eg,Ng=Eg.range;function Cg(t){return ug((function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)}),(function(t,n){t.setDate(t.getDate()+7*n)}),(function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*hg)/gg}))}var Pg=Cg(0),zg=Cg(1),Dg=Cg(2),qg=Cg(3),Rg=Cg(4),Fg=Cg(5),Og=Cg(6),Ug=Pg.range,Ig=zg.range,Bg=Dg.range,Yg=qg.range,Lg=Rg.range,jg=Fg.range,Hg=Og.range,Xg=ug((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,n){t.setMonth(t.getMonth()+n)}),(function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),Gg=Xg,Vg=Xg.range,$g=ug((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,n){t.setFullYear(t.getFullYear()+n)}),(function(t,n){return n.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));$g.every=function(t){return isFinite(t=Math.floor(t))&&t>0?ug((function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)}),(function(n,e){n.setFullYear(n.getFullYear()+e*t)})):null};var Wg=$g,Zg=$g.range,Kg=ug((function(t){t.setUTCSeconds(0,0)}),(function(t,n){t.setTime(+t+n*hg)}),(function(t,n){return(n-t)/hg}),(function(t){return t.getUTCMinutes()})),Qg=Kg,Jg=Kg.range,ty=ug((function(t){t.setUTCMinutes(0,0,0)}),(function(t,n){t.setTime(+t+n*dg)}),(function(t,n){return(n-t)/dg}),(function(t){return t.getUTCHours()})),ny=ty,ey=ty.range,ry=ug((function(t){t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCDate(t.getUTCDate()+n)}),(function(t,n){return(n-t)/pg}),(function(t){return t.getUTCDate()-1})),iy=ry,oy=ry.range;function ay(t){return ug((function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCDate(t.getUTCDate()+7*n)}),(function(t,n){return(n-t)/gg}))}var uy=ay(0),cy=ay(1),fy=ay(2),sy=ay(3),ly=ay(4),hy=ay(5),dy=ay(6),py=uy.range,gy=cy.range,yy=fy.range,vy=sy.range,_y=ly.range,by=hy.range,my=dy.range,xy=ug((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCMonth(t.getUTCMonth()+n)}),(function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})),wy=xy,My=xy.range,Ay=ug((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)}),(function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));Ay.every=function(t){return isFinite(t=Math.floor(t))&&t>0?ug((function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)}),(function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)})):null};var Ty=Ay,Sy=Ay.range;function Ey(t,n,r,i,o,a){const u=[[bg,1,lg],[bg,5,5e3],[bg,15,15e3],[bg,30,3e4],[a,1,hg],[a,5,3e5],[a,15,9e5],[a,30,18e5],[o,1,dg],[o,3,108e5],[o,6,216e5],[o,12,432e5],[i,1,pg],[i,2,1728e5],[r,1,gg],[n,1,yg],[n,3,7776e6],[t,1,vg]];function c(n,r,i){const o=Math.abs(r-n)/i,a=e((([,,t])=>t)).right(u,o);if(a===u.length)return t.every(B(n/vg,r/vg,i));if(0===a)return fg.every(Math.max(B(n,r,i),1));const[c,f]=u[o/u[a-1][2]<u[a][2]/o?a-1:a];return c.every(f)}return[function(t,n,e){const r=n<t;r&&([t,n]=[n,t]);const i=e&&"function"==typeof e.range?e:c(t,n,e),o=i?i.range(t,+n+1):[];return r?o.reverse():o},c]}const[ky,Ny]=Ey(Ty,wy,uy,iy,ny,Qg),[Cy,Py]=Ey(Wg,Gg,Pg,kg,Tg,wg);function zy(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Dy(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function qy(t,n,e){return{y:t,m:n,d:e,H:0,M:0,S:0,L:0}}function Ry(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,u=t.months,c=t.shortMonths,f=jy(i),s=Hy(i),l=jy(o),h=Hy(o),d=jy(a),p=Hy(a),g=jy(u),y=Hy(u),v=jy(c),_=Hy(c),b={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:lv,e:lv,f:yv,g:Ev,G:Nv,H:hv,I:dv,j:pv,L:gv,m:vv,M:_v,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Qv,s:Jv,S:bv,u:mv,U:xv,V:Mv,w:Av,W:Tv,x:null,X:null,y:Sv,Y:kv,Z:Cv,"%":Kv},m={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:Pv,e:Pv,f:Fv,g:Vv,G:Wv,H:zv,I:Dv,j:qv,L:Rv,m:Ov,M:Uv,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Qv,s:Jv,S:Iv,u:Bv,U:Yv,V:jv,w:Hv,W:Xv,x:null,X:null,y:Gv,Y:$v,Z:Zv,"%":Kv},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p.get(r[0].toLowerCase()),e+r[0].length):-1},A:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.w=h.get(r[0].toLowerCase()),e+r[0].length):-1},b:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=_.get(r[0].toLowerCase()),e+r[0].length):-1},B:function(t,n,e){var r=g.exec(n.slice(e));return r?(t.m=y.get(r[0].toLowerCase()),e+r[0].length):-1},c:function(t,e,r){return A(t,n,e,r)},d:nv,e:nv,f:uv,g:Ky,G:Zy,H:rv,I:rv,j:ev,L:av,m:tv,M:iv,p:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.p=s.get(r[0].toLowerCase()),e+r[0].length):-1},q:Jy,Q:fv,s:sv,S:ov,u:Gy,U:Vy,V:$y,w:Xy,W:Wy,x:function(t,n,r){return A(t,e,n,r)},X:function(t,n,e){return A(t,r,n,e)},y:Ky,Y:Zy,Z:Qy,"%":cv};function w(t,n){return function(e){var r,i,o,a=[],u=-1,c=0,f=t.length;for(e instanceof Date||(e=new Date(+e));++u<f;)37===t.charCodeAt(u)&&(a.push(t.slice(c,u)),null!=(i=Oy[r=t.charAt(++u)])?r=t.charAt(++u):i="e"===r?" ":"0",(o=n[r])&&(r=o(e,i)),a.push(r),c=u+1);return a.push(t.slice(c,u)),a.join("")}}function M(t,n){return function(e){var r,i,o=qy(1900,void 0,1);if(A(o,t,e+="",0)!=e.length)return null;if("Q"in o)return new Date(o.Q);if("s"in o)return new Date(1e3*o.s+("L"in o?o.L:0));if(n&&!("Z"in o)&&(o.Z=0),"p"in o&&(o.H=o.H%12+12*o.p),void 0===o.m&&(o.m="q"in o?o.q:0),"V"in o){if(o.V<1||o.V>53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=Dy(qy(o.y,0,1))).getUTCDay(),r=i>4||0===i?cy.ceil(r):cy(r),r=iy.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=zy(qy(o.y,0,1))).getDay(),r=i>4||0===i?zg.ceil(r):zg(r),r=kg.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?Dy(qy(o.y,0,1)).getUTCDay():zy(qy(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,Dy(o)):zy(o)}}function A(t,n,e,r){for(var i,o,a=0,u=n.length,c=e.length;a<u;){if(r>=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=x[i in Oy?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return b.x=w(e,b),b.X=w(r,b),b.c=w(n,b),m.x=w(e,m),m.X=w(r,m),m.c=w(n,m),{format:function(t){var n=w(t+="",b);return n.toString=function(){return t},n},parse:function(t){var n=M(t+="",!1);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",m);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t+="",!0);return n.toString=function(){return t},n}}}var Fy,Oy={"-":"",_:" ",0:"0"},Uy=/^\s*\d+/,Iy=/^%/,By=/[\\^$*+?|[\]().{}]/g;function Yy(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<e?new Array(e-o+1).join(n)+i:i)}function Ly(t){return t.replace(By,"\\$&")}function jy(t){return new RegExp("^(?:"+t.map(Ly).join("|")+")","i")}function Hy(t){return new Map(t.map(((t,n)=>[t.toLowerCase(),n])))}function Xy(t,n,e){var r=Uy.exec(n.slice(e,e+1));return r?(t.w=+r[0],e+r[0].length):-1}function Gy(t,n,e){var r=Uy.exec(n.slice(e,e+1));return r?(t.u=+r[0],e+r[0].length):-1}function Vy(t,n,e){var r=Uy.exec(n.slice(e,e+2));return r?(t.U=+r[0],e+r[0].length):-1}function $y(t,n,e){var r=Uy.exec(n.slice(e,e+2));return r?(t.V=+r[0],e+r[0].length):-1}function Wy(t,n,e){var r=Uy.exec(n.slice(e,e+2));return r?(t.W=+r[0],e+r[0].length):-1}function Zy(t,n,e){var r=Uy.exec(n.slice(e,e+4));return r?(t.y=+r[0],e+r[0].length):-1}function Ky(t,n,e){var r=Uy.exec(n.slice(e,e+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function Qy(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Jy(t,n,e){var r=Uy.exec(n.slice(e,e+1));return r?(t.q=3*r[0]-3,e+r[0].length):-1}function tv(t,n,e){var r=Uy.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function nv(t,n,e){var r=Uy.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function ev(t,n,e){var r=Uy.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function rv(t,n,e){var r=Uy.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function iv(t,n,e){var r=Uy.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function ov(t,n,e){var r=Uy.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function av(t,n,e){var r=Uy.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function uv(t,n,e){var r=Uy.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function cv(t,n,e){var r=Iy.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function fv(t,n,e){var r=Uy.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function sv(t,n,e){var r=Uy.exec(n.slice(e));return r?(t.s=+r[0],e+r[0].length):-1}function lv(t,n){return Yy(t.getDate(),n,2)}function hv(t,n){return Yy(t.getHours(),n,2)}function dv(t,n){return Yy(t.getHours()%12||12,n,2)}function pv(t,n){return Yy(1+kg.count(Wg(t),t),n,3)}function gv(t,n){return Yy(t.getMilliseconds(),n,3)}function yv(t,n){return gv(t,n)+"000"}function vv(t,n){return Yy(t.getMonth()+1,n,2)}function _v(t,n){return Yy(t.getMinutes(),n,2)}function bv(t,n){return Yy(t.getSeconds(),n,2)}function mv(t){var n=t.getDay();return 0===n?7:n}function xv(t,n){return Yy(Pg.count(Wg(t)-1,t),n,2)}function wv(t){var n=t.getDay();return n>=4||0===n?Rg(t):Rg.ceil(t)}function Mv(t,n){return t=wv(t),Yy(Rg.count(Wg(t),t)+(4===Wg(t).getDay()),n,2)}function Av(t){return t.getDay()}function Tv(t,n){return Yy(zg.count(Wg(t)-1,t),n,2)}function Sv(t,n){return Yy(t.getFullYear()%100,n,2)}function Ev(t,n){return Yy((t=wv(t)).getFullYear()%100,n,2)}function kv(t,n){return Yy(t.getFullYear()%1e4,n,4)}function Nv(t,n){var e=t.getDay();return Yy((t=e>=4||0===e?Rg(t):Rg.ceil(t)).getFullYear()%1e4,n,4)}function Cv(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+Yy(n/60|0,"0",2)+Yy(n%60,"0",2)}function Pv(t,n){return Yy(t.getUTCDate(),n,2)}function zv(t,n){return Yy(t.getUTCHours(),n,2)}function Dv(t,n){return Yy(t.getUTCHours()%12||12,n,2)}function qv(t,n){return Yy(1+iy.count(Ty(t),t),n,3)}function Rv(t,n){return Yy(t.getUTCMilliseconds(),n,3)}function Fv(t,n){return Rv(t,n)+"000"}function Ov(t,n){return Yy(t.getUTCMonth()+1,n,2)}function Uv(t,n){return Yy(t.getUTCMinutes(),n,2)}function Iv(t,n){return Yy(t.getUTCSeconds(),n,2)}function Bv(t){var n=t.getUTCDay();return 0===n?7:n}function Yv(t,n){return Yy(uy.count(Ty(t)-1,t),n,2)}function Lv(t){var n=t.getUTCDay();return n>=4||0===n?ly(t):ly.ceil(t)}function jv(t,n){return t=Lv(t),Yy(ly.count(Ty(t),t)+(4===Ty(t).getUTCDay()),n,2)}function Hv(t){return t.getUTCDay()}function Xv(t,n){return Yy(cy.count(Ty(t)-1,t),n,2)}function Gv(t,n){return Yy(t.getUTCFullYear()%100,n,2)}function Vv(t,n){return Yy((t=Lv(t)).getUTCFullYear()%100,n,2)}function $v(t,n){return Yy(t.getUTCFullYear()%1e4,n,4)}function Wv(t,n){var e=t.getUTCDay();return Yy((t=e>=4||0===e?ly(t):ly.ceil(t)).getUTCFullYear()%1e4,n,4)}function Zv(){return"+0000"}function Kv(){return"%"}function Qv(t){return+t}function Jv(t){return Math.floor(+t/1e3)}function t_(n){return Fy=Ry(n),t.timeFormat=Fy.format,t.timeParse=Fy.parse,t.utcFormat=Fy.utcFormat,t.utcParse=Fy.utcParse,Fy}t.timeFormat=void 0,t.timeParse=void 0,t.utcFormat=void 0,t.utcParse=void 0,t_({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var n_="%Y-%m-%dT%H:%M:%S.%LZ";var e_=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(n_),r_=e_;var i_=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse(n_),o_=i_;function a_(t){return new Date(t)}function u_(t){return t instanceof Date?+t:+new Date(+t)}function c_(t,n,e,r,i,o,a,u,c,f){var s=Up(),l=s.invert,h=s.domain,d=f(".%L"),p=f(":%S"),g=f("%I:%M"),y=f("%I %p"),v=f("%a %d"),_=f("%b %d"),b=f("%B"),m=f("%Y");function x(t){return(c(t)<t?d:u(t)<t?p:a(t)<t?g:o(t)<t?y:r(t)<t?i(t)<t?v:_:e(t)<t?b:m)(t)}return s.invert=function(t){return new Date(l(t))},s.domain=function(t){return arguments.length?h(Array.from(t,u_)):h().map(a_)},s.ticks=function(n){var e=h();return t(e[0],e[e.length-1],null==n?10:n)},s.tickFormat=function(t,n){return null==n?x:f(n)},s.nice=function(t){var e=h();return t&&"function"==typeof t.range||(t=n(e[0],e[e.length-1],null==t?10:t)),t?h(Yp(e,t)):s},s.copy=function(){return Fp(s,c_(t,n,e,r,i,o,a,u,c,f))},s}function f_(){var t,n,e,r,i,o=0,a=1,u=zp,c=!1;function f(n){return null==n||isNaN(n=+n)?i:u(0===e?.5:(n=(r(n)-t)*e,c?Math.max(0,Math.min(1,n)):n))}function s(t){return function(n){var e,r;return arguments.length?([e,r]=n,u=t(e,r),f):[u(0),u(1)]}}return f.domain=function(i){return arguments.length?([o,a]=i,t=r(o=+o),n=r(a=+a),e=t===n?0:1/(n-t),f):[o,a]},f.clamp=function(t){return arguments.length?(c=!!t,f):c},f.interpolator=function(t){return arguments.length?(u=t,f):u},f.range=s(Cr),f.rangeRound=s(Pr),f.unknown=function(t){return arguments.length?(i=t,f):i},function(i){return r=i,t=i(o),n=i(a),e=t===n?0:1/(n-t),f}}function s_(t,n){return n.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function l_(){var t=ng(f_());return t.copy=function(){return s_(t,l_()).exponent(t.exponent())},Tp.apply(t,arguments)}function h_(){var t,n,e,r,i,o,a,u=0,c=.5,f=1,s=1,l=zp,h=!1;function d(t){return isNaN(t=+t)?a:(t=.5+((t=+o(t))-n)*(s*t<s*n?r:i),l(h?Math.max(0,Math.min(1,t)):t))}function p(t){return function(n){var e,r,i;return arguments.length?([e,r,i]=n,l=Zr(t,[e,r,i]),d):[l(0),l(.5),l(1)]}}return d.domain=function(a){return arguments.length?([u,c,f]=a,t=o(u=+u),n=o(c=+c),e=o(f=+f),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),s=n<t?-1:1,d):[u,c,f]},d.clamp=function(t){return arguments.length?(h=!!t,d):h},d.interpolator=function(t){return arguments.length?(l=t,d):l},d.range=p(Cr),d.rangeRound=p(Pr),d.unknown=function(t){return arguments.length?(a=t,d):a},function(a){return o=a,t=a(u),n=a(c),e=a(f),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),s=n<t?-1:1,d}}function d_(){var t=ng(h_());return t.copy=function(){return s_(t,d_()).exponent(t.exponent())},Tp.apply(t,arguments)}function p_(t){for(var n=t.length/6|0,e=new Array(n),r=0;r<n;)e[r]="#"+t.slice(6*r,6*++r);return e}var g_=p_("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),y_=p_("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),v_=p_("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),__=p_("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),b_=p_("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),m_=p_("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),x_=p_("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),w_=p_("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),M_=p_("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),A_=p_("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"),T_=t=>br(t[t.length-1]),S_=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(p_),E_=T_(S_),k_=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(p_),N_=T_(k_),C_=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(p_),P_=T_(C_),z_=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(p_),D_=T_(z_),q_=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(p_),R_=T_(q_),F_=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(p_),O_=T_(F_),U_=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(p_),I_=T_(U_),B_=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(p_),Y_=T_(B_),L_=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(p_),j_=T_(L_),H_=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(p_),X_=T_(H_),G_=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(p_),V_=T_(G_),$_=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(p_),W_=T_($_),Z_=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(p_),K_=T_(Z_),Q_=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(p_),J_=T_(Q_),tb=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(p_),nb=T_(tb),eb=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(p_),rb=T_(eb),ib=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(p_),ob=T_(ib),ab=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(p_),ub=T_(ab),cb=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(p_),fb=T_(cb),sb=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(p_),lb=T_(sb),hb=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(p_),db=T_(hb),pb=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(p_),gb=T_(pb),yb=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(p_),vb=T_(yb),_b=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(p_),bb=T_(_b),mb=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(p_),xb=T_(mb),wb=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(p_),Mb=T_(wb),Ab=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(p_),Tb=T_(Ab);var Sb=Wr(ur(300,.5,0),ur(-240,.5,1)),Eb=Wr(ur(-100,.75,.35),ur(80,1.5,.8)),kb=Wr(ur(260,.75,.35),ur(80,1.5,.8)),Nb=ur();var Cb=Ae(),Pb=Math.PI/3,zb=2*Math.PI/3;function Db(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}}var qb=Db(p_("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),Rb=Db(p_("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),Fb=Db(p_("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),Ob=Db(p_("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function Ub(t){return function(){return t}}var Ib=Math.abs,Bb=Math.atan2,Yb=Math.cos,Lb=Math.max,jb=Math.min,Hb=Math.sin,Xb=Math.sqrt,Gb=1e-12,Vb=Math.PI,$b=Vb/2,Wb=2*Vb;function Zb(t){return t>1?0:t<-1?Vb:Math.acos(t)}function Kb(t){return t>=1?$b:t<=-1?-$b:Math.asin(t)}function Qb(t){return t.innerRadius}function Jb(t){return t.outerRadius}function tm(t){return t.startAngle}function nm(t){return t.endAngle}function em(t){return t&&t.padAngle}function rm(t,n,e,r,i,o,a,u){var c=e-t,f=r-n,s=a-i,l=u-o,h=l*c-s*f;if(!(h*h<Gb))return[t+(h=(s*(n-o)-l*(t-i))/h)*c,n+h*f]}function im(t,n,e,r,i,o,a){var u=t-e,c=n-r,f=(a?o:-o)/Xb(u*u+c*c),s=f*c,l=-f*u,h=t+s,d=n+l,p=e+s,g=r+l,y=(h+p)/2,v=(d+g)/2,_=p-h,b=g-d,m=_*_+b*b,x=i-o,w=h*g-p*d,M=(b<0?-1:1)*Xb(Lb(0,x*x*m-w*w)),A=(w*b-_*M)/m,T=(-w*_-b*M)/m,S=(w*b+_*M)/m,E=(-w*_+b*M)/m,k=A-y,N=T-v,C=S-y,P=E-v;return k*k+N*N>C*C+P*P&&(A=S,T=E),{cx:A,cy:T,x01:-s,y01:-l,x11:A*(i/x-1),y11:T*(i/x-1)}}var om=Array.prototype.slice;function am(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function um(t){this._context=t}function cm(t){return new um(t)}function fm(t){return t[0]}function sm(t){return t[1]}function lm(t,n){var e=Ub(!0),r=null,i=cm,o=null;function a(a){var u,c,f,s=(a=am(a)).length,l=!1;for(null==r&&(o=i(f=ya())),u=0;u<=s;++u)!(u<s&&e(c=a[u],u,a))===l&&((l=!l)?o.lineStart():o.lineEnd()),l&&o.point(+t(c,u,a),+n(c,u,a));if(f)return o=null,f+""||null}return t="function"==typeof t?t:void 0===t?fm:Ub(t),n="function"==typeof n?n:void 0===n?sm:Ub(n),a.x=function(n){return arguments.length?(t="function"==typeof n?n:Ub(+n),a):t},a.y=function(t){return arguments.length?(n="function"==typeof t?t:Ub(+t),a):n},a.defined=function(t){return arguments.length?(e="function"==typeof t?t:Ub(!!t),a):e},a.curve=function(t){return arguments.length?(i=t,null!=r&&(o=i(r)),a):i},a.context=function(t){return arguments.length?(null==t?r=o=null:o=i(r=t),a):r},a}function hm(t,n,e){var r=null,i=Ub(!0),o=null,a=cm,u=null;function c(c){var f,s,l,h,d,p=(c=am(c)).length,g=!1,y=new Array(p),v=new Array(p);for(null==o&&(u=a(d=ya())),f=0;f<=p;++f){if(!(f<p&&i(h=c[f],f,c))===g)if(g=!g)s=f,u.areaStart(),u.lineStart();else{for(u.lineEnd(),u.lineStart(),l=f-1;l>=s;--l)u.point(y[l],v[l]);u.lineEnd(),u.areaEnd()}g&&(y[f]=+t(h,f,c),v[f]=+n(h,f,c),u.point(r?+r(h,f,c):y[f],e?+e(h,f,c):v[f]))}if(d)return u=null,d+""||null}function f(){return lm().defined(i).curve(a).context(o)}return t="function"==typeof t?t:void 0===t?fm:Ub(+t),n="function"==typeof n?n:Ub(void 0===n?0:+n),e="function"==typeof e?e:void 0===e?sm:Ub(+e),c.x=function(n){return arguments.length?(t="function"==typeof n?n:Ub(+n),r=null,c):t},c.x0=function(n){return arguments.length?(t="function"==typeof n?n:Ub(+n),c):t},c.x1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:Ub(+t),c):r},c.y=function(t){return arguments.length?(n="function"==typeof t?t:Ub(+t),e=null,c):n},c.y0=function(t){return arguments.length?(n="function"==typeof t?t:Ub(+t),c):n},c.y1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:Ub(+t),c):e},c.lineX0=c.lineY0=function(){return f().x(t).y(n)},c.lineY1=function(){return f().x(t).y(e)},c.lineX1=function(){return f().x(r).y(n)},c.defined=function(t){return arguments.length?(i="function"==typeof t?t:Ub(!!t),c):i},c.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),c):a},c.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),c):o},c}function dm(t,n){return n<t?-1:n>t?1:n>=t?0:NaN}function pm(t){return t}um.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var gm=vm(cm);function ym(t){this._curve=t}function vm(t){function n(n){return new ym(t(n))}return n._curve=t,n}function _m(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(vm(t)):n()._curve},t}function bm(){return _m(lm().curve(gm))}function mm(){var t=hm().curve(gm),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return _m(e())},delete t.lineX0,t.lineEndAngle=function(){return _m(r())},delete t.lineX1,t.lineInnerRadius=function(){return _m(i())},delete t.lineY0,t.lineOuterRadius=function(){return _m(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(vm(t)):n()._curve},t}function xm(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}function wm(t){return t.source}function Mm(t){return t.target}function Am(t){var n=wm,e=Mm,r=fm,i=sm,o=null;function a(){var a,u=om.call(arguments),c=n.apply(this,u),f=e.apply(this,u);if(o||(o=a=ya()),t(o,+r.apply(this,(u[0]=c,u)),+i.apply(this,u),+r.apply(this,(u[0]=f,u)),+i.apply(this,u)),a)return o=null,a+""||null}return a.source=function(t){return arguments.length?(n=t,a):n},a.target=function(t){return arguments.length?(e=t,a):e},a.x=function(t){return arguments.length?(r="function"==typeof t?t:Ub(+t),a):r},a.y=function(t){return arguments.length?(i="function"==typeof t?t:Ub(+t),a):i},a.context=function(t){return arguments.length?(o=null==t?null:t,a):o},a}function Tm(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n=(n+r)/2,e,n,i,r,i)}function Sm(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n,e=(e+i)/2,r,e,r,i)}function Em(t,n,e,r,i){var o=xm(n,e),a=xm(n,e=(e+i)/2),u=xm(r,e),c=xm(r,i);t.moveTo(o[0],o[1]),t.bezierCurveTo(a[0],a[1],u[0],u[1],c[0],c[1])}ym.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};var km={draw:function(t,n){var e=Math.sqrt(n/Vb);t.moveTo(e,0),t.arc(0,0,e,0,Wb)}},Nm={draw:function(t,n){var e=Math.sqrt(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}},Cm=Math.sqrt(1/3),Pm=2*Cm,zm={draw:function(t,n){var e=Math.sqrt(n/Pm),r=e*Cm;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},Dm=Math.sin(Vb/10)/Math.sin(7*Vb/10),qm=Math.sin(Wb/10)*Dm,Rm=-Math.cos(Wb/10)*Dm,Fm={draw:function(t,n){var e=Math.sqrt(.8908130915292852*n),r=qm*e,i=Rm*e;t.moveTo(0,-e),t.lineTo(r,i);for(var o=1;o<5;++o){var a=Wb*o/5,u=Math.cos(a),c=Math.sin(a);t.lineTo(c*e,-u*e),t.lineTo(u*r-c*i,c*r+u*i)}t.closePath()}},Om={draw:function(t,n){var e=Math.sqrt(n),r=-e/2;t.rect(r,r,e,e)}},Um=Math.sqrt(3),Im={draw:function(t,n){var e=-Math.sqrt(n/(3*Um));t.moveTo(0,2*e),t.lineTo(-Um*e,-e),t.lineTo(Um*e,-e),t.closePath()}},Bm=-.5,Ym=Math.sqrt(3)/2,Lm=1/Math.sqrt(12),jm=3*(Lm/2+1),Hm={draw:function(t,n){var e=Math.sqrt(n/jm),r=e/2,i=e*Lm,o=r,a=e*Lm+e,u=-o,c=a;t.moveTo(r,i),t.lineTo(o,a),t.lineTo(u,c),t.lineTo(Bm*r-Ym*i,Ym*r+Bm*i),t.lineTo(Bm*o-Ym*a,Ym*o+Bm*a),t.lineTo(Bm*u-Ym*c,Ym*u+Bm*c),t.lineTo(Bm*r+Ym*i,Bm*i-Ym*r),t.lineTo(Bm*o+Ym*a,Bm*a-Ym*o),t.lineTo(Bm*u+Ym*c,Bm*c-Ym*u),t.closePath()}},Xm=[km,Nm,zm,Om,Fm,Im,Hm];function Gm(){}function Vm(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function $m(t){this._context=t}function Wm(t){this._context=t}function Zm(t){this._context=t}$m.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Vm(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Vm(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Wm.prototype={areaStart:Gm,areaEnd:Gm,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:Vm(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Zm.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:Vm(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};class Km{constructor(t,n){this._context=t,this._x=n}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,n,t,n):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+n)/2,t,this._y0,t,n)}this._x0=t,this._y0=n}}function Qm(t,n){this._basis=new $m(t),this._beta=n}Qm.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],a=t[e]-i,u=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*n[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var Jm=function t(n){function e(t){return 1===n?new $m(t):new Qm(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function tx(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function nx(t,n){this._context=t,this._k=(1-n)/6}nx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:tx(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:tx(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var ex=function t(n){function e(t){return new nx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function rx(t,n){this._context=t,this._k=(1-n)/6}rx.prototype={areaStart:Gm,areaEnd:Gm,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:tx(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var ix=function t(n){function e(t){return new rx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function ox(t,n){this._context=t,this._k=(1-n)/6}ox.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:tx(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var ax=function t(n){function e(t){return new ox(t,n)}return e.tension=function(n){return t(+n)},e}(0);function ux(t,n,e){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>Gb){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>Gb){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*f+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*f+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function cx(t,n){this._context=t,this._alpha=n}cx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:ux(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var fx=function t(n){function e(t){return n?new cx(t,n):new nx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function sx(t,n){this._context=t,this._alpha=n}sx.prototype={areaStart:Gm,areaEnd:Gm,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:ux(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var lx=function t(n){function e(t){return n?new sx(t,n):new rx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function hx(t,n){this._context=t,this._alpha=n}hx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:ux(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var dx=function t(n){function e(t){return n?new hx(t,n):new ox(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function px(t){this._context=t}function gx(t){return t<0?-1:1}function yx(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(e-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(gx(o)+gx(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function vx(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function _x(t,n,e){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*n,o-u,a-u*e,o,a)}function bx(t){this._context=t}function mx(t){this._context=new xx(t)}function xx(t){this._context=t}function wx(t){this._context=t}function Mx(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],n=1;n<r-1;++n)i[n]=1,o[n]=4,a[n]=4*t[n]+2*t[n+1];for(i[r-1]=2,o[r-1]=7,a[r-1]=8*t[r-1]+t[r],n=1;n<r;++n)e=i[n]/o[n-1],o[n]-=e,a[n]-=e*a[n-1];for(i[r-1]=a[r-1]/o[r-1],n=r-2;n>=0;--n)i[n]=(a[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n<r-1;++n)o[n]=2*t[n+1]-i[n+1];return[i,o]}function Ax(t,n){this._context=t,this._t=n}function Tx(t,n){if((i=t.length)>1)for(var e,r,i,o=1,a=t[n[0]],u=a.length;o<i;++o)for(r=a,a=t[n[o]],e=0;e<u;++e)a[e][1]+=a[e][0]=isNaN(r[e][1])?r[e][0]:r[e][1]}function Sx(t){for(var n=t.length,e=new Array(n);--n>=0;)e[n]=n;return e}function Ex(t,n){return t[n]}function kx(t){const n=[];return n.key=t,n}function Nx(t){var n=t.map(Cx);return Sx(t).sort((function(t,e){return n[t]-n[e]}))}function Cx(t){for(var n,e=-1,r=0,i=t.length,o=-1/0;++e<i;)(n=+t[e][1])>o&&(o=n,r=e);return r}function Px(t){var n=t.map(zx);return Sx(t).sort((function(t,e){return n[t]-n[e]}))}function zx(t){for(var n,e=0,r=-1,i=t.length;++r<i;)(n=+t[r][1])&&(e+=n);return e}px.prototype={areaStart:Gm,areaEnd:Gm,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}},bx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:_x(this,this._t0,vx(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(n=+n,(t=+t)!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,_x(this,vx(this,e=yx(this,t,n)),e);break;default:_x(this,this._t0,e=yx(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(mx.prototype=Object.create(bx.prototype)).point=function(t,n){bx.prototype.point.call(this,n,t)},xx.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,r,i,o){this._context.bezierCurveTo(n,t,r,e,o,i)}},wx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),2===e)this._context.lineTo(t[1],n[1]);else for(var r=Mx(t),i=Mx(n),o=0,a=1;a<e;++o,++a)this._context.bezierCurveTo(r[0][o],i[0][o],r[1][o],i[1][o],t[a],n[a]);(this._line||0!==this._line&&1===e)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,n){this._x.push(+t),this._y.push(+n)}},Ax.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}};var Dx=t=>()=>t;function qx(t,{sourceEvent:n,target:e,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function Rx(t,n,e){this.k=t,this.x=n,this.y=e}Rx.prototype={constructor:Rx,scale:function(t){return 1===t?this:new Rx(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new Rx(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Fx=new Rx(1,0,0);function Ox(t){for(;!t.__zoom;)if(!(t=t.parentNode))return Fx;return t.__zoom}function Ux(t){t.stopImmediatePropagation()}function Ix(t){t.preventDefault(),t.stopImmediatePropagation()}function Bx(t){return!(t.ctrlKey&&"wheel"!==t.type||t.button)}function Yx(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function Lx(){return this.__zoom||Fx}function jx(t){return-t.deltaY*(1===t.deltaMode?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Hx(){return navigator.maxTouchPoints||"ontouchstart"in this}function Xx(t,n,e){var r=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],o=t.invertY(n[0][1])-e[0][1],a=t.invertY(n[1][1])-e[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}Ox.prototype=Rx.prototype,t.Adder=y,t.Delaunay=gu,t.FormatSpecifier=xc,t.InternMap=InternMap,t.InternSet=InternSet,t.Node=pd,t.Voronoi=fu,t.ZoomTransform=Rx,t.active=function(t,n){var e,r,i=t.__transition;if(i)for(r in n=null==n?null:n+"",i)if((e=i[r]).state>1&&e.name===n)return new Zi([[t]],To,n,+r);return null},t.arc=function(){var t=Qb,n=Jb,e=Ub(0),r=null,i=tm,o=nm,a=em,u=null;function c(){var c,f,s=+t.apply(this,arguments),l=+n.apply(this,arguments),h=i.apply(this,arguments)-$b,d=o.apply(this,arguments)-$b,p=Ib(d-h),g=d>h;if(u||(u=c=ya()),l<s&&(f=l,l=s,s=f),l>Gb)if(p>Wb-Gb)u.moveTo(l*Yb(h),l*Hb(h)),u.arc(0,0,l,h,d,!g),s>Gb&&(u.moveTo(s*Yb(d),s*Hb(d)),u.arc(0,0,s,d,h,g));else{var y,v,_=h,b=d,m=h,x=d,w=p,M=p,A=a.apply(this,arguments)/2,T=A>Gb&&(r?+r.apply(this,arguments):Xb(s*s+l*l)),S=jb(Ib(l-s)/2,+e.apply(this,arguments)),E=S,k=S;if(T>Gb){var N=Kb(T/s*Hb(A)),C=Kb(T/l*Hb(A));(w-=2*N)>Gb?(m+=N*=g?1:-1,x-=N):(w=0,m=x=(h+d)/2),(M-=2*C)>Gb?(_+=C*=g?1:-1,b-=C):(M=0,_=b=(h+d)/2)}var P=l*Yb(_),z=l*Hb(_),D=s*Yb(x),q=s*Hb(x);if(S>Gb){var R,F=l*Yb(b),O=l*Hb(b),U=s*Yb(m),I=s*Hb(m);if(p<Vb&&(R=rm(P,z,U,I,F,O,D,q))){var B=P-R[0],Y=z-R[1],L=F-R[0],j=O-R[1],H=1/Hb(Zb((B*L+Y*j)/(Xb(B*B+Y*Y)*Xb(L*L+j*j)))/2),X=Xb(R[0]*R[0]+R[1]*R[1]);E=jb(S,(s-X)/(H-1)),k=jb(S,(l-X)/(H+1))}}M>Gb?k>Gb?(y=im(U,I,P,z,l,k,g),v=im(F,O,D,q,l,k,g),u.moveTo(y.cx+y.x01,y.cy+y.y01),k<S?u.arc(y.cx,y.cy,k,Bb(y.y01,y.x01),Bb(v.y01,v.x01),!g):(u.arc(y.cx,y.cy,k,Bb(y.y01,y.x01),Bb(y.y11,y.x11),!g),u.arc(0,0,l,Bb(y.cy+y.y11,y.cx+y.x11),Bb(v.cy+v.y11,v.cx+v.x11),!g),u.arc(v.cx,v.cy,k,Bb(v.y11,v.x11),Bb(v.y01,v.x01),!g))):(u.moveTo(P,z),u.arc(0,0,l,_,b,!g)):u.moveTo(P,z),s>Gb&&w>Gb?E>Gb?(y=im(D,q,F,O,s,-E,g),v=im(P,z,U,I,s,-E,g),u.lineTo(y.cx+y.x01,y.cy+y.y01),E<S?u.arc(y.cx,y.cy,E,Bb(y.y01,y.x01),Bb(v.y01,v.x01),!g):(u.arc(y.cx,y.cy,E,Bb(y.y01,y.x01),Bb(y.y11,y.x11),!g),u.arc(0,0,s,Bb(y.cy+y.y11,y.cx+y.x11),Bb(v.cy+v.y11,v.cx+v.x11),g),u.arc(v.cx,v.cy,E,Bb(v.y11,v.x11),Bb(v.y01,v.x01),!g))):u.arc(0,0,s,x,m,g):u.lineTo(D,q)}else u.moveTo(0,0);if(u.closePath(),c)return u=null,c+""||null}return c.centroid=function(){var e=(+t.apply(this,arguments)+ +n.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-Vb/2;return[Yb(r)*e,Hb(r)*e]},c.innerRadius=function(n){return arguments.length?(t="function"==typeof n?n:Ub(+n),c):t},c.outerRadius=function(t){return arguments.length?(n="function"==typeof t?t:Ub(+t),c):n},c.cornerRadius=function(t){return arguments.length?(e="function"==typeof t?t:Ub(+t),c):e},c.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:Ub(+t),c):r},c.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:Ub(+t),c):i},c.endAngle=function(t){return arguments.length?(o="function"==typeof t?t:Ub(+t),c):o},c.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:Ub(+t),c):a},c.context=function(t){return arguments.length?(u=null==t?null:t,c):u},c},t.area=hm,t.areaRadial=mm,t.ascending=n,t.autoType=function(t){for(var n in t){var e,r,i=t[n].trim();if(i)if("true"===i)i=!0;else if("false"===i)i=!1;else if("NaN"===i)i=NaN;else if(isNaN(e=+i)){if(!(r=i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;Iu&&r[4]&&!r[7]&&(i=i.replace(/-/g,"/").replace(/T/," ")),i=new Date(i)}else i=e;else i=null;t[n]=i}return t},t.axisBottom=function(t){return yt(3,t)},t.axisLeft=function(t){return yt(4,t)},t.axisRight=function(t){return yt(2,t)},t.axisTop=function(t){return yt(1,t)},t.bin=j,t.bisect=c,t.bisectCenter=u,t.bisectLeft=a,t.bisectRight=o,t.bisector=e,t.blob=function(t,n){return fetch(t,n).then(Bu)},t.brush=function(){return Jo(Yo)},t.brushSelection=function(t){var n=t.__brush;return n?n.dim.output(n.selection):null},t.brushX=function(){return Jo(Io)},t.brushY=function(){return Jo(Bo)},t.buffer=function(t,n){return fetch(t,n).then(Yu)},t.chord=function(){return sa(!1,!1)},t.chordDirected=function(){return sa(!0,!1)},t.chordTranspose=function(){return sa(!1,!0)},t.cluster=function(){var t=od,n=1,e=1,r=!1;function i(i){var o,a=0;i.eachAfter((function(n){var e=n.children;e?(n.x=function(t){return t.reduce(ad,0)/t.length}(e),n.y=function(t){return 1+t.reduce(ud,0)}(e)):(n.x=o?a+=t(n,o):0,n.y=0,o=n)}));var u=function(t){for(var n;n=t.children;)t=n[0];return t}(i),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),f=u.x-t(u,c)/2,s=c.x+t(c,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-f)/(s-f)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.color=me,t.contourDensity=function(){var t=Ua,n=Ia,e=Ba,r=960,i=500,o=20,a=2,u=3*o,c=r+2*u>>a,f=i+2*u>>a,s=Na(20);function l(r){var i=new Float32Array(c*f),l=new Float32Array(c*f),d=Math.pow(2,-a);r.forEach((function(r,o,a){var s=(t(r,o,a)+u)*d,l=(n(r,o,a)+u)*d,h=+e(r,o,a);if(s>=0&&s<c&&l>=0&&l<f){var p=Math.floor(s),g=Math.floor(l),y=s-p-.5,v=l-g-.5;i[p+g*c]+=(1-y)*(1-v)*h,i[p+1+g*c]+=y*(1-v)*h,i[p+1+(g+1)*c]+=y*v*h,i[p+(g+1)*c]+=(1-y)*v*h}})),Fa({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),Oa({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),Fa({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),Oa({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),Fa({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),Oa({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a);var p=s(i);if(!Array.isArray(p)){var g=H(i);p=B(0,g,p),(p=tt(0,Math.floor(g/p)*p,p)).shift()}return Ra().thresholds(p).size([c,f])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*a),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(g)}function g(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function y(){return c=r+2*(u=3*o)>>a,f=i+2*u>>a,l}return l.x=function(n){return arguments.length?(t="function"==typeof n?n:Na(+n),l):t},l.y=function(t){return arguments.length?(n="function"==typeof t?t:Na(+t),l):n},l.weight=function(t){return arguments.length?(e="function"==typeof t?t:Na(+t),l):e},l.size=function(t){if(!arguments.length)return[r,i];var n=+t[0],e=+t[1];if(!(n>=0&&e>=0))throw new Error("invalid size");return r=n,i=e,y()},l.cellSize=function(t){if(!arguments.length)return 1<<a;if(!((t=+t)>=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),y()},l.thresholds=function(t){return arguments.length?(s="function"==typeof t?t:Array.isArray(t)?Na(Ea.call(t)):Na(t),l):s},l.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=Math.round((Math.sqrt(4*t*t+1)-1)/2),y()},l},t.contours=Ra,t.count=f,t.create=function(t){return Un(kt(t).call(document.documentElement))},t.creator=kt,t.cross=function(...t){const n="function"==typeof t[t.length-1]&&function(t){return n=>t(...n)}(t.pop()),e=(t=t.map(h)).map(s),r=t.length-1,i=new Array(r+1).fill(0),o=[];if(r<0||e.some(l))return o;for(;;){o.push(i.map(((n,e)=>t[e][n])));let a=r;for(;++i[a]===e[a];){if(0===a)return n?o.map(n):o;i[a--]=0}}},t.csv=Xu,t.csvFormat=Su,t.csvFormatBody=Eu,t.csvFormatRow=Nu,t.csvFormatRows=ku,t.csvFormatValue=Cu,t.csvParse=Au,t.csvParseRows=Tu,t.cubehelix=ur,t.cumsum=function(t,n){var e=0,r=0;return Float64Array.from(t,void 0===n?t=>e+=+t||0:i=>e+=+n(i,r++,t)||0)},t.curveBasis=function(t){return new $m(t)},t.curveBasisClosed=function(t){return new Wm(t)},t.curveBasisOpen=function(t){return new Zm(t)},t.curveBumpX=function(t){return new Km(t,!0)},t.curveBumpY=function(t){return new Km(t,!1)},t.curveBundle=Jm,t.curveCardinal=ex,t.curveCardinalClosed=ix,t.curveCardinalOpen=ax,t.curveCatmullRom=fx,t.curveCatmullRomClosed=lx,t.curveCatmullRomOpen=dx,t.curveLinear=cm,t.curveLinearClosed=function(t){return new px(t)},t.curveMonotoneX=function(t){return new bx(t)},t.curveMonotoneY=function(t){return new mx(t)},t.curveNatural=function(t){return new wx(t)},t.curveStep=function(t){return new Ax(t,.5)},t.curveStepAfter=function(t){return new Ax(t,1)},t.curveStepBefore=function(t){return new Ax(t,0)},t.descending=function(t,n){return null==t||null==n?NaN:n<t?-1:n>t?1:n>=t?0:NaN},t.deviation=p,t.difference=function(t,...n){t=new InternSet(t);for(const e of n)for(const n of e)t.delete(n);return t},t.disjoint=function(t,n){const e=n[Symbol.iterator](),r=new InternSet;for(const n of t){if(r.has(n))return!1;let t,i;for(;({value:t,done:i}=e.next())&&!i;){if(Object.is(n,t))return!1;r.add(t)}}return!0},t.dispatch=_t,t.drag=function(){var t,n,e,r,i=Qn,o=Jn,a=te,u=ne,c={},f=_t("start","drag","end"),s=0,l=0;function h(t){t.on("mousedown.drag",d).filter(u).on("touchstart.drag",y).on("touchmove.drag",v,Hn).on("touchend.drag touchcancel.drag",_).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(a,u){if(!r&&i.call(this,a,u)){var c=b(this,o.call(this,a,u),a,u,"mouse");c&&(Un(a.view).on("mousemove.drag",p,Xn).on("mouseup.drag",g,Xn),$n(a.view),Gn(a),e=!1,t=a.clientX,n=a.clientY,c("start",a))}}function p(r){if(Vn(r),!e){var i=r.clientX-t,o=r.clientY-n;e=i*i+o*o>l}c.mouse("drag",r)}function g(t){Un(t.view).on("mousemove.drag mouseup.drag",null),Wn(t.view,e),Vn(t),c.mouse("end",t)}function y(t,n){if(i.call(this,t,n)){var e,r,a=t.changedTouches,u=o.call(this,t,n),c=a.length;for(e=0;e<c;++e)(r=b(this,u,t,n,a[e].identifier,a[e]))&&(Gn(t),r("start",t,a[e]))}}function v(t){var n,e,r=t.changedTouches,i=r.length;for(n=0;n<i;++n)(e=c[r[n].identifier])&&(Vn(t),e("drag",t,r[n]))}function _(t){var n,e,i=t.changedTouches,o=i.length;for(r&&clearTimeout(r),r=setTimeout((function(){r=null}),500),n=0;n<o;++n)(e=c[i[n].identifier])&&(Gn(t),e("end",t,i[n]))}function b(t,n,e,r,i,o){var u,l,d,p=f.copy(),g=jn(o||e,n);if(null!=(d=a.call(t,new Kn("beforestart",{sourceEvent:e,target:h,identifier:i,active:s,x:g[0],y:g[1],dx:0,dy:0,dispatch:p}),r)))return u=d.x-g[0]||0,l=d.y-g[1]||0,function e(o,a,f){var y,v=g;switch(o){case"start":c[i]=e,y=s++;break;case"end":delete c[i],--s;case"drag":g=jn(f||a,n),y=s}p.call(o,t,new Kn(o,{sourceEvent:a,subject:d,target:h,identifier:i,active:y,x:g[0]+u,y:g[1]+l,dx:g[0]-v[0],dy:g[1]-v[1],dispatch:p}),r)}}return h.filter=function(t){return arguments.length?(i="function"==typeof t?t:Zn(!!t),h):i},h.container=function(t){return arguments.length?(o="function"==typeof t?t:Zn(t),h):o},h.subject=function(t){return arguments.length?(a="function"==typeof t?t:Zn(t),h):a},h.touchable=function(t){return arguments.length?(u="function"==typeof t?t:Zn(!!t),h):u},h.on=function(){var t=f.on.apply(f,arguments);return t===f?h:t},h.clickDistance=function(t){return arguments.length?(l=(t=+t)*t,h):Math.sqrt(l)},h},t.dragDisable=$n,t.dragEnable=Wn,t.dsv=function(t,n,e,r){3===arguments.length&&"function"==typeof e&&(r=e,e=void 0);var i=wu(t);return ju(n,e).then((function(t){return i.parse(t,r)}))},t.dsvFormat=wu,t.easeBack=_o,t.easeBackIn=yo,t.easeBackInOut=_o,t.easeBackOut=vo,t.easeBounce=po,t.easeBounceIn=function(t){return 1-po(1-t)},t.easeBounceInOut=function(t){return((t*=2)<=1?1-po(1-t):po(t-1)+1)/2},t.easeBounceOut=po,t.easeCircle=so,t.easeCircleIn=function(t){return 1-Math.sqrt(1-t*t)},t.easeCircleInOut=so,t.easeCircleOut=function(t){return Math.sqrt(1- --t*t)},t.easeCubic=no,t.easeCubicIn=function(t){return t*t*t},t.easeCubicInOut=no,t.easeCubicOut=function(t){return--t*t*t+1},t.easeElastic=xo,t.easeElasticIn=mo,t.easeElasticInOut=wo,t.easeElasticOut=xo,t.easeExp=fo,t.easeExpIn=function(t){return co(1-+t)},t.easeExpInOut=fo,t.easeExpOut=function(t){return 1-co(t)},t.easeLinear=t=>+t,t.easePoly=io,t.easePolyIn=eo,t.easePolyInOut=io,t.easePolyOut=ro,t.easeQuad=to,t.easeQuadIn=function(t){return t*t},t.easeQuadInOut=to,t.easeQuadOut=function(t){return t*(2-t)},t.easeSin=uo,t.easeSinIn=function(t){return 1==+t?1:1-Math.cos(t*ao)},t.easeSinInOut=uo,t.easeSinOut=function(t){return Math.sin(t*ao)},t.every=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(!n(r,++e,t))return!1;return!0},t.extent=g,t.fcumsum=function(t,n){const e=new y;let r=-1;return Float64Array.from(t,void 0===n?t=>e.add(+t||0):i=>e.add(+n(i,++r,t)||0))},t.filter=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");const e=[];let r=-1;for(const i of t)n(i,++r,t)&&e.push(i);return e},t.flatGroup=function(t,...n){return A(M(t,...n),n)},t.flatRollup=function(t,n,...e){return A(S(t,n,...e),e)},t.forceCenter=function(t,n){var e,r=1;function i(){var i,o,a=e.length,u=0,c=0;for(i=0;i<a;++i)u+=(o=e[i]).x,c+=o.y;for(u=(u/a-t)*r,c=(c/a-n)*r,i=0;i<a;++i)(o=e[i]).x-=u,o.y-=c}return null==t&&(t=0),null==n&&(n=0),i.initialize=function(t){e=t},i.x=function(n){return arguments.length?(t=+n,i):t},i.y=function(t){return arguments.length?(n=+t,i):n},i.strength=function(t){return arguments.length?(r=+t,i):r},i},t.forceCollide=function(t){var n,e,r,i=1,o=1;function a(){for(var t,a,c,f,s,l,h,d=n.length,p=0;p<o;++p)for(a=ec(n,cc,fc).visitAfter(u),t=0;t<d;++t)c=n[t],l=e[c.index],h=l*l,f=c.x+c.vx,s=c.y+c.vy,a.visit(g);function g(t,n,e,o,a){var u=t.data,d=t.r,p=l+d;if(!u)return n>f+p||o<f-p||e>s+p||a<s-p;if(u.index>c.index){var g=f-u.x-u.vx,y=s-u.y-u.vy,v=g*g+y*y;v<p*p&&(0===g&&(v+=(g=uc(r))*g),0===y&&(v+=(y=uc(r))*y),v=(p-(v=Math.sqrt(v)))/v*i,c.vx+=(g*=v)*(p=(d*=d)/(h+d)),c.vy+=(y*=v)*p,u.vx-=g*(p=1-p),u.vy-=y*p)}}}function u(t){if(t.data)return t.r=e[t.data.index];for(var n=t.r=0;n<4;++n)t[n]&&t[n].r>t.r&&(t.r=t[n].r)}function c(){if(n){var r,i,o=n.length;for(e=new Array(o),r=0;r<o;++r)i=n[r],e[i.index]=+t(i,r,n)}}return"function"!=typeof t&&(t=ac(null==t?1:+t)),a.initialize=function(t,e){n=t,r=e,c()},a.iterations=function(t){return arguments.length?(o=+t,a):o},a.strength=function(t){return arguments.length?(i=+t,a):i},a.radius=function(n){return arguments.length?(t="function"==typeof n?n:ac(+n),c(),a):t},a},t.forceLink=function(t){var n,e,r,i,o,a,u=sc,c=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},f=ac(30),s=1;function l(r){for(var i=0,u=t.length;i<s;++i)for(var c,f,l,h,d,p,g,y=0;y<u;++y)f=(c=t[y]).source,h=(l=c.target).x+l.vx-f.x-f.vx||uc(a),d=l.y+l.vy-f.y-f.vy||uc(a),h*=p=((p=Math.sqrt(h*h+d*d))-e[y])/p*r*n[y],d*=p,l.vx-=h*(g=o[y]),l.vy-=d*g,f.vx+=h*(g=1-g),f.vy+=d*g}function h(){if(r){var a,c,f=r.length,s=t.length,l=new Map(r.map(((t,n)=>[u(t,n,r),t])));for(a=0,i=new Array(f);a<s;++a)(c=t[a]).index=a,"object"!=typeof c.source&&(c.source=lc(l,c.source)),"object"!=typeof c.target&&(c.target=lc(l,c.target)),i[c.source.index]=(i[c.source.index]||0)+1,i[c.target.index]=(i[c.target.index]||0)+1;for(a=0,o=new Array(s);a<s;++a)c=t[a],o[a]=i[c.source.index]/(i[c.source.index]+i[c.target.index]);n=new Array(s),d(),e=new Array(s),p()}}function d(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+c(t[e],e,t)}function p(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+f(t[n],n,t)}return null==t&&(t=[]),l.initialize=function(t,n){r=t,a=n,h()},l.links=function(n){return arguments.length?(t=n,h(),l):t},l.id=function(t){return arguments.length?(u=t,l):u},l.iterations=function(t){return arguments.length?(s=+t,l):s},l.strength=function(t){return arguments.length?(c="function"==typeof t?t:ac(+t),d(),l):c},l.distance=function(t){return arguments.length?(f="function"==typeof t?t:ac(+t),p(),l):f},l},t.forceManyBody=function(){var t,n,e,r,i,o=ac(-30),a=1,u=1/0,c=.81;function f(e){var i,o=t.length,a=ec(t,dc,pc).visitAfter(l);for(r=e,i=0;i<o;++i)n=t[i],a.visit(h)}function s(){if(t){var n,e,r=t.length;for(i=new Array(r),n=0;n<r;++n)e=t[n],i[e.index]=+o(e,n,t)}}function l(t){var n,e,r,o,a,u=0,c=0;if(t.length){for(r=o=a=0;a<4;++a)(n=t[a])&&(e=Math.abs(n.value))&&(u+=n.value,c+=e,r+=e*n.x,o+=e*n.y);t.x=r/c,t.y=o/c}else{(n=t).x=n.data.x,n.y=n.data.y;do{u+=i[n.data.index]}while(n=n.next)}t.value=u}function h(t,o,f,s){if(!t.value)return!0;var l=t.x-n.x,h=t.y-n.y,d=s-o,p=l*l+h*h;if(d*d/c<p)return p<u&&(0===l&&(p+=(l=uc(e))*l),0===h&&(p+=(h=uc(e))*h),p<a&&(p=Math.sqrt(a*p)),n.vx+=l*t.value*r/p,n.vy+=h*t.value*r/p),!0;if(!(t.length||p>=u)){(t.data!==n||t.next)&&(0===l&&(p+=(l=uc(e))*l),0===h&&(p+=(h=uc(e))*h),p<a&&(p=Math.sqrt(a*p)));do{t.data!==n&&(d=i[t.data.index]*r/p,n.vx+=l*d,n.vy+=h*d)}while(t=t.next)}}return f.initialize=function(n,r){t=n,e=r,s()},f.strength=function(t){return arguments.length?(o="function"==typeof t?t:ac(+t),s(),f):o},f.distanceMin=function(t){return arguments.length?(a=t*t,f):Math.sqrt(a)},f.distanceMax=function(t){return arguments.length?(u=t*t,f):Math.sqrt(u)},f.theta=function(t){return arguments.length?(c=t*t,f):Math.sqrt(c)},f},t.forceRadial=function(t,n,e){var r,i,o,a=ac(.1);function u(t){for(var a=0,u=r.length;a<u;++a){var c=r[a],f=c.x-n||1e-6,s=c.y-e||1e-6,l=Math.sqrt(f*f+s*s),h=(o[a]-l)*i[a]*t/l;c.vx+=f*h,c.vy+=s*h}}function c(){if(r){var n,e=r.length;for(i=new Array(e),o=new Array(e),n=0;n<e;++n)o[n]=+t(r[n],n,r),i[n]=isNaN(o[n])?0:+a(r[n],n,r)}}return"function"!=typeof t&&(t=ac(+t)),null==n&&(n=0),null==e&&(e=0),u.initialize=function(t){r=t,c()},u.strength=function(t){return arguments.length?(a="function"==typeof t?t:ac(+t),c(),u):a},u.radius=function(n){return arguments.length?(t="function"==typeof n?n:ac(+n),c(),u):t},u.x=function(t){return arguments.length?(n=+t,u):n},u.y=function(t){return arguments.length?(e=+t,u):e},u},t.forceSimulation=function(t){var n,e=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,u=new Map,c=si(l),f=_t("tick","end"),s=function(){let t=1;return()=>(t=(1664525*t+1013904223)%hc)/hc}();function l(){h(),f.call("tick",n),e<r&&(c.stop(),f.call("end",n))}function h(r){var c,f,s=t.length;void 0===r&&(r=1);for(var l=0;l<r;++l)for(e+=(o-e)*i,u.forEach((function(t){t(e)})),c=0;c<s;++c)null==(f=t[c]).fx?f.x+=f.vx*=a:(f.x=f.fx,f.vx=0),null==f.fy?f.y+=f.vy*=a:(f.y=f.fy,f.vy=0);return n}function d(){for(var n,e=0,r=t.length;e<r;++e){if((n=t[e]).index=e,null!=n.fx&&(n.x=n.fx),null!=n.fy&&(n.y=n.fy),isNaN(n.x)||isNaN(n.y)){var i=10*Math.sqrt(.5+e),o=e*gc;n.x=i*Math.cos(o),n.y=i*Math.sin(o)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function p(n){return n.initialize&&n.initialize(t,s),n}return null==t&&(t=[]),d(),n={tick:h,restart:function(){return c.restart(l),n},stop:function(){return c.stop(),n},nodes:function(e){return arguments.length?(t=e,d(),u.forEach(p),n):t},alpha:function(t){return arguments.length?(e=+t,n):e},alphaMin:function(t){return arguments.length?(r=+t,n):r},alphaDecay:function(t){return arguments.length?(i=+t,n):+i},alphaTarget:function(t){return arguments.length?(o=+t,n):o},velocityDecay:function(t){return arguments.length?(a=1-t,n):1-a},randomSource:function(t){return arguments.length?(s=t,u.forEach(p),n):s},force:function(t,e){return arguments.length>1?(null==e?u.delete(t):u.set(t,p(e)),n):u.get(t)},find:function(n,e,r){var i,o,a,u,c,f=0,s=t.length;for(null==r?r=1/0:r*=r,f=0;f<s;++f)(a=(i=n-(u=t[f]).x)*i+(o=e-u.y)*o)<r&&(c=u,r=a);return c},on:function(t,e){return arguments.length>1?(f.on(t,e),n):f.on(t)}}},t.forceX=function(t){var n,e,r,i=ac(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vx+=(r[o]-i.x)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return"function"!=typeof t&&(t=ac(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:ac(+t),a(),o):i},o.x=function(n){return arguments.length?(t="function"==typeof n?n:ac(+n),a(),o):t},o},t.forceY=function(t){var n,e,r,i=ac(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vy+=(r[o]-i.y)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return"function"!=typeof t&&(t=ac(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:ac(+t),a(),o):i},o.y=function(n){return arguments.length?(t="function"==typeof n?n:ac(+n),a(),o):t},o},t.formatDefaultLocale=Nc,t.formatLocale=kc,t.formatSpecifier=mc,t.fsum=function(t,n){const e=new y;if(void 0===n)for(let n of t)(n=+n)&&e.add(n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&e.add(i)}return+e},t.geoAlbers=Oh,t.geoAlbersUsa=function(){var t,n,e,r,i,o,a=Oh(),u=Fh().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=Fh().rotate([157,0]).center([-3,19.9]).parallels([8,18]),f={point:function(t,n){o=[t,n]}};function s(t){var n=t[0],a=t[1];return o=null,e.point(n,a),o||(r.point(n,a),o)||(i.point(n,a),o)}function l(){return t=n=null,s}return s.invert=function(t){var n=a.scale(),e=a.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:a).invert(t)},s.stream=function(e){return t&&n===e?t:(r=[a.stream(n=e),u.stream(e),c.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++e<i;)r[e].point(t,n)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},s.precision=function(t){return arguments.length?(a.precision(t),u.precision(t),c.precision(t),l()):a.precision()},s.scale=function(t){return arguments.length?(a.scale(t),u.scale(.35*t),c.scale(t),s.translate(a.translate())):a.scale()},s.translate=function(t){if(!arguments.length)return a.translate();var n=a.scale(),o=+t[0],s=+t[1];return e=a.translate(t).clipExtent([[o-.455*n,s-.238*n],[o+.455*n,s+.238*n]]).stream(f),r=u.translate([o-.307*n,s+.201*n]).clipExtent([[o-.425*n+Dc,s+.12*n+Dc],[o-.214*n-Dc,s+.234*n-Dc]]).stream(f),i=c.translate([o-.205*n,s+.212*n]).clipExtent([[o-.214*n+Dc,s+.166*n+Dc],[o-.115*n-Dc,s+.234*n-Dc]]).stream(f),l()},s.fitExtent=function(t,n){return Ah(s,t,n)},s.fitSize=function(t,n){return Th(s,t,n)},s.fitWidth=function(t,n){return Sh(s,t,n)},s.fitHeight=function(t,n){return Eh(s,t,n)},s.scale(1070)},t.geoArea=function(t){return kf=new y,sf(t,Nf),2*kf},t.geoAzimuthalEqualArea=function(){return zh(Bh).scale(124.75).clipAngle(179.999)},t.geoAzimuthalEqualAreaRaw=Bh,t.geoAzimuthalEquidistant=function(){return zh(Yh).scale(79.4188).clipAngle(179.999)},t.geoAzimuthalEquidistantRaw=Yh,t.geoBounds=function(t){var n,e,r,i,o,a,u;if(bf=_f=-(yf=vf=1/0),Tf=[],sf(t,rs),e=Tf.length){for(Tf.sort(hs),n=1,o=[r=Tf[0]];n<e;++n)ds(r,(i=Tf[n])[0])||ds(r,i[1])?(ls(r[0],i[1])>ls(r[0],r[1])&&(r[1]=i[1]),ls(i[0],r[1])>ls(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(u=ls(r[1],i[0]))>a&&(a=u,yf=i[0],_f=r[1])}return Tf=Sf=null,yf===1/0||vf===1/0?[[NaN,NaN],[NaN,NaN]]:[[yf,vf],[_f,bf]]},t.geoCentroid=function(t){Yf=Lf=jf=Hf=Xf=Gf=Vf=$f=0,Wf=new y,Zf=new y,Kf=new y,sf(t,ps);var n=+Wf,e=+Zf,r=+Kf,i=Vc(n,e,r);return i<qc&&(n=Gf,e=Vf,r=$f,Lf<Dc&&(n=jf,e=Hf,r=Xf),(i=Vc(n,e,r))<qc)?[NaN,NaN]:[jc(e,n)*Ic,nf(r/i)*Ic]},t.geoCircle=function(){var t,n,e=Ts([0,0]),r=Ts(90),i=Ts(6),o={point:function(e,r){t.push(e=n(e,r)),e[0]*=Ic,e[1]*=Ic}};function a(){var a=e.apply(this,arguments),u=r.apply(this,arguments)*Bc,c=i.apply(this,arguments)*Bc;return t=[],n=ks(-a[0]*Bc,-a[1]*Bc,0).invert,Ds(o,u,c,1),a={type:"Polygon",coordinates:[t]},t=n=null,a}return a.center=function(t){return arguments.length?(e="function"==typeof t?t:Ts([+t[0],+t[1]]),a):e},a.radius=function(t){return arguments.length?(r="function"==typeof t?t:Ts(+t),a):r},a.precision=function(t){return arguments.length?(i="function"==typeof t?t:Ts(+t),a):i},a},t.geoClipAntimeridian=Xs,t.geoClipCircle=Gs,t.geoClipExtent=function(){var t,n,e,r=0,i=0,o=960,a=500;return e={stream:function(e){return t&&n===e?t:t=Js(r,i,o,a)(n=e)},extent:function(u){return arguments.length?(r=+u[0][0],i=+u[0][1],o=+u[1][0],a=+u[1][1],t=n=null,e):[[r,i],[o,a]]}}},t.geoClipRectangle=Js,t.geoConicConformal=function(){return qh(Xh).scale(109.5).parallels([30,30])},t.geoConicConformalRaw=Xh,t.geoConicEqualArea=Fh,t.geoConicEqualAreaRaw=Rh,t.geoConicEquidistant=function(){return qh(Vh).scale(131.154).center([0,13.9389])},t.geoConicEquidistantRaw=Vh,t.geoContains=function(t,n){return(t&&cl.hasOwnProperty(t.type)?cl[t.type]:sl)(t,n)},t.geoDistance=ul,t.geoEqualEarth=function(){return zh(Jh).scale(177.158)},t.geoEqualEarthRaw=Jh,t.geoEquirectangular=function(){return zh(Gh).scale(152.63)},t.geoEquirectangularRaw=Gh,t.geoGnomonic=function(){return zh(td).scale(144.049).clipAngle(60)},t.geoGnomonicRaw=td,t.geoGraticule=_l,t.geoGraticule10=function(){return _l()()},t.geoIdentity=function(){var t,n,e,r,i,o,a,u=1,c=0,f=0,s=1,l=1,h=0,d=null,p=1,g=1,y=xh({point:function(t,n){var e=b([t,n]);this.stream.point(e[0],e[1])}}),v=Ml;function _(){return p=u*s,g=u*l,o=a=null,b}function b(e){var r=e[0]*p,i=e[1]*g;if(h){var o=i*t-r*n;r=r*t+i*n,i=o}return[r+c,i+f]}return b.invert=function(e){var r=e[0]-c,i=e[1]-f;if(h){var o=i*t+r*n;r=r*t-i*n,i=o}return[r/p,i/g]},b.stream=function(t){return o&&a===t?o:o=y(v(a=t))},b.postclip=function(t){return arguments.length?(v=t,d=e=r=i=null,_()):v},b.clipExtent=function(t){return arguments.length?(v=null==t?(d=e=r=i=null,Ml):Js(d=+t[0][0],e=+t[0][1],r=+t[1][0],i=+t[1][1]),_()):null==d?null:[[d,e],[r,i]]},b.scale=function(t){return arguments.length?(u=+t,_()):u},b.translate=function(t){return arguments.length?(c=+t[0],f=+t[1],_()):[c,f]},b.angle=function(e){return arguments.length?(n=Zc(h=e%360*Bc),t=Hc(h),_()):h*Ic},b.reflectX=function(t){return arguments.length?(s=t?-1:1,_()):s<0},b.reflectY=function(t){return arguments.length?(l=t?-1:1,_()):l<0},b.fitExtent=function(t,n){return Ah(b,t,n)},b.fitSize=function(t,n){return Th(b,t,n)},b.fitWidth=function(t,n){return Sh(b,t,n)},b.fitHeight=function(t,n){return Eh(b,t,n)},b},t.geoInterpolate=function(t,n){var e=t[0]*Bc,r=t[1]*Bc,i=n[0]*Bc,o=n[1]*Bc,a=Hc(r),u=Zc(r),c=Hc(o),f=Zc(o),s=a*Hc(e),l=a*Zc(e),h=c*Hc(i),d=c*Zc(i),p=2*nf(Qc(ef(o-r)+a*c*ef(i-e))),g=Zc(p),y=p?function(t){var n=Zc(t*=p)/g,e=Zc(p-t)/g,r=e*s+n*h,i=e*l+n*d,o=e*u+n*f;return[jc(i,r)*Ic,jc(o,Qc(r*r+i*i))*Ic]}:function(){return[e*Ic,r*Ic]};return y.distance=p,y},t.geoLength=il,t.geoMercator=function(){return jh(Lh).scale(961/Uc)},t.geoMercatorRaw=Lh,t.geoNaturalEarth1=function(){return zh(nd).scale(175.295)},t.geoNaturalEarth1Raw=nd,t.geoOrthographic=function(){return zh(ed).scale(249.5).clipAngle(90.000001)},t.geoOrthographicRaw=ed,t.geoPath=function(t,n){var e,r,i=4.5;function o(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),sf(t,e(r))),r.result()}return o.area=function(t){return sf(t,e(Pl)),Pl.result()},o.measure=function(t){return sf(t,e(_h)),_h.result()},o.bounds=function(t){return sf(t,e(Yl)),Yl.result()},o.centroid=function(t){return sf(t,e(uh)),uh.result()},o.projection=function(n){return arguments.length?(e=null==n?(t=null,Ml):(t=n).stream,o):t},o.context=function(t){return arguments.length?(r=null==t?(n=null,new bh):new ch(n=t),"function"!=typeof i&&r.pointRadius(i),o):n},o.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),o):i},o.projection(t).context(n)},t.geoProjection=zh,t.geoProjectionMutator=Dh,t.geoRotation=zs,t.geoStereographic=function(){return zh(rd).scale(250).clipAngle(142)},t.geoStereographicRaw=rd,t.geoStream=sf,t.geoTransform=function(t){return{stream:xh(t)}},t.geoTransverseMercator=function(){var t=jh(id),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):[(t=n())[1],-t[0]]},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=id,t.gray=function(t,n){return new je(t,0,0,null==n?1:n)},t.greatest=function(t,e=n){let r,i=!1;if(1===e.length){let o;for(const a of t){const t=e(a);(i?n(t,o)>0:0===n(t,t))&&(r=a,o=t,i=!0)}}else for(const n of t)(i?e(n,r)>0:0===e(n,n))&&(r=n,i=!0);return r},t.greatestIndex=function(t,e=n){if(1===e.length)return Z(t,e);let r,i=-1,o=-1;for(const n of t)++o,(i<0?0===e(n,n):e(n,r)>0)&&(r=n,i=o);return i},t.group=w,t.groupSort=function(t,e,r){return(2!==e.length?C(T(t,e,r),(([t,e],[r,i])=>n(e,i)||n(t,r))):C(w(t,r),(([t,r],[i,o])=>e(r,o)||n(t,i)))).map((([t])=>t))},t.groups=M,t.hcl=We,t.hierarchy=fd,t.histogram=j,t.hsl=Pe,t.html=Zu,t.image=function(t,n){return new Promise((function(e,r){var i=new Image;for(var o in n)i[o]=n[o];i.onerror=r,i.onload=function(){e(i)},i.src=t}))},t.index=function(t,...n){return k(t,x,E,n)},t.indexes=function(t,...n){return k(t,Array.from,E,n)},t.interpolate=Cr,t.interpolateArray=function(t,n){return(wr(n)?xr:Mr)(t,n)},t.interpolateBasis=sr,t.interpolateBasisClosed=lr,t.interpolateBlues=gb,t.interpolateBrBG=E_,t.interpolateBuGn=X_,t.interpolateBuPu=V_,t.interpolateCividis=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-t*(35.34-t*(2381.73-t*(6402.7-t*(7024.72-2710.57*t)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+t*(170.73+t*(52.82-t*(131.46-t*(176.58-67.37*t)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+t*(442.36-t*(2482.43-t*(6167.24-t*(6614.94-2475.67*t)))))))+")"},t.interpolateCool=kb,t.interpolateCubehelix=$r,t.interpolateCubehelixDefault=Sb,t.interpolateCubehelixLong=Wr,t.interpolateDate=Ar,t.interpolateDiscrete=function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},t.interpolateGnBu=W_,t.interpolateGreens=vb,t.interpolateGreys=bb,t.interpolateHcl=Xr,t.interpolateHclLong=Gr,t.interpolateHsl=Lr,t.interpolateHslLong=jr,t.interpolateHue=function(t,n){var e=pr(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},t.interpolateInferno=Fb,t.interpolateLab=function(t,n){var e=yr((t=Le(t)).l,(n=Le(n)).l),r=yr(t.a,n.a),i=yr(t.b,n.b),o=yr(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+""}},t.interpolateMagma=Rb,t.interpolateNumber=Tr,t.interpolateNumberArray=xr,t.interpolateObject=Sr,t.interpolateOrRd=K_,t.interpolateOranges=Tb,t.interpolatePRGn=N_,t.interpolatePiYG=P_,t.interpolatePlasma=Ob,t.interpolatePuBu=nb,t.interpolatePuBuGn=J_,t.interpolatePuOr=D_,t.interpolatePuRd=rb,t.interpolatePurples=xb,t.interpolateRainbow=function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return Nb.h=360*t-100,Nb.s=1.5-1.5*n,Nb.l=.8-.9*n,Nb+""},t.interpolateRdBu=R_,t.interpolateRdGy=O_,t.interpolateRdPu=ob,t.interpolateRdYlBu=I_,t.interpolateRdYlGn=Y_,t.interpolateReds=Mb,t.interpolateRgb=vr,t.interpolateRgbBasis=br,t.interpolateRgbBasisClosed=mr,t.interpolateRound=Pr,t.interpolateSinebow=function(t){var n;return t=(.5-t)*Math.PI,Cb.r=255*(n=Math.sin(t))*n,Cb.g=255*(n=Math.sin(t+Pb))*n,Cb.b=255*(n=Math.sin(t+zb))*n,Cb+""},t.interpolateSpectral=j_,t.interpolateString=Nr,t.interpolateTransformCss=Or,t.interpolateTransformSvg=Ur,t.interpolateTurbo=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"},t.interpolateViridis=qb,t.interpolateWarm=Eb,t.interpolateYlGn=fb,t.interpolateYlGnBu=ub,t.interpolateYlOrBr=lb,t.interpolateYlOrRd=db,t.interpolateZoom=Br,t.interrupt=wi,t.intersection=function(t,...n){t=new InternSet(t),n=n.map(at);t:for(const e of t)for(const r of n)if(!r.has(e)){t.delete(e);continue t}return t},t.interval=function(t,n,e){var r=new fi,i=n;return null==n?(r.restart(t,n,e),r):(r._restart=r.restart,r.restart=function(t,n,e){n=+n,e=null==e?ui():+e,r._restart((function o(a){a+=i,r._restart(o,i+=n,e),t(a)}),n,e)},r.restart(t,n,e),r)},t.isoFormat=r_,t.isoParse=o_,t.json=function(t,n){return fetch(t,n).then(Vu)},t.lab=Le,t.lch=function(t,n,e,r){return 1===arguments.length?$e(t):new Ze(e,n,t,null==r?1:r)},t.least=function(t,e=n){let r,i=!1;if(1===e.length){let o;for(const a of t){const t=e(a);(i?n(t,o)<0:0===n(t,t))&&(r=a,o=t,i=!0)}}else for(const n of t)(i?e(n,r)<0:0===e(n,n))&&(r=n,i=!0);return r},t.leastIndex=nt,t.line=lm,t.lineRadial=bm,t.linkHorizontal=function(){return Am(Tm)},t.linkRadial=function(){var t=Am(Em);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.linkVertical=function(){return Am(Sm)},t.local=Bn,t.map=function(t,n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");if("function"!=typeof n)throw new TypeError("mapper is not a function");return Array.from(t,((e,r)=>n(e,r,t)))},t.matcher=qt,t.max=H,t.maxIndex=Z,t.mean=function(t,n){let e=0,r=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(++e,r+=n);else{let i=-1;for(let o of t)null!=(o=n(o,++i,t))&&(o=+o)>=o&&(++e,r+=o)}if(e)return r/e},t.median=function(t,n){return $(t,.5,n)},t.merge=K,t.min=X,t.minIndex=Q,t.mode=function(t,n){const e=new InternMap;if(void 0===n)for(let n of t)null!=n&&n>=n&&e.set(n,(e.get(n)||0)+1);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&i>=i&&e.set(i,(e.get(i)||0)+1)}let r,i=0;for(const[t,n]of e)n>i&&(i=n,r=t);return r},t.namespace=Tt,t.namespaces=At,t.nice=Y,t.now=ui,t.pack=function(){var t=null,n=1,e=1,r=Cd;function i(i){return i.x=n/2,i.y=e/2,t?i.eachBefore(Dd(t)).eachAfter(qd(r,.5)).eachBefore(Rd(1)):i.eachBefore(Dd(zd)).eachAfter(qd(Cd,1)).eachAfter(qd(r,i.r/Math.min(n,e))).eachBefore(Rd(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=kd(n),i):t},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:Pd(+t),i):r},i},t.packEnclose=gd,t.packSiblings=function(t){return Ed(t),t},t.pairs=function(t,n=J){const e=[];let r,i=!1;for(const o of t)i&&e.push(n(r,o)),r=o,i=!0;return e},t.partition=function(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&Od(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,a=r.x1-e,u=r.y1-e;a<i&&(i=a=(i+a)/2),u<o&&(o=u=(o+u)/2),r.x0=i,r.y0=o,r.x1=a,r.y1=u}}(n,o)),r&&i.eachBefore(Fd),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(e){return arguments.length?(t=+e[0],n=+e[1],i):[t,n]},i.padding=function(t){return arguments.length?(e=+t,i):e},i},t.path=ya,t.permute=N,t.pie=function(){var t=pm,n=dm,e=null,r=Ub(0),i=Ub(Wb),o=Ub(0);function a(a){var u,c,f,s,l,h=(a=am(a)).length,d=0,p=new Array(h),g=new Array(h),y=+r.apply(this,arguments),v=Math.min(Wb,Math.max(-Wb,i.apply(this,arguments)-y)),_=Math.min(Math.abs(v)/h,o.apply(this,arguments)),b=_*(v<0?-1:1);for(u=0;u<h;++u)(l=g[p[u]=u]=+t(a[u],u,a))>0&&(d+=l);for(null!=n?p.sort((function(t,e){return n(g[t],g[e])})):null!=e&&p.sort((function(t,n){return e(a[t],a[n])})),u=0,f=d?(v-h*b)/d:0;u<h;++u,y=s)c=p[u],s=y+((l=g[c])>0?l*f:0)+b,g[c]={data:a[c],index:u,value:l,startAngle:y,endAngle:s,padAngle:_};return g}return a.value=function(n){return arguments.length?(t="function"==typeof n?n:Ub(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:Ub(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:Ub(+t),a):i},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:Ub(+t),a):o},a},t.piecewise=Zr,t.pointRadial=xm,t.pointer=jn,t.pointers=function(t,n){return t.target&&(t=Ln(t),void 0===n&&(n=t.currentTarget),t=t.touches||[t]),Array.from(t,(t=>jn(t,n)))},t.polygonArea=function(t){for(var n,e=-1,r=t.length,i=t[r-1],o=0;++e<r;)n=i,i=t[e],o+=n[1]*i[0]-n[0]*i[1];return o/2},t.polygonCentroid=function(t){for(var n,e,r=-1,i=t.length,o=0,a=0,u=t[i-1],c=0;++r<i;)n=u,u=t[r],c+=e=n[0]*u[1]-u[0]*n[1],o+=(n[0]+u[0])*e,a+=(n[1]+u[1])*e;return[o/(c*=3),a/c]},t.polygonContains=function(t,n){for(var e,r,i=t.length,o=t[i-1],a=n[0],u=n[1],c=o[0],f=o[1],s=!1,l=0;l<i;++l)e=(o=t[l])[0],(r=o[1])>u!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},t.polygonHull=function(t){if((e=t.length)<3)return null;var n,e,r=new Array(e),i=new Array(e);for(n=0;n<e;++n)r[n]=[+t[n][0],+t[n][1],n];for(r.sort(rp),n=0;n<e;++n)i[n]=[r[n][0],-r[n][1]];var o=ip(r),a=ip(i),u=a[0]===o[0],c=a[a.length-1]===o[o.length-1],f=[];for(n=o.length-1;n>=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;n<a.length-c;++n)f.push(t[r[a[n]][2]]);return f},t.polygonLength=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],a=o[0],u=o[1],c=0;++r<i;)n=a,e=u,n-=a=(o=t[r])[0],e-=u=o[1],c+=Math.hypot(n,e);return c},t.precisionFixed=Cc,t.precisionPrefix=Pc,t.precisionRound=zc,t.quadtree=ec,t.quantile=$,t.quantileSorted=W,t.quantize=function(t,n){for(var e=new Array(n),r=0;r<n;++r)e[r]=t(r/(n-1));return e},t.quickselect=G,t.radialArea=mm,t.radialLine=bm,t.randomBates=lp,t.randomBernoulli=pp,t.randomBeta=vp,t.randomBinomial=_p,t.randomCauchy=mp,t.randomExponential=hp,t.randomGamma=yp,t.randomGeometric=gp,t.randomInt=up,t.randomIrwinHall=sp,t.randomLcg=function(t=Math.random()){let n=0|(0<=t&&t<1?t/Mp:Math.abs(t));return()=>(n=1664525*n+1013904223|0,Mp*(n>>>0))},t.randomLogNormal=fp,t.randomLogistic=xp,t.randomNormal=cp,t.randomPareto=dp,t.randomPoisson=wp,t.randomUniform=ap,t.randomWeibull=bp,t.range=tt,t.rank=function(t,e=n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");let r=Array.from(t);const i=new Float64Array(r.length);2!==e.length&&(r=r.map(e),e=n);const o=(t,n)=>e(r[t],r[n]);let a,u;return Uint32Array.from(r,((t,n)=>n)).sort(e===n?(t,n)=>z(r[t],r[n]):P(o)).forEach(((t,n)=>{const e=o(t,void 0===a?t:a);e>=0?((void 0===a||e>0)&&(a=t,u=n),i[t]=u):i[t]=NaN})),i},t.reduce=function(t,n,e){if("function"!=typeof n)throw new TypeError("reducer is not a function");const r=t[Symbol.iterator]();let i,o,a=-1;if(arguments.length<3){if(({done:i,value:e}=r.next()),i)return;++a}for(;({done:i,value:o}=r.next()),!i;)e=n(e,o,++a,t);return e},t.reverse=function(t){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");return Array.from(t).reverse()},t.rgb=Ae,t.ribbon=function(){return Sa()},t.ribbonArrow=function(){return Sa(Ta)},t.rollup=T,t.rollups=S,t.scaleBand=kp,t.scaleDiverging=function t(){var n=Bp(h_()(zp));return n.copy=function(){return s_(n,t())},Tp.apply(n,arguments)},t.scaleDivergingLog=function t(){var n=$p(h_()).domain([.1,1,10]);return n.copy=function(){return s_(n,t()).base(n.base())},Tp.apply(n,arguments)},t.scaleDivergingPow=d_,t.scaleDivergingSqrt=function(){return d_.apply(null,arguments).exponent(.5)},t.scaleDivergingSymlog=function t(){var n=Kp(h_());return n.copy=function(){return s_(n,t()).constant(n.constant())},Tp.apply(n,arguments)},t.scaleIdentity=function t(n){var e;function r(t){return null==t||isNaN(t=+t)?e:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(n=Array.from(t,Cp),r):n.slice()},r.unknown=function(t){return arguments.length?(e=t,r):e},r.copy=function(){return t(n).unknown(e)},n=arguments.length?Array.from(n,Cp):[0,1],Bp(r)},t.scaleImplicit=Sp,t.scaleLinear=function t(){var n=Up();return n.copy=function(){return Fp(n,t())},Ap.apply(n,arguments),Bp(n)},t.scaleLog=function t(){const n=$p(Op()).domain([1,10]);return n.copy=()=>Fp(n,t()).base(n.base()),Ap.apply(n,arguments),n},t.scaleOrdinal=Ep,t.scalePoint=function(){return Np(kp.apply(null,arguments).paddingInner(1))},t.scalePow=eg,t.scaleQuantile=function t(){var e,r=[],i=[],o=[];function a(){var t=0,n=Math.max(1,i.length);for(o=new Array(n-1);++t<n;)o[t-1]=W(r,t/n);return u}function u(t){return null==t||isNaN(t=+t)?e:i[c(o,t)]}return u.invertExtent=function(t){var n=i.indexOf(t);return n<0?[NaN,NaN]:[n>0?o[n-1]:r[0],n<o.length?o[n]:r[r.length-1]]},u.domain=function(t){if(!arguments.length)return r.slice();r=[];for(let n of t)null==n||isNaN(n=+n)||r.push(n);return r.sort(n),a()},u.range=function(t){return arguments.length?(i=Array.from(t),a()):i.slice()},u.unknown=function(t){return arguments.length?(e=t,u):e},u.quantiles=function(){return o.slice()},u.copy=function(){return t().domain(r).range(i).unknown(e)},Ap.apply(u,arguments)},t.scaleQuantize=function t(){var n,e=0,r=1,i=1,o=[.5],a=[0,1];function u(t){return null!=t&&t<=t?a[c(o,t,0,i)]:n}function f(){var t=-1;for(o=new Array(i);++t<i;)o[t]=((t+1)*r-(t-i)*e)/(i+1);return u}return u.domain=function(t){return arguments.length?([e,r]=t,e=+e,r=+r,f()):[e,r]},u.range=function(t){return arguments.length?(i=(a=Array.from(t)).length-1,f()):a.slice()},u.invertExtent=function(t){var n=a.indexOf(t);return n<0?[NaN,NaN]:n<1?[e,o[0]]:n>=i?[o[i-1],r]:[o[n-1],o[n]]},u.unknown=function(t){return arguments.length?(n=t,u):u},u.thresholds=function(){return o.slice()},u.copy=function(){return t().domain([e,r]).range(a).unknown(n)},Ap.apply(Bp(u),arguments)},t.scaleRadial=function t(){var n,e=Up(),r=[0,1],i=!1;function o(t){var r=ig(e(t));return isNaN(r)?n:i?Math.round(r):r}return o.invert=function(t){return e.invert(rg(t))},o.domain=function(t){return arguments.length?(e.domain(t),o):e.domain()},o.range=function(t){return arguments.length?(e.range((r=Array.from(t,Cp)).map(rg)),o):r.slice()},o.rangeRound=function(t){return o.range(t).round(!0)},o.round=function(t){return arguments.length?(i=!!t,o):i},o.clamp=function(t){return arguments.length?(e.clamp(t),o):e.clamp()},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t(e.domain(),r).round(i).clamp(e.clamp()).unknown(n)},Ap.apply(o,arguments),Bp(o)},t.scaleSequential=function t(){var n=Bp(f_()(zp));return n.copy=function(){return s_(n,t())},Tp.apply(n,arguments)},t.scaleSequentialLog=function t(){var n=$p(f_()).domain([1,10]);return n.copy=function(){return s_(n,t()).base(n.base())},Tp.apply(n,arguments)},t.scaleSequentialPow=l_,t.scaleSequentialQuantile=function t(){var e=[],r=zp;function i(t){if(null!=t&&!isNaN(t=+t))return r((c(e,t,1)-1)/(e.length-1))}return i.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)null==n||isNaN(n=+n)||e.push(n);return e.sort(n),i},i.interpolator=function(t){return arguments.length?(r=t,i):r},i.range=function(){return e.map(((t,n)=>r(n/(e.length-1))))},i.quantiles=function(t){return Array.from({length:t+1},((n,r)=>$(e,r/t)))},i.copy=function(){return t(r).domain(e)},Tp.apply(i,arguments)},t.scaleSequentialSqrt=function(){return l_.apply(null,arguments).exponent(.5)},t.scaleSequentialSymlog=function t(){var n=Kp(f_());return n.copy=function(){return s_(n,t()).constant(n.constant())},Tp.apply(n,arguments)},t.scaleSqrt=function(){return eg.apply(null,arguments).exponent(.5)},t.scaleSymlog=function t(){var n=Kp(Op());return n.copy=function(){return Fp(n,t()).constant(n.constant())},Ap.apply(n,arguments)},t.scaleThreshold=function t(){var n,e=[.5],r=[0,1],i=1;function o(t){return null!=t&&t<=t?r[c(e,t,0,i)]:n}return o.domain=function(t){return arguments.length?(e=Array.from(t),i=Math.min(e.length,r.length-1),o):e.slice()},o.range=function(t){return arguments.length?(r=Array.from(t),i=Math.min(e.length,r.length-1),o):r.slice()},o.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t().domain(e).range(r).unknown(n)},Ap.apply(o,arguments)},t.scaleTime=function(){return Ap.apply(c_(Cy,Py,Wg,Gg,Pg,kg,Tg,wg,bg,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},t.scaleUtc=function(){return Ap.apply(c_(ky,Ny,Ty,wy,uy,iy,ny,Qg,bg,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},t.scan=function(t,n){const e=nt(t,n);return e<0?void 0:e},t.schemeAccent=y_,t.schemeBlues=pb,t.schemeBrBG=S_,t.schemeBuGn=H_,t.schemeBuPu=G_,t.schemeCategory10=g_,t.schemeDark2=v_,t.schemeGnBu=$_,t.schemeGreens=yb,t.schemeGreys=_b,t.schemeOrRd=Z_,t.schemeOranges=Ab,t.schemePRGn=k_,t.schemePaired=__,t.schemePastel1=b_,t.schemePastel2=m_,t.schemePiYG=C_,t.schemePuBu=tb,t.schemePuBuGn=Q_,t.schemePuOr=z_,t.schemePuRd=eb,t.schemePurples=mb,t.schemeRdBu=q_,t.schemeRdGy=F_,t.schemeRdPu=ib,t.schemeRdYlBu=U_,t.schemeRdYlGn=B_,t.schemeReds=wb,t.schemeSet1=x_,t.schemeSet2=w_,t.schemeSet3=M_,t.schemeSpectral=L_,t.schemeTableau10=A_,t.schemeYlGn=cb,t.schemeYlGnBu=ab,t.schemeYlOrBr=sb,t.schemeYlOrRd=hb,t.select=Un,t.selectAll=function(t){return"string"==typeof t?new Fn([document.querySelectorAll(t)],[document.documentElement]):new Fn([Pt(t)],Rn)},t.selection=On,t.selector=Ct,t.selectorAll=Dt,t.shuffle=et,t.shuffler=rt,t.some=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(n(r,++e,t))return!0;return!1},t.sort=C,t.stack=function(){var t=Ub([]),n=Sx,e=Tx,r=Ex;function i(i){var o,a,u=Array.from(t.apply(this,arguments),kx),c=u.length,f=-1;for(const t of i)for(o=0,++f;o<c;++o)(u[o][f]=[0,+r(t,u[o].key,f,i)]).data=t;for(o=0,a=am(n(u));o<c;++o)u[a[o]].index=o;return e(u,a),u}return i.keys=function(n){return arguments.length?(t="function"==typeof n?n:Ub(Array.from(n)),i):t},i.value=function(t){return arguments.length?(r="function"==typeof t?t:Ub(+t),i):r},i.order=function(t){return arguments.length?(n=null==t?Sx:"function"==typeof t?t:Ub(Array.from(t)),i):n},i.offset=function(t){return arguments.length?(e=null==t?Tx:t,i):e},i},t.stackOffsetDiverging=function(t,n){if((u=t.length)>0)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c<f;++c)for(o=a=0,e=0;e<u;++e)(i=(r=t[n[e]][c])[1]-r[0])>0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):(r[0]=0,r[1]=i)},t.stackOffsetExpand=function(t,n){if((r=t.length)>0){for(var e,r,i,o=0,a=t[0].length;o<a;++o){for(i=e=0;e<r;++e)i+=t[e][o][1]||0;if(i)for(e=0;e<r;++e)t[e][o][1]/=i}Tx(t,n)}},t.stackOffsetNone=Tx,t.stackOffsetSilhouette=function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r<o;++r){for(var a=0,u=0;a<e;++a)u+=t[a][r][1]||0;i[r][1]+=i[r][0]=-u/2}Tx(t,n)}},t.stackOffsetWiggle=function(t,n){if((i=t.length)>0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,a=1;a<r;++a){for(var u=0,c=0,f=0;u<i;++u){for(var s=t[n[u]],l=s[a][1]||0,h=(l-(s[a-1][1]||0))/2,d=0;d<u;++d){var p=t[n[d]];h+=(p[a][1]||0)-(p[a-1][1]||0)}c+=l,f+=h*l}e[a-1][1]+=e[a-1][0]=o,c&&(o-=f/c)}e[a-1][1]+=e[a-1][0]=o,Tx(t,n)}},t.stackOrderAppearance=Nx,t.stackOrderAscending=Px,t.stackOrderDescending=function(t){return Px(t).reverse()},t.stackOrderInsideOut=function(t){var n,e,r=t.length,i=t.map(zx),o=Nx(t),a=0,u=0,c=[],f=[];for(n=0;n<r;++n)e=o[n],a<u?(a+=i[e],c.push(e)):(u+=i[e],f.push(e));return f.reverse().concat(c)},t.stackOrderNone=Sx,t.stackOrderReverse=function(t){return Sx(t).reverse()},t.stratify=function(){var t,n=Yd,e=Ld;function r(r){var i,o,a,u,c,f,s,l,h=Array.from(r),d=n,p=e,g=new Map;if(null!=t){const n=h.map(((n,e)=>function(t){let n=(t=`${t}`).length;Hd(t,n-1)&&!Hd(t,n-2)&&(t=t.slice(0,-1));return"/"===t[0]?t:`/${t}`}(t(n,e,r)))),e=n.map(jd),i=new Set(n).add("");for(const t of e)i.has(t)||(i.add(t),n.push(t),e.push(jd(t)),h.push(Bd));d=(t,e)=>n[e],p=(t,n)=>e[n]}for(a=0,i=h.length;a<i;++a)o=h[a],f=h[a]=new pd(o),null!=(s=d(o,a,r))&&(s+="")&&(l=f.id=s,g.set(l,g.has(l)?Id:f)),null!=(s=p(o,a,r))&&(s+="")&&(f.parent=s);for(a=0;a<i;++a)if(s=(f=h[a]).parent){if(!(c=g.get(s)))throw new Error("missing: "+s);if(c===Id)throw new Error("ambiguous: "+s);c.children?c.children.push(f):c.children=[f],f.parent=c}else{if(u)throw new Error("multiple roots");u=f}if(!u)throw new Error("no root");if(null!=t){for(;u.data===Bd&&1===u.children.length;)u=u.children[0],--i;for(let t=h.length-1;t>=0&&(f=h[t],f.data===Bd);--t)f.data=null}if(u.parent=Ud,u.eachBefore((function(t){t.depth=t.parent.depth+1,--i})).eachBefore(dd),u.parent=null,i>0)throw new Error("cycle");return u}return r.id=function(t){return arguments.length?(n=kd(t),r):n},r.parentId=function(t){return arguments.length?(e=kd(t),r):e},r.path=function(n){return arguments.length?(t=kd(n),r):t},r},t.style=on,t.subset=function(t,n){return ut(n,t)},t.sum=function(t,n){let e=0;if(void 0===n)for(let n of t)(n=+n)&&(e+=n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&(e+=i)}return e},t.superset=ut,t.svg=Ku,t.symbol=function(t,n){var e=null;function r(){var r;if(e||(e=r=ya()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),r)return e=null,r+""||null}return t="function"==typeof t?t:Ub(t||km),n="function"==typeof n?n:Ub(void 0===n?64:+n),r.type=function(n){return arguments.length?(t="function"==typeof n?n:Ub(n),r):t},r.size=function(t){return arguments.length?(n="function"==typeof t?t:Ub(+t),r):n},r.context=function(t){return arguments.length?(e=null==t?null:t,r):e},r},t.symbolCircle=km,t.symbolCross=Nm,t.symbolDiamond=zm,t.symbolSquare=Om,t.symbolStar=Fm,t.symbolTriangle=Im,t.symbolWye=Hm,t.symbols=Xm,t.text=ju,t.thresholdFreedmanDiaconis=function(t,n,e){return Math.ceil((e-n)/(2*($(t,.75)-$(t,.25))*Math.pow(f(t),-1/3)))},t.thresholdScott=function(t,n,e){return Math.ceil((e-n)/(3.5*p(t)*Math.pow(f(t),-1/3)))},t.thresholdSturges=L,t.tickFormat=Ip,t.tickIncrement=I,t.tickStep=B,t.ticks=U,t.timeDay=kg,t.timeDays=Ng,t.timeFormatDefaultLocale=t_,t.timeFormatLocale=Ry,t.timeFriday=Fg,t.timeFridays=jg,t.timeHour=Tg,t.timeHours=Sg,t.timeInterval=ug,t.timeMillisecond=fg,t.timeMilliseconds=sg,t.timeMinute=wg,t.timeMinutes=Mg,t.timeMonday=zg,t.timeMondays=Ig,t.timeMonth=Gg,t.timeMonths=Vg,t.timeSaturday=Og,t.timeSaturdays=Hg,t.timeSecond=bg,t.timeSeconds=mg,t.timeSunday=Pg,t.timeSundays=Ug,t.timeThursday=Rg,t.timeThursdays=Lg,t.timeTickInterval=Py,t.timeTicks=Cy,t.timeTuesday=Dg,t.timeTuesdays=Bg,t.timeWednesday=qg,t.timeWednesdays=Yg,t.timeWeek=Pg,t.timeWeeks=Ug,t.timeYear=Wg,t.timeYears=Zg,t.timeout=gi,t.timer=si,t.timerFlush=li,t.transition=Ki,t.transpose=it,t.tree=function(){var t=Xd,n=1,e=1,r=null;function i(i){var c=function(t){for(var n,e,r,i,o,a=new Zd(t,0),u=[a];n=u.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(e=n.children[i]=new Zd(r[i],i)),e.parent=n;return(a.parent=new Zd(null,0)).children=[a],a}(i);if(c.eachAfter(o),c.parent.m=-c.z,c.eachBefore(a),r)i.eachBefore(u);else{var f=i,s=i,l=i;i.eachBefore((function(t){t.x<f.x&&(f=t),t.x>s.x&&(s=t),t.depth>l.depth&&(l=t)}));var h=f===s?1:t(f,s)/2,d=h-f.x,p=n/(s.x+h+d),g=e/(l.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*g}))}return i}function o(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var o=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-o):n.z=o}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,o=n,a=n,u=e,c=o.parent.children[0],f=o.m,s=a.m,l=u.m,h=c.m;u=Vd(u),o=Gd(o),u&&o;)c=Gd(c),(a=Vd(a)).a=n,(i=u.z+l-o.z-f+t(u._,o._))>0&&($d(Wd(u,n,r),n,i),f+=i,s+=i),l+=u.m,f+=o.m,h+=c.m,s+=a.m;u&&!Vd(a)&&(a.t=u,a.m+=l-s),o&&!Gd(c)&&(c.t=o,c.m+=f-h,r=n)}return r}(n,i,n.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.treemap=function(){var t=tp,n=!1,e=1,r=1,i=[0],o=Cd,a=Cd,u=Cd,c=Cd,f=Cd;function s(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(l),i=[0],n&&t.eachBefore(Fd),t}function l(n){var e=i[n.depth],r=n.x0+e,s=n.y0+e,l=n.x1-e,h=n.y1-e;l<r&&(r=l=(r+l)/2),h<s&&(s=h=(s+h)/2),n.x0=r,n.y0=s,n.x1=l,n.y1=h,n.children&&(e=i[n.depth+1]=o(n)/2,r+=f(n)-e,s+=a(n)-e,(l-=u(n)-e)<r&&(r=l=(r+l)/2),(h-=c(n)-e)<s&&(s=h=(s+h)/2),t(n,r,s,l,h))}return s.round=function(t){return arguments.length?(n=!!t,s):n},s.size=function(t){return arguments.length?(e=+t[0],r=+t[1],s):[e,r]},s.tile=function(n){return arguments.length?(t=Nd(n),s):t},s.padding=function(t){return arguments.length?s.paddingInner(t).paddingOuter(t):s.paddingInner()},s.paddingInner=function(t){return arguments.length?(o="function"==typeof t?t:Pd(+t),s):o},s.paddingOuter=function(t){return arguments.length?s.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):s.paddingTop()},s.paddingTop=function(t){return arguments.length?(a="function"==typeof t?t:Pd(+t),s):a},s.paddingRight=function(t){return arguments.length?(u="function"==typeof t?t:Pd(+t),s):u},s.paddingBottom=function(t){return arguments.length?(c="function"==typeof t?t:Pd(+t),s):c},s.paddingLeft=function(t){return arguments.length?(f="function"==typeof t?t:Pd(+t),s):f},s},t.treemapBinary=function(t,n,e,r,i){var o,a,u=t.children,c=u.length,f=new Array(c+1);for(f[0]=a=o=0;o<c;++o)f[o+1]=a+=u[o].value;!function t(n,e,r,i,o,a,c){if(n>=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}var l=f[n],h=r/2+l,d=n+1,p=e-1;for(;d<p;){var g=d+p>>>1;f[g]<h?d=g+1:p=g}h-f[d-1]<f[d]-h&&n+1<d&&--d;var y=f[d]-l,v=r-y;if(a-i>c-o){var _=r?(i*v+a*y)/r:a;t(n,d,y,i,o,_,c),t(d,e,v,_,o,a,c)}else{var b=r?(o*v+c*y)/r:c;t(n,d,y,i,o,a,b),t(d,e,v,i,b,a,c)}}(0,c,t.value,n,e,r,i)},t.treemapDice=Od,t.treemapResquarify=np,t.treemapSlice=Kd,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?Kd:Od)(t,n,e,r,i)},t.treemapSquarify=tp,t.tsv=Gu,t.tsvFormat=qu,t.tsvFormatBody=Ru,t.tsvFormatRow=Ou,t.tsvFormatRows=Fu,t.tsvFormatValue=Uu,t.tsvParse=zu,t.tsvParseRows=Du,t.union=function(...t){const n=new InternSet;for(const e of t)for(const t of e)n.add(t);return n},t.utcDay=iy,t.utcDays=oy,t.utcFriday=hy,t.utcFridays=by,t.utcHour=ny,t.utcHours=ey,t.utcMillisecond=fg,t.utcMilliseconds=sg,t.utcMinute=Qg,t.utcMinutes=Jg,t.utcMonday=cy,t.utcMondays=gy,t.utcMonth=wy,t.utcMonths=My,t.utcSaturday=dy,t.utcSaturdays=my,t.utcSecond=bg,t.utcSeconds=mg,t.utcSunday=uy,t.utcSundays=py,t.utcThursday=ly,t.utcThursdays=_y,t.utcTickInterval=Ny,t.utcTicks=ky,t.utcTuesday=fy,t.utcTuesdays=yy,t.utcWednesday=sy,t.utcWednesdays=vy,t.utcWeek=uy,t.utcWeeks=py,t.utcYear=Ty,t.utcYears=Sy,t.variance=d,t.version="7.2.1",t.window=tn,t.xml=Wu,t.zip=function(){return it(arguments)},t.zoom=function(){var t,n,e,r=Bx,i=Yx,o=Xx,a=jx,u=Hx,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],s=250,l=Br,h=_t("start","zoom","end"),d=500,p=0,g=10;function y(t){t.property("__zoom",Lx).on("wheel.zoom",M,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",T).filter(u).on("touchstart.zoom",S).on("touchmove.zoom",E).on("touchend.zoom touchcancel.zoom",k).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function v(t,n){return(n=Math.max(c[0],Math.min(c[1],n)))===t.k?t:new Rx(n,t.x,t.y)}function _(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new Rx(t.k,r,i)}function b(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function m(t,n,e,r){t.on("start.zoom",(function(){x(this,arguments).event(r).start()})).on("interrupt.zoom end.zoom",(function(){x(this,arguments).event(r).end()})).tween("zoom",(function(){var t=this,o=arguments,a=x(t,o).event(r),u=i.apply(t,o),c=null==e?b(u):"function"==typeof e?e.apply(t,o):e,f=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),s=t.__zoom,h="function"==typeof n?n.apply(t,o):n,d=l(s.invert(c).concat(f/s.k),h.invert(c).concat(f/h.k));return function(t){if(1===t)t=h;else{var n=d(t),e=f/n[2];t=new Rx(e,c[0]-n[0]*e,c[1]-n[1]*e)}a.zoom(null,t)}}))}function x(t,n,e){return!e&&t.__zooming||new w(t,n)}function w(t,n){this.that=t,this.args=n,this.active=0,this.sourceEvent=null,this.extent=i.apply(t,n),this.taps=0}function M(t,...n){if(r.apply(this,arguments)){var e=x(this,n).event(t),i=this.__zoom,u=Math.max(c[0],Math.min(c[1],i.k*Math.pow(2,a.apply(this,arguments)))),s=jn(t);if(e.wheel)e.mouse[0][0]===s[0]&&e.mouse[0][1]===s[1]||(e.mouse[1]=i.invert(e.mouse[0]=s)),clearTimeout(e.wheel);else{if(i.k===u)return;e.mouse=[s,i.invert(s)],wi(this),e.start()}Ix(t),e.wheel=setTimeout(l,150),e.zoom("mouse",o(_(v(i,u),e.mouse[0],e.mouse[1]),e.extent,f))}function l(){e.wheel=null,e.end()}}function A(t,...n){if(!e&&r.apply(this,arguments)){var i=t.currentTarget,a=x(this,n,!0).event(t),u=Un(t.view).on("mousemove.zoom",h,!0).on("mouseup.zoom",d,!0),c=jn(t,i),s=t.clientX,l=t.clientY;$n(t.view),Ux(t),a.mouse=[c,this.__zoom.invert(c)],wi(this),a.start()}function h(t){if(Ix(t),!a.moved){var n=t.clientX-s,e=t.clientY-l;a.moved=n*n+e*e>p}a.event(t).zoom("mouse",o(_(a.that.__zoom,a.mouse[0]=jn(t,i),a.mouse[1]),a.extent,f))}function d(t){u.on("mousemove.zoom mouseup.zoom",null),Wn(t.view,a.moved),Ix(t),a.event(t).end()}}function T(t,...n){if(r.apply(this,arguments)){var e=this.__zoom,a=jn(t.changedTouches?t.changedTouches[0]:t,this),u=e.invert(a),c=e.k*(t.shiftKey?.5:2),l=o(_(v(e,c),a,u),i.apply(this,n),f);Ix(t),s>0?Un(this).transition().duration(s).call(m,l,a,t):Un(this).call(y.transform,l,a,t)}}function S(e,...i){if(r.apply(this,arguments)){var o,a,u,c,f=e.touches,s=f.length,l=x(this,i,e.changedTouches.length===s).event(e);for(Ux(e),a=0;a<s;++a)c=[c=jn(u=f[a],this),this.__zoom.invert(c),u.identifier],l.touch0?l.touch1||l.touch0[2]===c[2]||(l.touch1=c,l.taps=0):(l.touch0=c,o=!0,l.taps=1+!!t);t&&(t=clearTimeout(t)),o&&(l.taps<2&&(n=c[0],t=setTimeout((function(){t=null}),d)),wi(this),l.start())}}function E(t,...n){if(this.__zooming){var e,r,i,a,u=x(this,n).event(t),c=t.changedTouches,s=c.length;for(Ix(t),e=0;e<s;++e)i=jn(r=c[e],this),u.touch0&&u.touch0[2]===r.identifier?u.touch0[0]=i:u.touch1&&u.touch1[2]===r.identifier&&(u.touch1[0]=i);if(r=u.that.__zoom,u.touch1){var l=u.touch0[0],h=u.touch0[1],d=u.touch1[0],p=u.touch1[1],g=(g=d[0]-l[0])*g+(g=d[1]-l[1])*g,y=(y=p[0]-h[0])*y+(y=p[1]-h[1])*y;r=v(r,Math.sqrt(g/y)),i=[(l[0]+d[0])/2,(l[1]+d[1])/2],a=[(h[0]+p[0])/2,(h[1]+p[1])/2]}else{if(!u.touch0)return;i=u.touch0[0],a=u.touch0[1]}u.zoom("touch",o(_(r,i,a),u.extent,f))}}function k(t,...r){if(this.__zooming){var i,o,a=x(this,r).event(t),u=t.changedTouches,c=u.length;for(Ux(t),e&&clearTimeout(e),e=setTimeout((function(){e=null}),d),i=0;i<c;++i)o=u[i],a.touch0&&a.touch0[2]===o.identifier?delete a.touch0:a.touch1&&a.touch1[2]===o.identifier&&delete a.touch1;if(a.touch1&&!a.touch0&&(a.touch0=a.touch1,delete a.touch1),a.touch0)a.touch0[1]=this.__zoom.invert(a.touch0[0]);else if(a.end(),2===a.taps&&(o=jn(o,this),Math.hypot(n[0]-o[0],n[1]-o[1])<g)){var f=Un(this).on("dblclick.zoom");f&&f.apply(this,arguments)}}}return y.transform=function(t,n,e,r){var i=t.selection?t.selection():t;i.property("__zoom",Lx),t!==i?m(t,n,e,r):i.interrupt().each((function(){x(this,arguments).event(r).start().zoom(null,"function"==typeof n?n.apply(this,arguments):n).end()}))},y.scaleBy=function(t,n,e,r){y.scaleTo(t,(function(){var t=this.__zoom.k,e="function"==typeof n?n.apply(this,arguments):n;return t*e}),e,r)},y.scaleTo=function(t,n,e,r){y.transform(t,(function(){var t=i.apply(this,arguments),r=this.__zoom,a=null==e?b(t):"function"==typeof e?e.apply(this,arguments):e,u=r.invert(a),c="function"==typeof n?n.apply(this,arguments):n;return o(_(v(r,c),a,u),t,f)}),e,r)},y.translateBy=function(t,n,e,r){y.transform(t,(function(){return o(this.__zoom.translate("function"==typeof n?n.apply(this,arguments):n,"function"==typeof e?e.apply(this,arguments):e),i.apply(this,arguments),f)}),null,r)},y.translateTo=function(t,n,e,r,a){y.transform(t,(function(){var t=i.apply(this,arguments),a=this.__zoom,u=null==r?b(t):"function"==typeof r?r.apply(this,arguments):r;return o(Fx.translate(u[0],u[1]).scale(a.k).translate("function"==typeof n?-n.apply(this,arguments):-n,"function"==typeof e?-e.apply(this,arguments):-e),t,f)}),r,a)},w.prototype={event:function(t){return t&&(this.sourceEvent=t),this},start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(t,n){return this.mouse&&"mouse"!==t&&(this.mouse[1]=n.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=n.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=n.invert(this.touch1[0])),this.that.__zoom=n,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){var n=Un(this.that).datum();h.call(t,this.that,new qx(t,{sourceEvent:this.sourceEvent,target:y,type:t,transform:this.that.__zoom,dispatch:h}),n)}},y.wheelDelta=function(t){return arguments.length?(a="function"==typeof t?t:Dx(+t),y):a},y.filter=function(t){return arguments.length?(r="function"==typeof t?t:Dx(!!t),y):r},y.touchable=function(t){return arguments.length?(u="function"==typeof t?t:Dx(!!t),y):u},y.extent=function(t){return arguments.length?(i="function"==typeof t?t:Dx([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),y):i},y.scaleExtent=function(t){return arguments.length?(c[0]=+t[0],c[1]=+t[1],y):[c[0],c[1]]},y.translateExtent=function(t){return arguments.length?(f[0][0]=+t[0][0],f[1][0]=+t[1][0],f[0][1]=+t[0][1],f[1][1]=+t[1][1],y):[[f[0][0],f[0][1]],[f[1][0],f[1][1]]]},y.constrain=function(t){return arguments.length?(o=t,y):o},y.duration=function(t){return arguments.length?(s=+t,y):s},y.interpolate=function(t){return arguments.length?(l=t,y):l},y.on=function(){var t=h.on.apply(h,arguments);return t===h?y:t},y.clickDistance=function(t){return arguments.length?(p=(t=+t)*t,y):Math.sqrt(p)},y.tapDistance=function(t){return arguments.length?(g=+t,y):g},y},t.zoomIdentity=Fx,t.zoomTransform=Ox,Object.defineProperty(t,"__esModule",{value:!0})}));
diff --git a/static/dot-wasm.js b/static/dot-wasm.js
new file mode 100644
index 0000000..424608e
--- /dev/null
+++ b/static/dot-wasm.js
@@ -0,0 +1 @@
+!function(r,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((r="undefined"!=typeof globalThis?globalThis:r||self)["@hpcc-js/wasm"]={})}(this,(function(r){"use strict";function t(r,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(e){if("default"!==e&&!(e in r)){var n=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(r,e,n.get?n:{enumerable:!0,get:function(){return t[e]}})}}))})),Object.freeze(r)}var e={exports:{}};!function(r,t){var e,n=(e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,function(r){var t,n,o=void 0!==(r=r||{})?r:{};o.ready=new Promise((function(r,e){t=r,n=e}));var i,a={};for(i in o)o.hasOwnProperty(i)&&(a[i]=o[i]);var s,u,c="./this.program",f="";"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=function(r){var t=new XMLHttpRequest;return t.open("GET",r,!1),t.send(null),t.responseText},u=function(r,t,e){var n=new XMLHttpRequest;n.open("GET",r,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?t(n.response):e()},n.onerror=e,n.send(null)};var d,l,p=o.print||console.log.bind(console),m=o.printErr||console.warn.bind(console);for(i in a)a.hasOwnProperty(i)&&(o[i]=a[i]);a=null,o.arguments,o.thisProgram&&(c=o.thisProgram),o.quit,o.wasmBinary&&(d=o.wasmBinary),o.noExitRuntime,"object"!=typeof WebAssembly&&I("no native wasm support detected");var h=!1;function v(r,t){r||I("Assertion failed: "+t)}var w,_,y,E,g,b,k="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function D(r,t,e){for(var n=t+e,o=t;r[o]&&!(o>=n);)++o;if(o-t>16&&r.subarray&&k)return k.decode(r.subarray(t,o));for(var i="";t<o;){var a=r[t++];if(128&a){var s=63&r[t++];if(192!=(224&a)){var u=63&r[t++];if((a=224==(240&a)?(15&a)<<12|s<<6|u:(7&a)<<18|s<<12|u<<6|63&r[t++])<65536)i+=String.fromCharCode(a);else{var c=a-65536;i+=String.fromCharCode(55296|c>>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function S(r,t){return r?D(y,r,t):""}function P(r,t,e,n){if(!(n>0))return 0;for(var o=e,i=e+n-1,a=0;a<r.length;++a){var s=r.charCodeAt(a);if(s>=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&r.charCodeAt(++a)),s<=127){if(e>=i)break;t[e++]=s}else if(s<=2047){if(e+1>=i)break;t[e++]=192|s>>6,t[e++]=128|63&s}else if(s<=65535){if(e+2>=i)break;t[e++]=224|s>>12,t[e++]=128|s>>6&63,t[e++]=128|63&s}else{if(e+3>=i)break;t[e++]=240|s>>18,t[e++]=128|s>>12&63,t[e++]=128|s>>6&63,t[e++]=128|63&s}}return t[e]=0,e-o}function A(r){for(var t=0,e=0;e<r.length;++e){var n=r.charCodeAt(e);n>=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&r.charCodeAt(++e)),n<=127?++t:t+=n<=2047?2:n<=65535?3:4}return t}function F(r){w=r,o.HEAP8=_=new Int8Array(r),o.HEAP16=new Int16Array(r),o.HEAP32=E=new Int32Array(r),o.HEAPU8=y=new Uint8Array(r),o.HEAPU16=new Uint16Array(r),o.HEAPU32=new Uint32Array(r),o.HEAPF32=new Float32Array(r),o.HEAPF64=g=new Float64Array(r)}o.INITIAL_MEMORY;var x,M,R,C,z=[],j=[],B=[],T=0,N=null;function O(r){T++,o.monitorRunDependencies&&o.monitorRunDependencies(T)}function L(r){if(T--,o.monitorRunDependencies&&o.monitorRunDependencies(T),0==T&&N){var t=N;N=null,t()}}function I(r){o.onAbort&&o.onAbort(r),m(r="Aborted("+r+")"),h=!0,r+=". Build with -s ASSERTIONS=1 for more info.";var t=new WebAssembly.RuntimeError(r);throw n(t),t}function H(r){return r.startsWith("data:application/octet-stream;base64,")}function U(r){try{if(r==x&&d)return new Uint8Array(d);throw"both async and sync fetching of the wasm failed"}catch(r){I(r)}}o.preloadedImages={},o.preloadedAudios={},H(x="expatlib.wasm")||(M=x,x=o.locateFile?o.locateFile(M,f):f+M);var G={11694:function(r){var t=o.getCache(o.CExpatJS)[r];if(!t.hasOwnProperty("startElement"))throw"a JSImplementation must implement all functions, you forgot CExpatJS::startElement.";t.startElement()},11912:function(r){var t=o.getCache(o.CExpatJS)[r];if(!t.hasOwnProperty("endElement"))throw"a JSImplementation must implement all functions, you forgot CExpatJS::endElement.";t.endElement()},12124:function(r){var t=o.getCache(o.CExpatJS)[r];if(!t.hasOwnProperty("characterData"))throw"a JSImplementation must implement all functions, you forgot CExpatJS::characterData.";t.characterData()}};function q(r){for(;r.length>0;){var t=r.shift();if("function"!=typeof t){var e=t.func;"number"==typeof e?void 0===t.arg?W(e)():W(e)(t.arg):e(void 0===t.arg?null:t.arg)}else t(o)}}function W(r){return b.get(r)}var J={splitPath:function(r){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(r).slice(1)},normalizeArray:function(r,t){for(var e=0,n=r.length-1;n>=0;n--){var o=r[n];"."===o?r.splice(n,1):".."===o?(r.splice(n,1),e++):e&&(r.splice(n,1),e--)}if(t)for(;e;e--)r.unshift("..");return r},normalize:function(r){var t="/"===r.charAt(0),e="/"===r.substr(-1);return(r=J.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||t||(r="."),r&&e&&(r+="/"),(t?"/":"")+r},dirname:function(r){var t=J.splitPath(r),e=t[0],n=t[1];return e||n?(n&&(n=n.substr(0,n.length-1)),e+n):"."},basename:function(r){if("/"===r)return"/";var t=(r=(r=J.normalize(r)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?r:r.substr(t+1)},extname:function(r){return J.splitPath(r)[3]},join:function(){var r=Array.prototype.slice.call(arguments,0);return J.normalize(r.join("/"))},join2:function(r,t){return J.normalize(r+"/"+t)}},V={resolve:function(){for(var r="",t=!1,e=arguments.length-1;e>=-1&&!t;e--){var n=e>=0?arguments[e]:Y.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";r=n+"/"+r,t="/"===n.charAt(0)}return(t?"/":"")+(r=J.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||"."},relative:function(r,t){function e(r){for(var t=0;t<r.length&&""===r[t];t++);for(var e=r.length-1;e>=0&&""===r[e];e--);return t>e?[]:r.slice(t,e-t+1)}r=V.resolve(r).substr(1),t=V.resolve(t).substr(1);for(var n=e(r.split("/")),o=e(t.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s<i;s++)if(n[s]!==o[s]){a=s;break}var u=[];for(s=a;s<n.length;s++)u.push("..");return(u=u.concat(o.slice(a))).join("/")}},X={ttys:[],init:function(){},shutdown:function(){},register:function(r,t){X.ttys[r]={input:[],output:[],ops:t},Y.registerDevice(r,X.stream_ops)},stream_ops:{open:function(r){var t=X.ttys[r.node.rdev];if(!t)throw new Y.ErrnoError(43);r.tty=t,r.seekable=!1},close:function(r){r.tty.ops.flush(r.tty)},flush:function(r){r.tty.ops.flush(r.tty)},read:function(r,t,e,n,o){if(!r.tty||!r.tty.ops.get_char)throw new Y.ErrnoError(60);for(var i=0,a=0;a<n;a++){var s;try{s=r.tty.ops.get_char(r.tty)}catch(r){throw new Y.ErrnoError(29)}if(void 0===s&&0===i)throw new Y.ErrnoError(6);if(null==s)break;i++,t[e+a]=s}return i&&(r.node.timestamp=Date.now()),i},write:function(r,t,e,n,o){if(!r.tty||!r.tty.ops.put_char)throw new Y.ErrnoError(60);try{for(var i=0;i<n;i++)r.tty.ops.put_char(r.tty,t[e+i])}catch(r){throw new Y.ErrnoError(29)}return n&&(r.node.timestamp=Date.now()),i}},default_tty_ops:{get_char:function(r){if(!r.input.length){var t=null;if("undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n"),!t)return null;r.input=ir(t,!0)}return r.input.shift()},put_char:function(r,t){null===t||10===t?(p(D(r.output,0)),r.output=[]):0!=t&&r.output.push(t)},flush:function(r){r.output&&r.output.length>0&&(p(D(r.output,0)),r.output=[])}},default_tty1_ops:{put_char:function(r,t){null===t||10===t?(m(D(r.output,0)),r.output=[]):0!=t&&r.output.push(t)},flush:function(r){r.output&&r.output.length>0&&(m(D(r.output,0)),r.output=[])}}},K={ops_table:null,mount:function(r){return K.createNode(null,"/",16895,0)},createNode:function(r,t,e,n){if(Y.isBlkdev(e)||Y.isFIFO(e))throw new Y.ErrnoError(63);K.ops_table||(K.ops_table={dir:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr,lookup:K.node_ops.lookup,mknod:K.node_ops.mknod,rename:K.node_ops.rename,unlink:K.node_ops.unlink,rmdir:K.node_ops.rmdir,readdir:K.node_ops.readdir,symlink:K.node_ops.symlink},stream:{llseek:K.stream_ops.llseek}},file:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr},stream:{llseek:K.stream_ops.llseek,read:K.stream_ops.read,write:K.stream_ops.write,allocate:K.stream_ops.allocate,mmap:K.stream_ops.mmap,msync:K.stream_ops.msync}},link:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr,readlink:K.node_ops.readlink},stream:{}},chrdev:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr},stream:Y.chrdev_stream_ops}});var o=Y.createNode(r,t,e,n);return Y.isDir(o.mode)?(o.node_ops=K.ops_table.dir.node,o.stream_ops=K.ops_table.dir.stream,o.contents={}):Y.isFile(o.mode)?(o.node_ops=K.ops_table.file.node,o.stream_ops=K.ops_table.file.stream,o.usedBytes=0,o.contents=null):Y.isLink(o.mode)?(o.node_ops=K.ops_table.link.node,o.stream_ops=K.ops_table.link.stream):Y.isChrdev(o.mode)&&(o.node_ops=K.ops_table.chrdev.node,o.stream_ops=K.ops_table.chrdev.stream),o.timestamp=Date.now(),r&&(r.contents[t]=o,r.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(r){return r.contents?r.contents.subarray?r.contents.subarray(0,r.usedBytes):new Uint8Array(r.contents):new Uint8Array(0)},expandFileStorage:function(r,t){var e=r.contents?r.contents.length:0;if(!(e>=t)){t=Math.max(t,e*(e<1048576?2:1.125)>>>0),0!=e&&(t=Math.max(t,256));var n=r.contents;r.contents=new Uint8Array(t),r.usedBytes>0&&r.contents.set(n.subarray(0,r.usedBytes),0)}},resizeFileStorage:function(r,t){if(r.usedBytes!=t)if(0==t)r.contents=null,r.usedBytes=0;else{var e=r.contents;r.contents=new Uint8Array(t),e&&r.contents.set(e.subarray(0,Math.min(t,r.usedBytes))),r.usedBytes=t}},node_ops:{getattr:function(r){var t={};return t.dev=Y.isChrdev(r.mode)?r.id:1,t.ino=r.id,t.mode=r.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=r.rdev,Y.isDir(r.mode)?t.size=4096:Y.isFile(r.mode)?t.size=r.usedBytes:Y.isLink(r.mode)?t.size=r.link.length:t.size=0,t.atime=new Date(r.timestamp),t.mtime=new Date(r.timestamp),t.ctime=new Date(r.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(r,t){void 0!==t.mode&&(r.mode=t.mode),void 0!==t.timestamp&&(r.timestamp=t.timestamp),void 0!==t.size&&K.resizeFileStorage(r,t.size)},lookup:function(r,t){throw Y.genericErrors[44]},mknod:function(r,t,e,n){return K.createNode(r,t,e,n)},rename:function(r,t,e){if(Y.isDir(r.mode)){var n;try{n=Y.lookupNode(t,e)}catch(r){}if(n)for(var o in n.contents)throw new Y.ErrnoError(55)}delete r.parent.contents[r.name],r.parent.timestamp=Date.now(),r.name=e,t.contents[e]=r,t.timestamp=r.parent.timestamp,r.parent=t},unlink:function(r,t){delete r.contents[t],r.timestamp=Date.now()},rmdir:function(r,t){var e=Y.lookupNode(r,t);for(var n in e.contents)throw new Y.ErrnoError(55);delete r.contents[t],r.timestamp=Date.now()},readdir:function(r){var t=[".",".."];for(var e in r.contents)r.contents.hasOwnProperty(e)&&t.push(e);return t},symlink:function(r,t,e){var n=K.createNode(r,t,41471,0);return n.link=e,n},readlink:function(r){if(!Y.isLink(r.mode))throw new Y.ErrnoError(28);return r.link}},stream_ops:{read:function(r,t,e,n,o){var i=r.node.contents;if(o>=r.node.usedBytes)return 0;var a=Math.min(r.node.usedBytes-o,n);if(a>8&&i.subarray)t.set(i.subarray(o,o+a),e);else for(var s=0;s<a;s++)t[e+s]=i[o+s];return a},write:function(r,t,e,n,o,i){if(t.buffer===_.buffer&&(i=!1),!n)return 0;var a=r.node;if(a.timestamp=Date.now(),t.subarray&&(!a.contents||a.contents.subarray)){if(i)return a.contents=t.subarray(e,e+n),a.usedBytes=n,n;if(0===a.usedBytes&&0===o)return a.contents=t.slice(e,e+n),a.usedBytes=n,n;if(o+n<=a.usedBytes)return a.contents.set(t.subarray(e,e+n),o),n}if(K.expandFileStorage(a,o+n),a.contents.subarray&&t.subarray)a.contents.set(t.subarray(e,e+n),o);else for(var s=0;s<n;s++)a.contents[o+s]=t[e+s];return a.usedBytes=Math.max(a.usedBytes,o+n),n},llseek:function(r,t,e){var n=t;if(1===e?n+=r.position:2===e&&Y.isFile(r.node.mode)&&(n+=r.node.usedBytes),n<0)throw new Y.ErrnoError(28);return n},allocate:function(r,t,e){K.expandFileStorage(r.node,t+e),r.node.usedBytes=Math.max(r.node.usedBytes,t+e)},mmap:function(r,t,e,n,o,i){if(0!==t)throw new Y.ErrnoError(28);if(!Y.isFile(r.node.mode))throw new Y.ErrnoError(43);var a,s,u=r.node.contents;if(2&i||u.buffer!==w){if((n>0||n+e<u.length)&&(u=u.subarray?u.subarray(n,n+e):Array.prototype.slice.call(u,n,n+e)),s=!0,!(a=void I()))throw new Y.ErrnoError(48);_.set(u,a)}else s=!1,a=u.byteOffset;return{ptr:a,allocated:s}},msync:function(r,t,e,n,o){if(!Y.isFile(r.node.mode))throw new Y.ErrnoError(43);return 2&o||K.stream_ops.write(r,t,0,n,e,!1),0}}},Y={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(r,t){if(t=t||{},!(r=V.resolve(Y.cwd(),r)))return{path:"",node:null};var e={follow_mount:!0,recurse_count:0};for(var n in e)void 0===t[n]&&(t[n]=e[n]);if(t.recurse_count>8)throw new Y.ErrnoError(32);for(var o=J.normalizeArray(r.split("/").filter((function(r){return!!r})),!1),i=Y.root,a="/",s=0;s<o.length;s++){var u=s===o.length-1;if(u&&t.parent)break;if(i=Y.lookupNode(i,o[s]),a=J.join2(a,o[s]),Y.isMountpoint(i)&&(!u||u&&t.follow_mount)&&(i=i.mounted.root),!u||t.follow)for(var c=0;Y.isLink(i.mode);){var f=Y.readlink(a);if(a=V.resolve(J.dirname(a),f),i=Y.lookupPath(a,{recurse_count:t.recurse_count}).node,c++>40)throw new Y.ErrnoError(32)}}return{path:a,node:i}},getPath:function(r){for(var t;;){if(Y.isRoot(r)){var e=r.mount.mountpoint;return t?"/"!==e[e.length-1]?e+"/"+t:e+t:e}t=t?r.name+"/"+t:r.name,r=r.parent}},hashName:function(r,t){for(var e=0,n=0;n<t.length;n++)e=(e<<5)-e+t.charCodeAt(n)|0;return(r+e>>>0)%Y.nameTable.length},hashAddNode:function(r){var t=Y.hashName(r.parent.id,r.name);r.name_next=Y.nameTable[t],Y.nameTable[t]=r},hashRemoveNode:function(r){var t=Y.hashName(r.parent.id,r.name);if(Y.nameTable[t]===r)Y.nameTable[t]=r.name_next;else for(var e=Y.nameTable[t];e;){if(e.name_next===r){e.name_next=r.name_next;break}e=e.name_next}},lookupNode:function(r,t){var e=Y.mayLookup(r);if(e)throw new Y.ErrnoError(e,r);for(var n=Y.hashName(r.id,t),o=Y.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===r.id&&i===t)return o}return Y.lookup(r,t)},createNode:function(r,t,e,n){var o=new Y.FSNode(r,t,e,n);return Y.hashAddNode(o),o},destroyNode:function(r){Y.hashRemoveNode(r)},isRoot:function(r){return r===r.parent},isMountpoint:function(r){return!!r.mounted},isFile:function(r){return 32768==(61440&r)},isDir:function(r){return 16384==(61440&r)},isLink:function(r){return 40960==(61440&r)},isChrdev:function(r){return 8192==(61440&r)},isBlkdev:function(r){return 24576==(61440&r)},isFIFO:function(r){return 4096==(61440&r)},isSocket:function(r){return 49152==(49152&r)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(r){var t=Y.flagModes[r];if(void 0===t)throw new Error("Unknown file open mode: "+r);return t},flagsToPermissionString:function(r){var t=["r","w","rw"][3&r];return 512&r&&(t+="w"),t},nodePermissions:function(r,t){return Y.ignorePermissions||(!t.includes("r")||292&r.mode)&&(!t.includes("w")||146&r.mode)&&(!t.includes("x")||73&r.mode)?0:2},mayLookup:function(r){var t=Y.nodePermissions(r,"x");return t||(r.node_ops.lookup?0:2)},mayCreate:function(r,t){try{return Y.lookupNode(r,t),20}catch(r){}return Y.nodePermissions(r,"wx")},mayDelete:function(r,t,e){var n;try{n=Y.lookupNode(r,t)}catch(r){return r.errno}var o=Y.nodePermissions(r,"wx");if(o)return o;if(e){if(!Y.isDir(n.mode))return 54;if(Y.isRoot(n)||Y.getPath(n)===Y.cwd())return 10}else if(Y.isDir(n.mode))return 31;return 0},mayOpen:function(r,t){return r?Y.isLink(r.mode)?32:Y.isDir(r.mode)&&("r"!==Y.flagsToPermissionString(t)||512&t)?31:Y.nodePermissions(r,Y.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(r,t){r=r||0,t=t||Y.MAX_OPEN_FDS;for(var e=r;e<=t;e++)if(!Y.streams[e])return e;throw new Y.ErrnoError(33)},getStream:function(r){return Y.streams[r]},createStream:function(r,t,e){Y.FSStream||(Y.FSStream=function(){},Y.FSStream.prototype={object:{get:function(){return this.node},set:function(r){this.node=r}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}});var n=new Y.FSStream;for(var o in r)n[o]=r[o];r=n;var i=Y.nextfd(t,e);return r.fd=i,Y.streams[i]=r,r},closeStream:function(r){Y.streams[r]=null},chrdev_stream_ops:{open:function(r){var t=Y.getDevice(r.node.rdev);r.stream_ops=t.stream_ops,r.stream_ops.open&&r.stream_ops.open(r)},llseek:function(){throw new Y.ErrnoError(70)}},major:function(r){return r>>8},minor:function(r){return 255&r},makedev:function(r,t){return r<<8|t},registerDevice:function(r,t){Y.devices[r]={stream_ops:t}},getDevice:function(r){return Y.devices[r]},getMounts:function(r){for(var t=[],e=[r];e.length;){var n=e.pop();t.push(n),e.push.apply(e,n.mounts)}return t},syncfs:function(r,t){"function"==typeof r&&(t=r,r=!1),Y.syncFSRequests++,Y.syncFSRequests>1&&m("warning: "+Y.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var e=Y.getMounts(Y.root.mount),n=0;function o(r){return Y.syncFSRequests--,t(r)}function i(r){if(r)return i.errored?void 0:(i.errored=!0,o(r));++n>=e.length&&o(null)}e.forEach((function(t){if(!t.type.syncfs)return i(null);t.type.syncfs(t,r,i)}))},mount:function(r,t,e){var n,o="/"===e,i=!e;if(o&&Y.root)throw new Y.ErrnoError(10);if(!o&&!i){var a=Y.lookupPath(e,{follow_mount:!1});if(e=a.path,n=a.node,Y.isMountpoint(n))throw new Y.ErrnoError(10);if(!Y.isDir(n.mode))throw new Y.ErrnoError(54)}var s={type:r,opts:t,mountpoint:e,mounts:[]},u=r.mount(s);return u.mount=s,s.root=u,o?Y.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(r){var t=Y.lookupPath(r,{follow_mount:!1});if(!Y.isMountpoint(t.node))throw new Y.ErrnoError(28);var e=t.node,n=e.mounted,o=Y.getMounts(n);Object.keys(Y.nameTable).forEach((function(r){for(var t=Y.nameTable[r];t;){var e=t.name_next;o.includes(t.mount)&&Y.destroyNode(t),t=e}})),e.mounted=null;var i=e.mount.mounts.indexOf(n);e.mount.mounts.splice(i,1)},lookup:function(r,t){return r.node_ops.lookup(r,t)},mknod:function(r,t,e){var n=Y.lookupPath(r,{parent:!0}).node,o=J.basename(r);if(!o||"."===o||".."===o)throw new Y.ErrnoError(28);var i=Y.mayCreate(n,o);if(i)throw new Y.ErrnoError(i);if(!n.node_ops.mknod)throw new Y.ErrnoError(63);return n.node_ops.mknod(n,o,t,e)},create:function(r,t){return t=void 0!==t?t:438,t&=4095,t|=32768,Y.mknod(r,t,0)},mkdir:function(r,t){return t=void 0!==t?t:511,t&=1023,t|=16384,Y.mknod(r,t,0)},mkdirTree:function(r,t){for(var e=r.split("/"),n="",o=0;o<e.length;++o)if(e[o]){n+="/"+e[o];try{Y.mkdir(n,t)}catch(r){if(20!=r.errno)throw r}}},mkdev:function(r,t,e){return void 0===e&&(e=t,t=438),t|=8192,Y.mknod(r,t,e)},symlink:function(r,t){if(!V.resolve(r))throw new Y.ErrnoError(44);var e=Y.lookupPath(t,{parent:!0}).node;if(!e)throw new Y.ErrnoError(44);var n=J.basename(t),o=Y.mayCreate(e,n);if(o)throw new Y.ErrnoError(o);if(!e.node_ops.symlink)throw new Y.ErrnoError(63);return e.node_ops.symlink(e,n,r)},rename:function(r,t){var e,n,o=J.dirname(r),i=J.dirname(t),a=J.basename(r),s=J.basename(t);if(e=Y.lookupPath(r,{parent:!0}).node,n=Y.lookupPath(t,{parent:!0}).node,!e||!n)throw new Y.ErrnoError(44);if(e.mount!==n.mount)throw new Y.ErrnoError(75);var u,c=Y.lookupNode(e,a),f=V.relative(r,i);if("."!==f.charAt(0))throw new Y.ErrnoError(28);if("."!==(f=V.relative(t,o)).charAt(0))throw new Y.ErrnoError(55);try{u=Y.lookupNode(n,s)}catch(r){}if(c!==u){var d=Y.isDir(c.mode),l=Y.mayDelete(e,a,d);if(l)throw new Y.ErrnoError(l);if(l=u?Y.mayDelete(n,s,d):Y.mayCreate(n,s))throw new Y.ErrnoError(l);if(!e.node_ops.rename)throw new Y.ErrnoError(63);if(Y.isMountpoint(c)||u&&Y.isMountpoint(u))throw new Y.ErrnoError(10);if(n!==e&&(l=Y.nodePermissions(e,"w")))throw new Y.ErrnoError(l);Y.hashRemoveNode(c);try{e.node_ops.rename(c,n,s)}catch(r){throw r}finally{Y.hashAddNode(c)}}},rmdir:function(r){var t=Y.lookupPath(r,{parent:!0}).node,e=J.basename(r),n=Y.lookupNode(t,e),o=Y.mayDelete(t,e,!0);if(o)throw new Y.ErrnoError(o);if(!t.node_ops.rmdir)throw new Y.ErrnoError(63);if(Y.isMountpoint(n))throw new Y.ErrnoError(10);t.node_ops.rmdir(t,e),Y.destroyNode(n)},readdir:function(r){var t=Y.lookupPath(r,{follow:!0}).node;if(!t.node_ops.readdir)throw new Y.ErrnoError(54);return t.node_ops.readdir(t)},unlink:function(r){var t=Y.lookupPath(r,{parent:!0}).node,e=J.basename(r),n=Y.lookupNode(t,e),o=Y.mayDelete(t,e,!1);if(o)throw new Y.ErrnoError(o);if(!t.node_ops.unlink)throw new Y.ErrnoError(63);if(Y.isMountpoint(n))throw new Y.ErrnoError(10);t.node_ops.unlink(t,e),Y.destroyNode(n)},readlink:function(r){var t=Y.lookupPath(r).node;if(!t)throw new Y.ErrnoError(44);if(!t.node_ops.readlink)throw new Y.ErrnoError(28);return V.resolve(Y.getPath(t.parent),t.node_ops.readlink(t))},stat:function(r,t){var e=Y.lookupPath(r,{follow:!t}).node;if(!e)throw new Y.ErrnoError(44);if(!e.node_ops.getattr)throw new Y.ErrnoError(63);return e.node_ops.getattr(e)},lstat:function(r){return Y.stat(r,!0)},chmod:function(r,t,e){var n;if(!(n="string"==typeof r?Y.lookupPath(r,{follow:!e}).node:r).node_ops.setattr)throw new Y.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&t|-4096&n.mode,timestamp:Date.now()})},lchmod:function(r,t){Y.chmod(r,t,!0)},fchmod:function(r,t){var e=Y.getStream(r);if(!e)throw new Y.ErrnoError(8);Y.chmod(e.node,t)},chown:function(r,t,e,n){var o;if(!(o="string"==typeof r?Y.lookupPath(r,{follow:!n}).node:r).node_ops.setattr)throw new Y.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:function(r,t,e){Y.chown(r,t,e,!0)},fchown:function(r,t,e){var n=Y.getStream(r);if(!n)throw new Y.ErrnoError(8);Y.chown(n.node,t,e)},truncate:function(r,t){if(t<0)throw new Y.ErrnoError(28);var e;if(!(e="string"==typeof r?Y.lookupPath(r,{follow:!0}).node:r).node_ops.setattr)throw new Y.ErrnoError(63);if(Y.isDir(e.mode))throw new Y.ErrnoError(31);if(!Y.isFile(e.mode))throw new Y.ErrnoError(28);var n=Y.nodePermissions(e,"w");if(n)throw new Y.ErrnoError(n);e.node_ops.setattr(e,{size:t,timestamp:Date.now()})},ftruncate:function(r,t){var e=Y.getStream(r);if(!e)throw new Y.ErrnoError(8);if(0==(2097155&e.flags))throw new Y.ErrnoError(28);Y.truncate(e.node,t)},utime:function(r,t,e){var n=Y.lookupPath(r,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(t,e)})},open:function(r,t,e,n,i){if(""===r)throw new Y.ErrnoError(44);var a;if(e=void 0===e?438:e,e=64&(t="string"==typeof t?Y.modeStringToFlags(t):t)?4095&e|32768:0,"object"==typeof r)a=r;else{r=J.normalize(r);try{a=Y.lookupPath(r,{follow:!(131072&t)}).node}catch(r){}}var s=!1;if(64&t)if(a){if(128&t)throw new Y.ErrnoError(20)}else a=Y.mknod(r,e,0),s=!0;if(!a)throw new Y.ErrnoError(44);if(Y.isChrdev(a.mode)&&(t&=-513),65536&t&&!Y.isDir(a.mode))throw new Y.ErrnoError(54);if(!s){var u=Y.mayOpen(a,t);if(u)throw new Y.ErrnoError(u)}512&t&&Y.truncate(a,0),t&=-131713;var c=Y.createStream({node:a,path:Y.getPath(a),id:a.id,flags:t,mode:a.mode,seekable:!0,position:0,stream_ops:a.stream_ops,node_ops:a.node_ops,ungotten:[],error:!1},n,i);return c.stream_ops.open&&c.stream_ops.open(c),!o.logReadFiles||1&t||(Y.readFiles||(Y.readFiles={}),r in Y.readFiles||(Y.readFiles[r]=1)),c},close:function(r){if(Y.isClosed(r))throw new Y.ErrnoError(8);r.getdents&&(r.getdents=null);try{r.stream_ops.close&&r.stream_ops.close(r)}catch(r){throw r}finally{Y.closeStream(r.fd)}r.fd=null},isClosed:function(r){return null===r.fd},llseek:function(r,t,e){if(Y.isClosed(r))throw new Y.ErrnoError(8);if(!r.seekable||!r.stream_ops.llseek)throw new Y.ErrnoError(70);if(0!=e&&1!=e&&2!=e)throw new Y.ErrnoError(28);return r.position=r.stream_ops.llseek(r,t,e),r.ungotten=[],r.position},read:function(r,t,e,n,o){if(n<0||o<0)throw new Y.ErrnoError(28);if(Y.isClosed(r))throw new Y.ErrnoError(8);if(1==(2097155&r.flags))throw new Y.ErrnoError(8);if(Y.isDir(r.node.mode))throw new Y.ErrnoError(31);if(!r.stream_ops.read)throw new Y.ErrnoError(28);var i=void 0!==o;if(i){if(!r.seekable)throw new Y.ErrnoError(70)}else o=r.position;var a=r.stream_ops.read(r,t,e,n,o);return i||(r.position+=a),a},write:function(r,t,e,n,o,i){if(n<0||o<0)throw new Y.ErrnoError(28);if(Y.isClosed(r))throw new Y.ErrnoError(8);if(0==(2097155&r.flags))throw new Y.ErrnoError(8);if(Y.isDir(r.node.mode))throw new Y.ErrnoError(31);if(!r.stream_ops.write)throw new Y.ErrnoError(28);r.seekable&&1024&r.flags&&Y.llseek(r,0,2);var a=void 0!==o;if(a){if(!r.seekable)throw new Y.ErrnoError(70)}else o=r.position;var s=r.stream_ops.write(r,t,e,n,o,i);return a||(r.position+=s),s},allocate:function(r,t,e){if(Y.isClosed(r))throw new Y.ErrnoError(8);if(t<0||e<=0)throw new Y.ErrnoError(28);if(0==(2097155&r.flags))throw new Y.ErrnoError(8);if(!Y.isFile(r.node.mode)&&!Y.isDir(r.node.mode))throw new Y.ErrnoError(43);if(!r.stream_ops.allocate)throw new Y.ErrnoError(138);r.stream_ops.allocate(r,t,e)},mmap:function(r,t,e,n,o,i){if(0!=(2&o)&&0==(2&i)&&2!=(2097155&r.flags))throw new Y.ErrnoError(2);if(1==(2097155&r.flags))throw new Y.ErrnoError(2);if(!r.stream_ops.mmap)throw new Y.ErrnoError(43);return r.stream_ops.mmap(r,t,e,n,o,i)},msync:function(r,t,e,n,o){return r&&r.stream_ops.msync?r.stream_ops.msync(r,t,e,n,o):0},munmap:function(r){return 0},ioctl:function(r,t,e){if(!r.stream_ops.ioctl)throw new Y.ErrnoError(59);return r.stream_ops.ioctl(r,t,e)},readFile:function(r,t){if((t=t||{}).flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var e,n=Y.open(r,t.flags),o=Y.stat(r).size,i=new Uint8Array(o);return Y.read(n,i,0,o,0),"utf8"===t.encoding?e=D(i,0):"binary"===t.encoding&&(e=i),Y.close(n),e},writeFile:function(r,t,e){(e=e||{}).flags=e.flags||577;var n=Y.open(r,e.flags,e.mode);if("string"==typeof t){var o=new Uint8Array(A(t)+1),i=P(t,o,0,o.length);Y.write(n,o,0,i,void 0,e.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Y.write(n,t,0,t.byteLength,void 0,e.canOwn)}Y.close(n)},cwd:function(){return Y.currentPath},chdir:function(r){var t=Y.lookupPath(r,{follow:!0});if(null===t.node)throw new Y.ErrnoError(44);if(!Y.isDir(t.node.mode))throw new Y.ErrnoError(54);var e=Y.nodePermissions(t.node,"x");if(e)throw new Y.ErrnoError(e);Y.currentPath=t.path},createDefaultDirectories:function(){Y.mkdir("/tmp"),Y.mkdir("/home"),Y.mkdir("/home/web_user")},createDefaultDevices:function(){Y.mkdir("/dev"),Y.registerDevice(Y.makedev(1,3),{read:function(){return 0},write:function(r,t,e,n,o){return n}}),Y.mkdev("/dev/null",Y.makedev(1,3)),X.register(Y.makedev(5,0),X.default_tty_ops),X.register(Y.makedev(6,0),X.default_tty1_ops),Y.mkdev("/dev/tty",Y.makedev(5,0)),Y.mkdev("/dev/tty1",Y.makedev(6,0));var r=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var r=new Uint8Array(1);return function(){return crypto.getRandomValues(r),r[0]}}return function(){I("randomDevice")}}();Y.createDevice("/dev","random",r),Y.createDevice("/dev","urandom",r),Y.mkdir("/dev/shm"),Y.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){Y.mkdir("/proc");var r=Y.mkdir("/proc/self");Y.mkdir("/proc/self/fd"),Y.mount({mount:function(){var t=Y.createNode(r,"fd",16895,73);return t.node_ops={lookup:function(r,t){var e=+t,n=Y.getStream(e);if(!n)throw new Y.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return n.path}}};return o.parent=o,o}},t}},{},"/proc/self/fd")},createStandardStreams:function(){o.stdin?Y.createDevice("/dev","stdin",o.stdin):Y.symlink("/dev/tty","/dev/stdin"),o.stdout?Y.createDevice("/dev","stdout",null,o.stdout):Y.symlink("/dev/tty","/dev/stdout"),o.stderr?Y.createDevice("/dev","stderr",null,o.stderr):Y.symlink("/dev/tty1","/dev/stderr"),Y.open("/dev/stdin",0),Y.open("/dev/stdout",1),Y.open("/dev/stderr",1)},ensureErrnoError:function(){Y.ErrnoError||(Y.ErrnoError=function(r,t){this.node=t,this.setErrno=function(r){this.errno=r},this.setErrno(r),this.message="FS error"},Y.ErrnoError.prototype=new Error,Y.ErrnoError.prototype.constructor=Y.ErrnoError,[44].forEach((function(r){Y.genericErrors[r]=new Y.ErrnoError(r),Y.genericErrors[r].stack="<generic error, no stack>"})))},staticInit:function(){Y.ensureErrnoError(),Y.nameTable=new Array(4096),Y.mount(K,{},"/"),Y.createDefaultDirectories(),Y.createDefaultDevices(),Y.createSpecialDirectories(),Y.filesystems={MEMFS:K}},init:function(r,t,e){Y.init.initialized=!0,Y.ensureErrnoError(),o.stdin=r||o.stdin,o.stdout=t||o.stdout,o.stderr=e||o.stderr,Y.createStandardStreams()},quit:function(){Y.init.initialized=!1;var r=o._fflush;r&&r(0);for(var t=0;t<Y.streams.length;t++){var e=Y.streams[t];e&&Y.close(e)}},getMode:function(r,t){var e=0;return r&&(e|=365),t&&(e|=146),e},findObject:function(r,t){var e=Y.analyzePath(r,t);return e.exists?e.object:null},analyzePath:function(r,t){try{r=(n=Y.lookupPath(r,{follow:!t})).path}catch(r){}var e={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=Y.lookupPath(r,{parent:!0});e.parentExists=!0,e.parentPath=n.path,e.parentObject=n.node,e.name=J.basename(r),n=Y.lookupPath(r,{follow:!t}),e.exists=!0,e.path=n.path,e.object=n.node,e.name=n.node.name,e.isRoot="/"===n.path}catch(r){e.error=r.errno}return e},createPath:function(r,t,e,n){r="string"==typeof r?r:Y.getPath(r);for(var o=t.split("/").reverse();o.length;){var i=o.pop();if(i){var a=J.join2(r,i);try{Y.mkdir(a)}catch(r){}r=a}}return a},createFile:function(r,t,e,n,o){var i=J.join2("string"==typeof r?r:Y.getPath(r),t),a=Y.getMode(n,o);return Y.create(i,a)},createDataFile:function(r,t,e,n,o,i){var a=t?J.join2("string"==typeof r?r:Y.getPath(r),t):r,s=Y.getMode(n,o),u=Y.create(a,s);if(e){if("string"==typeof e){for(var c=new Array(e.length),f=0,d=e.length;f<d;++f)c[f]=e.charCodeAt(f);e=c}Y.chmod(u,146|s);var l=Y.open(u,577);Y.write(l,e,0,e.length,0,i),Y.close(l),Y.chmod(u,s)}return u},createDevice:function(r,t,e,n){var o=J.join2("string"==typeof r?r:Y.getPath(r),t),i=Y.getMode(!!e,!!n);Y.createDevice.major||(Y.createDevice.major=64);var a=Y.makedev(Y.createDevice.major++,0);return Y.registerDevice(a,{open:function(r){r.seekable=!1},close:function(r){n&&n.buffer&&n.buffer.length&&n(10)},read:function(r,t,n,o,i){for(var a=0,s=0;s<o;s++){var u;try{u=e()}catch(r){throw new Y.ErrnoError(29)}if(void 0===u&&0===a)throw new Y.ErrnoError(6);if(null==u)break;a++,t[n+s]=u}return a&&(r.node.timestamp=Date.now()),a},write:function(r,t,e,o,i){for(var a=0;a<o;a++)try{n(t[e+a])}catch(r){throw new Y.ErrnoError(29)}return o&&(r.node.timestamp=Date.now()),a}}),Y.mkdev(o,i,a)},forceLoadFile:function(r){if(r.isDevice||r.isFolder||r.link||r.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!s)throw new Error("Cannot load without read() or XMLHttpRequest.");try{r.contents=ir(s(r.url),!0),r.usedBytes=r.contents.length}catch(r){throw new Y.ErrnoError(29)}},createLazyFile:function(r,t,e,n,o){function i(){this.lengthKnown=!1,this.chunks=[]}if(i.prototype.get=function(r){if(!(r>this.length-1||r<0)){var t=r%this.chunkSize,e=r/this.chunkSize|0;return this.getter(e)[t]}},i.prototype.setDataGetter=function(r){this.getter=r},i.prototype.cacheLength=function(){var r=new XMLHttpRequest;if(r.open("HEAD",e,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw new Error("Couldn't load "+e+". Status: "+r.status);var t,n=Number(r.getResponseHeader("Content-length")),o=(t=r.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=r.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(r){var t=r*a,o=(r+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[r]&&(s.chunks[r]=function(r,t){if(r>t)throw new Error("invalid range ("+r+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",e,!1),n!==a&&o.setRequestHeader("Range","bytes="+r+"-"+t),"undefined"!=typeof Uint8Array&&(o.responseType="arraybuffer"),o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+e+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):ir(o.responseText||"",!0)}(t,o)),void 0===s.chunks[r])throw new Error("doXHR failed!");return s.chunks[r]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,p("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a={isDevice:!1,url:e},s=Y.createFile(r,t,a,n,o);a.contents?s.contents=a.contents:a.url&&(s.contents=null,s.url=a.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};return Object.keys(s.stream_ops).forEach((function(r){var t=s.stream_ops[r];u[r]=function(){return Y.forceLoadFile(s),t.apply(null,arguments)}})),u.read=function(r,t,e,n,o){Y.forceLoadFile(s);var i=r.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var u=0;u<a;u++)t[e+u]=i[o+u];else for(u=0;u<a;u++)t[e+u]=i.get(o+u);return a},s.stream_ops=u,s},createPreloadedFile:function(r,t,e,n,i,a,s,c,f,d){Browser.init();var l=t?V.resolve(J.join2(r,t)):r;function p(e){function u(e){d&&d(),c||Y.createDataFile(r,t,e,n,i,f),a&&a(),L()}var p=!1;o.preloadPlugins.forEach((function(r){p||r.canHandle(l)&&(r.handle(e,l,u,(function(){s&&s(),L()})),p=!0)})),p||u(e)}O(),"string"==typeof e?function(r,t,e,n){var o=n?"":"al "+r;u(r,(function(e){v(e,'Loading data file "'+r+'" failed (no arrayBuffer).'),t(new Uint8Array(e)),o&&L()}),(function(t){if(!e)throw'Loading data file "'+r+'" failed.';e()})),o&&O()}(e,(function(r){p(r)}),s):p(e)},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(r,t,e){t=t||function(){},e=e||function(){};var n=Y.indexedDB();try{var o=n.open(Y.DB_NAME(),Y.DB_VERSION)}catch(r){return e(r)}o.onupgradeneeded=function(){p("creating db"),o.result.createObjectStore(Y.DB_STORE_NAME)},o.onsuccess=function(){var n=o.result.transaction([Y.DB_STORE_NAME],"readwrite"),i=n.objectStore(Y.DB_STORE_NAME),a=0,s=0,u=r.length;function c(){0==s?t():e()}r.forEach((function(r){var t=i.put(Y.analyzePath(r).object.contents,r);t.onsuccess=function(){++a+s==u&&c()},t.onerror=function(){s++,a+s==u&&c()}})),n.onerror=e},o.onerror=e},loadFilesFromDB:function(r,t,e){t=t||function(){},e=e||function(){};var n=Y.indexedDB();try{var o=n.open(Y.DB_NAME(),Y.DB_VERSION)}catch(r){return e(r)}o.onupgradeneeded=e,o.onsuccess=function(){var n=o.result;try{var i=n.transaction([Y.DB_STORE_NAME],"readonly")}catch(r){return void e(r)}var a=i.objectStore(Y.DB_STORE_NAME),s=0,u=0,c=r.length;function f(){0==u?t():e()}r.forEach((function(r){var t=a.get(r);t.onsuccess=function(){Y.analyzePath(r).exists&&Y.unlink(r),Y.createDataFile(J.dirname(r),J.basename(r),t.result,!0,!0,!0),++s+u==c&&f()},t.onerror=function(){u++,s+u==c&&f()}})),i.onerror=e},o.onerror=e}},$={mappings:{},DEFAULT_POLLMASK:5,calculateAt:function(r,t,e){if("/"===t[0])return t;var n;if(-100===r)n=Y.cwd();else{var o=Y.getStream(r);if(!o)throw new Y.ErrnoError(8);n=o.path}if(0==t.length){if(!e)throw new Y.ErrnoError(44);return n}return J.join2(n,t)},doStat:function(r,t,e){try{var n=r(t)}catch(r){if(r&&r.node&&J.normalize(t)!==J.normalize(Y.getPath(r.node)))return-54;throw r}return E[e>>2]=n.dev,E[e+4>>2]=0,E[e+8>>2]=n.ino,E[e+12>>2]=n.mode,E[e+16>>2]=n.nlink,E[e+20>>2]=n.uid,E[e+24>>2]=n.gid,E[e+28>>2]=n.rdev,E[e+32>>2]=0,C=[n.size>>>0,(R=n.size,+Math.abs(R)>=1?R>0?(0|Math.min(+Math.floor(R/4294967296),4294967295))>>>0:~~+Math.ceil((R-+(~~R>>>0))/4294967296)>>>0:0)],E[e+40>>2]=C[0],E[e+44>>2]=C[1],E[e+48>>2]=4096,E[e+52>>2]=n.blocks,E[e+56>>2]=n.atime.getTime()/1e3|0,E[e+60>>2]=0,E[e+64>>2]=n.mtime.getTime()/1e3|0,E[e+68>>2]=0,E[e+72>>2]=n.ctime.getTime()/1e3|0,E[e+76>>2]=0,C=[n.ino>>>0,(R=n.ino,+Math.abs(R)>=1?R>0?(0|Math.min(+Math.floor(R/4294967296),4294967295))>>>0:~~+Math.ceil((R-+(~~R>>>0))/4294967296)>>>0:0)],E[e+80>>2]=C[0],E[e+84>>2]=C[1],0},doMsync:function(r,t,e,n,o){var i=y.slice(r,r+e);Y.msync(t,i,o,e,n)},doMkdir:function(r,t){return"/"===(r=J.normalize(r))[r.length-1]&&(r=r.substr(0,r.length-1)),Y.mkdir(r,t,0),0},doMknod:function(r,t,e){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return Y.mknod(r,t,e),0},doReadlink:function(r,t,e){if(e<=0)return-28;var n=Y.readlink(r),o=Math.min(e,A(n)),i=_[t+o];return P(n,y,t,e+1),_[t+o]=i,o},doAccess:function(r,t){if(-8&t)return-28;var e=Y.lookupPath(r,{follow:!0}).node;if(!e)return-44;var n="";return 4&t&&(n+="r"),2&t&&(n+="w"),1&t&&(n+="x"),n&&Y.nodePermissions(e,n)?-2:0},doDup:function(r,t,e){var n=Y.getStream(e);return n&&Y.close(n),Y.open(r,t,0,e,e).fd},doReadv:function(r,t,e,n){for(var o=0,i=0;i<e;i++){var a=E[t+8*i>>2],s=E[t+(8*i+4)>>2],u=Y.read(r,_,a,s,n);if(u<0)return-1;if(o+=u,u<s)break}return o},doWritev:function(r,t,e,n){for(var o=0,i=0;i<e;i++){var a=E[t+8*i>>2],s=E[t+(8*i+4)>>2],u=Y.write(r,_,a,s,n);if(u<0)return-1;o+=u}return o},varargs:void 0,get:function(){return $.varargs+=4,E[$.varargs-4>>2]},getStr:function(r){return S(r)},getStreamFromFD:function(r){var t=Y.getStream(r);if(!t)throw new Y.ErrnoError(8);return t},get64:function(r,t){return r}},Q=[];function Z(r){try{return l.grow(r-w.byteLength+65535>>>16),F(l.buffer),1}catch(r){}}var rr={};function tr(){if(!tr.strings){var r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in rr)void 0===rr[t]?delete r[t]:r[t]=rr[t];var e=[];for(var t in r)e.push(t+"="+r[t]);tr.strings=e}return tr.strings}var er=function(r,t,e,n){r||(r=this),this.parent=r,this.mount=r.mount,this.mounted=null,this.id=Y.nextInode++,this.name=t,this.mode=e,this.node_ops={},this.stream_ops={},this.rdev=n},nr=365,or=146;function ir(r,t,e){var n=e>0?e:A(r)+1,o=new Array(n),i=P(r,o,0,o.length);return t&&(o.length=i),o}Object.defineProperties(er.prototype,{read:{get:function(){return(this.mode&nr)===nr},set:function(r){r?this.mode|=nr:this.mode&=-366}},write:{get:function(){return(this.mode&or)===or},set:function(r){r?this.mode|=or:this.mode&=-147}},isFolder:{get:function(){return Y.isDir(this.mode)}},isDevice:{get:function(){return Y.isChrdev(this.mode)}}}),Y.FSNode=er,Y.staticInit();var ar={h:function(r,t,e){$.varargs=e;try{var n=$.getStr(r),o=e?$.get():0;return Y.open(n,t,o).fd}catch(r){if(void 0===Y||!(r instanceof Y.ErrnoError))throw r;return-r.errno}},b:function(){I("")},a:function(r,t,e){var n=function(r,t){var e;for(Q.length=0,t>>=2;e=y[r++];){var n=e<105;n&&1&t&&t++,Q.push(n?g[t++>>1]:E[t]),++t}return Q}(t,e);return G[r].apply(null,n)},k:function(r,t,e){y.copyWithin(r,t,t+e)},e:function(r){var t,e,n=y.length,o=2147483648;if((r>>>=0)>o)return!1;for(var i=1;i<=4;i*=2){var a=n*(1+.2/i);if(a=Math.min(a,r+100663296),Z(Math.min(o,((t=Math.max(r,a))%(e=65536)>0&&(t+=e-t%e),t))))return!0}return!1},f:function(r,t){var e=0;return tr().forEach((function(n,o){var i=t+e;E[r+4*o>>2]=i,function(r,t,e){for(var n=0;n<r.length;++n)_[t++>>0]=r.charCodeAt(n);e||(_[t>>0]=0)}(n,i),e+=n.length+1})),0},g:function(r,t){var e=tr();E[r>>2]=e.length;var n=0;return e.forEach((function(r){n+=r.length+1})),E[t>>2]=n,0},d:function(r){try{var t=$.getStreamFromFD(r);return Y.close(t),0}catch(r){if(void 0===Y||!(r instanceof Y.ErrnoError))throw r;return r.errno}},i:function(r,t,e,n){try{var o=$.getStreamFromFD(r),i=$.doReadv(o,t,e);return E[n>>2]=i,0}catch(r){if(void 0===Y||!(r instanceof Y.ErrnoError))throw r;return r.errno}},j:function(r,t,e,n,o){try{var i=$.getStreamFromFD(r),a=4294967296*e+(t>>>0),s=9007199254740992;return a<=-s||a>=s?-61:(Y.llseek(i,a,n),C=[i.position>>>0,(R=i.position,+Math.abs(R)>=1?R>0?(0|Math.min(+Math.floor(R/4294967296),4294967295))>>>0:~~+Math.ceil((R-+(~~R>>>0))/4294967296)>>>0:0)],E[o>>2]=C[0],E[o+4>>2]=C[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0)}catch(r){if(void 0===Y||!(r instanceof Y.ErrnoError))throw r;return r.errno}},c:function(r,t,e,n){try{var o=$.getStreamFromFD(r),i=$.doWritev(o,t,e);return E[n>>2]=i,0}catch(r){if(void 0===Y||!(r instanceof Y.ErrnoError))throw r;return r.errno}},l:function(r){var t=Date.now();return E[r>>2]=t/1e3|0,E[r+4>>2]=t%1e3*1e3|0,0}};!function(){var r={a:ar};function t(r,t){var e,n=r.exports;o.asm=n,F((l=o.asm.m).buffer),b=o.asm.G,e=o.asm.n,j.unshift(e),L()}function e(r){t(r.instance)}function i(t){return(d||"function"!=typeof fetch?Promise.resolve().then((function(){return U(x)})):fetch(x,{credentials:"same-origin"}).then((function(r){if(!r.ok)throw"failed to load wasm binary file at '"+x+"'";return r.arrayBuffer()})).catch((function(){return U(x)}))).then((function(t){return WebAssembly.instantiate(t,r)})).then((function(r){return r})).then(t,(function(r){m("failed to asynchronously prepare wasm: "+r),I(r)}))}if(O(),o.instantiateWasm)try{return o.instantiateWasm(r,t)}catch(r){return m("Module.instantiateWasm callback failed with error: "+r),!1}(d||"function"!=typeof WebAssembly.instantiateStreaming||H(x)||"function"!=typeof fetch?i(e):fetch(x,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,r).then(e,(function(r){return m("wasm streaming compile failed: "+r),m("falling back to ArrayBuffer instantiation"),i(e)}))}))).catch(n)}(),o.___wasm_call_ctors=function(){return(o.___wasm_call_ctors=o.asm.n).apply(null,arguments)};var sr,ur=o._emscripten_bind_CExpat_CExpat_0=function(){return(ur=o._emscripten_bind_CExpat_CExpat_0=o.asm.o).apply(null,arguments)},cr=o._emscripten_bind_CExpat_version_0=function(){return(cr=o._emscripten_bind_CExpat_version_0=o.asm.p).apply(null,arguments)},fr=o._emscripten_bind_CExpat_create_0=function(){return(fr=o._emscripten_bind_CExpat_create_0=o.asm.q).apply(null,arguments)},dr=o._emscripten_bind_CExpat_destroy_0=function(){return(dr=o._emscripten_bind_CExpat_destroy_0=o.asm.r).apply(null,arguments)},lr=o._emscripten_bind_CExpat_parse_1=function(){return(lr=o._emscripten_bind_CExpat_parse_1=o.asm.s).apply(null,arguments)},pr=o._emscripten_bind_CExpat_tag_0=function(){return(pr=o._emscripten_bind_CExpat_tag_0=o.asm.t).apply(null,arguments)},mr=o._emscripten_bind_CExpat_attrs_0=function(){return(mr=o._emscripten_bind_CExpat_attrs_0=o.asm.u).apply(null,arguments)},hr=o._emscripten_bind_CExpat_content_0=function(){return(hr=o._emscripten_bind_CExpat_content_0=o.asm.v).apply(null,arguments)},vr=o._emscripten_bind_CExpat_startElement_0=function(){return(vr=o._emscripten_bind_CExpat_startElement_0=o.asm.w).apply(null,arguments)},wr=o._emscripten_bind_CExpat_endElement_0=function(){return(wr=o._emscripten_bind_CExpat_endElement_0=o.asm.x).apply(null,arguments)},_r=o._emscripten_bind_CExpat_characterData_0=function(){return(_r=o._emscripten_bind_CExpat_characterData_0=o.asm.y).apply(null,arguments)},yr=o._emscripten_bind_CExpat___destroy___0=function(){return(yr=o._emscripten_bind_CExpat___destroy___0=o.asm.z).apply(null,arguments)},Er=o._emscripten_bind_VoidPtr___destroy___0=function(){return(Er=o._emscripten_bind_VoidPtr___destroy___0=o.asm.A).apply(null,arguments)},gr=o._emscripten_bind_CExpatJS_CExpatJS_0=function(){return(gr=o._emscripten_bind_CExpatJS_CExpatJS_0=o.asm.B).apply(null,arguments)},br=o._emscripten_bind_CExpatJS_startElement_0=function(){return(br=o._emscripten_bind_CExpatJS_startElement_0=o.asm.C).apply(null,arguments)},kr=o._emscripten_bind_CExpatJS_endElement_0=function(){return(kr=o._emscripten_bind_CExpatJS_endElement_0=o.asm.D).apply(null,arguments)},Dr=o._emscripten_bind_CExpatJS_characterData_0=function(){return(Dr=o._emscripten_bind_CExpatJS_characterData_0=o.asm.E).apply(null,arguments)},Sr=o._emscripten_bind_CExpatJS___destroy___0=function(){return(Sr=o._emscripten_bind_CExpatJS___destroy___0=o.asm.F).apply(null,arguments)};function Pr(r){function e(){sr||(sr=!0,o.calledRun=!0,h||(o.noFSInit||Y.init.initialized||Y.init(),Y.ignorePermissions=!1,q(j),t(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)r=o.postRun.shift(),B.unshift(r);var r;q(B)}()))}T>0||(function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)r=o.preRun.shift(),z.unshift(r);var r;q(z)}(),T>0||(o.setStatus?(o.setStatus("Running..."),setTimeout((function(){setTimeout((function(){o.setStatus("")}),1),e()}),1)):e()))}if(o._malloc=function(){return(o._malloc=o.asm.H).apply(null,arguments)},N=function r(){sr||Pr(),sr||(N=r)},o.run=Pr,o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();function Ar(){}function Fr(r){return(r||Ar).__cache__}function xr(r,t){var e=Fr(t),n=e[r];return n||((n=Object.create((t||Ar).prototype)).ptr=r,e[r]=n)}Pr(),Ar.prototype=Object.create(Ar.prototype),Ar.prototype.constructor=Ar,Ar.prototype.__class__=Ar,Ar.__cache__={},o.WrapperObject=Ar,o.getCache=Fr,o.wrapPointer=xr,o.castObject=function(r,t){return xr(r.ptr,t)},o.NULL=xr(0),o.destroy=function(r){if(!r.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";r.__destroy__(),delete Fr(r.__class__)[r.ptr]},o.compare=function(r,t){return r.ptr===t.ptr},o.getPointer=function(r){return r.ptr},o.getClass=function(r){return r.__class__};var Mr={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(Mr.needed){for(var r=0;r<Mr.temps.length;r++)o._free(Mr.temps[r]);Mr.temps.length=0,o._free(Mr.buffer),Mr.buffer=0,Mr.size+=Mr.needed,Mr.needed=0}Mr.buffer||(Mr.size+=128,Mr.buffer=o._malloc(Mr.size),v(Mr.buffer)),Mr.pos=0},alloc:function(r,t){v(Mr.buffer);var e,n=t.BYTES_PER_ELEMENT,i=r.length*n;return i=i+7&-8,Mr.pos+i>=Mr.size?(v(i>0),Mr.needed+=i,e=o._malloc(i),Mr.temps.push(e)):(e=Mr.buffer+Mr.pos,Mr.pos+=i),e},copy:function(r,t,e){switch(e>>>=0,t.BYTES_PER_ELEMENT){case 2:e>>>=1;break;case 4:e>>>=2;break;case 8:e>>>=3}for(var n=0;n<r.length;n++)t[e+n]=r[n]}};function Rr(){this.ptr=ur(),Fr(Rr)[this.ptr]=this}function Cr(){throw"cannot construct a VoidPtr, no constructor in IDL"}function zr(){this.ptr=gr(),Fr(zr)[this.ptr]=this}return Rr.prototype=Object.create(Ar.prototype),Rr.prototype.constructor=Rr,Rr.prototype.__class__=Rr,Rr.__cache__={},o.CExpat=Rr,Rr.prototype.version=Rr.prototype.version=function(){var r=this.ptr;return S(cr(r))},Rr.prototype.create=Rr.prototype.create=function(){var r=this.ptr;return!!fr(r)},Rr.prototype.destroy=Rr.prototype.destroy=function(){var r=this.ptr;dr(r)},Rr.prototype.parse=Rr.prototype.parse=function(r){var t=this.ptr;return Mr.prepare(),r=r&&"object"==typeof r?r.ptr:function(r){if("string"==typeof r){var t=ir(r),e=Mr.alloc(t,_);return Mr.copy(t,_,e),e}return r}(r),!!lr(t,r)},Rr.prototype.tag=Rr.prototype.tag=function(){var r=this.ptr;return S(pr(r))},Rr.prototype.attrs=Rr.prototype.attrs=function(){var r=this.ptr;return S(mr(r))},Rr.prototype.content=Rr.prototype.content=function(){var r=this.ptr;return S(hr(r))},Rr.prototype.startElement=Rr.prototype.startElement=function(){var r=this.ptr;vr(r)},Rr.prototype.endElement=Rr.prototype.endElement=function(){var r=this.ptr;wr(r)},Rr.prototype.characterData=Rr.prototype.characterData=function(){var r=this.ptr;_r(r)},Rr.prototype.__destroy__=Rr.prototype.__destroy__=function(){var r=this.ptr;yr(r)},Cr.prototype=Object.create(Ar.prototype),Cr.prototype.constructor=Cr,Cr.prototype.__class__=Cr,Cr.__cache__={},o.VoidPtr=Cr,Cr.prototype.__destroy__=Cr.prototype.__destroy__=function(){var r=this.ptr;Er(r)},zr.prototype=Object.create(Rr.prototype),zr.prototype.constructor=zr,zr.prototype.__class__=zr,zr.__cache__={},o.CExpatJS=zr,zr.prototype.startElement=zr.prototype.startElement=function(){var r=this.ptr;br(r)},zr.prototype.endElement=zr.prototype.endElement=function(){var r=this.ptr;kr(r)},zr.prototype.characterData=zr.prototype.characterData=function(){var r=this.ptr;Dr(r)},zr.prototype.__destroy__=zr.prototype.__destroy__=function(){var r=this.ptr;Sr(r)},r.ready});r.exports=n}(e);var n=e.exports,o=Object.freeze(t({__proto__:null,default:n},[e.exports]));var i=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}().__hpcc_wasmFolder||void 0;function a(r){if(!arguments.length)return i;var t=i;return i=r,t}function s(r,t,e){var n=r.default||r;return n.__hpcc_promise||(n.__hpcc_promise=n({wasmBinary:e,locateFile:function(r,e){return"".concat(function(r,t){for(;r.charAt(r.length-1)===t;)r=r.substring(0,r.length-1);return r}(t||a()||e||".","/"),"/").concat(function(r,t){for(;r.charAt(0)===t;)r=r.substring(1);return r}(r,"/"))}})),n.__hpcc_promise}var u=function(){function r(r,t){this.tag=r,this.attrs=t,this._content=""}return Object.defineProperty(r.prototype,"content",{get:function(){return this._content},enumerable:!1,configurable:!0}),r.prototype.appendContent=function(r){this._content+=r},r}(),c=function(){function r(){this._stack=[]}return r.prototype.parse=function(r,t,e){return f(r,this,t,e)},r.prototype.top=function(){return this._stack[this._stack.length-1]},r.prototype.startElement=function(r,t){var e=new u(r,t);return this._stack.push(e),e},r.prototype.endElement=function(r){return this._stack.pop()},r.prototype.characterData=function(r){this.top().appendContent(r)},r}();function f(r,t,e,n){return s(o,e,n).then((function(e){var n=new e.CExpatJS;n.startElement=function(){t.startElement(this.tag(),function(r){var t={},e=r,n="".concat(String.fromCharCode(1)),o="".concat(n).concat(n);return e.split(o).filter((function(r){return!!r})).forEach((function(r){var e=r.split(n);t[e[0]]=e[1]})),t}(this.attrs()))},n.endElement=function(){t.endElement(this.tag())},n.characterData=function(){t.characterData(this.content())},n.create();var o=n.parse(r);return n.destroy(),e.destroy(n),o}))}var d={exports:{}};!function(r,t){var e,n=(e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,function(r){var t,n,o=void 0!==(r=r||{})?r:{};o.ready=new Promise((function(r,e){t=r,n=e}));var i,a={};for(i in o)o.hasOwnProperty(i)&&(a[i]=o[i]);var s,u,c="./this.program",f=function(r,t){throw t},d="";"undefined"!=typeof document&&document.currentScript&&(d=document.currentScript.src),e&&(d=e),d=0!==d.indexOf("blob:")?d.substr(0,d.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=function(r){var t=new XMLHttpRequest;return t.open("GET",r,!1),t.send(null),t.responseText},u=function(r,t,e){var n=new XMLHttpRequest;n.open("GET",r,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?t(n.response):e()},n.onerror=e,n.send(null)};var l=o.print||console.log.bind(console),p=o.printErr||console.warn.bind(console);for(i in a)a.hasOwnProperty(i)&&(o[i]=a[i]);a=null,o.arguments,o.thisProgram&&(c=o.thisProgram),o.quit&&(f=o.quit);var m,h=0;o.wasmBinary&&(m=o.wasmBinary);var v,w=o.noExitRuntime||!0;"object"!=typeof WebAssembly&&q("no native wasm support detected");var _=!1;function y(r,t){r||q("Assertion failed: "+t)}var E,g,b,k,D,S,P,A="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function F(r,t,e){for(var n=t+e,o=t;r[o]&&!(o>=n);)++o;if(o-t>16&&r.subarray&&A)return A.decode(r.subarray(t,o));for(var i="";t<o;){var a=r[t++];if(128&a){var s=63&r[t++];if(192!=(224&a)){var u=63&r[t++];if((a=224==(240&a)?(15&a)<<12|s<<6|u:(7&a)<<18|s<<12|u<<6|63&r[t++])<65536)i+=String.fromCharCode(a);else{var c=a-65536;i+=String.fromCharCode(55296|c>>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function x(r,t){return r?F(b,r,t):""}function M(r,t,e,n){if(!(n>0))return 0;for(var o=e,i=e+n-1,a=0;a<r.length;++a){var s=r.charCodeAt(a);if(s>=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&r.charCodeAt(++a)),s<=127){if(e>=i)break;t[e++]=s}else if(s<=2047){if(e+1>=i)break;t[e++]=192|s>>6,t[e++]=128|63&s}else if(s<=65535){if(e+2>=i)break;t[e++]=224|s>>12,t[e++]=128|s>>6&63,t[e++]=128|63&s}else{if(e+3>=i)break;t[e++]=240|s>>18,t[e++]=128|s>>12&63,t[e++]=128|s>>6&63,t[e++]=128|63&s}}return t[e]=0,e-o}function R(r){for(var t=0,e=0;e<r.length;++e){var n=r.charCodeAt(e);n>=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&r.charCodeAt(++e)),n<=127?++t:t+=n<=2047?2:n<=65535?3:4}return t}function C(r){E=r,o.HEAP8=g=new Int8Array(r),o.HEAP16=k=new Int16Array(r),o.HEAP32=D=new Int32Array(r),o.HEAPU8=b=new Uint8Array(r),o.HEAPU16=new Uint16Array(r),o.HEAPU32=new Uint32Array(r),o.HEAPF32=new Float32Array(r),o.HEAPF64=S=new Float64Array(r)}o.INITIAL_MEMORY;var z,j,B,T,N=[],O=[],L=[],I=0,H=null;function U(r){I++,o.monitorRunDependencies&&o.monitorRunDependencies(I)}function G(r){if(I--,o.monitorRunDependencies&&o.monitorRunDependencies(I),0==I&&H){var t=H;H=null,t()}}function q(r){o.onAbort&&o.onAbort(r),p(r="Aborted("+r+")"),_=!0,r+=". Build with -s ASSERTIONS=1 for more info.";var t=new WebAssembly.RuntimeError(r);throw n(t),t}function W(r){return r.startsWith("data:application/octet-stream;base64,")}function J(r){try{if(r==z&&m)return new Uint8Array(m);throw"both async and sync fetching of the wasm failed"}catch(r){q(r)}}o.preloadedImages={},o.preloadedAudios={},W(z="graphvizlib.wasm")||(j=z,z=o.locateFile?o.locateFile(j,d):d+j);var V,X={161580:function(r,t){var e=x(r),n=x(t);nr.createPath("/",Q.dirname(e)),nr.writeFile(Q.join("/",e),n)}};function K(r){for(;r.length>0;){var t=r.shift();if("function"!=typeof t){var e=t.func;"number"==typeof e?void 0===t.arg?Y(e)():Y(e)(t.arg):e(void 0===t.arg?null:t.arg)}else t(o)}}function Y(r){return P.get(r)}function $(r){return D[kr()>>2]=r,r}V=function(){return performance.now()};var Q={splitPath:function(r){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(r).slice(1)},normalizeArray:function(r,t){for(var e=0,n=r.length-1;n>=0;n--){var o=r[n];"."===o?r.splice(n,1):".."===o?(r.splice(n,1),e++):e&&(r.splice(n,1),e--)}if(t)for(;e;e--)r.unshift("..");return r},normalize:function(r){var t="/"===r.charAt(0),e="/"===r.substr(-1);return(r=Q.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||t||(r="."),r&&e&&(r+="/"),(t?"/":"")+r},dirname:function(r){var t=Q.splitPath(r),e=t[0],n=t[1];return e||n?(n&&(n=n.substr(0,n.length-1)),e+n):"."},basename:function(r){if("/"===r)return"/";var t=(r=(r=Q.normalize(r)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?r:r.substr(t+1)},extname:function(r){return Q.splitPath(r)[3]},join:function(){var r=Array.prototype.slice.call(arguments,0);return Q.normalize(r.join("/"))},join2:function(r,t){return Q.normalize(r+"/"+t)}},Z={resolve:function(){for(var r="",t=!1,e=arguments.length-1;e>=-1&&!t;e--){var n=e>=0?arguments[e]:nr.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";r=n+"/"+r,t="/"===n.charAt(0)}return(t?"/":"")+(r=Q.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||"."},relative:function(r,t){function e(r){for(var t=0;t<r.length&&""===r[t];t++);for(var e=r.length-1;e>=0&&""===r[e];e--);return t>e?[]:r.slice(t,e-t+1)}r=Z.resolve(r).substr(1),t=Z.resolve(t).substr(1);for(var n=e(r.split("/")),o=e(t.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s<i;s++)if(n[s]!==o[s]){a=s;break}var u=[];for(s=a;s<n.length;s++)u.push("..");return(u=u.concat(o.slice(a))).join("/")}},rr={ttys:[],init:function(){},shutdown:function(){},register:function(r,t){rr.ttys[r]={input:[],output:[],ops:t},nr.registerDevice(r,rr.stream_ops)},stream_ops:{open:function(r){var t=rr.ttys[r.node.rdev];if(!t)throw new nr.ErrnoError(43);r.tty=t,r.seekable=!1},close:function(r){r.tty.ops.flush(r.tty)},flush:function(r){r.tty.ops.flush(r.tty)},read:function(r,t,e,n,o){if(!r.tty||!r.tty.ops.get_char)throw new nr.ErrnoError(60);for(var i=0,a=0;a<n;a++){var s;try{s=r.tty.ops.get_char(r.tty)}catch(r){throw new nr.ErrnoError(29)}if(void 0===s&&0===i)throw new nr.ErrnoError(6);if(null==s)break;i++,t[e+a]=s}return i&&(r.node.timestamp=Date.now()),i},write:function(r,t,e,n,o){if(!r.tty||!r.tty.ops.put_char)throw new nr.ErrnoError(60);try{for(var i=0;i<n;i++)r.tty.ops.put_char(r.tty,t[e+i])}catch(r){throw new nr.ErrnoError(29)}return n&&(r.node.timestamp=Date.now()),i}},default_tty_ops:{get_char:function(r){if(!r.input.length){var t=null;if("undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n"),!t)return null;r.input=lr(t,!0)}return r.input.shift()},put_char:function(r,t){null===t||10===t?(l(F(r.output,0)),r.output=[]):0!=t&&r.output.push(t)},flush:function(r){r.output&&r.output.length>0&&(l(F(r.output,0)),r.output=[])}},default_tty1_ops:{put_char:function(r,t){null===t||10===t?(p(F(r.output,0)),r.output=[]):0!=t&&r.output.push(t)},flush:function(r){r.output&&r.output.length>0&&(p(F(r.output,0)),r.output=[])}}};function tr(r){r=function(r,t){return Math.ceil(r/t)*t}(r,65536);var t=Ar(65536,r);return t?(function(r,t){b.fill(0,r,r+t)}(t,r),t):0}var er={ops_table:null,mount:function(r){return er.createNode(null,"/",16895,0)},createNode:function(r,t,e,n){if(nr.isBlkdev(e)||nr.isFIFO(e))throw new nr.ErrnoError(63);er.ops_table||(er.ops_table={dir:{node:{getattr:er.node_ops.getattr,setattr:er.node_ops.setattr,lookup:er.node_ops.lookup,mknod:er.node_ops.mknod,rename:er.node_ops.rename,unlink:er.node_ops.unlink,rmdir:er.node_ops.rmdir,readdir:er.node_ops.readdir,symlink:er.node_ops.symlink},stream:{llseek:er.stream_ops.llseek}},file:{node:{getattr:er.node_ops.getattr,setattr:er.node_ops.setattr},stream:{llseek:er.stream_ops.llseek,read:er.stream_ops.read,write:er.stream_ops.write,allocate:er.stream_ops.allocate,mmap:er.stream_ops.mmap,msync:er.stream_ops.msync}},link:{node:{getattr:er.node_ops.getattr,setattr:er.node_ops.setattr,readlink:er.node_ops.readlink},stream:{}},chrdev:{node:{getattr:er.node_ops.getattr,setattr:er.node_ops.setattr},stream:nr.chrdev_stream_ops}});var o=nr.createNode(r,t,e,n);return nr.isDir(o.mode)?(o.node_ops=er.ops_table.dir.node,o.stream_ops=er.ops_table.dir.stream,o.contents={}):nr.isFile(o.mode)?(o.node_ops=er.ops_table.file.node,o.stream_ops=er.ops_table.file.stream,o.usedBytes=0,o.contents=null):nr.isLink(o.mode)?(o.node_ops=er.ops_table.link.node,o.stream_ops=er.ops_table.link.stream):nr.isChrdev(o.mode)&&(o.node_ops=er.ops_table.chrdev.node,o.stream_ops=er.ops_table.chrdev.stream),o.timestamp=Date.now(),r&&(r.contents[t]=o,r.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(r){return r.contents?r.contents.subarray?r.contents.subarray(0,r.usedBytes):new Uint8Array(r.contents):new Uint8Array(0)},expandFileStorage:function(r,t){var e=r.contents?r.contents.length:0;if(!(e>=t)){t=Math.max(t,e*(e<1048576?2:1.125)>>>0),0!=e&&(t=Math.max(t,256));var n=r.contents;r.contents=new Uint8Array(t),r.usedBytes>0&&r.contents.set(n.subarray(0,r.usedBytes),0)}},resizeFileStorage:function(r,t){if(r.usedBytes!=t)if(0==t)r.contents=null,r.usedBytes=0;else{var e=r.contents;r.contents=new Uint8Array(t),e&&r.contents.set(e.subarray(0,Math.min(t,r.usedBytes))),r.usedBytes=t}},node_ops:{getattr:function(r){var t={};return t.dev=nr.isChrdev(r.mode)?r.id:1,t.ino=r.id,t.mode=r.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=r.rdev,nr.isDir(r.mode)?t.size=4096:nr.isFile(r.mode)?t.size=r.usedBytes:nr.isLink(r.mode)?t.size=r.link.length:t.size=0,t.atime=new Date(r.timestamp),t.mtime=new Date(r.timestamp),t.ctime=new Date(r.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(r,t){void 0!==t.mode&&(r.mode=t.mode),void 0!==t.timestamp&&(r.timestamp=t.timestamp),void 0!==t.size&&er.resizeFileStorage(r,t.size)},lookup:function(r,t){throw nr.genericErrors[44]},mknod:function(r,t,e,n){return er.createNode(r,t,e,n)},rename:function(r,t,e){if(nr.isDir(r.mode)){var n;try{n=nr.lookupNode(t,e)}catch(r){}if(n)for(var o in n.contents)throw new nr.ErrnoError(55)}delete r.parent.contents[r.name],r.parent.timestamp=Date.now(),r.name=e,t.contents[e]=r,t.timestamp=r.parent.timestamp,r.parent=t},unlink:function(r,t){delete r.contents[t],r.timestamp=Date.now()},rmdir:function(r,t){var e=nr.lookupNode(r,t);for(var n in e.contents)throw new nr.ErrnoError(55);delete r.contents[t],r.timestamp=Date.now()},readdir:function(r){var t=[".",".."];for(var e in r.contents)r.contents.hasOwnProperty(e)&&t.push(e);return t},symlink:function(r,t,e){var n=er.createNode(r,t,41471,0);return n.link=e,n},readlink:function(r){if(!nr.isLink(r.mode))throw new nr.ErrnoError(28);return r.link}},stream_ops:{read:function(r,t,e,n,o){var i=r.node.contents;if(o>=r.node.usedBytes)return 0;var a=Math.min(r.node.usedBytes-o,n);if(a>8&&i.subarray)t.set(i.subarray(o,o+a),e);else for(var s=0;s<a;s++)t[e+s]=i[o+s];return a},write:function(r,t,e,n,o,i){if(t.buffer===g.buffer&&(i=!1),!n)return 0;var a=r.node;if(a.timestamp=Date.now(),t.subarray&&(!a.contents||a.contents.subarray)){if(i)return a.contents=t.subarray(e,e+n),a.usedBytes=n,n;if(0===a.usedBytes&&0===o)return a.contents=t.slice(e,e+n),a.usedBytes=n,n;if(o+n<=a.usedBytes)return a.contents.set(t.subarray(e,e+n),o),n}if(er.expandFileStorage(a,o+n),a.contents.subarray&&t.subarray)a.contents.set(t.subarray(e,e+n),o);else for(var s=0;s<n;s++)a.contents[o+s]=t[e+s];return a.usedBytes=Math.max(a.usedBytes,o+n),n},llseek:function(r,t,e){var n=t;if(1===e?n+=r.position:2===e&&nr.isFile(r.node.mode)&&(n+=r.node.usedBytes),n<0)throw new nr.ErrnoError(28);return n},allocate:function(r,t,e){er.expandFileStorage(r.node,t+e),r.node.usedBytes=Math.max(r.node.usedBytes,t+e)},mmap:function(r,t,e,n,o,i){if(0!==t)throw new nr.ErrnoError(28);if(!nr.isFile(r.node.mode))throw new nr.ErrnoError(43);var a,s,u=r.node.contents;if(2&i||u.buffer!==E){if((n>0||n+e<u.length)&&(u=u.subarray?u.subarray(n,n+e):Array.prototype.slice.call(u,n,n+e)),s=!0,!(a=tr(e)))throw new nr.ErrnoError(48);g.set(u,a)}else s=!1,a=u.byteOffset;return{ptr:a,allocated:s}},msync:function(r,t,e,n,o){if(!nr.isFile(r.node.mode))throw new nr.ErrnoError(43);return 2&o||er.stream_ops.write(r,t,0,n,e,!1),0}}},nr={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(r,t){if(t=t||{},!(r=Z.resolve(nr.cwd(),r)))return{path:"",node:null};var e={follow_mount:!0,recurse_count:0};for(var n in e)void 0===t[n]&&(t[n]=e[n]);if(t.recurse_count>8)throw new nr.ErrnoError(32);for(var o=Q.normalizeArray(r.split("/").filter((function(r){return!!r})),!1),i=nr.root,a="/",s=0;s<o.length;s++){var u=s===o.length-1;if(u&&t.parent)break;if(i=nr.lookupNode(i,o[s]),a=Q.join2(a,o[s]),nr.isMountpoint(i)&&(!u||u&&t.follow_mount)&&(i=i.mounted.root),!u||t.follow)for(var c=0;nr.isLink(i.mode);){var f=nr.readlink(a);if(a=Z.resolve(Q.dirname(a),f),i=nr.lookupPath(a,{recurse_count:t.recurse_count}).node,c++>40)throw new nr.ErrnoError(32)}}return{path:a,node:i}},getPath:function(r){for(var t;;){if(nr.isRoot(r)){var e=r.mount.mountpoint;return t?"/"!==e[e.length-1]?e+"/"+t:e+t:e}t=t?r.name+"/"+t:r.name,r=r.parent}},hashName:function(r,t){for(var e=0,n=0;n<t.length;n++)e=(e<<5)-e+t.charCodeAt(n)|0;return(r+e>>>0)%nr.nameTable.length},hashAddNode:function(r){var t=nr.hashName(r.parent.id,r.name);r.name_next=nr.nameTable[t],nr.nameTable[t]=r},hashRemoveNode:function(r){var t=nr.hashName(r.parent.id,r.name);if(nr.nameTable[t]===r)nr.nameTable[t]=r.name_next;else for(var e=nr.nameTable[t];e;){if(e.name_next===r){e.name_next=r.name_next;break}e=e.name_next}},lookupNode:function(r,t){var e=nr.mayLookup(r);if(e)throw new nr.ErrnoError(e,r);for(var n=nr.hashName(r.id,t),o=nr.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===r.id&&i===t)return o}return nr.lookup(r,t)},createNode:function(r,t,e,n){var o=new nr.FSNode(r,t,e,n);return nr.hashAddNode(o),o},destroyNode:function(r){nr.hashRemoveNode(r)},isRoot:function(r){return r===r.parent},isMountpoint:function(r){return!!r.mounted},isFile:function(r){return 32768==(61440&r)},isDir:function(r){return 16384==(61440&r)},isLink:function(r){return 40960==(61440&r)},isChrdev:function(r){return 8192==(61440&r)},isBlkdev:function(r){return 24576==(61440&r)},isFIFO:function(r){return 4096==(61440&r)},isSocket:function(r){return 49152==(49152&r)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(r){var t=nr.flagModes[r];if(void 0===t)throw new Error("Unknown file open mode: "+r);return t},flagsToPermissionString:function(r){var t=["r","w","rw"][3&r];return 512&r&&(t+="w"),t},nodePermissions:function(r,t){return nr.ignorePermissions||(!t.includes("r")||292&r.mode)&&(!t.includes("w")||146&r.mode)&&(!t.includes("x")||73&r.mode)?0:2},mayLookup:function(r){var t=nr.nodePermissions(r,"x");return t||(r.node_ops.lookup?0:2)},mayCreate:function(r,t){try{return nr.lookupNode(r,t),20}catch(r){}return nr.nodePermissions(r,"wx")},mayDelete:function(r,t,e){var n;try{n=nr.lookupNode(r,t)}catch(r){return r.errno}var o=nr.nodePermissions(r,"wx");if(o)return o;if(e){if(!nr.isDir(n.mode))return 54;if(nr.isRoot(n)||nr.getPath(n)===nr.cwd())return 10}else if(nr.isDir(n.mode))return 31;return 0},mayOpen:function(r,t){return r?nr.isLink(r.mode)?32:nr.isDir(r.mode)&&("r"!==nr.flagsToPermissionString(t)||512&t)?31:nr.nodePermissions(r,nr.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(r,t){r=r||0,t=t||nr.MAX_OPEN_FDS;for(var e=r;e<=t;e++)if(!nr.streams[e])return e;throw new nr.ErrnoError(33)},getStream:function(r){return nr.streams[r]},createStream:function(r,t,e){nr.FSStream||(nr.FSStream=function(){},nr.FSStream.prototype={object:{get:function(){return this.node},set:function(r){this.node=r}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}});var n=new nr.FSStream;for(var o in r)n[o]=r[o];r=n;var i=nr.nextfd(t,e);return r.fd=i,nr.streams[i]=r,r},closeStream:function(r){nr.streams[r]=null},chrdev_stream_ops:{open:function(r){var t=nr.getDevice(r.node.rdev);r.stream_ops=t.stream_ops,r.stream_ops.open&&r.stream_ops.open(r)},llseek:function(){throw new nr.ErrnoError(70)}},major:function(r){return r>>8},minor:function(r){return 255&r},makedev:function(r,t){return r<<8|t},registerDevice:function(r,t){nr.devices[r]={stream_ops:t}},getDevice:function(r){return nr.devices[r]},getMounts:function(r){for(var t=[],e=[r];e.length;){var n=e.pop();t.push(n),e.push.apply(e,n.mounts)}return t},syncfs:function(r,t){"function"==typeof r&&(t=r,r=!1),nr.syncFSRequests++,nr.syncFSRequests>1&&p("warning: "+nr.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var e=nr.getMounts(nr.root.mount),n=0;function o(r){return nr.syncFSRequests--,t(r)}function i(r){if(r)return i.errored?void 0:(i.errored=!0,o(r));++n>=e.length&&o(null)}e.forEach((function(t){if(!t.type.syncfs)return i(null);t.type.syncfs(t,r,i)}))},mount:function(r,t,e){var n,o="/"===e,i=!e;if(o&&nr.root)throw new nr.ErrnoError(10);if(!o&&!i){var a=nr.lookupPath(e,{follow_mount:!1});if(e=a.path,n=a.node,nr.isMountpoint(n))throw new nr.ErrnoError(10);if(!nr.isDir(n.mode))throw new nr.ErrnoError(54)}var s={type:r,opts:t,mountpoint:e,mounts:[]},u=r.mount(s);return u.mount=s,s.root=u,o?nr.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(r){var t=nr.lookupPath(r,{follow_mount:!1});if(!nr.isMountpoint(t.node))throw new nr.ErrnoError(28);var e=t.node,n=e.mounted,o=nr.getMounts(n);Object.keys(nr.nameTable).forEach((function(r){for(var t=nr.nameTable[r];t;){var e=t.name_next;o.includes(t.mount)&&nr.destroyNode(t),t=e}})),e.mounted=null;var i=e.mount.mounts.indexOf(n);e.mount.mounts.splice(i,1)},lookup:function(r,t){return r.node_ops.lookup(r,t)},mknod:function(r,t,e){var n=nr.lookupPath(r,{parent:!0}).node,o=Q.basename(r);if(!o||"."===o||".."===o)throw new nr.ErrnoError(28);var i=nr.mayCreate(n,o);if(i)throw new nr.ErrnoError(i);if(!n.node_ops.mknod)throw new nr.ErrnoError(63);return n.node_ops.mknod(n,o,t,e)},create:function(r,t){return t=void 0!==t?t:438,t&=4095,t|=32768,nr.mknod(r,t,0)},mkdir:function(r,t){return t=void 0!==t?t:511,t&=1023,t|=16384,nr.mknod(r,t,0)},mkdirTree:function(r,t){for(var e=r.split("/"),n="",o=0;o<e.length;++o)if(e[o]){n+="/"+e[o];try{nr.mkdir(n,t)}catch(r){if(20!=r.errno)throw r}}},mkdev:function(r,t,e){return void 0===e&&(e=t,t=438),t|=8192,nr.mknod(r,t,e)},symlink:function(r,t){if(!Z.resolve(r))throw new nr.ErrnoError(44);var e=nr.lookupPath(t,{parent:!0}).node;if(!e)throw new nr.ErrnoError(44);var n=Q.basename(t),o=nr.mayCreate(e,n);if(o)throw new nr.ErrnoError(o);if(!e.node_ops.symlink)throw new nr.ErrnoError(63);return e.node_ops.symlink(e,n,r)},rename:function(r,t){var e,n,o=Q.dirname(r),i=Q.dirname(t),a=Q.basename(r),s=Q.basename(t);if(e=nr.lookupPath(r,{parent:!0}).node,n=nr.lookupPath(t,{parent:!0}).node,!e||!n)throw new nr.ErrnoError(44);if(e.mount!==n.mount)throw new nr.ErrnoError(75);var u,c=nr.lookupNode(e,a),f=Z.relative(r,i);if("."!==f.charAt(0))throw new nr.ErrnoError(28);if("."!==(f=Z.relative(t,o)).charAt(0))throw new nr.ErrnoError(55);try{u=nr.lookupNode(n,s)}catch(r){}if(c!==u){var d=nr.isDir(c.mode),l=nr.mayDelete(e,a,d);if(l)throw new nr.ErrnoError(l);if(l=u?nr.mayDelete(n,s,d):nr.mayCreate(n,s))throw new nr.ErrnoError(l);if(!e.node_ops.rename)throw new nr.ErrnoError(63);if(nr.isMountpoint(c)||u&&nr.isMountpoint(u))throw new nr.ErrnoError(10);if(n!==e&&(l=nr.nodePermissions(e,"w")))throw new nr.ErrnoError(l);nr.hashRemoveNode(c);try{e.node_ops.rename(c,n,s)}catch(r){throw r}finally{nr.hashAddNode(c)}}},rmdir:function(r){var t=nr.lookupPath(r,{parent:!0}).node,e=Q.basename(r),n=nr.lookupNode(t,e),o=nr.mayDelete(t,e,!0);if(o)throw new nr.ErrnoError(o);if(!t.node_ops.rmdir)throw new nr.ErrnoError(63);if(nr.isMountpoint(n))throw new nr.ErrnoError(10);t.node_ops.rmdir(t,e),nr.destroyNode(n)},readdir:function(r){var t=nr.lookupPath(r,{follow:!0}).node;if(!t.node_ops.readdir)throw new nr.ErrnoError(54);return t.node_ops.readdir(t)},unlink:function(r){var t=nr.lookupPath(r,{parent:!0}).node,e=Q.basename(r),n=nr.lookupNode(t,e),o=nr.mayDelete(t,e,!1);if(o)throw new nr.ErrnoError(o);if(!t.node_ops.unlink)throw new nr.ErrnoError(63);if(nr.isMountpoint(n))throw new nr.ErrnoError(10);t.node_ops.unlink(t,e),nr.destroyNode(n)},readlink:function(r){var t=nr.lookupPath(r).node;if(!t)throw new nr.ErrnoError(44);if(!t.node_ops.readlink)throw new nr.ErrnoError(28);return Z.resolve(nr.getPath(t.parent),t.node_ops.readlink(t))},stat:function(r,t){var e=nr.lookupPath(r,{follow:!t}).node;if(!e)throw new nr.ErrnoError(44);if(!e.node_ops.getattr)throw new nr.ErrnoError(63);return e.node_ops.getattr(e)},lstat:function(r){return nr.stat(r,!0)},chmod:function(r,t,e){var n;if(!(n="string"==typeof r?nr.lookupPath(r,{follow:!e}).node:r).node_ops.setattr)throw new nr.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&t|-4096&n.mode,timestamp:Date.now()})},lchmod:function(r,t){nr.chmod(r,t,!0)},fchmod:function(r,t){var e=nr.getStream(r);if(!e)throw new nr.ErrnoError(8);nr.chmod(e.node,t)},chown:function(r,t,e,n){var o;if(!(o="string"==typeof r?nr.lookupPath(r,{follow:!n}).node:r).node_ops.setattr)throw new nr.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:function(r,t,e){nr.chown(r,t,e,!0)},fchown:function(r,t,e){var n=nr.getStream(r);if(!n)throw new nr.ErrnoError(8);nr.chown(n.node,t,e)},truncate:function(r,t){if(t<0)throw new nr.ErrnoError(28);var e;if(!(e="string"==typeof r?nr.lookupPath(r,{follow:!0}).node:r).node_ops.setattr)throw new nr.ErrnoError(63);if(nr.isDir(e.mode))throw new nr.ErrnoError(31);if(!nr.isFile(e.mode))throw new nr.ErrnoError(28);var n=nr.nodePermissions(e,"w");if(n)throw new nr.ErrnoError(n);e.node_ops.setattr(e,{size:t,timestamp:Date.now()})},ftruncate:function(r,t){var e=nr.getStream(r);if(!e)throw new nr.ErrnoError(8);if(0==(2097155&e.flags))throw new nr.ErrnoError(28);nr.truncate(e.node,t)},utime:function(r,t,e){var n=nr.lookupPath(r,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(t,e)})},open:function(r,t,e,n,i){if(""===r)throw new nr.ErrnoError(44);var a;if(e=void 0===e?438:e,e=64&(t="string"==typeof t?nr.modeStringToFlags(t):t)?4095&e|32768:0,"object"==typeof r)a=r;else{r=Q.normalize(r);try{a=nr.lookupPath(r,{follow:!(131072&t)}).node}catch(r){}}var s=!1;if(64&t)if(a){if(128&t)throw new nr.ErrnoError(20)}else a=nr.mknod(r,e,0),s=!0;if(!a)throw new nr.ErrnoError(44);if(nr.isChrdev(a.mode)&&(t&=-513),65536&t&&!nr.isDir(a.mode))throw new nr.ErrnoError(54);if(!s){var u=nr.mayOpen(a,t);if(u)throw new nr.ErrnoError(u)}512&t&&nr.truncate(a,0),t&=-131713;var c=nr.createStream({node:a,path:nr.getPath(a),id:a.id,flags:t,mode:a.mode,seekable:!0,position:0,stream_ops:a.stream_ops,node_ops:a.node_ops,ungotten:[],error:!1},n,i);return c.stream_ops.open&&c.stream_ops.open(c),!o.logReadFiles||1&t||(nr.readFiles||(nr.readFiles={}),r in nr.readFiles||(nr.readFiles[r]=1)),c},close:function(r){if(nr.isClosed(r))throw new nr.ErrnoError(8);r.getdents&&(r.getdents=null);try{r.stream_ops.close&&r.stream_ops.close(r)}catch(r){throw r}finally{nr.closeStream(r.fd)}r.fd=null},isClosed:function(r){return null===r.fd},llseek:function(r,t,e){if(nr.isClosed(r))throw new nr.ErrnoError(8);if(!r.seekable||!r.stream_ops.llseek)throw new nr.ErrnoError(70);if(0!=e&&1!=e&&2!=e)throw new nr.ErrnoError(28);return r.position=r.stream_ops.llseek(r,t,e),r.ungotten=[],r.position},read:function(r,t,e,n,o){if(n<0||o<0)throw new nr.ErrnoError(28);if(nr.isClosed(r))throw new nr.ErrnoError(8);if(1==(2097155&r.flags))throw new nr.ErrnoError(8);if(nr.isDir(r.node.mode))throw new nr.ErrnoError(31);if(!r.stream_ops.read)throw new nr.ErrnoError(28);var i=void 0!==o;if(i){if(!r.seekable)throw new nr.ErrnoError(70)}else o=r.position;var a=r.stream_ops.read(r,t,e,n,o);return i||(r.position+=a),a},write:function(r,t,e,n,o,i){if(n<0||o<0)throw new nr.ErrnoError(28);if(nr.isClosed(r))throw new nr.ErrnoError(8);if(0==(2097155&r.flags))throw new nr.ErrnoError(8);if(nr.isDir(r.node.mode))throw new nr.ErrnoError(31);if(!r.stream_ops.write)throw new nr.ErrnoError(28);r.seekable&&1024&r.flags&&nr.llseek(r,0,2);var a=void 0!==o;if(a){if(!r.seekable)throw new nr.ErrnoError(70)}else o=r.position;var s=r.stream_ops.write(r,t,e,n,o,i);return a||(r.position+=s),s},allocate:function(r,t,e){if(nr.isClosed(r))throw new nr.ErrnoError(8);if(t<0||e<=0)throw new nr.ErrnoError(28);if(0==(2097155&r.flags))throw new nr.ErrnoError(8);if(!nr.isFile(r.node.mode)&&!nr.isDir(r.node.mode))throw new nr.ErrnoError(43);if(!r.stream_ops.allocate)throw new nr.ErrnoError(138);r.stream_ops.allocate(r,t,e)},mmap:function(r,t,e,n,o,i){if(0!=(2&o)&&0==(2&i)&&2!=(2097155&r.flags))throw new nr.ErrnoError(2);if(1==(2097155&r.flags))throw new nr.ErrnoError(2);if(!r.stream_ops.mmap)throw new nr.ErrnoError(43);return r.stream_ops.mmap(r,t,e,n,o,i)},msync:function(r,t,e,n,o){return r&&r.stream_ops.msync?r.stream_ops.msync(r,t,e,n,o):0},munmap:function(r){return 0},ioctl:function(r,t,e){if(!r.stream_ops.ioctl)throw new nr.ErrnoError(59);return r.stream_ops.ioctl(r,t,e)},readFile:function(r,t){if((t=t||{}).flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var e,n=nr.open(r,t.flags),o=nr.stat(r).size,i=new Uint8Array(o);return nr.read(n,i,0,o,0),"utf8"===t.encoding?e=F(i,0):"binary"===t.encoding&&(e=i),nr.close(n),e},writeFile:function(r,t,e){(e=e||{}).flags=e.flags||577;var n=nr.open(r,e.flags,e.mode);if("string"==typeof t){var o=new Uint8Array(R(t)+1),i=M(t,o,0,o.length);nr.write(n,o,0,i,void 0,e.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");nr.write(n,t,0,t.byteLength,void 0,e.canOwn)}nr.close(n)},cwd:function(){return nr.currentPath},chdir:function(r){var t=nr.lookupPath(r,{follow:!0});if(null===t.node)throw new nr.ErrnoError(44);if(!nr.isDir(t.node.mode))throw new nr.ErrnoError(54);var e=nr.nodePermissions(t.node,"x");if(e)throw new nr.ErrnoError(e);nr.currentPath=t.path},createDefaultDirectories:function(){nr.mkdir("/tmp"),nr.mkdir("/home"),nr.mkdir("/home/web_user")},createDefaultDevices:function(){nr.mkdir("/dev"),nr.registerDevice(nr.makedev(1,3),{read:function(){return 0},write:function(r,t,e,n,o){return n}}),nr.mkdev("/dev/null",nr.makedev(1,3)),rr.register(nr.makedev(5,0),rr.default_tty_ops),rr.register(nr.makedev(6,0),rr.default_tty1_ops),nr.mkdev("/dev/tty",nr.makedev(5,0)),nr.mkdev("/dev/tty1",nr.makedev(6,0));var r=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var r=new Uint8Array(1);return function(){return crypto.getRandomValues(r),r[0]}}return function(){q("randomDevice")}}();nr.createDevice("/dev","random",r),nr.createDevice("/dev","urandom",r),nr.mkdir("/dev/shm"),nr.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){nr.mkdir("/proc");var r=nr.mkdir("/proc/self");nr.mkdir("/proc/self/fd"),nr.mount({mount:function(){var t=nr.createNode(r,"fd",16895,73);return t.node_ops={lookup:function(r,t){var e=+t,n=nr.getStream(e);if(!n)throw new nr.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return n.path}}};return o.parent=o,o}},t}},{},"/proc/self/fd")},createStandardStreams:function(){o.stdin?nr.createDevice("/dev","stdin",o.stdin):nr.symlink("/dev/tty","/dev/stdin"),o.stdout?nr.createDevice("/dev","stdout",null,o.stdout):nr.symlink("/dev/tty","/dev/stdout"),o.stderr?nr.createDevice("/dev","stderr",null,o.stderr):nr.symlink("/dev/tty1","/dev/stderr"),nr.open("/dev/stdin",0),nr.open("/dev/stdout",1),nr.open("/dev/stderr",1)},ensureErrnoError:function(){nr.ErrnoError||(nr.ErrnoError=function(r,t){this.node=t,this.setErrno=function(r){this.errno=r},this.setErrno(r),this.message="FS error"},nr.ErrnoError.prototype=new Error,nr.ErrnoError.prototype.constructor=nr.ErrnoError,[44].forEach((function(r){nr.genericErrors[r]=new nr.ErrnoError(r),nr.genericErrors[r].stack="<generic error, no stack>"})))},staticInit:function(){nr.ensureErrnoError(),nr.nameTable=new Array(4096),nr.mount(er,{},"/"),nr.createDefaultDirectories(),nr.createDefaultDevices(),nr.createSpecialDirectories(),nr.filesystems={MEMFS:er}},init:function(r,t,e){nr.init.initialized=!0,nr.ensureErrnoError(),o.stdin=r||o.stdin,o.stdout=t||o.stdout,o.stderr=e||o.stderr,nr.createStandardStreams()},quit:function(){nr.init.initialized=!1;var r=o._fflush;r&&r(0);for(var t=0;t<nr.streams.length;t++){var e=nr.streams[t];e&&nr.close(e)}},getMode:function(r,t){var e=0;return r&&(e|=365),t&&(e|=146),e},findObject:function(r,t){var e=nr.analyzePath(r,t);return e.exists?e.object:null},analyzePath:function(r,t){try{r=(n=nr.lookupPath(r,{follow:!t})).path}catch(r){}var e={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=nr.lookupPath(r,{parent:!0});e.parentExists=!0,e.parentPath=n.path,e.parentObject=n.node,e.name=Q.basename(r),n=nr.lookupPath(r,{follow:!t}),e.exists=!0,e.path=n.path,e.object=n.node,e.name=n.node.name,e.isRoot="/"===n.path}catch(r){e.error=r.errno}return e},createPath:function(r,t,e,n){r="string"==typeof r?r:nr.getPath(r);for(var o=t.split("/").reverse();o.length;){var i=o.pop();if(i){var a=Q.join2(r,i);try{nr.mkdir(a)}catch(r){}r=a}}return a},createFile:function(r,t,e,n,o){var i=Q.join2("string"==typeof r?r:nr.getPath(r),t),a=nr.getMode(n,o);return nr.create(i,a)},createDataFile:function(r,t,e,n,o,i){var a=t?Q.join2("string"==typeof r?r:nr.getPath(r),t):r,s=nr.getMode(n,o),u=nr.create(a,s);if(e){if("string"==typeof e){for(var c=new Array(e.length),f=0,d=e.length;f<d;++f)c[f]=e.charCodeAt(f);e=c}nr.chmod(u,146|s);var l=nr.open(u,577);nr.write(l,e,0,e.length,0,i),nr.close(l),nr.chmod(u,s)}return u},createDevice:function(r,t,e,n){var o=Q.join2("string"==typeof r?r:nr.getPath(r),t),i=nr.getMode(!!e,!!n);nr.createDevice.major||(nr.createDevice.major=64);var a=nr.makedev(nr.createDevice.major++,0);return nr.registerDevice(a,{open:function(r){r.seekable=!1},close:function(r){n&&n.buffer&&n.buffer.length&&n(10)},read:function(r,t,n,o,i){for(var a=0,s=0;s<o;s++){var u;try{u=e()}catch(r){throw new nr.ErrnoError(29)}if(void 0===u&&0===a)throw new nr.ErrnoError(6);if(null==u)break;a++,t[n+s]=u}return a&&(r.node.timestamp=Date.now()),a},write:function(r,t,e,o,i){for(var a=0;a<o;a++)try{n(t[e+a])}catch(r){throw new nr.ErrnoError(29)}return o&&(r.node.timestamp=Date.now()),a}}),nr.mkdev(o,i,a)},forceLoadFile:function(r){if(r.isDevice||r.isFolder||r.link||r.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!s)throw new Error("Cannot load without read() or XMLHttpRequest.");try{r.contents=lr(s(r.url),!0),r.usedBytes=r.contents.length}catch(r){throw new nr.ErrnoError(29)}},createLazyFile:function(r,t,e,n,o){function i(){this.lengthKnown=!1,this.chunks=[]}if(i.prototype.get=function(r){if(!(r>this.length-1||r<0)){var t=r%this.chunkSize,e=r/this.chunkSize|0;return this.getter(e)[t]}},i.prototype.setDataGetter=function(r){this.getter=r},i.prototype.cacheLength=function(){var r=new XMLHttpRequest;if(r.open("HEAD",e,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw new Error("Couldn't load "+e+". Status: "+r.status);var t,n=Number(r.getResponseHeader("Content-length")),o=(t=r.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=r.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(r){var t=r*a,o=(r+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[r]&&(s.chunks[r]=function(r,t){if(r>t)throw new Error("invalid range ("+r+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",e,!1),n!==a&&o.setRequestHeader("Range","bytes="+r+"-"+t),"undefined"!=typeof Uint8Array&&(o.responseType="arraybuffer"),o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+e+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):lr(o.responseText||"",!0)}(t,o)),void 0===s.chunks[r])throw new Error("doXHR failed!");return s.chunks[r]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,l("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a={isDevice:!1,url:e},s=nr.createFile(r,t,a,n,o);a.contents?s.contents=a.contents:a.url&&(s.contents=null,s.url=a.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};return Object.keys(s.stream_ops).forEach((function(r){var t=s.stream_ops[r];u[r]=function(){return nr.forceLoadFile(s),t.apply(null,arguments)}})),u.read=function(r,t,e,n,o){nr.forceLoadFile(s);var i=r.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var u=0;u<a;u++)t[e+u]=i[o+u];else for(u=0;u<a;u++)t[e+u]=i.get(o+u);return a},s.stream_ops=u,s},createPreloadedFile:function(r,t,e,n,i,a,s,c,f,d){Browser.init();var l=t?Z.resolve(Q.join2(r,t)):r;function p(e){function u(e){d&&d(),c||nr.createDataFile(r,t,e,n,i,f),a&&a(),G()}var p=!1;o.preloadPlugins.forEach((function(r){p||r.canHandle(l)&&(r.handle(e,l,u,(function(){s&&s(),G()})),p=!0)})),p||u(e)}U(),"string"==typeof e?function(r,t,e,n){var o=n?"":"al "+r;u(r,(function(e){y(e,'Loading data file "'+r+'" failed (no arrayBuffer).'),t(new Uint8Array(e)),o&&G()}),(function(t){if(!e)throw'Loading data file "'+r+'" failed.';e()})),o&&U()}(e,(function(r){p(r)}),s):p(e)},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(r,t,e){t=t||function(){},e=e||function(){};var n=nr.indexedDB();try{var o=n.open(nr.DB_NAME(),nr.DB_VERSION)}catch(r){return e(r)}o.onupgradeneeded=function(){l("creating db"),o.result.createObjectStore(nr.DB_STORE_NAME)},o.onsuccess=function(){var n=o.result.transaction([nr.DB_STORE_NAME],"readwrite"),i=n.objectStore(nr.DB_STORE_NAME),a=0,s=0,u=r.length;function c(){0==s?t():e()}r.forEach((function(r){var t=i.put(nr.analyzePath(r).object.contents,r);t.onsuccess=function(){++a+s==u&&c()},t.onerror=function(){s++,a+s==u&&c()}})),n.onerror=e},o.onerror=e},loadFilesFromDB:function(r,t,e){t=t||function(){},e=e||function(){};var n=nr.indexedDB();try{var o=n.open(nr.DB_NAME(),nr.DB_VERSION)}catch(r){return e(r)}o.onupgradeneeded=e,o.onsuccess=function(){var n=o.result;try{var i=n.transaction([nr.DB_STORE_NAME],"readonly")}catch(r){return void e(r)}var a=i.objectStore(nr.DB_STORE_NAME),s=0,u=0,c=r.length;function f(){0==u?t():e()}r.forEach((function(r){var t=a.get(r);t.onsuccess=function(){nr.analyzePath(r).exists&&nr.unlink(r),nr.createDataFile(Q.dirname(r),Q.basename(r),t.result,!0,!0,!0),++s+u==c&&f()},t.onerror=function(){u++,s+u==c&&f()}})),i.onerror=e},o.onerror=e}},or={mappings:{},DEFAULT_POLLMASK:5,calculateAt:function(r,t,e){if("/"===t[0])return t;var n;if(-100===r)n=nr.cwd();else{var o=nr.getStream(r);if(!o)throw new nr.ErrnoError(8);n=o.path}if(0==t.length){if(!e)throw new nr.ErrnoError(44);return n}return Q.join2(n,t)},doStat:function(r,t,e){try{var n=r(t)}catch(r){if(r&&r.node&&Q.normalize(t)!==Q.normalize(nr.getPath(r.node)))return-54;throw r}return D[e>>2]=n.dev,D[e+4>>2]=0,D[e+8>>2]=n.ino,D[e+12>>2]=n.mode,D[e+16>>2]=n.nlink,D[e+20>>2]=n.uid,D[e+24>>2]=n.gid,D[e+28>>2]=n.rdev,D[e+32>>2]=0,T=[n.size>>>0,(B=n.size,+Math.abs(B)>=1?B>0?(0|Math.min(+Math.floor(B/4294967296),4294967295))>>>0:~~+Math.ceil((B-+(~~B>>>0))/4294967296)>>>0:0)],D[e+40>>2]=T[0],D[e+44>>2]=T[1],D[e+48>>2]=4096,D[e+52>>2]=n.blocks,D[e+56>>2]=n.atime.getTime()/1e3|0,D[e+60>>2]=0,D[e+64>>2]=n.mtime.getTime()/1e3|0,D[e+68>>2]=0,D[e+72>>2]=n.ctime.getTime()/1e3|0,D[e+76>>2]=0,T=[n.ino>>>0,(B=n.ino,+Math.abs(B)>=1?B>0?(0|Math.min(+Math.floor(B/4294967296),4294967295))>>>0:~~+Math.ceil((B-+(~~B>>>0))/4294967296)>>>0:0)],D[e+80>>2]=T[0],D[e+84>>2]=T[1],0},doMsync:function(r,t,e,n,o){var i=b.slice(r,r+e);nr.msync(t,i,o,e,n)},doMkdir:function(r,t){return"/"===(r=Q.normalize(r))[r.length-1]&&(r=r.substr(0,r.length-1)),nr.mkdir(r,t,0),0},doMknod:function(r,t,e){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return nr.mknod(r,t,e),0},doReadlink:function(r,t,e){if(e<=0)return-28;var n=nr.readlink(r),o=Math.min(e,R(n)),i=g[t+o];return M(n,b,t,e+1),g[t+o]=i,o},doAccess:function(r,t){if(-8&t)return-28;var e=nr.lookupPath(r,{follow:!0}).node;if(!e)return-44;var n="";return 4&t&&(n+="r"),2&t&&(n+="w"),1&t&&(n+="x"),n&&nr.nodePermissions(e,n)?-2:0},doDup:function(r,t,e){var n=nr.getStream(e);return n&&nr.close(n),nr.open(r,t,0,e,e).fd},doReadv:function(r,t,e,n){for(var o=0,i=0;i<e;i++){var a=D[t+8*i>>2],s=D[t+(8*i+4)>>2],u=nr.read(r,g,a,s,n);if(u<0)return-1;if(o+=u,u<s)break}return o},doWritev:function(r,t,e,n){for(var o=0,i=0;i<e;i++){var a=D[t+8*i>>2],s=D[t+(8*i+4)>>2],u=nr.write(r,g,a,s,n);if(u<0)return-1;o+=u}return o},varargs:void 0,get:function(){return or.varargs+=4,D[or.varargs-4>>2]},getStr:function(r){return x(r)},getStreamFromFD:function(r){var t=nr.getStream(r);if(!t)throw new nr.ErrnoError(8);return t},get64:function(r,t){return r}},ir=[];function ar(r){try{return v.grow(r-E.byteLength+65535>>>16),C(v.buffer),1}catch(r){}}var sr={};function ur(){if(!ur.strings){var r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in sr)void 0===sr[t]?delete r[t]:r[t]=sr[t];var e=[];for(var t in r)e.push(t+"="+r[t]);ur.strings=e}return ur.strings}var cr=function(r,t,e,n){r||(r=this),this.parent=r,this.mount=r.mount,this.mounted=null,this.id=nr.nextInode++,this.name=t,this.mode=e,this.node_ops={},this.stream_ops={},this.rdev=n},fr=365,dr=146;function lr(r,t,e){var n=e>0?e:R(r)+1,o=new Array(n),i=M(r,o,0,o.length);return t&&(o.length=i),o}Object.defineProperties(cr.prototype,{read:{get:function(){return(this.mode&fr)===fr},set:function(r){r?this.mode|=fr:this.mode&=-366}},write:{get:function(){return(this.mode&dr)===dr},set:function(r){r?this.mode|=dr:this.mode&=-147}},isFolder:{get:function(){return nr.isDir(this.mode)}},isDevice:{get:function(){return nr.isChrdev(this.mode)}}}),nr.FSNode=cr,nr.staticInit();var pr={A:function(r,t){return function(r,t){var e;if(0===r)e=Date.now();else{if(1!==r&&4!==r)return $(28),-1;e=V()}return D[t>>2]=e/1e3|0,D[t+4>>2]=e%1e3*1e3*1e3|0,0}(r,t)},B:function(r,t){try{return r=or.getStr(r),or.doAccess(r,t)}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},h:function(r,t,e){or.varargs=e;try{var n=or.getStreamFromFD(r);switch(t){case 0:return(o=or.get())<0?-28:nr.open(n.path,n.flags,0,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=or.get();return n.flags|=o,0;case 5:return o=or.get(),k[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return $(28),-1}}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},x:function(r,t){try{var e=or.getStreamFromFD(r);return or.doStat(nr.stat,e.path,t)}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},u:function(r,t,e,n){try{t=or.getStr(t);var o=256&n,i=4096&n;return n&=-4353,t=or.calculateAt(r,t,i),or.doStat(o?nr.lstat:nr.stat,t,e)}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},y:function(r,t,e){or.varargs=e;try{var n=or.getStreamFromFD(r);switch(t){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return n.tty?0:-59;case 21519:if(!n.tty)return-59;var o=or.get();return D[o>>2]=0,0;case 21520:return n.tty?-28:-59;case 21531:return o=or.get(),nr.ioctl(n,t,o);default:q("bad ioctl syscall "+t)}}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},k:function(r,t,e,n,o,i){try{return function(r,t,e,n,o,i){var a;i<<=12;var s=!1;if(0!=(16&n)&&r%65536!=0)return-28;if(0!=(32&n)){if(!(a=tr(t)))return-48;s=!0}else{var u=nr.getStream(o);if(!u)return-8;var c=nr.mmap(u,r,t,i,e,n);a=c.ptr,s=c.allocated}return or.mappings[a]={malloc:a,len:t,allocated:s,fd:o,prot:e,flags:n,offset:i},a}(r,t,e,n,o,i)}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},j:function(r,t){try{return function(r,t){var e=or.mappings[r];if(0===t||!e)return-28;if(t===e.len){var n=nr.getStream(e.fd);n&&2&e.prot&&or.doMsync(r,n,t,e.flags,e.offset),or.mappings[r]=null,e.allocated&&br(e.malloc)}return 0}(r,t)}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},e:function(r,t,e){or.varargs=e;try{var n=or.getStr(r),o=e?or.get():0;return nr.open(n,t,o).fd}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},v:function(r,t){try{return r=or.getStr(r),or.doStat(nr.stat,r,t)}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},z:function(r){try{return r=or.getStr(r),nr.unlink(r),0}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},r:function(){throw"longjmp"},q:function(){q("")},C:function(r,t,e){var n=function(r,t){var e;for(ir.length=0,t>>=2;e=b[r++];){var n=e<105;n&&1&t&&t++,ir.push(n?S[t++>>1]:D[t]),++t}return ir}(t,e);return X[r].apply(null,n)},o:function(r,t,e){b.copyWithin(r,t,t+e)},p:function(r){var t,e,n=b.length,o=2147483648;if((r>>>=0)>o)return!1;for(var i=1;i<=4;i*=2){var a=n*(1+.2/i);if(a=Math.min(a,r+100663296),ar(Math.min(o,((t=Math.max(r,a))%(e=65536)>0&&(t+=e-t%e),t))))return!0}return!1},s:function(r,t){var e=0;return ur().forEach((function(n,o){var i=t+e;D[r+4*o>>2]=i,function(r,t,e){for(var n=0;n<r.length;++n)g[t++>>0]=r.charCodeAt(n);e||(g[t>>0]=0)}(n,i),e+=n.length+1})),0},t:function(r,t){var e=ur();D[r>>2]=e.length;var n=0;return e.forEach((function(r){n+=r.length+1})),D[t>>2]=n,0},a:function(r){!function(r,t){var e;e=r,w||(o.onExit&&o.onExit(e),_=!0),f(e,new Fr(e))}(r)},d:function(r){try{var t=or.getStreamFromFD(r);return nr.close(t),0}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return r.errno}},i:function(r,t,e,n){try{var o=or.getStreamFromFD(r),i=or.doReadv(o,t,e);return D[n>>2]=i,0}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return r.errno}},n:function(r,t,e,n,o){try{var i=or.getStreamFromFD(r),a=4294967296*e+(t>>>0),s=9007199254740992;return a<=-s||a>=s?-61:(nr.llseek(i,a,n),T=[i.position>>>0,(B=i.position,+Math.abs(B)>=1?B>0?(0|Math.min(+Math.floor(B/4294967296),4294967295))>>>0:~~+Math.ceil((B-+(~~B>>>0))/4294967296)>>>0:0)],D[o>>2]=T[0],D[o+4>>2]=T[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0)}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return r.errno}},g:function(r,t,e,n){try{var o=or.getStreamFromFD(r),i=or.doWritev(o,t,e);return D[n>>2]=i,0}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return r.errno}},c:function(){return h},w:function(r){var t=Date.now();return D[r>>2]=t/1e3|0,D[r+4>>2]=t%1e3*1e3|0,0},l:function(r,t,e,n,o,i,a){var s=Dr();try{return Y(r)(t,e,n,o,i,a)}catch(r){if(Sr(s),r!==r+0&&"longjmp"!==r)throw r;Pr(1,0)}},m:function(r,t){var e=Dr();try{Y(r)(t)}catch(r){if(Sr(e),r!==r+0&&"longjmp"!==r)throw r;Pr(1,0)}},b:function(r){h=r},f:function(r){var t=Date.now()/1e3|0;return r&&(D[r>>2]=t),t}};!function(){var r={a:pr};function t(r,t){var e,n=r.exports;o.asm=n,C((v=o.asm.D).buffer),P=o.asm.M,e=o.asm.E,O.unshift(e),G()}function e(r){t(r.instance)}function i(t){return(m||"function"!=typeof fetch?Promise.resolve().then((function(){return J(z)})):fetch(z,{credentials:"same-origin"}).then((function(r){if(!r.ok)throw"failed to load wasm binary file at '"+z+"'";return r.arrayBuffer()})).catch((function(){return J(z)}))).then((function(t){return WebAssembly.instantiate(t,r)})).then((function(r){return r})).then(t,(function(r){p("failed to asynchronously prepare wasm: "+r),q(r)}))}if(U(),o.instantiateWasm)try{return o.instantiateWasm(r,t)}catch(r){return p("Module.instantiateWasm callback failed with error: "+r),!1}(m||"function"!=typeof WebAssembly.instantiateStreaming||W(z)||"function"!=typeof fetch?i(e):fetch(z,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,r).then(e,(function(r){return p("wasm streaming compile failed: "+r),p("falling back to ArrayBuffer instantiation"),i(e)}))}))).catch(n)}(),o.___wasm_call_ctors=function(){return(o.___wasm_call_ctors=o.asm.E).apply(null,arguments)};var mr=o._emscripten_bind_VoidPtr___destroy___0=function(){return(mr=o._emscripten_bind_VoidPtr___destroy___0=o.asm.F).apply(null,arguments)},hr=o._emscripten_bind_Graphviz_Graphviz_2=function(){return(hr=o._emscripten_bind_Graphviz_Graphviz_2=o.asm.G).apply(null,arguments)},vr=o._emscripten_bind_Graphviz_version_0=function(){return(vr=o._emscripten_bind_Graphviz_version_0=o.asm.H).apply(null,arguments)},wr=o._emscripten_bind_Graphviz_lastError_0=function(){return(wr=o._emscripten_bind_Graphviz_lastError_0=o.asm.I).apply(null,arguments)},_r=o._emscripten_bind_Graphviz_layout_3=function(){return(_r=o._emscripten_bind_Graphviz_layout_3=o.asm.J).apply(null,arguments)},yr=o._emscripten_bind_Graphviz_createFile_2=function(){return(yr=o._emscripten_bind_Graphviz_createFile_2=o.asm.K).apply(null,arguments)},Er=o._emscripten_bind_Graphviz___destroy___0=function(){return(Er=o._emscripten_bind_Graphviz___destroy___0=o.asm.L).apply(null,arguments)};o._malloc=function(){return(o._malloc=o.asm.N).apply(null,arguments)};var gr,br=o._free=function(){return(br=o._free=o.asm.O).apply(null,arguments)},kr=o.___errno_location=function(){return(kr=o.___errno_location=o.asm.P).apply(null,arguments)},Dr=o.stackSave=function(){return(Dr=o.stackSave=o.asm.Q).apply(null,arguments)},Sr=o.stackRestore=function(){return(Sr=o.stackRestore=o.asm.R).apply(null,arguments)},Pr=o._setThrew=function(){return(Pr=o._setThrew=o.asm.S).apply(null,arguments)},Ar=o._memalign=function(){return(Ar=o._memalign=o.asm.T).apply(null,arguments)};function Fr(r){this.name="ExitStatus",this.message="Program terminated with exit("+r+")",this.status=r}function xr(r){function e(){gr||(gr=!0,o.calledRun=!0,_||(o.noFSInit||nr.init.initialized||nr.init(),nr.ignorePermissions=!1,K(O),t(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)r=o.postRun.shift(),L.unshift(r);var r;K(L)}()))}I>0||(function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)r=o.preRun.shift(),N.unshift(r);var r;K(N)}(),I>0||(o.setStatus?(o.setStatus("Running..."),setTimeout((function(){setTimeout((function(){o.setStatus("")}),1),e()}),1)):e()))}if(H=function r(){gr||xr(),gr||(H=r)},o.run=xr,o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();function Mr(){}function Rr(r){return(r||Mr).__cache__}function Cr(r,t){var e=Rr(t),n=e[r];return n||((n=Object.create((t||Mr).prototype)).ptr=r,e[r]=n)}xr(),Mr.prototype=Object.create(Mr.prototype),Mr.prototype.constructor=Mr,Mr.prototype.__class__=Mr,Mr.__cache__={},o.WrapperObject=Mr,o.getCache=Rr,o.wrapPointer=Cr,o.castObject=function(r,t){return Cr(r.ptr,t)},o.NULL=Cr(0),o.destroy=function(r){if(!r.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";r.__destroy__(),delete Rr(r.__class__)[r.ptr]},o.compare=function(r,t){return r.ptr===t.ptr},o.getPointer=function(r){return r.ptr},o.getClass=function(r){return r.__class__};var zr={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(zr.needed){for(var r=0;r<zr.temps.length;r++)o._free(zr.temps[r]);zr.temps.length=0,o._free(zr.buffer),zr.buffer=0,zr.size+=zr.needed,zr.needed=0}zr.buffer||(zr.size+=128,zr.buffer=o._malloc(zr.size),y(zr.buffer)),zr.pos=0},alloc:function(r,t){y(zr.buffer);var e,n=t.BYTES_PER_ELEMENT,i=r.length*n;return i=i+7&-8,zr.pos+i>=zr.size?(y(i>0),zr.needed+=i,e=o._malloc(i),zr.temps.push(e)):(e=zr.buffer+zr.pos,zr.pos+=i),e},copy:function(r,t,e){switch(e>>>=0,t.BYTES_PER_ELEMENT){case 2:e>>>=1;break;case 4:e>>>=2;break;case 8:e>>>=3}for(var n=0;n<r.length;n++)t[e+n]=r[n]}};function jr(r){if("string"==typeof r){var t=lr(r),e=zr.alloc(t,g);return zr.copy(t,g,e),e}return r}function Br(){throw"cannot construct a VoidPtr, no constructor in IDL"}function Tr(r,t){r&&"object"==typeof r&&(r=r.ptr),t&&"object"==typeof t&&(t=t.ptr),this.ptr=hr(r,t),Rr(Tr)[this.ptr]=this}return Br.prototype=Object.create(Mr.prototype),Br.prototype.constructor=Br,Br.prototype.__class__=Br,Br.__cache__={},o.VoidPtr=Br,Br.prototype.__destroy__=Br.prototype.__destroy__=function(){var r=this.ptr;mr(r)},Tr.prototype=Object.create(Mr.prototype),Tr.prototype.constructor=Tr,Tr.prototype.__class__=Tr,Tr.__cache__={},o.Graphviz=Tr,Tr.prototype.version=Tr.prototype.version=function(){var r=this.ptr;return x(vr(r))},Tr.prototype.lastError=Tr.prototype.lastError=function(){var r=this.ptr;return x(wr(r))},Tr.prototype.layout=Tr.prototype.layout=function(r,t,e){var n=this.ptr;return zr.prepare(),r=r&&"object"==typeof r?r.ptr:jr(r),t=t&&"object"==typeof t?t.ptr:jr(t),e=e&&"object"==typeof e?e.ptr:jr(e),x(_r(n,r,t,e))},Tr.prototype.createFile=Tr.prototype.createFile=function(r,t){var e=this.ptr;zr.prepare(),r=r&&"object"==typeof r?r.ptr:jr(r),t=t&&"object"==typeof t?t.ptr:jr(t),yr(e,r,t)},Tr.prototype.__destroy__=Tr.prototype.__destroy__=function(){var r=this.ptr;Er(r)},r.ready});r.exports=n}(d);var l=d.exports,p=Object.freeze(t({__proto__:null,default:l},[d.exports])),m=function(){return m=Object.assign||function(r){for(var t,e=1,n=arguments.length;e<n;e++)for(var o in t=arguments[e])Object.prototype.hasOwnProperty.call(t,o)&&(r[o]=t[o]);return r},m.apply(this,arguments)},h=function(r,t,e){if(e||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return r.concat(n||Array.prototype.slice.call(t))};function v(r){return{path:r.path,data:'<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n<svg width="'.concat(r.width,'" height="').concat(r.height,'"></svg>')}}function w(r,t){var e,n=m({images:[],files:[]},t);h(h([],n.files,!0),(e=n.images,e.map(v)),!0).forEach((function(t){return r.createFile(t.path,t.data)}))}var _={layout:function(r,t,e,n){return void 0===t&&(t="svg"),void 0===e&&(e="dot"),r?s(p,null==n?void 0:n.wasmFolder,null==n?void 0:n.wasmBinary).then((function(o){var i=new o.Graphviz(void 0!==(null==n?void 0:n.yInvert)&&(null==n?void 0:n.yInvert),void 0!==(null==n?void 0:n.nop)?null==n?void 0:n.nop:0);w(i,n);var a=i.layout(r,t,e);if(o.destroy(i),!a)throw new Error(o.Graphviz.prototype.lastError());return a})):Promise.resolve("")},circo:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"circo",e)},dot:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"dot",e)},fdp:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"fdp",e)},sfdp:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"sfdp",e)},neato:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"neato",e)},osage:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"osage",e)},patchwork:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"patchwork",e)},twopi:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"twopi",e)}},y=function(){function r(r){this._wasm=r}return r.prototype.layout=function(r,t,e,n){if(void 0===t&&(t="svg"),void 0===e&&(e="dot"),!r)return"";var o=new this._wasm.Graphviz((null==n?void 0:n.yInvert)?1:0,(null==n?void 0:n.nop)?null==n?void 0:n.nop:0);w(o,n);var i=o.layout(r,t,e);if(this._wasm.destroy(o),!i)throw new Error(this._wasm.Graphviz.prototype.lastError());return i},r.prototype.circo=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"circo",e)},r.prototype.dot=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"dot",e)},r.prototype.fdp=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"fdp",e)},r.prototype.sfdp=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"sfdp",e)},r.prototype.neato=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"neato",e)},r.prototype.osage=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"osage",e)},r.prototype.patchwork=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"patchwork",e)},r.prototype.twopi=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"twopi",e)},r}();r.GraphvizSync=y,r.StackElement=u,r.StackParser=c,r.expatVersion=function(r,t){return s(o,r,t).then((function(r){return r.CExpat.prototype.version()}))},r.graphviz=_,r.graphvizSync=function(r,t){return s(p,r,t).then((function(r){return new y(r)}))},r.graphvizVersion=function(r,t){return s(p,r,t).then((function(r){return r.Graphviz.prototype.version()}))},r.parse=f,r.wasmFolder=a,Object.defineProperty(r,"__esModule",{value:!0})})); \ No newline at end of file
diff --git a/static/graphvizlib.wasm b/static/graphvizlib.wasm
new file mode 100644
index 0000000..2a7463b
--- /dev/null
+++ b/static/graphvizlib.wasm
Binary files differ
diff --git a/static/style.css b/static/style.css
new file mode 100644
index 0000000..8accaf5
--- /dev/null
+++ b/static/style.css
@@ -0,0 +1,24 @@
+
+
+body {
+ background-color: olivedrab
+}
+
+.main-content {
+ padding: 2em;
+ border-radius: 1em;
+ margin: auto;
+ margin-top: 10em;
+ margin-bottom: 5em;
+ max-width: 50em;
+ background-color: white;
+}
+
+a {
+ color: black;
+}
+
+#exitGraph {
+ width: 100%;
+ height: 15em;
+}
diff --git a/walint.cabal b/walint.cabal
index 59abeee..4aad7ac 100644
--- a/walint.cabal
+++ b/walint.cabal
@@ -76,6 +76,7 @@ executable server
, cli-git
, containers
, directory
+ , dotgen
, extra
, filepath
, http-media